mirror of https://github.com/Aelita4/sshmon.git
Adapt docker runtime
For now app DOES NOT run outside docker, unless specifically located at /usr/src/app, idk how to fix this
This commit is contained in:
parent
e2e5c04cf1
commit
f795c986a8
|
@ -8,8 +8,10 @@ RUN npm ci
|
|||
|
||||
COPY data.json .
|
||||
|
||||
COPY out .
|
||||
COPY views views
|
||||
|
||||
COPY out out
|
||||
|
||||
EXPOSE 8080
|
||||
|
||||
CMD ["node", "index.js"]
|
||||
CMD ["node", "out/index.js"]
|
|
@ -0,0 +1,45 @@
|
|||
version: '3'
|
||||
services:
|
||||
app:
|
||||
container_name: sshmon_main
|
||||
restart: always
|
||||
image: sshmon
|
||||
ports:
|
||||
- "8080:8080"
|
||||
depends_on:
|
||||
- mysql
|
||||
networks:
|
||||
- network
|
||||
mysql:
|
||||
container_name: sshmon_mysql
|
||||
restart: always
|
||||
image: mysql:latest
|
||||
environment:
|
||||
MYSQL_ROOT_PASSWORD: 'root'
|
||||
ports:
|
||||
- "3306:3306"
|
||||
volumes:
|
||||
- volume:/var/lib/mysql
|
||||
networks:
|
||||
- network
|
||||
healthcheck:
|
||||
test: "/usr/bin/mysql --user=root --password=root --execute \"SHOW DATABASES;\""
|
||||
interval: 2s
|
||||
timeout: 20s
|
||||
retries: 10
|
||||
pma:
|
||||
image: phpmyadmin/phpmyadmin
|
||||
container_name: sshmon_pma
|
||||
restart: always
|
||||
environment:
|
||||
- PMA_ARBITRARY=1
|
||||
ports:
|
||||
- "8081:80"
|
||||
depends_on:
|
||||
- mysql
|
||||
networks:
|
||||
- network
|
||||
volumes:
|
||||
volume: {}
|
||||
networks:
|
||||
network:
|
10
src/index.ts
10
src/index.ts
|
@ -15,7 +15,7 @@ const ping = async (host: string) => {
|
|||
}
|
||||
|
||||
const connection = mysql.createConnection({
|
||||
host: "localhost",
|
||||
host: "mysql",
|
||||
user: "root",
|
||||
password: "root",
|
||||
database: "sshmon"
|
||||
|
@ -38,14 +38,14 @@ app.use(express.urlencoded());
|
|||
|
||||
const pings = new Map();
|
||||
|
||||
if(!existsSync("../data.json")) writeFileSync("../data.json", "[]");
|
||||
let addresses = JSON.parse(readFileSync("../data.json", {encoding:'utf8', flag:'r'}))
|
||||
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));
|
||||
const timeoutDelay = 60000;
|
||||
|
||||
const routes = readdirSync("./routes");
|
||||
const routes = readdirSync(__dirname + "/routes");
|
||||
routes.forEach(route => {
|
||||
const file = require(`./routes/${route}`);
|
||||
const file = require(`${__dirname}/routes/${route}`);
|
||||
console.log(`[${file.method}] ${file.url}`);
|
||||
switch(file.method) {
|
||||
case "GET": app.get(file.url, file.callback.bind(null, { addresses, ping, pings, timeoutDelay })); break;
|
||||
|
|
|
@ -5,13 +5,13 @@ module.exports = {
|
|||
method: "GET",
|
||||
url: "/addIP/:ip",
|
||||
callback: async (data: any, req: Request, res: Response) => {
|
||||
if(!existsSync("../data.json")) writeFileSync("../data.json", "[]");
|
||||
const json = JSON.parse(readFileSync("../data.json", {encoding:'utf8', flag:'r'}));
|
||||
if(!existsSync("/usr/src/app/data.json")) writeFileSync("/usr/src/app/data.json", "[]");
|
||||
const json = JSON.parse(readFileSync("/usr/src/app/data.json", {encoding:'utf8', flag:'r'}));
|
||||
|
||||
json.push(req.params.ip);
|
||||
|
||||
|
||||
writeFileSync("../data.json", JSON.stringify(json))
|
||||
writeFileSync("/usr/src/app/data.json", JSON.stringify(json))
|
||||
|
||||
res.setHeader('Content-Type', 'application/json');
|
||||
res.end(JSON.stringify({ status: "OK" }));
|
||||
|
|
|
@ -5,12 +5,12 @@ module.exports = {
|
|||
method: "GET",
|
||||
url: "/removeIP/:ip",
|
||||
callback: async (data: any, req: Request, res: Response) => {
|
||||
if(!existsSync("../data.json")) writeFileSync("../data.json", "[]");
|
||||
const json = JSON.parse(readFileSync("../data.json", {encoding:'utf8', flag:'r'}));
|
||||
if(!existsSync("/usr/src/app/data.json")) writeFileSync("/usr/src/app/data.json", "[]");
|
||||
const json = JSON.parse(readFileSync("/usr/src/app/data.json", {encoding:'utf8', flag:'r'}));
|
||||
|
||||
json.splice(json.indexOf(req.params.ip.toString()), 1)
|
||||
|
||||
writeFileSync("../data.json", JSON.stringify(json))
|
||||
writeFileSync("/usr/src/app/data.json", JSON.stringify(json))
|
||||
|
||||
res.setHeader('Content-Type', 'application/json');
|
||||
res.end(JSON.stringify({ status: "OK" }));
|
||||
|
|
|
@ -5,7 +5,7 @@ module.exports = {
|
|||
method: "GET",
|
||||
url: "/",
|
||||
callback: async (data: any, req: Request, res: Response) => {
|
||||
data.addresses = JSON.parse(readFileSync("../data.json", {encoding:'utf8', flag:'r'}));
|
||||
data.addresses = JSON.parse(readFileSync("/usr/src/app/data.json", {encoding:'utf8', flag:'r'}));
|
||||
//@ts-ignore
|
||||
if(!req.session.user) res.redirect("/login");
|
||||
else res.render('pages/index.ejs', {
|
||||
|
|
Loading…
Reference in New Issue