@calltelemetry/cli 1.2.0 → 1.2.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/dist/lib/ipv6.d.ts +1 -1
- package/dist/lib/ipv6.d.ts.map +1 -1
- package/dist/lib/ipv6.js +39 -6
- package/dist/lib/ipv6.js.map +1 -1
- package/dist/lib/version.d.ts +1 -1
- package/dist/lib/version.js +1 -1
- package/package.json +1 -1
package/dist/lib/ipv6.d.ts
CHANGED
package/dist/lib/ipv6.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ipv6.d.ts","sourceRoot":"","sources":["../../src/lib/ipv6.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"ipv6.d.ts","sourceRoot":"","sources":["../../src/lib/ipv6.ts"],"names":[],"mappings":"AAwBA;;GAEG;AACH,wBAAgB,aAAa,IAAI,SAAS,GAAG,UAAU,GAAG,SAAS,CAKlE;AAmBD;;;GAGG;AACH,wBAAsB,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC,CAShD;AAED;;;GAGG;AACH,wBAAsB,WAAW,IAAI,OAAO,CAAC,IAAI,CAAC,CAMjD"}
|
package/dist/lib/ipv6.js
CHANGED
|
@@ -2,14 +2,44 @@ import { existsSync, readFileSync } from 'node:fs';
|
|
|
2
2
|
import { writeFileSafe } from './fs.js';
|
|
3
3
|
import { getPaths } from './paths.js';
|
|
4
4
|
/**
|
|
5
|
-
*
|
|
5
|
+
* The live EXTERNAL_IP binding is the only source of truth for IPv6 address
|
|
6
|
+
* mode. `enable_ipv6: true` only declares the Docker network dual-stack
|
|
7
|
+
* capable; treating it as address mode flips IPv4 appliances into a
|
|
8
|
+
* DEFAULT_IPV6 contract they never configured.
|
|
9
|
+
*
|
|
10
|
+
* Accepts every form the shell and native CLIs have written:
|
|
11
|
+
* EXTERNAL_IP=$DEFAULT_IPV6
|
|
12
|
+
* EXTERNAL_IP=${DEFAULT_IPV6}
|
|
13
|
+
* EXTERNAL_IP=${DEFAULT_IPV6:?DEFAULT_IPV6 must be set when IPv6 is enabled}
|
|
14
|
+
* EXTERNAL_IP: ${DEFAULT_IPV6}
|
|
15
|
+
*/
|
|
16
|
+
const IPV6_BINDING = /^[\t ]*(?:-[\t ]*)?['"]?EXTERNAL_IP['"]?[\t ]*(?:=|:)[\t ]*['"]?\$(?:DEFAULT_IPV6(?![\w])|\{DEFAULT_IPV6(?:[:}][^}]*)?\})/m;
|
|
17
|
+
const EXTERNAL_IP_ASSIGN = /^([\t ]*)(-[\t ]+)?['"]?EXTERNAL_IP=.*$/gm;
|
|
18
|
+
const EXTERNAL_IP_MAPPING = /^([\t ]*)['"]?EXTERNAL_IP['"]?[\t ]*:.*$/gm;
|
|
19
|
+
const ENABLE_IPV6_COMMENTED = /^([\t ]*)#[\t ]*enable_ipv6: true[\t ]*$/gm;
|
|
20
|
+
const ENABLE_IPV6_ACTIVE = /^[\t ]*enable_ipv6: true/m;
|
|
21
|
+
/**
|
|
22
|
+
* Check whether the installed compose graph selects IPv6 address mode.
|
|
6
23
|
*/
|
|
7
24
|
export function getIpv6Status() {
|
|
8
25
|
const { composeFile } = getPaths();
|
|
9
26
|
if (!existsSync(composeFile))
|
|
10
27
|
return 'unknown';
|
|
11
28
|
const content = readFileSync(composeFile, 'utf-8');
|
|
12
|
-
return
|
|
29
|
+
return IPV6_BINDING.test(content) ? 'enabled' : 'disabled';
|
|
30
|
+
}
|
|
31
|
+
function replaceExternalIP(content, family) {
|
|
32
|
+
// Idempotent: a file already in the requested family is not rewritten, so a
|
|
33
|
+
// repeated enable/disable does not churn the contract message.
|
|
34
|
+
if ((family === 'ipv6') === IPV6_BINDING.test(content)) {
|
|
35
|
+
return content;
|
|
36
|
+
}
|
|
37
|
+
const value = family === 'ipv6'
|
|
38
|
+
? '${DEFAULT_IPV6:?DEFAULT_IPV6 must be set when IPv6 is enabled}'
|
|
39
|
+
: '${EXTERNAL_IP:?EXTERNAL_IP must be set by ct network set-external-ip auto or ct network set-external-ip <ip>}';
|
|
40
|
+
return content
|
|
41
|
+
.replace(EXTERNAL_IP_ASSIGN, (_match, indent, dash) => dash ? `${indent}${dash}'EXTERNAL_IP=${value}'` : `${indent}EXTERNAL_IP=${value}`)
|
|
42
|
+
.replace(EXTERNAL_IP_MAPPING, (_match, indent) => `${indent}EXTERNAL_IP: '${value}'`);
|
|
13
43
|
}
|
|
14
44
|
/**
|
|
15
45
|
* Enable IPv6 dual-stack in docker-compose.yml.
|
|
@@ -18,8 +48,11 @@ export function getIpv6Status() {
|
|
|
18
48
|
export async function enableIpv6() {
|
|
19
49
|
const { composeFile } = getPaths();
|
|
20
50
|
let content = readFileSync(composeFile, 'utf-8');
|
|
21
|
-
content = content.replace(
|
|
22
|
-
|
|
51
|
+
content = content.replace(ENABLE_IPV6_COMMENTED, '$1enable_ipv6: true');
|
|
52
|
+
if (!ENABLE_IPV6_ACTIVE.test(content)) {
|
|
53
|
+
content = content.replace(/^([\t ]*)ct:[ \t]*$/m, '$1ct:\n$1 enable_ipv6: true');
|
|
54
|
+
}
|
|
55
|
+
content = replaceExternalIP(content, 'ipv6');
|
|
23
56
|
await writeFileSafe(composeFile, content);
|
|
24
57
|
}
|
|
25
58
|
/**
|
|
@@ -29,8 +62,8 @@ export async function enableIpv6() {
|
|
|
29
62
|
export async function disableIpv6() {
|
|
30
63
|
const { composeFile } = getPaths();
|
|
31
64
|
let content = readFileSync(composeFile, 'utf-8');
|
|
32
|
-
content = content.replace(
|
|
33
|
-
content = content
|
|
65
|
+
content = content.replace(/^[\t ]*enable_ipv6: true/gm, ' # enable_ipv6: true');
|
|
66
|
+
content = replaceExternalIP(content, 'ipv4');
|
|
34
67
|
await writeFileSafe(composeFile, content);
|
|
35
68
|
}
|
|
36
69
|
//# sourceMappingURL=ipv6.js.map
|
package/dist/lib/ipv6.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ipv6.js","sourceRoot":"","sources":["../../src/lib/ipv6.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACnD,OAAO,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AACxC,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAEtC;;GAEG;AACH,MAAM,UAAU,aAAa;IAC3B,MAAM,EAAE,WAAW,EAAE,GAAG,QAAQ,EAAE,CAAC;IACnC,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC;QAAE,OAAO,SAAS,CAAC;IAC/C,MAAM,OAAO,GAAG,YAAY,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;IACnD,OAAO,
|
|
1
|
+
{"version":3,"file":"ipv6.js","sourceRoot":"","sources":["../../src/lib/ipv6.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACnD,OAAO,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AACxC,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAEtC;;;;;;;;;;;GAWG;AACH,MAAM,YAAY,GAChB,4HAA4H,CAAC;AAE/H,MAAM,kBAAkB,GAAG,2CAA2C,CAAC;AACvE,MAAM,mBAAmB,GAAG,4CAA4C,CAAC;AACzE,MAAM,qBAAqB,GAAG,4CAA4C,CAAC;AAC3E,MAAM,kBAAkB,GAAG,2BAA2B,CAAC;AAEvD;;GAEG;AACH,MAAM,UAAU,aAAa;IAC3B,MAAM,EAAE,WAAW,EAAE,GAAG,QAAQ,EAAE,CAAC;IACnC,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC;QAAE,OAAO,SAAS,CAAC;IAC/C,MAAM,OAAO,GAAG,YAAY,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;IACnD,OAAO,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,UAAU,CAAC;AAC7D,CAAC;AAED,SAAS,iBAAiB,CAAC,OAAe,EAAE,MAAuB;IACjE,4EAA4E;IAC5E,+DAA+D;IAC/D,IAAI,CAAC,MAAM,KAAK,MAAM,CAAC,KAAK,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;QACvD,OAAO,OAAO,CAAC;IACjB,CAAC;IACD,MAAM,KAAK,GACT,MAAM,KAAK,MAAM;QACf,CAAC,CAAC,gEAAgE;QAClE,CAAC,CAAC,+GAA+G,CAAC;IACtH,OAAO,OAAO;SACX,OAAO,CAAC,kBAAkB,EAAE,CAAC,MAAM,EAAE,MAAc,EAAE,IAAwB,EAAE,EAAE,CAChF,IAAI,CAAC,CAAC,CAAC,GAAG,MAAM,GAAG,IAAI,gBAAgB,KAAK,GAAG,CAAC,CAAC,CAAC,GAAG,MAAM,eAAe,KAAK,EAAE,CAClF;SACA,OAAO,CAAC,mBAAmB,EAAE,CAAC,MAAM,EAAE,MAAc,EAAE,EAAE,CAAC,GAAG,MAAM,iBAAiB,KAAK,GAAG,CAAC,CAAC;AAClG,CAAC;AAED;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,UAAU;IAC9B,MAAM,EAAE,WAAW,EAAE,GAAG,QAAQ,EAAE,CAAC;IACnC,IAAI,OAAO,GAAG,YAAY,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;IACjD,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,qBAAqB,EAAE,qBAAqB,CAAC,CAAC;IACxE,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;QACtC,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,sBAAsB,EAAE,8BAA8B,CAAC,CAAC;IACpF,CAAC;IACD,OAAO,GAAG,iBAAiB,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;IAC7C,MAAM,aAAa,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;AAC5C,CAAC;AAED;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,WAAW;IAC/B,MAAM,EAAE,WAAW,EAAE,GAAG,QAAQ,EAAE,CAAC;IACnC,IAAI,OAAO,GAAG,YAAY,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;IACjD,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,4BAA4B,EAAE,yBAAyB,CAAC,CAAC;IACnF,OAAO,GAAG,iBAAiB,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;IAC7C,MAAM,aAAa,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;AAC5C,CAAC"}
|
package/dist/lib/version.d.ts
CHANGED
package/dist/lib/version.js
CHANGED