11#! /bin/bash
22set -euo pipefail
33IFS=$' \t '
4- NONINTERACTIVE=" yes"
5- export DEBIAN_FRONTEND=" noninteractive"
64
75# Setting some path
86declare -r DIR=" $( cd " $( dirname " $0 " ) " && pwd ) "
97declare -r DIR_TOOLS=" $( cd " $DIR /tools" && pwd ) "
108declare -r DIR_CONF=" $( cd " $DIR /conf" && pwd ) "
11- declare -r FILE_LOG=" $( cd " $DIR /log" && pwd ) /install .log"
9+ declare -r FILE_LOG=" $( cd " $DIR /log" && pwd ) /main .log"
1210
1311# Put all output to logfile
1412exec 3>&1 1>> ${FILE_LOG} 2>&1
1513
16- [ ! -f " $DIR_CONF /settings.sh" ] && cp " $DIR_CONF /settings.sh.default" " $DIR_CONF /settings.sh"
17-
1814. $DIR_CONF /applicationVersions.sh
1915. $DIR_CONF /settings.sh
2016. $DIR_TOOLS /precheck.sh
2117. $DIR_TOOLS /functions.sh
2218
19+ log_headline ` basename " $0 " `
20+
2321while true
2422do {
2523 ping -c1 www.google.com > /dev/null && break
2826}
2927done
3028
31- log " $( date +%T ) script was started"
32-
3329[ ! $( which sudo ) ] && install_package sudo
3430
3531# Setting default values
@@ -73,7 +69,7 @@ infoscreen "Setting" "public ipv6"
7369# }
7470# }
7571
76- [ ! " ${SSHD_PERMITROOTLOGIN:- } " == " yes" ] && {
72+ [[ ! ${SSHD_PERMITROOTLOGIN:- } == " yes" ] ] && {
7773 [ ! -z " ${USER_ID:- } " ] && [ ! -z " ${USER_PASSWORD:- } " ] || { echo " User credential not set in config file" ; exit 1; }
7874 [ ! " ${SSHD_PASSWORDAUTH:- } " == " yes" ] && {
7975 [ ! " $SSHD_PASSWORDAUTH " == " yes" ] && [ -z " ${USER_SSHKEY:- } " ] && [ ! -f $DIR_CONF /.ssh/keys ] && { echo -e " Global varible USER_SSHKEY not set in config file and there is no sshkey file.\nBut required as no password is acceptet for login" ; exit 1; }
@@ -88,6 +84,16 @@ infoscreen "Setting" "public ipv6"
8884 } || infoscreenfailed
8985}
9086
87+ # ##################################################################################
88+ # Check configuration
89+ # ##################################################################################
90+ [[ ( ${NGINX_INSTALL:- } == " on" && ${NGINX_COMPILE:- } == " on" ) ]] && {
91+ infoscreenfailed " Your settings.sh file have configuration error\nNGINX_INSTALL and NGINX_COMPILE can't both be set to 'on'"
92+ CHECK_ERROR=1
93+ }
94+
95+ [ ${CHECK_ERROR:- } ] && exit 1
96+
9197# ##################################################################################
9298# Servername
9399# ##################################################################################
@@ -103,9 +109,9 @@ infoscreen "Setting" "public ipv6"
103109# ##################################################################################
104110# Creating a priviliged user
105111# ##################################################################################
106- [ ! -z ${USER_ID:- } ] && {
112+ [ ${USER_ID:- } ] && {
107113 infoscreen " Adding" " priviliged user ${USER_ID} "
108- [ ! $( id -u " ${USER_ID} " ) ] && useradd -create-home -s " $USER_SHELL " $( lower " $USER_ID " -p " $USER_PASSWORD " )
114+ [ ! $( id -u " ${USER_ID} " ) ] && useradd -- create-home -s " $USER_SHELL " $( lower " $USER_ID " -p " $USER_PASSWORD " )
109115 case $OS in
110116 " Debian GNU/Linux" )
111117 adduser " $USER_ID " sudo
@@ -117,7 +123,7 @@ infoscreen "Setting" "public ipv6"
117123 usermod -aG wheel " $USER_ID "
118124 ;;
119125 esac
120- USER_HOME=` system_get_user_home " $USER_ID " `
126+ USER_HOME=$( system_get_user_home $USER_ID )
121127 [ ! -d " $USER_HOME /.ssh" ] && sudo -u " $USER_ID " mkdir " $USER_HOME /.ssh"
122128 [ -f $DIR_CONF /.ssh/keys ] && {
123129 cp -f $DIR_CONF /.ssh/keys $USER_HOME /.ssh/authorized_keys
@@ -131,7 +137,7 @@ infoscreen "Setting" "public ipv6"
131137 }
132138 infoscreendone
133139
134- [ ! " $SSHD_PASSWORDAUTH " == " yes" ] && [ ! -f " $USER_HOME /.ssh/authorized_keys" ] && {
140+ [[ ! $SSHD_PASSWORDAUTH == " yes" ] ] && [ ! -f " $USER_HOME /.ssh/authorized_keys" ] && {
135141 dialog --title " copy client " \
136142 --colors \
137143 --msgbox \
@@ -176,26 +182,27 @@ infoscreendone
176182# ##################################################################################
177183# Nginx
178184# ##################################################################################
179- [[ ! ( " ${NGINX_INSTALL :- } " == " on " && " ${ NGINX_COMPILE:- }" == " on" ) ]] && {
185+ [[ ${ NGINX_COMPILE:- } == " on" ]] && {
180186
181- [ ! $( id -u www-data) ] && useradd www-data --user-group -s /sbin/nologin
187+ $DIR_TOOLS /nginx.sh compile --nginx-ver $NGINX_VER
188+ install_package stunnel4
189+ [ -f $DIR_CONF /stunnel4/stunnel.conf ] && cp -f $DIR_CONF /stunnel4/stunnel.conf /etc/stunnel/
182190
183- [ " ${NGINX_INSTALL:- } " == " on" ] && {
184- infoscreen " installing" " nginx"
185- $DIR_TOOLS /nginx.sh install
186- infoscreendone
187- }
191+ [[ ( -f /srv/www/default/html/live.html && ! -z " ${PUBLIC_IPV4:- } " ) ]] && sed -i " s@HOSTNAME_OR_IP@$PUBLIC_IPV4 @g" /srv/www/default/html/live.html
192+ iptables -A INPUT -p tcp --dport 1935 -m state --state NEW,ESTABLISHED -j ACCEPT # rtmp for live broadcasting
193+ cat $DIR_CONF /nginx/rtmp.conf >> /etc/nginx/nginx.conf
194+ }
188195
189- [ " ${NGINX_COMPILE :- }" == " on" ] && {
190- infoscreen " building " " nginx $NGINX_VER "
191- $DIR_TOOLS /nginx.sh compile --nginx-ver $NGINX_VER
192- infoscreendone
193- install_package stunnel4
194- [ -f $DIR_CONF /stunnel4/stunnel.conf ] && cp -f $DIR_CONF /stunnel4/stunnel.conf /etc/stunnel/
195- }
196+ [[ ${NGINX_INSTALL :- } == " on" ] ] && {
197+ $DIR_TOOLS / nginx.sh install
198+ [ -f /srv/www/default/html/live.html ] && rm /srv/www/default/html/live.html
199+ }
200+
201+ [[ ${NGINX_COMPILE :- } == " on " || ${NGINX_INSTALL :- } == " on " ]] && {
202+ [ ! $( id -u www-data ) ] && useradd www-data --user-group -s /sbin/nologin
196203
197204 [ -f $DIR_CONF /nginx/nginx.conf ] && cp $DIR_CONF /nginx/nginx.conf /etc/nginx/
198- [ -d $DIR_CONF /nginx/sites-available ] && cp $DIR_CONF /nginx/sites-available/ * /etc/nginx/sites-available /
205+ [ -d $DIR_CONF /nginx/sites-available ] && cp -r $DIR_CONF /nginx/sites-available /etc/nginx/
199206
200207 find /etc/nginx/sites-available -type f -print0 | while IFS= read -r -d $' \0' file; do ln -s $file /etc/nginx/sites-enabled/ ; done
201208
@@ -214,33 +221,25 @@ infoscreendone
214221 ip6tables -A INPUT -p tcp --dport 80 -m state --state NEW,ESTABLISHED -j ACCEPT
215222 ip6tables -A INPUT -p tcp --dport 443 -m state --state NEW,ESTABLISHED -j ACCEPT
216223
217- [ " ${NGINX_COMPILE:- } " == " on" ] && {
218- [[ ( -f /srv/www/default/html/live.html && ! -z " ${PUBLIC_IPV4:- } " ) ]] && sed -i " s@HOSTNAME_OR_IP@$PUBLIC_IPV4 @g" /srv/www/default/html/live.html
219- iptables -A INPUT -p tcp --dport 1935 -m state --state NEW,ESTABLISHED -j ACCEPT # rtmp for live broadcasting
220- cat $DIR_CONF /nginx/rtmp.conf >> /etc/nginx/nginx.conf
221- } || {
222- [ -f /srv/www/default/html/live.html ] && rm /srv/www/default/html/live.html
223- }
224-
225224 systemctl daemon-reload
226225 systemctl restart nginx
227226 systemctl enable nginx
228227
229- } || echo " Your settings.sh file have configuration error\nNGINX_INSTALL and NGINX_COMPILE can't both be set to 'on' "
228+ }
230229
231230# ##################################################################################
232231# LetsEncrypt
233232# ##################################################################################
234- [ " ${LETSENCRYPT_INSTALL:- } " == " on" ] && {
233+ [[ ${LETSENCRYPT_INSTALL:- } == " on" ] ] && {
235234 regex=" ^[a-z0-9!#\$ %&'*+/=?^_\` {|}~-]+(\.[a-z0-9!#$%&'*+/=?^_\` {|}~-]+)*@([a-z0-9]([a-z0-9-]*[a-z0-9])?\.)+[a-z0-9]([a-z0-9-]*[a-z0-9])?\$ "
236- [[ ! ${LETSENCRYPT_EMAIL} =~ $regex ]] && {
235+ [[ ! ${LETSENCRYPT_EMAIL} =~ $regex ]] && {
237236 log " LETSENCRYPT_EMAIL value is not a valid email adress"
238237 } || {
239- [ " ${NGINX_INSTALL:- } " == " on" ] && install_package python-certbot-nginx
240- [ ! -Z " ${NGINX_SITES_HOSTNAMES:- } " ] && {
238+ [[ ${NGINX_INSTALL:- } == " on" ] ] && install_package python-certbot-nginx
239+ [ ! -Z ${NGINX_SITES_HOSTNAMES:- } ] && {
241240 for HOSTNAME in " ${NGINX_SITES_HOSTNAMES[@]} "
242241 do
243- $DIR_TOOLS /nginx.sh add --domain $HOSTNAME --email $LETSENCRYPT_EMAIL
242+ # $DIR_TOOLS/nginx.sh add --domain $HOSTNAME --email $LETSENCRYPT_EMAIL
244243 log " ssl certificate for $HOSTNAME "
245244 done
246245 }
@@ -250,14 +249,14 @@ infoscreendone
250249# ##################################################################################
251250# Database
252251# ##################################################################################
253- [ " ${POSTGRESQL_INSTALL:- } " == " yes" ] && {
252+ [[ ${POSTGRESQL_INSTALL:- } == " yes" ] ] && {
254253 install_package progresql postgresql-contrib
255254}
256255
257256# ##################################################################################
258257# Bash stuff
259258# ##################################################################################
260- [ " ${BASH_STUFF:- } " == " on" ] && {
259+ [[ ${BASH_STUFF:- } == " on" ] ] && {
261260 infoscreen " Setting" " bash stuff for root - $OS version $OS_VER "
262261 case $OS in
263262 ' Debian GNU/Linux' |' Ubuntu' )
@@ -269,13 +268,15 @@ infoscreendone
269268 infoscreendone
270269}
271270
272- [ ! " ${NONINTERACTIVE:- } " == " yes" ] && {
273- count_down 9
274- }
275-
276271# ##################################################################################
277272# Extra scripts
278273# ##################################################################################
279- [ -f $DIR_CONF /autorun.sh ] && bash $DIR_CONF /autorun.sh
274+ [ -f $DIR_CONF /autorun.sh ] && . $DIR_CONF /autorun.sh
275+
276+ log_headline ' script finish at'
277+
278+ [[ ! ${NONINTERACTIVE:- } == " yes" ]] && {
279+ count_down 9
280+ }
280281
281282reboot
0 commit comments