@serve.zone/gitops 2.13.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.smartconfig.json +114 -0
- package/binary/gitops.ts +4 -0
- package/changelog.md +185 -0
- package/cli.child.js +4 -0
- package/cli.js +4 -0
- package/cli.ts.js +5 -0
- package/deno.json +10 -0
- package/dist_serve/bundle.js +36362 -0
- package/dist_serve/index.html +33 -0
- package/dist_ts/00_commitinfo_data.d.ts +8 -0
- package/dist_ts/00_commitinfo_data.js +9 -0
- package/dist_ts/cache/classes.cache.cleaner.d.ts +23 -0
- package/dist_ts/cache/classes.cache.cleaner.js +61 -0
- package/dist_ts/cache/classes.cached.document.d.ts +30 -0
- package/dist_ts/cache/classes.cached.document.js +101 -0
- package/dist_ts/cache/classes.cachedb.d.ts +22 -0
- package/dist_ts/cache/classes.cachedb.js +58 -0
- package/dist_ts/cache/classes.secrets.scan.service.d.ts +51 -0
- package/dist_ts/cache/classes.secrets.scan.service.js +237 -0
- package/dist_ts/cache/documents/classes.cached.project.d.ts +13 -0
- package/dist_ts/cache/documents/classes.cached.project.js +101 -0
- package/dist_ts/cache/documents/classes.cached.secret.d.ts +24 -0
- package/dist_ts/cache/documents/classes.cached.secret.js +158 -0
- package/dist_ts/cache/documents/index.d.ts +2 -0
- package/dist_ts/cache/documents/index.js +3 -0
- package/dist_ts/cache/index.d.ts +7 -0
- package/dist_ts/cache/index.js +6 -0
- package/dist_ts/classes/actionlog.d.ts +19 -0
- package/dist_ts/classes/actionlog.js +44 -0
- package/dist_ts/classes/connectionmanager.d.ts +57 -0
- package/dist_ts/classes/connectionmanager.js +247 -0
- package/dist_ts/classes/gitopsapp.d.ts +30 -0
- package/dist_ts/classes/gitopsapp.js +101 -0
- package/dist_ts/classes/jobmanager.d.ts +47 -0
- package/dist_ts/classes/jobmanager.js +301 -0
- package/dist_ts/classes/jobrunners/autobookstackdocs.runner.d.ts +29 -0
- package/dist_ts/classes/jobrunners/autobookstackdocs.runner.js +361 -0
- package/dist_ts/classes/jobrunners/base.jobrunner.d.ts +14 -0
- package/dist_ts/classes/jobrunners/base.jobrunner.js +3 -0
- package/dist_ts/classes/jobrunners/index.d.ts +5 -0
- package/dist_ts/classes/jobrunners/index.js +14 -0
- package/dist_ts/classes/managedsecrets.manager.d.ts +47 -0
- package/dist_ts/classes/managedsecrets.manager.js +247 -0
- package/dist_ts/classes/syncmanager.d.ts +189 -0
- package/dist_ts/classes/syncmanager.js +1787 -0
- package/dist_ts/index.d.ts +6 -0
- package/dist_ts/index.js +32 -0
- package/dist_ts/logging.d.ts +49 -0
- package/dist_ts/logging.js +134 -0
- package/dist_ts/opsserver/classes.opsserver.d.ts +25 -0
- package/dist_ts/opsserver/classes.opsserver.js +70 -0
- package/dist_ts/opsserver/handlers/actionlog.handler.d.ts +9 -0
- package/dist_ts/opsserver/handlers/actionlog.handler.js +24 -0
- package/dist_ts/opsserver/handlers/actions.handler.d.ts +9 -0
- package/dist_ts/opsserver/handlers/actions.handler.js +38 -0
- package/dist_ts/opsserver/handlers/admin.handler.d.ts +19 -0
- package/dist_ts/opsserver/handlers/admin.handler.js +96 -0
- package/dist_ts/opsserver/handlers/connections.handler.d.ts +10 -0
- package/dist_ts/opsserver/handlers/connections.handler.js +109 -0
- package/dist_ts/opsserver/handlers/groups.handler.d.ts +9 -0
- package/dist_ts/opsserver/handlers/groups.handler.js +24 -0
- package/dist_ts/opsserver/handlers/index.d.ts +13 -0
- package/dist_ts/opsserver/handlers/index.js +14 -0
- package/dist_ts/opsserver/handlers/jobs.handler.d.ts +16 -0
- package/dist_ts/opsserver/handlers/jobs.handler.js +146 -0
- package/dist_ts/opsserver/handlers/logs.handler.d.ts +9 -0
- package/dist_ts/opsserver/handlers/logs.handler.js +21 -0
- package/dist_ts/opsserver/handlers/managedsecrets.handler.d.ts +11 -0
- package/dist_ts/opsserver/handlers/managedsecrets.handler.js +110 -0
- package/dist_ts/opsserver/handlers/pipelines.handler.d.ts +31 -0
- package/dist_ts/opsserver/handlers/pipelines.handler.js +204 -0
- package/dist_ts/opsserver/handlers/projects.handler.d.ts +9 -0
- package/dist_ts/opsserver/handlers/projects.handler.js +24 -0
- package/dist_ts/opsserver/handlers/secrets.handler.d.ts +10 -0
- package/dist_ts/opsserver/handlers/secrets.handler.js +171 -0
- package/dist_ts/opsserver/handlers/sync.handler.d.ts +16 -0
- package/dist_ts/opsserver/handlers/sync.handler.js +166 -0
- package/dist_ts/opsserver/handlers/webhook.handler.d.ts +7 -0
- package/dist_ts/opsserver/handlers/webhook.handler.js +55 -0
- package/dist_ts/opsserver/helpers/guards.d.ts +5 -0
- package/dist_ts/opsserver/helpers/guards.js +12 -0
- package/dist_ts/opsserver/index.d.ts +1 -0
- package/dist_ts/opsserver/index.js +2 -0
- package/dist_ts/paths.d.ts +9 -0
- package/dist_ts/paths.js +13 -0
- package/dist_ts/plugins.d.ts +25 -0
- package/dist_ts/plugins.js +32 -0
- package/dist_ts/providers/classes.baseprovider.d.ts +51 -0
- package/dist_ts/providers/classes.baseprovider.js +17 -0
- package/dist_ts/providers/classes.giteaprovider.d.ts +40 -0
- package/dist_ts/providers/classes.giteaprovider.js +224 -0
- package/dist_ts/providers/classes.gitlabprovider.d.ts +39 -0
- package/dist_ts/providers/classes.gitlabprovider.js +207 -0
- package/dist_ts/providers/index.d.ts +3 -0
- package/dist_ts/providers/index.js +4 -0
- package/dist_ts/storage/classes.storagemanager.d.ts +33 -0
- package/dist_ts/storage/classes.storagemanager.js +135 -0
- package/dist_ts/storage/index.d.ts +2 -0
- package/dist_ts/storage/index.js +2 -0
- package/dist_ts/timers.d.ts +4 -0
- package/dist_ts/timers.js +24 -0
- package/dist_ts_bundled/bundle.d.ts +4 -0
- package/dist_ts_bundled/bundle.js +12 -0
- package/dist_ts_interfaces/data/actionlog.d.ts +12 -0
- package/dist_ts_interfaces/data/actionlog.js +2 -0
- package/dist_ts_interfaces/data/branch.d.ts +8 -0
- package/dist_ts_interfaces/data/branch.js +2 -0
- package/dist_ts_interfaces/data/connection.d.ts +12 -0
- package/dist_ts_interfaces/data/connection.js +2 -0
- package/dist_ts_interfaces/data/group.d.ts +10 -0
- package/dist_ts_interfaces/data/group.js +2 -0
- package/dist_ts_interfaces/data/identity.d.ts +7 -0
- package/dist_ts_interfaces/data/identity.js +2 -0
- package/dist_ts_interfaces/data/index.d.ts +11 -0
- package/dist_ts_interfaces/data/index.js +12 -0
- package/dist_ts_interfaces/data/job.d.ts +37 -0
- package/dist_ts_interfaces/data/job.js +2 -0
- package/dist_ts_interfaces/data/managedsecret.d.ts +37 -0
- package/dist_ts_interfaces/data/managedsecret.js +2 -0
- package/dist_ts_interfaces/data/pipeline.d.ts +22 -0
- package/dist_ts_interfaces/data/pipeline.js +2 -0
- package/dist_ts_interfaces/data/project.d.ts +12 -0
- package/dist_ts_interfaces/data/project.js +2 -0
- package/dist_ts_interfaces/data/secret.d.ts +11 -0
- package/dist_ts_interfaces/data/secret.js +2 -0
- package/dist_ts_interfaces/data/sync.d.ts +34 -0
- package/dist_ts_interfaces/data/sync.js +2 -0
- package/dist_ts_interfaces/index.d.ts +5 -0
- package/dist_ts_interfaces/index.js +8 -0
- package/dist_ts_interfaces/plugins.d.ts +2 -0
- package/dist_ts_interfaces/plugins.js +4 -0
- package/dist_ts_interfaces/requests/actionlog.d.ts +15 -0
- package/dist_ts_interfaces/requests/actionlog.js +3 -0
- package/dist_ts_interfaces/requests/actions.d.ts +31 -0
- package/dist_ts_interfaces/requests/actions.js +3 -0
- package/dist_ts_interfaces/requests/admin.d.ts +31 -0
- package/dist_ts_interfaces/requests/admin.js +3 -0
- package/dist_ts_interfaces/requests/connections.d.ts +71 -0
- package/dist_ts_interfaces/requests/connections.js +3 -0
- package/dist_ts_interfaces/requests/groups.d.ts +14 -0
- package/dist_ts_interfaces/requests/groups.js +3 -0
- package/dist_ts_interfaces/requests/index.d.ts +13 -0
- package/dist_ts_interfaces/requests/index.js +14 -0
- package/dist_ts_interfaces/requests/jobs.d.ts +86 -0
- package/dist_ts_interfaces/requests/jobs.js +3 -0
- package/dist_ts_interfaces/requests/logs.d.ts +14 -0
- package/dist_ts_interfaces/requests/logs.js +3 -0
- package/dist_ts_interfaces/requests/managedsecrets.d.ts +84 -0
- package/dist_ts_interfaces/requests/managedsecrets.js +3 -0
- package/dist_ts_interfaces/requests/pipelines.d.ts +55 -0
- package/dist_ts_interfaces/requests/pipelines.js +3 -0
- package/dist_ts_interfaces/requests/projects.d.ts +14 -0
- package/dist_ts_interfaces/requests/projects.js +3 -0
- package/dist_ts_interfaces/requests/secrets.d.ts +72 -0
- package/dist_ts_interfaces/requests/secrets.js +3 -0
- package/dist_ts_interfaces/requests/sync.d.ts +120 -0
- package/dist_ts_interfaces/requests/sync.js +3 -0
- package/dist_ts_interfaces/requests/webhook.d.ts +13 -0
- package/dist_ts_interfaces/requests/webhook.js +3 -0
- package/license +21 -0
- package/package.json +81 -0
- package/readme.md +177 -0
- package/readme.todo.md +3 -0
- package/ts/00_commitinfo_data.ts +8 -0
- package/ts/cache/classes.cache.cleaner.ts +69 -0
- package/ts/cache/classes.cached.document.ts +57 -0
- package/ts/cache/classes.cachedb.ts +72 -0
- package/ts/cache/classes.secrets.scan.service.ts +267 -0
- package/ts/cache/documents/classes.cached.project.ts +32 -0
- package/ts/cache/documents/classes.cached.secret.ts +81 -0
- package/ts/cache/documents/index.ts +2 -0
- package/ts/cache/index.ts +7 -0
- package/ts/classes/actionlog.ts +57 -0
- package/ts/classes/connectionmanager.ts +263 -0
- package/ts/classes/gitopsapp.ts +128 -0
- package/ts/classes/jobmanager.ts +337 -0
- package/ts/classes/jobrunners/autobookstackdocs.runner.ts +435 -0
- package/ts/classes/jobrunners/base.jobrunner.ts +16 -0
- package/ts/classes/jobrunners/index.ts +17 -0
- package/ts/classes/managedsecrets.manager.ts +322 -0
- package/ts/classes/syncmanager.ts +2117 -0
- package/ts/index.ts +37 -0
- package/ts/logging.ts +162 -0
- package/ts/opsserver/classes.opsserver.ts +86 -0
- package/ts/opsserver/handlers/actionlog.handler.ts +30 -0
- package/ts/opsserver/handlers/actions.handler.ts +50 -0
- package/ts/opsserver/handlers/admin.handler.ts +122 -0
- package/ts/opsserver/handlers/connections.handler.ts +162 -0
- package/ts/opsserver/handlers/groups.handler.ts +32 -0
- package/ts/opsserver/handlers/index.ts +13 -0
- package/ts/opsserver/handlers/jobs.handler.ts +189 -0
- package/ts/opsserver/handlers/logs.handler.ts +29 -0
- package/ts/opsserver/handlers/managedsecrets.handler.ts +158 -0
- package/ts/opsserver/handlers/pipelines.handler.ts +281 -0
- package/ts/opsserver/handlers/projects.handler.ts +32 -0
- package/ts/opsserver/handlers/secrets.handler.ts +224 -0
- package/ts/opsserver/handlers/sync.handler.ts +224 -0
- package/ts/opsserver/handlers/webhook.handler.ts +62 -0
- package/ts/opsserver/helpers/guards.ts +16 -0
- package/ts/opsserver/index.ts +1 -0
- package/ts/paths.ts +19 -0
- package/ts/plugins.ts +38 -0
- package/ts/providers/classes.baseprovider.ts +99 -0
- package/ts/providers/classes.giteaprovider.ts +279 -0
- package/ts/providers/classes.gitlabprovider.ts +265 -0
- package/ts/providers/index.ts +3 -0
- package/ts/storage/classes.storagemanager.ts +144 -0
- package/ts/storage/index.ts +2 -0
- package/ts/timers.ts +34 -0
- package/ts_interfaces/data/actionlog.ts +13 -0
- package/ts_interfaces/data/branch.ts +9 -0
- package/ts_interfaces/data/connection.ts +13 -0
- package/ts_interfaces/data/group.ts +10 -0
- package/ts_interfaces/data/identity.ts +7 -0
- package/ts_interfaces/data/index.ts +11 -0
- package/ts_interfaces/data/job.ts +42 -0
- package/ts_interfaces/data/managedsecret.ts +41 -0
- package/ts_interfaces/data/pipeline.ts +32 -0
- package/ts_interfaces/data/project.ts +12 -0
- package/ts_interfaces/data/secret.ts +11 -0
- package/ts_interfaces/data/sync.ts +37 -0
- package/ts_interfaces/index.ts +9 -0
- package/ts_interfaces/plugins.ts +6 -0
- package/ts_interfaces/requests/actionlog.ts +19 -0
- package/ts_interfaces/requests/actions.ts +39 -0
- package/ts_interfaces/requests/admin.ts +43 -0
- package/ts_interfaces/requests/connections.ts +95 -0
- package/ts_interfaces/requests/groups.ts +18 -0
- package/ts_interfaces/requests/index.ts +13 -0
- package/ts_interfaces/requests/jobs.ts +118 -0
- package/ts_interfaces/requests/logs.ts +18 -0
- package/ts_interfaces/requests/managedsecrets.ts +112 -0
- package/ts_interfaces/requests/pipelines.ts +71 -0
- package/ts_interfaces/requests/projects.ts +18 -0
- package/ts_interfaces/requests/secrets.ts +92 -0
- package/ts_interfaces/requests/sync.ts +157 -0
- package/ts_interfaces/requests/webhook.ts +18 -0
- package/ts_web/00_commitinfo_data.ts +8 -0
- package/ts_web/appstate.ts +1251 -0
- package/ts_web/elements/gitops-dashboard.ts +350 -0
- package/ts_web/elements/index.ts +10 -0
- package/ts_web/elements/shared/css.ts +29 -0
- package/ts_web/elements/shared/index.ts +1 -0
- package/ts_web/elements/views/actionlog/index.ts +101 -0
- package/ts_web/elements/views/actions/index.ts +209 -0
- package/ts_web/elements/views/buildlog/index.ts +196 -0
- package/ts_web/elements/views/connections/index.ts +260 -0
- package/ts_web/elements/views/groups/index.ts +134 -0
- package/ts_web/elements/views/jobs/index.ts +424 -0
- package/ts_web/elements/views/managedsecrets/index.ts +502 -0
- package/ts_web/elements/views/overview/index.ts +86 -0
- package/ts_web/elements/views/pipelines/index.ts +561 -0
- package/ts_web/elements/views/projects/index.ts +149 -0
- package/ts_web/elements/views/secrets/index.ts +310 -0
- package/ts_web/elements/views/sync/index.ts +512 -0
- package/ts_web/index.ts +7 -0
- package/ts_web/plugins.ts +15 -0
- package/tsconfig.json +15 -0
package/dist_ts/index.js
ADDED
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Main exports and CLI entry point for GitOps
|
|
3
|
+
*/
|
|
4
|
+
export { GitopsApp } from './classes/gitopsapp.js';
|
|
5
|
+
export { logger } from './logging.js';
|
|
6
|
+
import { GitopsApp } from './classes/gitopsapp.js';
|
|
7
|
+
import { logger } from './logging.js';
|
|
8
|
+
export async function runCli() {
|
|
9
|
+
const args = process.argv.slice(2);
|
|
10
|
+
const command = args[0] || 'server';
|
|
11
|
+
switch (command) {
|
|
12
|
+
case 'server': {
|
|
13
|
+
const port = parseInt(process.env.GITOPS_PORT || '3000', 10);
|
|
14
|
+
const app = new GitopsApp();
|
|
15
|
+
await app.start(port);
|
|
16
|
+
// Handle graceful shutdown
|
|
17
|
+
const shutdown = async () => {
|
|
18
|
+
logger.info('Shutting down...');
|
|
19
|
+
await app.stop();
|
|
20
|
+
process.exit(0);
|
|
21
|
+
};
|
|
22
|
+
process.once('SIGINT', shutdown);
|
|
23
|
+
process.once('SIGTERM', shutdown);
|
|
24
|
+
break;
|
|
25
|
+
}
|
|
26
|
+
default:
|
|
27
|
+
logger.error(`Unknown command: ${command}`);
|
|
28
|
+
logger.info('Usage: gitops [server]');
|
|
29
|
+
process.exit(1);
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi90cy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUVILE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUNuRCxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBRXRDLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUNuRCxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBRXRDLE1BQU0sQ0FBQyxLQUFLLFVBQVUsTUFBTTtJQUMxQixNQUFNLElBQUksR0FBRyxPQUFPLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNuQyxNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksUUFBUSxDQUFDO0lBRXBDLFFBQVEsT0FBTyxFQUFFLENBQUM7UUFDaEIsS0FBSyxRQUFRLENBQUMsQ0FBQyxDQUFDO1lBQ2QsTUFBTSxJQUFJLEdBQUcsUUFBUSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsV0FBVyxJQUFJLE1BQU0sRUFBRSxFQUFFLENBQUMsQ0FBQztZQUM3RCxNQUFNLEdBQUcsR0FBRyxJQUFJLFNBQVMsRUFBRSxDQUFDO1lBQzVCLE1BQU0sR0FBRyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUV0QiwyQkFBMkI7WUFDM0IsTUFBTSxRQUFRLEdBQUcsS0FBSyxJQUFJLEVBQUU7Z0JBQzFCLE1BQU0sQ0FBQyxJQUFJLENBQUMsa0JBQWtCLENBQUMsQ0FBQztnQkFDaEMsTUFBTSxHQUFHLENBQUMsSUFBSSxFQUFFLENBQUM7Z0JBQ2pCLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDbEIsQ0FBQyxDQUFDO1lBRUYsT0FBTyxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsUUFBUSxDQUFDLENBQUM7WUFDakMsT0FBTyxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsUUFBUSxDQUFDLENBQUM7WUFDbEMsTUFBTTtRQUNSLENBQUM7UUFDRDtZQUNFLE1BQU0sQ0FBQyxLQUFLLENBQUMsb0JBQW9CLE9BQU8sRUFBRSxDQUFDLENBQUM7WUFDNUMsTUFBTSxDQUFDLElBQUksQ0FBQyx3QkFBd0IsQ0FBQyxDQUFDO1lBQ3RDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDcEIsQ0FBQztBQUNILENBQUMifQ==
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Logging utilities for GitOps
|
|
3
|
+
*/
|
|
4
|
+
import type { ISyncLogEntry } from '../dist_ts_interfaces/data/sync.js';
|
|
5
|
+
import type { IJobLogEntry } from '../dist_ts_interfaces/data/job.js';
|
|
6
|
+
type LogLevel = 'info' | 'success' | 'warn' | 'error' | 'debug';
|
|
7
|
+
declare class Logger {
|
|
8
|
+
private debugMode;
|
|
9
|
+
private syncLogBuffer;
|
|
10
|
+
private broadcastFn?;
|
|
11
|
+
private jobLogBuffer;
|
|
12
|
+
private jobBroadcastFn?;
|
|
13
|
+
constructor();
|
|
14
|
+
/**
|
|
15
|
+
* Set the broadcast function used to push sync log entries to connected clients.
|
|
16
|
+
*/
|
|
17
|
+
setBroadcastFn(fn: (entry: ISyncLogEntry) => void): void;
|
|
18
|
+
/**
|
|
19
|
+
* Log a sync-related message to both the console and the ring buffer.
|
|
20
|
+
* Also broadcasts to connected frontends via TypedSocket if available.
|
|
21
|
+
*/
|
|
22
|
+
syncLog(level: ISyncLogEntry['level'], message: string, source?: string): void;
|
|
23
|
+
/**
|
|
24
|
+
* Get recent sync log entries.
|
|
25
|
+
*/
|
|
26
|
+
getSyncLogs(limit?: number): ISyncLogEntry[];
|
|
27
|
+
/**
|
|
28
|
+
* Set the broadcast function used to push job log entries to connected clients.
|
|
29
|
+
*/
|
|
30
|
+
setJobBroadcastFn(fn: (entry: IJobLogEntry) => void): void;
|
|
31
|
+
/**
|
|
32
|
+
* Log a job-related message to both the console and the ring buffer.
|
|
33
|
+
* Also broadcasts to connected frontends via TypedSocket if available.
|
|
34
|
+
*/
|
|
35
|
+
jobLog(level: IJobLogEntry['level'], message: string, source?: string): void;
|
|
36
|
+
/**
|
|
37
|
+
* Get recent job log entries.
|
|
38
|
+
*/
|
|
39
|
+
getJobLogs(limit?: number): IJobLogEntry[];
|
|
40
|
+
log(level: LogLevel, message: string, ...args: unknown[]): void;
|
|
41
|
+
info(message: string, ...args: unknown[]): void;
|
|
42
|
+
success(message: string, ...args: unknown[]): void;
|
|
43
|
+
warn(message: string, ...args: unknown[]): void;
|
|
44
|
+
error(message: string, ...args: unknown[]): void;
|
|
45
|
+
debug(message: string, ...args: unknown[]): void;
|
|
46
|
+
private getPrefix;
|
|
47
|
+
}
|
|
48
|
+
export declare const logger: Logger;
|
|
49
|
+
export {};
|
|
@@ -0,0 +1,134 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Logging utilities for GitOps
|
|
3
|
+
*/
|
|
4
|
+
const SYNC_LOG_MAX = 500;
|
|
5
|
+
const JOB_LOG_MAX = 500;
|
|
6
|
+
class Logger {
|
|
7
|
+
debugMode = false;
|
|
8
|
+
syncLogBuffer = [];
|
|
9
|
+
broadcastFn;
|
|
10
|
+
jobLogBuffer = [];
|
|
11
|
+
jobBroadcastFn;
|
|
12
|
+
constructor() {
|
|
13
|
+
this.debugMode = process.argv.includes('--debug') || process.env.DEBUG === 'true';
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* Set the broadcast function used to push sync log entries to connected clients.
|
|
17
|
+
*/
|
|
18
|
+
setBroadcastFn(fn) {
|
|
19
|
+
this.broadcastFn = fn;
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* Log a sync-related message to both the console and the ring buffer.
|
|
23
|
+
* Also broadcasts to connected frontends via TypedSocket if available.
|
|
24
|
+
*/
|
|
25
|
+
syncLog(level, message, source) {
|
|
26
|
+
// Also log to console
|
|
27
|
+
this.log(level, message);
|
|
28
|
+
const entry = {
|
|
29
|
+
timestamp: Date.now(),
|
|
30
|
+
level,
|
|
31
|
+
message,
|
|
32
|
+
source,
|
|
33
|
+
};
|
|
34
|
+
this.syncLogBuffer.push(entry);
|
|
35
|
+
if (this.syncLogBuffer.length > SYNC_LOG_MAX) {
|
|
36
|
+
this.syncLogBuffer.splice(0, this.syncLogBuffer.length - SYNC_LOG_MAX);
|
|
37
|
+
}
|
|
38
|
+
if (this.broadcastFn) {
|
|
39
|
+
this.broadcastFn(entry);
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* Get recent sync log entries.
|
|
44
|
+
*/
|
|
45
|
+
getSyncLogs(limit = 100) {
|
|
46
|
+
return this.syncLogBuffer.slice(-limit);
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
* Set the broadcast function used to push job log entries to connected clients.
|
|
50
|
+
*/
|
|
51
|
+
setJobBroadcastFn(fn) {
|
|
52
|
+
this.jobBroadcastFn = fn;
|
|
53
|
+
}
|
|
54
|
+
/**
|
|
55
|
+
* Log a job-related message to both the console and the ring buffer.
|
|
56
|
+
* Also broadcasts to connected frontends via TypedSocket if available.
|
|
57
|
+
*/
|
|
58
|
+
jobLog(level, message, source) {
|
|
59
|
+
this.log(level, message);
|
|
60
|
+
const entry = {
|
|
61
|
+
timestamp: Date.now(),
|
|
62
|
+
level,
|
|
63
|
+
message,
|
|
64
|
+
source,
|
|
65
|
+
};
|
|
66
|
+
this.jobLogBuffer.push(entry);
|
|
67
|
+
if (this.jobLogBuffer.length > JOB_LOG_MAX) {
|
|
68
|
+
this.jobLogBuffer.splice(0, this.jobLogBuffer.length - JOB_LOG_MAX);
|
|
69
|
+
}
|
|
70
|
+
if (this.jobBroadcastFn) {
|
|
71
|
+
this.jobBroadcastFn(entry);
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
/**
|
|
75
|
+
* Get recent job log entries.
|
|
76
|
+
*/
|
|
77
|
+
getJobLogs(limit = 100) {
|
|
78
|
+
return this.jobLogBuffer.slice(-limit);
|
|
79
|
+
}
|
|
80
|
+
log(level, message, ...args) {
|
|
81
|
+
const prefix = this.getPrefix(level);
|
|
82
|
+
const formattedMessage = `${prefix} ${message}`;
|
|
83
|
+
switch (level) {
|
|
84
|
+
case 'error':
|
|
85
|
+
console.error(formattedMessage, ...args);
|
|
86
|
+
break;
|
|
87
|
+
case 'warn':
|
|
88
|
+
console.warn(formattedMessage, ...args);
|
|
89
|
+
break;
|
|
90
|
+
case 'debug':
|
|
91
|
+
if (this.debugMode) {
|
|
92
|
+
console.log(formattedMessage, ...args);
|
|
93
|
+
}
|
|
94
|
+
break;
|
|
95
|
+
default:
|
|
96
|
+
console.log(formattedMessage, ...args);
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
info(message, ...args) {
|
|
100
|
+
this.log('info', message, ...args);
|
|
101
|
+
}
|
|
102
|
+
success(message, ...args) {
|
|
103
|
+
this.log('success', message, ...args);
|
|
104
|
+
}
|
|
105
|
+
warn(message, ...args) {
|
|
106
|
+
this.log('warn', message, ...args);
|
|
107
|
+
}
|
|
108
|
+
error(message, ...args) {
|
|
109
|
+
this.log('error', message, ...args);
|
|
110
|
+
}
|
|
111
|
+
debug(message, ...args) {
|
|
112
|
+
this.log('debug', message, ...args);
|
|
113
|
+
}
|
|
114
|
+
getPrefix(level) {
|
|
115
|
+
const colors = {
|
|
116
|
+
info: '\x1b[36m',
|
|
117
|
+
success: '\x1b[32m',
|
|
118
|
+
warn: '\x1b[33m',
|
|
119
|
+
error: '\x1b[31m',
|
|
120
|
+
debug: '\x1b[90m',
|
|
121
|
+
};
|
|
122
|
+
const reset = '\x1b[0m';
|
|
123
|
+
const icons = {
|
|
124
|
+
info: 'i',
|
|
125
|
+
success: '+',
|
|
126
|
+
warn: '!',
|
|
127
|
+
error: 'x',
|
|
128
|
+
debug: '*',
|
|
129
|
+
};
|
|
130
|
+
return `${colors[level]}[${icons[level]}]${reset}`;
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
export const logger = new Logger();
|
|
134
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9nZ2luZy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3RzL2xvZ2dpbmcudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0dBRUc7QUFPSCxNQUFNLFlBQVksR0FBRyxHQUFHLENBQUM7QUFDekIsTUFBTSxXQUFXLEdBQUcsR0FBRyxDQUFDO0FBRXhCLE1BQU0sTUFBTTtJQUNGLFNBQVMsR0FBRyxLQUFLLENBQUM7SUFDbEIsYUFBYSxHQUFvQixFQUFFLENBQUM7SUFDcEMsV0FBVyxDQUFrQztJQUM3QyxZQUFZLEdBQW1CLEVBQUUsQ0FBQztJQUNsQyxjQUFjLENBQWlDO0lBRXZEO1FBQ0UsSUFBSSxDQUFDLFNBQVMsR0FBRyxPQUFPLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsSUFBSSxPQUFPLENBQUMsR0FBRyxDQUFDLEtBQUssS0FBSyxNQUFNLENBQUM7SUFDcEYsQ0FBQztJQUVEOztPQUVHO0lBQ0gsY0FBYyxDQUFDLEVBQWtDO1FBQy9DLElBQUksQ0FBQyxXQUFXLEdBQUcsRUFBRSxDQUFDO0lBQ3hCLENBQUM7SUFFRDs7O09BR0c7SUFDSCxPQUFPLENBQUMsS0FBNkIsRUFBRSxPQUFlLEVBQUUsTUFBZTtRQUNyRSxzQkFBc0I7UUFDdEIsSUFBSSxDQUFDLEdBQUcsQ0FBQyxLQUFLLEVBQUUsT0FBTyxDQUFDLENBQUM7UUFFekIsTUFBTSxLQUFLLEdBQWtCO1lBQzNCLFNBQVMsRUFBRSxJQUFJLENBQUMsR0FBRyxFQUFFO1lBQ3JCLEtBQUs7WUFDTCxPQUFPO1lBQ1AsTUFBTTtTQUNQLENBQUM7UUFFRixJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUMvQixJQUFJLElBQUksQ0FBQyxhQUFhLENBQUMsTUFBTSxHQUFHLFlBQVksRUFBRSxDQUFDO1lBQzdDLElBQUksQ0FBQyxhQUFhLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsYUFBYSxDQUFD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
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import * as plugins from '../plugins.js';
|
|
2
|
+
import type { GitopsApp } from '../classes/gitopsapp.js';
|
|
3
|
+
import * as handlers from './handlers/index.js';
|
|
4
|
+
export declare class OpsServer {
|
|
5
|
+
gitopsAppRef: GitopsApp;
|
|
6
|
+
typedrouter: plugins.typedrequest.TypedRouter<import("@api.global/typedrequest-interfaces").ITypedRequest>;
|
|
7
|
+
server: plugins.typedserver.utilityservers.UtilityWebsiteServer;
|
|
8
|
+
adminHandler: handlers.AdminHandler;
|
|
9
|
+
connectionsHandler: handlers.ConnectionsHandler;
|
|
10
|
+
projectsHandler: handlers.ProjectsHandler;
|
|
11
|
+
groupsHandler: handlers.GroupsHandler;
|
|
12
|
+
secretsHandler: handlers.SecretsHandler;
|
|
13
|
+
pipelinesHandler: handlers.PipelinesHandler;
|
|
14
|
+
logsHandler: handlers.LogsHandler;
|
|
15
|
+
webhookHandler: handlers.WebhookHandler;
|
|
16
|
+
actionsHandler: handlers.ActionsHandler;
|
|
17
|
+
actionLogHandler: handlers.ActionLogHandler;
|
|
18
|
+
syncHandler: handlers.SyncHandler;
|
|
19
|
+
managedSecretsHandler: handlers.ManagedSecretsHandler;
|
|
20
|
+
jobsHandler: handlers.JobsHandler;
|
|
21
|
+
constructor(gitopsAppRef: GitopsApp);
|
|
22
|
+
start(port?: number): Promise<void>;
|
|
23
|
+
private setupHandlers;
|
|
24
|
+
stop(): Promise<void>;
|
|
25
|
+
}
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
import * as plugins from '../plugins.js';
|
|
2
|
+
import { logger } from '../logging.js';
|
|
3
|
+
import * as handlers from './handlers/index.js';
|
|
4
|
+
const distServeDir = plugins.path.join(plugins.path.dirname(plugins.nodeUrl.fileURLToPath(import.meta.url)), '../../dist_serve');
|
|
5
|
+
export class OpsServer {
|
|
6
|
+
gitopsAppRef;
|
|
7
|
+
typedrouter = new plugins.typedrequest.TypedRouter();
|
|
8
|
+
server;
|
|
9
|
+
// Handler instances
|
|
10
|
+
adminHandler;
|
|
11
|
+
connectionsHandler;
|
|
12
|
+
projectsHandler;
|
|
13
|
+
groupsHandler;
|
|
14
|
+
secretsHandler;
|
|
15
|
+
pipelinesHandler;
|
|
16
|
+
logsHandler;
|
|
17
|
+
webhookHandler;
|
|
18
|
+
actionsHandler;
|
|
19
|
+
actionLogHandler;
|
|
20
|
+
syncHandler;
|
|
21
|
+
managedSecretsHandler;
|
|
22
|
+
jobsHandler;
|
|
23
|
+
constructor(gitopsAppRef) {
|
|
24
|
+
this.gitopsAppRef = gitopsAppRef;
|
|
25
|
+
}
|
|
26
|
+
async start(port = 3000) {
|
|
27
|
+
// Create webhook handler before server so routes register via addCustomRoutes
|
|
28
|
+
this.webhookHandler = new handlers.WebhookHandler(this);
|
|
29
|
+
this.server = new plugins.typedserver.utilityservers.UtilityWebsiteServer({
|
|
30
|
+
domain: 'localhost',
|
|
31
|
+
feedMetadata: undefined,
|
|
32
|
+
serveDir: distServeDir,
|
|
33
|
+
noCache: true,
|
|
34
|
+
addCustomRoutes: async (typedserver) => {
|
|
35
|
+
this.webhookHandler.registerRoutes(typedserver);
|
|
36
|
+
},
|
|
37
|
+
});
|
|
38
|
+
// Chain typedrouters
|
|
39
|
+
this.server.typedrouter.addTypedRouter(this.typedrouter);
|
|
40
|
+
// Set up all handlers
|
|
41
|
+
await this.setupHandlers();
|
|
42
|
+
await this.server.start(port);
|
|
43
|
+
logger.success(`OpsServer started on http://localhost:${port}`);
|
|
44
|
+
}
|
|
45
|
+
async setupHandlers() {
|
|
46
|
+
// AdminHandler requires async initialization for JWT key generation
|
|
47
|
+
this.adminHandler = new handlers.AdminHandler(this);
|
|
48
|
+
await this.adminHandler.initialize();
|
|
49
|
+
// All other handlers self-register in their constructors
|
|
50
|
+
this.connectionsHandler = new handlers.ConnectionsHandler(this);
|
|
51
|
+
this.projectsHandler = new handlers.ProjectsHandler(this);
|
|
52
|
+
this.groupsHandler = new handlers.GroupsHandler(this);
|
|
53
|
+
this.secretsHandler = new handlers.SecretsHandler(this);
|
|
54
|
+
this.pipelinesHandler = new handlers.PipelinesHandler(this);
|
|
55
|
+
this.logsHandler = new handlers.LogsHandler(this);
|
|
56
|
+
this.actionsHandler = new handlers.ActionsHandler(this);
|
|
57
|
+
this.actionLogHandler = new handlers.ActionLogHandler(this);
|
|
58
|
+
this.syncHandler = new handlers.SyncHandler(this);
|
|
59
|
+
this.managedSecretsHandler = new handlers.ManagedSecretsHandler(this);
|
|
60
|
+
this.jobsHandler = new handlers.JobsHandler(this);
|
|
61
|
+
logger.success('OpsServer TypedRequest handlers initialized');
|
|
62
|
+
}
|
|
63
|
+
async stop() {
|
|
64
|
+
if (this.server) {
|
|
65
|
+
await this.server.stop();
|
|
66
|
+
logger.success('OpsServer stopped');
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xhc3Nlcy5vcHNzZXJ2ZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi90cy9vcHNzZXJ2ZXIvY2xhc3Nlcy5vcHNzZXJ2ZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxLQUFLLE9BQU8sTUFBTSxlQUFlLENBQUM7QUFDekMsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUV2QyxPQUFPLEtBQUssUUFBUSxNQUFNLHFCQUFxQixDQUFDO0FBRWhELE1BQU0sWUFBWSxHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUNwQyxPQUFPLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLGFBQWEsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQ3BFLGtCQUFrQixDQUNuQixDQUFDO0FBRUYsTUFBTSxPQUFPLFNBQVM7SUFDYixZQUFZLENBQVk7SUFDeEIsV0FBVyxHQUFHLElBQUksT0FBTyxDQUFDLFlBQVksQ0FBQyxXQUFXLEVBQUUsQ0FBQztJQUNyRCxNQUFNLENBQTJEO0lBRXhFLG9CQUFvQjtJQUNiLFlBQVksQ0FBeUI7SUFDckMsa0JBQWtCLENBQStCO0lBQ2pELGVBQWUsQ0FBNEI7SUFDM0MsYUFBYSxDQUEwQjtJQUN2QyxjQUFjLENBQTJCO0lBQ3pDLGdCQUFnQixDQUE2QjtJQUM3QyxXQUFXLENBQXdCO0lBQ25DLGNBQWMsQ0FBMkI7SUFDekMsY0FBYyxDQUEyQjtJQUN6QyxnQkFBZ0IsQ0FBNkI7SUFDN0MsV0FBVyxDQUF3QjtJQUNuQyxxQkFBcUIsQ0FBa0M7SUFDdkQsV0FBVyxDQUF3QjtJQUUxQyxZQUFZLFlBQXVCO1FBQ2pDLElBQUksQ0FBQyxZQUFZLEdBQUcsWUFBWSxDQUFDO0lBQ25DLENBQUM7SUFFTSxLQUFLLENBQUMsS0FBSyxDQUFDLElBQUksR0FBRyxJQUFJO1FBQzVCLDhFQUE4RTtRQUM5RSxJQUFJ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
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import * as plugins from '../../plugins.js';
|
|
2
|
+
import type { OpsServer } from '../classes.opsserver.js';
|
|
3
|
+
import * as interfaces from '../../../dist_ts_interfaces/index.js';
|
|
4
|
+
export declare class ActionLogHandler {
|
|
5
|
+
private opsServerRef;
|
|
6
|
+
typedrouter: plugins.typedrequest.TypedRouter<interfaces.typedrequestInterfaces.ITypedRequest>;
|
|
7
|
+
constructor(opsServerRef: OpsServer);
|
|
8
|
+
private registerHandlers;
|
|
9
|
+
}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import * as plugins from '../../plugins.js';
|
|
2
|
+
import * as interfaces from '../../../dist_ts_interfaces/index.js';
|
|
3
|
+
import { requireValidIdentity } from '../helpers/guards.js';
|
|
4
|
+
export class ActionLogHandler {
|
|
5
|
+
opsServerRef;
|
|
6
|
+
typedrouter = new plugins.typedrequest.TypedRouter();
|
|
7
|
+
constructor(opsServerRef) {
|
|
8
|
+
this.opsServerRef = opsServerRef;
|
|
9
|
+
this.opsServerRef.typedrouter.addTypedRouter(this.typedrouter);
|
|
10
|
+
this.registerHandlers();
|
|
11
|
+
}
|
|
12
|
+
registerHandlers() {
|
|
13
|
+
this.typedrouter.addTypedHandler(new plugins.typedrequest.TypedHandler('getActionLog', async (dataArg) => {
|
|
14
|
+
await requireValidIdentity(this.opsServerRef.adminHandler, dataArg);
|
|
15
|
+
const result = await this.opsServerRef.gitopsAppRef.actionLog.query({
|
|
16
|
+
limit: dataArg.limit,
|
|
17
|
+
offset: dataArg.offset,
|
|
18
|
+
entityType: dataArg.entityType,
|
|
19
|
+
});
|
|
20
|
+
return result;
|
|
21
|
+
}));
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWN0aW9ubG9nLmhhbmRsZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi90cy9vcHNzZXJ2ZXIvaGFuZGxlcnMvYWN0aW9ubG9nLmhhbmRsZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxLQUFLLE9BQU8sTUFBTSxrQkFBa0IsQ0FBQztBQUU1QyxPQUFPLEtBQUssVUFBVSxNQUFNLGlDQUFpQyxDQUFDO0FBQzlELE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBRTVELE1BQU0sT0FBTyxnQkFBZ0I7SUFHUDtJQUZiLFdBQVcsR0FBRyxJQUFJLE9BQU8sQ0FBQyxZQUFZLENBQUMsV0FBVyxFQUFFLENBQUM7SUFFNUQsWUFBb0IsWUFBdUI7UUFBdkIsaUJBQVksR0FBWixZQUFZLENBQVc7UUFDekMsSUFBSSxDQUFDLFlBQVksQ0FBQyxXQUFXLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUMvRCxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztJQUMxQixDQUFDO0lBRU8sZ0JBQWdCO1FBQ3RCLElBQUksQ0FBQyxXQUFXLENBQUMsZUFBZSxDQUM5QixJQUFJLE9BQU8sQ0FBQyxZQUFZLENBQUMsWUFBWSxDQUNuQyxjQUFjLEVBQ2QsS0FBSyxFQUFFLE9BQU8sRUFBRSxFQUFFO1lBQ2hCLE1BQU0sb0JBQW9CLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxZQUFZLEVBQUUsT0FBTyxDQUFDLENBQUM7WUFDcEUsTUFBTSxNQUFNLEdBQUcsTUFBTSxJQUFJLENBQUMsWUFBWSxDQUFDLFlBQVksQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDO2dCQUNsRSxLQUFLLEVBQUUsT0FBTyxDQUFDLEtBQUs7Z0JBQ3BCLE1BQU0sRUFBRSxPQUFPLENBQUMsTUFBTTtnQkFDdEIsVUFBVSxFQUFFLE9BQU8sQ0FBQyxVQUFVO2FBQy9CLENBQUMsQ0FBQztZQUNILE9BQU8sTUFBTSxDQUFDO1FBQ2hCLENBQUMsQ0FDRixDQUNGLENBQUM7SUFDSixDQUFDO0NBQ0YifQ==
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import * as plugins from '../../plugins.js';
|
|
2
|
+
import type { OpsServer } from '../classes.opsserver.js';
|
|
3
|
+
import * as interfaces from '../../../dist_ts_interfaces/index.js';
|
|
4
|
+
export declare class ActionsHandler {
|
|
5
|
+
private opsServerRef;
|
|
6
|
+
typedrouter: plugins.typedrequest.TypedRouter<interfaces.typedrequestInterfaces.ITypedRequest>;
|
|
7
|
+
constructor(opsServerRef: OpsServer);
|
|
8
|
+
private registerHandlers;
|
|
9
|
+
}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import * as plugins from '../../plugins.js';
|
|
2
|
+
import * as interfaces from '../../../dist_ts_interfaces/index.js';
|
|
3
|
+
import { requireValidIdentity } from '../helpers/guards.js';
|
|
4
|
+
export class ActionsHandler {
|
|
5
|
+
opsServerRef;
|
|
6
|
+
typedrouter = new plugins.typedrequest.TypedRouter();
|
|
7
|
+
constructor(opsServerRef) {
|
|
8
|
+
this.opsServerRef = opsServerRef;
|
|
9
|
+
this.opsServerRef.typedrouter.addTypedRouter(this.typedrouter);
|
|
10
|
+
this.registerHandlers();
|
|
11
|
+
}
|
|
12
|
+
registerHandlers() {
|
|
13
|
+
// Force scan secrets
|
|
14
|
+
this.typedrouter.addTypedHandler(new plugins.typedrequest.TypedHandler('forceScanSecrets', async (dataArg) => {
|
|
15
|
+
await requireValidIdentity(this.opsServerRef.adminHandler, dataArg);
|
|
16
|
+
const scanService = this.opsServerRef.gitopsAppRef.secretsScanService;
|
|
17
|
+
const result = await scanService.fullScan();
|
|
18
|
+
return {
|
|
19
|
+
ok: true,
|
|
20
|
+
connectionsScanned: result.connectionsScanned,
|
|
21
|
+
secretsFound: result.secretsFound,
|
|
22
|
+
errors: result.errors,
|
|
23
|
+
durationMs: result.durationMs,
|
|
24
|
+
};
|
|
25
|
+
}));
|
|
26
|
+
// Get scan status
|
|
27
|
+
this.typedrouter.addTypedHandler(new plugins.typedrequest.TypedHandler('getScanStatus', async (dataArg) => {
|
|
28
|
+
await requireValidIdentity(this.opsServerRef.adminHandler, dataArg);
|
|
29
|
+
const scanService = this.opsServerRef.gitopsAppRef.secretsScanService;
|
|
30
|
+
return {
|
|
31
|
+
lastScanTimestamp: scanService.lastScanTimestamp,
|
|
32
|
+
isScanning: scanService.isScanning,
|
|
33
|
+
lastResult: scanService.lastScanResult,
|
|
34
|
+
};
|
|
35
|
+
}));
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWN0aW9ucy5oYW5kbGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vdHMvb3Bzc2VydmVyL2hhbmRsZXJzL2FjdGlvbnMuaGFuZGxlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEtBQUssT0FBTyxNQUFNLGtCQUFrQixDQUFDO0FBRTVDLE9BQU8sS0FBSyxVQUFVLE1BQU0saUNBQWlDLENBQUM7QUFDOUQsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFFNUQsTUFBTSxPQUFPLGNBQWM7SUFHTDtJQUZiLFdBQVcsR0FBRyxJQUFJLE9BQU8sQ0FBQyxZQUFZLENBQUMsV0FBVyxFQUFFLENBQUM7SUFFNUQsWUFBb0IsWUFBdUI7UUFBdkIsaUJBQVksR0FBWixZQUFZLENBQVc7UUFDekMsSUFBSSxDQUFDLFlBQVksQ0FBQyxXQUFXLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUMvRCxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztJQUMxQixDQUFDO0lBRU8sZ0JBQWdCO1FBQ3RCLHFCQUFxQjtRQUNyQixJQUFJLENBQUMsV0FBVyxDQUFDLGVBQWUsQ0FDOUIsSUFBSSxPQUFPLENBQUMsWUFBWSxDQUFDLFlBQVksQ0FDbkMsa0JBQWtCLEVBQ2xCLEtBQUssRUFBRSxPQUFPLEVBQUUsRUFBRTtZQUNoQixNQUFNLG9CQUFvQixDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsWUFBWSxFQUFFLE9BQU8sQ0FBQyxDQUFDO1lBQ3BFLE1BQU0sV0FBVyxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsWUFBWSxDQUFDLGtCQUFrQixDQUFDO1lBQ3RFLE1BQU0sTUFBTSxHQUFHLE1BQU0sV0FBVyxDQUFDLFFBQVEsRUFBRSxDQUFDO1lBQzVDLE9BQU87Z0JBQ0wsRUFBRSxFQUFFLElBQUk7Z0JBQ1Isa0JBQWtCLEVBQUUsTUFBTSxDQUFDLGtCQUFrQjtnQkFDN0MsWUFBWSxFQUFFLE1BQU0sQ0FBQyxZQUFZO2dCQUNqQyxNQUFNLEVBQUUsTUFBTSxDQUFDLE1BQU07Z0JBQ3JCLFVBQVUsRUFBRSxNQUFNLENBQUMsVUFBVTthQUM5QixDQUFDO1FBQ0osQ0FBQyxDQUNGLENBQ0YsQ0FBQztRQUVGLGtCQUFrQjtRQUNsQixJQUFJLENBQUMsV0FBVyxDQUFDLGVBQWUsQ0FDOUIsSUFBSSxPQUFPLENBQUMsWUFBWSxDQUFDLFlBQVksQ0FDbkMsZUFBZSxFQUNmLEtBQUssRUFBRSxPQUFPLEVBQUUsRUFBRTtZQUNoQixNQUFNLG9CQUFvQixDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsWUFBWSxFQUFFLE9BQU8sQ0FBQyxDQUFDO1lBQ3BFLE1BQU0sV0FBVyxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsWUFBWSxDQUFDLGtCQUFrQixDQUFDO1lBQ3RFLE9BQU87Z0JBQ0wsaUJBQWlCLEVBQUUsV0FBVyxDQUFDLGlCQUFpQjtnQkFDaEQsVUFBVSxFQUFFLFdBQVcsQ0FBQyxVQUFVO2dCQUNsQyxVQUFVLEVBQUUsV0FBVyxDQUFDLGNBQWM7YUFDdkMsQ0FBQztRQUNKLENBQUMsQ0FDRixDQUNGLENBQUM7SUFDSixDQUFDO0NBQ0YifQ==
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import * as plugins from '../../plugins.js';
|
|
2
|
+
import type { OpsServer } from '../classes.opsserver.js';
|
|
3
|
+
import * as interfaces from '../../../dist_ts_interfaces/index.js';
|
|
4
|
+
export interface IJwtData {
|
|
5
|
+
userId: string;
|
|
6
|
+
status: 'loggedIn' | 'loggedOut';
|
|
7
|
+
expiresAt: number;
|
|
8
|
+
}
|
|
9
|
+
export declare class AdminHandler {
|
|
10
|
+
private opsServerRef;
|
|
11
|
+
typedrouter: plugins.typedrequest.TypedRouter<interfaces.typedrequestInterfaces.ITypedRequest>;
|
|
12
|
+
smartjwtInstance: plugins.smartjwt.SmartJwt<IJwtData>;
|
|
13
|
+
constructor(opsServerRef: OpsServer);
|
|
14
|
+
initialize(): Promise<void>;
|
|
15
|
+
private registerHandlers;
|
|
16
|
+
validIdentityGuard: plugins.smartguard.Guard<{
|
|
17
|
+
identity: interfaces.data.IIdentity;
|
|
18
|
+
}>;
|
|
19
|
+
}
|
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
import * as plugins from '../../plugins.js';
|
|
2
|
+
import { logger } from '../../logging.js';
|
|
3
|
+
import * as interfaces from '../../../dist_ts_interfaces/index.js';
|
|
4
|
+
export class AdminHandler {
|
|
5
|
+
opsServerRef;
|
|
6
|
+
typedrouter = new plugins.typedrequest.TypedRouter();
|
|
7
|
+
smartjwtInstance;
|
|
8
|
+
constructor(opsServerRef) {
|
|
9
|
+
this.opsServerRef = opsServerRef;
|
|
10
|
+
this.opsServerRef.typedrouter.addTypedRouter(this.typedrouter);
|
|
11
|
+
}
|
|
12
|
+
async initialize() {
|
|
13
|
+
this.smartjwtInstance = new plugins.smartjwt.SmartJwt();
|
|
14
|
+
await this.smartjwtInstance.init();
|
|
15
|
+
await this.smartjwtInstance.createNewKeyPair();
|
|
16
|
+
this.registerHandlers();
|
|
17
|
+
}
|
|
18
|
+
registerHandlers() {
|
|
19
|
+
// Login
|
|
20
|
+
this.typedrouter.addTypedHandler(new plugins.typedrequest.TypedHandler('adminLogin', async (dataArg) => {
|
|
21
|
+
const expectedUsername = process.env.GITOPS_ADMIN_USERNAME || 'admin';
|
|
22
|
+
const expectedPassword = process.env.GITOPS_ADMIN_PASSWORD || 'admin';
|
|
23
|
+
if (dataArg.username !== expectedUsername || dataArg.password !== expectedPassword) {
|
|
24
|
+
throw new plugins.typedrequest.TypedResponseError('Invalid credentials');
|
|
25
|
+
}
|
|
26
|
+
const expiresAt = Date.now() + 24 * 3600 * 1000;
|
|
27
|
+
const userId = 'admin';
|
|
28
|
+
const jwt = await this.smartjwtInstance.createJWT({
|
|
29
|
+
userId,
|
|
30
|
+
status: 'loggedIn',
|
|
31
|
+
expiresAt,
|
|
32
|
+
});
|
|
33
|
+
logger.info(`User logged in: ${dataArg.username}`);
|
|
34
|
+
return {
|
|
35
|
+
identity: {
|
|
36
|
+
jwt,
|
|
37
|
+
userId,
|
|
38
|
+
username: dataArg.username,
|
|
39
|
+
expiresAt,
|
|
40
|
+
role: 'admin',
|
|
41
|
+
},
|
|
42
|
+
};
|
|
43
|
+
}));
|
|
44
|
+
// Logout
|
|
45
|
+
this.typedrouter.addTypedHandler(new plugins.typedrequest.TypedHandler('adminLogout', async (_dataArg) => {
|
|
46
|
+
return { ok: true };
|
|
47
|
+
}));
|
|
48
|
+
// Verify Identity
|
|
49
|
+
this.typedrouter.addTypedHandler(new plugins.typedrequest.TypedHandler('verifyIdentity', async (dataArg) => {
|
|
50
|
+
if (!dataArg.identity?.jwt) {
|
|
51
|
+
return { valid: false };
|
|
52
|
+
}
|
|
53
|
+
try {
|
|
54
|
+
const jwtData = await this.smartjwtInstance.verifyJWTAndGetData(dataArg.identity.jwt);
|
|
55
|
+
if (jwtData.expiresAt < Date.now())
|
|
56
|
+
return { valid: false };
|
|
57
|
+
if (jwtData.status !== 'loggedIn')
|
|
58
|
+
return { valid: false };
|
|
59
|
+
return {
|
|
60
|
+
valid: true,
|
|
61
|
+
identity: {
|
|
62
|
+
jwt: dataArg.identity.jwt,
|
|
63
|
+
userId: jwtData.userId,
|
|
64
|
+
username: dataArg.identity.username,
|
|
65
|
+
expiresAt: jwtData.expiresAt,
|
|
66
|
+
role: dataArg.identity.role,
|
|
67
|
+
},
|
|
68
|
+
};
|
|
69
|
+
}
|
|
70
|
+
catch {
|
|
71
|
+
return { valid: false };
|
|
72
|
+
}
|
|
73
|
+
}));
|
|
74
|
+
}
|
|
75
|
+
// Guard for valid identity
|
|
76
|
+
validIdentityGuard = new plugins.smartguard.Guard(async (dataArg) => {
|
|
77
|
+
if (!dataArg.identity?.jwt)
|
|
78
|
+
return false;
|
|
79
|
+
try {
|
|
80
|
+
const jwtData = await this.smartjwtInstance.verifyJWTAndGetData(dataArg.identity.jwt);
|
|
81
|
+
if (jwtData.expiresAt < Date.now())
|
|
82
|
+
return false;
|
|
83
|
+
if (jwtData.status !== 'loggedIn')
|
|
84
|
+
return false;
|
|
85
|
+
if (dataArg.identity.expiresAt !== jwtData.expiresAt)
|
|
86
|
+
return false;
|
|
87
|
+
if (dataArg.identity.userId !== jwtData.userId)
|
|
88
|
+
return false;
|
|
89
|
+
return true;
|
|
90
|
+
}
|
|
91
|
+
catch {
|
|
92
|
+
return false;
|
|
93
|
+
}
|
|
94
|
+
}, { failedHint: 'identity is not valid', name: 'validIdentityGuard' });
|
|
95
|
+
}
|
|
96
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWRtaW4uaGFuZGxlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3RzL29wc3NlcnZlci9oYW5kbGVycy9hZG1pbi5oYW5kbGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sS0FBSyxPQUFPLE1BQU0sa0JBQWtCLENBQUM7QUFDNUMsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBRTFDLE9BQU8sS0FBSyxVQUFVLE1BQU0saUNBQWlDLENBQUM7QUFROUQsTUFBTSxPQUFPLFlBQVk7SUFJSDtJQUhiLFdBQVcsR0FBRyxJQUFJLE9BQU8sQ0FBQyxZQUFZLENBQUMsV0FBVyxFQUFFLENBQUM7SUFDckQsZ0JBQWdCLENBQXVDO0lBRTlELFlBQW9CLFlBQXVCO1FBQXZCLGlCQUFZLEdBQVosWUFBWSxDQUFXO1FBQ3pDLElBQUksQ0FBQyxZQUFZLENBQUMsV0FBVyxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7SUFDakUsQ0FBQztJQUVNLEtBQUssQ0FBQyxVQUFVO1FBQ3JCLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxJQUFJLE9BQU8sQ0FBQyxRQUFRLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDeEQsTUFBTSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDbkMsTUFBTSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztRQUMvQyxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztJQUMxQixDQUFDO0lBRU8sZ0JBQWdCO1FBQ3RCLFFBQVE7UUFDUixJQUFJLENBQUMsV0FBVyxDQUFDLGVBQWUsQ0FDOUIsSUFBSSxPQUFPLENBQUMsWUFBWSxDQUFDLFlBQVksQ0FDbkMsWUFBWSxFQUNaLEtBQUssRUFBRSxPQUFPLEVBQUUsRUFBRTtZQUNoQixNQUFNLGdCQUFnQixHQUFHLE9BQU8sQ0FBQyxHQUFHLENBQUMscUJBQXFCLElB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
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import * as plugins from '../../plugins.js';
|
|
2
|
+
import type { OpsServer } from '../classes.opsserver.js';
|
|
3
|
+
import * as interfaces from '../../../dist_ts_interfaces/index.js';
|
|
4
|
+
export declare class ConnectionsHandler {
|
|
5
|
+
private opsServerRef;
|
|
6
|
+
typedrouter: plugins.typedrequest.TypedRouter<interfaces.typedrequestInterfaces.ITypedRequest>;
|
|
7
|
+
constructor(opsServerRef: OpsServer);
|
|
8
|
+
private get actionLog();
|
|
9
|
+
private registerHandlers;
|
|
10
|
+
}
|