63 lines
2.0 KiB
TypeScript
63 lines
2.0 KiB
TypeScript
import type DcRouter from '../classes.dcrouter.js';
|
|
import * as plugins from '../plugins.js';
|
|
import * as paths from '../paths.js';
|
|
import * as handlers from './handlers/index.js';
|
|
|
|
export class OpsServer {
|
|
public dcRouterRef: DcRouter;
|
|
public server: plugins.typedserver.utilityservers.UtilityWebsiteServer;
|
|
|
|
// TypedRouter for OpsServer-specific handlers
|
|
public typedrouter = new plugins.typedrequest.TypedRouter();
|
|
|
|
// Handler instances
|
|
private adminHandler: handlers.AdminHandler;
|
|
private configHandler: handlers.ConfigHandler;
|
|
private logsHandler: handlers.LogsHandler;
|
|
private securityHandler: handlers.SecurityHandler;
|
|
private statsHandler: handlers.StatsHandler;
|
|
|
|
constructor(dcRouterRefArg: DcRouter) {
|
|
this.dcRouterRef = dcRouterRefArg;
|
|
|
|
// Add our typedrouter to the dcRouter's main typedrouter
|
|
this.dcRouterRef.typedrouter.addTypedRouter(this.typedrouter);
|
|
}
|
|
|
|
public async start() {
|
|
this.server = new plugins.typedserver.utilityservers.UtilityWebsiteServer({
|
|
domain: 'localhost',
|
|
feedMetadata: null,
|
|
serveDir: paths.distServe,
|
|
});
|
|
|
|
// The server has a built-in typedrouter at /typedrequest
|
|
// Add the main dcRouter typedrouter to the server's typedrouter
|
|
this.server.typedrouter.addTypedRouter(this.dcRouterRef.typedrouter);
|
|
|
|
// Set up handlers
|
|
this.setupHandlers();
|
|
|
|
await this.server.start(3000);
|
|
}
|
|
|
|
/**
|
|
* Set up all TypedRequest handlers
|
|
*/
|
|
private setupHandlers(): void {
|
|
// Instantiate all handlers - they self-register with the typedrouter
|
|
this.adminHandler = new handlers.AdminHandler(this);
|
|
this.configHandler = new handlers.ConfigHandler(this);
|
|
this.logsHandler = new handlers.LogsHandler(this);
|
|
this.securityHandler = new handlers.SecurityHandler(this);
|
|
this.statsHandler = new handlers.StatsHandler(this);
|
|
|
|
console.log('✅ OpsServer TypedRequest handlers initialized');
|
|
}
|
|
|
|
public async stop() {
|
|
if (this.server) {
|
|
await this.server.stop();
|
|
}
|
|
}
|
|
} |