aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFlorian Dold <florian@dold.me>2021-08-04 22:43:09 +0200
committerFlorian Dold <florian@dold.me>2021-08-04 22:43:09 +0200
commitdadf7a943c7d48acb6641aa943e849488ed99415 (patch)
treec456ac62e8a17c9f0554daf768f01b12d813cc66
parent8210480bdda272ab4b8a36125034e7f450ed78ab (diff)
more checks
-rw-r--r--packages/taler-wallet-cli/src/lint.ts64
1 files changed, 51 insertions, 13 deletions
diff --git a/packages/taler-wallet-cli/src/lint.ts b/packages/taler-wallet-cli/src/lint.ts
index 662571907..61b6d622f 100644
--- a/packages/taler-wallet-cli/src/lint.ts
+++ b/packages/taler-wallet-cli/src/lint.ts
@@ -15,18 +15,26 @@
*/
/**
+ * The deployment linter implements checks for a deployment
+ * of the GNU Taler exchange. It is meant to help sysadmins
+ * when setting up an exchange.
+ *
+ * The linter does checks in the configuration and uses
+ * various tools of the exchange in test mode (-t).
+ *
+ * To be able to run the tools as the right user, the linter should be
+ * run as root.
+ *
+ * @author Florian Dold <dold@taler.net>
+ */
+
+/**
* Imports.
*/
import {
- buildCodecForObject,
- Codec,
- codecForAny,
codecForExchangeKeysJson,
codecForKeysManagementResponse,
- codecForList,
- codecForString,
Configuration,
- durationFromSpec,
} from "@gnu-taler/taler-util";
import {
decodeCrock,
@@ -382,6 +390,7 @@ export async function checkExchangeHttpd(
}
}
+ // Check if we can use /keys already
{
const keysUrl = new URL("keys", baseUrl);
@@ -393,18 +402,47 @@ export async function checkExchangeHttpd(
"Make sure to sign and upload denomination and signing keys " +
"with taler-exchange-offline.",
);
- process.exit(1);
+ if (!context.cont) {
+ console.log("Aborting further checks.");
+ process.exit(1);
+ }
+ } else {
+ const keys = await readSuccessResponseJsonOrThrow(
+ resp,
+ codecForExchangeKeysJson(),
+ );
+
+ if (keys.master_public_key !== pubConf.masterPublicKey) {
+ console.log(
+ "error: master public key of exchange does not match public key of live exchange",
+ );
+ }
}
+ }
- const keys = await readSuccessResponseJsonOrThrow(
- resp,
- codecForExchangeKeysJson(),
- );
+ // Check /wire
+ {
+ const keysUrl = new URL("wire", baseUrl);
- if (keys.master_public_key !== pubConf.masterPublicKey) {
+ const resp = await Promise.race([httpLib.get(keysUrl.href), delayMs(2000)]);
+
+ if (!resp) {
console.log(
- "error: master public key of exchange does not match public key of live exchange",
+ "error: request to /wire timed out. " +
+ "Make sure to sign and upload accounts and wire fees " +
+ "using the taler-exchange-offline tool.",
);
+ if (!context.cont) {
+ console.log("Aborting further checks.");
+ process.exit(1);
+ }
+ } else {
+ if (resp.status !== 200) {
+ console.log(
+ "error: Can't access exchange /wire. Please check " +
+ "the logs of taler-exchange-httpd for further information.",
+ );
+ }
}
}
}