forked from TrevorCarmichael/V-Rising-Docker-Linux
-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathrun.sh
95 lines (82 loc) · 3.2 KB
/
run.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
#!/usr/bin/env bash
term_handler() {
#!/usr/bin/bash
# without this, server exits suddenly due to systemd killing wrong pid (wine pid, not vrising)
PID=$(pgrep -f "^${STEAMAPPSERVER}/VRisingServer.exe")
echo "Stopping PID: $PID"
kill -SIGINT "$PID"
# systemd will eventually kill this if it doesnt work after 90s
while true; do
sleep 1
PID=PID=$(pgrep -f "^${STEAMAPPSERVER}/VRisingServer.exe")
if [ -z "$PID" ]; then
echo "Process successfully stopped gracefully"
echo "Killing any leftover wine processes"
wineserver -k
sleep 1
exit
fi
sleep 1
done
}
trap 'kill ${!}; term_handler' SIGTERM
#clear tmp
cd /tmp || exit
rm -R /tmp/* 2>/dev/null
if [ ! -d "${STEAMAPPDATA}/Settings" ]; then
mkdir "${STEAMAPPDATA}/Settings"
fi
echo " "
echo "Updating V-Rising Dedicated Server files..."
# Override SteamCMD launch arguments if necessary
# Used for subscribing to betas or for testing
if [ -z "$STEAMCMD_UPDATE_ARGS" ]; then
bash "${STEAMCMDDIR}/steamcmd.sh" +force_install_dir "$STEAMAPPSERVER" +login anonymous +app_update "$STEAMAPPID" +quit
else
steamcmd_update_args=("${STEAMCMD_UPDATE_ARGS}")
bash "${STEAMCMDDIR}/steamcmd.sh" +force_install_dir "$STEAMAPPSERVER" +login anonymous +app_update "$STEAMAPPID" "${steamcmd_update_args[@]}" +quit
fi
if [ ! -f "${STEAMAPPDATA}/Settings/ServerGameSettings.json" ]; then
echo "${STEAMAPPDATA}/Settings/ServerGameSettings.json not found. Copying default file."
cp "${STEAMAPPSERVER}/VRisingServer_Data/StreamingAssets/Settings/ServerGameSettings.json" "${STEAMAPPDATA}/Settings/" 2>&1
fi
CONFIG_FILE="${STEAMAPPDATA}/Settings/ServerHostSettings.json"
echo "Updating environment variables to server config"
jq '.Name = env.SERVER_NAME |
.Description = env.SERVER_DESCRIPTION |
.Address = env.SERVER_ADDRESS |
.Port = env.GAME_PORT |
.QueryPort = env.QUERY_PORT |
.MaxConnectedUsers = env.MAX_USERS |
.MaxConnectedAdmins = env.MAX_ADMIN |
.Secure = env.VAC_ENABLE |
.ListOnMasterServer = env.STEAM_LIST |
.SaveName = env.SAVE_NAME |
.Password = env.SERVER_PASS |
.ServerFps = env.SERVER_FPS |
.AutoSaveCount = env.AUTOSAVE_NUM |
.AutoSaveInterval = env.AUTOSAVE_INT |
.GameSettingsPreset = env.GAME_PRESET |
.LanMode = env.LAN_MODE |
.Rcon.Enabled = env.RCON_ENABLE |
.Rcon.Port = env.RCON_PORT |
.Rcon.Password = env.RCON_PASSWORD |
.Rcon.BindAddress = env.RCON_ADDRESS' \
< "${STEAMAPPSERVER}/VRisingServer_Data/StreamingAssets/Settings/ServerHostSettings.json" \
> "${CONFIG_FILE}"
#Restart cleanup
if [ -f "/tmp/.X0-lock" ]; then rm /tmp/.X0-lock; fi
cd "${STEAMAPPDIR}" || exit
echo "Starting V Rising Dedicated Server with name ${SERVER_NAME}"
echo "SteamAppId set to ${STEAMAPPID}"
echo " "
Xvfb :0 -screen 0 1024x768x16 & \
DISPLAY=:0.0 wine64 "${STEAMAPPSERVER}"/VRisingServer.exe -persistentDataPath "${STEAMAPPDATA}" \
-serverName "$SERVER_NAME" -saveName "$SAVE_NAME" \
-gamePort "$GAME_PORT" -queryPort "$QUERY_PORT" \
-maxUsers "$MAX_USERS" -maxAdmins "$MAX_ADMIN" \
-logFile "${STEAMAPPDATA}/VRisingServer.log" "${ADDITIONAL_ARGS}" 2>&1
while true
do
tail -f /dev/null & wait ${!}
done