def epilogue(self): old_node = self.session_old.query(self.model_from['Node']).one() old_notif = self.session_old.query(self.model_from['Notification']).one() with open(os.path.join(Settings.client_path, 'data', 'favicon.ico'), 'rb') as favicon_file: data = favicon_file.read() new_file = self.model_to['File']() new_file.id = u'favicon' new_file.data = base64.b64encode(data).decode() self.session_new.add(new_file) self.entries_count['File'] += 1 file_path = os.path.join(Settings.files_path, 'custom_homepage.html') if os.path.exists(file_path): with open(file_path, 'r') as homepage_file: data = homepage_file.read() new_file = self.model_to['File']() new_file.id = u'homepage' new_file.data = base64.b64encode(data).decode() self.session_new.add(new_file) self.entries_count['File'] += 1 os.remove(file_path) #### Create ConfigL10N table and rows #### for lang in old_node.languages_enabled: self.session_new.add(self.model_to['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, _ in GLConfig_v_35['node'].items(): old_val = getattr(old_node, var_name) self.session_new.add(self.model_to['Config']('node', var_name, old_val)) # Migrate Config saved in Notification for var_name, _ in GLConfig_v_35['notification'].items(): old_val = getattr(old_notif, var_name) if var_name == 'exception_email_pgp_key_expiration' and old_val is not None: old_val = iso_strf_time(old_val) self.session_new.add(self.model_to['Config']('notification', var_name, old_val)) # Migrate private fields salt = old_node.receipt_salt if isinstance(old_node.receipt_salt, binary_type): salt = salt.decode() self.session_new.add(self.model_to['Config']('private', 'receipt_salt', salt)) self.session_new.add(self.model_to['Config']('private', 'smtp_password', old_notif.password)) # Set old verions that will be then handled by the version update self.session_new.add(self.model_to['Config']('private', 'version', 'X.Y.Z')) self.session_new.add(self.model_to['Config']('private', 'version_db', 0))
def epilogue(self): old_node = self.session_old.query(self.model_from['Node']).one() old_notif = self.session_old.query( self.model_from['Notification']).one() with open(os.path.join(Settings.client_path, 'data', 'favicon.ico'), 'rb') as favicon_file: data = favicon_file.read() new_file = self.model_to['File']() new_file.id = 'favicon' new_file.data = base64.b64encode(data).decode() self.session_new.add(new_file) self.entries_count['File'] += 1 #### Create ConfigL10N table and rows #### for lang in old_node.languages_enabled: self.session_new.add(self.model_to['EnabledLanguage'](lang)) self._migrate_l10n_static_config(old_node, 'node') self._migrate_l10n_static_config(old_notif, 'templates') #### Create Config table and rows #### # Migrate Config saved in Node for var_name, _ in GLConfig_v_35['node'].items(): old_val = getattr(old_node, var_name) self.session_new.add(self.model_to['Config']('node', var_name, old_val)) # Migrate Config saved in Notification for var_name, _ in GLConfig_v_35['notification'].items(): old_val = getattr(old_notif, var_name) if var_name == 'exception_email_pgp_key_expiration' and old_val is not None: old_val = iso_strf_time(old_val) self.session_new.add(self.model_to['Config']('notification', var_name, old_val)) # Migrate private fields self.session_new.add(self.model_to['Config']('private', 'receipt_salt', old_node.receipt_salt)) self.session_new.add(self.model_to['Config']('private', 'smtp_password', old_notif.password)) # Set old verions that will be then handled by the version update self.session_new.add(self.model_to['Config']('private', 'version', 'X.Y.Z')) self.session_new.add(self.model_to['Config']('private', 'version_db', 0))
'disable_custodian_notification_emails': Bool(default=False), 'disable_receiver_notification_emails': Bool(default=False), 'tip_expiration_threshold': Int(default=72), # Hours 'notification_threshold_per_hour': Int(default=20), 'exception_email_address': Unicode(default='*****@*****.**'), 'exception_email_pgp_key_fingerprint': Unicode(default=''), 'exception_email_pgp_key_public': Unicode(default=''), 'exception_email_pgp_key_expiration': Unicode(default=iso_strf_time(datetime_null())), }, 'node': { 'name': Unicode(default=''), 'basic_auth': Bool(default=False), 'basic_auth_username': Unicode(default=''), 'basic_auth_password': Unicode(default=''), 'public_site': Unicode(default=''), 'hidden_service': Unicode(default=''), 'tb_download_link':
'source_name': Unicode(default=u'GlobaLeaks - CHANGE EMAIL ACCOUNT USED FOR NOTIFICATION'), 'source_email': Unicode(default=u'*****@*****.**'), 'security': Unicode(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(default=72), # Hours 'notification_threshold_per_hour': Int(default=20), 'exception_email_address': Unicode(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(default=u''), 'basic_auth': Bool(default=False), 'basic_auth_username': Unicode(default=u''), 'basic_auth_password': Unicode(default=u''), 'public_site': Unicode(default=u''), 'hidden_service': Unicode(default=u''), 'tb_download_link': Unicode(default=u'https://www.torproject.org/download/download'), 'default_language': Unicode(default=u'en'), 'default_password': Unicode(default=u'globaleaks'),
# See smtp_password in private for password 'source_email': Unicode(default=u'*****@*****.**'), 'security': Unicode(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(default=72), # Hours 'notification_threshold_per_hour': Int(default=20), 'exception_email_address': Unicode(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(default=u''), 'basic_auth': Bool(default=False), 'basic_auth_username': Unicode(default=u''), 'basic_auth_password': Unicode(default=u''), 'public_site': Unicode(default=u''), 'hidden_service': Unicode(default=u''), 'tb_download_link': Unicode(default=u'https://www.torproject.org/download/download'), 'default_language': Unicode(default=u'en'), 'default_password': Unicode(default=u'globaleaks'),