@serve.zone/dcrouter 11.2.56 → 11.3.0

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.
@@ -42727,4 +42727,4 @@ ibantools/jsnext/ibantools.js:
42727
42727
  * @preferred
42728
42728
  *)
42729
42729
  */
42730
- //# sourceMappingURL=bundle-1773792867655.js.map
42730
+ //# sourceMappingURL=bundle-1773850961925.js.map
@@ -3,7 +3,7 @@
3
3
  */
4
4
  export const commitinfo = {
5
5
  name: '@serve.zone/dcrouter',
6
- version: '11.2.56',
6
+ version: '11.3.0',
7
7
  description: 'A multifaceted routing service handling mail and SMS delivery functions.'
8
8
  };
9
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMDBfY29tbWl0aW5mb19kYXRhLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vdHMvMDBfY29tbWl0aW5mb19kYXRhLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sVUFBVSxHQUFHO0lBQ3hCLElBQUksRUFBRSxzQkFBc0I7SUFDNUIsT0FBTyxFQUFFLFNBQVM7SUFDbEIsV0FBVyxFQUFFLDBFQUEwRTtDQUN4RixDQUFBIn0=
9
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMDBfY29tbWl0aW5mb19kYXRhLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vdHMvMDBfY29tbWl0aW5mb19kYXRhLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sVUFBVSxHQUFHO0lBQ3hCLElBQUksRUFBRSxzQkFBc0I7SUFDNUIsT0FBTyxFQUFFLFFBQVE7SUFDakIsV0FBVyxFQUFFLDBFQUEwRTtDQUN4RixDQUFBIn0=
package/dist_ts/index.js CHANGED
@@ -2,10 +2,28 @@ export * from './00_commitinfo_data.js';
2
2
  // Re-export smartmta (excluding commitinfo to avoid naming conflict)
3
3
  export { UnifiedEmailServer } from '@push.rocks/smartmta';
4
4
  // DcRouter
5
+ import { DcRouter } from './classes.dcrouter.js';
5
6
  export * from './classes.dcrouter.js';
6
7
  // RADIUS module
7
8
  export * from './radius/index.js';
8
9
  // Remote Ingress module
9
10
  export * from './remoteingress/index.js';
10
- export const runCli = async () => { };
11
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi90cy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLHlCQUF5QixDQUFDO0FBRXhDLHFFQUFxRTtBQUNyRSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUcxRCxXQUFXO0FBQ1gsY0FBYyx1QkFBdUIsQ0FBQztBQUV0QyxnQkFBZ0I7QUFDaEIsY0FBYyxtQkFBbUIsQ0FBQztBQUVsQyx3QkFBd0I7QUFDeEIsY0FBYywwQkFBMEIsQ0FBQztBQUV6QyxNQUFNLENBQUMsTUFBTSxNQUFNLEdBQUcsS0FBSyxJQUFJLEVBQUUsR0FBRSxDQUFDLENBQUMifQ==
11
+ export const runCli = async () => {
12
+ let options = {};
13
+ if (process.env.DCROUTER_MODE === 'OCI_CONTAINER') {
14
+ const { getOciContainerConfig } = await import('../dist_ts_oci_container/index.js');
15
+ options = getOciContainerConfig();
16
+ console.log('[DCRouter] Starting in OCI Container mode...');
17
+ }
18
+ const dcRouter = new DcRouter(options);
19
+ await dcRouter.start();
20
+ console.log('[DCRouter] Running. Send SIGTERM or SIGINT to stop.');
21
+ const shutdown = async () => {
22
+ console.log('[DCRouter] Shutting down...');
23
+ await dcRouter.stop();
24
+ process.exit(0);
25
+ };
26
+ process.on('SIGINT', shutdown);
27
+ process.on('SIGTERM', shutdown);
28
+ };
29
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi90cy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLHlCQUF5QixDQUFDO0FBRXhDLHFFQUFxRTtBQUNyRSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUcxRCxXQUFXO0FBQ1gsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ2pELGNBQWMsdUJBQXVCLENBQUM7QUFFdEMsZ0JBQWdCO0FBQ2hCLGNBQWMsbUJBQW1CLENBQUM7QUFFbEMsd0JBQXdCO0FBQ3hCLGNBQWMsMEJBQTBCLENBQUM7QUFFekMsTUFBTSxDQUFDLE1BQU0sTUFBTSxHQUFHLEtBQUssSUFBSSxFQUFFO0lBQy9CLElBQUksT0FBTyxHQUFxRCxFQUFFLENBQUM7SUFFbkUsSUFBSSxPQUFPLENBQUMsR0FBRyxDQUFDLGFBQWEsS0FBSyxlQUFlLEVBQUUsQ0FBQztRQUNsRCxNQUFNLEVBQUUscUJBQXFCLEVBQUUsR0FBRyxNQUFNLE1BQU0sQ0FBQyw4QkFBOEIsQ0FBQyxDQUFDO1FBQy9FLE9BQU8sR0FBRyxxQkFBcUIsRUFBRSxDQUFDO1FBQ2xDLE9BQU8sQ0FBQyxHQUFHLENBQUMsOENBQThDLENBQUMsQ0FBQztJQUM5RCxDQUFDO0lBRUQsTUFBTSxRQUFRLEdBQUcsSUFBSSxRQUFRLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDdkMsTUFBTSxRQUFRLENBQUMsS0FBSyxFQUFFLENBQUM7SUFDdkIsT0FBTyxDQUFDLEdBQUcsQ0FBQyxxREFBcUQsQ0FBQyxDQUFDO0lBRW5FLE1BQU0sUUFBUSxHQUFHLEtBQUssSUFBSSxFQUFFO1FBQzFCLE9BQU8sQ0FBQyxHQUFHLENBQUMsNkJBQTZCLENBQUMsQ0FBQztRQUMzQyxNQUFNLFFBQVEsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUN0QixPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ2xCLENBQUMsQ0FBQztJQUNGLE9BQU8sQ0FBQyxFQUFFLENBQUMsUUFBUSxFQUFFLFFBQVEsQ0FBQyxDQUFDO0lBQy9CLE9BQU8sQ0FBQyxFQUFFLENBQUMsU0FBUyxFQUFFLFFBQVEsQ0FBQyxDQUFDO0FBQ2xDLENBQUMsQ0FBQyJ9
@@ -0,0 +1,8 @@
1
+ import type { IDcRouterOptions } from '../dist_ts/classes.dcrouter.js';
2
+ /**
3
+ * Builds IDcRouterOptions from environment variables for OCI container mode.
4
+ *
5
+ * If DCROUTER_CONFIG_PATH is set and the file exists, it is loaded as a JSON base config.
6
+ * Individual env vars are then applied as overrides on top.
7
+ */
8
+ export declare function getOciContainerConfig(): IDcRouterOptions;
@@ -0,0 +1,89 @@
1
+ import * as plugins from './plugins.js';
2
+ /**
3
+ * Parses a comma-separated env var into a string array.
4
+ * Returns undefined if the env var is not set or empty.
5
+ */
6
+ function parseCommaSeparated(envVar) {
7
+ if (!envVar || envVar.trim() === '')
8
+ return undefined;
9
+ return envVar.split(',').map((s) => s.trim()).filter(Boolean);
10
+ }
11
+ /**
12
+ * Parses a comma-separated env var into a number array.
13
+ * Returns undefined if the env var is not set or empty.
14
+ */
15
+ function parseCommaSeparatedNumbers(envVar) {
16
+ const parts = parseCommaSeparated(envVar);
17
+ if (!parts)
18
+ return undefined;
19
+ return parts.map((s) => parseInt(s, 10)).filter((n) => !isNaN(n));
20
+ }
21
+ /**
22
+ * Builds IDcRouterOptions from environment variables for OCI container mode.
23
+ *
24
+ * If DCROUTER_CONFIG_PATH is set and the file exists, it is loaded as a JSON base config.
25
+ * Individual env vars are then applied as overrides on top.
26
+ */
27
+ export function getOciContainerConfig() {
28
+ let options = {};
29
+ // Load JSON config file if specified
30
+ const configPath = process.env.DCROUTER_CONFIG_PATH;
31
+ if (configPath && plugins.fs.existsSync(configPath)) {
32
+ const raw = plugins.fs.readFileSync(configPath, 'utf8');
33
+ options = JSON.parse(raw);
34
+ console.log(`[OCI Container] Loaded config from ${configPath}`);
35
+ }
36
+ // Apply env var overrides
37
+ if (process.env.DCROUTER_BASE_DIR) {
38
+ options.baseDir = process.env.DCROUTER_BASE_DIR;
39
+ }
40
+ // TLS config
41
+ const tlsEmail = process.env.DCROUTER_TLS_EMAIL;
42
+ const tlsDomain = process.env.DCROUTER_TLS_DOMAIN;
43
+ if (tlsEmail || tlsDomain) {
44
+ options.tls = {
45
+ ...options.tls,
46
+ contactEmail: tlsEmail || options.tls?.contactEmail || '',
47
+ ...(tlsDomain ? { domain: tlsDomain } : {}),
48
+ };
49
+ }
50
+ // Network config
51
+ if (process.env.DCROUTER_PUBLIC_IP) {
52
+ options.publicIp = process.env.DCROUTER_PUBLIC_IP;
53
+ }
54
+ const proxyIps = parseCommaSeparated(process.env.DCROUTER_PROXY_IPS);
55
+ if (proxyIps) {
56
+ options.proxyIps = proxyIps;
57
+ }
58
+ // DNS config
59
+ const nsDomains = parseCommaSeparated(process.env.DCROUTER_DNS_NS_DOMAINS);
60
+ if (nsDomains) {
61
+ options.dnsNsDomains = nsDomains;
62
+ }
63
+ const dnsScopes = parseCommaSeparated(process.env.DCROUTER_DNS_SCOPES);
64
+ if (dnsScopes) {
65
+ options.dnsScopes = dnsScopes;
66
+ }
67
+ // Email config
68
+ const emailHostname = process.env.DCROUTER_EMAIL_HOSTNAME;
69
+ const emailPorts = parseCommaSeparatedNumbers(process.env.DCROUTER_EMAIL_PORTS);
70
+ if (emailHostname || emailPorts) {
71
+ options.emailConfig = {
72
+ ...options.emailConfig,
73
+ ...(emailHostname ? { hostname: emailHostname } : {}),
74
+ ...(emailPorts ? { ports: emailPorts } : {}),
75
+ domains: options.emailConfig?.domains || [],
76
+ routes: options.emailConfig?.routes || [],
77
+ };
78
+ }
79
+ // Cache config
80
+ const cacheEnabled = process.env.DCROUTER_CACHE_ENABLED;
81
+ if (cacheEnabled !== undefined) {
82
+ options.cacheConfig = {
83
+ ...options.cacheConfig,
84
+ enabled: cacheEnabled === 'true',
85
+ };
86
+ }
87
+ return options;
88
+ }
89
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi90c19vY2lfY29udGFpbmVyL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sS0FBSyxPQUFPLE1BQU0sY0FBYyxDQUFDO0FBR3hDOzs7R0FHRztBQUNILFNBQVMsbUJBQW1CLENBQUMsTUFBMEI7SUFDckQsSUFBSSxDQUFDLE1BQU0sSUFBSSxNQUFNLENBQUMsSUFBSSxFQUFFLEtBQUssRUFBRTtRQUFFLE9BQU8sU0FBUyxDQUFDO0lBQ3RELE9BQU8sTUFBTSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQztBQUNoRSxDQUFDO0FBRUQ7OztHQUdHO0FBQ0gsU0FBUywwQkFBMEIsQ0FBQyxNQUEwQjtJQUM1RCxNQUFNLEtBQUssR0FBRyxtQkFBbUIsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUMxQyxJQUFJLENBQUMsS0FBSztRQUFFLE9BQU8sU0FBUyxDQUFDO0lBQzdCLE9BQU8sS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsUUFBUSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNwRSxDQUFDO0FBRUQ7Ozs7O0dBS0c7QUFDSCxNQUFNLFVBQVUscUJBQXFCO0lBQ25DLElBQUksT0FBTyxHQUFxQixFQUFFLENBQUM7SUFFbkMscUNBQXFDO0lBQ3JDLE1BQU0sVUFBVSxHQUFHLE9BQU8sQ0FBQyxHQUFHLENBQUMsb0JBQW9CLENBQUM7SUFDcEQsSUFBSSxVQUFVLElBQUksT0FBTyxDQUFDLEVBQUUsQ0FBQyxVQUFV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
@@ -0,0 +1,3 @@
1
+ import * as fs from 'fs';
2
+ import * as path from 'path';
3
+ export { fs, path, };
@@ -0,0 +1,4 @@
1
+ import * as fs from 'fs';
2
+ import * as path from 'path';
3
+ export { fs, path, };
4
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGx1Z2lucy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3RzX29jaV9jb250YWluZXIvcGx1Z2lucy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEtBQUssRUFBRSxNQUFNLElBQUksQ0FBQztBQUN6QixPQUFPLEtBQUssSUFBSSxNQUFNLE1BQU0sQ0FBQztBQUU3QixPQUFPLEVBQ0wsRUFBRSxFQUNGLElBQUksR0FDTCxDQUFDIn0=
@@ -3,7 +3,7 @@
3
3
  */
4
4
  export const commitinfo = {
5
5
  name: '@serve.zone/dcrouter',
6
- version: '11.2.56',
6
+ version: '11.3.0',
7
7
  description: 'A multifaceted routing service handling mail and SMS delivery functions.'
8
8
  };
9
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMDBfY29tbWl0aW5mb19kYXRhLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vdHNfd2ViLzAwX2NvbW1pdGluZm9fZGF0YS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUNILE1BQU0sQ0FBQyxNQUFNLFVBQVUsR0FBRztJQUN4QixJQUFJLEVBQUUsc0JBQXNCO0lBQzVCLE9BQU8sRUFBRSxTQUFTO0lBQ2xCLFdBQVcsRUFBRSwwRUFBMEU7Q0FDeEYsQ0FBQSJ9
9
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMDBfY29tbWl0aW5mb19kYXRhLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vdHNfd2ViLzAwX2NvbW1pdGluZm9fZGF0YS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUNILE1BQU0sQ0FBQyxNQUFNLFVBQVUsR0FBRztJQUN4QixJQUFJLEVBQUUsc0JBQXNCO0lBQzVCLE9BQU8sRUFBRSxRQUFRO0lBQ2pCLFdBQVcsRUFBRSwwRUFBMEU7Q0FDeEYsQ0FBQSJ9
package/npmextra.json CHANGED
@@ -72,9 +72,14 @@
72
72
  "dockerRegistryRepoMap": {
73
73
  "registry.gitlab.com": "code.foss.global/serve.zone/dcrouter"
74
74
  },
75
- "dockerBuildargEnvMap": {
76
- "NPMCI_TOKEN_NPM2": "NPMCI_TOKEN_NPM2"
77
- },
78
75
  "npmRegistryUrl": "verdaccio.lossless.digital"
76
+ },
77
+ "@git.zone/tsdocker": {
78
+ "registries": ["code.foss.global"],
79
+ "registryRepoMap": {
80
+ "code.foss.global": "serve.zone/dcrouter",
81
+ "dockerregistry.lossless.digital": "serve.zone/dcrouter"
82
+ },
83
+ "platforms": ["linux/amd64", "linux/arm64"]
79
84
  }
80
85
  }
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@serve.zone/dcrouter",
3
3
  "private": false,
4
- "version": "11.2.56",
4
+ "version": "11.3.0",
5
5
  "description": "A multifaceted routing service handling mail and SMS delivery functions.",
6
6
  "type": "module",
7
7
  "exports": {
@@ -16,6 +16,8 @@
16
16
  "start": "(node --max_old_space_size=250 ./cli.js)",
17
17
  "startTs": "(node cli.ts.js)",
18
18
  "build": "(tsbuild tsfolders --allowimplicitany && npm run bundle)",
19
+ "build:docker": "tsdocker build",
20
+ "release:docker": "tsdocker push",
19
21
  "bundle": "(tsbundle)",
20
22
  "watch": "tswatch"
21
23
  },
@@ -3,6 +3,6 @@
3
3
  */
4
4
  export const commitinfo = {
5
5
  name: '@serve.zone/dcrouter',
6
- version: '11.2.56',
6
+ version: '11.3.0',
7
7
  description: 'A multifaceted routing service handling mail and SMS delivery functions.'
8
8
  }
package/ts/index.ts CHANGED
@@ -5,6 +5,7 @@ export { UnifiedEmailServer } from '@push.rocks/smartmta';
5
5
  export type { IUnifiedEmailServerOptions, IEmailRoute, IEmailDomainConfig } from '@push.rocks/smartmta';
6
6
 
7
7
  // DcRouter
8
+ import { DcRouter } from './classes.dcrouter.js';
8
9
  export * from './classes.dcrouter.js';
9
10
 
10
11
  // RADIUS module
@@ -13,4 +14,24 @@ export * from './radius/index.js';
13
14
  // Remote Ingress module
14
15
  export * from './remoteingress/index.js';
15
16
 
16
- export const runCli = async () => {};
17
+ export const runCli = async () => {
18
+ let options: import('./classes.dcrouter.js').IDcRouterOptions = {};
19
+
20
+ if (process.env.DCROUTER_MODE === 'OCI_CONTAINER') {
21
+ const { getOciContainerConfig } = await import('../ts_oci_container/index.js');
22
+ options = getOciContainerConfig();
23
+ console.log('[DCRouter] Starting in OCI Container mode...');
24
+ }
25
+
26
+ const dcRouter = new DcRouter(options);
27
+ await dcRouter.start();
28
+ console.log('[DCRouter] Running. Send SIGTERM or SIGINT to stop.');
29
+
30
+ const shutdown = async () => {
31
+ console.log('[DCRouter] Shutting down...');
32
+ await dcRouter.stop();
33
+ process.exit(0);
34
+ };
35
+ process.on('SIGINT', shutdown);
36
+ process.on('SIGTERM', shutdown);
37
+ };
@@ -3,6 +3,6 @@
3
3
  */
4
4
  export const commitinfo = {
5
5
  name: '@serve.zone/dcrouter',
6
- version: '11.2.56',
6
+ version: '11.3.0',
7
7
  description: 'A multifaceted routing service handling mail and SMS delivery functions.'
8
8
  }