This commit is contained in:
94
server.js
Normal file
94
server.js
Normal file
@@ -0,0 +1,94 @@
|
||||
const express = require("express");
|
||||
const fs = require("fs");
|
||||
const path = require("path");
|
||||
|
||||
const app = express();
|
||||
const PORT = process.env.PORT || 3000;
|
||||
const BASE_FILE = path.join(__dirname, "data", "base.json");
|
||||
|
||||
// Auth credentials from environment
|
||||
const AUTH_LOGIN = process.env.SMS_LOGIN;
|
||||
const AUTH_PASSWORD = process.env.SMS_PASSWORD;
|
||||
|
||||
// Middleware
|
||||
app.use(express.urlencoded({ extended: true }));
|
||||
app.use(express.json());
|
||||
app.use(express.static("public"));
|
||||
|
||||
// Ensure data directory and base.json exist
|
||||
function ensureBaseFile() {
|
||||
const dataDir = path.dirname(BASE_FILE);
|
||||
if (!fs.existsSync(dataDir)) {
|
||||
fs.mkdirSync(dataDir, { recursive: true });
|
||||
}
|
||||
if (!fs.existsSync(BASE_FILE)) {
|
||||
fs.writeFileSync(BASE_FILE, JSON.stringify({ messages: [] }, null, 2));
|
||||
}
|
||||
}
|
||||
|
||||
// Read messages from base.json
|
||||
function readMessages() {
|
||||
ensureBaseFile();
|
||||
const data = fs.readFileSync(BASE_FILE, "utf8");
|
||||
return JSON.parse(data).messages;
|
||||
}
|
||||
|
||||
// Write messages to base.json
|
||||
function writeMessages(messages) {
|
||||
ensureBaseFile();
|
||||
fs.writeFileSync(BASE_FILE, JSON.stringify({ messages }, null, 2));
|
||||
}
|
||||
|
||||
// POST /send-msg - receive and log SMS
|
||||
app.post("/send-msg", (req, res) => {
|
||||
const { login, psw, phones, mes } = req.body;
|
||||
|
||||
if (!login || !psw || !phones || !mes) {
|
||||
return res.status(400).json({ error: "Missing required parameters" });
|
||||
}
|
||||
|
||||
// Validate credentials
|
||||
if (login !== AUTH_LOGIN || psw !== AUTH_PASSWORD) {
|
||||
return res.status(401).json({ error: "Invalid credentials" });
|
||||
}
|
||||
|
||||
const message = {
|
||||
id: Date.now(),
|
||||
timestamp: new Date().toISOString(),
|
||||
login,
|
||||
phone: phones,
|
||||
message: mes,
|
||||
};
|
||||
|
||||
const messages = readMessages();
|
||||
messages.push(message);
|
||||
writeMessages(messages);
|
||||
|
||||
console.log(`[${message.timestamp}] SMS to ${phones}: ${mes}`);
|
||||
|
||||
res.json({ status: "ok", id: message.id });
|
||||
});
|
||||
|
||||
// GET /view-all-sms - view all logged messages
|
||||
app.get("/view-all-sms", (req, res) => {
|
||||
const messages = readMessages();
|
||||
res.json({ messages });
|
||||
});
|
||||
|
||||
// POST /clear-all-sms - clear all messages
|
||||
app.post("/clear-all-sms", (req, res) => {
|
||||
writeMessages([]);
|
||||
console.log("All messages cleared");
|
||||
res.json({ status: "ok", message: "All messages cleared" });
|
||||
});
|
||||
|
||||
// GET / - serve main page
|
||||
app.get("/", (req, res) => {
|
||||
res.sendFile(path.join(__dirname, "public", "index.html"));
|
||||
});
|
||||
|
||||
// Initialize and start server
|
||||
ensureBaseFile();
|
||||
app.listen(PORT, () => {
|
||||
console.log(`SMS OTP Gateway running on port ${PORT}`);
|
||||
});
|
||||
Reference in New Issue
Block a user