@serve.zone/dcrouter 11.0.50 → 11.2.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.
Files changed (48) hide show
  1. package/dist_serve/bundle.js +1 -1
  2. package/dist_serve/index.html +121 -0
  3. package/dist_ts/00_commitinfo_data.js +2 -2
  4. package/dist_ts_apiclient/classes.apitoken.d.ts +41 -0
  5. package/dist_ts_apiclient/classes.apitoken.js +115 -0
  6. package/dist_ts_apiclient/classes.certificate.d.ts +57 -0
  7. package/dist_ts_apiclient/classes.certificate.js +69 -0
  8. package/dist_ts_apiclient/classes.config.d.ts +7 -0
  9. package/dist_ts_apiclient/classes.config.js +11 -0
  10. package/dist_ts_apiclient/classes.dcrouterapiclient.d.ts +41 -0
  11. package/dist_ts_apiclient/classes.dcrouterapiclient.js +81 -0
  12. package/dist_ts_apiclient/classes.email.d.ts +30 -0
  13. package/dist_ts_apiclient/classes.email.js +52 -0
  14. package/dist_ts_apiclient/classes.logs.d.ts +21 -0
  15. package/dist_ts_apiclient/classes.logs.js +14 -0
  16. package/dist_ts_apiclient/classes.radius.d.ts +59 -0
  17. package/dist_ts_apiclient/classes.radius.js +95 -0
  18. package/dist_ts_apiclient/classes.remoteingress.d.ts +54 -0
  19. package/dist_ts_apiclient/classes.remoteingress.js +136 -0
  20. package/dist_ts_apiclient/classes.route.d.ts +42 -0
  21. package/dist_ts_apiclient/classes.route.js +154 -0
  22. package/dist_ts_apiclient/classes.stats.d.ts +47 -0
  23. package/dist_ts_apiclient/classes.stats.js +38 -0
  24. package/dist_ts_apiclient/index.d.ts +10 -0
  25. package/dist_ts_apiclient/index.js +14 -0
  26. package/dist_ts_apiclient/plugins.d.ts +3 -0
  27. package/dist_ts_apiclient/plugins.js +5 -0
  28. package/dist_ts_web/00_commitinfo_data.js +2 -2
  29. package/npmextra.json +2 -1
  30. package/package.json +8 -5
  31. package/readme.md +103 -7
  32. package/ts/00_commitinfo_data.ts +1 -1
  33. package/ts_apiclient/classes.apitoken.ts +157 -0
  34. package/ts_apiclient/classes.certificate.ts +123 -0
  35. package/ts_apiclient/classes.config.ts +17 -0
  36. package/ts_apiclient/classes.dcrouterapiclient.ts +112 -0
  37. package/ts_apiclient/classes.email.ts +77 -0
  38. package/ts_apiclient/classes.logs.ts +37 -0
  39. package/ts_apiclient/classes.radius.ts +180 -0
  40. package/ts_apiclient/classes.remoteingress.ts +185 -0
  41. package/ts_apiclient/classes.route.ts +203 -0
  42. package/ts_apiclient/classes.stats.ts +111 -0
  43. package/ts_apiclient/index.ts +15 -0
  44. package/ts_apiclient/plugins.ts +8 -0
  45. package/ts_apiclient/readme.md +279 -0
  46. package/ts_apiclient/tspublish.json +3 -0
  47. package/ts_web/00_commitinfo_data.ts +1 -1
  48. package/ts_web/readme.md +7 -0
@@ -39328,4 +39328,4 @@ ibantools/jsnext/ibantools.js:
39328
39328
  * @preferred
39329
39329
  *)
39330
39330
  */
39331
- //# sourceMappingURL=bundle-1772726478547.js.map
39331
+ //# sourceMappingURL=bundle-1772784089034.js.map
@@ -0,0 +1,121 @@
1
+ <!--gitzone default-->
2
+ <!-- made by Lossless GmbH -->
3
+ <!-- checkout https://maintainedby.lossless.com for awesome OpenSource projects -->
4
+ <!DOCTYPE html>
5
+ <html lang="en">
6
+ <head>
7
+ <!--Lets set some basic meta tags-->
8
+ <meta
9
+ name="viewport"
10
+ content="user-scalable=0, initial-scale=1, maximum-scale=1, minimum-scale=1, width=device-width, height=device-height"
11
+ />
12
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
13
+ <meta name="theme-color" content="#000000" />
14
+
15
+ <!--Lets make sure we recognize this as an PWA-->
16
+ <link rel="manifest" href="/manifest.json" />
17
+ <link rel="icon" type="image/png" href="/assetbroker/manifest/favicon.png" />
18
+
19
+ <!--Lets load standard fonts-->
20
+ <link rel="preconnect" href="https://assetbroker.lossless.one/" crossorigin>
21
+ <link rel="stylesheet" href="https://assetbroker.lossless.one/fonts/fonts.css">
22
+
23
+
24
+ <!--Lets avoid a rescaling flicker due to default body margins-->
25
+ <style>
26
+ html {
27
+ -ms-text-size-adjust: 100%;
28
+ -webkit-text-size-adjust: 100%;
29
+ }
30
+ body {
31
+ position: relative;
32
+ background: #000;
33
+ margin: 0px;
34
+ }
35
+ </style>
36
+ <script>
37
+ projectVersion = '';
38
+ </script>
39
+ </head>
40
+ <body>
41
+ <noscript>
42
+ <style>
43
+ body {
44
+ background: #303f9f;
45
+ font-family: Inter, Roboto, sans-serif;
46
+ color: #ffffff;
47
+ }
48
+
49
+ a {
50
+ color: #ffffff;
51
+ text-decoration: none;
52
+ }
53
+
54
+ .logo {
55
+ margin-top: 100px;
56
+ text-align: center;
57
+ }
58
+
59
+ img {
60
+ width: 130px;
61
+ }
62
+
63
+ .container {
64
+ width: 600px;
65
+ margin: auto;
66
+ margin-top: 20px;
67
+ box-shadow: 0px 0px 5px rgba(0, 0, 0, 0.3);
68
+ overflow: hidden;
69
+ border-radius: 3px;
70
+ background: #4357d9;
71
+ }
72
+ .contentHeader {
73
+ padding: 20px;
74
+ text-align: center;
75
+ font-size: 25px;
76
+ border-bottom: 1px solid rgba(255, 255, 255, 0.1);
77
+ }
78
+ .content {
79
+ padding: 20px;
80
+ }
81
+ .footer {
82
+ padding: 10px;
83
+ text-align: center;
84
+ }
85
+ </style>
86
+ <div class="logo">
87
+ <img src="https://assetbroker.lossless.one/brandfiles/lossless/svg-minimal-bright.svg" />
88
+ </div>
89
+ <div class="container">
90
+ <div class="contentHeader">We need JavaScript to run properly!</div>
91
+ <div class="content">
92
+ This site is being built using lit-element (made by Google). This technology works with
93
+ JavaScript. Subsequently this website does not work as intended by Lossless GmbH without
94
+ JavaScript.
95
+ </div>
96
+ </div>
97
+ <div class="footer">
98
+ <a href="https://lossless.gmbh">Legal Info</a> |
99
+ <a href="https://lossless.gmbh/privacy">Privacy Policy</a>
100
+ </div>
101
+ </noscript>
102
+ <script type="text/javascript" async defer>
103
+ window.revenueEnabled = true;
104
+ const runRevenueCheck = async () => {
105
+ var e = document.createElement('div');
106
+ e.id = '476kjuhzgtr764';
107
+ e.style.display = 'none';
108
+ document.body.appendChild(e);
109
+ if (document.getElementById('476kjuhzgtr764')) {
110
+ window.revenueEnabled = true;
111
+ } else {
112
+ window.revenueEnabled = false;
113
+ }
114
+ console.log(`revenue enabled: ${window.revenueEnabled}`);
115
+ };
116
+
117
+ runRevenueCheck();
118
+ </script>
119
+ </body>
120
+ <script defer type="module" src="/bundle.js"></script>
121
+ </html>
@@ -3,7 +3,7 @@
3
3
  */
4
4
  export const commitinfo = {
5
5
  name: '@serve.zone/dcrouter',
6
- version: '11.0.50',
6
+ version: '11.2.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=
@@ -0,0 +1,41 @@
1
+ import * as interfaces from '../dist_ts_interfaces/index.js';
2
+ import type { DcRouterApiClient } from './classes.dcrouterapiclient.js';
3
+ export declare class ApiToken {
4
+ private clientRef;
5
+ id: string;
6
+ name: string;
7
+ scopes: interfaces.data.TApiTokenScope[];
8
+ createdAt: number;
9
+ expiresAt: number | null;
10
+ lastUsedAt: number | null;
11
+ enabled: boolean;
12
+ /** Only set on creation or roll. Not persisted on server side. */
13
+ tokenValue?: string;
14
+ constructor(clientRef: DcRouterApiClient, data: interfaces.data.IApiTokenInfo, tokenValue?: string);
15
+ revoke(): Promise<void>;
16
+ roll(): Promise<string>;
17
+ toggle(enabled: boolean): Promise<void>;
18
+ }
19
+ export declare class ApiTokenBuilder {
20
+ private clientRef;
21
+ private tokenName;
22
+ private tokenScopes;
23
+ private tokenExpiresInDays?;
24
+ constructor(clientRef: DcRouterApiClient);
25
+ setName(name: string): this;
26
+ setScopes(scopes: interfaces.data.TApiTokenScope[]): this;
27
+ addScope(scope: interfaces.data.TApiTokenScope): this;
28
+ setExpiresInDays(days: number | null): this;
29
+ save(): Promise<ApiToken>;
30
+ }
31
+ export declare class ApiTokenManager {
32
+ private clientRef;
33
+ constructor(clientRef: DcRouterApiClient);
34
+ list(): Promise<ApiToken[]>;
35
+ create(options: {
36
+ name: string;
37
+ scopes: interfaces.data.TApiTokenScope[];
38
+ expiresInDays?: number | null;
39
+ }): Promise<ApiToken>;
40
+ build(): ApiTokenBuilder;
41
+ }
@@ -0,0 +1,115 @@
1
+ import * as interfaces from '../dist_ts_interfaces/index.js';
2
+ export class ApiToken {
3
+ clientRef;
4
+ // Data from IApiTokenInfo
5
+ id;
6
+ name;
7
+ scopes;
8
+ createdAt;
9
+ expiresAt;
10
+ lastUsedAt;
11
+ enabled;
12
+ /** Only set on creation or roll. Not persisted on server side. */
13
+ tokenValue;
14
+ constructor(clientRef, data, tokenValue) {
15
+ this.clientRef = clientRef;
16
+ this.id = data.id;
17
+ this.name = data.name;
18
+ this.scopes = data.scopes;
19
+ this.createdAt = data.createdAt;
20
+ this.expiresAt = data.expiresAt;
21
+ this.lastUsedAt = data.lastUsedAt;
22
+ this.enabled = data.enabled;
23
+ this.tokenValue = tokenValue;
24
+ }
25
+ async revoke() {
26
+ const response = await this.clientRef.request('revokeApiToken', this.clientRef.buildRequestPayload({ id: this.id }));
27
+ if (!response.success) {
28
+ throw new Error(response.message || 'Failed to revoke token');
29
+ }
30
+ }
31
+ async roll() {
32
+ const response = await this.clientRef.request('rollApiToken', this.clientRef.buildRequestPayload({ id: this.id }));
33
+ if (!response.success) {
34
+ throw new Error(response.message || 'Failed to roll token');
35
+ }
36
+ this.tokenValue = response.tokenValue;
37
+ return response.tokenValue;
38
+ }
39
+ async toggle(enabled) {
40
+ const response = await this.clientRef.request('toggleApiToken', this.clientRef.buildRequestPayload({ id: this.id, enabled }));
41
+ if (!response.success) {
42
+ throw new Error(response.message || 'Failed to toggle token');
43
+ }
44
+ this.enabled = enabled;
45
+ }
46
+ }
47
+ export class ApiTokenBuilder {
48
+ clientRef;
49
+ tokenName = '';
50
+ tokenScopes = [];
51
+ tokenExpiresInDays;
52
+ constructor(clientRef) {
53
+ this.clientRef = clientRef;
54
+ }
55
+ setName(name) {
56
+ this.tokenName = name;
57
+ return this;
58
+ }
59
+ setScopes(scopes) {
60
+ this.tokenScopes = scopes;
61
+ return this;
62
+ }
63
+ addScope(scope) {
64
+ if (!this.tokenScopes.includes(scope)) {
65
+ this.tokenScopes.push(scope);
66
+ }
67
+ return this;
68
+ }
69
+ setExpiresInDays(days) {
70
+ this.tokenExpiresInDays = days;
71
+ return this;
72
+ }
73
+ async save() {
74
+ const response = await this.clientRef.request('createApiToken', this.clientRef.buildRequestPayload({
75
+ name: this.tokenName,
76
+ scopes: this.tokenScopes,
77
+ expiresInDays: this.tokenExpiresInDays,
78
+ }));
79
+ if (!response.success) {
80
+ throw new Error(response.message || 'Failed to create API token');
81
+ }
82
+ return new ApiToken(this.clientRef, {
83
+ id: response.tokenId,
84
+ name: this.tokenName,
85
+ scopes: this.tokenScopes,
86
+ createdAt: Date.now(),
87
+ expiresAt: this.tokenExpiresInDays
88
+ ? Date.now() + this.tokenExpiresInDays * 24 * 60 * 60 * 1000
89
+ : null,
90
+ lastUsedAt: null,
91
+ enabled: true,
92
+ }, response.tokenValue);
93
+ }
94
+ }
95
+ export class ApiTokenManager {
96
+ clientRef;
97
+ constructor(clientRef) {
98
+ this.clientRef = clientRef;
99
+ }
100
+ async list() {
101
+ const response = await this.clientRef.request('listApiTokens', this.clientRef.buildRequestPayload());
102
+ return response.tokens.map((t) => new ApiToken(this.clientRef, t));
103
+ }
104
+ async create(options) {
105
+ return this.build()
106
+ .setName(options.name)
107
+ .setScopes(options.scopes)
108
+ .setExpiresInDays(options.expiresInDays ?? null)
109
+ .save();
110
+ }
111
+ build() {
112
+ return new ApiTokenBuilder(this.clientRef);
113
+ }
114
+ }
115
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xhc3Nlcy5hcGl0b2tlbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3RzX2FwaWNsaWVudC9jbGFzc2VzLmFwaXRva2VuLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sS0FBSyxVQUFVLE1BQU0sMkJBQTJCLENBQUM7QUFHeEQsTUFBTSxPQUFPLFFBQVE7SUFDWCxTQUFTLENBQW9CO0lBRXJDLDBCQUEwQjtJQUNuQixFQUFFLENBQVM7SUFDWCxJQUFJLENBQVM7SUFDYixNQUFNLENBQW1DO0lBQ3pDLFNBQVMsQ0FBUztJQUNsQixTQUFTLENBQWdCO0lBQ3pCLFVBQVUsQ0FBZ0I7SUFDMUIsT0FBTyxDQUFVO0lBRXhCLGtFQUFrRTtJQUMzRCxVQUFVLENBQVU7SUFFM0IsWUFBWSxTQUE0QixFQUFFLElBQW1DLEVBQUUsVUFBbUI7UUFDaEcsSUFBSSxDQUFDLFNBQVMsR0FBRyxTQUFTLENBQUM7UUFDM0IsSUFBSSxDQUFDLEVBQUUsR0FBRyxJQUFJLENBQUMsRUFBRSxDQUFDO1FBQ2xCLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQztRQUN0QixJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUM7UUFDMUIsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDO1FBQ2hDLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQztRQUNoQyxJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUM7UUFDbEMsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDO1FBQzVCLElBQUksQ0FBQyxVQUFVLEdBQUcsVUFBVSxDQUFDO0lBQy9CLENBQUM7SUFFTSxLQUFLLENBQUMsTUFBTTtRQUNqQixNQUFNLFFBQVEsR0FBRyxNQUFNLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUMzQyxnQkFBZ0IsRUFDaEIsSUFB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
@@ -0,0 +1,57 @@
1
+ import * as interfaces from '../dist_ts_interfaces/index.js';
2
+ import type { DcRouterApiClient } from './classes.dcrouterapiclient.js';
3
+ export declare class Certificate {
4
+ private clientRef;
5
+ domain: string;
6
+ routeNames: string[];
7
+ status: interfaces.requests.TCertificateStatus;
8
+ source: interfaces.requests.TCertificateSource;
9
+ tlsMode: 'terminate' | 'terminate-and-reencrypt' | 'passthrough';
10
+ expiryDate?: string;
11
+ issuer?: string;
12
+ issuedAt?: string;
13
+ error?: string;
14
+ canReprovision: boolean;
15
+ backoffInfo?: {
16
+ failures: number;
17
+ retryAfter?: string;
18
+ lastError?: string;
19
+ };
20
+ constructor(clientRef: DcRouterApiClient, data: interfaces.requests.ICertificateInfo);
21
+ reprovision(): Promise<void>;
22
+ delete(): Promise<void>;
23
+ export(): Promise<{
24
+ id: string;
25
+ domainName: string;
26
+ created: number;
27
+ validUntil: number;
28
+ privateKey: string;
29
+ publicKey: string;
30
+ csr: string;
31
+ } | undefined>;
32
+ }
33
+ export interface ICertificateSummary {
34
+ total: number;
35
+ valid: number;
36
+ expiring: number;
37
+ expired: number;
38
+ failed: number;
39
+ unknown: number;
40
+ }
41
+ export declare class CertificateManager {
42
+ private clientRef;
43
+ constructor(clientRef: DcRouterApiClient);
44
+ list(): Promise<{
45
+ certificates: Certificate[];
46
+ summary: ICertificateSummary;
47
+ }>;
48
+ import(cert: {
49
+ id: string;
50
+ domainName: string;
51
+ created: number;
52
+ validUntil: number;
53
+ privateKey: string;
54
+ publicKey: string;
55
+ csr: string;
56
+ }): Promise<void>;
57
+ }
@@ -0,0 +1,69 @@
1
+ import * as interfaces from '../dist_ts_interfaces/index.js';
2
+ export class Certificate {
3
+ clientRef;
4
+ // Data from ICertificateInfo
5
+ domain;
6
+ routeNames;
7
+ status;
8
+ source;
9
+ tlsMode;
10
+ expiryDate;
11
+ issuer;
12
+ issuedAt;
13
+ error;
14
+ canReprovision;
15
+ backoffInfo;
16
+ constructor(clientRef, data) {
17
+ this.clientRef = clientRef;
18
+ this.domain = data.domain;
19
+ this.routeNames = data.routeNames;
20
+ this.status = data.status;
21
+ this.source = data.source;
22
+ this.tlsMode = data.tlsMode;
23
+ this.expiryDate = data.expiryDate;
24
+ this.issuer = data.issuer;
25
+ this.issuedAt = data.issuedAt;
26
+ this.error = data.error;
27
+ this.canReprovision = data.canReprovision;
28
+ this.backoffInfo = data.backoffInfo;
29
+ }
30
+ async reprovision() {
31
+ const response = await this.clientRef.request('reprovisionCertificateDomain', this.clientRef.buildRequestPayload({ domain: this.domain }));
32
+ if (!response.success) {
33
+ throw new Error(response.message || 'Failed to reprovision certificate');
34
+ }
35
+ }
36
+ async delete() {
37
+ const response = await this.clientRef.request('deleteCertificate', this.clientRef.buildRequestPayload({ domain: this.domain }));
38
+ if (!response.success) {
39
+ throw new Error(response.message || 'Failed to delete certificate');
40
+ }
41
+ }
42
+ async export() {
43
+ const response = await this.clientRef.request('exportCertificate', this.clientRef.buildRequestPayload({ domain: this.domain }));
44
+ if (!response.success) {
45
+ throw new Error(response.message || 'Failed to export certificate');
46
+ }
47
+ return response.cert;
48
+ }
49
+ }
50
+ export class CertificateManager {
51
+ clientRef;
52
+ constructor(clientRef) {
53
+ this.clientRef = clientRef;
54
+ }
55
+ async list() {
56
+ const response = await this.clientRef.request('getCertificateOverview', this.clientRef.buildRequestPayload());
57
+ return {
58
+ certificates: response.certificates.map((c) => new Certificate(this.clientRef, c)),
59
+ summary: response.summary,
60
+ };
61
+ }
62
+ async import(cert) {
63
+ const response = await this.clientRef.request('importCertificate', this.clientRef.buildRequestPayload({ cert }));
64
+ if (!response.success) {
65
+ throw new Error(response.message || 'Failed to import certificate');
66
+ }
67
+ }
68
+ }
69
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xhc3Nlcy5jZXJ0aWZpY2F0ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3RzX2FwaWNsaWVudC9jbGFzc2VzLmNlcnRpZmljYXRlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sS0FBSyxVQUFVLE1BQU0sMkJBQTJCLENBQUM7QUFHeEQsTUFBTSxPQUFPLFdBQVc7SUFDZCxTQUFTLENBQW9CO0lBRXJDLDZCQUE2QjtJQUN0QixNQUFNLENBQVM7SUFDZixVQUFVLENBQVc7SUFDckIsTUFBTSxDQUF5QztJQUMvQyxNQUFNLENBQXlDO0lBQy9DLE9BQU8sQ0FBMEQ7SUFDakUsVUFBVSxDQUFVO0lBQ3BCLE1BQU0sQ0FBVTtJQUNoQixRQUFRLENBQVU7SUFDbEIsS0FBSyxDQUFVO0lBQ2YsY0FBYyxDQUFVO0lBQ3hCLFdBQVcsQ0FJaEI7SUFFRixZQUFZLFNBQTRCLEVBQUUsSUFBMEM7UUFDbEYsSUFBSSxDQUFDLFNBQVMsR0FBRyxTQUFTLENBQUM7UUFDM0IsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDO1FBQzFCLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQztRQUNsQyxJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUM7UUFDMUIsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDO1FBQzFCLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQztRQUM1QixJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUM7UUFDbEMsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDO1FBQzFCLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQztRQUM5QixJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUM7UUFDeEIsSUFBSSxDQUFDLGNB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
@@ -0,0 +1,7 @@
1
+ import * as interfaces from '../dist_ts_interfaces/index.js';
2
+ import type { DcRouterApiClient } from './classes.dcrouterapiclient.js';
3
+ export declare class ConfigManager {
4
+ private clientRef;
5
+ constructor(clientRef: DcRouterApiClient);
6
+ get(section?: string): Promise<interfaces.requests.IReq_GetConfiguration['response']>;
7
+ }
@@ -0,0 +1,11 @@
1
+ import * as interfaces from '../dist_ts_interfaces/index.js';
2
+ export class ConfigManager {
3
+ clientRef;
4
+ constructor(clientRef) {
5
+ this.clientRef = clientRef;
6
+ }
7
+ async get(section) {
8
+ return this.clientRef.request('getConfiguration', this.clientRef.buildRequestPayload({ section }));
9
+ }
10
+ }
11
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xhc3Nlcy5jb25maWcuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi90c19hcGljbGllbnQvY2xhc3Nlcy5jb25maWcudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxLQUFLLFVBQVUsTUFBTSwyQkFBMkIsQ0FBQztBQUd4RCxNQUFNLE9BQU8sYUFBYTtJQUNoQixTQUFTLENBQW9CO0lBRXJDLFlBQVksU0FBNEI7UUFDdEMsSUFBSSxDQUFDLFNBQVMsR0FBRyxTQUFTLENBQUM7SUFDN0IsQ0FBQztJQUVNLEtBQUssQ0FBQyxHQUFHLENBQUMsT0FBZ0I7UUFDL0IsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FDM0Isa0JBQWtCLEVBQ2xCLElBQUksQ0FBQyxTQUFTLENBQUMsbUJBQW1CLENBQUMsRUFBRSxPQUFPLEVBQUUsQ0FBUSxDQUN2RCxDQUFDO0lBQ0osQ0FBQztDQUNGIn0=
@@ -0,0 +1,41 @@
1
+ import * as plugins from './plugins.js';
2
+ import * as interfaces from '../dist_ts_interfaces/index.js';
3
+ import { RouteManager } from './classes.route.js';
4
+ import { CertificateManager } from './classes.certificate.js';
5
+ import { ApiTokenManager } from './classes.apitoken.js';
6
+ import { RemoteIngressManager } from './classes.remoteingress.js';
7
+ import { StatsManager } from './classes.stats.js';
8
+ import { ConfigManager } from './classes.config.js';
9
+ import { LogManager } from './classes.logs.js';
10
+ import { EmailManager } from './classes.email.js';
11
+ import { RadiusManager } from './classes.radius.js';
12
+ export interface IDcRouterApiClientOptions {
13
+ baseUrl: string;
14
+ apiToken?: string;
15
+ }
16
+ export declare class DcRouterApiClient {
17
+ baseUrl: string;
18
+ apiToken?: string;
19
+ identity?: interfaces.data.IIdentity;
20
+ routes: RouteManager;
21
+ certificates: CertificateManager;
22
+ apiTokens: ApiTokenManager;
23
+ remoteIngress: RemoteIngressManager;
24
+ stats: StatsManager;
25
+ config: ConfigManager;
26
+ logs: LogManager;
27
+ emails: EmailManager;
28
+ radius: RadiusManager;
29
+ constructor(options: IDcRouterApiClientOptions);
30
+ login(username: string, password: string): Promise<interfaces.data.IIdentity>;
31
+ logout(): Promise<void>;
32
+ verifyIdentity(): Promise<{
33
+ valid: boolean;
34
+ identity?: interfaces.data.IIdentity;
35
+ }>;
36
+ request<T extends plugins.typedrequestInterfaces.ITypedRequest>(method: string, requestData: T['request']): Promise<T['response']>;
37
+ /**
38
+ * Build a request payload with identity and optional API token auto-injected.
39
+ */
40
+ buildRequestPayload(extra?: Record<string, any>): Record<string, any>;
41
+ }
@@ -0,0 +1,81 @@
1
+ import * as plugins from './plugins.js';
2
+ import * as interfaces from '../dist_ts_interfaces/index.js';
3
+ import { RouteManager } from './classes.route.js';
4
+ import { CertificateManager } from './classes.certificate.js';
5
+ import { ApiTokenManager } from './classes.apitoken.js';
6
+ import { RemoteIngressManager } from './classes.remoteingress.js';
7
+ import { StatsManager } from './classes.stats.js';
8
+ import { ConfigManager } from './classes.config.js';
9
+ import { LogManager } from './classes.logs.js';
10
+ import { EmailManager } from './classes.email.js';
11
+ import { RadiusManager } from './classes.radius.js';
12
+ export class DcRouterApiClient {
13
+ baseUrl;
14
+ apiToken;
15
+ identity;
16
+ // Resource managers
17
+ routes;
18
+ certificates;
19
+ apiTokens;
20
+ remoteIngress;
21
+ stats;
22
+ config;
23
+ logs;
24
+ emails;
25
+ radius;
26
+ constructor(options) {
27
+ this.baseUrl = options.baseUrl.replace(/\/+$/, '');
28
+ this.apiToken = options.apiToken;
29
+ this.routes = new RouteManager(this);
30
+ this.certificates = new CertificateManager(this);
31
+ this.apiTokens = new ApiTokenManager(this);
32
+ this.remoteIngress = new RemoteIngressManager(this);
33
+ this.stats = new StatsManager(this);
34
+ this.config = new ConfigManager(this);
35
+ this.logs = new LogManager(this);
36
+ this.emails = new EmailManager(this);
37
+ this.radius = new RadiusManager(this);
38
+ }
39
+ // =====================
40
+ // Auth
41
+ // =====================
42
+ async login(username, password) {
43
+ const response = await this.request('adminLoginWithUsernameAndPassword', { username, password });
44
+ if (response.identity) {
45
+ this.identity = response.identity;
46
+ }
47
+ return response.identity;
48
+ }
49
+ async logout() {
50
+ await this.request('adminLogout', { identity: this.identity });
51
+ this.identity = undefined;
52
+ }
53
+ async verifyIdentity() {
54
+ const response = await this.request('verifyIdentity', { identity: this.identity });
55
+ if (response.identity) {
56
+ this.identity = response.identity;
57
+ }
58
+ return response;
59
+ }
60
+ // =====================
61
+ // Internal request helper
62
+ // =====================
63
+ async request(method, requestData) {
64
+ const typedRequest = new plugins.typedrequest.TypedRequest(`${this.baseUrl}/typedrequest`, method);
65
+ return typedRequest.fire(requestData);
66
+ }
67
+ /**
68
+ * Build a request payload with identity and optional API token auto-injected.
69
+ */
70
+ buildRequestPayload(extra = {}) {
71
+ const payload = { ...extra };
72
+ if (this.identity) {
73
+ payload.identity = this.identity;
74
+ }
75
+ if (this.apiToken) {
76
+ payload.apiToken = this.apiToken;
77
+ }
78
+ return payload;
79
+ }
80
+ }
81
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xhc3Nlcy5kY3JvdXRlcmFwaWNsaWVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3RzX2FwaWNsaWVudC9jbGFzc2VzLmRjcm91dGVyYXBpY2xpZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sS0FBSyxPQUFPLE1BQU0sY0FBYyxDQUFDO0FBQ3hDLE9BQU8sS0FBSyxVQUFVLE1BQU0sMkJBQTJCLENBQUM7QUFFeEQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ2xELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQzlELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUN4RCxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUNsRSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDbEQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3BELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDbEQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBT3BELE1BQU0sT0FBTyxpQkFBaUI7SUFDckIsT0FBTyxDQUFTO0lBQ2hCLFFBQVEsQ0FBVTtJQUNsQixRQUFRLENBQTZCO0lBRTVDLG9CQUFvQjtJQUNiLE1BQU0sQ0FBZTtJQUNyQixZQUFZLENBQXFCO0lBQ2pDLFNBQVMsQ0FBa0I7SUFDM0IsYUFBYSxDQUF1QjtJQUNwQyxLQUFLLENBQWU7SUFDcEIsTUFBTSxDQUFnQjtJQUN0QixJQUFJLENBQWE7SUFDakIsTUFBTSxDQUFlO0lBQ3JCLE1BQU0sQ0FBZ0I7SUFFN0IsWUFBWSxPQUFrQztRQUM1QyxJQUFJLENBQUMsT0FBTyxHQUFHLE9BQU8sQ0FB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
@@ -0,0 +1,30 @@
1
+ import * as interfaces from '../dist_ts_interfaces/index.js';
2
+ import type { DcRouterApiClient } from './classes.dcrouterapiclient.js';
3
+ export declare class Email {
4
+ private clientRef;
5
+ id: string;
6
+ direction: interfaces.requests.TEmailDirection;
7
+ status: interfaces.requests.TEmailStatus;
8
+ from: string;
9
+ to: string;
10
+ subject: string;
11
+ timestamp: string;
12
+ messageId: string;
13
+ size: string;
14
+ constructor(clientRef: DcRouterApiClient, data: interfaces.requests.IEmail);
15
+ getDetail(): Promise<interfaces.requests.IEmailDetail | null>;
16
+ resend(): Promise<{
17
+ success: boolean;
18
+ newQueueId?: string;
19
+ }>;
20
+ }
21
+ export declare class EmailManager {
22
+ private clientRef;
23
+ constructor(clientRef: DcRouterApiClient);
24
+ list(): Promise<Email[]>;
25
+ getDetail(emailId: string): Promise<interfaces.requests.IEmailDetail | null>;
26
+ resend(emailId: string): Promise<{
27
+ success: boolean;
28
+ newQueueId?: string;
29
+ }>;
30
+ }