From 6b16aac33932af2f0cfd765f9d0aaae46eebdca4 Mon Sep 17 00:00:00 2001 From: nin0dev Date: Sun, 2 Feb 2025 14:45:25 -0500 Subject: [PATCH] init my glorious creating --- .gitignore | 3 +++ .prettierrc.json | 7 +++++++ index.mjs | 41 +++++++++++++++++++++++++++++++++++++++++ package.json | 5 +++++ pnpm-lock.yaml | 29 +++++++++++++++++++++++++++++ 5 files changed, 85 insertions(+) create mode 100644 .gitignore create mode 100644 .prettierrc.json create mode 100644 index.mjs create mode 100644 package.json create mode 100644 pnpm-lock.yaml diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..8fd5067 --- /dev/null +++ b/.gitignore @@ -0,0 +1,3 @@ +node_modules/ +.pnpm-store +.env \ No newline at end of file diff --git a/.prettierrc.json b/.prettierrc.json new file mode 100644 index 0000000..7d4d7d9 --- /dev/null +++ b/.prettierrc.json @@ -0,0 +1,7 @@ +{ + "tabWidth": 4, + "useTabs": true, + "singleQuote": false, + "arrowParens": "avoid", + "trailingComma": "none" +} diff --git a/index.mjs b/index.mjs new file mode 100644 index 0000000..d0d598d --- /dev/null +++ b/index.mjs @@ -0,0 +1,41 @@ +// @ts-check + +import { readFileSync, watch } from "fs"; +import { readFile } from "fs/promises"; + +let lastFlaggedLength = 0; + +watch("/opt/endlessh/endlessh.INFO", async (eventType, filename) => { + const fileContent = (await readFile("/opt/endlessh/endlessh.INFO", "utf8")) + .split("\n") + .filter(line => line.includes("ACCEPT")); + if (lastFlaggedLength !== fileContent.length) { + lastFlaggedLength = fileContent.length; + const entry = fileContent[fileContent.length - 1]; + // @ts-ignore + const ip = entry.match(/host=(\S+) /)[1]; + console.log(ip); + const response = await ( + await fetch(`http://ip-api.com/json/${ip}`) + ).json(); + const t = Math.floor(Date.now() / 1000); + const embed = { + title: "New login", + description: `> **Time:** at ()\n> **IP:** \`${response.query}\`` + }; + if (response.status === "success") { + embed.description += `\n**Country:** ${response.country}\n**Region:** ${response.regionName}\n**City:** ${response.city}\n**Provider:** ${response.as}`; + } + + // @ts-ignore + fetch(process.env.WEBHOOK, { + method: "POST", + headers: { + "Content-Type": "application/json" + }, + body: JSON.stringify({ + embeds: [embed] + }) + }); + } +}); diff --git a/package.json b/package.json new file mode 100644 index 0000000..dec3f25 --- /dev/null +++ b/package.json @@ -0,0 +1,5 @@ +{ + "dependencies": { + "@types/node": "^22.13.0" + } +} diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml new file mode 100644 index 0000000..fcb4385 --- /dev/null +++ b/pnpm-lock.yaml @@ -0,0 +1,29 @@ +lockfileVersion: '9.0' + +settings: + autoInstallPeers: true + excludeLinksFromLockfile: false + +importers: + + .: + dependencies: + '@types/node': + specifier: ^22.13.0 + version: 22.13.0 + +packages: + + '@types/node@22.13.0': + resolution: {integrity: sha512-ClIbNe36lawluuvq3+YYhnIN2CELi+6q8NpnM7PYp4hBn/TatfboPgVSm2rwKRfnV2M+Ty9GWDFI64KEe+kysA==} + + undici-types@6.20.0: + resolution: {integrity: sha512-Ny6QZ2Nju20vw1SRHe3d9jVu6gJ+4e3+MMpqu7pqE5HT6WsTSlce++GQmK5UXS8mzV8DSYHrQH+Xrf2jVcuKNg==} + +snapshots: + + '@types/node@22.13.0': + dependencies: + undici-types: 6.20.0 + + undici-types@6.20.0: {}