@super-protocol/pki-sync-client 2.0.12 → 3.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +13 -0
- package/dist/cli.js +15 -3
- package/dist/sync-client.d.ts +18 -4
- package/dist/sync-client.js +149 -61
- package/package.json +3 -3
package/README.md
CHANGED
|
@@ -89,6 +89,8 @@ pki-sync-client sync [options]
|
|
|
89
89
|
| `--swarm-env` | | string | `/sp/swarm/swarm-env.yaml` | Path to swarm environment config (YAML) |
|
|
90
90
|
| `--own-challenge` | | string | `auto` | Authentication challenge type: `auto`, `tdx`, `sev`, or `untrusted` |
|
|
91
91
|
| `--log-level` | `-l` | string | | Log level: `fatal`, `error`, `warn`, `info`, `debug`, `trace` |
|
|
92
|
+
| `--retry-attempts` | | number | `3` | Number of retry attempts per server for retryable network/DNS errors |
|
|
93
|
+
| `--retry-timeout` | | number | `10` | Timeout between retries in seconds for retryable network/DNS errors |
|
|
92
94
|
| `--disable-server-identity-check` | | boolean | `false` | Disable server identity verification (not recommended) |
|
|
93
95
|
| `--save-certs-to-dir` | | string | | Directory to save client certificates (`key.pem`, `ca.pem`, `cert.pem`) |
|
|
94
96
|
| `--save-certs-prefix` | | string | | Prefix for certificate filenames (e.g., `client` → `client_key.pem`) |
|
|
@@ -112,6 +114,11 @@ pki-sync-client sync -c secrets.yaml --log-level info
|
|
|
112
114
|
pki-sync-client sync -c secrets.yaml --swarm-env /custom/path/swarm-env.yaml
|
|
113
115
|
```
|
|
114
116
|
|
|
117
|
+
**Sync with custom retry policy:**
|
|
118
|
+
```bash
|
|
119
|
+
pki-sync-client sync -c secrets.yaml --retry-attempts 5 --retry-timeout 3
|
|
120
|
+
```
|
|
121
|
+
|
|
115
122
|
**Sync and save client certificates:**
|
|
116
123
|
```bash
|
|
117
124
|
pki-sync-client sync -c secrets.yaml --save-certs-to-dir /etc/app/certs
|
|
@@ -202,6 +209,8 @@ interface SyncClientOptions {
|
|
|
202
209
|
networkID: string; // Network identifier
|
|
203
210
|
caBundle: string; // PEM-encoded CA certificate bundle
|
|
204
211
|
ownChallenge: string; // Challenge type: 'auto', 'tdx', 'sev', 'untrusted'
|
|
212
|
+
retryAttempts?: number; // Retry attempts per server (default: 3)
|
|
213
|
+
retryDelaySec?: number; // Delay between retries in seconds (default: 10)
|
|
205
214
|
logLevel?: LogLevel; // Log level: fatal | error | warn | info | debug | trace; if omitted logs are disabled
|
|
206
215
|
disableServerIdentityCheck?: boolean; // Disable server verification (default: false)
|
|
207
216
|
saveCertsToDir?: string; // Directory to save certificates
|
|
@@ -258,6 +267,10 @@ Use a static identifier for non-TEE environments (development/testing only).
|
|
|
258
267
|
6. **Certificate Export** (optional): Saves client certificates for external use
|
|
259
268
|
7. **Failover**: Automatically tries next server if connection fails
|
|
260
269
|
|
|
270
|
+
Retry behavior details:
|
|
271
|
+
- Retries are performed for retryable network/DNS errors (for example: `ECONNRESET`, `ECONNREFUSED`, `ETIMEDOUT`, `EAI_AGAIN`, `ENOTFOUND`) and for HTTP `429`/`502` responses (e.g. throttling or temporary upstream failure behind OpenResty)
|
|
272
|
+
- Retries are performed against the original hostname (SNI-safe), without replacing hostname with direct IPs
|
|
273
|
+
|
|
261
274
|
## Error Handling
|
|
262
275
|
|
|
263
276
|
The sync client provides clear error messages for common issues:
|
package/dist/cli.js
CHANGED
|
@@ -19,6 +19,8 @@ async function sync(argv) {
|
|
|
19
19
|
networkID: swarmEnv['pki-authority'].networkID,
|
|
20
20
|
caBundle: swarmEnv['pki-authority'].caBundle,
|
|
21
21
|
ownChallenge: argv.ownChallenge,
|
|
22
|
+
retryAttempts: argv.retryAttempts,
|
|
23
|
+
retryDelaySec: argv.retryTimeout,
|
|
22
24
|
logLevel: argv.logLevel,
|
|
23
25
|
disableServerIdentityCheck: argv.disableServerIdentityCheck,
|
|
24
26
|
saveCertsToDir: argv.saveCertsToDir,
|
|
@@ -49,15 +51,25 @@ async function main() {
|
|
|
49
51
|
demandOption: true,
|
|
50
52
|
})
|
|
51
53
|
.option('own-challenge', {
|
|
52
|
-
describe: 'Own challenge string for authentication (auto, tdx, sev, untrusted)',
|
|
54
|
+
describe: 'Own challenge string for authentication (auto, tdx, sev-snp, untrusted)',
|
|
53
55
|
type: 'string',
|
|
54
56
|
default: 'auto',
|
|
55
57
|
})
|
|
56
58
|
.option('log-level', {
|
|
57
59
|
alias: 'l',
|
|
58
|
-
describe: 'Log level
|
|
60
|
+
describe: 'Log level',
|
|
59
61
|
choices: Object.values(pki_common_1.LogLevel),
|
|
60
62
|
type: 'string',
|
|
63
|
+
})
|
|
64
|
+
.option('retry-attempts', {
|
|
65
|
+
describe: 'Number of retry attempts per server for retryable network/DNS errors',
|
|
66
|
+
type: 'number',
|
|
67
|
+
default: 3,
|
|
68
|
+
})
|
|
69
|
+
.option('retry-timeout', {
|
|
70
|
+
describe: 'Timeout between retries in seconds for retryable network/DNS errors',
|
|
71
|
+
type: 'number',
|
|
72
|
+
default: 10,
|
|
61
73
|
})
|
|
62
74
|
.option('disable-server-identity-check', {
|
|
63
75
|
describe: 'Disable server identity verification',
|
|
@@ -84,4 +96,4 @@ main().catch((error) => {
|
|
|
84
96
|
console.error('Error:', error.message);
|
|
85
97
|
process.exit(1);
|
|
86
98
|
});
|
|
87
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
99
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xpLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL2NsaS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7QUFDQSxrREFBMEI7QUFDMUIsMkNBQXdDO0FBQ3hDLHFDQUFzRDtBQUN0RCwrQ0FBMkM7QUFDM0MsMkRBQXNEO0FBRXRELE1BQU0sc0JBQXNCLEdBQUcsMEJBQTBCLENBQUM7QUFFMUQsS0FBSyxVQUFVLElBQUksQ0FBQyxJQUFTO0lBQ3pCLElBQUksQ0FBQztRQUNELE1BQU0sTUFBTSxHQUFHLElBQUEsb0JBQVcsRUFBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDeEMsTUFBTSxRQUFRLEdBQUcsSUFBQSxzQkFBYSxFQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUU5QyxNQUFNLE1BQU0sR0FBRyxJQUFJLHdCQUFVLENBQUM7WUFDMUIsT0FBTyxFQUFFLFFBQVEsQ0FBQyxlQUFlLENBQUMsQ0FBQyxPQUFPO1lBQzFDLFNBQVMsRUFBRSxRQUFRLENBQUMsZUFBZSxDQUFDLENBQUMsU0FBUztZQUM5QyxRQUFRLEVBQUUsUUFBUSxDQUFDLGVBQWUsQ0FBQyxDQUFDLFFBQVE7WUFDNUMsWUFBWSxFQUFFLElBQUksQ0FBQyxZQUFZO1lBQy9CLGFBQWEsRUFBRSxJQUFJLENBQUMsYUFBYTtZQUNqQyxhQUFhLEVBQUUsSUFBSSxDQUFDLFlBQVk7WUFDaEMsUUFBUSxFQUFFLElBQUksQ0FBQyxRQUFRO1lBQ3ZCLDBCQUEwQixFQUFFLElBQUksQ0FBQywwQkFBMEI7WUFDM0QsY0FBYyxFQUFFLElBQUksQ0FBQyxjQUFjO1lBQ25DLGVBQWUsRUFBRSxJQUFJLENBQUMsZUFBZTtTQUN4QyxDQUFDLENBQUM7UUFFSCxNQUFNLE1BQU0sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7UUFFMUIsT0FBTyxDQUFDLEdBQUcsQ0FBQyw2QkFBNkIsQ0FBQyxDQUFDO0lBQy9DLENBQUM7SUFBQyxPQUFPLEtBQVUsRUFB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
|
package/dist/sync-client.d.ts
CHANGED
|
@@ -1,22 +1,36 @@
|
|
|
1
1
|
import { SyncConfig } from './config';
|
|
2
|
-
import { LogLevel } from '@super-protocol/pki-common';
|
|
2
|
+
import { LogLevel, type DetectedCpuType } from '@super-protocol/pki-common';
|
|
3
3
|
export interface SyncClientOptions {
|
|
4
4
|
servers: string[];
|
|
5
5
|
networkID: string;
|
|
6
6
|
caBundle: string;
|
|
7
|
-
ownChallenge:
|
|
7
|
+
ownChallenge: DetectedCpuType | 'auto';
|
|
8
|
+
retryAttempts?: number;
|
|
9
|
+
retryDelaySec?: number;
|
|
8
10
|
logLevel?: LogLevel;
|
|
9
11
|
disableServerIdentityCheck?: boolean;
|
|
10
12
|
saveCertsToDir?: string;
|
|
11
13
|
saveCertsPrefix?: string;
|
|
12
14
|
}
|
|
13
15
|
export declare class SyncClient {
|
|
16
|
+
private static readonly DEFAULT_RETRY_ATTEMPTS;
|
|
17
|
+
private static readonly DEFAULT_RETRY_DELAY_SEC;
|
|
18
|
+
private static readonly RETRYABLE_NETWORK_ERROR_CODES;
|
|
19
|
+
private static readonly RETRYABLE_HTTP_STATUS_CODES;
|
|
14
20
|
private options;
|
|
15
21
|
private challenge;
|
|
16
|
-
private logger
|
|
22
|
+
private logger;
|
|
23
|
+
private retryAttempts;
|
|
24
|
+
private retryDelaySec;
|
|
17
25
|
private static resolveLogger;
|
|
18
|
-
private static detectCpuType;
|
|
19
26
|
constructor(options: SyncClientOptions);
|
|
27
|
+
private static normalizeRetryAttempts;
|
|
28
|
+
private static normalizeRetryDelaySec;
|
|
29
|
+
private static evaluateRetry;
|
|
30
|
+
private static waitRetryDelay;
|
|
31
|
+
private fetchSecrets;
|
|
32
|
+
private saveSecrets;
|
|
33
|
+
private saveArtifacts;
|
|
20
34
|
private saveCertificates;
|
|
21
35
|
sync(config: SyncConfig): Promise<void>;
|
|
22
36
|
}
|
package/dist/sync-client.js
CHANGED
|
@@ -33,12 +33,25 @@ const axios_1 = __importDefault(require("axios"));
|
|
|
33
33
|
const fs = __importStar(require("fs"));
|
|
34
34
|
const path = __importStar(require("path"));
|
|
35
35
|
class SyncClient {
|
|
36
|
+
static DEFAULT_RETRY_ATTEMPTS = 3;
|
|
37
|
+
static DEFAULT_RETRY_DELAY_SEC = 10;
|
|
38
|
+
static RETRYABLE_NETWORK_ERROR_CODES = new Set([
|
|
39
|
+
'ETIMEDOUT',
|
|
40
|
+
'ECONNRESET',
|
|
41
|
+
'ECONNREFUSED',
|
|
42
|
+
'EAI_AGAIN',
|
|
43
|
+
'ENOTFOUND',
|
|
44
|
+
'ECONNABORTED',
|
|
45
|
+
]);
|
|
46
|
+
static RETRYABLE_HTTP_STATUS_CODES = new Set([429, 502]);
|
|
36
47
|
options;
|
|
37
48
|
challenge;
|
|
38
49
|
logger;
|
|
50
|
+
retryAttempts;
|
|
51
|
+
retryDelaySec;
|
|
39
52
|
static resolveLogger(options) {
|
|
40
53
|
if (options.logLevel == null) {
|
|
41
|
-
return
|
|
54
|
+
return new pki_common_1.CommonMockLog();
|
|
42
55
|
}
|
|
43
56
|
const allowedLevels = Object.values(pki_common_1.LogLevel);
|
|
44
57
|
if (!allowedLevels.includes(options.logLevel)) {
|
|
@@ -46,48 +59,108 @@ class SyncClient {
|
|
|
46
59
|
}
|
|
47
60
|
return new pki_common_1.CommonPinoLog(options.logLevel);
|
|
48
61
|
}
|
|
49
|
-
static detectCpuType() {
|
|
50
|
-
try {
|
|
51
|
-
const tdxPath = '/dev/tdx_guest';
|
|
52
|
-
const sevPath = '/dev/sev-guest';
|
|
53
|
-
if (fs.existsSync(tdxPath)) {
|
|
54
|
-
const stats = fs.statSync(tdxPath);
|
|
55
|
-
if (stats.isCharacterDevice()) {
|
|
56
|
-
return 'tdx';
|
|
57
|
-
}
|
|
58
|
-
}
|
|
59
|
-
if (fs.existsSync(sevPath)) {
|
|
60
|
-
const stats = fs.statSync(sevPath);
|
|
61
|
-
if (stats.isCharacterDevice()) {
|
|
62
|
-
return 'sev';
|
|
63
|
-
}
|
|
64
|
-
}
|
|
65
|
-
}
|
|
66
|
-
catch (error) {
|
|
67
|
-
// If we can't check devices, fall back to untrusted
|
|
68
|
-
}
|
|
69
|
-
return 'untrusted';
|
|
70
|
-
}
|
|
71
62
|
constructor(options) {
|
|
72
63
|
this.options = options;
|
|
73
64
|
this.logger = SyncClient.resolveLogger(options);
|
|
65
|
+
this.retryAttempts = SyncClient.normalizeRetryAttempts(options.retryAttempts);
|
|
66
|
+
this.retryDelaySec = SyncClient.normalizeRetryDelaySec(options.retryDelaySec);
|
|
74
67
|
const challengeType = options.ownChallenge === 'auto'
|
|
75
|
-
?
|
|
68
|
+
? (0, pki_common_1.detectCpuType)()
|
|
76
69
|
: options.ownChallenge;
|
|
77
|
-
if (challengeType ===
|
|
70
|
+
if (challengeType === pki_common_1.ChallengeType.TDX) {
|
|
78
71
|
this.challenge = { type: pki_common_1.ChallengeType.TDX };
|
|
79
72
|
}
|
|
80
|
-
else if (challengeType ===
|
|
73
|
+
else if (challengeType === pki_common_1.ChallengeType.SEVSNP) {
|
|
81
74
|
this.challenge = { type: pki_common_1.ChallengeType.SEVSNP };
|
|
82
75
|
}
|
|
83
|
-
else if (challengeType ===
|
|
76
|
+
else if (challengeType === pki_common_1.ChallengeType.Untrusted) {
|
|
84
77
|
this.challenge = {
|
|
85
78
|
type: pki_common_1.ChallengeType.Untrusted,
|
|
86
79
|
idHex: Buffer.from('pki-sync-client-untrusted-id').toString('hex'),
|
|
87
80
|
};
|
|
88
81
|
}
|
|
89
82
|
else {
|
|
90
|
-
throw new Error(`Unsupported challenge type: ${challengeType}. Supported: tdx, sev, untrusted, auto`);
|
|
83
|
+
throw new Error(`Unsupported challenge type: ${challengeType}. Supported: tdx, sev-snp, untrusted, auto`);
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
static normalizeRetryAttempts(value) {
|
|
87
|
+
if (value == null) {
|
|
88
|
+
return SyncClient.DEFAULT_RETRY_ATTEMPTS;
|
|
89
|
+
}
|
|
90
|
+
if (!Number.isInteger(value) || value < 1) {
|
|
91
|
+
throw new Error('Invalid retryAttempts: must be an integer greater than or equal to 1');
|
|
92
|
+
}
|
|
93
|
+
return value;
|
|
94
|
+
}
|
|
95
|
+
static normalizeRetryDelaySec(value) {
|
|
96
|
+
if (value == null) {
|
|
97
|
+
return SyncClient.DEFAULT_RETRY_DELAY_SEC;
|
|
98
|
+
}
|
|
99
|
+
if (!Number.isInteger(value) || value < 0) {
|
|
100
|
+
throw new Error('Invalid retryDelaySec: must be an integer greater than or equal to 0');
|
|
101
|
+
}
|
|
102
|
+
return value;
|
|
103
|
+
}
|
|
104
|
+
static evaluateRetry(error) {
|
|
105
|
+
if (!axios_1.default.isAxiosError(error)) {
|
|
106
|
+
return {
|
|
107
|
+
isRetryable: false,
|
|
108
|
+
reason: 'non-axios-error',
|
|
109
|
+
};
|
|
110
|
+
}
|
|
111
|
+
const httpStatus = error.response?.status;
|
|
112
|
+
if (httpStatus != null) {
|
|
113
|
+
const reason = `http-status:${httpStatus}`;
|
|
114
|
+
return {
|
|
115
|
+
isRetryable: SyncClient.RETRYABLE_HTTP_STATUS_CODES.has(httpStatus),
|
|
116
|
+
reason,
|
|
117
|
+
};
|
|
118
|
+
}
|
|
119
|
+
const errorCode = error.code;
|
|
120
|
+
if (errorCode != null) {
|
|
121
|
+
const reason = `network-code:${errorCode}`;
|
|
122
|
+
return {
|
|
123
|
+
isRetryable: SyncClient.RETRYABLE_NETWORK_ERROR_CODES.has(errorCode),
|
|
124
|
+
reason,
|
|
125
|
+
};
|
|
126
|
+
}
|
|
127
|
+
return {
|
|
128
|
+
isRetryable: false,
|
|
129
|
+
reason: 'unknown-axios-error',
|
|
130
|
+
};
|
|
131
|
+
}
|
|
132
|
+
static async waitRetryDelay(delaySec) {
|
|
133
|
+
if (delaySec <= 0) {
|
|
134
|
+
return;
|
|
135
|
+
}
|
|
136
|
+
await new Promise((resolve) => {
|
|
137
|
+
setTimeout(resolve, delaySec * 1000);
|
|
138
|
+
});
|
|
139
|
+
}
|
|
140
|
+
async fetchSecrets(server, config, httpsAgent) {
|
|
141
|
+
const secretNames = config.secrets.map((s) => s.secretName);
|
|
142
|
+
const response = await axios_1.default.post(`https://${server}/api/v1/secrets/get`, { objects: secretNames }, { httpsAgent });
|
|
143
|
+
return response.data.secrets;
|
|
144
|
+
}
|
|
145
|
+
async saveSecrets(config, secrets) {
|
|
146
|
+
for (const secret of config.secrets) {
|
|
147
|
+
const base64Content = secrets[secret.secretName];
|
|
148
|
+
if (base64Content == null) {
|
|
149
|
+
throw new Error(`Secret "${secret.secretName}" not found in response`);
|
|
150
|
+
}
|
|
151
|
+
const dir = path.dirname(secret.saveTo);
|
|
152
|
+
await fs.promises.mkdir(dir, { recursive: true });
|
|
153
|
+
await fs.promises.writeFile(secret.saveTo, base64Content, {
|
|
154
|
+
encoding: 'base64',
|
|
155
|
+
mode: 0o600,
|
|
156
|
+
});
|
|
157
|
+
this.logger.info(`Saved secret "${secret.secretName}" to ${secret.saveTo}`);
|
|
158
|
+
}
|
|
159
|
+
}
|
|
160
|
+
async saveArtifacts(config, secrets, pkiClientFactory) {
|
|
161
|
+
await this.saveSecrets(config, secrets);
|
|
162
|
+
if (this.options.saveCertsToDir) {
|
|
163
|
+
await this.saveCertificates(pkiClientFactory, this.options.saveCertsToDir, this.options.saveCertsPrefix);
|
|
91
164
|
}
|
|
92
165
|
}
|
|
93
166
|
async saveCertificates(pkiClientFactory, certsDir, prefix) {
|
|
@@ -101,23 +174,25 @@ class SyncClient {
|
|
|
101
174
|
await fs.promises.writeFile(keyPath, cert.keyPair.privateKeyPem, {
|
|
102
175
|
mode: 0o600,
|
|
103
176
|
});
|
|
104
|
-
this.logger
|
|
177
|
+
this.logger.info(`Saved private key to ${keyPath}`);
|
|
105
178
|
// Save CA certificate
|
|
106
179
|
const caPath = path.join(certsDir, `${prefixStr}ca.pem`);
|
|
107
180
|
await fs.promises.writeFile(caPath, ca, { mode: 0o644 });
|
|
108
|
-
this.logger
|
|
181
|
+
this.logger.info(`Saved CA certificate to ${caPath}`);
|
|
109
182
|
// Save client certificate with intermediate chain
|
|
110
183
|
const certWithIntermediate = clientCert + intermediateCertificates;
|
|
111
184
|
const certPath = path.join(certsDir, `${prefixStr}cert.pem`);
|
|
112
185
|
await fs.promises.writeFile(certPath, certWithIntermediate, {
|
|
113
186
|
mode: 0o644,
|
|
114
187
|
});
|
|
115
|
-
this.logger
|
|
188
|
+
this.logger.info(`Saved certificate chain to ${certPath}`);
|
|
116
189
|
}
|
|
117
190
|
async sync(config) {
|
|
118
191
|
for (const server of this.options.servers) {
|
|
192
|
+
let pkiClientFactory;
|
|
193
|
+
let httpsAgent;
|
|
119
194
|
try {
|
|
120
|
-
this.logger
|
|
195
|
+
this.logger.info(`Trying server: ${server}`);
|
|
121
196
|
const pkiConfig = {
|
|
122
197
|
clientCertProvider: {
|
|
123
198
|
type: 'pki-ca',
|
|
@@ -128,43 +203,56 @@ class SyncClient {
|
|
|
128
203
|
},
|
|
129
204
|
networkID: this.options.networkID,
|
|
130
205
|
};
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
const dir = path.dirname(secret.saveTo);
|
|
146
|
-
await fs.promises.mkdir(dir, { recursive: true });
|
|
147
|
-
await fs.promises.writeFile(secret.saveTo, base64Content, {
|
|
148
|
-
encoding: 'base64',
|
|
149
|
-
mode: 0o600,
|
|
150
|
-
});
|
|
151
|
-
this.logger?.info(`Saved secret "${secret.secretName}" to ${secret.saveTo}`);
|
|
206
|
+
pkiClientFactory = new pki_client_1.PkiClientFactory(pkiConfig, this.logger);
|
|
207
|
+
httpsAgent = await pkiClientFactory.getHTTPSAgent();
|
|
208
|
+
}
|
|
209
|
+
catch (error) {
|
|
210
|
+
const errorMessage = error instanceof Error ? error.message : String(error);
|
|
211
|
+
this.logger.error(`Failed to prepare client for server ${server}: ${errorMessage}. Reason: non-axios-error`);
|
|
212
|
+
continue;
|
|
213
|
+
}
|
|
214
|
+
let fetchedSecrets;
|
|
215
|
+
for (let attempt = 1; attempt <= this.retryAttempts; attempt++) {
|
|
216
|
+
try {
|
|
217
|
+
this.logger.info(`POST attempt ${attempt}/${this.retryAttempts} for server: ${server}`);
|
|
218
|
+
fetchedSecrets = await this.fetchSecrets(server, config, httpsAgent);
|
|
219
|
+
break;
|
|
152
220
|
}
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
221
|
+
catch (error) {
|
|
222
|
+
const errorMessage = error instanceof Error ? error.message : String(error);
|
|
223
|
+
const retryDecision = SyncClient.evaluateRetry(error);
|
|
224
|
+
const hasMoreAttempts = attempt < this.retryAttempts;
|
|
225
|
+
this.logger.error(`Failed attempt ${attempt}/${this.retryAttempts} for server ${server}: ${errorMessage}. Reason: ${retryDecision.reason}`);
|
|
226
|
+
if (!retryDecision.isRetryable) {
|
|
227
|
+
this.logger.error(`Error is not retryable for server ${server}; moving to next server. Reason: ${retryDecision.reason}`);
|
|
228
|
+
break;
|
|
229
|
+
}
|
|
230
|
+
if (!hasMoreAttempts) {
|
|
231
|
+
this.logger.error(`Retry attempts exhausted for server ${server}; moving to next server. Reason: ${retryDecision.reason}`);
|
|
232
|
+
break;
|
|
233
|
+
}
|
|
234
|
+
this.logger.info(`Retrying server ${server} in ${this.retryDelaySec} second(s). Reason: ${retryDecision.reason}`);
|
|
235
|
+
await SyncClient.waitRetryDelay(this.retryDelaySec);
|
|
156
236
|
}
|
|
157
|
-
|
|
158
|
-
|
|
237
|
+
}
|
|
238
|
+
if (fetchedSecrets == null) {
|
|
239
|
+
continue;
|
|
240
|
+
}
|
|
241
|
+
try {
|
|
242
|
+
await this.saveArtifacts(config, fetchedSecrets, pkiClientFactory);
|
|
243
|
+
this.logger.info(`Successfully synced from server: ${server}`);
|
|
244
|
+
return;
|
|
159
245
|
}
|
|
160
246
|
catch (error) {
|
|
161
247
|
const errorMessage = error instanceof Error ? error.message : String(error);
|
|
162
|
-
|
|
163
|
-
|
|
248
|
+
const reason = axios_1.default.isAxiosError(error)
|
|
249
|
+
? SyncClient.evaluateRetry(error).reason
|
|
250
|
+
: 'unknown-post-error';
|
|
251
|
+
this.logger.error(`Failed to process sync results for server ${server}: ${errorMessage}. Reason: ${reason}`);
|
|
164
252
|
}
|
|
165
253
|
}
|
|
166
254
|
throw new Error('Failed to sync from all servers');
|
|
167
255
|
}
|
|
168
256
|
}
|
|
169
257
|
exports.SyncClient = SyncClient;
|
|
170
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3luYy1jbGllbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvc3luYy1jbGllbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFDQSwyREFJb0M7QUFDcEMsMkRBS29DO0FBQ3BDLGtEQUEwQjtBQUMxQix1Q0FBeUI7QUFDekIsMkNBQTZCO0FBYTdCLE1BQWEsVUFBVTtJQUNYLE9BQU8sQ0FBb0I7SUFDM0IsU0FBUyxDQUFrQjtJQUMzQixNQUFNLENBQWlCO0lBRXZCLE1BQU0sQ0FBQyxhQUFhLENBQ3hCLE9BQTBCO1FBRTFCLElBQUksT0FBTyxDQUFDLFFBQVEsSUFBSSxJQUFJLEVBQUUsQ0FBQztZQUMzQixPQUFPLFNBQVMsQ0FBQztRQUNyQixDQUFDO1FBRUQsTUFBTSxhQUFhLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxxQkFBUSxDQUFhLENBQUM7UUFDMUQsSUFBSSxDQUFDLGFBQWEsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUM7WUFDNUMsTUFBTSxJQUFJLEtBQUssQ0FDWCwwQkFBMEIsT0FBTyxDQUFDLFFBQVEsZ0JBQWdCLGFBQWEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FDdkYsQ0FBQztRQUNOLENBQUM7UUFFRCxPQUFPLElBQUksMEJBQWEsQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDL0MsQ0FBQztJQUVPLE1BQU0sQ0FBQyxhQUFhO1FBQ3hCLElBQUksQ0FBQztZQUNELE1BQU0sT0FBTyxHQUFHLGdCQUFnQixDQUFDO1lBQ2pDLE1BQU0sT0FBTyxHQUFHLGdCQUFnQixDQUFDO1lBRWpDLElBQUksRUFBRSxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDO2dCQUN6QixNQUFNLEtBQUssR0FBRyxFQUFFLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDO2dCQUNuQyxJQUFJLEtB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
|
|
258
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3luYy1jbGllbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvc3luYy1jbGllbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFDQSwyREFJb0M7QUFDcEMsMkRBU29DO0FBQ3BDLGtEQUEwQjtBQUMxQix1Q0FBeUI7QUFDekIsMkNBQTZCO0FBZTdCLE1BQWEsVUFBVTtJQUNYLE1BQU0sQ0FBVSxzQkFBc0IsR0FBRyxDQUFDLENBQUM7SUFDM0MsTUFBTSxDQUFVLHVCQUF1QixHQUFHLEVBQUUsQ0FBQztJQUM3QyxNQUFNLENBQVUsNkJBQTZCLEdBQUcsSUFBSSxHQUFHLENBQUM7UUFDNUQsV0FBVztRQUNYLFlBQVk7UUFDWixjQUFjO1FBQ2QsV0FBVztRQUNYLFdBQVc7UUFDWCxjQUFjO0tBQ2pCLENBQUMsQ0FBQztJQUNLLE1BQU0sQ0FBVSwyQkFBMkIsR0FBRyxJQUFJLEdBQUcsQ0FBQyxDQUFDLEdBQUcsRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDO0lBRWxFLE9BQU8sQ0FBb0I7SUFDM0IsU0FBUyxDQUFrQjtJQUMzQixNQUFNLENBQU07SUFDWixhQUFhLENBQVM7SUFDdEIsYUFBYSxDQUFTO0lBRXRCLE1BQU0sQ0FBQyxhQUFhLENBQUMsT0FBMEI7UUFDbkQsSUFBSSxPQUFPLENBQUMsUUFBUSxJQUFJLElBQUksRUFBRSxDQUFDO1lBQzNCLE9BQU8sSUFBSSwwQkFBTyxFQUFFLENBQUM7UUFDekIsQ0FBQztRQUVELE1BQU0sYUFBYSxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMscUJBQVEsQ0FBYSxDQUFDO1FBQzFELElBQUksQ0FBQyxhQUFhLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDO1lBQzVDLE1BQU0sSUFBSSxLQUFLLENBQ1gsMEJBQTBCLE9BQU8sQ0FBQyxRQUFRLGdCQUFnQixhQUFhLENBQUMsSUFBSSxDQUFDLElBQUksQ0FB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
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@super-protocol/pki-sync-client",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "3.0.1",
|
|
4
4
|
"description": "PKI sync client utility",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"bin": {
|
|
@@ -23,8 +23,8 @@
|
|
|
23
23
|
"license": "ISC",
|
|
24
24
|
"dependencies": {
|
|
25
25
|
"@sinclair/typebox": "0.33.22",
|
|
26
|
-
"@super-protocol/pki-client": "^
|
|
27
|
-
"@super-protocol/pki-common": "^
|
|
26
|
+
"@super-protocol/pki-client": "^3.0.0",
|
|
27
|
+
"@super-protocol/pki-common": "^3.0.2",
|
|
28
28
|
"axios": "^1.7.0",
|
|
29
29
|
"js-yaml": "^4.1.0",
|
|
30
30
|
"yargs": "^17.7.2"
|