· 10 years ago · Apr 11, 2016, 12:15 PM
1function greenMessage {
2 echo -e "\\033[32;1m${@}\033[0m"
3}
4
5function cyanMessage {
6 echo -e "\\033[36;1m${@}\033[0m"
7}
8
9function redMessage {
10 echo -e "\\033[31;1m${@}\033[0m"
11}
12
13function yellowMessage {
14 echo -e "\\033[33;1m${@}\033[0m"
15}
16
17function errorAndQuit {
18 errorAndExit "Exit now!"
19}
20
21function errorAndExit {
22 redMessage ${@}
23 exit 0
24}
25
26function errorAndContinue {
27 redMessage "Invalid option."
28 continue
29}
30
31function removeIfExists {
32 if [ "$1" != "" -a -f "$1" ]; then
33 rm -f $1
34 fi
35}
36
37function runSpinner {
38
39 SPINNER=("-" "\\" "|" "/")
40
41 for SEQUENCE in `seq 1 $1`; do
42 for I in "${SPINNER[@]}"; do
43 echo -ne "\b$I"
44 sleep 0.1
45 done
46 done
47}
48
49function okAndSleep {
50 greenMessage $1
51 sleep 1
52}
53
54function makeDir {
55 if [ "$1" != "" -a ! -d $1 ]; then
56 mkdir -p $1
57 fi
58}
59
60function backUpFile {
61 if [ ! -f "$1.easy-install.backup" ]; then
62 cp "$1" "$1.easy-install.backup"
63 fi
64}
65
66function checkInstall {
67 if [ "`dpkg-query -s $1 2>/dev/null`" == "" ]; then
68 okAndSleep "Installing package $1"
69 apt-get install -y $1
70 fi
71}
72
73INSTALLER_VERSION="1.3"
74OS=""
75USERADD=`which useradd`
76USERMOD=`which usermod`
77USERDEL=`which userdel`
78GROUPADD=`which groupadd`
79MACHINE=`uname -m`
80LOCAL_IP=`ip route get 8.8.8.8 | awk '{print $NF; exit}'`
81
82if [ "$LOCAL_IP" == "" ]; then
83 HOST_NAME=`hostname -f | awk '{print tolower($0)}'`
84else
85 HOST_NAME=`getent hosts $LOCAL_IP | awk '{print tolower($2)}' | head -n 1`
86fi
87
88cyanMessage "Checking for the latest latest installer"
89LATEST_VERSION=`wget -q --timeout=60 -O - http://l.easy-wi.com/installer_version.php | sed 's/^\xef\xbb\xbf//g'`
90
91if [ "`printf "${LATEST_VERSION}\n${INSTALLER_VERSION}" | sort -V | tail -n 1`" != "$INSTALLER_VERSION" ]; then
92 errorAndExit "You are using the old version ${INSTALLER_VERSION}. Please upgrade to version ${LATEST_VERSION} and retry."
93else
94 okAndSleep "You are using the up to date version ${INSTALLER_VERSION}."
95fi
96
97# We need to be root to install and update
98if [ "`id -u`" != "0" ]; then
99 cyanMessage "Change to root account required"
100 su -
101fi
102
103if [ "`id -u`" != "0" ]; then
104 errorAndExit "Still not root, aborting"
105fi
106
107# Debian and its derivatives store their version at /etc/debian_version
108if [ -f /etc/debian_version ]; then
109
110 cyanMessage " "
111 okAndSleep "Update the system packages to the latest version? Required, as otherwise dependencies might brake!"
112
113 OPTIONS=("Yes" "Quit")
114 select UPDATE_UPGRADE_SYSTEM in "${OPTIONS[@]}"; do
115 case "$REPLY" in
116 1 ) break;;
117 2 ) errorAndQuit;;
118 *) errorAndContinue;;
119 esac
120 done
121
122 apt-get update && apt-get upgrade -y && apt-get dist-upgrade -y
123
124 checkInstall curl
125 checkInstall debconf-utils
126 checkInstall lsb-release
127
128 OS=`lsb_release -i 2> /dev/null | grep 'Distributor' | awk '{print tolower($3)}'`
129 OSVERSION=`lsb_release -r 2> /dev/null | grep 'Release' | awk '{print $2}'`
130 OSBRANCH=`lsb_release -c 2> /dev/null | grep 'Codename' | awk '{print $2}'`
131fi
132
133if [ "$OS" == "" ]; then
134 errorAndExit "Error: Could not detect OS. Currently only Debian and Ubuntuu are supported. Aborting!"
135else
136 okAndSleep "Detected OS $OS"
137fi
138
139if [ "$OSBRANCH" == "" ]; then
140 errorAndExit "Error: Could not detect branch of OS. Aborting"
141else
142 okAndSleep "Detected branch $OSBRANCH"
143fi
144
145cyanMessage " "
146cyanMessage "What shall be installed/prepared?"
147
148OPTIONS=("Gameserver Root" "Voicemaster" "Easy-WI Webpanel" "Webspace Root" "MySQL" "Quit")
149select OPTION in "${OPTIONS[@]}"; do
150 case "$REPLY" in
151 1|2|3|4|5 ) break;;
152 6 ) errorAndQuit;;
153 *) errorAndContinue;;
154 esac
155done
156
157if [ "$OPTION" == "Easy-WI Webpanel" ]; then
158 INSTALL="EW"
159elif [ "$OPTION" == "Gameserver Root" ]; then
160 INSTALL="GS"
161elif [ "$OPTION" == "Voicemaster" ]; then
162 INSTALL="VS"
163elif [ "$OPTION" == "Webspace Root" ]; then
164 INSTALL="WR"
165elif [ "$OPTION" == "MySQL" ]; then
166 INSTALL="MY"
167fi
168
169OTHER_PANEL=""
170
171if [ "$INSTALL" != "VS" ]; then
172 if [ -f /etc/init.d/psa ]; then
173 OTHER_PANEL="Plesk"
174 elif [ -f /usr/local/vesta/bin/v-change-user-password ]; then
175 OTHER_PANEL="VestaCP"
176 elif [ -d /root/confixx ]; then
177 OTHER_PANEL="Confixx"
178 elif [ -d /var/www/froxlor ]; then
179 OTHER_PANEL="Froxlor"
180 elif [ -d /etc/imscp ]; then
181 OTHER_PANEL="i-MSCP"
182 elif [ -d /usr/local/ispconfig ]; then
183 OTHER_PANEL="ISPConfig"
184 elif [ -d /var/cpanel ]; then
185 OTHER_PANEL="cPanel"
186 elif [ -d /usr/local/directadmin ]; then
187 OTHER_PANEL="DirectAdmin"
188 fi
189fi
190
191if [ "$OTHER_PANEL" != "" ]; then
192 if [ "$INSTALL" == "GS" ]; then
193 yellowMessage " "
194 yellowMessage "Warning an installation of the control panel $OTHER_PANEL has been detected."
195 yellowMessage "If you continue the installer might end up breaking $OTHER_PANEL or same parts of Easy-WI might not work."
196 OPTIONS=("Continue" "Quit")
197 select UPDATE_UPGRADE_SYSTEM in "${OPTIONS[@]}"; do
198 case "$REPLY" in
199 1 ) break;;
200 2 ) errorAndQuit;;
201 *) errorAndContinue;;
202 esac
203 done
204 else
205 errorAndExit "Aborting as the risk of breaking the installed panel $OTHER_PANEL is too high."
206 fi
207fi
208
209# Run the domain/IP check up front to avoid late error out.
210if [ "$INSTALL" == "EW" ]; then
211
212 cyanMessage " "
213 cyanMessage "At which URL/Domain should Easy-Wi be placed?"
214 OPTIONS=("$HOST_NAME" "$LOCAL_IP" "Other" "Quit")
215 select OPTION in "${OPTIONS[@]}"; do
216 case "$REPLY" in
217 1|2|3 ) break;;
218 4 ) errorAndQuit;;
219 *) errorAndContinue;;
220 esac
221 done
222
223 if [ "$OPTION" == "Other" ]; then
224 cyanMessage " "
225 cyanMessage "Please specify the IP or domain Easy-Wi should run at."
226 read IP_DOMAIN
227 else
228 IP_DOMAIN=$OPTION
229 fi
230
231 if [ "`grep -E '\b((25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)(\.|$)){4}\b' <<< $IP_DOMAIN`" == "" -a "`grep -E '^(([a-zA-Z](-?[a-zA-Z0-9])*)\.)*[a-zA-Z](-?[a-zA-Z0-9])+\.[a-zA-Z]{2,}$' <<< $IP_DOMAIN`" == "" ]; then
232 errorAndExit "Error: $IP_DOMAIN is neither a domain nor an IPv4 address!"
233 fi
234fi
235
236# Run the TS3 server version detect up front to avoid user executing steps first and fail at download last.
237if [ "$INSTALL" == "VS" ]; then
238
239 if [ "$MACHINE" == "x86_64" ]; then
240 ARCH="amd64"
241 elif [ "$MACHINE" == "i386" ]||[ "$MACHINE" == "i686" ]; then
242 ARCH="x86"
243 else
244 errorAndExit "$MACHINE is not supported!"
245 fi
246
247 okAndSleep "Searching latest build for hardware type $MACHINE with arch $ARCH."
248
249 for VERSION in ` curl -s "http://dl.4players.de/ts/releases/?C=M;O=D" | grep -Po '(?<=href=")[0-9]+(\.[0-9]+){2,3}(?=/")' | sort -Vr | head -1`; do
250
251 DOWNLOAD_URL_VERSION="http://dl.4players.de/ts/releases/$VERSION/teamspeak3-server_linux-$ARCH-$VERSION.tar.gz"
252 STATUS=`curl -I $DOWNLOAD_URL_VERSION 2>&1 | grep "HTTP/" | awk '{print $2}'`
253
254 if [ "$STATUS" == "200" ]; then
255 DOWNLOAD_URL=$DOWNLOAD_URL_VERSION
256 break
257 fi
258 done
259
260 if [ "$STATUS" == "200" -a "$DOWNLOAD_URL" != "" ]; then
261 okAndSleep "Detected latest server version as $VERSION with download URL $DOWNLOAD_URL"
262 else
263 errorAndExit "Could not detect latest server version"
264 fi
265fi
266
267# If we need to install and configure a webspace than we need to identify the groupID
268if [ "$INSTALL" == "EW" -o "$INSTALL" == "WR" ]; then
269
270 WEBGROUPID=`getent group www-data | awk -F ':' '{print $3}'`
271
272 if [ "$INSTALL" == "EW" ]; then
273 OPTION="Yes"
274 else
275 cyanMessage " "
276 cyanMessage "Found group www-data with group ID $WEBGROUPID. Use as webservergroup?"
277
278 OPTIONS=("Yes" "No" "Quit")
279 select OPTION in "${OPTIONS[@]}"; do
280 case "$REPLY" in
281 1|2 ) break;;
282 3 ) errorAndQuit;;
283 *) errorAndContinue;;
284 esac
285 done
286 fi
287
288 if [ "$OPTION" == "No" ]; then
289
290 cyanMessage "Please name the group you want to use as webservergroup"
291 read WEBGROUP
292
293 WEBGROUPID=`getent group $WEBGROUP | awk -F ':' '{print $3}'`
294
295 if [ "$WEBGROUPID" == "" ]; then
296 $GROUPADD $WEBGROUP
297 WEBGROUPID=`getent group $WEBGROUP | awk -F ':' '{print $3}'`
298 fi
299 fi
300
301 if [ "$WEBGROUPID" == "" ]; then
302 errorAndExit "Fatal Error: missing webservergroup ID"
303 fi
304fi
305
306if [ "$INSTALL" != "MY" ]; then
307
308 cyanMessage "Please enter the name of the masteruser. If it does not exists, the installer will create it."
309 read MASTERUSER
310
311 if [ "$MASTERUSER" == "" ]; then
312 errorAndExit "Fatal Error: No masteruser specified"
313 fi
314
315 if [ "`id $MASTERUSER 2> /dev/null`" == "" ]; then
316
317 if [ "$INSTALL" == "EW" -o "$INSTALL" == "WR" ]; then
318 $USERADD -m -b /home -s /bin/bash -g $WEBGROUPID $MASTERUSER
319 else
320
321 if [ -d /home/$MASTERUSER ]; then
322 $GROUPADD $MASTERUSER
323 $USERADD -d /home/$MASTERUSER -s /bin/bash -g $MASTERUSER $MASTERUSER
324 else
325 $GROUPADD $MASTERUSER
326 $USERADD -m -b /home -s /bin/bash -g $MASTERUSER $MASTERUSER
327 fi
328 fi
329
330 elif [ "$INSTALL" != "VS" -a "$INSTALL" != "MY" ]; then
331
332 okAndSleep "User \"$MASTERUSER\" found setting group \"$MASTERUSER\" as mastegroup"
333
334 if [ "$INSTALL" == "EW" -o "$INSTALL" == "WR" ]; then
335 $USERMOD -G $WEBGROUPID $MASTERUSER
336 else
337
338 if [ "`getent group $MASTERUSER`" == "" ]; then
339 $GROUPADD $MASTERUSER
340 fi
341
342 $USERMOD -G $MASTERUSER $MASTERUSER
343 fi
344 else
345 okAndSleep "User \"$MASTERUSER\" already exists."
346 fi
347
348 cyanMessage " "
349 cyanMessage "Create key or set password for login?"
350 cyanMessage "Safest way of login is a password protected key."
351
352 if [ "$INSTALL" == "EW" ]; then
353 cyanMessage "Neither is not required, when installing Easy-WI Webpanel."
354 fi
355
356 OPTIONS=("Create key" "Set password" "Skip" "Quit")
357 select OPTION in "${OPTIONS[@]}"; do
358 case "$REPLY" in
359 1|2|3 ) break;;
360 4 ) errorAndQuit;;
361 *) errorAndContinue;;
362 esac
363 done
364
365 if [ "$OPTION" == "Create key" ]; then
366
367 if [ -d /home/$MASTERUSER/.ssh ]; then
368 rm -rf /home/$MASTERUSER/.ssh
369 fi
370
371 cyanMessage " "
372 cyanMessage "It is recommended but not required to set a password"
373 su -c "ssh-keygen -t rsa" $MASTERUSER
374
375 cd /home/$MASTERUSER/.ssh
376
377 KEYNAME=`find -maxdepth 1 -name "*.pub" | head -n 1`
378
379 if [ "$KEYNAME" != "" ]; then
380 su -c "cat $KEYNAME >> authorized_keys" $MASTERUSER
381 else
382 redMessage "Error: could not find a key. You might need to create one manually at a later point."
383 fi
384
385 elif [ "$OPTION" == "Set password" ]; then
386 passwd $MASTERUSER
387 fi
388fi
389
390# only in case we want to manage webspace we need the additional skel dir
391if [ "$INSTALL" == "WR" -o "$INSTALL" == "EW" ]; then
392 makeDir /home/$MASTERUSER/sites-enabled/
393 makeDir /home/$MASTERUSER/skel/htdocs
394 makeDir /home/$MASTERUSER/skel/logs
395 makeDir /home/$MASTERUSER/skel/session
396 makeDir /home/$MASTERUSER/skel/tmp
397fi
398
399if [ "$INSTALL" == "EW" -o "$INSTALL" == "WR" -o "$INSTALL" == "MY" ]; then
400
401 if [ "$OS" == "debian" -a "$INSTALL" != "MY" ]; then
402
403 cyanMessage " "
404 cyanMessage "Use dotdeb.org repository for more up to date server and PHP versions?"
405
406 OPTIONS=("Yes" "No" "Quit")
407 select DOTDEB in "${OPTIONS[@]}"; do
408 case "$REPLY" in
409 1|2 ) break;;
410 3 ) errorAndQuit;;
411 *) errorAndContinue;;
412 esac
413 done
414
415 if [ "$DOTDEB" == "Yes" ]; then
416 if [ "`grep 'packages.dotdeb.org' /etc/apt/sources.list`" == "" ]; then
417
418 okAndSleep "Adding entries to /etc/apt/sources.list"
419
420 if [ "$OSBRANCH" == "squeeze" -o "$OSBRANCH" == "wheezy" ]; then
421 checkInstall python-software-properties
422 elif [ "$OSBRANCH" == "jessie" ]; then
423 checkInstall software-properties-common
424 fi
425
426 add-apt-repository "deb http://packages.dotdeb.org $OSBRANCH all"
427 add-apt-repository "deb-src http://packages.dotdeb.org $OSBRANCH all"
428 curl --remote-name http://www.dotdeb.org/dotdeb.gpg
429 apt-key add dotdeb.gpg
430 removeIfExists dotdeb.gpg
431 apt-get update
432 fi
433 fi
434 fi
435
436 if [ "$INSTALL" != "MY" ]; then
437 cyanMessage " "
438 cyanMessage "Please select the webserver you would like to use"
439 fi
440
441 if [ "$INSTALL" == "EW" ]; then
442
443 cyanMessage "Apache is recommended in case you want to run additional sites on this host."
444 cyanMessage "Nginx is recommended if the server should only run the Easy-WI Web Panel."
445
446 OPTIONS=("Nginx" "Apache" "Quit")
447 select WEBSERVER in "${OPTIONS[@]}"; do
448 case "$REPLY" in
449 1|2 ) break;;
450 3 ) errorAndQuit;;
451 *) errorAndContinue;;
452 esac
453 done
454
455 elif [ "$INSTALL" != "MY" ]; then
456
457 cyanMessage "Nginx is recommended for FastDL and few but high efficient vhosts"
458 cyanMessage "Apache is recommended in case you want to run many PHP supporting Vhosts aka mass web hosting"
459
460 OPTIONS=("Nginx" "Apache" "Lighttpd" "None" "Quit")
461 select WEBSERVER in "${OPTIONS[@]}"; do
462 case "$REPLY" in
463 1|2|3|4 ) break;;
464 5 ) errorAndQuit;;
465 *) errorAndContinue;;
466 esac
467 done
468 fi
469
470 if [ "$WEBSERVER" == "Nginx" -a "$INSTALL" != "MY" ]; then
471 checkInstall nginx-full
472 elif [ "$WEBSERVER" == "Lighttpd" -a "$INSTALL" != "MY" ]; then
473 checkInstall lighttpd
474 elif [ "$WEBSERVER" == "Apache" -a "$INSTALL" != "MY" ]; then
475 checkInstall apache2
476 fi
477
478 if [ "$INSTALL" == "EW" ]; then
479
480 okAndSleep "Please note that Easy-Wi requires a MySQL or MariaDB installed and will install MySQL if no DB is installed"
481
482 if [ "`ps ax | grep mysql | grep -v grep`" == "" ]; then
483 SQL="MySQL"
484 else
485 SQL=""
486 fi
487
488 else
489
490 cyanMessage " "
491 cyanMessage "Please select if an which database server to install."
492 cyanMessage "Select \"None\" in case this server should host only Fastdownload webspace."
493
494 OPTIONS=("MySQL" "MariaDB" "None" "Quit")
495 select SQL in "${OPTIONS[@]}"; do
496 case "$REPLY" in
497 1|2|3 ) break;;
498 4 ) errorAndQuit;;
499 *) errorAndContinue;;
500 esac
501 done
502 fi
503
504 if [ "$SQL" == "MySQL" -o "$SQL" == "MariaDB" ]; then
505 if [ "`ps fax | grep 'mysqld' | grep -v 'grep'`" ]; then
506
507 cyanMessage " "
508 cyanMessage "Please provide the root password for the MySQL Database."
509 read MYSQL_ROOT_PASSWORD
510
511 mysql -uroot -p$MYSQL_ROOT_PASSWORD -e exit 2> /dev/null
512 ERROR_CODE=$?
513
514 until [ $ERROR_CODE == 0 ]; do
515
516 cyanMessage "Password incorrect, please provide the root password for the MySQL Database."
517 read MYSQL_ROOT_PASSWORD
518
519 mysql -uroot -p$MYSQL_ROOT_PASSWORD -e exit 2> /dev/null
520 ERROR_CODE=$?
521 done
522
523 else
524 until [ "$MYSQL_ROOT_PASSWORD" != "" ]; do
525 cyanMessage "Please provide the root password for the MySQL Database."
526 read MYSQL_ROOT_PASSWORD
527 done
528 fi
529
530 export DEBIAN_FRONTEND="noninteractive"
531 echo "mysql-server mysql-server/root_password password $MYSQL_ROOT_PASSWORD" | debconf-set-selections
532 echo "mysql-server mysql-server/root_password_again password $MYSQL_ROOT_PASSWORD" | debconf-set-selections
533 fi
534
535 if [ "$SQL" == "MySQL" ]; then
536
537 apt-get install mysql-server mysql-client mysql-common -y
538
539 elif [ "$SQL" == "MariaDB" ]; then
540
541 RUNUPDATE=0
542
543 if ([ "`printf "${OSVERSION}\n8.0" | sort -V | tail -n 1`" == "8.0" -o "$OS" == "ubuntu" ] && [ "`grep '/mariadb/' /etc/apt/sources.list`" == "" ]); then
544
545 checkInstall python-software-properties
546 apt-key adv --recv-keys --keyserver keyserver.ubuntu.com 0xcbcb082a1bb943db
547
548 if [ "$SQL" == "MariaDB" -a "`apt-cache search mariadb-server-10.0`" == "" ]; then
549 if [ "$OS" == "debian" ]; then
550 add-apt-repository "deb http://mirror.netcologne.de/mariadb/repo/10.0/debian $OSBRANCH main"
551 RUNUPDATE=1
552 elif [ "$OS" == "ubuntu" ]; then
553 add-apt-repository "deb http://mirror.netcologne.de/mariadb/repo/10.0/ubuntu $OSBRANCH main"
554 RUNUPDATE=1
555 fi
556 fi
557 fi
558
559 if [ "$OS" == "debian" -a "$DOTDEB" == "Yes" ]; then
560 echo "Package: *" > /etc/apt/preferences.d/mariadb.pref
561 echo "Pin: origin mirror.netcologne.de" >> /etc/apt/preferences.d/mariadb.pref
562 echo "Pin-Priority: 1000" >> /etc/apt/preferences.d/mariadb.pref
563 RUNUPDATE=1
564 fi
565
566 if [ "$RUNUPDATE" == "1" ]; then
567 apt-get update
568 fi
569
570 if ([ "`printf "${OSVERSION}\n8.0" | sort -V | tail -n 1`" == "8.0" -o "$OS" == "ubuntu" ] && [ "`grep '/mariadb/' /etc/apt/sources.list`" == "" ]); then
571 apt-get install mariadb-server mariadb-client mysql-common -y
572 else
573 apt-get install mariadb-server mariadb-client mariadb-common -y
574 fi
575 fi
576
577 if [ "$SQL" == "MySQL" -o "$SQL" == "MariaDB" ]; then
578
579 if [ "$INSTALL" == "WR" -o "$INSTALL" == "MY" ]; then
580
581 cyanMessage " "
582 cyanMessage "Is Easy-WI installed on a different server."
583
584 OPTIONS=("Yes" "No" "Quit")
585 select EXTERNAL_INSTALL in "${OPTIONS[@]}"; do
586 case "$REPLY" in
587 1|2 ) break;;
588 3 ) errorAndQuit;;
589 *) errorAndContinue;;
590 esac
591 done
592 fi
593
594 cyanMessage " "
595 okAndSleep "Securing MySQL by running \"mysql_secure_installation\" commands."
596 mysql -u root -p"$MYSQL_ROOT_PASSWORD" -e "DELETE FROM mysql.user WHERE User=''" 2> /dev/null
597 mysql -u root -p"$MYSQL_ROOT_PASSWORD" -e "DELETE FROM mysql.user WHERE User='root' AND Host NOT IN ('localhost', '127.0.0.1', '::1')" 2> /dev/null
598 mysql -u root -p"$MYSQL_ROOT_PASSWORD" -e "DELETE FROM mysql.db WHERE Db='test' OR Db='test\_%'" 2> /dev/null
599 mysql -u root -p"$MYSQL_ROOT_PASSWORD" -e "FLUSH PRIVILEGES" 2> /dev/null
600 fi
601
602 if [ "$EXTERNAL_INSTALL" == "Yes" ]; then
603
604 mysql -u root -p"$MYSQL_ROOT_PASSWORD" -e "GRANT USAGE ON *.* TO 'root'@'' IDENTIFIED BY '$MYSQL_ROOT_PASSWORD' WITH MAX_QUERIES_PER_HOUR 0 MAX_CONNECTIONS_PER_HOUR 0 MAX_UPDATES_PER_HOUR 0 MAX_USER_CONNECTIONS 0" 2> /dev/null
605 mysql -u root -p"$MYSQL_ROOT_PASSWORD" -e "UPDATE mysql.user SET Select_priv='Y',Insert_priv='Y',Update_priv='Y',Delete_priv='Y',Create_priv='Y',Drop_priv='Y',Reload_priv='Y',Shutdown_priv='Y',Process_priv='Y',File_priv='Y',Grant_priv='Y',References_priv='Y',Index_priv='Y',Alter_priv='Y',Show_db_priv='Y',Super_priv='Y',Create_tmp_table_priv='Y',Lock_tables_priv='Y',Execute_priv='Y',Repl_slave_priv='Y',Repl_client_priv='Y',Create_view_priv='Y',Show_view_priv='Y',Create_routine_priv='Y',Alter_routine_priv='Y',Create_user_priv='Y',Event_priv='Y',Trigger_priv='Y',Create_tablespace_priv='Y' WHERE User='root' AND Host=''" 2> /dev/null
606
607 if [ "$LOCAL_IP" == "" ]; then
608
609 cyanMessage " "
610 cyanMessage "Could not detect lokal IP. Please specify which to use."
611 read LOCAL_IP
612 fi
613
614 if [ "$LOCAL_IP" != "" -a -f /etc/mysql/my.cnf ]; then
615 if [ "`grep 'bind-address' /etc/mysql/my.cnf`" ]; then
616 sed -i "s/bind-address.*/bind-address = 0.0.0.0/g" /etc/mysql/my.cnf
617 else
618 echo "bind-address = 0.0.0.0" >> /etc/mysql/my.cnf
619 fi
620 fi
621 fi
622
623 MYSQL_VERSION=`mysql -V | awk {'print $5'} | tr -d ,`
624
625 if [ "`grep -E 'key_buffer[[:space:]]*=' /etc/mysql/my.cnf`" != "" -a "printf "${MYSQL_VERSION}\n5.5" | sort -V | tail -n 1" != 5.5 ]; then
626 sed -i "s/key_buffer[[:space:]]*=/key_buffer_size = /g" /etc/mysql/my.cnf
627 fi
628
629 /etc/init.d/mysql restart
630
631 if [ "$INSTALL" == "EW" -a "`ps ax | grep mysql | grep -v grep`" == "" ]; then
632 cyanMessage " "
633 errorAndExit "Error: No SQL server running but required for Webpanel installation."
634 fi
635
636 if [ "$INSTALL" == "EW" ]; then
637
638 okAndSleep "Please note that Easy-Wi will install required PHP packages."
639 PHPINSTALL="Yes"
640
641 elif [ "$INSTALL" != "MY" ]; then
642
643 cyanMessage " "
644 cyanMessage "Install/Update PHP?"
645 cyanMessage "Select \"None\" in case this server should host only Fastdownload webspace."
646
647 OPTIONS=("Yes" "No" "None" "Quit")
648 select PHPINSTALL in "${OPTIONS[@]}"; do
649 case "$REPLY" in
650 1|2|3 ) break;;
651 4 ) errorAndQuit;;
652 *) errorAndContinue;;
653 esac
654 done
655 fi
656
657 if [ "$PHPINSTALL" == "Yes" ]; then
658
659 if [ "$OS" == "debian" -a "$DOTDEB" == "Yes" ]; then
660
661 cyanMessage " "
662
663 if [ "$OSBRANCH" == "wheezy" ]; then
664
665 cyanMessage "Which PHP version should be used?"
666
667 OPTIONS=("5.4" "5.5", "5.6", "5.6 Zend thread safety" "Quit")
668 select DOTDEBPHPUPGRADE in "${OPTIONS[@]}"; do
669 case "$REPLY" in
670 1|2|3|4 ) break;;
671 5 ) errorAndQuit;;
672 *) errorAndContinue;;
673 esac
674 done
675
676 if [ "$DOTDEBPHPUPGRADE" == "5.5" -a "`grep 'wheezy-php55' /etc/apt/sources.list`" == "" ]; then
677 add-apt-repository "deb http://packages.dotdeb.org wheezy-php55 all"
678 add-apt-repository "deb-src http://packages.dotdeb.org wheezy-php55 all"
679 elif [ "$DOTDEBPHPUPGRADE" == "5.6" -a "`grep 'wheezy-php56' /etc/apt/sources.list`" == "" ]; then
680 add-apt-repository "deb http://packages.dotdeb.org wheezy-php56 all"
681 add-apt-repository "deb-src http://packages.dotdeb.org wheezy-php56 all"
682 elif [ "$DOTDEBPHPUPGRADE" == "5.6 Zend thread safety" -a "`grep 'wheezy-php56-zts' /etc/apt/sources.list`" == "" ]; then
683 add-apt-repository "deb http://packages.dotdeb.org wheezy-php56-zts all"
684 add-apt-repository "deb-src http://packages.dotdeb.org wheezy-php56-zts all"
685 fi
686
687 elif [ "$OSBRANCH" == "squeeze" -a "`grep 'squeeze-php54' /etc/apt/sources.list`" == "" ]; then
688 add-apt-repository "deb http://packages.dotdeb.org squeeze-php54 all"
689 add-apt-repository "deb-src http://packages.dotdeb.org squeeze-php54 all"
690 fi
691
692 if [ "$DOTDEBPHPUPGRADE" == "Yes" ]; then
693 apt-get update
694 apt-get upgrade -y && apt-get dist-upgrade -y
695 fi
696 fi
697
698 apt-get install php5-common php5-curl php5-gd php5-mcrypt php5-mysql php5-cli -y
699
700 if [ "$WEBSERVER" == "Nginx" -o "$WEBSERVER" == "Lighttpd" ]; then
701
702 checkInstall php5-fpm
703
704 if [ "$WEBSERVER" == "Lighttpd" ]; then
705 lighttpd-enable-mod fastcgi
706 lighttpd-enable-mod fastcgi-php
707 fi
708
709 makeDir /home/$MASTERUSER/fpm-pool.d/
710 sed -i "s/include=\/etc\/php5\/fpm\/pool.d\/\*.conf/include=\/home\/$MASTERUSER\/fpm-pool.d\/\*.conf/g" /etc/php5/fpm/php-fpm.conf
711
712 elif [ "$WEBSERVER" == "Apache" ]; then
713 apt-get install apache2-mpm-itk libapache2-mod-php5 php5 -y
714 a2enmod php5
715 fi
716 fi
717fi
718
719if ([ "$INSTALL" == "WR" -o "$INSTALL" == "EW" ] && [ "`grep '/bin/false' /etc/shells`" == "" ]); then
720 echo "/bin/false" >> /etc/shells
721fi
722
723if [ "$INSTALL" != "VS" -a "$INSTALL" != "EW" -a "$INSTALL" != "MY" ]; then
724
725 cyanMessage " "
726 cyanMessage "Install/Update ProFTPD?"
727
728 OPTIONS=("Yes" "No" "Quit")
729 select OPTION in "${OPTIONS[@]}"; do
730 case "$REPLY" in
731 1|2 ) break;;
732 3 ) errorAndQuit;;
733 *) errorAndContinue;;
734 esac
735 done
736
737 if [ "$OPTION" == "Yes" ]; then
738
739 echo "proftpd-basic shared/proftpd/inetd_or_standalone select standalone" | debconf-set-selections
740 apt-get install proftpd -y
741
742 if [ -f /etc/proftpd/modules.conf ]; then
743
744 backUpFile /etc/proftpd/modules.conf
745
746 sed -i 's/.*LoadModule mod_tls_memcache.c.*/#LoadModule mod_tls_memcache.c/g' /etc/proftpd/modules.conf
747 fi
748
749 backUpFile /etc/proftpd/proftpd.conf
750
751 sed -i 's/.*UseIPv6.*/UseIPv6 off/g' /etc/proftpd/proftpd.conf
752 sed -i 's/#.*DefaultRoot.*~/DefaultRoot ~/g' /etc/proftpd/proftpd.conf
753 sed -i 's/# RequireValidShell.*/RequireValidShell on/g' /etc/proftpd/proftpd.conf
754
755 if [ -f /etc/proftpd/proftpd.conf -a "$INSTALL" != "GS" ]; then
756
757 sed -i 's/Umask.*/Umask 037 027/g' /etc/proftpd/proftpd.conf
758
759 elif [ -f /etc/proftpd/proftpd.conf -a "$INSTALL" == "GS" ]; then
760
761 sed -i 's/Umask.*/Umask 077 077/g' /etc/proftpd/proftpd.conf
762
763 cyanMessage " "
764 cyanMessage "Install/Update ProFTPD Rules?"
765
766 OPTIONS=("Yes" "No" "Quit")
767 select OPTION in "${OPTIONS[@]}"; do
768 case "$REPLY" in
769 1|2 ) break;;
770 3 ) errorAndQuit;;
771 *) errorAndContinue;;
772 esac
773 done
774
775 if [ "$OPTION" == "Yes" -a "`grep '<Directory \/home\/\*\/pserver\/\*>' /etc/proftpd/proftpd.conf`" == "" -a ! -f "/etc/proftpd/conf.d/easy-wi.conf" ]; then
776
777 makeDir /etc/proftpd/conf.d/
778 chmod 755 /etc/proftpd/conf.d/
779
780 echo "
781<Directory ~>
782 HideFiles (^\..+|\.ssh|\.bash_history|\.bash_logout|\.bashrc|\.profile|srcds_run|srcds_linux|hlds_run|hlds_amd|hlds_i686|\.rc|\.sh|\.zip|\.rar|\.7z|\.dll)$
783 PathDenyFilter (^\..+|\.ssh|\.bash_history|\.bash_logout|\.bashrc|\.profile|srcds_run|srcds_linux|hlds_run|hlds_amd|hlds_i686|\.rc|\.sh|\.zip|\.rar|\.7z|\.dll)$
784 HideNoAccess on
785 <Limit RNTO RNFR STOR DELE CHMOD SITE_CHMOD MKD RMD>
786 DenyAll
787 </Limit>
788</Directory>" > /etc/proftpd/conf.d/easy-wi.conf
789 echo "<Directory /home/$MASTERUSER>" >> /etc/proftpd/conf.d/easy-wi.conf
790 echo " HideFiles (^\..+|\.ssh|\.bash_history|\.bash_logout|\.bashrc|\.profile)$
791 PathDenyFilter (^\..+|\.ssh|\.bash_history|\.bash_logout|\.bashrc|\.profile)$
792 HideNoAccess on
793 Umask 137 027
794 <Limit RNTO RNFR STOR DELE CHMOD SITE_CHMOD MKD RMD>
795 AllowAll
796 </Limit>
797</Directory>
798<Directory /home/*/pserver/*>
799 Umask 077 077
800 <Limit RNFR RNTO STOR DELE MKD RMD>
801 AllowAll
802 </Limit>
803</Directory>
804<Directory ~/backup>
805 Umask 177 077
806 <Limit RNTO RNFR STOR DELE>
807 AllowAll
808 </Limit>
809</Directory>
810<Directory ~/*/*/>
811 HideFiles (^\..+|srcds_run|srcds_linux|hlds_run|hlds_amd|hlds_i686|\.rc|\.sh|\.zip|\.rar|\.7z|\.dll)$
812 PathDenyFilter (^\..+|srcds_run|srcds_linux|hlds_run|hlds_amd|hlds_i686|\.rc|\.sh|\.zip|\.rar|\.7z|\.dll)$
813 HideNoAccess on
814</Directory>" >> /etc/proftpd/conf.d/easy-wi.conf
815
816
817 GAMES=("ark" "arma3" "bukkit" "hexxit" "mc" "mtasa" "projectcars" "rust" "samp" "spigot" "teeworlds" "tekkit" "tekkit-classic")
818
819 for GAME in ${GAMES[@]}; do
820 echo "<Directory ~/server/*/$GAME*/*>
821 Umask 077 077
822 <Limit RNFR RNTO STOR DELE MKD RMD>
823 AllowAll
824 </Limit>
825</Directory>" >> /etc/proftpd/conf.d/easy-wi.conf
826 done
827
828 GAME_MODS=("csgo" "cstrike" "czero" "orangebox" "dod" "garrysmod")
829
830 for GAME_MOD in ${GAME_MODS[@]}; do
831 echo "<Directory ~/server/*/*/${GAME_MOD}/*>
832 Umask 077 077
833 <Limit RNFR RNTO STOR DELE MKD RMD>
834 AllowAll
835 </Limit>
836</Directory>" >> /etc/proftpd/conf.d/easy-wi.conf
837 done
838
839 FOLDERS=("addons" "cfg" "maps")
840
841 for FOLDER in ${FOLDERS[@]}; do
842 echo "<Directory ~/*/*/*/*/${FOLDER}>
843 Umask 077 077
844 <Limit RNFR RNTO STOR DELE>
845 AllowAll
846 </Limit>
847</Directory>
848<Directory ~/*/*/*/${FOLDER}>
849 Umask 077 077
850 <Limit RNFR RNTO STOR DELE MKD RMD>
851 AllowAll
852 </Limit>
853</Directory>" >> /etc/proftpd/conf.d/easy-wi.conf
854 done
855 fi
856 fi
857
858 if [ -f /etc/init.d/proftpd ]; then
859 service proftpd restart
860 fi
861 fi
862fi
863
864if [ "$INSTALL" == "GS" -o "$INSTALL" == "WR" ]; then
865
866 cyanMessage " "
867 cyanMessage "Install Quota?"
868
869 OPTIONS=("Yes" "No" "Quit")
870 select QUOTAINSTALL in "${OPTIONS[@]}"; do
871 case "$REPLY" in
872 1|2 ) break;;
873 3 ) errorAndQuit;;
874 *) errorAndContinue;;
875 esac
876 done
877
878 if [ "$QUOTAINSTALL" == "Yes" ]; then
879
880 checkInstall quota
881
882 cyanMessage " "
883 cyanMessage " "
884 removeIfExists /root/tempfstab
885 removeIfExists /root/tempmountpoints
886
887 cat /etc/fstab | while read LINE; do
888 if [[ `echo $LINE | grep '/' | egrep -v '#|boot|proc|swap|floppy|cdrom|usrquota|usrjquota|/sys|/shm|/pts'` ]]; then
889 CURRENTOPTIONS=`echo $LINE | awk '{print $4}'`
890 echo $LINE | sed "s/$CURRENTOPTIONS/$CURRENTOPTIONS,usrjquota=aquota.user,jqfmt=vfsv0/g" >> /root/tempfstab
891 echo $LINE | awk '{print $2}' >> /root/tempmountpoints
892 else
893 echo $LINE >> /root/tempfstab
894 fi
895 done
896
897 cat /root/tempfstab
898
899 cyanMessage " "
900 cyanMessage " "
901 cyanMessage "Please check above output and confirm it is correct. On confirmation the current /etc/fstab will be replaced in order to activate Quotas!"
902
903 OPTIONS=("Yes" "No" "Quit")
904 select QUOTAFSTAB in "${OPTIONS[@]}"; do
905 case "$REPLY" in
906 1|2 ) break;;
907 3 ) errorAndQuit;;
908 *) errorAndContinue;;
909 esac
910 done
911
912 if [ "$QUOTAFSTAB" == "Yes" ]; then
913 backUpFile /etc/fstab
914 mv /root/tempfstab /etc/fstab
915 fi
916
917 removeIfExists /root/tempfstab
918 removeIfExists /aquota.user
919 touch /aquota.user
920 chmod 600 /aquota.user
921
922 if [ -f /root/tempmountpoints ]; then
923
924 cat /root/tempmountpoints | while read LINE; do
925
926 quotaoff -ugv $LINE
927
928 removeIfExists $LINE/aquota.user
929
930 okAndSleep "Remounting $LINE"
931 mount -o remount $LINE
932
933 quotacheck -vumc $LINE
934 quotaon -uv $LINE
935 done
936
937 removeIfExists /root/tempmountpoints
938 fi
939 fi
940fi
941
942if [ "$INSTALL" == "WR" -o "$INSTALL" == "EW" ]; then
943
944 if [ "$WEBSERVER" == "Nginx" ]; then
945
946 backUpFile /etc/nginx/nginx.conf
947
948 if [ "`grep '/home/$MASTERUSER/sites-enabled/' /etc/nginx/nginx.conf`" == "" ]; then
949 sed -i "\/etc\/nginx\/sites-enabled\/\*;/a \ \ \ \ \ \ \ \ include \/home\/$MASTERUSER\/sites-enabled\/\*;" /etc/nginx/nginx.conf
950 fi
951
952 elif [ "$WEBSERVER" == "Lighttpd" ]; then
953
954 backUpFile /etc/lighttpd/lighttpd.conf
955 echo "include_shell \"find /home/$MASTERUSER/sites-enabled/ -maxdepth 1 -type f -exec cat {} \;\"" >> /etc/lighttpd/lighttpd.conf
956
957 elif [ "$WEBSERVER" == "Apache" ]; then
958
959 backUpFile /etc/apache2/apache2.conf
960
961 if [ "`grep 'ServerName localhost' /etc/apache2/apache2.conf`" == "" ]; then
962 echo '# Added to prevent error message Could not reliably determine the servers fully qualified domain name' >> /etc/apache2/apache2.conf
963 echo 'ServerName localhost' >> /etc/apache2/apache2.conf
964 fi
965
966 APACHE_VERSION=`apache2 -v | grep 'Server version'`
967
968 if [ "`grep '/home/$MASTERUSER/sites-enabled/' /etc/apache2/apache2.conf`" == "" ]; then
969 if [[ $APACHE_VERSION =~ .*Apache/2.2.* ]]; then
970 sed -i "/Include sites-enabled\//a Include \/home\/$MASTERUSER\/sites-enabled\/" /etc/apache2/apache2.conf
971 sed -i "/Include \/etc\/apache2\/sites-enabled\//a \/home\/$MASTERUSER\/sites-enabled\/" /etc/apache2/apache2.conf
972 else
973 sed -i "/IncludeOptional sites-enabled\//a IncludeOptional \/home\/$MASTERUSER\/sites-enabled\/*.conf" /etc/apache2/apache2.conf
974 sed -i "/IncludeOptional \/etc\/apache2\/sites-enabled\//a IncludeOptional \/home\/$MASTERUSER\/sites-enabled\/*.conf" /etc/apache2/apache2.conf
975 fi
976 fi
977
978 okAndSleep "Activating Apache mod_rewrite module."
979 a2enmod rewrite
980 a2enmod version 2> /dev/null
981 fi
982
983 #TODO: Logrotate
984fi
985
986# No direct root access for masteruser. Only limited access through sudo
987if [ "$INSTALL" == "GS" -o "$INSTALL" == "WR" ]; then
988
989 checkInstall sudo
990
991 if [ -f /etc/sudoers -a "`grep $MASTERUSER /etc/sudoers | grep $USERADD`" == "" ]; then
992 echo "$MASTERUSER ALL = NOPASSWD: $USERADD" >> /etc/sudoers
993 fi
994
995 if [ -f /etc/sudoers -a "`grep $MASTERUSER /etc/sudoers | grep $USERMOD`" == "" ]; then
996 echo "$MASTERUSER ALL = NOPASSWD: $USERMOD" >> /etc/sudoers
997 fi
998
999 if [ -f /etc/sudoers -a "`grep $MASTERUSER /etc/sudoers | grep $USERDEL`" == "" ]; then
1000 echo "$MASTERUSER ALL = NOPASSWD: $USERDEL" >> /etc/sudoers
1001 fi
1002
1003 if [ "$QUOTAINSTALL" == "Yes" -a -f /etc/sudoers ]; then
1004 if [ "`grep $MASTERUSER /etc/sudoers | grep setquota`" == "" ]; then
1005 echo "$MASTERUSER ALL = NOPASSWD: `which setquota`" >> /etc/sudoers
1006 fi
1007
1008 if [ "`grep $MASTERUSER /etc/sudoers | grep repquota`" == "" ]; then
1009 echo "$MASTERUSER ALL = NOPASSWD: `which repquota`" >> /etc/sudoers
1010 fi
1011 fi
1012
1013 if [ "$INSTALL" == "GS" -a -f /etc/sudoers -a "`grep $MASTERUSER /etc/sudoers | grep temp`" == "" ]; then
1014 echo "$MASTERUSER ALL = (ALL, !root:easywi) NOPASSWD: /home/$MASTERUSER/temp/*.sh" >> /etc/sudoers
1015 fi
1016
1017 if [ "$WEBSERVER" == "Nginx" ]; then
1018 HTTPDBIN=`which nginx`
1019 HTTPDSCRIPT="/etc/init.d/nginx"
1020 elif [ "$WEBSERVER" == "Lighttpd" ]; then
1021 HTTPDBIN=`which lighttpd`
1022 HTTPDSCRIPT="/etc/init.d/lighttpd"
1023 elif [ "$WEBSERVER" == "Apache" ]; then
1024 HTTPDBIN=`which apache2`
1025 HTTPDSCRIPT="/etc/init.d/apache2"
1026 fi
1027
1028 if [ "$HTTPDBIN" != "" -a -f /etc/sudoers ]; then
1029 if [ "`grep $MASTERUSER /etc/sudoers | grep $HTTPDBIN`" == "" ]; then
1030 echo "$MASTERUSER ALL = NOPASSWD: $HTTPDBIN" >> /etc/sudoers
1031 fi
1032
1033 if [ "`grep $MASTERUSER /etc/sudoers | grep $HTTPDSCRIPT`" == "" ]; then
1034 echo "$MASTERUSER ALL = NOPASSWD: $HTTPDSCRIPT" >> /etc/sudoers
1035 fi
1036 fi
1037fi
1038
1039if [ "$INSTALL" == "WR" ]; then
1040
1041 chown -R $MASTERUSER:$WEBGROUPID /home/$MASTERUSER/
1042
1043 greenMessage "Following data need to be configured at the easy-wi.com panel:"
1044
1045 greenMessage "The path to the folder \"sites-enabled\" is:"
1046 greenMessage "/home/$MASTERUSER/sites-enabled/"
1047
1048 greenMessage "The useradd command is:"
1049 greenMessage "sudo $USERADD %cmd%"
1050
1051 greenMessage "The usermod command is:"
1052 greenMessage "sudo $USERMOD %cmd%"
1053
1054 greenMessage "The userdel command is:"
1055 greenMessage "sudo $USERDEL %cmd%"
1056
1057 greenMessage "The HTTPD restart command is:"
1058 greenMessage "sudo $HTTPDSCRIPT reload"
1059fi
1060
1061if ([ "$INSTALL" == "GS" -o "$INSTALL" == "WR" ] && [ "$QUOTAINSTALL" == "Yes" ]); then
1062 greenMessage "The setquota command is:"
1063 greenMessage "sudo `which setquota` %cmd%"
1064 greenMessage "The repquota command is:"
1065 greenMessage "sudo `which repquota` %cmd%"
1066fi
1067
1068if [ "$INSTALL" == "GS" ]; then
1069
1070 cyanMessage " "
1071 cyanMessage "Java JRE will be required for running Minecraft and its mods. Shall it be installed?"
1072 OPTIONS=("Yes" "No" "Quit")
1073 select OPTION in "${OPTIONS[@]}"; do
1074 case "$REPLY" in
1075 1|2 ) break;;
1076 3 ) errorAndQuit;;
1077 *) errorAndContinue;;
1078 esac
1079 done
1080
1081 if [ "$OPTION" == "Yes" ]; then
1082 checkInstall default-jre
1083 fi
1084
1085 okAndSleep "Creating folders and files"
1086 CREATEDIRS=("conf" "fdl_data/hl2" "logs" "masteraddons" "mastermaps" "masterserver" "temp")
1087 for CREATEDIR in ${CREATEDIRS[@]}; do
1088 greenMessage "Adding dir: /home/$MASTERUSER/$CREATEDIR"
1089 makeDir /home/$MASTERUSER/$CREATEDIR
1090 done
1091
1092 LOGFILES=("addons" "hl2" "server" "fdl" "update" "fdl-hl2")
1093 for LOGFILE in ${LOGFILES[@]}; do
1094 touch "/home/$MASTERUSER/logs/$LOGFILE.log"
1095 done
1096 chmod 660 /home/$MASTERUSER/logs/*.log
1097
1098 chown -R $MASTERUSER:$MASTERUSER /home/$MASTERUSER/
1099 chmod -R 750 /home/$MASTERUSER/
1100 chmod -R 770 /home/$MASTERUSER/logs/ /home/$MASTERUSER/temp/ /home/$MASTERUSER/fdl_data/
1101
1102 if [ "$OS" == "debian" -a "`uname -m`" == "x86_64" -a "`cat /etc/debian_version | grep '6.'`" == "" ]; then
1103 dpkg --add-architecture i386
1104 fi
1105
1106 if [ "$OS" == "debian" -o "$OS" == "ubuntu" ]; then
1107
1108 okAndSleep "Installing required packages wput screen bzip2 sudo rsync zip unzip"
1109 apt-get install wput screen bzip2 sudo rsync zip unzip -y
1110
1111 if [ "`uname -m`" == "x86_64" ]; then
1112
1113 okAndSleep "Installing 32bit support for 64bit systems."
1114
1115 if ([ "$OS" == "ubuntu" ] || [ "$OS" == "debian" -a "`printf "${OSVERSION}\n8.0" | sort -V | tail -n 1`" == "$OSVERSION" ]); then
1116 apt-get install zlib1g lib32z1 lib32gcc1 lib32readline5 lib32ncursesw5 -y
1117 apt-get install lib32stdc++6 -y
1118 apt-get install lib64stdc++6 -y
1119 apt-get install libstdc++6 -y
1120 apt-get install libgcc1:i386 -y
1121 apt-get install libreadline5:i386 -y
1122 apt-get install libncursesw5:i386 -y
1123 apt-get install zlib1g:i386 -y
1124 else
1125 apt-get install ia32-libs lib32readline5 lib32ncursesw5 lib32stdc++6 -y
1126 fi
1127 else
1128 apt-get install libreadline5 libncursesw5 -y
1129 fi
1130 fi
1131
1132 okAndSleep "Downloading SteamCmd"
1133
1134 cd /home/$MASTERUSER/masterserver
1135 makeDir /home/$MASTERUSER/masterserver/steamCMD/
1136 cd /home/$MASTERUSER/masterserver/steamCMD/
1137 curl --remote-name http://media.steampowered.com/client/steamcmd_linux.tar.gz
1138
1139 if [ -f steamcmd_linux.tar.gz ]; then
1140 tar xfvz steamcmd_linux.tar.gz
1141 removeIfExists steamcmd_linux.tar.gz
1142 chown -R $MASTERUSER:$MASTERUSER /home/$MASTERUSER/masterserver/steamCMD
1143 su -c "./steamcmd.sh +login anonymous +quit" $MASTERUSER
1144 fi
1145
1146 chown -R $INSTALLMASTER:$INSTALLMASTER /home/$INSTALLMASTER
1147
1148 if [ -f /etc/crontab -a "`grep 'Minecraft can easily produce 1GB' /etc/crontab`" == "" ]; then
1149
1150 if ionice -c3 true 2>/dev/null; then
1151 IONICE="ionice -n 7 "
1152 fi
1153
1154 echo "#Minecraft can easily produce 1GB+ logs within one hour" >> /etc/crontab
1155 echo "*/5 * * * * root nice -n +19 ionice -n 7 find /home/*/server/*/*/ -maxdepth 2 -type f -name \"screenlog.0\" -size +100M -delete" >> /etc/crontab
1156 echo "# Even sudo /usr/sbin/deluser --remove-all-files is used some data remain from time to time" >> /etc/crontab
1157 echo "*/5 * * * * root nice -n +19 $IONICE find /home/ -maxdepth 2 -type d -nouser -delete" >> /etc/crontab
1158 echo "*/5 * * * * root nice -n +19 $IONICE find /home/*/fdl_data/ /home/*/temp/ /tmp/ /var/run/screen/ -nouser -print0 | xargs -0 rm -rf" >> /etc/crontab
1159 echo "*/5 * * * * root nice -n +19 $IONICE find /var/run/screen/ -maxdepth 1 -type d -nouser -print0 | xargs -0 rm -rf" >> /etc/crontab
1160
1161 service cron restart
1162 fi
1163fi
1164
1165if [ "$INSTALL" == "EW" ]; then
1166
1167 makeDir /home/$MASTERUSER/fpm-pool.d/
1168
1169 if [ -f /home/easywi_web/htdocs/serverallocation.php ]; then
1170
1171 cyanMessage " "
1172 cyanMessage "There is already an existing installation. Should it be removed?"
1173 OPTIONS=("Yes" "Quit")
1174 select OPTION in "${OPTIONS[@]}"; do
1175 case "$REPLY" in
1176 1 ) break;;
1177 2 ) errorAndQuit;;
1178 *) errorAndContinue;;
1179 esac
1180 done
1181
1182 rm -rf /home/easywi_web/htdocs/*
1183 fi
1184
1185 if [ "`id easywi_web 2> /dev/null`" == "" -a ! -d /home/easywi_web ]; then
1186 $USERADD -md /home/easywi_web -g www-data -s /bin/bash -k /home/$MASTERUSER/skel/ easywi_web
1187 elif [ "`id easywi_web 2> /dev/null`" == "" -a -d /home/easywi_web ]; then
1188 $USERADD -d /home/easywi_web -g www-data -s /bin/bash easywi_web
1189 fi
1190
1191 makeDir /home/easywi_web/htdocs/
1192 makeDir /home/easywi_web/logs/
1193 makeDir /home/easywi_web/tmp/
1194 makeDir /home/easywi_web/session/
1195 chown -R easywi_web:$WEBGROUPID /home/easywi_web/htdocs/ /home/easywi_web/logs/ /home/easywi_web/tmp/ /home/easywi_web/session/
1196
1197 if [ "`id easywi_web 2> /dev/null`" == "" ]; then
1198 errorAndExit "Web user easywi_web does not exists! Exiting now!"
1199 fi
1200
1201 if [ ! -d /home/easywi_web/htdocs ]; then
1202 errorAndExit "No home/htdocs dir created! Exiting now!"
1203 fi
1204
1205 checkInstall unzip
1206
1207 cd /home/easywi_web/htdocs/
1208
1209 okAndSleep "Downloading latest Easy-WI stable."
1210 curl https://easy-wi.com/uk/downloads/get/3/ -o web.zip
1211
1212 if [ ! -f web.zip ]; then
1213 errorAndExit "Can not download Easy-WI. Aborting!"
1214 fi
1215
1216 okAndSleep "Unpack zipped Easy-WI archive."
1217 unzip -u web.zip >/dev/null 2>&1
1218 removeIfExists web.zip
1219
1220 find /home/easywi_web/ -type f -print0 | xargs -0 chmod 640
1221 find /home/easywi_web/ -mindepth 1 -type d -print0 | xargs -0 chmod 750
1222
1223 chown -R easywi_web:www-data /home/easywi_web
1224
1225 DB_PASSWORD=`< /dev/urandom tr -dc A-Za-z0-9 | head -c18`
1226
1227 okAndSleep "Creating database easy_wi and connected user easy_wi"
1228 mysql -uroot -p$MYSQL_ROOT_PASSWORD -Bse "CREATE DATABASE IF NOT EXISTS easy_wi; GRANT ALL ON easy_wi.* TO 'easy_wi'@'localhost' IDENTIFIED BY '$DB_PASSWORD'; FLUSH PRIVILEGES;"
1229
1230 cyanMessage " "
1231 cyanMessage "Secure Vhost with SSL? (recommended!)"
1232 OPTIONS=("Yes" "No" "Quit")
1233 select SSL in "${OPTIONS[@]}"; do
1234 case "$REPLY" in
1235 1|2 ) break;;
1236 3 ) errorAndQuit;;
1237 *) errorAndContinue;;
1238 esac
1239 done
1240
1241 FILE_NAME=${IP_DOMAIN//./_}
1242
1243 if [ "$SSL" == "Yes" ]; then
1244
1245 checkInstall openssl
1246
1247 if [ "$WEBSERVER" == "Nginx" ]; then
1248 SSL_DIR=/etc/nginx/ssl
1249 elif [ "$WEBSERVER" == "Apache" ]; then
1250 SSL_DIR=/etc/apache2/ssl
1251 fi
1252
1253 makeDir $SSL_DIR
1254
1255 cyanMessage " "
1256 okAndSleep "Creating a self-signed SSL certificate."
1257 openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout $SSL_DIR/$FILE_NAME.key -out $SSL_DIR/$FILE_NAME.crt -subj "/C=/ST=/L=/O=/OU=/CN=$IP_DOMAIN"
1258 fi
1259
1260 if [ "$WEBSERVER" == "Nginx" -o "$WEBSERVER" == "Lighttpd" ]; then
1261
1262 FILE_NAME_POOL=/home/$MASTERUSER/fpm-pool.d/$FILE_NAME.conf
1263
1264 echo "[$IP_DOMAIN]" > $FILE_NAME_POOL
1265 echo "user = easywi_web" >> $FILE_NAME_POOL
1266 echo "group = www-data" >> $FILE_NAME_POOL
1267 echo "listen = /var/run/php5-fpm-$FILE_NAME.sock" >> $FILE_NAME_POOL
1268 echo "listen.owner = easywi_web" >> $FILE_NAME_POOL
1269 echo "listen.group = www-data" >> $FILE_NAME_POOL
1270 echo "pm = dynamic" >> $FILE_NAME_POOL
1271 echo "pm.max_children = 1" >> $FILE_NAME_POOL
1272 echo "pm.start_servers = 1" >> $FILE_NAME_POOL
1273 echo "pm.min_spare_servers = 1" >> $FILE_NAME_POOL
1274 echo "pm.max_spare_servers = 1" >> $FILE_NAME_POOL
1275 echo "pm.max_requests = 500" >> $FILE_NAME_POOL
1276 echo "chdir = /" >> $FILE_NAME_POOL
1277 echo "access.log = /home/easywi_web/logs/fpm-access.log" >> $FILE_NAME_POOL
1278 echo "php_flag[display_errors] = off" >> $FILE_NAME_POOL
1279 echo "php_admin_flag[log_errors] = on" >> $FILE_NAME_POOL
1280 echo "php_admin_value[error_log] = /home/easywi_web/logs/fpm-error.log" >> $FILE_NAME_POOL
1281 echo "php_admin_value[memory_limit] = 32M" >> $FILE_NAME_POOL
1282 echo "php_admin_value[open_basedir] = /home/easywi_web/htdocs/:/home/easywi_web/tmp/" >> $FILE_NAME_POOL
1283 echo "php_admin_value[upload_tmp_dir] = /home/easywi_web/tmp" >> $FILE_NAME_POOL
1284 echo "php_admin_value[session.save_path] = /home/easywi_web/session" >> $FILE_NAME_POOL
1285
1286 chown $MASTERUSER:www-data $FILE_NAME_POOL
1287 fi
1288
1289 FILE_NAME_VHOST=/home/$MASTERUSER/sites-enabled/$FILE_NAME
1290
1291 if [ "$WEBSERVER" == "Nginx" ]; then
1292 echo 'server {' > $FILE_NAME_VHOST
1293 echo ' listen 80;' >> $FILE_NAME_VHOST
1294
1295 if [ "$SSL" == "Yes" ]; then
1296
1297 echo " server_name $IP_DOMAIN;" >> $FILE_NAME_VHOST
1298 echo " return 301 https://$IP_DOMAIN"'$request_uri;' >> $FILE_NAME_VHOST
1299 echo '}' >> $FILE_NAME_VHOST
1300
1301 backUpFile /etc/nginx/nginx.conf
1302
1303 if [ "`grep 'ssl_ecdh_curve secp384r1;' /etc/nginx/nginx.conf`" == "" ]; then
1304 sed -i '/ssl_prefer_server_ciphers on;/a \\tssl_ecdh_curve secp384r1;' /etc/nginx/nginx.conf
1305 fi
1306 if [ "`grep 'ssl_session_cache' /etc/nginx/nginx.conf`" == "" ]; then
1307 sed -i '/ssl_prefer_server_ciphers on;/a \\tssl_session_cache shared:SSL:10m;' /etc/nginx/nginx.conf
1308 fi
1309 if [ "`grep 'ssl_session_timeout' /etc/nginx/nginx.conf`" == "" ]; then
1310 sed -i '/ssl_prefer_server_ciphers on;/a \\tssl_session_timeout 10m;' /etc/nginx/nginx.conf
1311 fi
1312 if [ "`grep 'ssl_ciphers' /etc/nginx/nginx.conf`" == "" ]; then
1313 sed -i '/ssl_prefer_server_ciphers on;/a \\tssl_ciphers EECDH+AESGCM:EDH+AESGCM:EECDH:EDH:!MD5:!RC4:!LOW:!MEDIUM:!CAMELLIA:!ECDSA:!DES:!DSS:!3DES:!NULL;' /etc/nginx/nginx.conf
1314 fi
1315
1316 echo 'server {' >> $FILE_NAME_VHOST
1317 echo ' listen 443 ssl;' >> $FILE_NAME_VHOST
1318 echo " ssl_certificate /etc/nginx/ssl/$FILE_NAME.crt;" >> $FILE_NAME_VHOST
1319 echo " ssl_certificate_key /etc/nginx/ssl/$FILE_NAME.key;" >> $FILE_NAME_VHOST
1320 fi
1321
1322 echo ' root /home/easywi_web/htdocs/;' >> $FILE_NAME_VHOST
1323 echo ' index index.html index.htm index.php;' >> $FILE_NAME_VHOST
1324 echo " server_name $IP_DOMAIN;" >> $FILE_NAME_VHOST
1325 echo ' location ~ /(keys|stuff|template|languages|downloads|tmp) { deny all; }' >> $FILE_NAME_VHOST
1326 echo ' location / {' >> $FILE_NAME_VHOST
1327 echo ' try_files $uri $uri/ =404;' >> $FILE_NAME_VHOST
1328 echo ' }' >> $FILE_NAME_VHOST
1329 echo ' location ~ \.php$ {' >> $FILE_NAME_VHOST
1330 echo ' fastcgi_split_path_info ^(.+\.php)(/.+)$;' >> $FILE_NAME_VHOST
1331 echo ' try_files $fastcgi_script_name =404;' >> $FILE_NAME_VHOST
1332 echo ' set $path_info $fastcgi_path_info;' >> $FILE_NAME_VHOST
1333 echo ' fastcgi_param PATH_INFO $path_info;' >> $FILE_NAME_VHOST
1334 echo ' fastcgi_index index.php;' >> $FILE_NAME_VHOST
1335
1336 if [ -f /etc/nginx/fastcgi.conf ]; then
1337 echo ' include /etc/nginx/fastcgi.conf;' >> $FILE_NAME_VHOST
1338 elif [ -f /etc/nginx/fastcgi_params ]; then
1339 echo ' include /etc/nginx/fastcgi_params;' >> $FILE_NAME_VHOST
1340 fi
1341
1342 echo " fastcgi_pass unix:/var/run/php5-fpm-$FILE_NAME.sock;" >> $FILE_NAME_VHOST
1343 echo ' }' >> $FILE_NAME_VHOST
1344 echo '}' >> $FILE_NAME_VHOST
1345
1346 chown -R $MASTERUSER:$WEBGROUPID /home/$MASTERUSER/
1347
1348 okAndSleep "Restarting PHP-FPM and Nginx."
1349 service php5-fpm restart
1350 service nginx restart
1351
1352 elif [ "$WEBSERVER" == "Apache" ]; then
1353
1354 FILE_NAME_VHOST="$FILE_NAME_VHOST.conf"
1355
1356 echo '<VirtualHost *:80>' > $FILE_NAME_VHOST
1357 echo " ServerName $IP_DOMAIN" >> $FILE_NAME_VHOST
1358 echo " ServerAdmin info@$IP_DOMAIN" >> $FILE_NAME_VHOST
1359
1360 if [ "$SSL" == "Yes" ]; then
1361
1362 echo " Redirect permanent / https://$IP_DOMAIN/" >> $FILE_NAME_VHOST
1363 echo '</VirtualHost>' >> $FILE_NAME_VHOST
1364
1365 okAndSleep "Activating TLS/SSL related Apache modules."
1366 a2enmod ssl
1367 service apache2 restart
1368
1369 echo '<VirtualHost *:443>' >> $FILE_NAME_VHOST
1370 echo " ServerName $IP_DOMAIN" >> $FILE_NAME_VHOST
1371 echo ' SSLEngine on' >> $FILE_NAME_VHOST
1372 echo " SSLCertificateFile /etc/apache2/ssl/$FILE_NAME.crt" >> $FILE_NAME_VHOST
1373 echo " SSLCertificateKeyFile /etc/apache2/ssl/$FILE_NAME.key" >> $FILE_NAME_VHOST
1374
1375 fi
1376
1377
1378 echo ' DocumentRoot "/home/easywi_web/htdocs/"' >> $FILE_NAME_VHOST
1379 echo ' ErrorLog "/home/easywi_web/logs/error.log"' >> $FILE_NAME_VHOST
1380 echo ' CustomLog "/home/easywi_web/logs/access.log" common' >> $FILE_NAME_VHOST
1381 echo ' DirectoryIndex index.php index.html' >> $FILE_NAME_VHOST
1382 echo ' <IfModule mpm_itk_module>' >> $FILE_NAME_VHOST
1383 echo ' AssignUserId easywi_web www-data' >> $FILE_NAME_VHOST
1384 echo ' MaxClientsVHost 50' >> $FILE_NAME_VHOST
1385 echo ' NiceValue 10' >> $FILE_NAME_VHOST
1386 echo ' php_admin_flag allow_url_fopen off' >> $FILE_NAME_VHOST
1387 echo ' php_admin_flag allow_url_include off' >> $FILE_NAME_VHOST
1388 echo ' php_admin_flag display_errors off' >> $FILE_NAME_VHOST
1389 echo ' php_admin_flag log_errors on' >> $FILE_NAME_VHOST
1390 echo ' php_admin_flag mod_rewrite on' >> $FILE_NAME_VHOST
1391 echo ' php_admin_value open_basedir "/home/easywi_web/htdocs/:/home/easywi_web/tmp"' >> $FILE_NAME_VHOST
1392 echo ' php_admin_value session.save_path "/home/easywi_web/session"' >> $FILE_NAME_VHOST
1393 echo ' php_admin_value upload_tmp_dir "/home/easywi_web/tmp"' >> $FILE_NAME_VHOST
1394 echo ' php_admin_value upload_max_size 32M' >> $FILE_NAME_VHOST
1395 echo ' php_admin_value memory_limit 32M' >> $FILE_NAME_VHOST
1396 echo ' </IfModule>' >> $FILE_NAME_VHOST
1397 echo ' <Directory /home/easywi_web/htdocs/>' >> $FILE_NAME_VHOST
1398 echo ' Options -Indexes +FollowSymLinks +Includes' >> $FILE_NAME_VHOST
1399 echo ' AllowOverride None' >> $FILE_NAME_VHOST
1400 echo ' <IfVersion >= 2.4>' >> $FILE_NAME_VHOST
1401 echo ' Require all granted' >> $FILE_NAME_VHOST
1402 echo ' </IfVersion>' >> $FILE_NAME_VHOST
1403 echo ' <IfVersion < 2.4>' >> $FILE_NAME_VHOST
1404 echo ' Order allow,deny' >> $FILE_NAME_VHOST
1405 echo ' Allow from all' >> $FILE_NAME_VHOST
1406 echo ' </IfVersion>' >> $FILE_NAME_VHOST
1407 echo ' </Directory>' >> $FILE_NAME_VHOST
1408 echo ' <LocationMatch "/(keys|stuff|template|languages|downloads|tmp)">' >> $FILE_NAME_VHOST
1409 echo ' <IfVersion >= 2.4>' >> $FILE_NAME_VHOST
1410 echo ' Require all denied' >> $FILE_NAME_VHOST
1411 echo ' </IfVersion>' >> $FILE_NAME_VHOST
1412 echo ' <IfVersion < 2.4>' >> $FILE_NAME_VHOST
1413 echo ' Order deny,allow' >> $FILE_NAME_VHOST
1414 echo ' Deny from all' >> $FILE_NAME_VHOST
1415 echo ' </IfVersion>' >> $FILE_NAME_VHOST
1416 echo ' </LocationMatch>' >> $FILE_NAME_VHOST
1417 echo '</VirtualHost>' >> $FILE_NAME_VHOST
1418
1419 okAndSleep "Restarting Apache2."
1420 service apache2 restart
1421 fi
1422
1423 chown $MASTERUSER:www-data $FILE_NAME_VHOST
1424
1425 if [ "`grep reboot.php /etc/crontab`" == "" ]; then
1426 echo '0 */1 * * * easywi_web cd /home/easywi_web/htdocs && timeout 300 php ./reboot.php >/dev/null 2>&1
14270 */1 * * * easywi_web cd /home/easywi_web/htdocs && timeout 300 php ./reboot.php >/dev/null 2>&1
1428*/5 * * * * easywi_web cd /home/easywi_web/htdocs && timeout 290 php ./statuscheck.php >/dev/null 2>&1
1429*/1 * * * * easywi_web cd /home/easywi_web/htdocs && timeout 290 php ./startupdates.php >/dev/null 2>&1
1430*/5 * * * * easywi_web cd /home/easywi_web/htdocs && timeout 290 php ./jobs.php >/dev/null 2>&1
1431*/10 * * * * easywi_web cd /home/easywi_web/htdocs && timeout 290 php ./cloud.php >/dev/null 2>&1' >> /etc/crontab
1432 fi
1433
1434 service cron restart
1435fi
1436
1437if [ "$INSTALL" == "VS" ]; then
1438
1439 ps -u $MASTERUSER | grep ts3server | awk '{print $1}' | while read PID; do
1440 kill $PID
1441 done
1442
1443 if [ -f /home/$MASTERUSER/ts3server_startscript.sh ]; then
1444 rm -rf /home/$MASTERUSER/*
1445 fi
1446
1447 makeDir /home/$MASTERUSER/
1448 chmod 750 /home/$MASTERUSER/
1449 chown -R $MASTERUSER:$MASTERUSER /home/$MASTERUSER
1450
1451 cd /home/$MASTERUSER/
1452
1453 okAndSleep "Downloading TS3 server files."
1454 su -c "curl $DOWNLOAD_URL -o teamspeak3-server.tar.gz" $MASTERUSER
1455
1456 if [ ! -f teamspeak3-server.tar.gz ]; then
1457 errorAndExit "Download failed! Exiting now!"
1458 fi
1459
1460 okAndSleep "Extracting TS3 server files."
1461 su -c "tar -xf teamspeak3-server.tar.gz --strip-components=1" $MASTERUSER
1462
1463 removeIfExists teamspeak3-server.tar.gz
1464
1465 QUERY_WHITLIST_TXT=/home/$MASTERUSER/query_ip_whitelist.txt
1466
1467 if [ ! -f $QUERY_WHITLIST_TXT ]; then
1468 touch $QUERY_WHITLIST_TXT
1469 chown $MASTERUSER:$MASTERUSER $QUERY_WHITLIST_TXT
1470 fi
1471
1472 if [ -f $QUERY_WHITLIST_TXT ]; then
1473
1474 if [ "`grep '127.0.0.1' $QUERY_WHITLIST_TXT`" == "" ]; then
1475 echo "127.0.0.1" >> $QUERY_WHITLIST_TXT
1476 fi
1477
1478 if [ "$LOCAL_IP" != "" ]; then
1479 if [ "`grep -E '\b((25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)(\.|$)){4}\b' <<< $LOCAL_IP`" != "" -a "`grep $LOCAL_IP $QUERY_WHITLIST_TXT`" == "" ]; then
1480 echo $LOCAL_IP >> $QUERY_WHITLIST_TXT
1481 fi
1482 fi
1483
1484 cyanMessage " "
1485 cyanMessage "Please secify the IPv4 address of the Easy-WI web panel."
1486 read IP_ADDRESS
1487
1488 if [ "$IP_ADDRESS" != "" ]; then
1489 if [ "`grep -E '\b((25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)(\.|$)){4}\b' <<< $IP_ADDRESS`" != "" -a "`grep $IP_ADDRESS $QUERY_WHITLIST_TXT`" == "" ]; then
1490 echo $IP_ADDRESS >> $QUERY_WHITLIST_TXT
1491 fi
1492 fi
1493 else
1494 redMessage "Cannot edit the file $QUERY_WHITLIST_TXT, please maintain it manually."
1495 fi
1496
1497 QUERY_PASSWORD=`< /dev/urandom tr -dc A-Za-z0-9 | head -c12`
1498
1499 greenMessage "Starting the TS3 server for the first time and shutting it down again as the password will be visible in the process tree."
1500 su -c "./ts3server_startscript.sh start serveradmin_password=$QUERY_PASSWORD createinifile=1 inifile=ts3server.ini" $MASTERUSER
1501 runSpinner 25
1502 su -c "./ts3server_startscript.sh stop" $MASTERUSER
1503
1504 greenMessage "Starting the TS3 server permanently."
1505 su -c "./ts3server_startscript.sh start inifile=ts3server.ini" $MASTERUSER
1506fi
1507
1508okAndSleep "Removing not needed packages."
1509apt-get autoremove
1510
1511if [ "$INSTALL" == "EW" ]; then
1512
1513 if [ "$SSL" == "Yes" ]; then
1514 PROTOCOL="https"
1515 else
1516 PROTOCOL="http"
1517 fi
1518
1519 greenMessage "Easy-WI Webpanel setup is done regarding architecture. Please open $PROTOCOL://$IP_DOMAIN/install/install.php and complete the installation dialog."
1520 greenMessage "DB user and table name are \"easy_wi\". The password is \"$DB_PASSWORD\"."
1521
1522elif [ "$INSTALL" == "GS" ]; then
1523 greenMessage "Gameserver Root setup is done. Please enter the above data at the webpanel at \"App/Game Master > Overview > Add\"."
1524elif [ "$INSTALL" == "VS" ]; then
1525 greenMessage "Teamspeak 3 setup is done. TS3 Query password is $QUERY_PASSWORD. Please enter the data at the webpanel at \"Voiceserver > Master > Add\"."
1526elif [ "$INSTALL" == "WR" ]; then
1527 greenMessage "Webspace Root setup is done. Please enter the above data at the webpanel at \"Webspace > Master > Add\"."
1528fi
1529
1530if ([ "$INSTALL" == "MY" ] || [ "$INSTALL" == "WR" -a "$SQL" != "None" ]); then
1531 greenMessage "MySQL Root setup is done. Please enter the server at the webpanel at \"MySQL > Master > Add\"."
1532fi
1533
1534exit 0