source: bootstrapper/bootstrap.sh @ 32

Last change on this file since 32 was 32, checked in by alloc, 8 years ago

Bootstrapper update

File size: 6.3 KB
Line 
1#!/bin/bash
2# Version 1
3
4if [ `id -u` -ne 0 ]; then
5        echo "This script has to be run as root!"
6        exit 1
7fi
8
9
10ADDCRONJOBS=0
11RUNINSTALL=0
12INSTALLOPTIONALDEPS=0
13
14DEPENDENCIES="gcc wget tr xvfb mono-runtime rsync xmlstarlet gcc"
15
16if [ -n "$(command -v apt-get)" ]; then
17        ISDEBIAN=1
18else
19        ISDEBIAN=0
20fi
21
22if [ $(uname -m) == 'x86_64' ]; then
23        IS64BIT=1
24else
25        IS64BIT=0
26fi
27
28if [ $IS64BIT -eq 1 ]; then
29        DEPENDENCIES="$DEPENDENCIES lib32gcc1 wine:i386"
30else
31        DEPENDENCIES="$DEPENDENCIES wine"
32fi
33
34showHelp() {
35        echo "Usage: ./bootstrap.sh [-h] [-c] -i"
36        echo "Parameters:"
37        echo "  -h   Print this help screen and exit"
38#       echo "  -o   Install optional dependencies ($OPTDEPENDENCIES)"
39        echo "  -c   Enable cron job for automatic backups"
40        echo "  -i   Required to actually start the installation"
41}
42
43intro() {
44        echo
45        echo "7DtD Linux dedicated server bootstrapper"
46        echo
47        echo "This will install a 7DtD server according to the information"
48        echo "given on:"
49        echo "   https://7dtd.illy.bz/"
50        echo
51        read -p "Press enter to continue"
52        echo -e "\n=============================================================\n\n"
53}
54
55nonDebianWarning() {
56        if [ $ISDEBIAN -eq 0 ]; then
57                echo "NOTE: It seems like this system is not based on Debian."
58                echo "Although installation of the scripts and SteamCMD/7dtd"
59                echo "will work the installed management scripts will probably"
60                echo "fail because of missing dependencies. Make sure you check"
61                echo "the website regarding the prerequisites"
62                echo "(https://7dtd.illy.bz)."
63                echo "Do you want to continue anyway?"
64                select yn in "Yes" "No"; do
65                        case $yn in
66                                Yes)
67                                        echo "Continuing..."
68                                        break;;
69                                No)
70                                        echo "Aborting."
71                                        exit 0
72                                        ;;
73                        esac
74                done
75                echo -e "\n=============================================================\n\n"
76        fi
77}
78
79installAptDeps() {
80        echo -e "Installing dependencies\n"
81        if [ $IS64BIT -eq 1 ]; then
82                dpkg --add-architecture i386
83        fi
84        apt-get update
85        apt-get install $DEPENDENCIES
86        echo -e "\n=============================================================\n\n"
87}
88
89installOptionalDeps() {
90        echo -e "Installing optional dependencies\n"
91        apt-get install $OPTDEPENDENCIES
92        echo -e "\n=============================================================\n\n"
93}
94
95checkSetupDeps() {
96        which gcc > /dev/null
97        if [ $? -ne 0 ]; then
98                echo "'gcc' not installed. Please install it and run this script again."
99                echo 0
100                return
101        fi
102
103        which wget > /dev/null
104        if [ $? -ne 0 ]; then
105                echo "'wget' not installed. Please install it and run this script again."
106                echo 0
107                return
108        fi
109
110        which tr > /dev/null
111        if [ $? -ne 0 ]; then
112                echo "'tr' not installed. Please install it and run this script again."
113                echo 0
114                return
115        fi
116
117        echo 1
118}
119
120setupUser() {
121        echo -e "Setting up user and group \"sdtd\"\n"
122        useradd -d /home/sdtd -m -r -s /bin/bash -U sdtd
123        echo -e "\n=============================================================\n\n"
124}
125
126installManagementScripts() {
127        echo -e "Downloading and installing management scripts\n"
128        wget -nv http://illy.bz/fi/7dtd/management_scripts.tar.gz -O /tmp/management_scripts.tar.gz
129        tar --touch -xzf /tmp/management_scripts.tar.gz -C /
130
131        chown root.root /etc/7dtd.conf
132        chmod 0600 /etc/7dtd.conf
133
134        chown sdtd.sdtd /home/sdtd -R
135
136        chown root.root /etc/init.d/7dtd.sh
137        chown root.root /etc/bash_completion.d/7dtd
138        chown root.root /usr/local/bin/7dtd.sh
139        chown root.root /usr/local/lib/7dtd -R
140        chmod 0755 /etc/init.d/7dtd.sh
141        chmod 0755 /etc/bash_completion.d/7dtd
142        chmod 0755 /usr/local/bin/7dtd.sh
143        chmod 0755 /usr/local/lib/7dtd -R
144
145        if [ $ISDEBIAN -eq 1 ]; then
146                update-rc.d 7dtd.sh defaults
147        fi
148       
149        echo
150        echo "Compiling start-stop-daemon"
151        cd /usr/local/lib/7dtd/start-stop-daemon
152
153        gcc -Wall -Wextra -Wno-return-type -o start-stop-daemon start-stop-daemon.c
154        chown root.root start-stop-daemon
155        chmod 0755 start-stop-daemon
156
157#TODO: remove
158        sed -ir "s/^export SSD=.*$/export SSD=\/usr\/local\/lib\/7dtd\/start-stop-daemon\/start-stop-daemon/" /etc/7dtd.conf
159
160        echo -e "\n=============================================================\n\n"
161}
162
163setSteamLoginData() {
164        echo -e "Steam account data\n"
165        echo "Please enter your Steam login data for SteamCMD to get the 7dtd-server files:"
166        read -p "Steam username: " username
167        read -s -p "Steam password: " password
168        sed -i "s/export STEAM_USER=/export STEAM_USER=$username/" /etc/7dtd.conf
169        sed -i "s/export STEAM_PASS=/export STEAM_PASS=$password/" /etc/7dtd.conf
170        echo -e "\n=============================================================\n\n"
171}
172
173installSteamCmdAndSDTD() {
174        echo -e "Installing SteamCMD and 7DtD\n"
175        7dtd.sh updateengine
176        echo -e "\n=============================================================\n\n"
177}
178
179addCronJobs() {
180        echo -e "Enabling backup cron job\n"
181
182        echo -e "By default a backup of the save folder will be created once"
183        echo -e "  per hour. This can be changed in /etc/cron.d/7dtd-backup."
184       
185        cat /etc/cron.d/7dtd-backup | tr -d '#' > /tmp/7dtd-backup
186        cp /tmp/7dtd-backup /etc/cron.d
187
188        echo -e "\n=============================================================\n\n"
189}
190
191finish() {
192        if [ $ISDEBIAN -eq 0 ]; then
193                echo
194                echo "You are not running a Debian based distribution."
195                echo "The following things should manually be checked:"
196                echo " - Existence of prerequsities"
197                echo " - Running the init-script on boot"
198        else
199                echo -e "\n ALL DONE"
200        fi
201
202        echo
203        echo -e "You can now continue setting up instances as explained on the website:"
204        echo -e "  https://7dtd.illy.bz/wiki/Instance%20management"
205        echo
206        echo -e "You might also need to manually enable bash auto completion, refer to:"
207        echo -e "  https://7dtd.illy.bz/wiki/Installation#Bashcompletion"
208        echo
209        echo -e "For further configuration options check:"
210        echo -e "  /etc/7dtd.conf"
211        echo
212        echo -e "For feedback, suggestions, problems please visit the bugtracker:"
213        echo -e "  https://7dtd.illy.bz/"
214        echo
215}
216
217main() {
218        intro
219        nonDebianWarning
220
221        if [ $ISDEBIAN -eq 1 ]; then
222                installAptDeps
223                if [ $INSTALLOPTIONALDEPS -eq 1 ]; then
224#                       installOptionalDeps
225                        echo
226                fi
227        else
228                if [ $(checkSetupDeps) -eq 0 ]; then
229                        return
230                fi
231        fi
232        setupUser
233        installManagementScripts
234        setSteamLoginData
235        installSteamCmdAndSDTD
236        if [ $ADDCRONJOBS -eq 1 ]; then
237                addCronJobs
238        fi
239        finish
240}
241
242if [ -z $1 ]; then
243        showHelp
244        exit 0
245fi
246while getopts "hcoi" opt; do
247        case "$opt" in
248                h)
249                        showHelp
250                        exit 0
251                        ;;
252                c)
253                        ADDCRONJOBS=1
254                        ;;
255                o)
256                        INSTALLOPTIONALDEPS=1
257                        ;;
258                i)
259                        RUNINSTALL=1
260                        ;;
261        esac
262done
263if [ $RUNINSTALL -eq 1 ]; then
264        main
265fi
266
Note: See TracBrowser for help on using the repository browser.