diff options
Diffstat (limited to 'packages/taler-wallet-core/src/operations/backup')
3 files changed, 92 insertions, 19 deletions
diff --git a/packages/taler-wallet-core/src/operations/backup/export.ts b/packages/taler-wallet-core/src/operations/backup/export.ts index c6e24289f..07c7b9ece 100644 --- a/packages/taler-wallet-core/src/operations/backup/export.ts +++ b/packages/taler-wallet-core/src/operations/backup/export.ts @@ -14,15 +14,6 @@ GNU Taler; see the file COPYING. If not, see <http://www.gnu.org/licenses/> */ -import { hash } from "../../crypto/primitives/nacl-fast"; -import { WalletBackupContentV1, BackupExchange, BackupCoin, BackupDenomination, BackupReserve, BackupPurchase, BackupProposal, BackupRefreshGroup, BackupBackupProvider, BackupTip, BackupRecoupGroup, BackupWithdrawalGroup, BackupBackupProviderTerms, BackupCoinSource, BackupCoinSourceType, BackupExchangeWireFee, BackupRefundItem, BackupRefundState, BackupProposalStatus, BackupRefreshOldCoin, BackupRefreshSession } from "@gnu-taler/taler-util"; -import { canonicalizeBaseUrl, canonicalJson } from "../../util/helpers"; -import { InternalWalletState } from "../state"; -import { provideBackupState, getWalletBackupState, WALLET_BACKUP_STATE_KEY } from "./state"; -import { Amounts, getTimestampNow } from "@gnu-taler/taler-util"; -import { Stores, CoinSourceType, CoinStatus, RefundState, AbortStatus, ProposalStatus } from "../../db.js"; -import { encodeCrock, stringToBytes, getRandomBytes } from "../../index.js"; - /** * Implementation of wallet backups (export/import/upload) and sync * server management. @@ -30,6 +21,51 @@ import { encodeCrock, stringToBytes, getRandomBytes } from "../../index.js"; * @author Florian Dold <dold@taler.net> */ +/** + * Imports. + */ +import { hash } from "../../crypto/primitives/nacl-fast"; +import { + WalletBackupContentV1, + BackupExchange, + BackupCoin, + BackupDenomination, + BackupReserve, + BackupPurchase, + BackupProposal, + BackupRefreshGroup, + BackupBackupProvider, + BackupTip, + BackupRecoupGroup, + BackupWithdrawalGroup, + BackupBackupProviderTerms, + BackupCoinSource, + BackupCoinSourceType, + BackupExchangeWireFee, + BackupRefundItem, + BackupRefundState, + BackupProposalStatus, + BackupRefreshOldCoin, + BackupRefreshSession, +} from "@gnu-taler/taler-util"; +import { InternalWalletState } from "../state"; +import { + provideBackupState, + getWalletBackupState, + WALLET_BACKUP_STATE_KEY, +} from "./state"; +import { Amounts, getTimestampNow } from "@gnu-taler/taler-util"; +import { + Stores, + CoinSourceType, + CoinStatus, + RefundState, + AbortStatus, + ProposalStatus, +} from "../../db.js"; +import { encodeCrock, stringToBytes, getRandomBytes } from "../../index.js"; +import { canonicalizeBaseUrl, canonicalJson } from "@gnu-taler/taler-util"; + export async function exportBackup( ws: InternalWalletState, ): Promise<WalletBackupContentV1> { diff --git a/packages/taler-wallet-core/src/operations/backup/import.ts b/packages/taler-wallet-core/src/operations/backup/import.ts index 05b6da084..e0ae379ab 100644 --- a/packages/taler-wallet-core/src/operations/backup/import.ts +++ b/packages/taler-wallet-core/src/operations/backup/import.ts @@ -14,11 +14,42 @@ GNU Taler; see the file COPYING. If not, see <http://www.gnu.org/licenses/> */ -import { BackupPurchase, AmountJson, Amounts, BackupDenomSel, WalletBackupContentV1, getTimestampNow, BackupCoinSourceType, BackupProposalStatus, codecForContractTerms, BackupRefundState, RefreshReason, BackupRefreshReason } from "@gnu-taler/taler-util"; -import { Stores, WalletContractData, DenomSelectionState, ExchangeWireInfo, ExchangeUpdateStatus, DenominationStatus, CoinSource, CoinSourceType, CoinStatus, ReserveBankInfo, ReserveRecordStatus, ProposalDownload, ProposalStatus, WalletRefundItem, RefundState, AbortStatus, RefreshSessionRecord } from "../../db.js"; +import { + BackupPurchase, + AmountJson, + Amounts, + BackupDenomSel, + WalletBackupContentV1, + getTimestampNow, + BackupCoinSourceType, + BackupProposalStatus, + codecForContractTerms, + BackupRefundState, + RefreshReason, + BackupRefreshReason, +} from "@gnu-taler/taler-util"; +import { + Stores, + WalletContractData, + DenomSelectionState, + ExchangeWireInfo, + ExchangeUpdateStatus, + DenominationStatus, + CoinSource, + CoinSourceType, + CoinStatus, + ReserveBankInfo, + ReserveRecordStatus, + ProposalDownload, + ProposalStatus, + WalletRefundItem, + RefundState, + AbortStatus, + RefreshSessionRecord, +} from "../../db.js"; import { TransactionHandle } from "../../index.js"; import { PayCoinSelection } from "../../util/coinSelection"; -import { j2s } from "../../util/helpers"; +import { j2s } from "@gnu-taler/taler-util"; import { checkDbInvariant, checkLogicInvariant } from "../../util/invariants"; import { Logger } from "../../util/logging"; import { initRetryInfo } from "../../util/retries"; @@ -271,6 +302,8 @@ export async function importBackup( denomPubHash, ]); if (!existingDenom) { + logger.info(`importing backup denomination: ${j2s(backupDenomination)}`); + await tx.put(Stores.denominations, { denomPub: backupDenomination.denom_pub, denomPubHash: denomPubHash, diff --git a/packages/taler-wallet-core/src/operations/backup/index.ts b/packages/taler-wallet-core/src/operations/backup/index.ts index 77a3219a5..49129d7de 100644 --- a/packages/taler-wallet-core/src/operations/backup/index.ts +++ b/packages/taler-wallet-core/src/operations/backup/index.ts @@ -25,13 +25,14 @@ * Imports. */ import { InternalWalletState } from "../state"; -import { AmountString, BackupRecovery, codecForAmountString, WalletBackupContentV1 } from "@gnu-taler/taler-util"; -import { TransactionHandle } from "../../util/query"; import { - BackupProviderRecord, - ConfigRecord, - Stores, -} from "../../db.js"; + AmountString, + BackupRecovery, + codecForAmountString, + WalletBackupContentV1, +} from "@gnu-taler/taler-util"; +import { TransactionHandle } from "../../util/query"; +import { BackupProviderRecord, ConfigRecord, Stores } from "../../db.js"; import { checkDbInvariant, checkLogicInvariant } from "../../util/invariants"; import { bytesToString, @@ -43,7 +44,7 @@ import { rsaBlind, stringToBytes, } from "../../crypto/talerCrypto"; -import { canonicalizeBaseUrl, canonicalJson, j2s } from "../../util/helpers"; +import { canonicalizeBaseUrl, canonicalJson, j2s } from "@gnu-taler/taler-util"; import { durationAdd, durationFromSpec, @@ -408,6 +409,9 @@ export async function runBackupCycle(ws: InternalWalletState): Promise<void> { const providers = await ws.db.iter(Stores.backupProviders).toArray(); logger.trace("got backup providers", providers); const backupJson = await exportBackup(ws); + + logger.trace(`running backup cycle with backup JSON: ${j2s(backupJson)}`); + const backupConfig = await provideBackupState(ws); const encBackup = await encryptBackup(backupConfig, backupJson); |