From e1143d56c2dfc8f418c133834b1076ea17134e7b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20Kozohorsk=C3=BD?= Date: Mon, 9 Jan 2023 03:00:31 +0100 Subject: [PATCH] idk --- Procfile | 1 - backend/drda/mailer.js | 27 ---------- backend/models/Config.js | 59 -------------------- backend/server.js | 113 +++++---------------------------------- git_pull.sh | 8 +++ installation.sh | 6 +++ npm_install.sh | 2 + npm_uninstall.sh | 2 + package.json | 21 +++----- restart.sh | 2 + start.sh | 2 + stop.sh | 2 + webhook_init.sh | 33 ++++++++++++ 13 files changed, 77 insertions(+), 201 deletions(-) delete mode 100644 Procfile delete mode 100644 backend/drda/mailer.js delete mode 100644 backend/models/Config.js create mode 100644 git_pull.sh create mode 100644 installation.sh create mode 100644 npm_install.sh create mode 100644 npm_uninstall.sh create mode 100644 restart.sh create mode 100644 start.sh create mode 100644 stop.sh create mode 100644 webhook_init.sh diff --git a/Procfile b/Procfile deleted file mode 100644 index e8f79ea..0000000 --- a/Procfile +++ /dev/null @@ -1 +0,0 @@ -web: npm start \ No newline at end of file diff --git a/backend/drda/mailer.js b/backend/drda/mailer.js deleted file mode 100644 index a71e633..0000000 --- a/backend/drda/mailer.js +++ /dev/null @@ -1,27 +0,0 @@ -const nodemailer = require("nodemailer"); - -let transporter = nodemailer.createTransport({ - host: "smtp.seznam.cz", - port: 465, - secure: true, - auth: { - user: process.env.SEZNAM_EMAIL, - pass: process.env.SEZNAM_PASS, - }, -}); - -transporter.sendMail( - { - from: "registrace@cykablyat.cz", - to: ["honza007cz@hotmail.com"], - subject: "Registrace", - text: "test", - }, - (err, info) => { - if (err) { - console.error(err); - return; - } - console.log(info); - } -); diff --git a/backend/models/Config.js b/backend/models/Config.js deleted file mode 100644 index 87e4e92..0000000 --- a/backend/models/Config.js +++ /dev/null @@ -1,59 +0,0 @@ -/***************************************************************************** -__/\\\\\\\\\\\\\\\__/\\\\\\\\\\\_____/\\\\\\\\\\\\__/\\\\\\\\\\\\\\\_ - _\////////////\\\__\/////\\\///____/\\\//////////__\/\\\///////////__ - ___________/\\\/_______\/\\\______/\\\_____________\/\\\_____________ - _________/\\\/_________\/\\\_____\/\\\____/\\\\\\\_\/\\\\\\\\\\\_____ - _______/\\\/___________\/\\\_____\/\\\___\/////\\\_\/\\\///////______ - _____/\\\/_____________\/\\\_____\/\\\_______\/\\\_\/\\\_____________ - ___/\\\/_______________\/\\\_____\/\\\_______\/\\\_\/\\\_____________ - __/\\\\\\\\\\\\\\\__/\\\\\\\\\\\_\//\\\\\\\\\\\\/__\/\\\\\\\\\\\\\\\_ - _\///////////////__\///////////___\////////////____\///////////////__ -*****************************************************************************/ - -const mongoose = require("mongoose"); - -const configSchema = mongoose.Schema({ - _id: mongoose.Schema.Types.ObjectId, - botAdminDiscordID: { - deafult: [], - type: Array, - }, - ngrokUrl: { - default: null, - type: String, - }, - number: { - default: 1, - type: Number, - }, - PCfeedback: { - default: 0, - type: Number, - }, - pin: { - default: null, - type: Number, - }, - SteambotLogged: { - default: null, - type: Boolean, - }, - SteambotWhoWhenPlaying: { - default: null, - type: String, - }, - ngrokRpiSSH: { - default: "", - type: String, - }, - ngrokZeroSSH: { - default: "", - type: String, - }, - ngrokZeroUrl: { - default: "", - type: String, - }, -}); - -module.exports = mongoose.model("Config", configSchema, "config"); diff --git a/backend/server.js b/backend/server.js index a97516c..77daadc 100644 --- a/backend/server.js +++ b/backend/server.js @@ -1,109 +1,20 @@ -require("dotenv").config(); -require("./utils/mongoose").init(); -require("./drda/mailer.js"); -var hostnamePort; -var host; -var hostPort; - +const fs = require("fs"); const express = require("express"); const { createServer } = require("http"); -const socketIo = require("socket.io"); -var SSHClient = require("ssh2").Client; -var serveStatic = require("serve-static"); +const serveStatic = require("serve-static"); const port = process.env.PORT || 80; -console.log("PORT: " + port); - const app = express(); -app.use(serveStatic("./frontend/")); +const privateKey = fs.readFileSync("/etc/letsencrypt/live/kozohorsky.xyz/privkey.pem"); +const certificate = fs.readFileSync("/etc/letsencrypt/live/kozohorsky.xyz/fullchain.pem"); -const httpServer = createServer(app); -httpServer.listen(port); +console.log("PORT: " + port); +app.use(serveStatic("./frontend/")); -const io = socketIo(httpServer, { - cors: { - origin: ["https://kozohorsky.xyz", "https://kozohorsky-xyz.herokuapp.com"], - methods: ["GET", "POST"], +createServer( + { + key: privateKey, + cert: certificate, }, -}); - -io.on("connection", (socket) => { - console.log(socket.id); - socket.on("getZero", () => { - require("./models/Config").findOne( - { - number: 1, - }, - (err, Cres) => { - if (err) { - console.error(err); - error.sendError(err); - return; - } - socket.emit("takeZero", Cres.ngrokZeroUrl); - } - ); - }); - socket.on("getHost", () => { - require("./models/Config").findOne( - { - number: 1, - }, - (err, Cres) => { - if (err) { - console.error(err); - error.sendError(err); - return; - } - hostnamePort = Cres.ngrokRpiSSH; - host = hostnamePort.match(/\d.tcp.eu.ngrok.io/)[0]; - hostPort = hostnamePort.match(/\d{4,6}/)[0]; - socket.emit("sendHost", { host: host, port: hostPort }); - } - ); - }); - socket.on("hostname", (opt) => { - var conn = new SSHClient(); - conn - .on("ready", function () { - socket.emit("conekt"); - socket.emit("data", "\r\n*** SSH CONNECTION ESTABLISHED ***\r\n"); - conn.shell({ term: "xterm-256color" }, function (err, stream) { - if (err) { - socket.emit("disconekt"); - return socket.emit( - "data", - "\r\n*** SSH SHELL ERROR: " + err.message + " ***\r\n" - ); - } - socket.on("data", function (data) { - stream.write(data); - }); - stream.on("data", function (d) { - socket.emit( - "data", - decodeURIComponent(escape(d.toString("binary"))) - ); - }); - }); - }) - .on("close", function () { - socket.emit("disconekt"); - socket.emit("data", "\r\n*** SSH CONNECTION CLOSED ***\r\n"); - socket.disconnect(true); - }) - .on("error", function (err) { - socket.emit( - "data", - "\r\n*** SSH CONNECTION ERROR: " + err.message + " ***\r\n" - ); - socket.disconnect(true); - }) - .connect({ - host: opt.host, - port: Number(opt.port), - password: opt.pswd, - username: opt.usr, - }); - }); -}); + app +).listen(port); diff --git a/git_pull.sh b/git_pull.sh new file mode 100644 index 0000000..d5c075b --- /dev/null +++ b/git_pull.sh @@ -0,0 +1,8 @@ +#!/bin/bash +cd ~/web-bs +git checkout . +git fetch +git pull +npm run install +npm run reload +chmod +x ~/web-bs/*.sh \ No newline at end of file diff --git a/installation.sh b/installation.sh new file mode 100644 index 0000000..a0f672c --- /dev/null +++ b/installation.sh @@ -0,0 +1,6 @@ +#!/bin/bash +npm install pm2@latest -g +npm run install +pm2 startup +npm run start +pm2 save diff --git a/npm_install.sh b/npm_install.sh new file mode 100644 index 0000000..0d1a067 --- /dev/null +++ b/npm_install.sh @@ -0,0 +1,2 @@ +#!/bin/bash +npm run install \ No newline at end of file diff --git a/npm_uninstall.sh b/npm_uninstall.sh new file mode 100644 index 0000000..3bfbd3d --- /dev/null +++ b/npm_uninstall.sh @@ -0,0 +1,2 @@ +#!/bin/bash +npm run uninstall \ No newline at end of file diff --git a/package.json b/package.json index 200f210..85ff587 100644 --- a/package.json +++ b/package.json @@ -3,23 +3,18 @@ "version": "1.0.0", "main": "backend/server.js", "scripts": { - "start": "npm run node", - "node": "node ./backend/server.js", - "i": "npm i dotenv@latest express@latest finalhandler@latest http@latest mongoose@5.13.7 serve-static@latest socket.io@4.3.1 ssh2@latest fs@latest nodemailer@latest" + "start": "pm2 start ./backend/server.js --time -- trace-warnings", + "start_local": "node ./backend/server.js", + "stop": "pm2 stop server", + "restart": "pm2 restart server", + "reload": "pm2 reload server", + "update": "./git_pull.sh", + "install": "npm i fs@latest express@latest http@latest serve-static@latest" }, "repository": { "type": "git", "url": "git+https://github.com/Zigecek/web-bs.git" }, "author": "kozohorsky.xyz", - "dependencies": { - "dotenv": "^10.0.0", - "express": "^4.17.1", - "http": "^0.0.1-security", - "mongoose": "^5.13.7", - "nodemailer": "^6.7.2", - "serve-static": "^1.14.1", - "socket.io": "^4.3.1", - "ssh2": "^1.5.0" - } + "dependencies": {} } diff --git a/restart.sh b/restart.sh new file mode 100644 index 0000000..e77225d --- /dev/null +++ b/restart.sh @@ -0,0 +1,2 @@ +#!/bin/bash +npm run restart \ No newline at end of file diff --git a/start.sh b/start.sh new file mode 100644 index 0000000..7d6a8f7 --- /dev/null +++ b/start.sh @@ -0,0 +1,2 @@ +#!/bin/bash +npm run start \ No newline at end of file diff --git a/stop.sh b/stop.sh new file mode 100644 index 0000000..2ae66ef --- /dev/null +++ b/stop.sh @@ -0,0 +1,2 @@ +#!/bin/bash +npm run stop \ No newline at end of file diff --git a/webhook_init.sh b/webhook_init.sh new file mode 100644 index 0000000..b792867 --- /dev/null +++ b/webhook_init.sh @@ -0,0 +1,33 @@ +#!/bin/bash +apt install webhook +cd ~ +mkdir -p webhook +cd webhook +touch webhook.yaml +echo " +- id: web-bs + execute-command: $HOME/web-bs/git_pull.sh + command-working-directory: $HOME/web-bs + response-message: \"Web-bs webhook executed successfully\" +" >> webhook.yaml +touch /etc/systemd/system/webhook.service +echo " +[Unit] +Description=Webhook service +After=network.target +StartLimitIntervalSec=0 + +[Service] +Type=simple +Restart=always +User=$USER +ExecStart=/usr/bin/webhook --hooks $HOME/webhook/webhook.yaml --port 9000 -verbose + +[Install] +WantedBy=multi-user.target +" > /etc/systemd/system/webhook.service +systemctl daemon-reload +systemctl enable webhook +systemctl start webhook +systemctl restart webhook +systemctl status webhook \ No newline at end of file