54 lines
1.2 KiB
Bash
Executable File
54 lines
1.2 KiB
Bash
Executable File
#!/bin/sh
|
|
set -eu
|
|
|
|
server_root=${MT40250_ROOT:-/usr/metin2}
|
|
runtime="$server_root/server"
|
|
pid_file="$server_root/.mt40250-pids"
|
|
if [ "$(uname -s)" != "FreeBSD" ]; then
|
|
echo "start_server.sh: 40250 runtime is FreeBSD-only" >&2
|
|
exit 2
|
|
fi
|
|
if [ ! -x "$runtime/db/db" ] || [ ! -x "$runtime/auth/auth" ]; then
|
|
echo "start_server.sh: run prepare_runtime.sh first" >&2
|
|
exit 2
|
|
fi
|
|
if [ -f "$pid_file" ]; then
|
|
echo "start_server.sh: $pid_file exists; stop the existing server first" >&2
|
|
exit 2
|
|
fi
|
|
|
|
launch() {
|
|
name=$1
|
|
dir=$2
|
|
bin=$3
|
|
if [ ! -x "$dir/$bin" ]; then
|
|
echo "start_server.sh: missing $dir/$bin" >&2
|
|
exit 2
|
|
fi
|
|
(
|
|
cd "$dir"
|
|
exec "./$bin"
|
|
) >> "$dir/console.log" 2>&1 &
|
|
pid=$!
|
|
echo "$pid $name" >> "$pid_file"
|
|
echo "started $name pid=$pid"
|
|
}
|
|
|
|
: > "$pid_file"
|
|
launch db "$runtime/db" db
|
|
sleep "${MT40250_DB_WAIT_SECONDS:-2}"
|
|
launch auth "$runtime/auth" auth
|
|
|
|
channels=${MT40250_CHANNELS:-"1 2 3 4"}
|
|
for channel in $channels; do
|
|
for node in first game1 game2; do
|
|
launch "channel${channel}/${node}" "$runtime/channel${channel}/${node}" game
|
|
done
|
|
done
|
|
|
|
if [ "${MT40250_START_GAME99:-1}" = "1" ]; then
|
|
launch game99 "$runtime/game99" game
|
|
fi
|
|
|
|
echo "40250 server started; logs are under $runtime/*/console.log"
|