Exemple #1
0
 def assert_message_equals_plaintext(self, message):
     assert isinstance(message, str)
     ciphertext = b64_aes_encrypt(message)
     plaintext = b64_aes_decrypt(ciphertext)
     self.assertEqual(plaintext, message)
     self.assertIsInstance(ciphertext, str)
     self.assertIsInstance(plaintext, str)
Exemple #2
0
    def save(self, domain_name):
        try:
            importers = get_openmrs_importers_by_domain(domain_name)
            importer = importers[0] if importers else None  # TODO: Support multiple
            if importer is None:
                importer = OpenmrsImporter(domain=domain_name)
            importer.server_url = self.cleaned_data['server_url']
            importer.username = self.cleaned_data['username']
            if self.cleaned_data['password']:
                # Don't save it if it hasn't been changed.
                importer.password = b64_aes_encrypt(self.cleaned_data['password'])
            importer.location_id = self.cleaned_data['location_id']
            importer.import_frequency = self.cleaned_data['import_frequency']
            importer.log_level = self.cleaned_data['log_level']

            importer.report_uuid = self.cleaned_data['report_uuid']
            importer.report_params = self.cleaned_data['report_params']
            importer.case_type = self.cleaned_data['case_type']
            importer.owner_id = self.cleaned_data['owner_id']
            importer.location_type_name = self.cleaned_data['location_type_name']
            importer.external_id_column = self.cleaned_data['external_id_column']
            importer.name_columns = self.cleaned_data['name_columns']
            importer.column_map = list(map(ColumnMapping.wrap, self.cleaned_data['column_map']))
            importer.save()
            return True
        except Exception as err:
            logging.error('Unable to save OpenMRS Importer: %s' % err)
            return False
Exemple #3
0
    def test_password_bug(self):
        self.rep.auth_type = BASIC_AUTH
        self.rep.username = "******"
        plaintext = "Don't save me decrypted!"
        ciphertext = b64_aes_encrypt(plaintext)
        bytestring_repr = f"b'{ciphertext}'"  # bug fixed by commit 3a900068
        self.rep.password = f'${ALGO_AES}${bytestring_repr}'
        conn = self.rep.connection_settings

        self.assertEqual(conn.plaintext_password, self.rep.plaintext_password)
Exemple #4
0
 def _update_importer(self, importer, data):
     for key, value in data.items():
         if key == 'password' and value != PASSWORD_PLACEHOLDER:
             value = b64_aes_encrypt(value)
         elif key == 'report_params':
             value = json.loads(value)
         elif key == 'column_map':
             list_of_dicts = json.loads(value)
             value = [ColumnMapping(**d) for d in list_of_dicts]
         setattr(importer, key, value)
     importer.save()
Exemple #5
0
 def _update_importer(self, importer, data):
     for key, value in data.items():
         if key == 'password' and value != PASSWORD_PLACEHOLDER:
             value = b64_aes_encrypt(value)
         elif key == 'report_params':
             value = json.loads(value)
         elif key == 'column_map':
             list_of_dicts = json.loads(value)
             value = [ColumnMapping(**d) for d in list_of_dicts]
         setattr(importer, key, value)
     importer.save()
Exemple #6
0
 def set_repeater_attr(self, repeater, cleaned_data):
     repeater.domain = self.domain
     repeater.url = cleaned_data['url']
     repeater.auth_type = cleaned_data['auth_type'] or None
     repeater.username = cleaned_data['username']
     if cleaned_data['password'] != PASSWORD_PLACEHOLDER:
         repeater.password = '******'.format(
             algo=ALGO_AES,
             ciphertext=b64_aes_encrypt(cleaned_data['password']))
     repeater.format = cleaned_data['format']
     repeater.skip_cert_verify = cleaned_data['skip_cert_verify']
     return repeater
Exemple #7
0
 def set_repeater_attr(self, repeater, cleaned_data):
     repeater.domain = self.domain
     repeater.url = cleaned_data['url']
     repeater.auth_type = cleaned_data['auth_type'] or None
     repeater.username = cleaned_data['username']
     if cleaned_data['password'] != PASSWORD_PLACEHOLDER:
         repeater.password = '******'.format(
             algo=ALGO_AES,
             ciphertext=b64_aes_encrypt(cleaned_data['password'])
         )
     repeater.format = cleaned_data['format']
     repeater.skip_cert_verify = cleaned_data['skip_cert_verify']
     return repeater
Exemple #8
0
 def _update_importer(self, importer, data):
     for key, value in data.items():
         if key == 'password':
             if value == PASSWORD_PLACEHOLDER:
                 continue  # Skip updating the password if it hasn't been changed.
             else:
                 value = b64_aes_encrypt(value)
         elif key == 'report_params':
             value = json.loads(value)
         elif key == 'column_map':
             list_of_dicts = json.loads(value)
             value = [ColumnMapping(**d) for d in list_of_dicts]
         setattr(importer, key, value)
     importer.save()
Exemple #9
0
 def last_token(self, token: Optional[dict]):
     if token is None:
         self.last_token_aes = ''
     else:
         plaintext = json.dumps(token)
         self.last_token_aes = b64_aes_encrypt(plaintext)
Exemple #10
0
 def plaintext_client_secret(self, plaintext):
     if plaintext != PASSWORD_PLACEHOLDER:
         ciphertext = b64_aes_encrypt(plaintext)
         self.client_secret = f'${ALGO_AES}${ciphertext}'
Exemple #11
0
 def plaintext_password(self, plaintext):
     if plaintext != PASSWORD_PLACEHOLDER:
         ciphertext = b64_aes_encrypt(plaintext)
         self.password = f'${ALGO_AES}${ciphertext}'
Exemple #12
0
 def plaintext_password(self, plaintext):
     if plaintext != PASSWORD_PLACEHOLDER:
         self.password = '******'.format(
             algo=ALGO_AES, ciphertext=b64_aes_encrypt(plaintext))
Exemple #13
0
 def save_model(self, request, obj, form, change):
     obj.api_token = b64_aes_encrypt(obj.api_token)
     super(TransifexOrganizationAdmin,
           self).save_model(request, obj, form, change)
Exemple #14
0
 def save_model(self, request, obj, form, change):
     obj.api_token = b64_aes_encrypt(obj.api_token)
     super(TransifexOrganizationAdmin, self).save_model(request, obj, form, change)