@serve.zone/dcrouter 11.0.51 → 11.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.
Files changed (46) hide show
  1. package/dist_serve/bundle.js +1 -1
  2. package/dist_ts/00_commitinfo_data.js +2 -2
  3. package/dist_ts_apiclient/classes.apitoken.d.ts +41 -0
  4. package/dist_ts_apiclient/classes.apitoken.js +115 -0
  5. package/dist_ts_apiclient/classes.certificate.d.ts +57 -0
  6. package/dist_ts_apiclient/classes.certificate.js +69 -0
  7. package/dist_ts_apiclient/classes.config.d.ts +7 -0
  8. package/dist_ts_apiclient/classes.config.js +11 -0
  9. package/dist_ts_apiclient/classes.dcrouterapiclient.d.ts +41 -0
  10. package/dist_ts_apiclient/classes.dcrouterapiclient.js +81 -0
  11. package/dist_ts_apiclient/classes.email.d.ts +30 -0
  12. package/dist_ts_apiclient/classes.email.js +52 -0
  13. package/dist_ts_apiclient/classes.logs.d.ts +21 -0
  14. package/dist_ts_apiclient/classes.logs.js +14 -0
  15. package/dist_ts_apiclient/classes.radius.d.ts +59 -0
  16. package/dist_ts_apiclient/classes.radius.js +95 -0
  17. package/dist_ts_apiclient/classes.remoteingress.d.ts +54 -0
  18. package/dist_ts_apiclient/classes.remoteingress.js +136 -0
  19. package/dist_ts_apiclient/classes.route.d.ts +42 -0
  20. package/dist_ts_apiclient/classes.route.js +154 -0
  21. package/dist_ts_apiclient/classes.stats.d.ts +47 -0
  22. package/dist_ts_apiclient/classes.stats.js +38 -0
  23. package/dist_ts_apiclient/index.d.ts +10 -0
  24. package/dist_ts_apiclient/index.js +14 -0
  25. package/dist_ts_apiclient/plugins.d.ts +3 -0
  26. package/dist_ts_apiclient/plugins.js +5 -0
  27. package/dist_ts_web/00_commitinfo_data.js +2 -2
  28. package/package.json +9 -6
  29. package/readme.md +103 -7
  30. package/ts/00_commitinfo_data.ts +1 -1
  31. package/ts_apiclient/classes.apitoken.ts +157 -0
  32. package/ts_apiclient/classes.certificate.ts +123 -0
  33. package/ts_apiclient/classes.config.ts +17 -0
  34. package/ts_apiclient/classes.dcrouterapiclient.ts +112 -0
  35. package/ts_apiclient/classes.email.ts +77 -0
  36. package/ts_apiclient/classes.logs.ts +37 -0
  37. package/ts_apiclient/classes.radius.ts +180 -0
  38. package/ts_apiclient/classes.remoteingress.ts +185 -0
  39. package/ts_apiclient/classes.route.ts +203 -0
  40. package/ts_apiclient/classes.stats.ts +111 -0
  41. package/ts_apiclient/index.ts +15 -0
  42. package/ts_apiclient/plugins.ts +8 -0
  43. package/ts_apiclient/readme.md +279 -0
  44. package/ts_apiclient/tspublish.json +3 -0
  45. package/ts_web/00_commitinfo_data.ts +1 -1
  46. 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-1772737633541.js.map
39331
+ //# sourceMappingURL=bundle-1772996333648.js.map
@@ -3,7 +3,7 @@
3
3
  */
4
4
  export const commitinfo = {
5
5
  name: '@serve.zone/dcrouter',
6
- version: '11.0.51',
6
+ version: '11.2.1',
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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xhc3Nlcy5kY3JvdXRlcmFwaWNsaWVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3RzX2FwaWNsaWVudC9jbGFzc2VzLmRjcm91dGVyYXBpY2xpZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sS0FBSyxPQUFPLE1BQU0sY0FBYyxDQUFDO0FBQ3hDLE9BQU8sS0FBSyxVQUFVLE1BQU0sMkJBQTJCLENBQUM7QUFFeEQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ2xELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQzlELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUN4RCxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUNsRSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDbEQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3BELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDbEQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBT3BELE1BQU0sT0FBTyxpQkFBaUI7SUFDckIsT0FBTyxDQUFTO0lBQ2hCLFFBQVEsQ0FBVTtJQUNsQixRQUFRLENBQTZCO0lBRTVDLG9CQUFvQjtJQUNiLE1BQU0sQ0FBZTtJQUNyQixZQUFZLENBQXFCO0lBQ2pDLFNBQVMsQ0FBa0I7SUFDM0IsYUFBYSxDQUF1QjtJQUNwQyxLQUFLLENBQWU7SUFDcEIsTUFBTSxDQUFnQjtJQUN0QixJQUFJLENBQWE7SUFDakIsTUFBTSxDQUFlO0lBQ3JCLE1BQU0sQ0FBZ0I7SUFFN0IsWUFBWSxPQUFrQztRQUM1QyxJQUFJLENBQUMsT0FBTyxHQUFHLE9BQU8sQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUMsQ0FBQztRQUNuRCxJQUFJLENBQUMsUUFBUSxHQUFHLE9BQU8sQ0FBQyxRQUFRLENBQUM7UUFFakMsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLFlBQVksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNyQyxJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksa0JBQWtCLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDakQsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLGVBQWUsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUMzQyxJQUFJLENBQUMsYUFBYSxHQUFHLElBQUksb0JBQW9CLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDcEQsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLFlBQVksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNwQyxJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksYUFBYSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3RDLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDakMsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLFlBQVksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNyQyxJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksYUFBYSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3hDLENBQUM7SUFFRCx3QkFBd0I7SUFDeEIsT0FBTztJQUNQLHdCQUF3QjtJQUVqQixLQUFLLENBQUMsS0FBSyxDQUFDLFFBQWdCLEVBQUUsUUFBZ0I7UUFDbkQsTUFBTSxRQUFRLEdBQUcsTUFBTSxJQUFJLENBQUMsT0FBTyxDQUNqQyxtQ0FBbUMsRUFDbkMsRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFFLENBQ3ZCLENBQUM7UUFDRixJQUFJLFFBQVEsQ0FBQyxRQUFRLEVBQUUsQ0FBQztZQUN0QixJQUFJLENBQUMsUUFBUSxHQUFHLFFBQVEsQ0FBQyxRQUFRLENBQUM7UUFDcEMsQ0FBQztRQUNELE9BQU8sUUFBUSxDQUFDLFFBQVMsQ0FBQztJQUM1QixDQUFDO0lBRU0sS0FBSyxDQUFDLE1BQU07UUFDakIsTUFBTSxJQUFJLENBQUMsT0FBTyxDQUNoQixhQUFhLEVBQ2IsRUFBRSxRQUFRLEVBQUUsSUFBSSxDQUFDLFFBQVMsRUFBRSxDQUM3QixDQUFDO1FBQ0YsSUFBSSxDQUFDLFFBQVEsR0FBRyxTQUFTLENBQUM7SUFDNUIsQ0FBQztJQUVNLEtBQUssQ0FBQyxjQUFjO1FBQ3pCLE1BQU0sUUFBUSxHQUFHLE1BQU0sSUFBSSxDQUFDLE9BQU8sQ0FDakMsZ0JBQWdCLEVBQ2hCLEVBQUUsUUFBUSxFQUFFLElBQUksQ0FBQyxRQUFTLEVBQUUsQ0FDN0IsQ0FBQztRQUNGLElBQUksUUFBUSxDQUFDLFFBQVEsRUFBRSxDQUFDO1lBQ3RCLElBQUksQ0FBQyxRQUFRLEdBQUcsUUFBUSxDQUFDLFFBQVEsQ0FBQztRQUNwQyxDQUFDO1FBQ0QsT0FBTyxRQUFRLENBQUM7SUFDbEIsQ0FBQztJQUVELHdCQUF3QjtJQUN4QiwwQkFBMEI7SUFDMUIsd0JBQXdCO0lBRWpCLEtBQUssQ0FBQyxPQUFPLENBQ2xCLE1BQWMsRUFDZCxXQUF5QjtRQUV6QixNQUFNLFlBQVksR0FBRyxJQUFJLE9BQU8sQ0FBQyxZQUFZLENBQUMsWUFBWSxDQUN4RCxHQUFHLElBQUksQ0FBQyxPQUFPLGVBQWUsRUFDOUIsTUFBTSxDQUNQLENBQUM7UUFDRixPQUFPLFlBQVksQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7SUFDeEMsQ0FBQztJQUVEOztPQUVHO0lBQ0ksbUJBQW1CLENBQUMsUUFBNkIsRUFBRTtRQUN4RCxNQUFNLE9BQU8sR0FBd0IsRUFBRSxHQUFHLEtBQUssRUFBRSxDQUFDO1FBQ2xELElBQUksSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO1lBQ2xCLE9BQU8sQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQztRQUNuQyxDQUFDO1FBQ0QsSUFBSSxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7WUFDbEIsT0FBTyxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDO1FBQ25DLENBQUM7UUFDRCxPQUFPLE9BQU8sQ0FBQztJQUNqQixDQUFDO0NBQ0YifQ==
@@ -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
+ }
@@ -0,0 +1,52 @@
1
+ import * as interfaces from '../dist_ts_interfaces/index.js';
2
+ export class Email {
3
+ clientRef;
4
+ // Data from IEmail
5
+ id;
6
+ direction;
7
+ status;
8
+ from;
9
+ to;
10
+ subject;
11
+ timestamp;
12
+ messageId;
13
+ size;
14
+ constructor(clientRef, data) {
15
+ this.clientRef = clientRef;
16
+ this.id = data.id;
17
+ this.direction = data.direction;
18
+ this.status = data.status;
19
+ this.from = data.from;
20
+ this.to = data.to;
21
+ this.subject = data.subject;
22
+ this.timestamp = data.timestamp;
23
+ this.messageId = data.messageId;
24
+ this.size = data.size;
25
+ }
26
+ async getDetail() {
27
+ const response = await this.clientRef.request('getEmailDetail', this.clientRef.buildRequestPayload({ emailId: this.id }));
28
+ return response.email;
29
+ }
30
+ async resend() {
31
+ const response = await this.clientRef.request('resendEmail', this.clientRef.buildRequestPayload({ emailId: this.id }));
32
+ return response;
33
+ }
34
+ }
35
+ export class EmailManager {
36
+ clientRef;
37
+ constructor(clientRef) {
38
+ this.clientRef = clientRef;
39
+ }
40
+ async list() {
41
+ const response = await this.clientRef.request('getAllEmails', this.clientRef.buildRequestPayload());
42
+ return response.emails.map((e) => new Email(this.clientRef, e));
43
+ }
44
+ async getDetail(emailId) {
45
+ const response = await this.clientRef.request('getEmailDetail', this.clientRef.buildRequestPayload({ emailId }));
46
+ return response.email;
47
+ }
48
+ async resend(emailId) {
49
+ return this.clientRef.request('resendEmail', this.clientRef.buildRequestPayload({ emailId }));
50
+ }
51
+ }
52
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xhc3Nlcy5lbWFpbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3RzX2FwaWNsaWVudC9jbGFzc2VzLmVtYWlsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sS0FBSyxVQUFVLE1BQU0sMkJBQTJCLENBQUM7QUFHeEQsTUFBTSxPQUFPLEtBQUs7SUFDUixTQUFTLENBQW9CO0lBRXJDLG1CQUFtQjtJQUNaLEVBQUUsQ0FBUztJQUNYLFNBQVMsQ0FBc0M7SUFDL0MsTUFBTSxDQUFtQztJQUN6QyxJQUFJLENBQVM7SUFDYixFQUFFLENBQVM7SUFDWCxPQUFPLENBQVM7SUFDaEIsU0FBUyxDQUFTO0lBQ2xCLFNBQVMsQ0FBUztJQUNsQixJQUFJLENBQVM7SUFFcEIsWUFBWSxTQUE0QixFQUFFLElBQWdDO1FBQ3hFLElBQUksQ0FBQyxTQUFTLEdBQUcsU0FBUyxDQUFDO1FBQzNCLElBQUksQ0FBQyxFQUFFLEdBQUcsSUFBSSxDQUFDLEVBQUUsQ0FBQztRQUNsQixJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUM7UUFDaEMsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDO1FBQzFCLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQztRQUN0QixJQUFJLENBQUMsRUFBRSxHQUFHLElBQUksQ0FBQyxFQUFFLENBQUM7UUFDbEIsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDO1FBQzVCLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQztRQUNoQyxJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUM7UUFDaEMsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDO0lBQ3hCLENBQUM7SUFFTSxLQUFLLENBQUMsU0FBUztRQUNwQixNQUFNLFFBQVEsR0FBRyxNQUFNLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUMzQyxnQkFBZ0IsRUFDaEIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxtQkFBbUIsQ0FBQyxFQUFFLE9BQU8sRUFBRSxJQUFJLENBQUMsRUFBRSxFQUFFLENBQVEsQ0FDaEUsQ0FBQztRQUNGLE9BQU8sUUFBUSxDQUFDLEtBQUssQ0FBQztJQUN4QixDQUFDO0lBRU0sS0FBSyxDQUFDLE1BQU07UUFDakIsTUFBTSxRQUFRLEdBQUcsTUFBTSxJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FDM0MsYUFBYSxFQUNiLElBQUksQ0FBQyxTQUFTLENBQUMsbUJBQW1CLENBQUMsRUFBRSxPQUFPLEVBQUUsSUFBSSxDQUFDLEVBQUUsRUFBRSxDQUFRLENBQ2hFLENBQUM7UUFDRixPQUFPLFFBQVEsQ0FBQztJQUNsQixDQUFDO0NBQ0Y7QUFFRCxNQUFNLE9BQU8sWUFBWTtJQUNmLFNBQVMsQ0FBb0I7SUFFckMsWUFBWSxTQUE0QjtRQUN0QyxJQUFJLENBQUMsU0FBUyxHQUFHLFNBQVMsQ0FBQztJQUM3QixDQUFDO0lBRU0sS0FBSyxDQUFDLElBQUk7UUFDZixNQUFNLFFBQVEsR0FBRyxNQUFNLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUMzQyxjQUFjLEVBQ2QsSUFBSSxDQUFDLFNBQVMsQ0FBQyxtQkFBbUIsRUFBUyxDQUM1QyxDQUFDO1FBQ0YsT0FBTyxRQUFRLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsSUFBSSxLQUFLLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ2xFLENBQUM7SUFFTSxLQUFLLENBQUMsU0FBUyxDQUFDLE9BQWU7UUFDcEMsTUFBTSxRQUFRLEdBQUcsTUFBTSxJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FDM0MsZ0JBQWdCLEVBQ2hCLElBQUksQ0FBQyxTQUFTLENBQUMsbUJBQW1CLENBQUMsRUFBRSxPQUFPLEVBQUUsQ0FBUSxDQUN2RCxDQUFDO1FBQ0YsT0FBTyxRQUFRLENBQUMsS0FBSyxDQUFDO0lBQ3hCLENBQUM7SUFFTSxLQUFLLENBQUMsTUFBTSxDQUFDLE9BQWU7UUFDakMsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FDM0IsYUFBYSxFQUNiLElBQUksQ0FBQyxTQUFTLENBQUMsbUJBQW1CLENBQUMsRUFBRSxPQUFPLEVBQUUsQ0FBUSxDQUN2RCxDQUFDO0lBQ0osQ0FBQztDQUNGIn0=
@@ -0,0 +1,21 @@
1
+ import * as interfaces from '../dist_ts_interfaces/index.js';
2
+ import type { DcRouterApiClient } from './classes.dcrouterapiclient.js';
3
+ export declare class LogManager {
4
+ private clientRef;
5
+ constructor(clientRef: DcRouterApiClient);
6
+ getRecent(options?: {
7
+ level?: 'debug' | 'info' | 'warn' | 'error';
8
+ category?: 'smtp' | 'dns' | 'security' | 'system' | 'email';
9
+ limit?: number;
10
+ offset?: number;
11
+ search?: string;
12
+ timeRange?: string;
13
+ }): Promise<interfaces.requests.IReq_GetRecentLogs['response']>;
14
+ getStream(options?: {
15
+ follow?: boolean;
16
+ filters?: {
17
+ level?: string[];
18
+ category?: string[];
19
+ };
20
+ }): Promise<interfaces.requests.IReq_GetLogStream['response']>;
21
+ }
@@ -0,0 +1,14 @@
1
+ import * as interfaces from '../dist_ts_interfaces/index.js';
2
+ export class LogManager {
3
+ clientRef;
4
+ constructor(clientRef) {
5
+ this.clientRef = clientRef;
6
+ }
7
+ async getRecent(options) {
8
+ return this.clientRef.request('getRecentLogs', this.clientRef.buildRequestPayload(options || {}));
9
+ }
10
+ async getStream(options) {
11
+ return this.clientRef.request('getLogStream', this.clientRef.buildRequestPayload(options || {}));
12
+ }
13
+ }
14
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xhc3Nlcy5sb2dzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vdHNfYXBpY2xpZW50L2NsYXNzZXMubG9ncy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEtBQUssVUFBVSxNQUFNLDJCQUEyQixDQUFDO0FBR3hELE1BQU0sT0FBTyxVQUFVO0lBQ2IsU0FBUyxDQUFvQjtJQUVyQyxZQUFZLFNBQTRCO1FBQ3RDLElBQUksQ0FBQyxTQUFTLEdBQUcsU0FBUyxDQUFDO0lBQzdCLENBQUM7SUFFTSxLQUFLLENBQUMsU0FBUyxDQUFDLE9BT3RCO1FBQ0MsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FDM0IsZUFBZSxFQUNmLElBQUksQ0FBQyxTQUFTLENBQUMsbUJBQW1CLENBQUMsT0FBTyxJQUFJLEVBQUUsQ0FBUSxDQUN6RCxDQUFDO0lBQ0osQ0FBQztJQUVNLEtBQUssQ0FBQyxTQUFTLENBQUMsT0FNdEI7UUFDQyxPQUFPLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUMzQixjQUFjLEVBQ2QsSUFBSSxDQUFDLFNBQVMsQ0FBQyxtQkFBbUIsQ0FBQyxPQUFPLElBQUksRUFBRSxDQUFRLENBQ3pELENBQUM7SUFDSixDQUFDO0NBQ0YifQ==
@@ -0,0 +1,59 @@
1
+ import * as interfaces from '../dist_ts_interfaces/index.js';
2
+ import type { DcRouterApiClient } from './classes.dcrouterapiclient.js';
3
+ export declare class RadiusClientManager {
4
+ private clientRef;
5
+ constructor(clientRef: DcRouterApiClient);
6
+ list(): Promise<Array<{
7
+ name: string;
8
+ ipRange: string;
9
+ description?: string;
10
+ enabled: boolean;
11
+ }>>;
12
+ set(client: {
13
+ name: string;
14
+ ipRange: string;
15
+ secret: string;
16
+ description?: string;
17
+ enabled: boolean;
18
+ }): Promise<void>;
19
+ remove(name: string): Promise<void>;
20
+ }
21
+ export declare class RadiusVlanManager {
22
+ private clientRef;
23
+ constructor(clientRef: DcRouterApiClient);
24
+ list(): Promise<interfaces.requests.IReq_GetVlanMappings['response']>;
25
+ set(mapping: {
26
+ mac: string;
27
+ vlan: number;
28
+ description?: string;
29
+ enabled: boolean;
30
+ }): Promise<void>;
31
+ remove(mac: string): Promise<void>;
32
+ updateConfig(options: {
33
+ defaultVlan?: number;
34
+ allowUnknownMacs?: boolean;
35
+ }): Promise<{
36
+ defaultVlan: number;
37
+ allowUnknownMacs: boolean;
38
+ }>;
39
+ testAssignment(mac: string): Promise<interfaces.requests.IReq_TestVlanAssignment['response']>;
40
+ }
41
+ export declare class RadiusSessionManager {
42
+ private clientRef;
43
+ constructor(clientRef: DcRouterApiClient);
44
+ list(filter?: {
45
+ username?: string;
46
+ nasIpAddress?: string;
47
+ vlanId?: number;
48
+ }): Promise<interfaces.requests.IReq_GetRadiusSessions['response']>;
49
+ disconnect(sessionId: string, reason?: string): Promise<void>;
50
+ }
51
+ export declare class RadiusManager {
52
+ private clientRef;
53
+ clients: RadiusClientManager;
54
+ vlans: RadiusVlanManager;
55
+ sessions: RadiusSessionManager;
56
+ constructor(clientRef: DcRouterApiClient);
57
+ getAccountingSummary(startTime: number, endTime: number): Promise<interfaces.requests.IReq_GetRadiusAccountingSummary['response']['summary']>;
58
+ getStatistics(): Promise<interfaces.requests.IReq_GetRadiusStatistics['response']>;
59
+ }