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"
|
error_exit FILE_NOT_FOUND "$error"
|
||||||
fi
|
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."
|
echo "Done."
|
||||||
|
|
||||||
local num_files="$(as_user "$SETTINGS_USERNAME" "ls -1 '$SETTINGS_JAR_STORAGE_PATH/$1/$SETTINGS_JARGROUP_DOWNLOAD_DIR' | wc -l")"
|
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
|
# 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