diff --git a/bin/www.js b/bin/www.js index 2436f2b2..3aa7d8fe 100644 --- a/bin/www.js +++ b/bin/www.js @@ -3,20 +3,19 @@ import http from "node:http"; import * as configFunctions from "../helpers/functions.config.js"; import exitHook from "exit-hook"; import ntfyPublish from "@cityssm/ntfy-publish"; -import debug from "debug"; -const debugWWW = debug("lot-occupancy-system:www"); -let httpServer; +import Debug from "debug"; +const debug = Debug("lot-occupancy-system:www"); const onError = (error) => { if (error.syscall !== "listen") { throw error; } switch (error.code) { case "EACCES": { - debugWWW("Requires elevated privileges"); + debug("Requires elevated privileges"); process.exit(1); } case "EADDRINUSE": { - debugWWW("Port is already in use."); + debug("Port is already in use."); process.exit(1); } default: { @@ -28,37 +27,44 @@ const onListening = (server) => { const addr = server.address(); if (addr) { const bind = typeof addr === "string" ? "pipe " + addr : "port " + addr.port.toString(); - debugWWW("Listening on " + bind); + debug("Listening on " + bind); } }; +const ntfyStartupConfig = configFunctions.getProperty("application.ntfyStartup"); const httpPort = configFunctions.getProperty("application.httpPort"); -if (httpPort) { - httpServer = http.createServer(app); - httpServer.listen(httpPort); - httpServer.on("error", onError); - httpServer.on("listening", () => { - onListening(httpServer); - }); - debugWWW("HTTP listening on " + httpPort.toString()); - const ntfyStartupConfig = configFunctions.getProperty("application.ntfyStartup"); - if (ntfyStartupConfig) { - const topic = ntfyStartupConfig.topic; - const server = ntfyStartupConfig.server; - const ntfyMessage = { - topic, - title: configFunctions.getProperty("application.applicationName"), - message: "Application Started", - tags: ["arrow_up"] - }; - if (server) { - ntfyMessage.server = server; - } - await ntfyPublish(ntfyMessage); - } -} -exitHook(() => { - if (httpServer) { - debugWWW("Closing HTTP"); - httpServer.close(); - } +const httpServer = http.createServer(app); +httpServer.listen(httpPort); +httpServer.on("error", onError); +httpServer.on("listening", () => { + onListening(httpServer); }); +debug("HTTP listening on " + httpPort.toString()); +exitHook(() => { + debug("Closing HTTP"); + httpServer.close(); +}); +if (ntfyStartupConfig) { + const topic = ntfyStartupConfig.topic; + const server = ntfyStartupConfig.server; + const ntfyStartupMessage = { + topic, + title: configFunctions.getProperty("application.applicationName"), + message: "Application Started", + tags: ["arrow_up"] + }; + const ntfyShutdownMessage = { + topic, + title: configFunctions.getProperty("application.applicationName"), + message: "Application Shut Down", + tags: ["arrow_down"] + }; + if (server) { + ntfyStartupMessage.server = server; + ntfyShutdownMessage.server = server; + } + await ntfyPublish(ntfyStartupMessage); + exitHook(() => { + debug("Sending ntfy notification"); + ntfyPublish(ntfyShutdownMessage); + }); +} diff --git a/bin/www.ts b/bin/www.ts index 1d4f0740..2e0a1a04 100644 --- a/bin/www.ts +++ b/bin/www.ts @@ -7,13 +7,12 @@ import http from "node:http"; import * as configFunctions from "../helpers/functions.config.js"; import exitHook from "exit-hook"; + import ntfyPublish from "@cityssm/ntfy-publish"; import type * as ntfyTypes from "@cityssm/ntfy-publish/types"; -import debug from "debug"; -const debugWWW = debug("lot-occupancy-system:www"); - -let httpServer: http.Server; +import Debug from "debug"; +const debug = Debug("lot-occupancy-system:www"); interface ServerError extends Error { syscall: string; @@ -29,14 +28,14 @@ const onError = (error: ServerError) => { switch (error.code) { // eslint-disable-next-line no-fallthrough case "EACCES": { - debugWWW("Requires elevated privileges"); + debug("Requires elevated privileges"); process.exit(1); // break; } // eslint-disable-next-line no-fallthrough case "EADDRINUSE": { - debugWWW("Port is already in use."); + debug("Port is already in use."); process.exit(1); // break; } @@ -53,52 +52,61 @@ const onListening = (server: http.Server) => { if (addr) { const bind = typeof addr === "string" ? "pipe " + addr : "port " + addr.port.toString(); - debugWWW("Listening on " + bind); + debug("Listening on " + bind); } }; -/** +/* * Initialize HTTP */ +const ntfyStartupConfig = configFunctions.getProperty("application.ntfyStartup"); + const httpPort = configFunctions.getProperty("application.httpPort"); -if (httpPort) { - httpServer = http.createServer(app); +const httpServer = http.createServer(app); - httpServer.listen(httpPort); +httpServer.listen(httpPort); - httpServer.on("error", onError); - httpServer.on("listening", () => { - onListening(httpServer); - }); +httpServer.on("error", onError); +httpServer.on("listening", () => { + onListening(httpServer); +}); - debugWWW("HTTP listening on " + httpPort.toString()); - - const ntfyStartupConfig = configFunctions.getProperty("application.ntfyStartup"); - - if (ntfyStartupConfig) { - const topic = ntfyStartupConfig.topic; - const server = ntfyStartupConfig.server; - - const ntfyMessage: ntfyTypes.NtfyMessageOptions = { - topic, - title: configFunctions.getProperty("application.applicationName"), - message: "Application Started", - tags: ["arrow_up"] - }; - - if (server) { - ntfyMessage.server = server; - } - - await ntfyPublish(ntfyMessage); - } -} +debug("HTTP listening on " + httpPort.toString()); exitHook(() => { - if (httpServer) { - debugWWW("Closing HTTP"); - httpServer.close(); - } + debug("Closing HTTP"); + httpServer.close(); }); + +if (ntfyStartupConfig) { + const topic = ntfyStartupConfig.topic; + const server = ntfyStartupConfig.server; + + const ntfyStartupMessage: ntfyTypes.NtfyMessageOptions = { + topic, + title: configFunctions.getProperty("application.applicationName"), + message: "Application Started", + tags: ["arrow_up"] + }; + + const ntfyShutdownMessage: ntfyTypes.NtfyMessageOptions = { + topic, + title: configFunctions.getProperty("application.applicationName"), + message: "Application Shut Down", + tags: ["arrow_down"] + }; + + if (server) { + ntfyStartupMessage.server = server; + ntfyShutdownMessage.server = server; + } + + await ntfyPublish(ntfyStartupMessage); + + exitHook(() => { + debug("Sending ntfy notification"); + ntfyPublish(ntfyShutdownMessage); + }); +}