add\fix basepath
All checks were successful
Build SMS Gateway / Build image (push) Successful in 11s
All checks were successful
Build SMS Gateway / Build image (push) Successful in 11s
This commit is contained in:
10
README.md
10
README.md
@@ -127,15 +127,23 @@ curl -X POST http://localhost:3000/clear-all-sms
|
|||||||
| PORT | 3000 | Порт сервера |
|
| PORT | 3000 | Порт сервера |
|
||||||
| SMS_LOGIN | - | Логин для авторизации (обяз) |
|
| SMS_LOGIN | - | Логин для авторизации (обяз) |
|
||||||
| SMS_PASSWORD | - | Пароль для авторизации (обяз)|
|
| SMS_PASSWORD | - | Пароль для авторизации (обяз)|
|
||||||
|
| BASE_PATH | / | Базовый путь для всех роутов |
|
||||||
|
|
||||||
Переменные `SMS_LOGIN` и `SMS_PASSWORD` задаются в `docker-compose.yml`:
|
Пример настройки в `docker-compose.yml`:
|
||||||
|
|
||||||
```yaml
|
```yaml
|
||||||
environment:
|
environment:
|
||||||
- SMS_LOGIN=admin
|
- SMS_LOGIN=admin
|
||||||
- SMS_PASSWORD=secret
|
- SMS_PASSWORD=secret
|
||||||
|
- BASE_PATH=/sms
|
||||||
```
|
```
|
||||||
|
|
||||||
|
При `BASE_PATH=/sms` все эндпоинты будут доступны по путям:
|
||||||
|
- `POST /sms/send-msg`
|
||||||
|
- `GET /sms/view-all-sms`
|
||||||
|
- `POST /sms/clear-all-sms`
|
||||||
|
- `GET /sms/` - веб-интерфейс
|
||||||
|
|
||||||
Изменение порта в docker-compose.yml:
|
Изменение порта в docker-compose.yml:
|
||||||
|
|
||||||
```yaml
|
```yaml
|
||||||
|
|||||||
@@ -9,4 +9,5 @@ services:
|
|||||||
environment:
|
environment:
|
||||||
- SMS_LOGIN=admin
|
- SMS_LOGIN=admin
|
||||||
- SMS_PASSWORD=secret
|
- SMS_PASSWORD=secret
|
||||||
|
# - BASE_PATH=/sms
|
||||||
restart: unless-stopped
|
restart: unless-stopped
|
||||||
|
|||||||
21
server.js
21
server.js
@@ -5,15 +5,18 @@ const path = require("path");
|
|||||||
const app = express();
|
const app = express();
|
||||||
const PORT = process.env.PORT || 3000;
|
const PORT = process.env.PORT || 3000;
|
||||||
const BASE_FILE = path.join(__dirname, "data", "base.json");
|
const BASE_FILE = path.join(__dirname, "data", "base.json");
|
||||||
|
const BASE_PATH = (process.env.BASE_PATH || "/").replace(/\/$/, "") || "/";
|
||||||
|
|
||||||
// Auth credentials from environment
|
// Auth credentials from environment
|
||||||
const AUTH_LOGIN = process.env.SMS_LOGIN;
|
const AUTH_LOGIN = process.env.SMS_LOGIN;
|
||||||
const AUTH_PASSWORD = process.env.SMS_PASSWORD;
|
const AUTH_PASSWORD = process.env.SMS_PASSWORD;
|
||||||
|
|
||||||
|
// Router for all endpoints
|
||||||
|
const router = express.Router();
|
||||||
|
|
||||||
// Middleware
|
// Middleware
|
||||||
app.use(express.urlencoded({ extended: true }));
|
app.use(express.urlencoded({ extended: true }));
|
||||||
app.use(express.json());
|
app.use(express.json());
|
||||||
app.use(express.static("public"));
|
|
||||||
|
|
||||||
// Ensure data directory and base.json exist
|
// Ensure data directory and base.json exist
|
||||||
function ensureBaseFile() {
|
function ensureBaseFile() {
|
||||||
@@ -40,7 +43,7 @@ function writeMessages(messages) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// POST /send-msg - receive and log SMS
|
// POST /send-msg - receive and log SMS
|
||||||
app.post("/send-msg", (req, res) => {
|
router.post("/send-msg", (req, res) => {
|
||||||
const { login, psw, phones, mes } = req.body;
|
const { login, psw, phones, mes } = req.body;
|
||||||
|
|
||||||
if (!login || !psw || !phones || !mes) {
|
if (!login || !psw || !phones || !mes) {
|
||||||
@@ -70,25 +73,31 @@ app.post("/send-msg", (req, res) => {
|
|||||||
});
|
});
|
||||||
|
|
||||||
// GET /view-all-sms - view all logged messages
|
// GET /view-all-sms - view all logged messages
|
||||||
app.get("/view-all-sms", (req, res) => {
|
router.get("/view-all-sms", (req, res) => {
|
||||||
const messages = readMessages();
|
const messages = readMessages();
|
||||||
res.json({ messages });
|
res.json({ messages });
|
||||||
});
|
});
|
||||||
|
|
||||||
// POST /clear-all-sms - clear all messages
|
// POST /clear-all-sms - clear all messages
|
||||||
app.post("/clear-all-sms", (req, res) => {
|
router.post("/clear-all-sms", (req, res) => {
|
||||||
writeMessages([]);
|
writeMessages([]);
|
||||||
console.log("All messages cleared");
|
console.log("All messages cleared");
|
||||||
res.json({ status: "ok", message: "All messages cleared" });
|
res.json({ status: "ok", message: "All messages cleared" });
|
||||||
});
|
});
|
||||||
|
|
||||||
|
// Serve static files
|
||||||
|
router.use(express.static(path.join(__dirname, "public")));
|
||||||
|
|
||||||
// GET / - serve main page
|
// GET / - serve main page
|
||||||
app.get("/", (req, res) => {
|
router.get("/", (req, res) => {
|
||||||
res.sendFile(path.join(__dirname, "public", "index.html"));
|
res.sendFile(path.join(__dirname, "public", "index.html"));
|
||||||
});
|
});
|
||||||
|
|
||||||
|
// Mount router at BASE_PATH
|
||||||
|
app.use(BASE_PATH, router);
|
||||||
|
|
||||||
// Initialize and start server
|
// Initialize and start server
|
||||||
ensureBaseFile();
|
ensureBaseFile();
|
||||||
app.listen(PORT, () => {
|
app.listen(PORT, () => {
|
||||||
console.log(`SMS OTP Gateway running on port ${PORT}`);
|
console.log(`SMS OTP Gateway running on port ${PORT}, base path: ${BASE_PATH}`);
|
||||||
});
|
});
|
||||||
|
|||||||
Reference in New Issue
Block a user