Repository navigation
Expand file tree
/
Copy pathentry.sh
More file actions
151 lines (133 loc) · 16.4 KB
/
Copy pathentry.sh
File metadata and controls
151 lines (133 loc) · 16.4 KB
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
#!/bin/sh
# Graceful stop function
graceful_stop() {
echo "Stopping server..."
su vintagestory -s /bin/sh -p -c "screen -S vsserver -X stuff '/stop\n'"
wait $SERVER_PID
exit 0
}
# Ensure User and Group IDs
if [ ! "$(id -u vintagestory)" -eq "$UID" ]; then usermod -o -u "$UID" vintagestory ; fi
if [ ! "$(id -g vintagestory)" -eq "$GID" ]; then groupmod -o -g "$GID" vintagestory ; fi
# Path to version file
VERSION_FILE="/data/server-file/.version"
# Path to server dll
SERVER_DLL="/data/VintagestoryServer.dll"
# Download and extract the server if the version is different or VintagestoryServer.dll is missing
if [ ! -f "$VERSION_FILE" ] || [ ! "$SERVER_VERSION" = "$(cat $VERSION_FILE || echo '')" ] || [ ! -f "$SERVER_DLL" ]; then
echo "Downloading server version $SERVER_VERSION..."
cd /data
wget https://cdn.vintagestory.at/gamefiles/$SERVER_BRANCH/vs_server_linux-x64_$SERVER_VERSION.tar.gz
tar xzf vs_server_linux-x64_*.tar.gz
rm vs_server_linux-x64_*.tar.gz
echo "$SERVER_VERSION" > "$VERSION_FILE"
else
echo "Server already up-to-date"
fi
chown -R vintagestory:vintagestory /data
# Apply server configuration
serverconfig="/data/server-file/serverconfig.json"
if [ ! -f "$serverconfig" ]; then
cp /data/default-serverconfig.json "$serverconfig"
fi
jq '.Port = $val' --arg val "$SERVER_PORT" $serverconfig | sponge $serverconfig
if [ -n "$SERVER_NAME" ]; then jq '.ServerName = $val' --arg val "$SERVER_NAME" $serverconfig | sponge $serverconfig ; fi
if [ -n "$SERVER_DESCRIPTION" ]; then jq '.ServerDescription = $val' --arg val "$SERVER_DESCRIPTION" $serverconfig | sponge $serverconfig ; fi
if [ -n "$SERVER_MOTD" ]; then jq '.WelcomeMessage = $val' --arg val "$SERVER_MOTD" $serverconfig | sponge $serverconfig ; fi
if [ -n "$SERVER_MAX_CLIENTS" ]; then jq '.MaxClients = ($val | tonumber)' --arg val "$SERVER_MAX_CLIENTS" $serverconfig | sponge $serverconfig ; fi
if [ -n "$SERVER_PASS_TIME_WHEN_EMPTY" ]; then jq '.PassTimeWhenEmpty = ($val | test("true"))' --arg val "$SERVER_PASS_TIME_WHEN_EMPTY" $serverconfig | sponge $serverconfig ; fi
if [ -n "$SERVER_PASSWORD" ]; then jq '.Password = $val' --arg val "$SERVER_PASSWORD" $serverconfig | sponge $serverconfig ; fi
if [ -n "$SERVER_WHITELIST" ]; then
whitelist_mode=$( [ "$SERVER_WHITELIST" = "true" ] && echo 2 || echo 1 )
jq '.WhitelistMode = ($val | tonumber)' --arg val "$whitelist_mode" $serverconfig | sponge $serverconfig ;
else
jq '.WhitelistMode = 1' $serverconfig | sponge $serverconfig ;
fi
if [ -n "$SERVER_PUBLIC" ]; then jq '.AdvertiseServer = ($val | test("true"))' --arg val "$SERVER_PUBLIC" $serverconfig | sponge $serverconfig ; fi
if [ -n "$SERVER_SERVER_LANGUAGE" ]; then jq '.ServerLanguage = $val' --arg val "$SERVER_SERVER_LANGUAGE" $serverconfig | sponge $serverconfig ; fi
if [ -n "$SERVER_PVP" ]; then jq '.AllowPvP = ($val | test("true"))' --arg val "$SERVER_PVP" $serverconfig | sponge $serverconfig ; fi
if [ -n "$SERVER_FIRE_SPREAD" ]; then jq '.AllowFireSpread = ($val | test("true"))' --arg val "$SERVER_FIRE_SPREAD" $serverconfig | sponge $serverconfig ; fi
if [ -n "$SERVER_WORLD_SEED" ]; then jq '.WorldConfig.Seed = $val' --arg val "$SERVER_WORLD_SEED" $serverconfig | sponge $serverconfig ; fi
if [ -n "$SERVER_DIE_ABOVE_MEMORY_USAGE" ]; then jq '.DieAboveMemoryUsageMb = ($val | tonumber)' --arg val "$SERVER_DIE_ABOVE_MEMORY_USAGE" $serverconfig | sponge $serverconfig ; fi
if [ -n "$SERVER_MAX_CLIENTS_IN_QUEUE" ]; then jq '.MaxClientsInQueue = ($val | tonumber)' --arg val "$SERVER_MAX_CLIENTS_IN_QUEUE" $serverconfig | sponge $serverconfig ; fi
if [ -n "$SERVER_LOGIN_FLOOD_PROTECTION" ]; then jq '.LoginFloodProtection = ($val | test("true"))' --arg val "$SERVER_LOGIN_FLOOD_PROTECTION" $serverconfig | sponge $serverconfig ; fi
if [ -n "$SERVER_MAP_SIZE_X" ]; then jq '.MapSizeX = ($val | tonumber)' --arg val "$SERVER_MAP_SIZE_X" $serverconfig | sponge $serverconfig ; fi
if [ -n "$SERVER_MAP_SIZE_Y" ]; then jq '.MapSizeY = ($val | tonumber)' --arg val "$SERVER_MAP_SIZE_Y" $serverconfig | sponge $serverconfig ; fi
if [ -n "$SERVER_MAP_SIZE_Y" ]; then jq '.WorldConfig.MapSizeY = ($val | tonumber)' --arg val "$SERVER_MAP_SIZE_Y" $serverconfig | sponge $serverconfig ; fi
if [ -n "$SERVER_MAP_SIZE_Z" ]; then jq '.MapSizeZ = ($val | tonumber)' --arg val "$SERVER_MAP_SIZE_Z" $serverconfig | sponge $serverconfig ; fi
# Apply World Configuration
if [ -n "$WORLDCONFIG_GAMEMODE" ]; then jq '.WorldConfig.WorldConfiguration.gameMode = $val' --arg val "$WORLDCONFIG_GAMEMODE" $serverconfig | sponge $serverconfig ; fi
if [ -n "$WORLDCONFIG_STARTING_CLIMATE" ]; then jq '.WorldConfig.WorldConfiguration.startingClimate = $val' --arg val "$WORLDCONFIG_STARTING_CLIMATE" $serverconfig | sponge $serverconfig ; fi
if [ -n "$WORLDCONFIG_SPAWN_RADIUS" ]; then jq '.WorldConfig.WorldConfiguration.spawnRadius = $val' --arg val "$WORLDCONFIG_SPAWN_RADIUS" $serverconfig | sponge $serverconfig ; fi
if [ -n "$WORLDCONFIG_GRACE_TIMER" ]; then jq '.WorldConfig.WorldConfiguration.graceTimer = $val' --arg val "$WORLDCONFIG_GRACE_TIMER" $serverconfig | sponge $serverconfig ; fi
if [ -n "$WORLDCONFIG_DEATH_PUNISHMENT" ]; then jq '.WorldConfig.WorldConfiguration.deathPunishment = $val' --arg val "$WORLDCONFIG_DEATH_PUNISHMENT" $serverconfig | sponge $serverconfig ; fi
if [ -n "$WORLDCONFIG_DROPPED_ITEMS_TIMER" ]; then jq '.WorldConfig.WorldConfiguration.droppedItemsTimer = $val' --arg val "$WORLDCONFIG_DROPPED_ITEMS_TIMER" $serverconfig | sponge $serverconfig ; fi
if [ -n "$WORLDCONFIG_SEASONS" ]; then jq '.WorldConfig.WorldConfiguration.seasons = $val' --arg val "$WORLDCONFIG_SEASONS" $serverconfig | sponge $serverconfig ; fi
if [ -n "$WORLDCONFIG_PLAYERLIVES" ]; then jq '.WorldConfig.WorldConfiguration.playerlives = $val' --arg val "$WORLDCONFIG_PLAYERLIVES" $serverconfig | sponge $serverconfig ; fi
if [ -n "$WORLDCONFIG_LUNG_CAPACITY" ]; then jq '.WorldConfig.WorldConfiguration.lungCapacity = $val' --arg val "$WORLDCONFIG_LUNG_CAPACITY" $serverconfig | sponge $serverconfig ; fi
if [ -n "$WORLDCONFIG_DAYS_PER_MONTH" ]; then jq '.WorldConfig.WorldConfiguration.daysPerMonth = $val' --arg val "$WORLDCONFIG_DAYS_PER_MONTH" $serverconfig | sponge $serverconfig ; fi
if [ -n "$WORLDCONFIG_HARSH_WINTERS" ]; then jq '.WorldConfig.WorldConfiguration.harshWinters = $val' --arg val "$WORLDCONFIG_HARSH_WINTERS" $serverconfig | sponge $serverconfig ; fi
if [ -n "$WORLDCONFIG_BLOCK_GRAVITY" ]; then jq '.WorldConfig.WorldConfiguration.blockGravity = $val' --arg val "$WORLDCONFIG_BLOCK_GRAVITY" $serverconfig | sponge $serverconfig ; fi
if [ -n "$WORLDCONFIG_CAVE_INS" ]; then jq '.WorldConfig.WorldConfiguration.caveIns = $val' --arg val "$WORLDCONFIG_CAVE_INS" $serverconfig | sponge $serverconfig ; fi
if [ -n "$WORLDCONFIG_ALLOW_UNDERGROUND_FARMING" ]; then jq '.WorldConfig.WorldConfiguration.allowUndergroundFarming = ($val | test("true"))' --arg val "$WORLDCONFIG_ALLOW_UNDERGROUND_FARMING" $serverconfig | sponge $serverconfig ; fi
if [ -n "$WORLDCONFIG_NO_LIQUID_SOURCE_TRANSPORT" ]; then jq '.WorldConfig.WorldConfiguration.noLiquidSourceTransport = ($val | test("true"))' --arg val "$WORLDCONFIG_NO_LIQUID_SOURCE_TRANSPORT" $serverconfig | sponge $serverconfig ; fi
if [ -n "$WORLDCONFIG_BODY_TEMPERATURE_RESISTANCE" ]; then jq '.WorldConfig.WorldConfiguration.bodyTemperatureResistance = $val' --arg val "$WORLDCONFIG_BODY_TEMPERATURE_RESISTANCE" $serverconfig | sponge $serverconfig ; fi
if [ -n "$WORLDCONFIG_CREATURE_HOSTILITY" ]; then jq '.WorldConfig.WorldConfiguration.creatureHostility = $val' --arg val "$WORLDCONFIG_CREATURE_HOSTILITY" $serverconfig | sponge $serverconfig ; fi
if [ -n "$WORLDCONFIG_CREATURE_STRENGTH" ]; then jq '.WorldConfig.WorldConfiguration.creatureStrength = $val' --arg val "$WORLDCONFIG_CREATURE_STRENGTH" $serverconfig | sponge $serverconfig ; fi
if [ -n "$WORLDCONFIG_CREATURE_SWIM_SPEED" ]; then jq '.WorldConfig.WorldConfiguration.creatureSwimSpeed = $val' --arg val "$WORLDCONFIG_CREATURE_SWIM_SPEED" $serverconfig | sponge $serverconfig ; fi
if [ -n "$WORLDCONFIG_PLAYER_HEALTH_POINTS" ]; then jq '.WorldConfig.WorldConfiguration.playerHealthPoints = $val' --arg val "$WORLDCONFIG_PLAYER_HEALTH_POINTS" $serverconfig | sponge $serverconfig ; fi
if [ -n "$WORLDCONFIG_PLAYER_HUNGER_SPEED" ]; then jq '.WorldConfig.WorldConfiguration.playerHungerSpeed = $val' --arg val "$WORLDCONFIG_PLAYER_HUNGER_SPEED" $serverconfig | sponge $serverconfig ; fi
if [ -n "$WORLDCONFIG_PLAYER_HEALTH_REGEN_SPEED" ]; then jq '.WorldConfig.WorldConfiguration.playerHealthRegenSpeed = $val' --arg val "$WORLDCONFIG_PLAYER_HEALTH_REGEN_SPEED" $serverconfig | sponge $serverconfig ; fi
if [ -n "$WORLDCONFIG_PLAYER_MOVE_SPEED" ]; then jq '.WorldConfig.WorldConfiguration.playerMoveSpeed = $val' --arg val "$WORLDCONFIG_PLAYER_MOVE_SPEED" $serverconfig | sponge $serverconfig ; fi
if [ -n "$WORLDCONFIG_FOOD_SPOIL_SPEED" ]; then jq '.WorldConfig.WorldConfiguration.foodSpoilSpeed = $val' --arg val "$WORLDCONFIG_FOOD_SPOIL_SPEED" $serverconfig | sponge $serverconfig ; fi
if [ -n "$WORLDCONFIG_SAPLING_GROWTH_RATE" ]; then jq '.WorldConfig.WorldConfiguration.saplingGrowthRate = $val' --arg val "$WORLDCONFIG_SAPLING_GROWTH_RATE" $serverconfig | sponge $serverconfig ; fi
if [ -n "$WORLDCONFIG_TOOL_DURABILITY" ]; then jq '.WorldConfig.WorldConfiguration.toolDurability = $val' --arg val "$WORLDCONFIG_TOOL_DURABILITY" $serverconfig | sponge $serverconfig ; fi
if [ -n "$WORLDCONFIG_TOOL_MINING_SPEED" ]; then jq '.WorldConfig.WorldConfiguration.toolMiningSpeed = $val' --arg val "$WORLDCONFIG_TOOL_MINING_SPEED" $serverconfig | sponge $serverconfig ; fi
if [ -n "$WORLDCONFIG_PROPICK_NODE_SEARCH_RADIUS" ]; then jq '.WorldConfig.WorldConfiguration.propickNodeSearchRadius = $val' --arg val "$WORLDCONFIG_PROPICK_NODE_SEARCH_RADIUS" $serverconfig | sponge $serverconfig ; fi
if [ -n "$WORLDCONFIG_MICROBLOCK_CHISELING" ]; then jq '.WorldConfig.WorldConfiguration.microblockChiseling = $val' --arg val "$WORLDCONFIG_MICROBLOCK_CHISELING" $serverconfig | sponge $serverconfig ; fi
if [ -n "$WORLDCONFIG_ALLOW_COORDINATE_HUD" ]; then jq '.WorldConfig.WorldConfiguration.allowCoordinateHud = ($val | test("true"))' --arg val "$WORLDCONFIG_ALLOW_COORDINATE_HUD" $serverconfig | sponge $serverconfig ; fi
if [ -n "$WORLDCONFIG_ALLOW_MAP" ]; then jq '.WorldConfig.WorldConfiguration.allowMap = ($val | test("true"))' --arg val "$WORLDCONFIG_ALLOW_MAP" $serverconfig | sponge $serverconfig ; fi
if [ -n "$WORLDCONFIG_COLOR_ACCURATE_WORLDMAP" ]; then jq '.WorldConfig.WorldConfiguration.colorAccurateWorldmap =($val | test("true"))' --arg val "$WORLDCONFIG_COLOR_ACCURATE_WORLDMAP" $serverconfig | sponge $serverconfig ; fi
if [ -n "$WORLDCONFIG_LORE_CONTENT" ]; then jq '.WorldConfig.WorldConfiguration.loreContent = ($val | test("true"))' --arg val "$WORLDCONFIG_LORE_CONTENT" $serverconfig | sponge $serverconfig ; fi
if [ -n "$WORLDCONFIG_CLUTTER_OBTAINABLE" ]; then jq '.WorldConfig.WorldConfiguration.clutterObtainable = $val' --arg val "$WORLDCONFIG_CLUTTER_OBTAINABLE" $serverconfig | sponge $serverconfig ; fi
if [ -n "$WORLDCONFIG_LIGHTNING_FIRES" ]; then jq '.WorldConfig.WorldConfiguration.lightningFires = ($val | test("true"))' --arg val "$WORLDCONFIG_LIGHTNING_FIRES" $serverconfig | sponge $serverconfig ; fi
if [ -n "$WORLDCONFIG_TEMPORAL_STABILITY" ]; then jq '.WorldConfig.WorldConfiguration.temporalStability = ($val | test("true"))' --arg val "$WORLDCONFIG_TEMPORAL_STABILITY" $serverconfig | sponge $serverconfig ; fi
if [ -n "$WORLDCONFIG_TEMPORAL_STORMS" ]; then jq '.WorldConfig.WorldConfiguration.temporalStorms = $val' --arg val "$WORLDCONFIG_TEMPORAL_STORMS" $serverconfig | sponge $serverconfig ; fi
if [ -n "$WORLDCONFIG_TEMPSTORM_DURATION_MUL" ]; then jq '.WorldConfig.WorldConfiguration.tempstormDurationMul = $val' --arg val "$WORLDCONFIG_TEMPSTORM_DURATION_MUL" $serverconfig | sponge $serverconfig ; fi
if [ -n "$WORLDCONFIG_TEMPORAL_RIFTS" ]; then jq '.WorldConfig.WorldConfiguration.temporalRifts = $val' --arg val "$WORLDCONFIG_TEMPORAL_RIFTS" $serverconfig | sponge $serverconfig ; fi
if [ -n "$WORLDCONFIG_TEMPORAL_GEAR_RESPAWN_USES" ]; then jq '.WorldConfig.WorldConfiguration.temporalGearRespawnUses = $val' --arg val "$WORLDCONFIG_TEMPORAL_GEAR_RESPAWN_USES" $serverconfig | sponge $serverconfig ; fi
if [ -n "$WORLDCONFIG_TEMPORAL_STORM_SLEEPING" ]; then jq '.WorldConfig.WorldConfiguration.temporalStormSleeping = $val' --arg val "$WORLDCONFIG_TEMPORAL_STORM_SLEEPING" $serverconfig | sponge $serverconfig ; fi
if [ -n "$WORLDCONFIG_WORLD_CLIMATE" ]; then jq '.WorldConfig.WorldConfiguration.worldClimate = $val' --arg val "$WORLDCONFIG_WORLD_CLIMATE" $serverconfig | sponge $serverconfig ; fi
if [ -n "$WORLDCONFIG_LANDCOVER" ]; then jq '.WorldConfig.WorldConfiguration.landcover = $val' --arg val "$WORLDCONFIG_LANDCOVER" $serverconfig | sponge $serverconfig ; fi
if [ -n "$WORLDCONFIG_OCEANSCALE" ]; then jq '.WorldConfig.WorldConfiguration.oceanscale = $val' --arg val "$WORLDCONFIG_OCEANSCALE" $serverconfig | sponge $serverconfig ; fi
if [ -n "$WORLDCONFIG_UPHEAVEL_COMMONNESS" ]; then jq '.WorldConfig.WorldConfiguration.upheavelCommonness = $val' --arg val "$WORLDCONFIG_UPHEAVEL_COMMONNESS" $serverconfig | sponge $serverconfig ; fi
if [ -n "$WORLDCONFIG_GEOLOGIC_ACTIVITY" ]; then jq '.WorldConfig.WorldConfiguration.geologicActivity = $val' --arg val "$WORLDCONFIG_GEOLOGIC_ACTIVITY" $serverconfig | sponge $serverconfig ; fi
if [ -n "$WORLDCONFIG_LANDFORM_SCALE" ]; then jq '.WorldConfig.WorldConfiguration.landformScale = $val' --arg val "$WORLDCONFIG_LANDFORM_SCALE" $serverconfig | sponge $serverconfig ; fi
if [ -n "$WORLDCONFIG_WORLD_WIDTH" ]; then jq '.WorldConfig.WorldConfiguration.worldWidth = $val' --arg val "$WORLDCONFIG_WORLD_WIDTH" $serverconfig | sponge $serverconfig ; fi
if [ -n "$WORLDCONFIG_WORLD_LENGTH" ]; then jq '.WorldConfig.WorldConfiguration.worldLength = $val' --arg val "$WORLDCONFIG_WORLD_LENGTH" $serverconfig | sponge $serverconfig ; fi
if [ -n "$WORLDCONFIG_WORLD_EDGE" ]; then jq '.WorldConfig.WorldConfiguration.worldEdge = $val' --arg val "$WORLDCONFIG_WORLD_EDGE" $serverconfig | sponge $serverconfig ; fi
if [ -n "$WORLDCONFIG_POLAR_EQUATOR_DISTANCE" ]; then jq '.WorldConfig.WorldConfiguration.polarEquatorDistance = $val' --arg val "$WORLDCONFIG_POLAR_EQUATOR_DISTANCE" $serverconfig | sponge $serverconfig ; fi
if [ -n "$WORLDCONFIG_GLOBAL_TEMPERATURE" ]; then jq '.WorldConfig.WorldConfiguration.globalTemperature = $val' --arg val "$WORLDCONFIG_GLOBAL_TEMPERATURE" $serverconfig | sponge $serverconfig ; fi
if [ -n "$WORLDCONFIG_GLOBAL_PRECIPITATION" ]; then jq '.WorldConfig.WorldConfiguration.globalPrecipitation = $val' --arg val "$WORLDCONFIG_GLOBAL_PRECIPITATION" $serverconfig | sponge $serverconfig ; fi
if [ -n "$WORLDCONFIG_GLOBAL_FORESTATION" ]; then jq '.WorldConfig.WorldConfiguration.globalForestation = $val' --arg val "$WORLDCONFIG_GLOBAL_FORESTATION" $serverconfig | sponge $serverconfig ; fi
if [ -n "$WORLDCONFIG_GLOBAL_DEPOSIT_SPAWN_RATE" ]; then jq '.WorldConfig.WorldConfiguration.globalDepositSpawnRate = $val' --arg val "$WORLDCONFIG_GLOBAL_DEPOSIT_SPAWN_RATE" $serverconfig | sponge $serverconfig ; fi
if [ -n "$WORLDCONFIG_SURFACE_COPPER_DEPOSITS" ]; then jq '.WorldConfig.WorldConfiguration.surfaceCopperDeposits = $val' --arg val "$WORLDCONFIG_SURFACE_COPPER_DEPOSITS" $serverconfig | sponge $serverconfig ; fi
if [ -n "$WORLDCONFIG_SURFACE_TIN_DEPOSITS" ]; then jq '.WorldConfig.WorldConfiguration.surfaceTinDeposits = $val' --arg val "$WORLDCONFIG_SURFACE_TIN_DEPOSITS" $serverconfig | sponge $serverconfig ; fi
if [ -n "$WORLDCONFIG_SNOW_ACCUM" ]; then jq '.WorldConfig.WorldConfiguration.snowAccum = $val' --arg val "$WORLDCONFIG_SNOW_ACCUM" $serverconfig | sponge $serverconfig ; fi
if [ -n "$WORLDCONFIG_ALLOW_LAND_CLAIMING" ]; then jq '.WorldConfig.WorldConfiguration.allowLandClaiming = ($val | test("true"))' --arg val "$WORLDCONFIG_ALLOW_LAND_CLAIMING" $serverconfig | sponge $serverconfig ; fi
if [ -n "$WORLDCONFIG_CLASS_EXCLUSIVE_RECIPES" ]; then jq '.WorldConfig.WorldConfiguration.classExclusiveRecipes = ($val | test("true"))' --arg val "$WORLDCONFIG_CLASS_EXCLUSIVE_RECIPES" $serverconfig | sponge $serverconfig ; fi
if [ -n "$WORLDCONFIG_AUCTION_HOUSE" ]; then jq '.WorldConfig.WorldConfiguration.auctionHouse = ($val | test("true"))' --arg val "$WORLDCONFIG_AUCTION_HOUSE" $serverconfig | sponge $serverconfig ; fi
# FIFO pipe
mkfifo /tmp/vsserver-log
chmod 666 /tmp/vsserver-log
# Trap signal
trap graceful_stop SIGTERM
# Start server
echo "Launching server..."
cd /data
su vintagestory -s /bin/sh -p -c '
cat /tmp/vsserver-log &
screen -DmS vsserver sh -c "dotnet VintagestoryServer.dll --dataPath /data/server-file | tee /tmp/vsserver-log"
' &
SERVER_PID=$!
wait $SERVER_PID