api_systemdController.ts 956 B

12345678910111213141516171819202122232425
  1. import {
  2. Controller,
  3. Get,
  4. Header,
  5. Route
  6. } from "tsoa";
  7. import systemdService from "../services/systemdService";
  8. import ConfigurationManager from "../config";
  9. import {ServiceDescription} from "../models/service";
  10. import slavery from "../slavery";
  11. import {UnauthorizedMasterApiKey} from "../models/unauthorizedApi";
  12. @Route("/api/services")
  13. export class SystemdServiceController extends Controller {
  14. @Get("/list")
  15. public async getAllServices(@Header() apiKeySignature: string|undefined): Promise<ServiceDescription> {
  16. if (ConfigurationManager.masterPubKey && !slavery.checkMasterKey(apiKeySignature))
  17. throw new UnauthorizedMasterApiKey();
  18. let result: ServiceDescription = { services: {}};
  19. result.services[ConfigurationManager.hostname] = (await systemdService.getAllServices());
  20. await slavery.getSlaveData(result.services, "services", "/api/services/list");
  21. return result;
  22. }
  23. }