aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJoel Kronqvist <work.joelkronqvist@gmail.com>2022-10-16 18:43:10 +0300
committerJoel Kronqvist <work.joelkronqvist@gmail.com>2022-10-16 18:43:10 +0300
commit6b1797eecbe51bac727fb682f2a90945bdafc592 (patch)
tree6e584cfd03ae20af68f7cbd7a24c95de841da118
parent4b0ac9a0a2a8762c25771ef6da15157d6f745390 (diff)
downloadLYLLRuoka-6b1797eecbe51bac727fb682f2a90945bdafc592.tar.gz
LYLLRuoka-6b1797eecbe51bac727fb682f2a90945bdafc592.zip
More changes to setup.sh. I have no clue how to write bash scripts.
-rwxr-xr-xsetup.sh58
1 files changed, 31 insertions, 27 deletions
diff --git a/setup.sh b/setup.sh
index 9e9d179..b937630 100755
--- a/setup.sh
+++ b/setup.sh
@@ -1,4 +1,4 @@
-#!/bin/sh
+#!/bin/bash
echo "WIP. Don't use this yet."
@@ -7,59 +7,63 @@ if [ "$(whoami)" != "root" ]; then
exit
fi
-echo "This install will notify about it's success in the end. If you don't see a message telling that everything went fine, the installation has failed at some point."
+echo -e "This interactive script will install most of the things needed to run LYLLRuoka, except for:\n\t* The actual data to serve on the database\n\t* A SSL/TLS certificate\n\t* uhh\nWhen finished, THE INSTALL WILL TELL THAT IT SUCCEEDED. If you don't see a message confirming the success of the installation, the installation HAS FAILED. Remember to check that.\n"
set -e
-echo "Next up is a few questions that are needed during the installation."
+echo 'The script will now ask a few questions that are going to be needed during the installation.'
-echo "Install directory for LYLLRuoka? (leave blank for home)"
+echo -e '\nInstall directory for LYLLRuoka? (leave blank for home)'
read path
-mkdir "$path/LYLLRuoka"
+mkdir -p "$path/LYLLRuoka"
cd "$path/LYLLRuoka"
-echo "Choose the mysql user hostname. (type localhost, if unsure)"
+echo -e '\nChoose the mysql user hostname. (type localhost, if unsure)'
read host
-echo "Choose the mysql username."
+echo -e '\nChoose the mysql username.'
read name
-echo "Choose the mysql password."
+echo 'Choose the mysql password.'
read -s passw
-echo "A TLS/SSL certificate is required. Assuming that you are in the directory where the server code is located, you will have to add the certificate in '../Certificate/key.pem' and '../Certificate/cert.pem'. If you don't have a certificate now, this script can create a self-signed certificate to you for testing purposes, but browsers will warn their users about some 'security risk' when entering the site. Do you want to get a testing certificate generated? [Y/n]"
+echo -e "\nA TLS/SSL certificate is required. Assuming that you are in the directory where the server code is located, you will have to add the certificate in '../Certificate/key.pem' and '../Certificate/cert.pem'. If you don't have a certificate now, this script can create a self-signed certificate to you for testing purposes, but browsers will warn their users about some 'security risk' when entering the site. Do you want to get a testing certificate generated? [Y/n]"
read certans
echo ""
if [ "$certans" == "Y" ]; then
- echo "Generating certificete..."
+ echo "You can leave the next fields empty if you don't want to fill them in."
+ echo "What do you want to be the 'Common Name (e.g. server FQDN or YOUR name)' shown in the testing certificate?"
+ read common_name
+ echo "What do you want to be the email address shown in the testing certificate?"
+ read email
+ echo -e '\nGenerating certificete...\n'
openssl genrsa -out key.pem 2> /dev/null
- echo "You will have to answer some questions to get the self signed certificate."
- openssl req -new -key key.pem -out csr.pem
+ echo -e "FI\nUusimaa\nLohja\nLohjan Yhteislyseon Lukio\n\n$common_name\n$email\n\n\n" | openssl req -new -key key.pem -out csr.pem > /dev/null
openssl x509 -req -days 9999 -in csr.pem -signkey key.pem -out cert.pem 2> /dev/null
rm csr.pem
mkdir -p Certificate
mv -t Certificate key.pem cert.pem
- echo "Done!\n"
+ echo -e 'Done!\n'
fi
-echo "Installing MySQL..."
+echo 'Installing MySQL...'
apt-get -y install mysql-server > /dev/null
-echo "Done!\n"
+echo -e 'Done!\n'
echo "Now that MySQL has installed you can run the program 'mysql_secure_installation'. This is recommended, but there has been (read: I have had) problems with it sometimes. Try running it now as root. If it just doesn't seem to work, you can do without it, if you just make sure your server has a firewall that blocks requests from other computers to MySQL and have only trusted persons have access to the server computer. Press enter when you are ready..."
read
-echo "Setting up MySQL database..."
-echo "CREATE DATABASE lyllruoka;\nUSE lyllruoka;\n\nCREATE TABLE shiftnames (\n\tday INT,\n\tid INT,\n\tname VARCHAR(128) NOT NULL,\n\tPRIMARY KEY (day, id)\n);\nCREATE TABLE classes (\n\tcourse VARCHAR(6) PRIMARY KEY,\n\tclass VARCHAR(4)\n);\nCREATE TABLE shifts (\n\tday INT,\n\tshift INT,\n\tcourse VARCHAR(6),\n\tteacher VARCHAR(4),\n\tclass VARCHAR(4),\n\tPRIMARY KEY (day, course)\n);\nCREATE TABLE devs (\n\tid INT PRIMARY KEY AUTO_INCREMENT,\n\tname VARCHAR(30) NOT NULL,\n\tdescription VARCHAR(128),\n\tcontact VARCHAR(40) DEFAULT ''\n);\nCREATE TABLE stats (\n start DATE PRIMARY KEY,\n uptime INT,\n requests INT,\n requests_per_day INT\n);\nCREATE TABLE exams (\n\tstart DATE,\n\tend DATE,\n\tmessage VARCHAR(256),\n\tPRIMARY KEY (start, end)\n);\nCREATE TABLE foods ( \n week INT,\n day INT,\n vegetarian TINYINT,\n header VARCHAR(15),\n dateString VARCHAR(13),\n food VARCHAR(256)\n);\nCREATE USER '$name'@'$host' IDENTIFIED BY '$passw';\nGRANT ALL ON lyllruoka.* TO '$name'@'$host';\n" | mysql > /dev/null
-echo "{\n\t\"host\": \"$host\",\n\t\"user\": \"$name\",\n\t\"password\": \"$passw\",\n\t\"database\": \"lyllruoka\"\n}" > dblogin.txt
-echo "Done!\n"
+echo 'Setting up MySQL database...'
+echo -e "CREATE DATABASE lyllruoka;\nUSE lyllruoka;\n\nCREATE TABLE shiftnames (\n\tday INT,\n\tid INT,\n\tname VARCHAR(128) NOT NULL,\n\tPRIMARY KEY (day, id)\n);\nCREATE TABLE classes (\n\tcourse VARCHAR(6) PRIMARY KEY,\n\tclass VARCHAR(4)\n);\nCREATE TABLE shifts (\n\tday INT,\n\tshift INT,\n\tcourse VARCHAR(6),\n\tteacher VARCHAR(4),\n\tclass VARCHAR(4),\n\tPRIMARY KEY (day, course)\n);\nCREATE TABLE devs (\n\tid INT PRIMARY KEY AUTO_INCREMENT,\n\tname VARCHAR(30) NOT NULL,\n\tdescription VARCHAR(128),\n\tcontact VARCHAR(40) DEFAULT ''\n);\nCREATE TABLE stats (\n start DATE PRIMARY KEY,\n uptime INT,\n requests INT,\n requests_per_day INT\n);\nCREATE TABLE exams (\n\tstart DATE,\n\tend DATE,\n\tmessage VARCHAR(256),\n\tPRIMARY KEY (start, end)\n);\nCREATE TABLE foods ( \n week INT,\n day INT,\n vegetarian TINYINT,\n header VARCHAR(15),\n dateString VARCHAR(13),\n food VARCHAR(256)\n);\nCREATE USER '$name'@'$host' IDENTIFIED BY '$passw';\nGRANT ALL ON lyllruoka.* TO '$name'@'$host';\n" | mysql > /dev/null
+echo -e "{\n\t\"host\": \"$host\",\n\t\"user\": \"$name\",\n\t\"password\": \"$passw\",\n\t\"database\": \"lyllruoka\"\n}" > dblogin.txt
+echo -e 'Done!\n'
-echo "Installing node.js & node.js API for accessing MySQL..."
+echo 'Installing node.js & node.js API for accessing MySQL...'
apt-get -y install curl > /dev/null
-curl -fsSL https://deb.nodesource.com/setup_16.x | sudo -E bash - > /dev/null
+curl -fsSL https://deb.nodesource.com/setup_16.x | sudo -E bash - > /dev/null
apt-get -y install nodejs > /dev/null
-npm install mysql2 > /dev/null
-echo "Done!\n"
+npm install mysql2 2> /dev/null
+echo -e 'Done!\n'
-echo "\nCloning the git repository..."
-git clone "https://github.com/JoelHMikael/FoodJS.git" > /dev/null
-echo "Done!\n"
+echo -e '\nCloning the git repository...'
+git clone 'https://github.com/JoelHMikael/FoodJS.git' 2> /dev/null
+echo -e 'Done!\n'
-echo "Install finished successfully!"
+echo -e '\n==============================\nInstall finished successfully!\n=============================='