def load_settings(self, kgk_manager, password, no_sync=False): """ Loads settings from local file and from a sync server if possible. :param kgk_manager: kgk manager :type kgk_manager: KgkManager :param password: the masterpassword :type password: str :param no_sync: skip the sync update? :type no_sync: bool """ self.load_local_settings(kgk_manager) if not no_sync: if self.sync_manager.has_settings(): pull_successful, data = self.sync_manager.pull() if pull_successful and len(data) > 0: remote_kgk_manager = KgkManager() remote_kgk_manager.update_from_blob( password.encode('utf-8'), b64decode(data)) if remote_kgk_manager.has_kgk() and kgk_manager.get_kgk( ) != remote_kgk_manager.get_kgk(): raise ValueError( "KGK mismatch! This are not your settings!") self.update_from_export_data(remote_kgk_manager, b64decode(data)) else: print("Sync failed: No connection to the server.")
def sync_clicked(self): self.masterpassword_entered() if not self.settings_manager.sync_manager.has_settings(): self.show_sync_settings() else: pull_successful, data = self.settings_manager.sync_manager.pull() if pull_successful and len(data) > 0: remote_kgk_manager = KgkManager() remote_kgk_manager.update_from_blob(self.master_password_edit.text().encode('utf-8'), b64decode(data)) if len(self.preference_manager.get_kgk_block()) == 112 and \ remote_kgk_manager.has_kgk() and self.kgk_manager.has_kgk() and \ self.kgk_manager.get_kgk() != remote_kgk_manager.get_kgk(): if len(self.settings_manager.get_domain_list()) > 0: print("Lokal und auf dem Server gibt es unterschiedliche KGKs. Das ist ein Problem!") self.migrate_local_domains(remote_kgk_manager) else: if len(self.preference_manager.get_kgk_block()) != 112: self.kgk_manager = remote_kgk_manager self.kgk_manager.set_preference_manager(self.preference_manager) self.kgk_manager.store_local_kgk_block() self.settings_manager.update_from_export_data(remote_kgk_manager, b64decode(data)) self.domain_edit.blockSignals(True) current_domain = self.domain_edit.lineEdit().text() for i in reversed(range(self.domain_edit.count())): self.domain_edit.removeItem(i) self.domain_edit.insertItems(0, self.settings_manager.get_domain_list()) self.domain_edit.blockSignals(False) self.domain_edit.setEditText(current_domain) self.settings_manager.store_settings(self.kgk_manager)
def decrypt_remote_settings(kgk_mng, settings_mng): remote_kgk_manager = KgkManager() remote_kgk_manager.update_from_blob(master_password.encode('utf-8'), b64decode(data)) if kgk_exists and remote_kgk_manager.has_kgk() and kgk_mng.has_kgk() and \ kgk_mng.get_kgk() != remote_kgk_manager.get_kgk(): print("Lokal und auf dem Server gibt es unterschiedliche KGKs. Das ist ein Problem!") else: if not kgk_exists: kgk_mng = remote_kgk_manager kgk_mng.set_preference_manager(preference_manager) kgk_mng.store_local_kgk_block() settings_mng.update_from_export_data(remote_kgk_manager, b64decode(data)) print("Verbindung erfolgreich getestet.")
def load_settings(self, kgk_manager, password, no_sync=False): """ Loads settings from local file and from a sync server if possible. :param kgk_manager: kgk manager :type kgk_manager: KgkManager :param password: the masterpassword :type password: str :param no_sync: skip the sync update? :type no_sync: bool """ self.load_local_settings(kgk_manager) if not no_sync: if self.sync_manager.has_settings(): pull_successful, data = self.sync_manager.pull() if pull_successful and len(data) > 0: remote_kgk_manager = KgkManager() remote_kgk_manager.update_from_blob(password.encode('utf-8'), b64decode(data)) if remote_kgk_manager.has_kgk() and kgk_manager.get_kgk() != remote_kgk_manager.get_kgk(): raise ValueError("KGK mismatch! This are not your settings!") self.update_from_export_data(remote_kgk_manager, b64decode(data)) else: print("Sync failed: No connection to the server.")