@serve.zone/dcrouter 15.0.2 → 15.0.4
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/deno.json +1 -1
- package/dist_serve/bundle.js +768 -768
- package/dist_ts/00_commitinfo_data.js +1 -1
- package/dist_ts/classes.dcrouter.js +9 -1
- package/dist_ts_web/00_commitinfo_data.js +1 -1
- package/dist_ts_web/appstate/acme.d.ts +17 -0
- package/dist_ts_web/appstate/acme.js +64 -0
- package/dist_ts_web/appstate/certificates.d.ts +37 -0
- package/dist_ts_web/appstate/certificates.js +107 -0
- package/dist_ts_web/appstate/config.d.ts +9 -0
- package/dist_ts_web/appstate/config.js +35 -0
- package/dist_ts_web/appstate/domains.d.ts +80 -0
- package/dist_ts_web/appstate/domains.js +324 -0
- package/dist_ts_web/appstate/email-domains.d.ts +25 -0
- package/dist_ts_web/appstate/email-domains.js +104 -0
- package/dist_ts_web/appstate/email-ops.d.ts +10 -0
- package/dist_ts_web/appstate/email-ops.js +40 -0
- package/dist_ts_web/appstate/login.d.ts +30 -0
- package/dist_ts_web/appstate/login.js +83 -0
- package/dist_ts_web/appstate/logs.d.ts +16 -0
- package/dist_ts_web/appstate/logs.js +27 -0
- package/dist_ts_web/appstate/network.d.ts +50 -0
- package/dist_ts_web/appstate/network.js +122 -0
- package/dist_ts_web/appstate/profiles-targets.d.ts +45 -0
- package/dist_ts_web/appstate/profiles-targets.js +173 -0
- package/dist_ts_web/appstate/remoteingress.d.ts +47 -0
- package/dist_ts_web/appstate/remoteingress.js +204 -0
- package/dist_ts_web/appstate/routes.d.ts +76 -0
- package/dist_ts_web/appstate/routes.js +316 -0
- package/dist_ts_web/appstate/runtime.d.ts +1 -0
- package/dist_ts_web/appstate/runtime.js +276 -0
- package/dist_ts_web/appstate/security.d.ts +29 -0
- package/dist_ts_web/appstate/security.js +167 -0
- package/dist_ts_web/appstate/shared.d.ts +3 -0
- package/dist_ts_web/appstate/shared.js +13 -0
- package/dist_ts_web/appstate/stats.d.ts +15 -0
- package/dist_ts_web/appstate/stats.js +59 -0
- package/dist_ts_web/appstate/target-profiles.d.ts +37 -0
- package/dist_ts_web/appstate/target-profiles.js +118 -0
- package/dist_ts_web/appstate/ui.d.ts +11 -0
- package/dist_ts_web/appstate/ui.js +55 -0
- package/dist_ts_web/appstate/users.d.ts +27 -0
- package/dist_ts_web/appstate/users.js +85 -0
- package/dist_ts_web/appstate/vpn.d.ts +44 -0
- package/dist_ts_web/appstate/vpn.js +148 -0
- package/dist_ts_web/appstate.d.ts +20 -568
- package/dist_ts_web/appstate.js +24 -2418
- package/package.json +3 -3
- package/ts/00_commitinfo_data.ts +1 -1
- package/ts/classes.dcrouter.ts +10 -0
- package/ts_web/00_commitinfo_data.ts +1 -1
- package/ts_web/appstate/acme.ts +93 -0
- package/ts_web/appstate/certificates.ts +159 -0
- package/ts_web/appstate/config.ts +49 -0
- package/ts_web/appstate/domains.ts +429 -0
- package/ts_web/appstate/email-domains.ts +155 -0
- package/ts_web/appstate/email-ops.ts +57 -0
- package/ts_web/appstate/login.ts +128 -0
- package/ts_web/appstate/logs.ts +50 -0
- package/ts_web/appstate/network.ts +161 -0
- package/ts_web/appstate/profiles-targets.ts +240 -0
- package/ts_web/appstate/remoteingress.ts +300 -0
- package/ts_web/appstate/routes.ts +447 -0
- package/ts_web/appstate/runtime.ts +308 -0
- package/ts_web/appstate/security.ts +229 -0
- package/ts_web/appstate/shared.ts +15 -0
- package/ts_web/appstate/stats.ts +79 -0
- package/ts_web/appstate/target-profiles.ts +164 -0
- package/ts_web/appstate/ui.ts +75 -0
- package/ts_web/appstate/users.ts +133 -0
- package/ts_web/appstate/vpn.ts +234 -0
- package/ts_web/appstate.ts +24 -3403
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
import * as plugins from '../plugins.js';
|
|
2
|
+
import * as interfaces from '../../dist_ts_interfaces/index.js';
|
|
3
|
+
import { appState } from './shared.js';
|
|
4
|
+
import { getActionContext } from './login.js';
|
|
5
|
+
export const emailDomainsStatePart = await appState.getStatePart('emailDomains', {
|
|
6
|
+
domains: [],
|
|
7
|
+
settings: null,
|
|
8
|
+
isLoading: false,
|
|
9
|
+
lastUpdated: 0,
|
|
10
|
+
}, 'soft');
|
|
11
|
+
export const fetchEmailDomainsAction = emailDomainsStatePart.createAction(async (statePartArg) => {
|
|
12
|
+
const context = getActionContext();
|
|
13
|
+
const currentState = statePartArg.getState();
|
|
14
|
+
if (!context.identity)
|
|
15
|
+
return currentState;
|
|
16
|
+
try {
|
|
17
|
+
const request = new plugins.domtools.plugins.typedrequest.TypedRequest('/typedrequest', 'getEmailDomains');
|
|
18
|
+
const settingsRequest = new plugins.domtools.plugins.typedrequest.TypedRequest('/typedrequest', 'getEmailServerSettings');
|
|
19
|
+
const response = await request.fire({ identity: context.identity });
|
|
20
|
+
const settingsResponse = await settingsRequest.fire({ identity: context.identity });
|
|
21
|
+
return {
|
|
22
|
+
...currentState,
|
|
23
|
+
domains: response.domains,
|
|
24
|
+
settings: settingsResponse.settings,
|
|
25
|
+
isLoading: false,
|
|
26
|
+
lastUpdated: Date.now(),
|
|
27
|
+
};
|
|
28
|
+
}
|
|
29
|
+
catch {
|
|
30
|
+
return { ...currentState, isLoading: false };
|
|
31
|
+
}
|
|
32
|
+
});
|
|
33
|
+
export const createEmailDomainAction = emailDomainsStatePart.createAction(async (statePartArg, args, actionContext) => {
|
|
34
|
+
const context = getActionContext();
|
|
35
|
+
const currentState = statePartArg.getState();
|
|
36
|
+
try {
|
|
37
|
+
const request = new plugins.domtools.plugins.typedrequest.TypedRequest('/typedrequest', 'createEmailDomain');
|
|
38
|
+
await request.fire({ identity: context.identity, ...args });
|
|
39
|
+
return await actionContext.dispatch(fetchEmailDomainsAction, null);
|
|
40
|
+
}
|
|
41
|
+
catch {
|
|
42
|
+
return currentState;
|
|
43
|
+
}
|
|
44
|
+
});
|
|
45
|
+
export const updateEmailServerSettingsAction = emailDomainsStatePart.createAction(async (statePartArg, settings, actionContext) => {
|
|
46
|
+
const context = getActionContext();
|
|
47
|
+
const currentState = statePartArg.getState();
|
|
48
|
+
try {
|
|
49
|
+
const request = new plugins.domtools.plugins.typedrequest.TypedRequest('/typedrequest', 'updateEmailServerSettings');
|
|
50
|
+
const response = await request.fire({ identity: context.identity, settings });
|
|
51
|
+
if (!response.success) {
|
|
52
|
+
return currentState;
|
|
53
|
+
}
|
|
54
|
+
return await actionContext.dispatch(fetchEmailDomainsAction, null);
|
|
55
|
+
}
|
|
56
|
+
catch {
|
|
57
|
+
return currentState;
|
|
58
|
+
}
|
|
59
|
+
});
|
|
60
|
+
export const deleteEmailDomainAction = emailDomainsStatePart.createAction(async (statePartArg, id, actionContext) => {
|
|
61
|
+
const context = getActionContext();
|
|
62
|
+
const currentState = statePartArg.getState();
|
|
63
|
+
try {
|
|
64
|
+
const request = new plugins.domtools.plugins.typedrequest.TypedRequest('/typedrequest', 'deleteEmailDomain');
|
|
65
|
+
await request.fire({ identity: context.identity, id });
|
|
66
|
+
return await actionContext.dispatch(fetchEmailDomainsAction, null);
|
|
67
|
+
}
|
|
68
|
+
catch {
|
|
69
|
+
return currentState;
|
|
70
|
+
}
|
|
71
|
+
});
|
|
72
|
+
export const validateEmailDomainAction = emailDomainsStatePart.createAction(async (statePartArg, id, actionContext) => {
|
|
73
|
+
const context = getActionContext();
|
|
74
|
+
const currentState = statePartArg.getState();
|
|
75
|
+
try {
|
|
76
|
+
const request = new plugins.domtools.plugins.typedrequest.TypedRequest('/typedrequest', 'validateEmailDomain');
|
|
77
|
+
await request.fire({ identity: context.identity, id });
|
|
78
|
+
return await actionContext.dispatch(fetchEmailDomainsAction, null);
|
|
79
|
+
}
|
|
80
|
+
catch {
|
|
81
|
+
return currentState;
|
|
82
|
+
}
|
|
83
|
+
});
|
|
84
|
+
export const provisionEmailDomainDnsAction = emailDomainsStatePart.createAction(async (statePartArg, id, actionContext) => {
|
|
85
|
+
const context = getActionContext();
|
|
86
|
+
const currentState = statePartArg.getState();
|
|
87
|
+
try {
|
|
88
|
+
const request = new plugins.domtools.plugins.typedrequest.TypedRequest('/typedrequest', 'provisionEmailDomainDns');
|
|
89
|
+
await request.fire({ identity: context.identity, id });
|
|
90
|
+
return await actionContext.dispatch(fetchEmailDomainsAction, null);
|
|
91
|
+
}
|
|
92
|
+
catch {
|
|
93
|
+
return currentState;
|
|
94
|
+
}
|
|
95
|
+
});
|
|
96
|
+
// ============================================================================
|
|
97
|
+
// Email Domain Standalone Functions
|
|
98
|
+
// ============================================================================
|
|
99
|
+
export async function fetchEmailDomainDnsRecords(id) {
|
|
100
|
+
const context = getActionContext();
|
|
101
|
+
const request = new plugins.domtools.plugins.typedrequest.TypedRequest('/typedrequest', 'getEmailDomainDnsRecords');
|
|
102
|
+
return request.fire({ identity: context.identity, id });
|
|
103
|
+
}
|
|
104
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW1haWwtZG9tYWlucy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3RzX3dlYi9hcHBzdGF0ZS9lbWFpbC1kb21haW5zLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sS0FBSyxPQUFPLE1BQU0sZUFBZSxDQUFDO0FBQ3pDLE9BQU8sS0FBSyxVQUFVLE1BQU0sOEJBQThCLENBQUM7QUFDM0QsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUN2QyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFjOUMsTUFBTSxDQUFDLE1BQU0scUJBQXFCLEdBQUcsTUFBTSxRQUFRLENBQUMsWUFBWSxDQUM5RCxjQUFjLEVBQ2Q7SUFDRSxPQUFPLEVBQUUsRUFBRTtJQUNYLFFBQVEsRUFBRSxJQUFJO0lBQ2QsU0FBUyxFQUFFLEtBQUs7SUFDaEIsV0FBVyxFQUFFLENBQUM7Q0FDZixFQUNELE1BQU0sQ0FDUCxDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sdUJBQXVCLEdBQUcscUJBQXFCLENBQUMsWUFBWSxDQUN2RSxLQUFLLEVBQUUsWUFBWSxFQUErQixFQUFFO0lBQ2xELE1BQU0sT0FBTyxHQUFHLGdCQUFnQixFQUFFLENBQUM7SUFDbkMsTUFBTSxZQUFZLEdBQUcsWUFBWSxDQUFDLFFBQVEsRUFBRyxDQUFDO0lBQzlDLElBQUksQ0FBQyxPQUFPLENBQUMsUUFBUTtRQUFFLE9BQU8sWUFBWSxDQUFDO0lBRTNDLElBQUksQ0FBQztRQUNILE1BQU0sT0FBTyxHQUFHLElBQUksT0FBTyxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsWUFBWSxDQUFDLFlBQVksQ0FFcEUsZUFBZSxFQUFFLGlCQUFpQixDQUFDLENBQUM7UUFDdEMsTUFBTSxlQUFlLEdBQUcsSUFBSSxPQUFPLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxZQUFZLENBQUMsWUFBWSxDQUU1RSxlQUFlLEVBQUUsd0JBQXdCLENBQUMs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
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import * as plugins from '../plugins.js';
|
|
2
|
+
import * as interfaces from '../../dist_ts_interfaces/index.js';
|
|
3
|
+
export interface IEmailOpsState {
|
|
4
|
+
emails: interfaces.requests.IEmail[];
|
|
5
|
+
isLoading: boolean;
|
|
6
|
+
error: string | null;
|
|
7
|
+
lastUpdated: number;
|
|
8
|
+
}
|
|
9
|
+
export declare const emailOpsStatePart: plugins.deesElement.domtools.plugins.smartstate.StatePart<string, IEmailOpsState>;
|
|
10
|
+
export declare const fetchAllEmailsAction: plugins.deesElement.domtools.plugins.smartstate.StateAction<IEmailOpsState, unknown>;
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import * as plugins from '../plugins.js';
|
|
2
|
+
import * as interfaces from '../../dist_ts_interfaces/index.js';
|
|
3
|
+
import { appState } from './shared.js';
|
|
4
|
+
import { getActionContext } from './login.js';
|
|
5
|
+
export const emailOpsStatePart = await appState.getStatePart('emailOps', {
|
|
6
|
+
emails: [],
|
|
7
|
+
isLoading: false,
|
|
8
|
+
error: null,
|
|
9
|
+
lastUpdated: 0,
|
|
10
|
+
}, 'soft');
|
|
11
|
+
// Email Operations Actions
|
|
12
|
+
// ============================================================================
|
|
13
|
+
// Fetch All Emails Action
|
|
14
|
+
export const fetchAllEmailsAction = emailOpsStatePart.createAction(async (statePartArg) => {
|
|
15
|
+
const context = getActionContext();
|
|
16
|
+
const currentState = statePartArg.getState();
|
|
17
|
+
if (!context.identity)
|
|
18
|
+
return currentState;
|
|
19
|
+
try {
|
|
20
|
+
const request = new plugins.domtools.plugins.typedrequest.TypedRequest('/typedrequest', 'getAllEmails');
|
|
21
|
+
const response = await request.fire({
|
|
22
|
+
identity: context.identity,
|
|
23
|
+
});
|
|
24
|
+
return {
|
|
25
|
+
emails: response.emails,
|
|
26
|
+
isLoading: false,
|
|
27
|
+
error: null,
|
|
28
|
+
lastUpdated: Date.now(),
|
|
29
|
+
};
|
|
30
|
+
}
|
|
31
|
+
catch (error) {
|
|
32
|
+
return {
|
|
33
|
+
...currentState,
|
|
34
|
+
isLoading: false,
|
|
35
|
+
error: error instanceof Error ? error.message : 'Failed to fetch emails',
|
|
36
|
+
};
|
|
37
|
+
}
|
|
38
|
+
});
|
|
39
|
+
// ============================================================================
|
|
40
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW1haWwtb3BzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vdHNfd2ViL2FwcHN0YXRlL2VtYWlsLW9wcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEtBQUssT0FBTyxNQUFNLGVBQWUsQ0FBQztBQUN6QyxPQUFPLEtBQUssVUFBVSxNQUFNLDhCQUE4QixDQUFDO0FBQzNELE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDdkMsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sWUFBWSxDQUFDO0FBUzlDLE1BQU0sQ0FBQyxNQUFNLGlCQUFpQixHQUFHLE1BQU0sUUFBUSxDQUFDLFlBQVksQ0FDMUQsVUFBVSxFQUNWO0lBQ0UsTUFBTSxFQUFFLEVBQUU7SUFDVixTQUFTLEVBQUUsS0FBSztJQUNoQixLQUFLLEVBQUUsSUFBSTtJQUNYLFdBQVcsRUFBRSxDQUFDO0NBQ2YsRUFDRCxNQUFNLENBQ1AsQ0FBQztBQUVGLDJCQUEyQjtBQUMzQiwrRUFBK0U7QUFFL0UsMEJBQTBCO0FBQzFCLE1BQU0sQ0FBQyxNQUFNLG9CQUFvQixHQUFHLGlCQUFpQixDQUFDLFlBQVksQ0FBQyxLQUFLLEVBQUUsWUFBWSxFQUEyQixFQUFFO0lBQ2pILE1BQU0sT0FBTyxHQUFHLGdCQUFnQixFQUFFLENBQUM7SUFDbkMsTUFBTSxZQUFZLEdBQUcsWUFBWSxDQUFDLFFBQVEsRUFBRyxDQUFDO0lBQzlDLElBQUksQ0FBQyxPQUFPLENBQUMsUUFBUTtRQUFFLE9BQU8sWUFBWSxDQUFDO0lBRTNDLElBQUksQ0FBQztRQUNILE1BQU0sT0FBTyxHQUFHLElBQUksT0FBTyxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsWUFBWSxDQUFDLFlBQVksQ0FFcEUsZUFBZSxFQUFFLGNBQWMsQ0FBQyxDQUFDO1FBRW5DLE1BQU0sUUFBUSxHQUFHLE1BQU0sT0FBTyxDQUFDLElBQUksQ0FBQztZQUNsQyxRQUFRLEVBQUUsT0FBTyxDQUFDLFFBQVE7U0FDM0IsQ0FBQyxDQUFDO1FBRUgsT0FBTztZQUNMLE1BQU0sRUFBRSxRQUFRLENBQUMsTUFBTTtZQUN2QixTQUFTLEVBQUUsS0FBSztZQUNoQixLQUFLLEVBQUUsSUFBSTtZQUNYLFdBQVcsRUFBRSxJQUFJLENBQUMsR0FBRyxFQUFFO1NBQ3hCLENBQUM7SUFDSixDQUFDO0lBQUMsT0FBTyxLQUFLLEVBQUUsQ0FBQztRQUNmLE9BQU87WUFDTCxHQUFHLFlBQVk7WUFDZixTQUFTLEVBQUUsS0FBSztZQUNoQixLQUFLLEVBQUUsS0FBSyxZQUFZLEtBQUssQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsd0JBQXdCO1NBQ3pFLENBQUM7SUFDSixDQUFDO0FBQ0gsQ0FBQyxDQUFDLENBQUM7QUFFSCwrRUFBK0UifQ==
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import * as plugins from '../plugins.js';
|
|
2
|
+
import * as interfaces from '../../dist_ts_interfaces/index.js';
|
|
3
|
+
export interface ILoginState {
|
|
4
|
+
identity: interfaces.data.IIdentity | null;
|
|
5
|
+
isLoggedIn: boolean;
|
|
6
|
+
}
|
|
7
|
+
export type IAdminBootstrapStatus = interfaces.requests.IReq_GetAdminBootstrapStatus['response'];
|
|
8
|
+
export declare const loginStatePart: plugins.deesElement.domtools.plugins.smartstate.StatePart<string, ILoginState>;
|
|
9
|
+
interface IActionContext {
|
|
10
|
+
identity: interfaces.data.IIdentity | null;
|
|
11
|
+
}
|
|
12
|
+
export declare const getActionContext: () => IActionContext;
|
|
13
|
+
export declare const loginAction: plugins.deesElement.domtools.plugins.smartstate.StateAction<ILoginState, {
|
|
14
|
+
username: string;
|
|
15
|
+
password: string;
|
|
16
|
+
authSource?: interfaces.requests.TAdminLoginAuthSource;
|
|
17
|
+
}>;
|
|
18
|
+
export declare function getAdminBootstrapStatus(): Promise<IAdminBootstrapStatus>;
|
|
19
|
+
export declare function createInitialAdminUser(optionsArg: {
|
|
20
|
+
email: string;
|
|
21
|
+
name?: string;
|
|
22
|
+
password: string;
|
|
23
|
+
enableIdpGlobalAuth?: boolean;
|
|
24
|
+
}): Promise<{
|
|
25
|
+
success: boolean;
|
|
26
|
+
identity?: interfaces.data.IIdentity;
|
|
27
|
+
user?: interfaces.requests.IAdminUserProjection;
|
|
28
|
+
}>;
|
|
29
|
+
export declare const logoutAction: plugins.deesElement.domtools.plugins.smartstate.StateAction<ILoginState, unknown>;
|
|
30
|
+
export {};
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
import * as plugins from '../plugins.js';
|
|
2
|
+
import * as interfaces from '../../dist_ts_interfaces/index.js';
|
|
3
|
+
import { appState } from './shared.js';
|
|
4
|
+
export const loginStatePart = await appState.getStatePart('login', {
|
|
5
|
+
identity: null,
|
|
6
|
+
isLoggedIn: false,
|
|
7
|
+
}, 'persistent' // Login state persists across browser sessions
|
|
8
|
+
);
|
|
9
|
+
export const getActionContext = () => {
|
|
10
|
+
const identity = loginStatePart.getState().identity;
|
|
11
|
+
// Treat expired JWTs as no identity — prevents stale persisted sessions from firing requests
|
|
12
|
+
if (identity && identity.expiresAt && identity.expiresAt < Date.now()) {
|
|
13
|
+
return { identity: null };
|
|
14
|
+
}
|
|
15
|
+
return { identity };
|
|
16
|
+
};
|
|
17
|
+
// Login Action
|
|
18
|
+
export const loginAction = loginStatePart.createAction(async (statePartArg, dataArg) => {
|
|
19
|
+
const typedRequest = new plugins.domtools.plugins.typedrequest.TypedRequest('/typedrequest', 'adminLoginWithUsernameAndPassword');
|
|
20
|
+
try {
|
|
21
|
+
const response = await typedRequest.fire({
|
|
22
|
+
username: dataArg.username,
|
|
23
|
+
password: dataArg.password,
|
|
24
|
+
authSource: dataArg.authSource,
|
|
25
|
+
});
|
|
26
|
+
if (response.identity) {
|
|
27
|
+
return {
|
|
28
|
+
identity: response.identity,
|
|
29
|
+
isLoggedIn: true,
|
|
30
|
+
};
|
|
31
|
+
}
|
|
32
|
+
return statePartArg.getState();
|
|
33
|
+
}
|
|
34
|
+
catch (error) {
|
|
35
|
+
console.error('Login failed:', error);
|
|
36
|
+
return statePartArg.getState();
|
|
37
|
+
}
|
|
38
|
+
});
|
|
39
|
+
export async function getAdminBootstrapStatus() {
|
|
40
|
+
const request = new plugins.domtools.plugins.typedrequest.TypedRequest('/typedrequest', 'getAdminBootstrapStatus');
|
|
41
|
+
return request.fire({});
|
|
42
|
+
}
|
|
43
|
+
export async function createInitialAdminUser(optionsArg) {
|
|
44
|
+
const context = getActionContext();
|
|
45
|
+
if (!context.identity) {
|
|
46
|
+
throw new Error('No identity available for admin bootstrap');
|
|
47
|
+
}
|
|
48
|
+
const request = new plugins.domtools.plugins.typedrequest.TypedRequest('/typedrequest', 'createInitialAdminUser');
|
|
49
|
+
const response = await request.fire({
|
|
50
|
+
identity: context.identity,
|
|
51
|
+
email: optionsArg.email,
|
|
52
|
+
name: optionsArg.name,
|
|
53
|
+
password: optionsArg.password,
|
|
54
|
+
enableIdpGlobalAuth: optionsArg.enableIdpGlobalAuth,
|
|
55
|
+
});
|
|
56
|
+
if (response.identity) {
|
|
57
|
+
loginStatePart.setState({
|
|
58
|
+
identity: response.identity,
|
|
59
|
+
isLoggedIn: true,
|
|
60
|
+
});
|
|
61
|
+
}
|
|
62
|
+
return response;
|
|
63
|
+
}
|
|
64
|
+
// Logout Action — always clears state, even if identity is expired/missing
|
|
65
|
+
export const logoutAction = loginStatePart.createAction(async (statePartArg) => {
|
|
66
|
+
const context = getActionContext();
|
|
67
|
+
// Try to notify server, but don't block logout if identity is missing/expired
|
|
68
|
+
if (context.identity) {
|
|
69
|
+
const typedRequest = new plugins.domtools.plugins.typedrequest.TypedRequest('/typedrequest', 'adminLogout');
|
|
70
|
+
try {
|
|
71
|
+
await typedRequest.fire({ identity: context.identity });
|
|
72
|
+
}
|
|
73
|
+
catch (error) {
|
|
74
|
+
console.error('Logout error:', error);
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
// Always clear login state
|
|
78
|
+
return {
|
|
79
|
+
identity: null,
|
|
80
|
+
isLoggedIn: false,
|
|
81
|
+
};
|
|
82
|
+
});
|
|
83
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9naW4uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi90c193ZWIvYXBwc3RhdGUvbG9naW4udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxLQUFLLE9BQU8sTUFBTSxlQUFlLENBQUM7QUFDekMsT0FBTyxLQUFLLFVBQVUsTUFBTSw4QkFBOEIsQ0FBQztBQUMzRCxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBU3ZDLE1BQU0sQ0FBQyxNQUFNLGNBQWMsR0FBRyxNQUFNLFFBQVEsQ0FBQyxZQUFZLENBQ3ZELE9BQU8sRUFDUDtJQUNFLFFBQVEsRUFBRSxJQUFJO0lBQ2QsVUFBVSxFQUFFLEtBQUs7Q0FDbEIsRUFDRCxZQUFZLENBQUMsK0NBQStDO0NBQzdELENBQUM7QUFPRixNQUFNLENBQUMsTUFBTSxnQkFBZ0IsR0FBRyxHQUFtQixFQUFFO0lBQ25ELE1BQU0sUUFBUSxHQUFHLGNBQWMsQ0FBQyxRQUFRLEVBQUcsQ0FBQyxRQUFRLENBQUM7SUFDckQsNkZBQTZGO0lBQzdGLElBQUksUUFBUSxJQUFJLFFBQVEsQ0FBQyxTQUFTLElBQUksUUFBUSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQztRQUN0RSxPQUFPLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxDQUFDO0lBQzVCLENBQUM7SUFDRCxPQUFPLEVBQUUsUUFBUSxFQUFFLENBQUM7QUFDdEIsQ0FBQyxDQUFDO0FBRUYsZUFBZTtBQUNmLE1BQU0sQ0FBQyxNQUFNLFdBQVcsR0FBRyxjQUFjLENBQUMsWUFBWSxDQUluRCxLQUFLLEVBQUUsWUFBWSxFQUFFLE9BQU8sRUFBd0IsRUFBRTtJQUN2RCxNQUFNLFlBQVksR0FBRyxJQUFJLE9BQU8sQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLFlBQVksQ0FBQyxZQUFZLENBRXpFLGVBQWUsRUFBRSxtQ0FBbUMsQ0FBQyxDQUFDO0lBRXhELElBQUksQ0FBQztRQUNI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
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import * as plugins from '../plugins.js';
|
|
2
|
+
import * as interfaces from '../../dist_ts_interfaces/index.js';
|
|
3
|
+
export interface ILogState {
|
|
4
|
+
recentLogs: interfaces.data.ILogEntry[];
|
|
5
|
+
isStreaming: boolean;
|
|
6
|
+
filters: {
|
|
7
|
+
level?: string[];
|
|
8
|
+
category?: string[];
|
|
9
|
+
};
|
|
10
|
+
}
|
|
11
|
+
export declare const logStatePart: plugins.deesElement.domtools.plugins.smartstate.StatePart<string, ILogState>;
|
|
12
|
+
export declare const fetchRecentLogsAction: plugins.deesElement.domtools.plugins.smartstate.StateAction<ILogState, {
|
|
13
|
+
limit?: number;
|
|
14
|
+
level?: "debug" | "info" | "warn" | "error";
|
|
15
|
+
category?: "smtp" | "dns" | "security" | "system" | "email";
|
|
16
|
+
}>;
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import * as plugins from '../plugins.js';
|
|
2
|
+
import * as interfaces from '../../dist_ts_interfaces/index.js';
|
|
3
|
+
import { appState } from './shared.js';
|
|
4
|
+
import { getActionContext } from './login.js';
|
|
5
|
+
export const logStatePart = await appState.getStatePart('logs', {
|
|
6
|
+
recentLogs: [],
|
|
7
|
+
isStreaming: false,
|
|
8
|
+
filters: {},
|
|
9
|
+
}, 'soft');
|
|
10
|
+
// Fetch Recent Logs Action
|
|
11
|
+
export const fetchRecentLogsAction = logStatePart.createAction(async (statePartArg, dataArg) => {
|
|
12
|
+
const context = getActionContext();
|
|
13
|
+
if (!context.identity)
|
|
14
|
+
return statePartArg.getState();
|
|
15
|
+
const logsRequest = new plugins.domtools.plugins.typedrequest.TypedRequest('/typedrequest', 'getRecentLogs');
|
|
16
|
+
const response = await logsRequest.fire({
|
|
17
|
+
identity: context.identity,
|
|
18
|
+
limit: dataArg.limit || 100,
|
|
19
|
+
level: dataArg.level,
|
|
20
|
+
category: dataArg.category,
|
|
21
|
+
});
|
|
22
|
+
return {
|
|
23
|
+
...statePartArg.getState(),
|
|
24
|
+
recentLogs: response.logs,
|
|
25
|
+
};
|
|
26
|
+
});
|
|
27
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9ncy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3RzX3dlYi9hcHBzdGF0ZS9sb2dzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sS0FBSyxPQUFPLE1BQU0sZUFBZSxDQUFDO0FBQ3pDLE9BQU8sS0FBSyxVQUFVLE1BQU0sOEJBQThCLENBQUM7QUFDM0QsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUN2QyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFXOUMsTUFBTSxDQUFDLE1BQU0sWUFBWSxHQUFHLE1BQU0sUUFBUSxDQUFDLFlBQVksQ0FDckQsTUFBTSxFQUNOO0lBQ0UsVUFBVSxFQUFFLEVBQUU7SUFDZCxXQUFXLEVBQUUsS0FBSztJQUNsQixPQUFPLEVBQUUsRUFBRTtDQUNaLEVBQ0QsTUFBTSxDQUNQLENBQUM7QUFFRiwyQkFBMkI7QUFDM0IsTUFBTSxDQUFDLE1BQU0scUJBQXFCLEdBQUcsWUFBWSxDQUFDLFlBQVksQ0FJM0QsS0FBSyxFQUFFLFlBQVksRUFBRSxPQUFPLEVBQXNCLEVBQUU7SUFDckQsTUFBTSxPQUFPLEdBQUcsZ0JBQWdCLEVBQUUsQ0FBQztJQUNuQyxJQUFJLENBQUMsT0FBTyxDQUFDLFFBQVE7UUFBRSxPQUFPLFlBQVksQ0FBQyxRQUFRLEVBQUcsQ0FBQztJQUV2RCxNQUFNLFdBQVcsR0FBRyxJQUFJLE9BQU8sQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLFlBQVksQ0FBQyxZQUFZLENBRXhFLGVBQWUsRUFBRSxlQUFlLENBQUMsQ0FBQztJQUVwQyxNQUFNLFFBQVEsR0FBRyxNQUFNLFdBQVcsQ0FBQyxJQUFJLENBQUM7UUFDdEMsUUFBUSxFQUFFLE9BQU8sQ0FBQyxRQUFRO1FBQzFCLEtBQUssRUFBRSxPQUFPLENBQUMsS0FBSyxJQUFJLEdBQUc7UUFDM0IsS0FBSyxFQUFFLE9BQU8sQ0FBQyxLQUFLO1FBQ3BCLFFBQVEsRUFBRSxPQUFPLENBQUMsUUFBUTtLQUMzQixDQUFDLENBQUM7SUFFSCxPQUFPO1FBQ0wsR0FBRyxZQUFZLENBQUMsUUFBUSxFQUFHO1FBQzNCLFVBQVUsRUFBRSxRQUFRLENBQUMsSUFBSTtLQUMxQixDQUFDO0FBQ0osQ0FBQyxDQUFDLENBQUMifQ==
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
import * as plugins from '../plugins.js';
|
|
2
|
+
import * as interfaces from '../../dist_ts_interfaces/index.js';
|
|
3
|
+
export interface INetworkState {
|
|
4
|
+
connections: interfaces.data.IConnectionInfo[];
|
|
5
|
+
connectionsByIP: {
|
|
6
|
+
[ip: string]: number;
|
|
7
|
+
};
|
|
8
|
+
throughputRate: {
|
|
9
|
+
bytesInPerSecond: number;
|
|
10
|
+
bytesOutPerSecond: number;
|
|
11
|
+
};
|
|
12
|
+
totalBytes: {
|
|
13
|
+
in: number;
|
|
14
|
+
out: number;
|
|
15
|
+
};
|
|
16
|
+
topIPs: Array<{
|
|
17
|
+
ip: string;
|
|
18
|
+
count: number;
|
|
19
|
+
}>;
|
|
20
|
+
topIPsByBandwidth: Array<{
|
|
21
|
+
ip: string;
|
|
22
|
+
count: number;
|
|
23
|
+
bwIn: number;
|
|
24
|
+
bwOut: number;
|
|
25
|
+
}>;
|
|
26
|
+
topASNs: interfaces.data.IAsnActivity[];
|
|
27
|
+
throughputByIP: Array<{
|
|
28
|
+
ip: string;
|
|
29
|
+
in: number;
|
|
30
|
+
out: number;
|
|
31
|
+
}>;
|
|
32
|
+
ipIntelligence: interfaces.data.IIpIntelligenceRecord[];
|
|
33
|
+
domainActivity: interfaces.data.IDomainActivity[];
|
|
34
|
+
throughputHistory: Array<{
|
|
35
|
+
timestamp: number;
|
|
36
|
+
in: number;
|
|
37
|
+
out: number;
|
|
38
|
+
}>;
|
|
39
|
+
requestsPerSecond: number;
|
|
40
|
+
requestsTotal: number;
|
|
41
|
+
backends: interfaces.data.IBackendInfo[];
|
|
42
|
+
frontendProtocols: interfaces.data.IProtocolDistribution | null;
|
|
43
|
+
backendProtocols: interfaces.data.IProtocolDistribution | null;
|
|
44
|
+
lastUpdated: number;
|
|
45
|
+
isLoading: boolean;
|
|
46
|
+
error: string | null;
|
|
47
|
+
}
|
|
48
|
+
export declare const networkStatePart: plugins.deesElement.domtools.plugins.smartstate.StatePart<string, INetworkState>;
|
|
49
|
+
export declare function refreshNetworkIpIntelligence(identity: interfaces.data.IIdentity, ipAddresses: string[]): void;
|
|
50
|
+
export declare const fetchNetworkStatsAction: plugins.deesElement.domtools.plugins.smartstate.StateAction<INetworkState, unknown>;
|
|
@@ -0,0 +1,122 @@
|
|
|
1
|
+
import * as plugins from '../plugins.js';
|
|
2
|
+
import * as interfaces from '../../dist_ts_interfaces/index.js';
|
|
3
|
+
import { appState } from './shared.js';
|
|
4
|
+
import { getActionContext } from './login.js';
|
|
5
|
+
import { runBackgroundRefresh } from './shared.js';
|
|
6
|
+
export const networkStatePart = await appState.getStatePart('network', {
|
|
7
|
+
connections: [],
|
|
8
|
+
connectionsByIP: {},
|
|
9
|
+
throughputRate: { bytesInPerSecond: 0, bytesOutPerSecond: 0 },
|
|
10
|
+
totalBytes: { in: 0, out: 0 },
|
|
11
|
+
topIPs: [],
|
|
12
|
+
topIPsByBandwidth: [],
|
|
13
|
+
topASNs: [],
|
|
14
|
+
throughputByIP: [],
|
|
15
|
+
ipIntelligence: [],
|
|
16
|
+
domainActivity: [],
|
|
17
|
+
throughputHistory: [],
|
|
18
|
+
requestsPerSecond: 0,
|
|
19
|
+
requestsTotal: 0,
|
|
20
|
+
backends: [],
|
|
21
|
+
frontendProtocols: null,
|
|
22
|
+
backendProtocols: null,
|
|
23
|
+
lastUpdated: 0,
|
|
24
|
+
isLoading: false,
|
|
25
|
+
error: null,
|
|
26
|
+
}, 'soft');
|
|
27
|
+
export function refreshNetworkIpIntelligence(identity, ipAddresses) {
|
|
28
|
+
const ips = [...new Set(ipAddresses.filter(Boolean))].slice(0, 100);
|
|
29
|
+
if (ips.length === 0)
|
|
30
|
+
return;
|
|
31
|
+
runBackgroundRefresh('networkIpIntelligence', 'IP intelligence refresh failed:', async () => {
|
|
32
|
+
const intelligenceRequest = new plugins.domtools.plugins.typedrequest.TypedRequest('/typedrequest', 'listIpIntelligence');
|
|
33
|
+
const intelligenceResponse = await intelligenceRequest.fire({
|
|
34
|
+
identity,
|
|
35
|
+
ipAddresses: ips,
|
|
36
|
+
limit: Math.max(100, ips.length),
|
|
37
|
+
});
|
|
38
|
+
networkStatePart.setState({
|
|
39
|
+
...networkStatePart.getState(),
|
|
40
|
+
ipIntelligence: intelligenceResponse.records || [],
|
|
41
|
+
});
|
|
42
|
+
});
|
|
43
|
+
}
|
|
44
|
+
// Fetch Network Stats Action
|
|
45
|
+
export const fetchNetworkStatsAction = networkStatePart.createAction(async (statePartArg) => {
|
|
46
|
+
const context = getActionContext();
|
|
47
|
+
const currentState = statePartArg.getState();
|
|
48
|
+
if (!context.identity)
|
|
49
|
+
return currentState;
|
|
50
|
+
try {
|
|
51
|
+
// Get network stats for throughput and IP data
|
|
52
|
+
const networkStatsRequest = new plugins.domtools.plugins.typedrequest.TypedRequest('/typedrequest', 'getNetworkStats');
|
|
53
|
+
const networkStatsResponse = await networkStatsRequest.fire({
|
|
54
|
+
identity: context.identity,
|
|
55
|
+
});
|
|
56
|
+
// Use the connections data for the connection list
|
|
57
|
+
// and network stats for throughput and IP analytics
|
|
58
|
+
const connectionsByIP = {};
|
|
59
|
+
const throughputByIP = new Map();
|
|
60
|
+
for (const item of networkStatsResponse.throughputByIP || []) {
|
|
61
|
+
throughputByIP.set(item.ip, { in: item.in, out: item.out });
|
|
62
|
+
}
|
|
63
|
+
// Build connectionsByIP from network stats if available
|
|
64
|
+
if (networkStatsResponse.connectionsByIP && Array.isArray(networkStatsResponse.connectionsByIP)) {
|
|
65
|
+
networkStatsResponse.connectionsByIP.forEach((item) => {
|
|
66
|
+
connectionsByIP[item.ip] = item.count;
|
|
67
|
+
});
|
|
68
|
+
}
|
|
69
|
+
const connections = Object.entries(connectionsByIP).map(([ip, count]) => {
|
|
70
|
+
const tp = throughputByIP.get(ip);
|
|
71
|
+
return {
|
|
72
|
+
id: `ip-${ip}`,
|
|
73
|
+
remoteAddress: ip,
|
|
74
|
+
localAddress: 'server',
|
|
75
|
+
startTime: 0,
|
|
76
|
+
protocol: 'https',
|
|
77
|
+
state: 'connected',
|
|
78
|
+
bytesReceived: tp?.in || 0,
|
|
79
|
+
bytesSent: tp?.out || 0,
|
|
80
|
+
connectionCount: count,
|
|
81
|
+
};
|
|
82
|
+
});
|
|
83
|
+
refreshNetworkIpIntelligence(context.identity, [
|
|
84
|
+
...Object.keys(connectionsByIP),
|
|
85
|
+
...(networkStatsResponse.topIPs || []).map((item) => item.ip),
|
|
86
|
+
...(networkStatsResponse.topIPsByBandwidth || []).map((item) => item.ip),
|
|
87
|
+
]);
|
|
88
|
+
return {
|
|
89
|
+
connections,
|
|
90
|
+
connectionsByIP,
|
|
91
|
+
throughputRate: networkStatsResponse.throughputRate || { bytesInPerSecond: 0, bytesOutPerSecond: 0 },
|
|
92
|
+
totalBytes: networkStatsResponse.totalDataTransferred
|
|
93
|
+
? { in: networkStatsResponse.totalDataTransferred.bytesIn, out: networkStatsResponse.totalDataTransferred.bytesOut }
|
|
94
|
+
: { in: 0, out: 0 },
|
|
95
|
+
topIPs: networkStatsResponse.topIPs || [],
|
|
96
|
+
topIPsByBandwidth: networkStatsResponse.topIPsByBandwidth || [],
|
|
97
|
+
topASNs: networkStatsResponse.topASNs || [],
|
|
98
|
+
throughputByIP: networkStatsResponse.throughputByIP || [],
|
|
99
|
+
ipIntelligence: currentState.ipIntelligence,
|
|
100
|
+
domainActivity: networkStatsResponse.domainActivity || [],
|
|
101
|
+
throughputHistory: networkStatsResponse.throughputHistory || [],
|
|
102
|
+
requestsPerSecond: networkStatsResponse.requestsPerSecond || 0,
|
|
103
|
+
requestsTotal: networkStatsResponse.requestsTotal || 0,
|
|
104
|
+
backends: networkStatsResponse.backends || [],
|
|
105
|
+
frontendProtocols: networkStatsResponse.frontendProtocols || null,
|
|
106
|
+
backendProtocols: networkStatsResponse.backendProtocols || null,
|
|
107
|
+
lastUpdated: Date.now(),
|
|
108
|
+
isLoading: false,
|
|
109
|
+
error: null,
|
|
110
|
+
};
|
|
111
|
+
}
|
|
112
|
+
catch (error) {
|
|
113
|
+
console.error('Failed to fetch network stats:', error);
|
|
114
|
+
return {
|
|
115
|
+
...currentState,
|
|
116
|
+
isLoading: false,
|
|
117
|
+
error: error instanceof Error ? error.message : 'Failed to fetch network stats',
|
|
118
|
+
};
|
|
119
|
+
}
|
|
120
|
+
});
|
|
121
|
+
// ============================================================================
|
|
122
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmV0d29yay5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3RzX3dlYi9hcHBzdGF0ZS9uZXR3b3JrLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sS0FBSyxPQUFPLE1BQU0sZUFBZSxDQUFDO0FBQ3pDLE9BQU8sS0FBSyxVQUFVLE1BQU0sOEJBQThCLENBQUM7QUFDM0QsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUN2QyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFDOUMsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sYUFBYSxDQUFDO0FBd0JuRCxNQUFNLENBQUMsTUFBTSxnQkFBZ0IsR0FBRyxNQUFNLFFBQVEsQ0FBQyxZQUFZLENBQ3pELFNBQVMsRUFDVDtJQUNFLFdBQVcsRUFBRSxFQUFFO0lBQ2YsZUFBZSxFQUFFLEVBQUU7SUFDbkIsY0FBYyxFQUFFLEVBQUUsZ0JBQWdCLEVBQUUsQ0FBQyxFQUFFLGlCQUFpQixFQUFFLENBQUMsRUFBRTtJQUM3RCxVQUFVLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUU7SUFDN0IsTUFBTSxFQUFFLEVBQUU7SUFDVixpQkFBaUIsRUFBRSxFQUFFO0lBQ3JCLE9BQU8sRUFBRSxFQUFFO0lBQ1gsY0FBYyxFQUFFLEVBQUU7SUFDbEIsY0FBYyxFQUFFLEVBQUU7SUFDbEIsY0FBYyxFQUFFLEVBQUU7SUFDbEIsaUJBQWlCLEVBQUUsRUFBRTtJQUNyQixpQkFBaUIsRUFBRSxDQUFDO0lBQ3BCLGFBQWEsRUFBRSxDQUFDO0lBQ2hCLFFBQVEsRUFBRSxFQUFFO0lBQ1osaUJBQWlCLEVBQUUsSUFBSTtJQUN2QixnQkFBZ0IsRUFBRSxJQUFJO0lBQ3RCLFdBQVcsRUFBRSxDQUFDO0lBQ2QsU0FBUyxFQUFFLEtBQUs7SUFDaEIsS0FBSyxFQUFFLElBQUk7Q0FDWixFQUNELE1BQU0sQ0FDUCxD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
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import * as plugins from '../plugins.js';
|
|
2
|
+
import * as interfaces from '../../dist_ts_interfaces/index.js';
|
|
3
|
+
export interface IProfilesTargetsState {
|
|
4
|
+
profiles: interfaces.data.ISourceProfile[];
|
|
5
|
+
targets: interfaces.data.INetworkTarget[];
|
|
6
|
+
isLoading: boolean;
|
|
7
|
+
error: string | null;
|
|
8
|
+
lastUpdated: number;
|
|
9
|
+
}
|
|
10
|
+
export declare const profilesTargetsStatePart: plugins.deesElement.domtools.plugins.smartstate.StatePart<string, IProfilesTargetsState>;
|
|
11
|
+
export declare const fetchProfilesAndTargetsAction: plugins.deesElement.domtools.plugins.smartstate.StateAction<IProfilesTargetsState, unknown>;
|
|
12
|
+
export declare const createProfileAction: plugins.deesElement.domtools.plugins.smartstate.StateAction<IProfilesTargetsState, {
|
|
13
|
+
name: string;
|
|
14
|
+
description?: string;
|
|
15
|
+
security: any;
|
|
16
|
+
extendsProfiles?: string[];
|
|
17
|
+
}>;
|
|
18
|
+
export declare const updateProfileAction: plugins.deesElement.domtools.plugins.smartstate.StateAction<IProfilesTargetsState, {
|
|
19
|
+
id: string;
|
|
20
|
+
name?: string;
|
|
21
|
+
description?: string;
|
|
22
|
+
security?: any;
|
|
23
|
+
extendsProfiles?: string[];
|
|
24
|
+
}>;
|
|
25
|
+
export declare const deleteProfileAction: plugins.deesElement.domtools.plugins.smartstate.StateAction<IProfilesTargetsState, {
|
|
26
|
+
id: string;
|
|
27
|
+
force?: boolean;
|
|
28
|
+
}>;
|
|
29
|
+
export declare const createTargetAction: plugins.deesElement.domtools.plugins.smartstate.StateAction<IProfilesTargetsState, {
|
|
30
|
+
name: string;
|
|
31
|
+
description?: string;
|
|
32
|
+
host: string | string[];
|
|
33
|
+
port: number;
|
|
34
|
+
}>;
|
|
35
|
+
export declare const updateTargetAction: plugins.deesElement.domtools.plugins.smartstate.StateAction<IProfilesTargetsState, {
|
|
36
|
+
id: string;
|
|
37
|
+
name?: string;
|
|
38
|
+
description?: string;
|
|
39
|
+
host?: string | string[];
|
|
40
|
+
port?: number;
|
|
41
|
+
}>;
|
|
42
|
+
export declare const deleteTargetAction: plugins.deesElement.domtools.plugins.smartstate.StateAction<IProfilesTargetsState, {
|
|
43
|
+
id: string;
|
|
44
|
+
force?: boolean;
|
|
45
|
+
}>;
|