gnunet-svn
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[taler-wallet-core] branch master updated: implement debug flag for allo


From: gnunet
Subject: [taler-wallet-core] branch master updated: implement debug flag for allowing late withdrawal
Date: Wed, 14 Apr 2021 16:21:43 +0200

This is an automated email from the git hooks/post-receive script.

dold pushed a commit to branch master
in repository wallet-core.

The following commit(s) were added to refs/heads/master by this push:
     new f4b5f3cf implement debug flag for allowing late withdrawal
f4b5f3cf is described below

commit f4b5f3cff8c29b4aab31d1ef0d0cefd32045db63
Author: Florian Dold <florian@dold.me>
AuthorDate: Wed Apr 14 18:21:23 2021 +0200

    implement debug flag for allowing late withdrawal
---
 packages/taler-wallet-cli/bin/taler-wallet-cli     |  2 +-
 packages/taler-wallet-cli/src/index.ts             | 39 +++++++++++++++++++---
 packages/taler-wallet-core/src/index.ts            |  4 ++-
 .../taler-wallet-core/src/operations/withdraw.ts   | 15 ++++++---
 packages/taler-wallet-core/src/util/debugFlags.ts  | 32 ++++++++++++++++++
 5 files changed, 81 insertions(+), 11 deletions(-)

diff --git a/packages/taler-wallet-cli/bin/taler-wallet-cli 
b/packages/taler-wallet-cli/bin/taler-wallet-cli
index 756de202..ca8008e3 100755
--- a/packages/taler-wallet-cli/bin/taler-wallet-cli
+++ b/packages/taler-wallet-cli/bin/taler-wallet-cli
@@ -4,4 +4,4 @@ try {
 } catch (e) {
   // Do nothing.
 }
-require('../dist/taler-wallet-cli.js').walletCli.run();
+require('../dist/taler-wallet-cli.js').main();
diff --git a/packages/taler-wallet-cli/src/index.ts 
b/packages/taler-wallet-cli/src/index.ts
index 8865c330..8b203a4c 100644
--- a/packages/taler-wallet-cli/src/index.ts
+++ b/packages/taler-wallet-cli/src/index.ts
@@ -22,8 +22,30 @@ import fs from "fs";
 import * as clk from "./clk.js";
 import { deepStrictEqual } from "assert";
 import { getTestInfo, runTests } from "./integrationtests/testrunner.js";
-import { PreparePayResultType, setDangerousTimetravel, classifyTalerUri, 
TalerUriType, RecoveryMergeStrategy, Amounts, addPaytoQueryParams, 
codecForList, codecForString } from "@gnu-taler/taler-util";
-import { Logger, Wallet, NodeHttpLib, getDefaultNodeWallet, 
OperationFailedAndReportedError, OperationFailedError, decodeCrock, rsaBlind, 
NodeThreadCryptoWorkerFactory, CryptoApi } from "@gnu-taler/taler-wallet-core";
+import {
+  PreparePayResultType,
+  setDangerousTimetravel,
+  classifyTalerUri,
+  TalerUriType,
+  RecoveryMergeStrategy,
+  Amounts,
+  addPaytoQueryParams,
+  codecForList,
+  codecForString,
+} from "@gnu-taler/taler-util";
+import {
+  Logger,
+  Wallet,
+  NodeHttpLib,
+  getDefaultNodeWallet,
+  OperationFailedAndReportedError,
+  OperationFailedError,
+  decodeCrock,
+  rsaBlind,
+  NodeThreadCryptoWorkerFactory,
+  CryptoApi,
+  walletCoreDebugFlags,
+} from "@gnu-taler/taler-wallet-core";
 
 // This module also serves as the entry point for the crypto
 // thread worker, and thus must expose these two handlers.
@@ -780,10 +802,10 @@ testCli
     help: "Glob pattern to select which tests to run",
   })
   .maybeOption("suites", ["--suites"], clk.STRING, {
-    help: "Only run selected suites (string-separated list)"
+    help: "Only run selected suites (string-separated list)",
   })
   .flag("dryRun", ["--dry"], {
-    help: "Only print tests that will be selected to run."
+    help: "Only print tests that will be selected to run.",
   })
   .action(async (args) => {
     await runTests({
@@ -793,7 +815,6 @@ testCli
     });
   });
 
-
 async function read(stream: NodeJS.ReadStream) {
   const chunks = [];
   for await (const chunk of stream) chunks.push(chunk);
@@ -858,3 +879,11 @@ testCli.subcommand("cryptoworker", 
"cryptoworker").action(async (args) => {
   const res = await cryptoApi.hashString("foo");
   console.log(res);
 });
+
+export function main() {
+  if (process.env["TALER_WALLET_DEBUG_DENOMSEL_ALLOW_LATE"]) {
+    logger.warn("Allowing withdrawal of late denominations for debugging");
+    walletCoreDebugFlags.denomselAllowLate = true;
+  }
+  walletCli.run();
+}
diff --git a/packages/taler-wallet-core/src/index.ts 
b/packages/taler-wallet-core/src/index.ts
index 1faf4e5f..1f390127 100644
--- a/packages/taler-wallet-core/src/index.ts
+++ b/packages/taler-wallet-core/src/index.ts
@@ -51,4 +51,6 @@ export * from "./util/promiseUtils";
 export * from "./util/query";
 export * from "./util/http";
 
-export * from "./pending-types";
\ No newline at end of file
+export * from "./pending-types";
+
+export * from "./util/debugFlags";
diff --git a/packages/taler-wallet-core/src/operations/withdraw.ts 
b/packages/taler-wallet-core/src/operations/withdraw.ts
index fcaa0e6d..237ef9fc 100644
--- a/packages/taler-wallet-core/src/operations/withdraw.ts
+++ b/packages/taler-wallet-core/src/operations/withdraw.ts
@@ -20,6 +20,7 @@
 import {
   AmountJson,
   Amounts,
+  durationFromSpec,
   parseWithdrawUri,
   Timestamp,
 } from "@gnu-taler/taler-util";
@@ -74,6 +75,7 @@ import { URL } from "../util/url";
 import { TalerErrorCode } from "@gnu-taler/taler-util";
 import { updateRetryInfoTimeout, initRetryInfo } from "../util/retries";
 import { compare } from "@gnu-taler/taler-util";
+import { walletCoreDebugFlags } from "../util/debugFlags.js";
 
 /**
  * Logger for this file.
@@ -174,10 +176,15 @@ interface ExchangeWithdrawDetails {
 export function isWithdrawableDenom(d: DenominationRecord): boolean {
   const now = getTimestampNow();
   const started = timestampCmp(now, d.stampStart) >= 0;
-  const lastPossibleWithdraw = timestampSubtractDuraction(
-    d.stampExpireWithdraw,
-    { d_ms: 50 * 1000 },
-  );
+  let lastPossibleWithdraw: Timestamp;
+  if (walletCoreDebugFlags.denomselAllowLate) {
+    lastPossibleWithdraw = d.stampExpireWithdraw;
+  } else {
+    lastPossibleWithdraw = timestampSubtractDuraction(
+      d.stampExpireWithdraw,
+      durationFromSpec({ minutes: 5 }),
+    );
+  }
   const remaining = getDurationRemaining(lastPossibleWithdraw, now);
   const stillOkay = remaining.d_ms !== 0;
   return started && stillOkay && !d.isRevoked;
diff --git a/packages/taler-wallet-core/src/util/debugFlags.ts 
b/packages/taler-wallet-core/src/util/debugFlags.ts
new file mode 100644
index 00000000..cea249d2
--- /dev/null
+++ b/packages/taler-wallet-core/src/util/debugFlags.ts
@@ -0,0 +1,32 @@
+/*
+ This file is part of GNU Taler
+ (C) 2021 Taler Systems S.A.
+
+ GNU Taler is free software; you can redistribute it and/or modify it under the
+ terms of the GNU General Public License as published by the Free Software
+ Foundation; either version 3, or (at your option) any later version.
+
+ GNU Taler is distributed in the hope that it will be useful, but WITHOUT ANY
+ WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
+ A PARTICULAR PURPOSE.  See the GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License along with
+ GNU Taler; see the file COPYING.  If not, see <http://www.gnu.org/licenses/>
+ */
+
+/**
+ * Debug flags for wallet-core.
+ *
+ * @author Florian Dold
+ */
+
+export interface WalletCoreDebugFlags {
+  /**
+   * Allow withdrawal of denominations even though they are about to expire.
+   */
+  denomselAllowLate: boolean;
+}
+
+export const walletCoreDebugFlags: WalletCoreDebugFlags = {
+  denomselAllowLate: false,
+};

-- 
To stop receiving notification emails like this one, please contact
gnunet@gnunet.org.



reply via email to

[Prev in Thread] Current Thread [Next in Thread]