diff --git a/package-lock.json b/package-lock.json index 2e82619..d9ea8af 100644 --- a/package-lock.json +++ b/package-lock.json @@ -14,6 +14,7 @@ "bits-ui": "^0.9.9", "clsx": "^2.0.0", "croner": "^7.0.5", + "dotenv": "^16.4.5", "express": "^4.18.2", "fs-extra": "^11.1.1", "js-yaml": "^4.1.0", @@ -1627,6 +1628,18 @@ "resolved": "https://registry.npmjs.org/dlv/-/dlv-1.1.3.tgz", "integrity": "sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==" }, + "node_modules/dotenv": { + "version": "16.4.5", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.4.5.tgz", + "integrity": "sha512-ZmdL2rui+eB2YwhsWzjInR8LldtZHGDoQ1ugH85ppHKwpUHL7j7rN0Ti9NCnGiQbhaZ11FpR+7ao1dNsmduNUg==", + "license": "BSD-2-Clause", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://dotenvx.com" + } + }, "node_modules/ee-first": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", diff --git a/package.json b/package.json index 1d0da61..ee872c8 100644 --- a/package.json +++ b/package.json @@ -29,8 +29,8 @@ "scripts": { "build": "node scripts/check.js && vite build", "serve": "node prod.js", - "kener:dev": "cross-env NODE_ENV=development PUBLIC_KENER_FOLDER=./static/kener node scripts/check.js && concurrently \"cross-env NODE_ENV=development PUBLIC_KENER_FOLDER=./static/kener node dev.js\" \"cross-env NODE_ENV=development PUBLIC_KENER_FOLDER=./static/kener vite dev\"", - "kener:dev-monitor": "cross-env NODE_ENV=development PUBLIC_KENER_FOLDER=./static/kener node dev.js", + "kener:dev": "cross-env node scripts/check.js && concurrently \"cross-env node dev.js\" \"cross-env vite dev\"", + "kener:dev-monitor": "cross-env node dev.js", "kener:build": "cross-env NODE_ENV=production node scripts/check.js && cross-env NODE_ENV=production vite build", "kener": "cross-env NODE_ENV=production node prod.js", "prettify": "prettier --write ." @@ -61,6 +61,7 @@ "bits-ui": "^0.9.9", "clsx": "^2.0.0", "croner": "^7.0.5", + "dotenv": "^16.4.5", "express": "^4.18.2", "fs-extra": "^11.1.1", "js-yaml": "^4.1.0", diff --git a/scripts/check.js b/scripts/check.js index d7ce077..1892f21 100644 --- a/scripts/check.js +++ b/scripts/check.js @@ -1,6 +1,7 @@ import { FOLDER, FOLDER_MONITOR, FOLDER_SITE, ENV } from "./constants.js"; import { IsStringURLSafe } from "./tool.js"; - +import dotenv from "dotenv"; +dotenv.config(); import fs from "fs-extra"; let STATUS_OK = false; if (!!process.env.PUBLIC_KENER_FOLDER) { diff --git a/scripts/constants.js b/scripts/constants.js index 8df4ffe..83a11c1 100644 --- a/scripts/constants.js +++ b/scripts/constants.js @@ -1,4 +1,6 @@ // Define your constants +import dotenv from "dotenv"; +dotenv.config(); const FOLDER = process.env.PUBLIC_KENER_FOLDER; const ENV = process.env.NODE_ENV; const MONITOR = "./config/monitors.yaml"; diff --git a/scripts/cron-minute.js b/scripts/cron-minute.js index f8ac581..fb9f140 100644 --- a/scripts/cron-minute.js +++ b/scripts/cron-minute.js @@ -10,6 +10,8 @@ import { import { GetIncidents, GetEndTimeFromBody, GetStartTimeFromBody, CloseIssue } from "./github.js"; import Randomstring from "randomstring"; import Queue from "queue"; +import dotenv from "dotenv"; +dotenv.config(); const Kener_folder = process.env.PUBLIC_KENER_FOLDER; const apiQueue = new Queue({ @@ -103,17 +105,15 @@ function replaceAllOccurrences(originalString, searchString, replacement) { return replacedString; } const pingCall = async (hostsV4, hostsV6) => { - let alive = true; let latencyTotal = 0; let countHosts = hostsV4.length + hostsV6.length; - for (let i = 0; i < hostsV4.length; i++) { const host = hostsV4[i].trim(); try { let res = await ping.promise.probe(host); - alive = alive && res.alive; + alive = alive && res.alive; latencyTotal += res.time; } catch (error) { alive = alive && false; @@ -140,7 +140,7 @@ const pingCall = async (hostsV4, hostsV6) => { latency: parseInt(latencyTotal / countHosts), type: "realtime" }; -} +}; const apiCall = async (envSecrets, url, method, headers, body, timeout, monitorEval) => { let axiosHeaders = {}; axiosHeaders["User-Agent"] = "Kener/0.0.1"; @@ -345,7 +345,7 @@ const Minuter = async (envSecrets, monitor, githubConfig) => { let pingResponse = await pingCall(monitor.ping.hostsV4, monitor.ping.hostsV6); pingData[startOfMinute] = pingResponse; } - + webhookData = await getWebhookData(monitor); manualData = await manualIncident(monitor, githubConfig); //merge noData, apiData, webhookData, dayData diff --git a/scripts/github.js b/scripts/github.js index 76da6c0..2c75a48 100644 --- a/scripts/github.js +++ b/scripts/github.js @@ -2,6 +2,10 @@ import axios from "axios"; import { GetMinuteStartNowTimestampUTC } from "./tool.js"; import { marked } from "marked"; +import { fileURLToPath } from "url"; +import { dirname } from "path"; +import dotenv from "dotenv"; +dotenv.config(); const GH_TOKEN = process.env.GH_TOKEN; const GhnotconfireguredMsg = "owner or repo or GH_TOKEN is undefined. Read the docs to configure github: https://kener.ing/docs#h2github-setup"; diff --git a/scripts/sitemap.js b/scripts/sitemap.js index 68bad71..392eed7 100644 --- a/scripts/sitemap.js +++ b/scripts/sitemap.js @@ -3,6 +3,8 @@ // create sitemap.xml import fs from "fs-extra"; let siteMap = ""; +import dotenv from "dotenv"; +dotenv.config(); const site = JSON.parse(fs.readFileSync(process.env.PUBLIC_KENER_FOLDER + "/site.json", "utf8")); const monitors = JSON.parse( fs.readFileSync(process.env.PUBLIC_KENER_FOLDER + "/monitors.json", "utf8") diff --git a/scripts/startup.js b/scripts/startup.js index c64e597..8e8042e 100644 --- a/scripts/startup.js +++ b/scripts/startup.js @@ -5,6 +5,7 @@ if it does, it will read the file and parse it into a json array of objects each objects will have a name, url, method: required name of each of these objects need to be unique */ +import * as dotenv from "dotenv"; import fs from "fs-extra"; import yaml from "js-yaml"; import { Cron } from "croner"; @@ -105,7 +106,7 @@ const Startup = async () => { ) { monitors[i].includeDegradedInDowntime = false; } - if(hasPing) { + if (hasPing) { let hostsV4 = monitor.ping.hostsV4; let hostsV6 = monitor.ping.hostsV6; let hasV4 = false; @@ -134,7 +135,6 @@ const Startup = async () => { process.exit(1); } monitors[i].hasPing = true; - } if (hasAPI) { let url = monitor.api.url; diff --git a/scripts/tool.js b/scripts/tool.js index d043322..54166c8 100644 --- a/scripts/tool.js +++ b/scripts/tool.js @@ -1,6 +1,7 @@ // @ts-nocheck import { MONITOR, SITE } from "./constants.js"; - +import dotenv from "dotenv"; +dotenv.config(); const IsValidURL = function (url) { return /^(http|https):\/\/[^ "]+$/.test(url); }; @@ -142,7 +143,7 @@ const BeginningOfDay = (options = {}) => { ); return dt.getTime() / 1000; }; -const ValidateIpAddress = function(input) { +const ValidateIpAddress = function (input) { // Check if input is a valid IPv4 address const ipv4Regex = /^(\d{1,3}\.){3}\d{1,3}$/; if (ipv4Regex.test(input)) { @@ -163,7 +164,7 @@ const ValidateIpAddress = function(input) { // If none of the above conditions match, the input is invalid return "Invalid"; -} +}; export { IsValidURL, IsValidHTTPMethod, diff --git a/src/routes/+layout.server.js b/src/routes/+layout.server.js index a021ff1..f2b4da2 100644 --- a/src/routes/+layout.server.js +++ b/src/routes/+layout.server.js @@ -1,9 +1,10 @@ import fs from "fs-extra"; -import { env } from "$env/dynamic/public"; +import { PUBLIC_KENER_FOLDER } from "$env/static/public"; import i18n from "$lib/i18n/server"; export async function load({ params, route, url, cookies, request }) { - let site = JSON.parse(fs.readFileSync(env.PUBLIC_KENER_FOLDER + "/site.json", "utf8")); + console.log(">>>>>>---- +layout.server:6 ", PUBLIC_KENER_FOLDER); + let site = JSON.parse(fs.readFileSync(PUBLIC_KENER_FOLDER + "/site.json", "utf8")); const headers = request.headers; const userAgent = headers.get("user-agent"); let localTz = "GMT";