diff options
| -rw-r--r-- | README.md | 21 | ||||
| -rwxr-xr-x | init.sh | 10 | ||||
| -rw-r--r-- | server.js | 37 | 
3 files changed, 35 insertions, 33 deletions
@@ -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) @@ -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 @@ -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);  }  | 
