-
-
Notifications
You must be signed in to change notification settings - Fork 119
/
Copy pathentrypoint.sh
executable file
·174 lines (152 loc) · 5.7 KB
/
entrypoint.sh
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
#!/bin/bash
# From https://github.com/docker-library/mariadb/blob/master/docker-entrypoint.sh#L21-L41
# usage: file_env VAR [DEFAULT]
# ie: file_env 'XYZ_DB_PASSWORD' 'example'
# (will allow for "$XYZ_DB_PASSWORD_FILE" to fill in the value of
# "$XYZ_DB_PASSWORD" from a file, especially for Docker's secrets feature)
file_env() {
local var="$1"
local fileVar="${var}_FILE"
local def="${2:-}"
if [ "${!var:-}" ] && [ "${!fileVar:-}" ]; then
echo >&2 "error: both $var and $fileVar are set (but are exclusive)"
exit 1
fi
local val="$def"
if [ "${!var:-}" ]; then
val="${!var}"
elif [ "${!fileVar:-}" ]; then
val="$(< "${!fileVar}")"
fi
export "$var"="$val"
unset "$fileVar"
}
SCREEN_NAME="csgo"
USER="steam"
DIR_STEAMCMD="/var/steamcmd"
DIR_ROOT="/var/steamcmd/games/csgo"
DIR_GAME="$DIR_ROOT/csgo"
DIR_LOGS="$DIR_GAME/logs"
STEAM_RUNSCRIPT="${DIR_STEAMCMD}/runscript_${SCREEN_NAME}"
DAEMON_GAME="srcds_run"
#####
TZ=${TZ:-UTC}
PUID=${PUID:-1000}
PGID=${PGID:-1000}
#SMTP_HOST=${SMTP_HOST:-smtp.example.com}
#SMTP_PORT=${SMTP_PORT:-25}
#SMTP_TLS=${SMTP_TLS:-off}
#SMTP_STARTTLS=${SMTP_STARTTLS:-off}
#SMTP_TLS_CHECKCERT=${SMTP_TLS_CHECKCERT:-on}
#SMTP_AUTH=${SMTP_AUTH:-off}
#SMTP_USER=${SMTP_USER:-foo}
#SMTP_PASSWORD=${SMTP_PASSWORD:-bar}
#SMTP_FROM=${SMTP_FROM:[email protected]}
#SMTP_DOMAIN=${SMTP_DOMAIN:-example.com}
IP=${IP:-$(sudo dig -4 +short myip.opendns.com @resolver1.opendns.com)}
PORT=${PORT:-27015}
GSLT=${GSLT}
STEAM_LOGIN=${STEAM_LOGIN:-anonymous}
STEAM_PASSWORD=${STEAM_PASSWORD:-anonymous}
UPDATE_LOG=${DIR_LOGS}/update_$(date +%Y%m%d).log
UPDATE_EMAIL=${UPDATE_EMAIL}
UPDATE_RETRY=${UPDATE_RETRY:-3}
CLEAR_DOWNLOAD_CACHE=${CLEAR_DOWNLOAD_CACHE:-0}
API_AUTHORIZATION_KEY=${API_AUTHORIZATION_KEY}
WORKSHOP_COLLECTION_ID=${WORKSHOP_COLLECTION_ID:-125499818}
WORKSHOP_START_MAP=${WORKSHOP_START_MAP:-125488374}
MAXPLAYERS=${MAXPLAYERS:-18}
TICKRATE=${TICKRATE:-64}
EXTRAPARAMS=${EXTRAPARAMS:--nohltv +sv_pure 0 +game_type 0 +game_mode 0 +mapgroup mg_active +map de_dust2}
PARAM_START="-nobreakpad -game csgo -console -usercon -secure -autoupdate -steam_dir ${DIR_STEAMCMD} -steamcmd_script ${STEAM_RUNSCRIPT} -maxplayers_override ${MAXPLAYERS} -tickrate ${TICKRATE} +hostport ${PORT} +net_public_adr ${IP} ${EXTRAPARAMS}"
PARAM_UPDATE="+force_install_dir ${DIR_ROOT} +login ${STEAM_LOGIN} ${STEAM_PASSWORD} +app_update 740 validate +quit"
# Timezone
echo "Setting timezone to ${TZ}..."
sudo ln -snf /usr/share/zoneinfo/${TZ} /etc/localtime
echo ${TZ} | sudo tee /etc/timezone > /dev/null
# Change steam UID / GID
echo "Checking if steam UID / GID has changed..."
if [ $(id -u steam) != ${PUID} ]; then
usermod -u ${PUID} steam
fi
if [ $(id -g steam) != ${PGID} ]; then
groupmod -g ${PGID} steam
fi
# Check vars
if [ -n "$UPDATE_EMAIL" ]; then
if [ -z "$SMTP_HOST" ] ; then
echo "WARNING: SMTP_HOST must be defined if you want to send emails"
UPDATE_EMAIL=""
fi
else
echo "NOTICE: UPDATE_EMAIL is not set"
fi
# msmtp
if [ -n "$SMTP_HOST" ] ; then
echo "Setting msmtp configuration..."
cat << EOF | sudo tee /etc/msmtprc > /dev/null
account default
logfile -
syslog off
host ${SMTP_HOST}
EOF
file_env 'SMTP_USER'
file_env 'SMTP_PASSWORD'
if [ -n "$SMTP_PORT" ]; then echo "port $SMTP_PORT" | sudo tee -a /etc/msmtprc > /dev/null; fi
if [ -n "$SMTP_TLS" ]; then echo "tls $SMTP_TLS" | sudo tee -a /etc/msmtprc > /dev/null; fi
if [ -n "$SMTP_STARTTLS" ]; then echo "tls_starttls $SMTP_STARTTLS" | sudo tee -a /etc/msmtprc > /dev/null; fi
if [ -n "$SMTP_TLS_CHECKCERT" ]; then echo "tls_certcheck $SMTP_TLS_CHECKCERT" | sudo tee -a /etc/msmtprc > /dev/null; fi
if [ -n "$SMTP_AUTH" ]; then echo "auth $SMTP_AUTH" | sudo tee -a /etc/msmtprc > /dev/null; fi
if [ -n "$SMTP_USER" ]; then echo "user $SMTP_USER" | sudo tee -a /etc/msmtprc > /dev/null; fi
if [ -n "$SMTP_PASSWORD" ]; then echo "password $SMTP_PASSWORD" | sudo tee -a /etc/msmtprc > /dev/null; fi
if [ -n "$SMTP_FROM" ]; then echo "from $SMTP_FROM" | sudo tee -a /etc/msmtprc > /dev/null; fi
if [ -n "$SMTP_DOMAIN" ]; then echo "domain $SMTP_DOMAIN" | sudo tee -a /etc/msmtprc > /dev/null; fi
fi
unset SMTP_HOST
unset SMTP_USER
unset SMTP_PASSWORD
# Config
file_env 'GSLT'
file_env 'STEAM_LOGIN'
file_env 'STEAM_PASSWORD'
file_env 'API_AUTHORIZATION_KEY'
cat > "/etc/csgo-server-launcher/csgo-server-launcher.conf" <<EOL
# This file is an integral part of csgo-server-launcher.
# More info : https://github.com/crazy-max/csgo-server-launcher#installation
SCREEN_NAME="${SCREEN_NAME}"
USER="${USER}"
IP="${IP}"
PORT="${PORT}"
# Anonymous connection will be deprecated in the near future. Therefore it is highly recommended to generate a Game Server Login Token.
GSLT="${GSLT}"
DIR_STEAMCMD="${DIR_STEAMCMD}"
STEAM_LOGIN="${STEAM_LOGIN}"
STEAM_PASSWORD="${STEAM_PASSWORD}"
STEAM_RUNSCRIPT="${STEAM_RUNSCRIPT}"
DIR_ROOT="${DIR_ROOT}"
DIR_GAME="${DIR_GAME}"
DIR_LOGS="${DIR_LOGS}"
DAEMON_GAME="${DAEMON_GAME}"
UPDATE_LOG="${UPDATE_LOG}"
UPDATE_EMAIL="${UPDATE_EMAIL}"
UPDATE_RETRY=${UPDATE_RETRY}
CLEAR_DOWNLOAD_CACHE=${CLEAR_DOWNLOAD_CACHE}
API_AUTHORIZATION_KEY="${API_AUTHORIZATION_KEY}"
WORKSHOP_COLLECTION_ID="${WORKSHOP_COLLECTION_ID}"
WORKSHOP_START_MAP="${WORKSHOP_START_MAP}"
# Game config
MAXPLAYERS="${MAXPLAYERS}"
TICKRATE="${TICKRATE}"
EXTRAPARAMS="${EXTRAPARAMS}"
# Major settings
PARAM_START="${PARAM_START}"
PARAM_UPDATE="${PARAM_UPDATE}"
EOL
unset GSLT
unset STEAM_LOGIN
unset STEAM_PASSWORD
unset API_AUTHORIZATION_KEY
# Perms
echo "Fixing permissions..."
sudo chown -R steam. ${DIR_STEAMCMD} /home/steam /etc/csgo-server-launcher
exec "$@"