diff --git a/script/6_server-start.sh b/script/6_server-start.sh index 35a75b7..7b0467f 100755 --- a/script/6_server-start.sh +++ b/script/6_server-start.sh @@ -1,34 +1,53 @@ #!/bin/bash +########################################################################################## +# Paths for logs and crash dumps +########################################################################################## +export LOGS_PATH="/tmp/ac/logs" +export CRASHES_PATH="/tmp/ac/crashes" + +# Ensure directories exist +mkdir -p "$LOGS_PATH" "$CRASHES_PATH" + ########################################################################################## # handle the tmux sessions ########################################################################################## -if tmux new-session -d -s $AUTHSERVER_SESSION; then - echo "Created authserver session: $AUTHSERVER_SESSION" -else - echo "Error when trying to create authserver session: $AUTHSERVER_SESSION" -fi -echo " " -if tmux new-session -d -s $WORLDSERVER_SESSION; then - echo "Created worldserver session: $WORLDSERVER_SESSION" -else - echo "Error when trying to create worldserver session: $WORLDSERVER_SESSION" -fi -echo " " +# Helper to start a tmux session and run a command +start_tmux_session() { + local session_name=$1 + local command=$2 + local log_file=$3 -if tmux send-keys -t $AUTHSERVER_SESSION "${SERVER_ROOT}/acore.sh run-authserver" C-m; then - echo "Executed \"${SERVER_ROOT}/acore.sh run-authserver \" inside $AUTHSERVER_SESSION" -else - echo "Error when executing \"${SERVER_ROOT}/acore.sh run-authserver\" inside $AUTHSERVER_SESSION" -fi -echo " " + # Create session if it doesn't exist + if tmux has-session -t "$session_name" 2>/dev/null; then + echo "Tmux session '$session_name' already exists, attaching command..." + else + if tmux new-session -d -s "$session_name"; then + echo "Created tmux session: $session_name" + else + echo "Error creating tmux session: $session_name" + return 1 + fi + fi -if tmux send-keys -t $WORLDSERVER_SESSION "${SERVER_ROOT}/acore.sh run-worldserver" C-m; then - echo "Executed \"${SERVER_ROOT}/acore.sh run-worldserver\" inside $WORLDSERVER_SESSION" -else - echo "Error when executing \"${SERVER_ROOT}/acore.sh run-worldserver\" inside $WORLDSERVER_SESSION" -fi + # Export environment variables inside tmux + tmux send-keys -t "$session_name" "export LOGS_PATH=$LOGS_PATH; export CRASHES_PATH=$CRASHES_PATH" C-m -echo " " -source ${ROOT_DIR}/script/menu.sh + # Run the command and pipe output to a log file + tmux send-keys -t "$session_name" "$command | tee -a $log_file" C-m + + echo "Executed '$command' inside $session_name, logging to $log_file" + echo +} + +# Start authserver +start_tmux_session "$AUTHSERVER_SESSION" "${SERVER_ROOT}/acore.sh run-authserver" "$LOGS_PATH/authserver.log" + +# Start worldserver +start_tmux_session "$WORLDSERVER_SESSION" "${SERVER_ROOT}/acore.sh run-worldserver" "$LOGS_PATH/worldserver.log" + +########################################################################################## +# Launch interactive menu if needed +########################################################################################## +source "${ROOT_DIR}/script/menu.sh"