mirror of https://github.com/Aelita4/sshmon.git
Move IP storage to database
This commit is contained in:
parent
d55e9c3d45
commit
30865c6bd0
|
@ -1,3 +1,2 @@
|
||||||
node_modules/
|
node_modules/
|
||||||
data.json
|
|
||||||
out/
|
out/
|
|
@ -6,8 +6,6 @@ COPY package*.json ./
|
||||||
|
|
||||||
RUN npm ci
|
RUN npm ci
|
||||||
|
|
||||||
COPY data.json .
|
|
||||||
|
|
||||||
COPY views views
|
COPY views views
|
||||||
|
|
||||||
COPY out out
|
COPY out out
|
||||||
|
|
|
@ -7,7 +7,6 @@ import mysql from 'mysql'
|
||||||
import bcrypt from 'bcrypt'
|
import bcrypt from 'bcrypt'
|
||||||
import url from 'url';
|
import url from 'url';
|
||||||
|
|
||||||
//const __filename = url.fileURLToPath(import.meta.url);
|
|
||||||
const __dirname = url.fileURLToPath(new URL('.', import.meta.url));
|
const __dirname = url.fileURLToPath(new URL('.', import.meta.url));
|
||||||
|
|
||||||
const ping = async (host: string) => {
|
const ping = async (host: string) => {
|
||||||
|
@ -55,8 +54,6 @@ const pings = new Map();
|
||||||
|
|
||||||
let addresses: Array<string> = await getIP();
|
let addresses: Array<string> = await getIP();
|
||||||
|
|
||||||
//if(!existsSync("/usr/src/app/data.json")) writeFileSync("/usr/src/app/data.json", "[]");
|
|
||||||
//let addresses = JSON.parse(readFileSync("/usr/src/app/data.json", {encoding:'utf8', flag:'r'}))
|
|
||||||
addresses.forEach((a: string) => pings.set(a, -1));
|
addresses.forEach((a: string) => pings.set(a, -1));
|
||||||
const timeoutDelay = 60000;
|
const timeoutDelay = 60000;
|
||||||
|
|
||||||
|
|
|
@ -1,19 +1,24 @@
|
||||||
import { Request, Response } from 'express';
|
import { Request, Response } from 'express';
|
||||||
import { existsSync, writeFileSync, readFileSync } from 'fs'
|
import { existsSync, writeFileSync, readFileSync } from 'fs'
|
||||||
|
import { connection } from '../index.js';
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
method: "GET",
|
method: "GET",
|
||||||
url: "/addIP/:ip",
|
url: "/addIP/:ip",
|
||||||
callback: async (data: any, req: Request, res: Response) => {
|
callback: async (data: any, req: Request, res: Response) => {
|
||||||
if(!existsSync("/usr/src/app/data.json")) writeFileSync("/usr/src/app/data.json", "[]");
|
connection.query("SELECT * FROM ips WHERE ip = ?", req.params.ip, (err, results, fields) => {
|
||||||
const json = JSON.parse(readFileSync("/usr/src/app/data.json", {encoding:'utf8', flag:'r'}));
|
if(err) throw err;
|
||||||
|
|
||||||
json.push(req.params.ip);
|
if(results.length > 0) {
|
||||||
|
res.setHeader('Content-Type', 'application/json');
|
||||||
|
res.end(JSON.stringify({ status: "OK" }));
|
||||||
writeFileSync("/usr/src/app/data.json", JSON.stringify(json))
|
} else {
|
||||||
|
connection.query("INSERT INTO ips VALUES (NULL, ?)", [req.params.ip], (errr, resultss, fieldss) => {
|
||||||
res.setHeader('Content-Type', 'application/json');
|
if(errr) throw errr
|
||||||
res.end(JSON.stringify({ status: "OK" }));
|
res.setHeader('Content-Type', 'application/json');
|
||||||
|
res.end(JSON.stringify({ status: "OK" }));
|
||||||
|
});
|
||||||
|
}
|
||||||
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
|
@ -1,18 +1,27 @@
|
||||||
import { Request, Response } from 'express';
|
import { Request, Response } from 'express';
|
||||||
import { existsSync, writeFileSync, readFileSync } from 'fs'
|
import { existsSync, writeFileSync, readFileSync } from 'fs'
|
||||||
|
import { connection } from '../index.js';
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
method: "GET",
|
method: "GET",
|
||||||
url: "/removeIP/:ip",
|
url: "/removeIP/:ip",
|
||||||
callback: async (data: any, req: Request, res: Response) => {
|
callback: async (data: any, req: Request, res: Response) => {
|
||||||
if(!existsSync("/usr/src/app/data.json")) writeFileSync("/usr/src/app/data.json", "[]");
|
connection.query("SELECT * FROM ips WHERE ip = ?", req.params.ip, (err, results, fields) => {
|
||||||
const json = JSON.parse(readFileSync("/usr/src/app/data.json", {encoding:'utf8', flag:'r'}));
|
if(err) throw err;
|
||||||
|
|
||||||
json.splice(json.indexOf(req.params.ip.toString()), 1)
|
if(results.length == 0) {
|
||||||
|
res.setHeader('Content-Type', 'application/json');
|
||||||
|
res.end(JSON.stringify({ status: "OK" }));
|
||||||
|
} else {
|
||||||
|
connection.query("DELETE FROM ips WHERE ip = ?", req.params.ip, (errr, resultss, fieldss) => {
|
||||||
|
if(errr) throw errr
|
||||||
|
res.setHeader('Content-Type', 'application/json');
|
||||||
|
res.end(JSON.stringify({ status: "OK" }));
|
||||||
|
});
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
writeFileSync("/usr/src/app/data.json", JSON.stringify(json))
|
/*res.setHeader('Content-Type', 'application/json');
|
||||||
|
res.end(JSON.stringify({ status: "OK" }));*/
|
||||||
res.setHeader('Content-Type', 'application/json');
|
|
||||||
res.end(JSON.stringify({ status: "OK" }));
|
|
||||||
}
|
}
|
||||||
}
|
}
|
|
@ -1,11 +1,14 @@
|
||||||
import { Request, Response } from 'express';
|
import { Request, Response } from 'express';
|
||||||
import { readFileSync } from 'fs';
|
import { readFileSync } from 'fs';
|
||||||
|
import { getIP } from '../index.js';
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
method: "GET",
|
method: "GET",
|
||||||
url: "/",
|
url: "/",
|
||||||
callback: async (data: any, req: Request, res: Response) => {
|
callback: async (data: any, req: Request, res: Response) => {
|
||||||
data.addresses = JSON.parse(readFileSync("/usr/src/app/data.json", {encoding:'utf8', flag:'r'}));
|
const tmp = await getIP();
|
||||||
|
//@ts-ignore
|
||||||
|
data.addresses = tmp.map(a => a.ip);
|
||||||
//@ts-ignore
|
//@ts-ignore
|
||||||
if(!req.session.user) res.redirect("/login");
|
if(!req.session.user) res.redirect("/login");
|
||||||
else res.render('pages/index.ejs', {
|
else res.render('pages/index.ejs', {
|
||||||
|
|
Loading…
Reference in New Issue