mirror of
https://github.com/Gabi-Zar/Image-Tracker.git
synced 2026-06-15 00:37:09 +02:00
54 lines
2.1 KiB
JavaScript
54 lines
2.1 KiB
JavaScript
import "dotenv/config";
|
|
import express from "express";
|
|
import { publish, MessagePriority } from "ntfy";
|
|
import config from "./config.json" with { type: "json" };
|
|
import fs from "fs/promises";
|
|
import { UAParser } from "ua-parser-js";
|
|
|
|
const app = express();
|
|
const PORT = Number(process.env.PORT);
|
|
|
|
app.set("trust proxy", true);
|
|
|
|
for (const image of config.images) {
|
|
app.get(`/${encodeURI(image.name)}`, async (req, res) => {
|
|
try {
|
|
const buffer = Buffer.from(image.data, "base64");
|
|
const extension = image.name.split(".").at(-1).toLowerCase();
|
|
if (extension === "jpg") extension = "jpeg";
|
|
res.setHeader("Content-Type", `image/${extension}`);
|
|
res.send(buffer);
|
|
const userAgent = UAParser(req.headers["user-agent"]);
|
|
const title = `New connection for image "${image.name}"`;
|
|
const message = `At ${new Date(Date.now()).toLocaleString()}\n
|
|
IP: ${req.ip} | PORT: ${req.socket.remotePort}\n
|
|
Browser: ${userAgent.browser.name} version ${userAgent.browser.version}\n
|
|
OS: ${userAgent.os.name} version ${userAgent.os.version}\n
|
|
CPU architecture: ${userAgent.cpu.architecture}\n
|
|
Languages: ${req.headers["accept-language"]}\n
|
|
Source: ${req.get("Sec-Fetch-Dest")}
|
|
|
|
`;
|
|
|
|
await publish({
|
|
authorization: {
|
|
username: process.env.NTFY_USER,
|
|
password: process.env.NTFY_PASSWORD,
|
|
},
|
|
title: title,
|
|
message: message,
|
|
topic: process.env.NTFY_TOPIC,
|
|
server: process.env.NTFY_SERVER,
|
|
priority: MessagePriority.DEFAULT,
|
|
});
|
|
} catch (error) {
|
|
console.error(error);
|
|
res.status(500).send("Server Error");
|
|
}
|
|
});
|
|
}
|
|
|
|
app.listen(PORT, () => {
|
|
console.log(`Server running on http://localhost:${PORT}`);
|
|
});
|