mirror of
https://github.com/msmhq/msm.git
synced 2024-08-30 18:12:35 +00:00
commit
f068a10360
8
init/msm
8
init/msm
@ -1010,7 +1010,13 @@ jargroup_getlatest() {
|
||||
error_exit FILE_NOT_FOUND "$error"
|
||||
fi
|
||||
|
||||
as_user "$SETTINGS_USERNAME" "wget --quiet --trust-server-names --no-check-certificate --input-file='$SETTINGS_JAR_STORAGE_PATH/$1/$SETTINGS_JARGROUP_TARGET' --directory-prefix='$SETTINGS_JAR_STORAGE_PATH/$1/$SETTINGS_JARGROUP_DOWNLOAD_DIR'"
|
||||
# test wget for --trust-server-names option
|
||||
local wget_opts="--trust-server-names"
|
||||
wget $wget_opts >/dev/null 2>&1
|
||||
if [[ $? != 1 ]]; then
|
||||
wget_opts=""
|
||||
fi
|
||||
as_user "$SETTINGS_USERNAME" "wget --quiet $wget_opts --no-check-certificate --input-file='$SETTINGS_JAR_STORAGE_PATH/$1/$SETTINGS_JARGROUP_TARGET' --directory-prefix='$SETTINGS_JAR_STORAGE_PATH/$1/$SETTINGS_JARGROUP_DOWNLOAD_DIR'"
|
||||
echo "Done."
|
||||
|
||||
local num_files="$(as_user "$SETTINGS_USERNAME" "ls -1 '$SETTINGS_JAR_STORAGE_PATH/$1/$SETTINGS_JARGROUP_DOWNLOAD_DIR' | wc -l")"
|
||||
|
2
install-debian.sh
Normal file
2
install-debian.sh
Normal file
@ -0,0 +1,2 @@
|
||||
cd installers
|
||||
bash install.sh debian.sh
|
2
install-redhat.sh
Normal file
2
install-redhat.sh
Normal file
@ -0,0 +1,2 @@
|
||||
cd installers
|
||||
bash install.sh redhat.sh
|
130
installers/common.sh
Normal file
130
installers/common.sh
Normal file
@ -0,0 +1,130 @@
|
||||
if [ -f defaults.conf ]; then
|
||||
source defaults.conf
|
||||
fi
|
||||
|
||||
msm_dir="${MSM_DIRECTORY:-/opt/msm}"
|
||||
msm_user="${MSM_USERNAME:-minecraft}"
|
||||
dl_dir="$(mktemp -t msm)"
|
||||
|
||||
# Outputs an MSM INSTALL log line
|
||||
function install_log() {
|
||||
echo -e "\n\033[1;32mMSM INSTALL: $*\033[m"
|
||||
}
|
||||
|
||||
# Outputs an MSM INSTALL ERROR log line and exits with status code 1
|
||||
function install_error() {
|
||||
echo -e "\n\033[1;37;41mMSM INSTALL ERROR: $*\033[m"
|
||||
exit 1
|
||||
}
|
||||
|
||||
### NOTE: all the below functions are overloadable for system-specific installs
|
||||
### NOTE: some of the below functions MUST be overloaded due to system-specific installs
|
||||
|
||||
# Runs a system software update to make sure we're using all fresh packages
|
||||
function update_system_packages() {
|
||||
# OVERLOAD THIS
|
||||
install_error "No function definition for update_system_packages"
|
||||
}
|
||||
|
||||
# Installs additional dependencies (screen, rsync, zip, wget) using system package manager
|
||||
function install_dependencies() {
|
||||
# OVERLOAD THIS
|
||||
install_error "No function definition for install_dependencies"
|
||||
}
|
||||
|
||||
# Verifies existence of or adds user for Minecraft server (default "minecraft")
|
||||
function add_minecraft_user() {
|
||||
install_log "Creating default user '$msm_user'"
|
||||
useradd --system --user-group $msm_user
|
||||
}
|
||||
|
||||
# Verifies existence and permissions of msm server directory (default /opt/msm)
|
||||
function create_msm_directories() {
|
||||
install_log "Creating MSM directories"
|
||||
if [ ! -d "$msm_dir" ]; then
|
||||
mkdir -p "$msm_dir" || install_error "Couldn't create directory '$msm_dir'"
|
||||
fi
|
||||
chown -R $msm_user:$msm_user "$msm_dir" || install_error "Couldn't change file ownership for '$msm_dir'"
|
||||
}
|
||||
|
||||
# Fetches latest msm.conf, cron job, and init script
|
||||
function download_latest_files() {
|
||||
if [ ! -d "$dl_dir" ]; then
|
||||
install_error "Temporary download directory was not created properly"
|
||||
fi
|
||||
|
||||
install_log "Downloading latest MSM configuration file"
|
||||
wget https://raw.github.com/marcuswhybrow/minecraft-server-manager/latest/msm.conf \
|
||||
-O "$dl_dir/msm.conf.orig" || install_error "Couldn't download configuration file"
|
||||
|
||||
install_log "Downloading latest MSM cron file"
|
||||
wget https://raw.github.com/marcuswhybrow/minecraft-server-manager/latest/cron/msm \
|
||||
-O "$dl_dir/msm.cron.orig" || install_error "Couldn't download cron file"
|
||||
|
||||
install_log "Downloading latest MSM version"
|
||||
wget https://raw.github.com/marcuswhybrow/minecraft-server-manager/latest/init/msm \
|
||||
-O "$dl_dir/msm.init.orig" || install_error "Couldn't download init file"
|
||||
}
|
||||
|
||||
# Patches msm.conf and cron job to use specified username and directory
|
||||
function patch_latest_files() {
|
||||
# patch config file
|
||||
install_log "Patching MSM configuration file"
|
||||
sed 's#USERNAME="minecraft"#USERNAME="'$msm_user'"#g' "$dl_dir/msm.conf.orig" | \
|
||||
sed "s#/opt/msm#$msm_dir#g" >"$dl_dir/msm.conf"
|
||||
|
||||
# patch cron file
|
||||
install_log "Patching MSM cron file"
|
||||
awk '{ if ($0 !~ /^#/) sub(/minecraft/, "'$msm_user'"); print }' \
|
||||
"$dl_dir/msm.cron.orig" >"$dl_dir/msm.cron"
|
||||
|
||||
# patch init file
|
||||
install_log "Patching MSM init file"
|
||||
cp "$dl_dir/msm.init.orig" "$dl_dir/msm.init"
|
||||
}
|
||||
|
||||
# Installs msm.conf into /etc
|
||||
function install_config() {
|
||||
install_log "Installing MSM configuration file"
|
||||
install -b -m0644 "$dl_dir/msm.conf" /etc/msm.conf
|
||||
if [ ! -e /etc/msm.conf ]; then
|
||||
install_error "Couldn't install configuration file"
|
||||
fi
|
||||
}
|
||||
|
||||
# Installs msm.cron into /etc/cron.d
|
||||
function install_cron() {
|
||||
install_log "Installing MSM cron file"
|
||||
install "$dl_dir/msm.cron" /etc/cron.d/msm || install_error "Couldn't install cron file"
|
||||
}
|
||||
|
||||
# Reloads cron service (if necessary)
|
||||
function reload_cron() {
|
||||
# OVERLOAD THIS
|
||||
install_error "No function defined for reload_cron"
|
||||
}
|
||||
|
||||
# Installs init script into /etc/init.d
|
||||
function install_init() {
|
||||
install_log "Installing MSM init file"
|
||||
install -b "$dl_dir/msm.init" /etc/init.d/msm || install_error "Couldn't install init file"
|
||||
|
||||
install_log "Making MSM accessible as the command 'msm'"
|
||||
ln -s /etc/init.d/msm /usr/local/bin/msm
|
||||
}
|
||||
|
||||
# Enables init script in default runlevels
|
||||
function enable_init() {
|
||||
# OVERLOAD THIS
|
||||
install_error "No function defined for enable_init"
|
||||
}
|
||||
|
||||
# Updates rest of MSM using init script updater
|
||||
function update_msm() {
|
||||
install_log "Asking MSM to update itself"
|
||||
/etc/init.d/msm update --noinput
|
||||
}
|
||||
|
||||
function install_complete() {
|
||||
install_log "Done. Type 'msm help' to get started. Have fun!"
|
||||
}
|
32
installers/debian.sh
Normal file
32
installers/debian.sh
Normal file
@ -0,0 +1,32 @@
|
||||
source common.sh
|
||||
|
||||
function update_system_packages() {
|
||||
install_log "Updating sources"
|
||||
apt-get update || install_error "Couldn't update package list"
|
||||
apt-get upgrade || install_error "Couldn't upgrade packages"
|
||||
}
|
||||
|
||||
function install_dependencies() {
|
||||
install_log "Installing required packages"
|
||||
apt-get install screen rsync zip || install_error "Couldn't install dependencies"
|
||||
}
|
||||
|
||||
function reload_cron() {
|
||||
install_log "Reloading cron service"
|
||||
hash service 2>/dev/null
|
||||
if [[ $? == 0 ]]; then
|
||||
service cron reload
|
||||
else
|
||||
/etc/init.d/cron reload
|
||||
fi
|
||||
}
|
||||
|
||||
function enable_init() {
|
||||
install_log "Enabling automatic startup and shutdown"
|
||||
hash insserv 2>/dev/null
|
||||
if [[ $? == 0 ]]; then
|
||||
insserv msm
|
||||
else
|
||||
update-rc.d msm defaults
|
||||
fi
|
||||
}
|
4
installers/defaults.conf
Normal file
4
installers/defaults.conf
Normal file
@ -0,0 +1,4 @@
|
||||
# vim:syn=sh:
|
||||
# Configure default MSM username and server directory
|
||||
MSM_USERNAME="minecraft"
|
||||
MSM_DIRECTORY="/opt/msm"
|
28
installers/install.sh
Normal file
28
installers/install.sh
Normal file
@ -0,0 +1,28 @@
|
||||
echo "This script requires superuser access to install files to /etc."
|
||||
echo "You will be prompted for your password by sudo."
|
||||
|
||||
# Clear existing sudo credentials
|
||||
sudo -k
|
||||
|
||||
# Get platform-specific install functions from command arguments
|
||||
install_file="${1:-debian.sh}"
|
||||
|
||||
# run script as sudo
|
||||
sudo sh <<SCRIPT
|
||||
|
||||
source "$install_file"
|
||||
update_system_packages
|
||||
install_dependencies
|
||||
add_minecraft_user
|
||||
create_msm_directories
|
||||
download_latest_files
|
||||
patch_latest_files
|
||||
install_config
|
||||
install_cron
|
||||
reload_cron
|
||||
install_init
|
||||
enable_init
|
||||
update_msm
|
||||
install_complete
|
||||
|
||||
SCRIPT
|
21
installers/redhat.sh
Normal file
21
installers/redhat.sh
Normal file
@ -0,0 +1,21 @@
|
||||
source common.sh
|
||||
|
||||
function update_system_packages() {
|
||||
install_log "Updating sources"
|
||||
yum update || install_error "Couldn't update packages"
|
||||
}
|
||||
|
||||
function install_dependencies() {
|
||||
install_log "Installing required packages"
|
||||
yum install screen rsync zip || install_error "Couldn't install dependencies"
|
||||
}
|
||||
|
||||
function reload_cron() {
|
||||
install_log "Reloading cron service"
|
||||
service crond reload
|
||||
}
|
||||
|
||||
function enable_init() {
|
||||
install_log "Enabling automatic startup and shutdown"
|
||||
chkconfig --add msm
|
||||
}
|
@ -1,3 +1,10 @@
|
||||
# MSM version file for CraftBukkit 1.3.0 and above
|
||||
|
||||
extends "minecraft/1.3.0"
|
||||
extends "minecraft/1.3.0"
|
||||
|
||||
console_command SAVE_ON "save-on" \
|
||||
"Enabled level saving.."
|
||||
console_command SAVE_OFF "save-off" \
|
||||
"Disabled level saving.."
|
||||
console_command SAVE_ALL:10 "save-all" \
|
||||
"Save complete."
|
||||
|
Loading…
Reference in New Issue
Block a user