mirror of
https://github.com/msmhq/msm.git
synced 2024-08-30 18:12:35 +00:00
Improved comments and MSM script layout.
Added introductory comments for MSM and bash completion files.
This commit is contained in:
parent
2554b67d52
commit
5f539d5dbf
@ -1,4 +1,14 @@
|
|||||||
|
|
||||||
|
# Minecraft Server Manager: Bash Completion script
|
||||||
|
# ================================================
|
||||||
|
#
|
||||||
|
# This script provides tab completion support for the
|
||||||
|
# Minecraft Server Manager command.
|
||||||
|
#
|
||||||
|
# http://marcuswhybrow.net/minecraft-server-manager/
|
||||||
|
#
|
||||||
|
|
||||||
|
|
||||||
# Source, if it exists, the msm profile.d script
|
# Source, if it exists, the msm profile.d script
|
||||||
if [ -f "/etc/profile.d/msm.sh" ]; then
|
if [ -f "/etc/profile.d/msm.sh" ]; then
|
||||||
source "/etc/profile.d/msm.sh"
|
source "/etc/profile.d/msm.sh"
|
||||||
|
221
init/msm
221
init/msm
@ -1,5 +1,14 @@
|
|||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
|
|
||||||
|
# Minecraft Server Manager
|
||||||
|
# ========================
|
||||||
|
#
|
||||||
|
# A single init script for managing multiple Minecraft servers.
|
||||||
|
# Created by Marcus Whybrow
|
||||||
|
#
|
||||||
|
# http://marcuswhybrow.net/minecraft-server-manager/
|
||||||
|
#
|
||||||
|
|
||||||
### BEGIN INIT INFO
|
### BEGIN INIT INFO
|
||||||
# Provides: msm
|
# Provides: msm
|
||||||
# Required-Start: $local_fs $remote_fs
|
# Required-Start: $local_fs $remote_fs
|
||||||
@ -8,8 +17,8 @@
|
|||||||
# Should-Stop: $network
|
# Should-Stop: $network
|
||||||
# Default-Start: 2 3 4 5
|
# Default-Start: 2 3 4 5
|
||||||
# Default-Stop: 0 1 6
|
# Default-Stop: 0 1 6
|
||||||
# Short-Description:
|
# Short-Description: MSM: Minecraft init script
|
||||||
# Description:
|
# Description: Minecraft Server Manager, an init script for Minecraft/Bukkit servers
|
||||||
### END INIT INFO
|
### END INIT INFO
|
||||||
|
|
||||||
|
|
||||||
@ -27,7 +36,7 @@ fi
|
|||||||
CONF="${MSM_CONF:-/etc/msm.conf}"
|
CONF="${MSM_CONF:-/etc/msm.conf}"
|
||||||
|
|
||||||
|
|
||||||
### The Minecraft Server Manager version, use "msm version" to check yours.
|
# The Minecraft Server Manager version, use "msm version" to check yours.
|
||||||
VERSION="0.6.4"
|
VERSION="0.6.4"
|
||||||
|
|
||||||
|
|
||||||
@ -555,7 +564,16 @@ server_set_active() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
### Jar Group Functions
|
### Jar Group Functions
|
||||||
|
### -------------------
|
||||||
|
|
||||||
# Lists the jar files grouped by jar groups.
|
# Lists the jar files grouped by jar groups.
|
||||||
jargroup_list() {
|
jargroup_list() {
|
||||||
@ -716,7 +734,16 @@ jargroup_rename() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
### Server Functions
|
### Server Functions
|
||||||
|
### ----------------
|
||||||
|
|
||||||
# Echos a list of servers in the SETTINGS_SERVER_STORAGE_PATH
|
# Echos a list of servers in the SETTINGS_SERVER_STORAGE_PATH
|
||||||
server_list() {
|
server_list() {
|
||||||
@ -1123,7 +1150,16 @@ server_property() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
### Manager Functions
|
### Manager Functions
|
||||||
|
### -----------------
|
||||||
|
|
||||||
# Stops all running servers after a servers specified delay
|
# Stops all running servers after a servers specified delay
|
||||||
# $1: String containing "stop" or "restart". Represents whether the stop is
|
# $1: String containing "stop" or "restart". Represents whether the stop is
|
||||||
@ -1262,7 +1298,17 @@ manager_property() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
### Command Functions
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
### Command Handler Functions
|
||||||
|
### -------------------------
|
||||||
|
|
||||||
|
|
||||||
# Starts all servers
|
# Starts all servers
|
||||||
command_start() {
|
command_start() {
|
||||||
@ -2124,7 +2170,17 @@ command_server_config() {
|
|||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
### Main Functions
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
### Init and Misc Functions
|
||||||
|
### -----------------------
|
||||||
|
|
||||||
# Initialises a server's world
|
# Initialises a server's world
|
||||||
# $1: The server id
|
# $1: The server id
|
||||||
@ -2319,6 +2375,60 @@ server_init() {
|
|||||||
SERVER_NUM_WORLDS[$1]="$(( $id - ${SERVER_WORLD_OFFSET[$1]} ))"
|
SERVER_NUM_WORLDS[$1]="$(( $id - ${SERVER_WORLD_OFFSET[$1]} ))"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
load_conf() {
|
||||||
|
if [[ -f "$CONF" ]]; then
|
||||||
|
while read line; do
|
||||||
|
# Get the name and value of the setting
|
||||||
|
if [[ "$line" =~ ^([\-\_a-zA-Z0-9]+)\=(\"(.*)\"|\'(.*)\'|(.*)$) ]]; then
|
||||||
|
name="${BASH_REMATCH[1]}"
|
||||||
|
# Only one of 3,4 or 5 will match:
|
||||||
|
value="${BASH_REMATCH[3]}${BASH_REMATCH[4]}${BASH_REMATCH[5]}"
|
||||||
|
|
||||||
|
# Translate to uppercase, and replace dashes with underscores
|
||||||
|
if is_bash_version 4; then
|
||||||
|
name="${name//-/_}"
|
||||||
|
name="${name^^}"
|
||||||
|
else
|
||||||
|
name="$(echo "$name" | tr '[\-a-z]' '[\_A-Z]')"
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Create variables in uppercase
|
||||||
|
eval SETTINGS_${name}=\"$value\"
|
||||||
|
fi
|
||||||
|
done < "$CONF"
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
init() {
|
||||||
|
register_settings
|
||||||
|
load_conf
|
||||||
|
|
||||||
|
NUM_WORLDS=0
|
||||||
|
NUM_SERVERS=0
|
||||||
|
|
||||||
|
if [ -d "$SETTINGS_SERVER_STORAGE_PATH" ]; then
|
||||||
|
local id=0
|
||||||
|
while IFS= read -r -d $'\0' path; do
|
||||||
|
local name="$(basename "$path")"
|
||||||
|
server_init "$id" "$name"
|
||||||
|
id="$(($id+1))"
|
||||||
|
NUM_SERVERS="$id"
|
||||||
|
done < <(find "$SETTINGS_SERVER_STORAGE_PATH" -mindepth 1 -maxdepth 1 -type d -print0)
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
### Register Functions
|
||||||
|
### ------------------
|
||||||
|
|
||||||
# Registers a setting that can be defined in /etc/msm.conf
|
# Registers a setting that can be defined in /etc/msm.conf
|
||||||
# $1: Setting name to register
|
# $1: Setting name to register
|
||||||
# $2: Optionally a default value for this setting
|
# $2: Optionally a default value for this setting
|
||||||
@ -2407,73 +2517,6 @@ register_settings() {
|
|||||||
register_server_setting CONFIRM_XP_FAIL_INVALID_AMOUNT "Invalid exp count: .+"
|
register_server_setting CONFIRM_XP_FAIL_INVALID_AMOUNT "Invalid exp count: .+"
|
||||||
}
|
}
|
||||||
|
|
||||||
load_conf() {
|
|
||||||
if [[ -f "$CONF" ]]; then
|
|
||||||
while read line; do
|
|
||||||
# Get the name and value of the setting
|
|
||||||
if [[ "$line" =~ ^([\-\_a-zA-Z0-9]+)\=(\"(.*)\"|\'(.*)\'|(.*)$) ]]; then
|
|
||||||
name="${BASH_REMATCH[1]}"
|
|
||||||
# Only one of 3,4 or 5 will match:
|
|
||||||
value="${BASH_REMATCH[3]}${BASH_REMATCH[4]}${BASH_REMATCH[5]}"
|
|
||||||
|
|
||||||
# Translate to uppercase, and replace dashes with underscores
|
|
||||||
if is_bash_version 4; then
|
|
||||||
name="${name//-/_}"
|
|
||||||
name="${name^^}"
|
|
||||||
else
|
|
||||||
name="$(echo "$name" | tr '[\-a-z]' '[\_A-Z]')"
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Create variables in uppercase
|
|
||||||
eval SETTINGS_${name}=\"$value\"
|
|
||||||
fi
|
|
||||||
done < "$CONF"
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
init() {
|
|
||||||
register_settings
|
|
||||||
load_conf
|
|
||||||
|
|
||||||
NUM_WORLDS=0
|
|
||||||
NUM_SERVERS=0
|
|
||||||
|
|
||||||
if [ -d "$SETTINGS_SERVER_STORAGE_PATH" ]; then
|
|
||||||
local id=0
|
|
||||||
while IFS= read -r -d $'\0' path; do
|
|
||||||
local name="$(basename "$path")"
|
|
||||||
server_init "$id" "$name"
|
|
||||||
id="$(($id+1))"
|
|
||||||
NUM_SERVERS="$id"
|
|
||||||
done < <(find "$SETTINGS_SERVER_STORAGE_PATH" -mindepth 1 -maxdepth 1 -type d -print0)
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
# Called if the script is interrupted before exiting naturally
|
|
||||||
interrupt() {
|
|
||||||
local exit_message="false"
|
|
||||||
for ((i=0; $i<$NUM_SERVERS; i++)); do
|
|
||||||
if [[ "${STOP_COUNTDOWN[$i]}" == "true" ]] && server_is_running "$i"; then
|
|
||||||
if [[ "$exit_message" == "false" ]]; then
|
|
||||||
echo -e "\nInterrupted..."
|
|
||||||
exit_message="true"
|
|
||||||
fi
|
|
||||||
server_eval "$i" "say ${SERVER_MESSAGE_STOP_ABORT[$i]}"
|
|
||||||
echo "Server \"${SERVER_NAME[$i]}\" shutdown was aborted."
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [[ "${RESTART_COUNTDOWN[$i]}" == "true" ]] && server_is_running "$i"; then
|
|
||||||
if [[ "$exit_message" == "false" ]]; then
|
|
||||||
echo -e "\nInterrupted..."
|
|
||||||
exit_message="true"
|
|
||||||
fi
|
|
||||||
server_eval "$i" "say ${SERVER_MESSAGE_RESTART_ABORT[$i]}"
|
|
||||||
echo "Server \"${SERVER_NAME[$i]}\" restart was aborted."
|
|
||||||
fi
|
|
||||||
done
|
|
||||||
exit
|
|
||||||
}
|
|
||||||
|
|
||||||
# Adds a command to the list, allowing it to be called from the command line.
|
# Adds a command to the list, allowing it to be called from the command line.
|
||||||
# $1: The command signature, a coded string describing the structure of the
|
# $1: The command signature, a coded string describing the structure of the
|
||||||
# command.
|
# command.
|
||||||
@ -2735,6 +2778,40 @@ call_command() {
|
|||||||
echo "No such command. See $0 help"
|
echo "No such command. See $0 help"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
# Called if the script is interrupted before exiting naturally
|
||||||
|
interrupt() {
|
||||||
|
local exit_message="false"
|
||||||
|
for ((i=0; $i<$NUM_SERVERS; i++)); do
|
||||||
|
if [[ "${STOP_COUNTDOWN[$i]}" == "true" ]] && server_is_running "$i"; then
|
||||||
|
if [[ "$exit_message" == "false" ]]; then
|
||||||
|
echo -e "\nInterrupted..."
|
||||||
|
exit_message="true"
|
||||||
|
fi
|
||||||
|
server_eval "$i" "say ${SERVER_MESSAGE_STOP_ABORT[$i]}"
|
||||||
|
echo "Server \"${SERVER_NAME[$i]}\" shutdown was aborted."
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [[ "${RESTART_COUNTDOWN[$i]}" == "true" ]] && server_is_running "$i"; then
|
||||||
|
if [[ "$exit_message" == "false" ]]; then
|
||||||
|
echo -e "\nInterrupted..."
|
||||||
|
exit_message="true"
|
||||||
|
fi
|
||||||
|
server_eval "$i" "say ${SERVER_MESSAGE_RESTART_ABORT[$i]}"
|
||||||
|
echo "Server \"${SERVER_NAME[$i]}\" restart was aborted."
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
exit
|
||||||
|
}
|
||||||
|
|
||||||
# The main function which starts the script
|
# The main function which starts the script
|
||||||
main() {
|
main() {
|
||||||
# Initialises variables that represent system state
|
# Initialises variables that represent system state
|
||||||
|
Loading…
Reference in New Issue
Block a user