def epilogue(self): old_node = self.store_old.find(self.model_from['Node']).one() old_notif = self.store_old.find(self.model_from['Notification']).one() with open(os.path.join(GLSettings.client_path, 'favicon.ico'), 'r') as favicon_file: data = favicon_file.read() files.db_add_file(self.store_new, data, u'favicon') self.entries_count['File'] += 1 file_path = os.path.join(GLSettings.static_path, 'custom_homepage.html') if os.path.exists(file_path): if files.db_get_file(self.store_new, u'homepage') == '': with open(file_path, 'r') as homepage_file: data = homepage_file.read() files.db_add_file(self.store_new, data, u'homepage') self.entries_count['File'] += 1 os.remove(file_path) #### Create ConfigL10N table and rows #### for lang in old_node.languages_enabled: self.store_new.add(l10n.EnabledLanguage(lang)) self._migrate_l10n_static_config(old_node, 'node') self._migrate_l10n_static_config(old_notif, 'templates') # TODO assert that localized_keys matches exactly what is stored in the DB #### Create Config table and rows #### # Migrate Config saved in Node for var_name, item_def in GLConfig['node'].iteritems(): old_val = getattr(old_node, var_name) # XXX this can throw errors if the validators run item = Config('node', var_name, old_val) self.store_new.add(item) # Migrate Config saved in Notification for var_name, item_def in GLConfig['notification'].iteritems(): old_val = getattr(old_notif, var_name) if var_name == 'exception_email_pgp_key_expiration' and old_val is not None: old_val = properties.iso_strf_time(old_val) # NOTE this will throw errors if the validators run item = Config('notification', var_name, old_val) self.store_new.add(item) # Migrate private fields self.store_new.add( Config('private', 'receipt_salt', old_node.receipt_salt)) self.store_new.add( Config('private', 'smtp_password', old_notif.password)) # Set old verions that will be then handled by the version update self.store_new.add(Config('private', 'version', 'X.Y.Z')) self.store_new.add(Config('private', 'version_db', 0))
def epilogue(self): old_node = self.store_old.find(self.model_from['Node']).one() old_notif = self.store_old.find(self.model_from['Notification']).one() with open(os.path.join(GLSettings.client_path, 'favicon.ico'), 'r') as favicon_file: data = favicon_file.read() files.db_add_file(self.store_new, data, u'favicon') self.entries_count['File'] += 1 file_path = os.path.join(GLSettings.static_path, 'custom_homepage.html') if os.path.exists(file_path): if files.db_get_file(self.store_new, u'homepage') == '': with open(file_path, 'r') as homepage_file: data = homepage_file.read() files.db_add_file(self.store_new, data, u'homepage') self.entries_count['File'] += 1 os.remove(file_path) #### Create ConfigL10N table and rows #### for lang in old_node.languages_enabled: self.store_new.add(l10n.EnabledLanguage(lang)) self._migrate_l10n_static_config(old_node, 'node') self._migrate_l10n_static_config(old_notif, 'templates') # TODO assert that localized_keys matches exactly what is stored in the DB #### Create Config table and rows #### # Migrate Config saved in Node for var_name, item_def in GLConfig['node'].iteritems(): old_val = getattr(old_node, var_name) # XXX this can throw errors if the validators run item = Config('node', var_name, old_val) self.store_new.add(item) # Migrate Config saved in Notification for var_name, item_def in GLConfig['notification'].iteritems(): old_val = getattr(old_notif, var_name) if var_name == 'exception_email_pgp_key_expiration' and old_val is not None: old_val = properties.iso_strf_time(old_val) # NOTE this will throw errors if the validators run item = Config('notification', var_name, old_val) self.store_new.add(item) # Migrate private fields self.store_new.add(Config('private', 'receipt_salt', old_node.receipt_salt)) self.store_new.add(Config('private', 'smtp_password', old_notif.password)) # Set old verions that will be then handled by the version update self.store_new.add(Config('private', 'version', 'X.Y.Z')) self.store_new.add(Config('private', 'version_db', 0))
def parse_pgp_options(notif, request): """ Used for parsing PGP key infos and fill related notification configurations. @param notif: the notif orm object @param request: the dictionary containing the pgp infos to be parsed @return: None """ pgp_key_public = request['exception_email_pgp_key_public'] remove_key = request['exception_email_pgp_key_remove'] k = None if not remove_key and pgp_key_public != '': k = parse_pgp_key(pgp_key_public) if k is not None: notif.set_val('exception_email_pgp_key_public', k['public']) notif.set_val('exception_email_pgp_key_fingerprint', k['fingerprint']) notif.set_val('exception_email_pgp_key_expiration', iso_strf_time(k['expiration'])) else: notif.set_val('exception_email_pgp_key_public', '') notif.set_val('exception_email_pgp_key_fingerprint', '') notif.set_val('exception_email_pgp_key_expiration', '')
'source_name': Unicode(validator=shorttext_v, default=u'GlobaLeaks - CHANGE EMAIL ACCOUNT USED FOR NOTIFICATION'), 'source_email': Unicode(validator=shorttext_v, default=u'*****@*****.**'), 'security': Unicode(validator=shorttext_v, default=u'TLS'), 'disable_admin_notification_emails': Bool(default=False), 'disable_custodian_notification_emails': Bool(default=False), 'disable_receiver_notification_emails': Bool(default=False), 'tip_expiration_threshold': Int(validator=natnum_v, default=72), # Hours 'notification_threshold_per_hour': Int(validator=natnum_v, default=20), 'exception_email_address': Unicode(validator=shorttext_v, default=u'*****@*****.**'), 'exception_email_pgp_key_fingerprint': Unicode(default=u''), 'exception_email_pgp_key_public': Unicode(default=u''), 'exception_email_pgp_key_expiration': Unicode(default=iso_strf_time(datetime_null())), }, 'node': { 'name': Unicode(validator=shorttext_v, default=u''), 'basic_auth': Bool(default=False), 'basic_auth_username': Unicode(default=u''), 'basic_auth_password': Unicode(default=u''), 'public_site': Unicode(validator=shorttext_v, default=u''), 'hidden_service': Unicode(validator=shorttext_v, default=u''), 'tb_download_link': Unicode(validator=shorttext_v, default=u'https://www.torproject.org/download/download'), 'default_language': Unicode(validator=shorttext_v, default=u'en'), 'default_password': Unicode(validator=longtext_v, default=u'globaleaks'),
Bool(default=False), 'disable_receiver_notification_emails': Bool(default=False), 'tip_expiration_threshold': Int(validator=natnum_v, default=72), 'notification_threshold_per_hour': Int(validator=natnum_v, default=20), 'exception_email_address': Unicode(validator=shorttext_v, default=u'*****@*****.**'), 'exception_email_pgp_key_fingerprint': Unicode(default=u''), 'exception_email_pgp_key_public': Unicode(default=u''), 'exception_email_pgp_key_expiration': Unicode(default=iso_strf_time(datetime_null())), }, 'node': { 'name': Unicode(validator=shorttext_v, default=u''), 'basic_auth': Bool(default=False), 'basic_auth_username': Unicode(default=u''), 'basic_auth_password': Unicode(default=u''), 'public_site': Unicode(validator=shorttext_v, default=u''), 'hidden_service': Unicode(validator=shorttext_v, default=u''), 'tb_download_link':