diff --git a/README.md b/README.md
index e87debd..378f4dd 100644
--- a/README.md
+++ b/README.md
@@ -12,7 +12,7 @@
3. Create database and tables
- Script does not create database and tables by default
- - Create database `sshmon` with 2 tables:
+ - Create database `sshmon` with 3 tables:
+
+
+
+ downtime |
+
+
+
+
+ Name |
+ Type |
+ Extra |
+
+
+ id |
+ int |
+ AUTO_INCREMENT PRIMARY KEY |
+
+
+ ip |
+ varchar(255) |
+ |
+
+
+ time |
+ datetime |
+ |
+
+
+ status |
+ varchar(255) |
+ |
+
+
+
4. Register new account in app
5. Login
diff --git a/src/routes/ping.ts b/src/routes/ping.ts
index 90ef131..466cdc9 100644
--- a/src/routes/ping.ts
+++ b/src/routes/ping.ts
@@ -1,4 +1,5 @@
import { Request, Response } from 'express';
+import { connection } from '../index.js';
export default {
method: "GET",
@@ -6,6 +7,21 @@ export default {
callback: async (data: any, req: Request, res: Response) => {
const ip = req.params.ip;
const r = await data.ping(ip);
+ if((Number(data.pings.get(ip).split("_")[0]) + (1000 * 60 * 5)) < Date.now()) {
+ if(!r.alive) connection.query("SELECT * FROM downtime WHERE ip=? AND date=? AND status=?", [ip, new Date(Number(data.pings.get(ip).split("_")[0])).toISOString().slice(0, 19).replace('T', ' '), "DOWN"], (err, results, fields) => {
+ if(err) throw err;
+ if(results.length === 0) connection.query("INSERT INTO downtime VALUES (NULL, ?, ?, ?)", [ip, new Date(Number(data.pings.get(ip).split("_")[0])).toISOString().slice(0, 19).replace('T', ' '), "DOWN"], (errr, resultss, fieldss) => {
+ if(errr) throw errr;
+ });
+ });
+
+ else connection.query("SELECT * FROM downtime WHERE ip=? AND date=? AND status=?", [ip, new Date(Number(data.pings.get(ip).split("_")[0])).toISOString().slice(0, 19).replace('T', ' '), "UP"], (err, results, fields) => {
+ if(err) throw err;
+ if(results.length === 0) connection.query("INSERT INTO downtime VALUES (NULL, ?, ?, ?)", [ip, new Date(Number(data.pings.get(ip).split("_")[0])).toISOString().slice(0, 19).replace('T', ' '), "UP"], (errr, resultss, fieldss) => {
+ if(errr) throw errr;
+ });
+ });
+ }
if(!r.alive && data.pings.get(ip).split("_")[1] === "1") data.pings.set(ip, `${Date.now()}_0`);
else if(r.alive) data.pings.set(ip, `${Date.now()}_1`);
res.setHeader('Content-Type', 'application/json');