aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJoel Kronqvist <work.joelkronqvist@pm.me>2022-05-13 16:46:13 +0300
committerJoel Kronqvist <work.joelkronqvist@pm.me>2022-05-13 16:46:13 +0300
commit98a7a9947828514372d873b88fcdcdf44a358dd3 (patch)
tree53aef1f6e72087e40e8843c4684332424adfc7e7
parent080c5819d87b933816d724a83f3bf4f1686770a7 (diff)
parentb05d15e4e2771b31881fe8f0cf4c1deb8a2f4b58 (diff)
downloadLYLLRuoka-98a7a9947828514372d873b88fcdcdf44a358dd3.tar.gz
LYLLRuoka-98a7a9947828514372d873b88fcdcdf44a358dd3.zip
Merge branch 'development'
-rw-r--r--README.md21
-rwxr-xr-xinit.sh10
-rw-r--r--server.js37
3 files changed, 35 insertions, 33 deletions
diff --git a/README.md b/README.md
index 13fb409..c00d541 100644
--- a/README.md
+++ b/README.md
@@ -2,7 +2,7 @@
Follow these steps to install everything required for the project to run.
## Install the FoodJS repository
-Just clone it from github. If you want the server to be able to update itself automatically without modifying `init.sh`, you will have to do this in your home folder.
+Just clone it from github.
```
git clone "https://github.com/JoelHMikael/FoodJS.git"
```
@@ -142,19 +142,14 @@ INSERT INTO devs (name, description, contact) VALUES ('[name]', '[description]',
> Insert the values in the quotation marks, don't change the text before the `VALUES` keyword.
# Automatic server code updates
-You can make the server update itself from github. To make this work, move `~/FoodJS/init.sh` to `~/init.sh`:
-```
-mv ~/FoodJS/init.sh ~/init.sh
-```
-> Note also that `init.sh` will update the server to `~/FoodJS`. If you want to keep the server somewhere elsewhere, you will have to modify the script a little bit.
-This script should run at reboot, so next up you will have to set up some cronjobs:
+You can make the server update itself from github. The code that updates everything is in the FoodJS folder (top-level of repository) in the file `init.sh`. It should run at reboot and it should have the environment variable PATH_TO_LYLLRUOKA set pointing to the FoodJS folder **without** a trailing backslash.
-To your crontab:
-```
-@reboot ~/init.sh
-```
-To the crontab of **root** (you may have to update the shutdown path):
+Add to **roots** crontab (run `sudo crontab -e`):
```
+@reboot PATH_TO_LYLLRUOKA=[the path] [the path]/init.sh
+# For example:
+# @reboot PATH_TO_LYLLRUOKA='/home/foobar/FoodJS' /home/foobar/FoodJS/init.sh
+
0 0 * * 7 /sbin/shutdown -r
```
-If you need to troubleshoot the initialization, you can find both normal and error logs in /tmp/slogs (text file) \ No newline at end of file
+If you need to troubleshoot the initialization, you can find both normal and error logs in /tmp/slogs (text file)
diff --git a/init.sh b/init.sh
index 8ff0aae..51791d6 100755
--- a/init.sh
+++ b/init.sh
@@ -4,10 +4,8 @@ exec 2>>/tmp/slogs
echo | date
echo "Init running"
-cd ~
-
echo "Removing old packages..."
-rm -rf ./FoodJS
+rm -rf $PATH_TO_LYLLRUOKA
echo "Waiting for connection..."
while [ ! "$(ping 'www.github.com' -c 1)" ]
@@ -15,9 +13,11 @@ do
sleep 5
done
+cd "${PATH_TO_LYLLRUOKA%%FoodJS}"
+
echo "Cloning new packages..."
git clone "https://github.com/JoelHMikael/FoodJS.git"
+cd $PATH_TO_LYLLRUOKA
echo "Starting server..."
-cd ~/FoodJS
-node ./server.js
+node server.js
diff --git a/server.js b/server.js
index 79fc50c..d112d76 100644
--- a/server.js
+++ b/server.js
@@ -1,5 +1,6 @@
//const http = require("http");
const https = require("https");
+const http = require("http");
const url = require("url");
const food = require("./food.js");
const SQL_DBS = require("./database.js");
@@ -96,34 +97,40 @@ async function init()
res.end();
}
- // start server
- const runningServer = https.createServer(httpsOpts, server).listen(8080);
+ // start servers
+ const httpsServer = https.createServer(httpsOpts, server).listen(443);
+ const httpServer = http.createServer(server).listen(80);
// stop server
- async function closeServer() {
+ async function closeServers() {
console.log("Updating stats to DB...")
const uptime = Math.ceil((((new Date()).getTime() - startDate.getTime()) / 1000) / (24 * 60 * 60));
const monthOfStart = `${startDate.getMonth() + 1}`.padStart(2, "0");
const monthDayOfStart = `${startDate.getDate()}`.padStart(2, "0");
- await SQLDB.query("INSERT INTO stats VALUES (?, ?, ?, ?)", [
- `${startDate.getFullYear()}-${monthOfStart}-${monthDayOfStart}`,
- uptime,
- visitorCount,
- Math.round(visitorCount / uptime)
- ]);
+ try {
+ await SQLDB.query("INSERT INTO stats VALUES (?, ?, ?, ?)", [
+ `${startDate.getFullYear()}-${monthOfStart}-${monthDayOfStart}`,
+ uptime,
+ visitorCount,
+ Math.round(visitorCount / uptime)
+ ]);
+ } catch(e) {
+ console.log(`\nERROR! Probably because updating the statistics several times a day is not supported, at least yet. Here's the error:\n${e}\n`);
+ }
console.log("Done. Shutting down...");
await SQLDB.close();
- console.log("MySQL closed");
- runningServer.close();
- console.log("Server shut down");
+ console.log("MySQL connection closed");
+ httpsServer.close();
+ httpServer.close();
+ console.log("Servers shut down");
console.log("Process exiting...");
process.exit(0);
}
- process.on("SIGINT", closeServer);
- process.on("SIGQUIT", closeServer);
- process.on("SIGTERM", closeServer);
+ process.on("SIGINT", closeServers);
+ process.on("SIGQUIT", closeServers);
+ process.on("SIGTERM", closeServers);
}