diff --git a/lgsm/functions/README.md b/lgsm/functions/README.md deleted file mode 100644 index de008ecfa3..0000000000 --- a/lgsm/functions/README.md +++ /dev/null @@ -1,17 +0,0 @@ -# LinuxGSM - Modules - -These modules are scripts that are called upon by the primary script linuxgsm.sh - -## Module Names - -Modules have been named to give an idea of what the function does. - -- core: Essential modules that will always run first. -- command: Primary command function. -- check: Runs checks that will either halt on or fix an issue. -- dev: development modules. -- fix: Applies a game server specific fix. -- info: retrieves information from a source such as config file or the OS. -- install: modules related to the installer. -- monitor: modules related to monitor. -- update: modules that update the game server. diff --git a/lgsm/functions/alert.sh b/lgsm/functions/alert.sh deleted file mode 100644 index 59deae2b6e..0000000000 --- a/lgsm/functions/alert.sh +++ /dev/null @@ -1,238 +0,0 @@ -#!/bin/bash -# LinuxGSM alert.sh module -# Author: Daniel Gibbs -# Contributors: http://linuxgsm.com/contrib -# Website: https://linuxgsm.com -# Description: Overall function for managing alerts. - -functionselfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")" - -# Generates alert log of the details at the time of the alert. -# Used with email alerts. -fn_alert_log() { - info_distro.sh - info_game.sh - info_messages.sh - if [ -f "${alertlog}" ]; then - rm -f "${alertlog:?}" - fi - - { - fn_info_message_head - fn_info_message_distro - fn_info_message_server_resource - fn_info_message_gameserver_resource - fn_info_message_gameserver - fn_info_logs - } | sed -r "s/\x1B\[([0-9]{1,2}(;[0-9]{1,2})?)?[m|K]//g" | tee -a "${alertlog}" > /dev/null 2>&1 -} - -fn_alert_test() { - fn_script_log_info "Sending test alert" - alertsubject="Alert - ${selfname} - Test" - alertemoji="🚧" - alertsound="1" - alerturl="not enabled" - alertbody="Testing LinuxGSM Alert. No action to be taken." -} - -fn_alert_restart() { - fn_script_log_info "Sending alert: Restarted: ${executable} not running" - alertsubject="Alert - ${selfname} - Restarted" - alertemoji="🚨" - alertsound="2" - alerturl="not enabled" - alertbody="${selfname} ${executable} not running" -} - -fn_alert_restart_query() { - fn_script_log_info "Sending alert: Restarted: ${selfname}" - alertsubject="Alert - ${selfname} - Restarted" - alertemoji="🚨" - alertsound="2" - alerturl="not enabled" - alertbody="Unable to query: ${selfname}" -} - -fn_alert_update() { - fn_script_log_info "Sending alert: Updated" - alertsubject="Alert - ${selfname} - Updated" - alertemoji="🎮" - alertsound="1" - alerturl="not enabled" - alertbody="${gamename} received update: ${remotebuildversion}" -} - -fn_alert_check_update() { - fn_script_log_info "Sending alert: Update available" - alertsubject="Alert - ${selfname} - Update available" - alertemoji="🎮" - alertsound="1" - alerturl="not enabled" - alertbody="${gamename} update available: ${remotebuildversion}" -} - -fn_alert_permissions() { - fn_script_log_info "Sending alert: Permissions error" - alertsubject="Alert - ${selfname}: Permissions error" - alertemoji="❗" - alertsound="2" - alerturl="not enabled" - alertbody="${selfname} has permissions issues" -} - -fn_alert_config() { - fn_script_log_info "Sending alert: New _default.cfg" - alertsubject="Alert - ${selfname} - New _default.cfg" - alertemoji="🎮" - alertsound="1" - alerturl="not enabled" - alertbody="${selfname} has received a new _default.cfg. Check file for changes." -} - -if [ "${alert}" == "permissions" ]; then - fn_alert_permissions -elif [ "${alert}" == "restart" ]; then - fn_alert_restart -elif [ "${alert}" == "restartquery" ]; then - fn_alert_restart_query -elif [ "${alert}" == "test" ]; then - fn_alert_test -elif [ "${alert}" == "update" ]; then - fn_alert_update -elif [ "${alert}" == "check-update" ]; then - fn_alert_check_update -elif [ "${alert}" == "config" ]; then - fn_alert_config -fi - -# Generate alert log. -fn_alert_log - -# Generates the more info link. -if [ "${postalert}" == "on" ] && [ -n "${postalert}" ]; then - exitbypass=1 - command_postdetails.sh - fn_firstcommand_reset - unset exitbypass -elif [ "${postalert}" != "on" ] && [ "${commandname}" == "TEST-ALERT" ]; then - fn_print_warn_nl "More Info not enabled" - fn_script_log_warn "More Info alerts not enabled" -fi - -if [ "${discordalert}" == "on" ] && [ -n "${discordalert}" ]; then - alert_discord.sh -elif [ "${discordalert}" != "on" ] && [ "${commandname}" == "TEST-ALERT" ]; then - fn_print_warn_nl "Discord alerts not enabled" - fn_script_log_warn "Discord alerts not enabled" -elif [ -z "${discordtoken}" ] && [ "${commandname}" == "TEST-ALERT" ]; then - fn_print_error_nl "Discord token not set" - echo -e "* https://docs.linuxgsm.com/alerts/discord" - fn_script_error "Discord token not set" -fi - -if [ "${emailalert}" == "on" ] && [ -n "${email}" ]; then - alert_email.sh -elif [ "${emailalert}" != "on" ] && [ "${commandname}" == "TEST-ALERT" ]; then - fn_print_warn_nl "Email alerts not enabled" - fn_script_log_warn "Email alerts not enabled" -elif [ -z "${email}" ] && [ "${commandname}" == "TEST-ALERT" ]; then - fn_print_error_nl "Email not set" - fn_script_log_error "Email not set" -fi - -if [ "${gotifyalert}" == "on" ] && [ -n "${gotifyalert}" ]; then - alert_gotify.sh -elif [ "${gotifyalert}" != "on" ] && [ "${commandname}" == "TEST-ALERT" ]; then - fn_print_warn_nl "Gotify alerts not enabled" - fn_script_log_warn "Gotify alerts not enabled" -elif [ -z "${gotifytoken}" ] && [ "${commandname}" == "TEST-ALERT" ]; then - fn_print_error_nl "Gotify token not set" - echo -e "* https://docs.linuxgsm.com/alerts/gotify" - fn_script_error "Gotify token not set" -elif [ -z "${gotifywebhook}" ] && [ "${commandname}" == "TEST-ALERT" ]; then - fn_print_error_nl "Gotify webhook not set" - echo -e "* https://docs.linuxgsm.com/alerts/gotify" - fn_script_error "Gotify webhook not set" -fi - -if [ "${iftttalert}" == "on" ] && [ -n "${iftttalert}" ]; then - alert_ifttt.sh -elif [ "${iftttalert}" != "on" ] && [ "${commandname}" == "TEST-ALERT" ]; then - fn_print_warn_nl "IFTTT alerts not enabled" - fn_script_log_warn "IFTTT alerts not enabled" -elif [ -z "${ifttttoken}" ] && [ "${commandname}" == "TEST-ALERT" ]; then - fn_print_error_nl "IFTTT token not set" - echo -e "* https://docs.linuxgsm.com/alerts/ifttt" - fn_script_error "IFTTT token not set" -fi - -if [ "${mailgunalert}" == "on" ] && [ -n "${mailgunalert}" ]; then - alert_mailgun.sh -elif [ "${mailgunalert}" != "on" ] && [ "${commandname}" == "TEST-ALERT" ]; then - fn_print_warn_nl "Mailgun alerts not enabled" - fn_script_log_warn "Mailgun alerts not enabled" -elif [ -z "${mailguntoken}" ] && [ "${commandname}" == "TEST-ALERT" ]; then - fn_print_error_nl "Mailgun token not set" - echo -e "* https://docs.linuxgsm.com/alerts/mailgun" - fn_script_error "Mailgun token not set" -fi - -if [ "${pushbulletalert}" == "on" ] && [ -n "${pushbullettoken}" ]; then - alert_pushbullet.sh -elif [ "${pushbulletalert}" != "on" ] && [ "${commandname}" == "TEST-ALERT" ]; then - fn_print_warn_nl "Pushbullet alerts not enabled" - fn_script_log_warn "Pushbullet alerts not enabled" -elif [ -z "${pushbullettoken}" ] && [ "${commandname}" == "TEST-ALERT" ]; then - fn_print_error_nl "Pushbullet token not set" - echo -e "* https://docs.linuxgsm.com/alerts/pushbullet" - fn_script_error "Pushbullet token not set" -fi - -if [ "${pushoveralert}" == "on" ] && [ -n "${pushoveralert}" ]; then - alert_pushover.sh -elif [ "${pushoveralert}" != "on" ] && [ "${commandname}" == "TEST-ALERT" ]; then - fn_print_warn_nl "Pushover alerts not enabled" - fn_script_log_warn "Pushover alerts not enabled" -elif [ -z "${pushovertoken}" ] && [ "${commandname}" == "TEST-ALERT" ]; then - fn_print_error_nl "Pushover token not set" - echo -e "* https://docs.linuxgsm.com/alerts/pushover" - fn_script_error "Pushover token not set" -fi - -if [ "${telegramalert}" == "on" ] && [ -n "${telegramtoken}" ]; then - alert_telegram.sh -elif [ "${telegramalert}" != "on" ] && [ "${commandname}" == "TEST-ALERT" ]; then - fn_print_warn_nl "Telegram Messages not enabled" - fn_script_log_warn "Telegram Messages not enabled" -elif [ -z "${telegramtoken}" ] && [ "${commandname}" == "TEST-ALERT" ]; then - fn_print_error_nl "Telegram token not set." - echo -e "* https://docs.linuxgsm.com/alerts/telegram" - fn_script_error "Telegram token not set." -elif [ -z "${telegramchatid}" ] && [ "${commandname}" == "TEST-ALERT" ]; then - fn_print_error_nl "Telegram chat id not set." - echo -e "* https://docs.linuxgsm.com/alerts/telegram" - fn_script_error "Telegram chat id not set." -fi - -if [ "${rocketchatalert}" == "on" ] && [ -n "${rocketchatalert}" ]; then - alert_rocketchat.sh -elif [ "${rocketchatalert}" != "on" ] && [ "${commandname}" == "TEST-ALERT" ]; then - fn_print_warn_nl "Rocketchat alerts not enabled" - fn_script_log_warn "Rocketchat alerts not enabled" -elif [ -z "${rocketchattoken}" ] && [ "${commandname}" == "TEST-ALERT" ]; then - fn_print_error_nl "Rocketchat token not set" - #echo -e "* https://docs.linuxgsm.com/alerts/slack" - fn_script_error "Rocketchat token not set" -fi - -if [ "${slackalert}" == "on" ] && [ -n "${slackalert}" ]; then - alert_slack.sh -elif [ "${slackalert}" != "on" ] && [ "${commandname}" == "TEST-ALERT" ]; then - fn_print_warn_nl "Slack alerts not enabled" - fn_script_log_warn "Slack alerts not enabled" -elif [ -z "${slacktoken}" ] && [ "${commandname}" == "TEST-ALERT" ]; then - fn_print_error_nl "Slack token not set" - echo -e "* https://docs.linuxgsm.com/alerts/slack" - fn_script_error "Slack token not set" -fi diff --git a/lgsm/functions/alert_discord.sh b/lgsm/functions/alert_discord.sh deleted file mode 100644 index 7708175163..0000000000 --- a/lgsm/functions/alert_discord.sh +++ /dev/null @@ -1,59 +0,0 @@ -#!/bin/bash -# LinuxGSM alert_discord.sh module -# Author: Daniel Gibbs -# Contributors: http://linuxgsm.com/contrib -# Website: https://linuxgsm.com -# Description: Sends Discord alert. - -functionselfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")" - -json=$( - cat << EOF -{ - "username":"LinuxGSM", - "avatar_url":"https://raw.githubusercontent.com/${githubuser}/${githubrepo}/${githubbranch}/lgsm/data/alert_discord_logo.jpg", - "file":"content", - "embeds": [{ - "color": "2067276", - "author": { - "name": "${alertemoji} ${alertsubject} ${alertemoji}", - "icon_url": "https://raw.githubusercontent.com/${githubuser}/${githubrepo}/${githubbranch}/lgsm/data/alert_discord_logo.jpg" - }, - "title": "${servername}", - "description": "${alertbody} \n More info: ${alerturl}", - "url": "", - "type": "content", - "thumbnail": {}, - "fields": [ - { - "name": "Game", - "value": "${gamename}", - "inline": true - }, - { - "name": "Server IP", - "value": "[${alertip}:${port}](https://www.gametracker.com/server_info/${alertip}:${port})", - "inline": true - }, - { - "name": "Hostname", - "value": "${HOSTNAME}", - "inline": true - } - ] - }] -} -EOF -) - -fn_print_dots "Sending Discord alert" - -discordsend=$(curl --connect-timeout 10 -sSL -H "Content-Type: application/json" -X POST -d "$(echo -n "${json}" | jq -c .)" "${discordwebhook}") - -if [ -n "${discordsend}" ]; then - fn_print_fail_nl "Sending Discord alert: ${discordsend}" - fn_script_log_fatal "Sending Discord alert: ${discordsend}" -else - fn_print_ok_nl "Sending Discord alert" - fn_script_log_pass "Sending Discord alert" -fi diff --git a/lgsm/functions/alert_email.sh b/lgsm/functions/alert_email.sh deleted file mode 100644 index ad90e880f1..0000000000 --- a/lgsm/functions/alert_email.sh +++ /dev/null @@ -1,25 +0,0 @@ -#!/bin/bash -# LinuxGSM alert_email.sh module -# Author: Daniel Gibbs -# Contributors: http://linuxgsm.com/contrib -# Website: https://linuxgsm.com -# Description: Sends email alert. - -functionselfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")" - -fn_print_dots "Sending Email alert: ${email}" -fn_sleep_time - -if [ -n "${emailfrom}" ]; then - mail -s "${alertsubject}" -r "${emailfrom}" "${email}" < "${alertlog}" -else - mail -s "${alertsubject}" "${email}" < "${alertlog}" -fi -exitcode=$? -if [ "${exitcode}" == "0" ]; then - fn_print_ok_nl "Sending Email alert: ${email}" - fn_script_log_pass "Sending Email alert: ${email}" -else - fn_print_fail_nl "Sending Email alert: ${email}" - fn_script_log_fatal "Sending Email alert: ${email}" -fi diff --git a/lgsm/functions/alert_gotify.sh b/lgsm/functions/alert_gotify.sh deleted file mode 100644 index faeba45934..0000000000 --- a/lgsm/functions/alert_gotify.sh +++ /dev/null @@ -1,30 +0,0 @@ -#!/bin/bash -# LinuxGSM alert_gotify.sh module -# Author: Daniel Gibbs -# Contributors: http://linuxgsm.com/contrib -# Website: https://linuxgsm.com -# Description: Sends Gotify alert. - -functionselfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")" - -json=$( - cat << EOF -{ - "title": "${alertemoji} ${alertsubject} ${alertemoji}", - "message": "Server name\n${servername}\n\nMessage\n${alertbody}\n\nGame\n${gamename}\n\nServer IP\n${alertip}:${port}\n\nHostname\n${HOSTNAME}\n\nMore info\n${alerturl}", - "priority": 5 -} -EOF -) - -fn_print_dots "Sending Gotify alert" - -gotifysend=$(curl --connect-timeout 10 -sSL "${gotifywebhook}/message"?token="${gotifytoken}" -H "Content-Type: application/json" -X POST -d "$(echo -n "${json}" | jq -c .)") - -if [ -n "${gotifysend}" ]; then - fn_print_ok_nl "Sending Gotify alert" - fn_script_log_pass "Sending Gotify alert" -else - fn_print_fail_nl "Sending Gotify alert: ${gotifysend}" - fn_script_log_fatal "Sending Gotify alert: ${gotifysend}" -fi diff --git a/lgsm/functions/alert_ifttt.sh b/lgsm/functions/alert_ifttt.sh deleted file mode 100644 index f8bbc24ad8..0000000000 --- a/lgsm/functions/alert_ifttt.sh +++ /dev/null @@ -1,29 +0,0 @@ -#!/bin/bash -# LinuxGSM alert_ifttt.sh module -# Author: Daniel Gibbs -# Contributors: http://linuxgsm.com/contrib -# Website: https://linuxgsm.com -# Description: Sends IFTTT alert. - -functionselfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")" - -json=$( - cat << EOF -{ - "value1": "${selfname}", - "value2": "${alertemoji} ${alertsubject} ${alertemoji}", - "value3": "Message: \n${alertbody}\n\nGame: \n${gamename}\n\nServer name: \n${servername}\n\nHostname: \n${HOSTNAME}\n\nServer IP: \n${alertip}:${port}\n\nMore info: \n${alerturl}" -} -EOF -) - -fn_print_dots "Sending IFTTT alert" -iftttsend=$(curl --connect-timeout 10 -sSL -H "Content-Type: application/json" -X POST -d "$(echo -n "${json}" | jq -c .)" "https://maker.ifttt.com/trigger/${iftttevent}/with/key/${ifttttoken}" | grep "Bad Request") - -if [ -n "${iftttsend}" ]; then - fn_print_fail_nl "Sending IFTTT alert: ${pushbulletsend}" - fn_script_log_fatal "Sending IFTTT alert: ${pushbulletsend}" -else - fn_print_ok_nl "Sending IFTTT alert" - fn_script_log_pass "Sent IFTTT alert" -fi diff --git a/lgsm/functions/alert_mailgun.sh b/lgsm/functions/alert_mailgun.sh deleted file mode 100644 index 25576209cd..0000000000 --- a/lgsm/functions/alert_mailgun.sh +++ /dev/null @@ -1,32 +0,0 @@ -#!/bin/bash -# LinuxGSM alert_mailgun.sh module -# Author: Daniel Gibbs -# Contributors: http://linuxgsm.com/contrib -# Website: https://linuxgsm.com -# Description: Sends Mailgun Email alert. - -functionselfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")" - -if [ "${mailgunapiregion}" == "eu" ]; then - mailgunapiurl="https://api.eu.mailgun.net" -else - mailgunapiurl="https://api.mailgun.net" -fi - -fn_print_dots "Sending Email alert: Mailgun: ${mailgunemail}" - -mailgunsend=$(curl --connect-timeout 10 -s --user "api:${mailguntoken}" \ - -F from="LinuxGSM <${mailgunemailfrom}>" \ - -F to="LinuxGSM Admin <${mailgunemail}>" \ - -F subject="${alertemoji} ${alertsubject} ${alertemoji}" \ - -F o:tag='alert' \ - -F o:tag='LinuxGSM' \ - -F text="$(cat "${alertlog}")" "${mailgunapiurl}/v3/${mailgundomain}/messages") - -if [ -z "${mailgunsend}" ]; then - fn_print_fail_nl "Sending Email alert: Mailgun: ${mailgunemail}" - fn_script_log_fatal "Sending Email alert: Mailgun: ${mailgunemail}" -else - fn_print_ok_nl "Sending Email alert: Mailgun: ${mailgunemail}" - fn_script_log_pass "Sending Email alert: Mailgun: ${mailgunemail}" -fi diff --git a/lgsm/functions/alert_pushbullet.sh b/lgsm/functions/alert_pushbullet.sh deleted file mode 100644 index 3e82d0db02..0000000000 --- a/lgsm/functions/alert_pushbullet.sh +++ /dev/null @@ -1,30 +0,0 @@ -#!/bin/bash -# LinuxGSM alert_pushbullet.sh module -# Author: Daniel Gibbs -# Contributors: http://linuxgsm.com/contrib -# Website: https://linuxgsm.com -# Description: Sends Pushbullet Messenger alert. - -functionselfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")" - -json=$( - cat << EOF -{ - "channel_tag": "${channeltag}", - "type": "note", - "title": "${alertemoji} ${alertsubject} ${alertemoji}", - "body": "Server name\n${servername}\n\nMessage\n${alertbody}\n\nGame\n${gamename}\n\nServer IP\n${alertip}:${port}\n\nHostname\n${HOSTNAME}\n\nMore info\n${alerturl}" -} -EOF -) - -fn_print_dots "Sending Pushbullet alert" -pushbulletsend=$(curl --connect-timeout 10 -sSL -u """${pushbullettoken}"":" -H "Content-Type: application/json" -X POST -d "$(echo -n "${json}" | jq -c .)" "https://api.pushbullet.com/v2/pushes" | grep "error_code") - -if [ -n "${pushbulletsend}" ]; then - fn_print_fail_nl "Sending Pushbullet alert: ${pushbulletsend}" - fn_script_log_fatal "Sending Pushbullet alert: ${pushbulletsend}" -else - fn_print_ok_nl "Sending Pushbullet alert" - fn_script_log_pass "Sent Pushbullet alert" -fi diff --git a/lgsm/functions/alert_pushover.sh b/lgsm/functions/alert_pushover.sh deleted file mode 100644 index d7c0864787..0000000000 --- a/lgsm/functions/alert_pushover.sh +++ /dev/null @@ -1,33 +0,0 @@ -#!/bin/bash -# LinuxGSM alert_pushover.sh module -# Author: Daniel Gibbs -# Contributors: http://linuxgsm.com/contrib -# Website: https://linuxgsm.com -# Description: Sends Pushover alert. - -functionselfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")" - -fn_print_dots "Sending Pushover alert" - -# Different alerts are given different priorities and notification sounds. -if [ "${alertsound}" == "1" ]; then - alertsound="" - alertpriority="0" -elif [ "${alertsound}" == "2" ]; then - # restarted. - alertsound="siren" - alertpriority="1" -else - alertsound="" - alertpriority="0" -fi - -pushoversend=$(curl --connect-timeout 10 -sS -F token="${pushovertoken}" -F user="${pushoveruserkey}" -F html="1" -F sound="${alertsound}" -F priority="${alertpriority}" -F title="${alertemoji} ${alertsubject} ${alertemoji}" -F message=" Server name
${servername}

Message
${alertbody}

Game
${gamename}

Server IP
${alertip}:${port}

Hostname
${HOSTNAME}

More info
${alerturl}" "https://api.pushover.net/1/messages.json" | grep errors) - -if [ -n "${pushoversend}" ]; then - fn_print_fail_nl "Sending Pushover alert: ${pushoversend}" - fn_script_log_fatal "Sending Pushover alert: ${pushoversend}" -else - fn_print_ok_nl "Sending Pushover alert" - fn_script_log_pass "Sent Pushover alert" -fi diff --git a/lgsm/functions/alert_rocketchat.sh b/lgsm/functions/alert_rocketchat.sh deleted file mode 100644 index 34d018e386..0000000000 --- a/lgsm/functions/alert_rocketchat.sh +++ /dev/null @@ -1,50 +0,0 @@ -#!/bin/bash -# LinuxGSM alert_rocketchat.sh module -# Author: Daniel Gibbs -# Contributors: http://linuxgsm.com/contrib -# Website: https://linuxgsm.com -# Description: Sends Rocketchat alert. - -functionselfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")" - -json=$( - cat << EOF -{ - "alias": "LinuxGSM", - "text": "*${alertemoji} ${alertsubject} ${alertemoji}* \n *${servername}* \n ${alertbody} \n More info: ${alerturl}", - "attachments": [ - { - "fields": [ - { - "short": true, - "title": "Game:", - "value": "${gamename}" - }, - { - "short": true, - "title": "Server IP:", - "value": "${alertip}:${port}" - }, - { - "short": true, - "title": "Hostname:", - "value": "${HOSTNAME}" - } - ] - } - ] -} -EOF -) - -fn_print_dots "Sending Rocketchat alert" - -rocketchatsend=$(curl --connect-timeout 10 -sSL -H "Content-Type: application/json" -X POST -d "$(echo -n "${json}" | jq -c .)" "${rocketchatwebhook}") - -if [ -n "${rocketchatsend}" ]; then - fn_print_ok_nl "Sending Rocketchat alert" - fn_script_log_pass "Sending Rocketchat alert" -else - fn_print_fail_nl "Sending Rocketchat alert: ${rocketchatsend}" - fn_script_log_fatal "Sending Rocketchat alert: ${rocketchatsend}" -fi diff --git a/lgsm/functions/alert_slack.sh b/lgsm/functions/alert_slack.sh deleted file mode 100644 index 2e87c1571a..0000000000 --- a/lgsm/functions/alert_slack.sh +++ /dev/null @@ -1,75 +0,0 @@ -#!/bin/bash -# LinuxGSM alert_slack.sh module -# Author: Daniel Gibbs -# Contributors: http://linuxgsm.com/contrib -# Website: https://linuxgsm.com -# Description: Sends Slack alert. - -functionselfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")" - -json=$( - cat << EOF -{ - "attachments": [ - { - "color": "#36a64f", - "blocks": [ - { - "type": "section", - "text": { - "type": "mrkdwn", - "text": "*LinuxGSM Alert*" - } - }, - { - "type": "section", - "text": { - "type": "mrkdwn", - "text": "*${alertemoji} ${alertsubject}* \n ${alertbody}" - } - }, - { - "type": "divider" - }, - { - "type": "section", - "fields": [ - { - "type": "mrkdwn", - "text": "*Game:* \n ${gamename}" - }, - { - "type": "mrkdwn", - "text": "*Server IP:* \n ${alertip}:${port}" - }, - { - "type": "mrkdwn", - "text": "*Server Name:* \n ${servername}" - } - ] - }, - { - "type": "section", - "text": { - "type": "mrkdwn", - "text": "Hostname: ${HOSTNAME} / More info: ${alerturl}" - } - } - ] - } - ] -} -EOF -) - -fn_print_dots "Sending Slack alert" - -slacksend=$(curl --connect-timeout 10 -sSL -H "Content-Type: application/json" -X POST -d "$(echo -n "${json}" | jq -c .)" "${slackwebhook}") - -if [ "${slacksend}" == "ok" ]; then - fn_print_ok_nl "Sending Slack alert" - fn_script_log_pass "Sending Slack alert" -else - fn_print_fail_nl "Sending Slack alert: ${slacksend}" - fn_script_log_fatal "Sending Slack alert: ${slacksend}" -fi diff --git a/lgsm/functions/alert_telegram.sh b/lgsm/functions/alert_telegram.sh deleted file mode 100644 index 27e34beb4c..0000000000 --- a/lgsm/functions/alert_telegram.sh +++ /dev/null @@ -1,30 +0,0 @@ -#!/bin/bash -# LinuxGSM alert_telegram.sh module -# Author: Daniel Gibbs -# Contributors: http://linuxgsm.com/contrib -# Website: https://linuxgsm.com -# Description: Sends Telegram Messenger alert. - -functionselfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")" - -json=$( - cat << EOF -{ - "chat_id": "${telegramchatid}", - "parse_mode": "HTML", - "text": "${alertemoji} ${alertsubject} ${alertemoji}\n\nServer name\n${servername}\n\nMessage\n${alertbody}\n\nGame\n${gamename}\n\nServer IP\n${alertip}:${port}\n\nHostname\n${HOSTNAME}\n\nMore info\n${alerturl}", - "disable_web_page_preview": "yes" -} -EOF -) - -fn_print_dots "Sending Telegram alert" -telegramsend=$(curl --connect-timeout 10 -sSL -H "Content-Type: application/json" -X POST -d "$(echo -n "${json}" | jq -c .)" ${curlcustomstring} "https://${telegramapi}/bot${telegramtoken}/sendMessage" | grep "error_code") - -if [ -n "${telegramsend}" ]; then - fn_print_fail_nl "Sending Telegram alert: ${telegramsend}" - fn_script_log_fatal "Sending Telegram alert: ${telegramsend}" -else - fn_print_ok_nl "Sending Telegram alert" - fn_script_log_pass "Sent Telegram alert" -fi diff --git a/lgsm/functions/check.sh b/lgsm/functions/check.sh deleted file mode 100644 index e19853424c..0000000000 --- a/lgsm/functions/check.sh +++ /dev/null @@ -1,101 +0,0 @@ -#!/bin/bash -# LinuxGSM check.sh module -# Author: Daniel Gibbs -# Contributors: http://linuxgsm.com/contrib -# Website: https://linuxgsm.com -# Description: Overall function for managing checks. -# Runs checks that will either halt on or fix an issue. - -functionselfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")" - -# Every command that requires checks just references check.sh. -# check.sh selects which checks to run by using arrays. - -if [ "${commandname}" != "INSTALL" ]; then - check_root.sh -fi - -if [ "${commandname}" != "UPDATE-LGSM" ]; then - check_version.sh -fi - -check_tmuxception.sh - -if [ "$(whoami)" != "root" ] || [ -f /.dockerenv ]; then - if [ "${commandname}" != "MONITOR" ]; then - check_permissions.sh - fi -fi - -if [ "${commandname}" != "INSTALL" ] && [ "${commandname}" != "UPDATE-LGSM" ] && [ "${commandname}" != "DETAILS" ] && [ "${commandname}" != "POST-DETAILS" ]; then - check_system_dir.sh -fi - -allowed_commands_array=(DEBUG START) -for allowed_command in "${allowed_commands_array[@]}"; do - if [ "${allowed_command}" == "${commandname}" ]; then - check_executable.sh - fi -done - -if [ "$(whoami)" != "root" ] || [ -f /.dockerenv ]; then - allowed_commands_array=(DEBUG START INSTALL) - for allowed_command in "${allowed_commands_array[@]}"; do - if [ "${allowed_command}" == "${commandname}" ]; then - check_glibc.sh - fi - done -fi - -allowed_commands_array=(BACKUP CHANGE-PASSWORD CONSOLE DEBUG DETAILS FASTDL MAP-COMPRESSOR MODS-INSTALL MODS-REMOVE MODS-UPDATE MONITOR POST-DETAILS RESTART START STOP TEST-ALERT UPDATE UPDATE-LGSM VALIDATE WIPE) -for allowed_command in "${allowed_commands_array[@]}"; do - if [ "${allowed_command}" == "${commandname}" ]; then - check_logs.sh - fi -done - -allowed_commands_array=(DEBUG START) -for allowed_command in "${allowed_commands_array[@]}"; do - if [ "${allowed_command}" == "${commandname}" ]; then - check_deps.sh - fi -done - -allowed_commands_array=(CONSOLE DEBUG MONITOR START STOP) -for allowed_command in "${allowed_commands_array[@]}"; do - if [ "${allowed_command}" == "${commandname}" ]; then - check_config.sh - fi -done - -allowed_commands_array=(DEBUG DETAILS DEV-QUERY-RAW MONITOR POST-DETAILS START STOP) -for allowed_command in "${allowed_commands_array[@]}"; do - if [ "${allowed_command}" == "${commandname}" ]; then - if [ -z "${installflag}" ]; then - check_ip.sh - fi - fi -done - -allowed_commands_array=(CHECK-UPDATE DEBUG MONITOR START UPDATE VALIDATE) -for allowed_command in "${allowed_commands_array[@]}"; do - if [ "${allowed_command}" == "${commandname}" ]; then - if [ "${appid}" ]; then - check_steamcmd.sh - fi - fi -done - -allowed_commands_array=(CHANGE-PASSWORD DETAILS MONITOR POST-DETAILS START STOP UPDATE VALIDATE) -for allowed_command in "${allowed_commands_array[@]}"; do - if [ "${allowed_command}" == "${commandname}" ]; then - check_status.sh - fi -done - -allowed_commands_array=(DEBUG START INSTALL) -for allowed_command in "${allowed_commands_array[@]}"; do - if [ "${allowed_command}" == "${commandname}" ]; then - check_system_requirements.sh - fi -done diff --git a/lgsm/functions/check_config.sh b/lgsm/functions/check_config.sh deleted file mode 100644 index 2c65243eb5..0000000000 --- a/lgsm/functions/check_config.sh +++ /dev/null @@ -1,35 +0,0 @@ -#!/bin/bash -# LinuxGSM check_config.sh module -# Author: Daniel Gibbs -# Contributors: http://linuxgsm.com/contrib -# Website: https://linuxgsm.com -# Description: Checks if the server config is missing and warns the user if needed. - -functionselfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")" - -if [ -n "${servercfgfullpath}" ] && [ ! -f "${servercfgfullpath}" ]; then - fn_print_dots "" - fn_print_warn_nl "Configuration file missing!" - echo -e "${servercfgfullpath}" - fn_script_log_warn "Configuration file missing!" - fn_script_log_warn "${servercfgfullpath}" - install_config.sh -fi - -if [ "${shortname}" == "rust" ] && [ -v rconpassword ] && [ -z "${rconpassword}" ]; then - fn_print_dots "" - fn_print_fail_nl "RCON password is not set" - fn_script_log_warn "RCON password is not set" -elif [ -v rconpassword ] && [ "${rconpassword}" == "CHANGE_ME" ]; then - fn_print_dots "" - fn_print_warn_nl "Default RCON Password detected" - fn_script_log_warn "Default RCON Password detected" -fi - -if [ "${shortname}" == "vh" ] && [ -z "${serverpassword}" ]; then - fn_print_fail_nl "serverpassword is not set" - fn_script_log_fatal "serverpassword is not set" -elif [ "${shortname}" == "vh" ] && [ "${#serverpassword}" -le "4" ]; then - fn_print_fail_nl "serverpassword is to short (min 5 chars)" - fn_script_log_fatal "serverpassword is to short (min 5 chars)" -fi diff --git a/lgsm/functions/check_deps.sh b/lgsm/functions/check_deps.sh deleted file mode 100644 index bb8507769c..0000000000 --- a/lgsm/functions/check_deps.sh +++ /dev/null @@ -1,363 +0,0 @@ -#!/bin/bash -# LinuxGSM check_deps.sh module -# Author: Daniel Gibbs -# Contributors: http://linuxgsm.com/contrib -# Website: https://linuxgsm.com -# Description: Checks and installs missing dependencies. - -functionselfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")" - -fn_install_mono_repo() { - if [ "${autodepinstall}" == "0" ]; then - fn_print_information_nl "Automatically adding Mono repository." - fn_script_log_info "Automatically adding Mono repository." - echo -en ".\r" - sleep 1 - echo -en "..\r" - sleep 1 - echo -en "...\r" - sleep 1 - echo -en " \r" - if [ "${distroid}" == "ubuntu" ]; then - if [ "${distroversion}" == "20.04" ]; then - cmd="sudo apt install gnupg ca-certificates;sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 3FA7E0328081BFF6A14DA29AA6A19B38D3D831EF;echo 'deb https://download.mono-project.com/repo/ubuntu stable-focal main' | sudo tee /etc/apt/sources.list.d/mono-official-stable.list;sudo apt update" - elif [ "${distroversion}" == "18.04" ]; then - cmd="sudo apt install gnupg ca-certificates;sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 3FA7E0328081BFF6A14DA29AA6A19B38D3D831EF;echo 'deb https://download.mono-project.com/repo/ubuntu stable-bionic main' | sudo tee /etc/apt/sources.list.d/mono-official-stable.list;sudo apt update" - elif [ "${distroversion}" == "16.04" ]; then - cmd="sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 3FA7E0328081BFF6A14DA29AA6A19B38D3D831EF;sudo apt install apt-transport-https ca-certificates;echo 'deb https://download.mono-project.com/repo/ubuntu stable-xenial main' | sudo tee /etc/apt/sources.list.d/mono-official-stable.list;sudo apt update" - else - monoautoinstall="1" - fi - elif [ "${distroid}" == "debian" ]; then - if [ "${distroversion}" == "10" ]; then - cmd="sudo apt install apt-transport-https dirmngr gnupg ca-certificates;sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 3FA7E0328081BFF6A14DA29AA6A19B38D3D831EF;echo 'deb https://download.mono-project.com/repo/debian stable-buster main' | sudo tee /etc/apt/sources.list.d/mono-official-stable.list;sudo apt update" - elif [ "${distroversion}" == "9" ]; then - cmd="sudo apt install apt-transport-https dirmngr gnupg ca-certificates;sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 3FA7E0328081BFF6A14DA29AA6A19B38D3D831EF;echo 'deb https://download.mono-project.com/repo/debian stable-stretch main' | sudo tee /etc/apt/sources.list.d/mono-official-stable.list;sudo apt update" - else - monoautoinstall="1" - fi - elif [ "${distroid}" == "centos" ] || [ "${distroid}" == "almalinux" ] || [ "${distroid}" == "rocky" ]; then - if [ "${distroversion}" == "8" ]; then - cmd="sudo rpmkeys --import 'https://keyserver.ubuntu.com/pks/lookup?op=get&search=0x3FA7E0328081BFF6A14DA29AA6A19B38D3D831EF';su -c 'curl https://download.mono-project.com/repo/centos8-stable.repo | tee /etc/yum.repos.d/mono-centos8-stable.repo'" - elif [ "${distroversion}" == "7" ]; then - cmd="sudo rpmkeys --import 'https://keyserver.ubuntu.com/pks/lookup?op=get&search=0x3FA7E0328081BFF6A14DA29AA6A19B38D3D831EF';su -c 'curl https://download.mono-project.com/repo/centos7-stable.repo | tee /etc/yum.repos.d/mono-centos7-stable.repo'" - else - monoautoinstall="1" - fi - elif [ "${distroid}" == "fedora" ]; then - if [ "${distroversion}" -ge "29" ]; then - cmd="sudo rpm --import 'https://keyserver.ubuntu.com/pks/lookup?op=get&search=0x3FA7E0328081BFF6A14DA29AA6A19B38D3D831EF';su -c 'curl https://download.mono-project.com/repo/centos8-stable.repo | tee /etc/yum.repos.d/mono-centos8-stable.repo';dnf update" - else - cmd="sudo rpm --import 'https://keyserver.ubuntu.com/pks/lookup?op=get&search=0x3FA7E0328081BFF6A14DA29AA6A19B38D3D831EF';su -c 'curl https://download.mono-project.com/repo/centos7-stable.repo | tee /etc/yum.repos.d/mono-centos7-stable.repo';dnf update" - fi - else - monoautoinstall="1" - fi - - # Run the mono repo install. - eval "${cmd}" - - # Did Mono repo install correctly? - if [ "${monoautoinstall}" != "1" ]; then - if [ $? != 0 ]; then - fn_print_failure_nl "Unable to install Mono repository." - fn_script_log_fatal "Unable to install Mono repository." - else - fn_print_complete_nl "Installing Mono repository completed." - fn_script_log_pass "Installing Mono repository completed." - fi - fi - - # Mono can not be auto installed with this distro. - if [ "${monoautoinstall}" == "1" ]; then - fn_print_warning_nl "Mono auto install not available for ${distroname}." - echo -e "Follow instructions on Mono website to install." - echo -e "https://www.mono-project.com/download/stable/#download-lin" - fn_script_log_warn "Unable to install Mono repository. Mono auto install not available for ${distroname}." - fi - - else - fn_print_information_nl "Installing Mono repository." - fn_print_warning_nl "$(whoami) does not have sudo access." - echo -e "Follow instructions on Mono website to install." - echo -e "https://www.mono-project.com/download/stable/#download-lin" - fn_script_log_warn "Unable to install Mono repository. $(whoami) does not have sudo access." - fi -} - -fn_deps_email() { - # Adds postfix to required dependencies if email alert is enabled. - if [ "${emailalert}" == "on" ]; then - if [ -f /usr/bin/mailx ]; then - if [ -d /etc/exim4 ]; then - array_deps_required+=(exim4) - elif [ -d /etc/sendmail ]; then - array_deps_required+=(sendmail) - elif [ "$(command -v dpkg-query 2> /dev/null)" ]; then - array_deps_required+=(mailutils postfix) - elif [ "$(command -v rpm 2> /dev/null)" ]; then - array_deps_required+=(mailx postfix) - fi - else - if [ "$(command -v dpkg-query 2> /dev/null)" ]; then - array_deps_required+=(mailutils postfix) - elif [ "$(command -v rpm 2> /dev/null)" ]; then - array_deps_required+=(mailx postfix) - fi - fi - fi -} - -fn_install_missing_deps() { - # If any dependencies are not installed. - if [ "${#array_deps_missing[*]}" != "0" ]; then - if [ "${commandname}" == "INSTALL" ]; then - fn_print_warning_nl "Missing dependencies: ${red}${array_deps_missing[*]}${default}" - fn_script_log_warn "Missing dependencies: ${array_deps_missing[*]}" - else - fn_print_dots "Missing dependencies" - fn_print_warn "Missing dependencies: ${red}${array_deps_missing[*]}${default}" - fn_script_log_warn "Missing dependencies: ${array_deps_missing[*]}" - fi - fn_sleep_time - - # Attempt automatic dependency installation - if [ "${autoinstall}" == "1" ]; then - sudo -n true > /dev/null 2>&1 - else - sudo -v > /dev/null 2>&1 - fi - autodepinstall="$?" - - if [ "${monostatus}" == "1" ]; then - fn_install_mono_repo - fi - - if [ "${commandname}" == "INSTALL" ]; then - if [ "${autodepinstall}" == "0" ]; then - fn_print_information_nl "$(whoami) has sudo access." - fn_script_log_info "$(whoami) has sudo access." - else - fn_print_warning_nl "$(whoami) does not have sudo access. Manually install dependencies." - fn_script_log_warn "$(whoami) does not have sudo access. Manually install dependencies." - fi - fi - - # Add sudo dpkg --add-architecture i386 if using i386 packages. - if [ "$(command -v dpkg-query 2> /dev/null)" ]; then - if printf '%s\n' "${array_deps_required[@]}" | grep -q -P 'i386'; then - i386installcommand="sudo dpkg --add-architecture i386; " - fi - fi - - # If automatic dependency install is available - if [ "${autodepinstall}" == "0" ]; then - fn_print_information_nl "Automatically installing missing dependencies." - fn_script_log_info "Automatically installing missing dependencies." - echo -en ".\r" - sleep 1 - echo -en "..\r" - sleep 1 - echo -en "...\r" - sleep 1 - echo -en " \r" - if [ "$(command -v dpkg-query 2> /dev/null)" ]; then - cmd="echo steamcmd steam/question select \"I AGREE\" | sudo debconf-set-selections; echo steamcmd steam/license note '' | sudo debconf-set-selections; ${i386installcommand}sudo apt-get update; sudo apt-get -y install ${array_deps_missing[*]}" - eval "${cmd}" - elif [ "$(command -v dnf 2> /dev/null)" ]; then - cmd="sudo dnf -y install ${array_deps_missing[*]}" - eval "${cmd}" - elif [ "$(command -v yum 2> /dev/null)" ]; then - cmd="sudo yum -y install ${array_deps_missing[*]}" - eval "${cmd}" - fi - autodepinstall="$?" - - # If auto install passes remove steamcmd install failure. - if [ "${autodepinstall}" == "0" ]; then - unset steamcmdfail - fi - fi - - # If automatic dependency install is unavailable. - if [ "${autodepinstall}" != "0" ]; then - if [ "$(command -v dpkg-query 2> /dev/null)" ]; then - echo -e "${i386installcommand}sudo apt update; sudo apt install ${array_deps_missing[*]}" - elif [ "$(command -v dnf 2> /dev/null)" ]; then - echo -e "sudo dnf install ${array_deps_missing[*]}" - elif [ "$(command -v yum 2> /dev/null)" ]; then - echo -e "sudo yum install ${array_deps_missing[*]}" - fi - fi - - if [ "${steamcmdfail}" ]; then - if [ "${commandname}" == "INSTALL" ]; then - fn_print_failure_nl "Missing dependencies required to run SteamCMD." - fn_script_log_fatal "Missing dependencies required to run SteamCMD." - core_exit.sh - else - fn_print_error_nl "Missing dependencies required to run SteamCMD." - fn_script_log_error "Missing dependencies required to run SteamCMD." - fi - fi - - else - if [ "${commandname}" == "INSTALL" ]; then - fn_print_information_nl "Required dependencies already installed." - fn_script_log_info "Required dependencies already installed." - fi - fi -} - -fn_check_loop() { - # Loop though required depenencies checking if they are installed. - for deptocheck in ${array_deps_required[*]}; do - fn_deps_detector - done - - # user will be informed of any missing dependencies. - fn_install_missing_deps -} - -# Checks if dependency is installed or not. -fn_deps_detector() { - ## Check. - # SteamCMD: Will be removed from required array if no appid is present or non-free repo is not available. - # This will cause SteamCMD to be installed using tar. - if [ "${deptocheck}" == "libsdl2-2.0-0:i386" ] && [ -z "${appid}" ]; then - array_deps_required=("${array_deps_required[@]/libsdl2-2.0-0:i386/}") - steamcmdstatus=1 - elif [ "${deptocheck}" == "steamcmd" ] && [ -z "${appid}" ]; then - array_deps_required=("${array_deps_required[@]/steamcmd/}") - steamcmdstatus=1 - elif [ "${deptocheck}" == "steamcmd" ] && [ "${distroid}" == "debian" ] && ! grep -qE "^deb .*non-free" /etc/apt/sources.list; then - array_deps_required=("${array_deps_required[@]/steamcmd/}") - steamcmdstatus=1 - # Java: Added for users using Oracle JRE to bypass check. - elif [[ ${deptocheck} == "openjdk"* ]] || [[ ${deptocheck} == "java"* ]]; then - # Is java already installed? - if [ -n "${javaversion}" ]; then - # Added for users using Oracle JRE to bypass check. - depstatus=0 - deptocheck="${javaversion}" - else - depstatus=1 - fi - # Mono: A Mono repo needs to be installed. - elif [ "${deptocheck}" == "mono-complete" ]; then - if [ -n "${monoversion}" ] && [ "${monoversion}" -ge "5" ]; then - # Mono >= 5.0.0 already installed. - depstatus=0 - monostatus=0 - else - # Mono not installed or installed Mono < 5.0.0. - depstatus=1 - monostatus=1 - fi - elif [ "$(command -v dpkg-query 2> /dev/null)" ]; then - dpkg-query -W -f='${Status}' "${deptocheck}" 2> /dev/null | grep -q -P '^install ok installed' - depstatus=$? - elif [ "$(command -v dnf 2> /dev/null)" ]; then - dnf list installed "${deptocheck}" > /dev/null 2>&1 - depstatus=$? - elif [ "$(command -v rpm 2> /dev/null)" ]; then - rpm -q "${deptocheck}" > /dev/null 2>&1 - depstatus=$? - fi - - # Outcome of Check. - if [ "${steamcmdstatus}" == "1" ]; then - # If SteamCMD is not available in repo dont check for it. - unset steamcmdstatus - elif [ "${depstatus}" == "0" ]; then - # If dependency is found. - missingdep=0 - if [ "${commandname}" == "INSTALL" ]; then - echo -e "${green}${deptocheck}${default}" - sleep 0.1 - fi - elif [ "${depstatus}" != "0" ]; then - # If dependency is not found. - missingdep=1 - if [ "${commandname}" == "INSTALL" ]; then - echo -e "${red}${deptocheck}${default}" - sleep 0.1 - fi - # If SteamCMD requirements are not met install will fail. - if [ -n "${appid}" ]; then - for steamcmddeptocheck in ${array_deps_required_steamcmd[*]}; do - if [ "${deptocheck}" != "steamcmd" ] && [ "${deptocheck}" == "${steamcmddeptocheck}" ]; then - steamcmdfail=1 - fi - done - fi - fi - unset depstatus - - # Missing dependencies are added to array_deps_missing. - if [ "${missingdep}" == "1" ]; then - array_deps_missing+=("${deptocheck}") - fi -} - -if [ "${commandname}" == "INSTALL" ]; then - if [ "$(whoami)" == "root" ] && [ ! -f /.dockerenv ]; then - echo -e "" - echo -e "${lightyellow}Checking Dependencies as root${default}" - echo -e "=================================" - fn_print_information_nl "Checking any missing dependencies for ${gamename} server only." - fn_print_information_nl "This will NOT install a ${gamename} server." - fn_sleep_time - else - echo -e "" - echo -e "${lightyellow}Checking Dependencies${default}" - echo -e "=================================" - fi -fi - -# Will warn user if their distro is no longer supported by the vendor. -if [ -n "${distrosupport}" ]; then - if [ "${distrosupport}" == "unsupported" ]; then - fn_print_warning_nl "${distroname} is no longer supported by the vendor. Upgrading is recommended." - fn_script_log_warn "${distroname} is no longer supported by the vendor. Upgrading is recommended." - fi -fi - -info_distro.sh - -if [ ! -f "${tmpdir}/dependency-no-check.tmp" ] && [ ! -f "${datadir}/${distroid}-${distroversioncsv}.csv" ]; then - # Check that the distro dependency csv file exists. - fn_check_file_github "lgsm/data" "${distroid}-${distroversioncsv}.csv" - if [ -n "${checkflag}" ] && [ "${checkflag}" == "0" ]; then - fn_fetch_file_github "lgsm/data" "${distroid}-${distroversioncsv}.csv" "lgsm/data" "chmodx" "norun" "noforce" "nohash" - fi -fi - -# If the file successfully downloaded run the dependency check. -if [ -f "${datadir}/${distroid}-${distroversioncsv}.csv" ]; then - depall=$(awk -F, '$1=="all" {$1=""; print $0}' "${datadir}/${distroid}-${distroversioncsv}.csv") - depsteamcmd=$(awk -F, '$1=="steamcmd" {$1=""; print $0}' "${datadir}/${distroid}-${distroversioncsv}.csv") - depshortname=$(awk -v shortname="${shortname}" -F, '$1==shortname {$1=""; print $0}' "${datadir}/${distroid}-${distroversioncsv}.csv") - - # Generate array of missing deps. - array_deps_missing=() - - array_deps_required=("${depall} ${depsteamcmd} ${depshortname}") - array_deps_required_steamcmd=("${depsteamcmd}") - fn_deps_email - # Unique sort dependency array. - IFS=" " read -r -a array_deps_required <<< "$(echo "${array_deps_required[@]}" | tr ' ' '\n' | sort -u | tr '\n' ' ')" - - fn_check_loop -# Warn the user that dependency checking is unavailable for their distro. -elif [ "${commandname}" == "INSTALL" ] || [ -n "${checkflag}" ] && [ "${checkflag}" != "0" ]; then - fn_print_warning_nl "LinuxGSM dependency checking currently unavailable for ${distroname}." - # Prevent future dependency checking if unavailable for the distro. - echo "${version}" > "${tmpdir}/dependency-no-check.tmp" -elif [ -f "${tmpdir}/dependency-no-check.tmp" ]; then - # Allow LinuxGSM to try a dependency check if LinuxGSM has been recently updated. - nocheckversion=$(cat "${tmpdir}/dependency-no-check.tmp") - if [ "${version}" != "${nocheckversion}" ]; then - rm -f "${tmpdir:?}/dependency-no-check.tmp" - fi -fi diff --git a/lgsm/functions/check_executable.sh b/lgsm/functions/check_executable.sh deleted file mode 100644 index d1b5c3efd0..0000000000 --- a/lgsm/functions/check_executable.sh +++ /dev/null @@ -1,20 +0,0 @@ -#!/bin/bash -# LinuxGSM check_executable.sh module -# Author: Daniel Gibbs -# Contributors: http://linuxgsm.com/contrib -# Website: https://linuxgsm.com -# Description: Checks if server executable exists. - -functionselfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")" - -# Check if executable exists -execname=$(basename "${executable}") -if [ ! -f "${executabledir}/${execname}" ]; then - fn_print_fail_nl "executable was not found" - echo -e "* ${executabledir}/${execname}" - if [ -d "${lgsmlogdir}" ]; then - fn_script_log_fatal "Executable was not found: ${executabledir}/${execname}" - fi - unset exitbypass - core_exit.sh -fi diff --git a/lgsm/functions/check_glibc.sh b/lgsm/functions/check_glibc.sh deleted file mode 100644 index b1a959f5b4..0000000000 --- a/lgsm/functions/check_glibc.sh +++ /dev/null @@ -1,29 +0,0 @@ -#!/bin/bash -# LinuxGSM check_glibc.sh module -# Author: Daniel Gibbs -# Contributors: http://linuxgsm.com/contrib -# Website: https://linuxgsm.com -# Description: Checks if the server has the correct Glibc version. - -functionselfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")" - -info_distro.sh - -if [ "${glibc}" == "null" ]; then - # Glibc is not required. - : -elif [ -z "${glibc}" ]; then - fn_print_dots "glibc" - fn_print_error_nl "glibc requirement unknown" - fn_script_log_error "glibc requirement unknown" -elif [ "$(printf '%s\n'${glibc}'\n' "${glibcversion}" | sort -V | head -n 1)" != "${glibc}" ]; then - fn_print_dots "glibc" - fn_print_error_nl "glibc requirements not met" - fn_script_log_error "glibc requirements not met" - echo -en "\n" - echo -e " * glibc required: ${glibc}" - echo -e " * glibc installed: ${red}${glibcversion}${default}" - echo -en "\n" - fn_print_information_nl "distro upgrade is required" - fn_script_log_info "distro upgrade is required" -fi diff --git a/lgsm/functions/check_ip.sh b/lgsm/functions/check_ip.sh deleted file mode 100644 index 4b8eca5ec9..0000000000 --- a/lgsm/functions/check_ip.sh +++ /dev/null @@ -1,63 +0,0 @@ -#!/bin/bash -# LinuxGSM check_ip.sh module -# Author: Daniel Gibbs -# Contributors: http://linuxgsm.com/contrib -# Website: https://linuxgsm.com -# Description: Automatically identifies the server interface IP. -# If multiple interfaces are detected the user will need to manually set using ip="0.0.0.0". - -functionselfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")" - -info_game.sh - -ip_commands_array=("/bin/ip" "/usr/sbin/ip" "ip") -for ip_command in "${ip_commands_array[@]}"; do - if [ "$(command -v "${ip_command}" 2> /dev/null)" ]; then - ipcommand="${ip_command}" - break - fi -done - -ethtool_commands_array=("/bin/ethtool" "/usr/sbin/ethtool" "ethtool") -for ethtool_command in "${ethtool_commands_array[@]}"; do - if [ "$(command -v "${ethtool_command}" 2> /dev/null)" ]; then - ethtoolcommand="${ethtool_command}" - break - fi -done - -mapfile -t current_ips < <(${ipcommand} -o -4 addr | awk '{print $4}' | grep -oe '\([0-9]\{1,3\}\.\?\)\{4\}' | sort -u | grep -v 127.0.0) - -function fn_is_valid_ip() { - local ip="${1}" - # excluding 0.* ips also - grep -qEe '^[1-9]+[0-9]*\.[0-9]+\.[0-9]+\.[0-9]+$' <<< "${ip}" -} - -# Check if server has multiple IP addresses - -# If the IP variable has been set by user. -if fn_is_valid_ip "${ip}"; then - queryips=("${ip}") - webadminip=("${ip}") - telnetip=("${ip}") -# If game config does have an IP set. -elif fn_is_valid_ip "${configip}"; then - queryips=("${configip}") - ip="${configip}" - webadminip=("${configip}") - telnetip=("${configip}") -# If there is only 1 server IP address. -# Some IP details can automaticly use the one IP -elif [ "${#current_ips[@]}" == "1" ]; then - queryips=("127.0.0.1" "${current_ips[@]}") - ip="0.0.0.0" - webadminip=("${current_ips[@]}") - telnetip=("${current_ips[@]}") -# If no ip is set by the user and server has more than one IP. -else - queryips=("127.0.0.1" "${current_ips[@]}") - ip="0.0.0.0" - webadminip=("${ip}") - telnetip=("${ip}") -fi diff --git a/lgsm/functions/check_last_update.sh b/lgsm/functions/check_last_update.sh deleted file mode 100644 index ee86c0ba14..0000000000 --- a/lgsm/functions/check_last_update.sh +++ /dev/null @@ -1,26 +0,0 @@ -#!/bin/bash -# LinuxGSM check_last_update.sh module -# Author: Daniel Gibbs -# Contributors: http://linuxgsm.com/contrib -# Website: https://linuxgsm.com -# Description: Checks lock file to see when last update happened. -# Will reboot server if instance not rebooted since update. - -functionselfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")" - -if [ -f "${lockdir}/${selfname}-laststart.lock" ]; then - laststart=$(cat "${lockdir}/${selfname}-laststart.lock") -fi -if [ -f "${lockdir}/lastupdate.lock" ]; then - lastupdate=$(cat "${lockdir}/lastupdate.lock") -fi - -check_status.sh -if [ -f "${lockdir}/lastupdate.lock" ] && [ "${status}" != "0" ]; then - if [ ! -f "${lockdir}/${selfname}-laststart.lock" ] || [ "${laststart}" -lt "${lastupdate}" ]; then - fn_print_info "${selfname} has not been restarted since last update" - fn_script_log_info "${selfname} has not been restarted since last update" - command_restart.sh - fn_firstcommand_reset - fi -fi diff --git a/lgsm/functions/check_logs.sh b/lgsm/functions/check_logs.sh deleted file mode 100644 index fa3df92d10..0000000000 --- a/lgsm/functions/check_logs.sh +++ /dev/null @@ -1,26 +0,0 @@ -#!/bin/bash -# LinuxGSM check_logs.sh module -# Author: Daniel Gibbs -# Contributors: http://linuxgsm.com/contrib -# Website: https://linuxgsm.com -# Description: Checks if log files exist. - -functionselfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")" - -fn_check_logs() { - fn_print_dots "Checking for log files" - fn_print_info_nl "Checking for log files: Creating log files" - checklogs=1 - install_logs.sh -} - -# Create directories for the script and console logs. -if [ ! -d "${lgsmlogdir}" ] || [ ! -d "${consolelogdir}" ]; then - fn_check_logs -fi - -# Create gamelogdir. -# If variable exists gamelogdir exists and log/server does not. -if [ "${gamelogdir}" ] && [ -d "${gamelogdir}" ] && [ ! -d "${logdir}/server" ]; then - fn_check_logs -fi diff --git a/lgsm/functions/check_permissions.sh b/lgsm/functions/check_permissions.sh deleted file mode 100644 index 0094456ec3..0000000000 --- a/lgsm/functions/check_permissions.sh +++ /dev/null @@ -1,233 +0,0 @@ -#!/bin/bash -# LinuxGSM check_permissions.sh -# Author: Daniel Gibbs -# Contributors: http://linuxgsm.com/contrib -# Website: https://linuxgsm.com -# Description: Checks ownership & permissions of scripts, files and directories. - -functionselfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")" - -fn_check_ownership() { - if [ -f "${rootdir}/${selfname}" ]; then - if [ "$(find "${rootdir}/${selfname}" -not -user "$(whoami)" | wc -l)" -ne "0" ]; then - selfownissue=1 - fi - fi - if [ -d "${functionsdir}" ]; then - if [ "$(find "${functionsdir}" -not -user "$(whoami)" | wc -l)" -ne "0" ]; then - funcownissue=1 - fi - fi - if [ -d "${serverfiles}" ]; then - if [ "$(find "${serverfiles}" -not -user "$(whoami)" | wc -l)" -ne "0" ]; then - filesownissue=1 - fi - fi - if [ "${selfownissue}" == "1" ] || [ "${funcownissue}" == "1" ] || [ "${filesownissue}" == "1" ]; then - fn_print_fail_nl "Ownership issues found" - fn_script_log_fatal "Ownership issues found" - fn_print_information_nl "The current user ($(whoami)) does not have ownership of the following files:" - fn_script_log_info "The current user ($(whoami)) does not have ownership of the following files:" - { - echo -e "User\tGroup\tFile\n" - if [ "${selfownissue}" == "1" ]; then - find "${rootdir}/${selfname}" -not -user "$(whoami)" -printf "%u\t%g\t%p\n" - fi - if [ "${funcownissue}" == "1" ]; then - find "${functionsdir}" -not -user "$(whoami)" -printf "%u\t%g\t%p\n" - fi - if [ "${filesownissue}" == "1" ]; then - find "${serverfiles}" -not -user "$(whoami)" -printf "%u\t%g\t%p\n" - fi - - } | column -s $'\t' -t | tee -a "${lgsmlog}" - echo -e "" - fn_print_information_nl "please see https://docs.linuxgsm.com/support/faq#fail-starting-game-server-permission-issues-found" - fn_script_log "For more information, please see https://docs.linuxgsm.com/support/faq#fail-starting-game-server-permission-issues-found" - if [ "${monitorflag}" == 1 ]; then - alert="permissions" - alert.sh - fi - core_exit.sh - fi -} - -fn_check_permissions() { - if [ -d "${functionsdir}" ]; then - if [ "$(find "${functionsdir}" -type f -not -executable | wc -l)" -ne "0" ]; then - fn_print_fail_nl "Permissions issues found" - fn_script_log_fatal "Permissions issues found" - fn_print_information_nl "The following files are not executable:" - fn_script_log_info "The following files are not executable:" - { - echo -e "File\n" - find "${functionsdir}" -type f -not -executable -printf "%p\n" - } | column -s $'\t' -t | tee -a "${lgsmlog}" - if [ "${monitorflag}" == 1 ]; then - alert="permissions" - alert.sh - fi - core_exit.sh - fi - fi - - # Check rootdir permissions. - if [ "${rootdir}" ]; then - # Get permission numbers on directory under the form 775. - rootdirperm=$(stat -c %a "${rootdir}") - # Grab the first and second digit for user and group permission. - userrootdirperm="${rootdirperm:0:1}" - grouprootdirperm="${rootdirperm:1:1}" - if [ "${userrootdirperm}" != "7" ] && [ "${grouprootdirperm}" != "7" ]; then - fn_print_fail_nl "Permissions issues found" - fn_script_log_fatal "Permissions issues found" - fn_print_information_nl "The following directory does not have the correct permissions:" - fn_script_log_info "The following directory does not have the correct permissions:" - fn_script_log_info "${rootdir}" - ls -l "${rootdir}" - if [ "${monitorflag}" == 1 ]; then - alert="permissions" - alert.sh - fi - core_exit.sh - fi - fi - # Check if executable is executable and attempt to fix it. - # First get executable name. - execname=$(basename "${executable}") - if [ -f "${executabledir}/${execname}" ]; then - # Get permission numbers on file under the form 775. - execperm=$(stat -c %a "${executabledir}/${execname}") - # Grab the first and second digit for user and group permission. - userexecperm="${execperm:0:1}" - groupexecperm="${execperm:1:1}" - # Check for invalid user permission. - if [ "${userexecperm}" == "0" ] || [ "${userexecperm}" == "2" ] || [ "${userexecperm}" == "4" ] || [ "${userexecperm}" == "6" ]; then - # If user permission is invalid, then check for invalid group permissions. - if [ "${groupexecperm}" == "0" ] || [ "${groupexecperm}" == "2" ] || [ "${groupexecperm}" == "4" ] || [ "${groupexecperm}" == "6" ]; then - # If permission issues are found. - fn_print_warn_nl "Permissions issue found" - fn_script_log_warn "Permissions issue found" - fn_print_information_nl "The following file is not executable:" - ls -l "${executabledir}/${execname}" - fn_script_log_info "The following file is not executable:" - fn_script_log_info "${executabledir}/${execname}" - fn_print_information_nl "Applying chmod u+x,g+x ${executabledir}/${execname}" - fn_script_log_info "Applying chmod u+x,g+x ${execperm}" - # Make the executable executable. - chmod u+x,g+x "${executabledir}/${execname}" - # Second check to see if it's been successfully applied. - # Get permission numbers on file under the form 775. - execperm=$(stat -c %a "${executabledir}/${execname}") - # Grab the first and second digit for user and group permission. - userexecperm="${execperm:0:1}" - groupexecperm="${execperm:1:1}" - if [ "${userexecperm}" == "0" ] || [ "${userexecperm}" == "2" ] || [ "${userexecperm}" == "4" ] || [ "${userexecperm}" == "6" ]; then - if [ "${groupexecperm}" == "0" ] || [ "${groupexecperm}" == "2" ] || [ "${groupexecperm}" == "4" ] || [ "${groupexecperm}" == "6" ]; then - # If errors are still found. - fn_print_fail_nl "The following file could not be set executable:" - ls -l "${executabledir}/${execname}" - fn_script_log_warn "The following file could not be set executable:" - fn_script_log_info "${executabledir}/${execname}" - if [ "${monitorflag}" == "1" ]; then - alert="permissions" - alert.sh - fi - core_exit.sh - fi - fi - fi - fi - fi -} - -## The following fn_sys_perm_* functions checks for permission errors in /sys directory. - -# Checks for permission errors in /sys directory. -fn_sys_perm_errors_detect() { - # Reset test variables. - sysdirpermerror="0" - classdirpermerror="0" - netdirpermerror="0" - # Check permissions. - # /sys, /sys/class and /sys/class/net should be readable & executable. - if [ ! -r "/sys" ] || [ ! -x "/sys" ]; then - sysdirpermerror="1" - fi - if [ ! -r "/sys/class" ] || [ ! -x "/sys/class" ]; then - classdirpermerror="1" - fi - if [ ! -r "/sys/class/net" ] || [ ! -x "/sys/class/net" ]; then - netdirpermerror="1" - fi -} - -# Display a message on how to fix the issue manually. -fn_sys_perm_fix_manually_msg() { - echo -e "" - fn_print_information_nl "This error causes servers to fail starting properly" - fn_script_log_info "This error causes servers to fail starting properly." - echo -e " * To fix this issue, run the following command as root:" - fn_script_log_info "To fix this issue, run the following command as root:" - echo -e " chmod a+rx /sys /sys/class /sys/class/net" - fn_script_log "chmod a+rx /sys /sys/class /sys/class/net" - fn_sleep_time - if [ "${monitorflag}" == 1 ]; then - alert="permissions" - alert.sh - fi - core_exit.sh -} - -# Attempt to fix /sys related permission errors if sudo is available, exits otherwise. -fn_sys_perm_errors_fix() { - if sudo -n true > /dev/null 2>&1; then - fn_print_dots "Automatically fixing /sys permissions" - fn_script_log_info "Automatically fixing /sys permissions." - if [ "${sysdirpermerror}" == "1" ]; then - sudo chmod a+rx "/sys" - fi - if [ "${classdirpermerror}" == "1" ]; then - sudo chmod a+rx "/sys/class" - fi - if [ "${netdirpermerror}" == "1" ]; then - sudo chmod a+rx "/sys/class/net" - fi - # Run check again to see if it's fixed. - fn_sys_perm_errors_detect - if [ "${sysdirpermerror}" == "1" ] || [ "${classdirpermerror}" == "1" ] || [ "${netdirpermerror}" == "1" ]; then - fn_print_error "Could not fix /sys permissions" - fn_script_log_error "Could not fix /sys permissions." - fn_sleep_time - # Show the user how to fix. - fn_sys_perm_fix_manually_msg - else - fn_print_ok_nl "Automatically fixing /sys permissions" - fn_script_log_pass "Permissions in /sys fixed" - fi - else - # Show the user how to fix. - fn_sys_perm_fix_manually_msg - fi -} - -# Processes to the /sys related permission errors check & fix/info. -fn_sys_perm_error_process() { - fn_sys_perm_errors_detect - # If any error was found. - if [ "${sysdirpermerror}" == "1" ] || [ "${classdirpermerror}" == "1" ] || [ "${netdirpermerror}" == "1" ]; then - fn_print_error_nl "Permission error(s) found in /sys" - fn_script_log_error "Permission error(s) found in /sys" - # Run the fix - fn_sys_perm_errors_fix - fi -} - -## Run permisions checks when not root or docker. -if [ "$(whoami)" != "root" ] && [ ! -f /.dockerenv ]; then - fn_check_ownership - fn_check_permissions - if [ "${commandname}" == "START" ]; then - fn_sys_perm_error_process - fi -fi diff --git a/lgsm/functions/check_root.sh b/lgsm/functions/check_root.sh deleted file mode 100644 index dab0331487..0000000000 --- a/lgsm/functions/check_root.sh +++ /dev/null @@ -1,21 +0,0 @@ -#!/bin/bash -# LinuxGSM check_root.sh module -# Author: Daniel Gibbs -# Contributors: http://linuxgsm.com/contrib -# Website: https://linuxgsm.com -# Description: Checks if the user tried to run the script as root. - -functionselfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")" - -if [ "$(whoami)" == "root" ] && [ ! -f /.dockerenv ]; then - if [ "${commandname}" != "INSTALL" ]; then - fn_print_fail_nl "Do NOT run this script as root!" - if [ -d "${lgsmlogdir}" ]; then - fn_script_log_fatal "${selfname} attempted to run as root." - else - # Forces exit code is log does not yet exist. - exitcode=1 - fi - core_exit.sh - fi -fi diff --git a/lgsm/functions/check_status.sh b/lgsm/functions/check_status.sh deleted file mode 100644 index 429f7c72dc..0000000000 --- a/lgsm/functions/check_status.sh +++ /dev/null @@ -1,10 +0,0 @@ -#!/bin/bash -# LinuxGSM check_status.sh module -# Author: Daniel Gibbs -# Contributors: http://linuxgsm.com/contrib -# Website: https://linuxgsm.com -# Description: Checks the process status of the server. Either online or offline. - -functionselfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")" - -status=$(tmux -L "${sessionname}" list-sessions -F "#{session_name}" 2> /dev/null | grep -Ecx "^${sessionname}") diff --git a/lgsm/functions/check_steamcmd.sh b/lgsm/functions/check_steamcmd.sh deleted file mode 100644 index d41e8669f4..0000000000 --- a/lgsm/functions/check_steamcmd.sh +++ /dev/null @@ -1,22 +0,0 @@ -#!/bin/bash -# LinuxGSM check_steamcmd.sh module -# Author: Daniel Gibbs -# Contributors: http://linuxgsm.com/contrib -# Website: https://linuxgsm.com -# Description: Checks if SteamCMD is installed correctly. - -functionselfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")" - -# init steamcmd functions -core_steamcmd.sh - -fn_check_steamcmd_clear -fn_check_steamcmd -if [ "${shortname}" == "ark" ]; then - fn_check_steamcmd_ark -fi -fn_check_steamcmd_dir -fn_check_steamcmd_dir_legacy -fn_check_steamcmd_steamapp -fn_check_steamcmd_user -fn_check_steamcmd_exec diff --git a/lgsm/functions/check_system_dir.sh b/lgsm/functions/check_system_dir.sh deleted file mode 100644 index 0a732d6d13..0000000000 --- a/lgsm/functions/check_system_dir.sh +++ /dev/null @@ -1,22 +0,0 @@ -#!/bin/bash -# LinuxGSM check_system_dir.sh module -# Author: Daniel Gibbs -# Contributors: http://linuxgsm.com/contrib -# Website: https://linuxgsm.com -# Description: Checks if systemdir/serverfiles is accessible. - -functionselfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")" - -if [ "${commandname}" != "VALIDATE" ]; then - checkdir="${serverfiles}" -else - checkdir="${systemdir}" -fi - -if [ ! -d "${checkdir}" ]; then - fn_print_fail_nl "Cannot access ${checkdir}: No such directory" - if [ -d "${lgsmlogdir}" ]; then - fn_script_log_fatal "Cannot access ${checkdir}: No such directory." - fi - core_exit.sh -fi diff --git a/lgsm/functions/check_system_requirements.sh b/lgsm/functions/check_system_requirements.sh deleted file mode 100644 index bfe597135c..0000000000 --- a/lgsm/functions/check_system_requirements.sh +++ /dev/null @@ -1,55 +0,0 @@ -#!/bin/bash -# LinuxGSM check_system_requirements.sh -# Author: Daniel Gibbs -# Contributors: http://linuxgsm.com/contrib -# Website: https://linuxgsm.com -# Description: Checks RAM requirements. - -functionselfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")" - -info_distro.sh - -# RAM requirements in megabytes for each game or engine. - -if [ "${shortname}" == "ark" ]; then - ramrequirementmb="4000" - ramrequirementgb="4" -elif [ "${shortname}" == "bt" ]; then - ramrequirementmb="1000" - ramrequirementgb="1" -elif [ "${shortname}" == "mh" ]; then - ramrequirementmb="4000" - ramrequirementgb="4" -elif [ "${shortname}" == "arma3" ]; then - ramrequirementmb="1000" - ramrequirementgb="1" -elif [ "${shortname}" == "rust" ]; then - ramrequirementmb="4000" - ramrequirementgb="4" -elif [ "${shortname}" == "mc" ] || [ "${shortname}" == "pmc" ] || [ "${shortname}" == "wmc" ]; then - ramrequirementmb="1000" - ramrequirementgb="1" -elif [ "${shortname}" == "pstbs" ]; then - ramrequirementmb="2000" - ramrequirementgb="2" -elif [ "${shortname}" == "ns2" ] || [ "${shortname}" == "ns2c" ]; then - ramrequirementmb="1000" - ramrequirementgb="1" -elif [ "${shortname}" == "st" ]; then - ramrequirementmb="1000" - ramrequirementgb="1" -elif [ "${shortname}" == "pvr" ]; then - ramrequirementmb="2000" - ramrequirementgb="2" -fi - -# If the game or engine has a minimum RAM Requirement, compare it to system's available RAM. -if [ "${ramrequirementmb}" ]; then - if [ "${physmemtotalmb}" -lt "${ramrequirementmb}" ]; then - fn_print_dots "Check RAM" - # Warn the user. - fn_print_warn_nl "Check RAM: ${ramrequirementgb}G required, ${physmemtotal} available" - echo "* ${gamename} server may fail to run or experience poor performance." - fn_sleep_time - fi -fi diff --git a/lgsm/functions/check_tmuxception.sh b/lgsm/functions/check_tmuxception.sh deleted file mode 100644 index 64705a3a8b..0000000000 --- a/lgsm/functions/check_tmuxception.sh +++ /dev/null @@ -1,33 +0,0 @@ -#!/bin/bash -# LinuxGSM check_config.sh module -# Author: Daniel Gibbs -# Contributors: http://linuxgsm.com/contrib -# Website: https://linuxgsm.com -# Description: Checks if run from tmux or screen. - -functionselfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")" - -fn_check_is_in_tmux() { - if [ "${TMUX}" ]; then - fn_print_fail_nl "tmuxception error: Sorry Cobb you cannot start a tmux session inside of a tmux session." - fn_script_log_fatal "Tmuxception error: Attempted to start a tmux session inside of a tmux session." - fn_print_information_nl "LinuxGSM creates a tmux session when starting the server." - echo -e "It is not possible to run a tmux session inside another tmux session" - echo -e "https://docs.linuxgsm.com/requirements/tmux#tmuxception" - core_exit.sh - fi -} - -fn_check_is_in_screen() { - if [ "${STY}" ]; then - fn_print_fail_nl "tmuxception error: Sorry Cobb you cannot start a tmux session inside of a screen session." - fn_script_log_fatal "Tmuxception error: Attempted to start a tmux session inside of a screen session." - fn_print_information_nl "LinuxGSM creates a tmux session when starting the server." - echo -e "It is not possible to run a tmux session inside screen session" - echo -e "https://docs.linuxgsm.com/requirements/tmux#tmuxception" - core_exit.sh - fi -} - -fn_check_is_in_tmux -fn_check_is_in_screen diff --git a/lgsm/functions/check_version.sh b/lgsm/functions/check_version.sh deleted file mode 100644 index 657e32b54c..0000000000 --- a/lgsm/functions/check_version.sh +++ /dev/null @@ -1,23 +0,0 @@ -#!/bin/bash -# LinuxGSM command_version.sh module -# Author: Daniel Gibbs -# Contributors: http://linuxgsm.com/contrib -# Website: https://linuxgsm.com -# Description: Will run update-lgsm if gameserver.sh and modules version does not match -# this will allow gameserver.sh to update - useful for multi instance servers. - -functionselfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")" - -if [ -n "${modulesversion}" ] && [ -n "${version}" ] && [ "${version}" != "${modulesversion}" ]; then - exitbypass=1 - echo -e "" - fn_print_error_nl "LinuxGSM version mismatch" - echo -e "" - echo -e "* ${selfname}: ${version}" - echo -e "* modules: ${modulesversion}" - echo -e "" - fn_sleep_time - fn_script_log_error "LinuxGSM Version mismatch: ${selfname}: ${version}: modules: ${modulesversion}" - command_update_linuxgsm.sh - fn_firstcommand_reset -fi diff --git a/lgsm/functions/command_backup.sh b/lgsm/functions/command_backup.sh deleted file mode 100644 index d69c57a0fd..0000000000 --- a/lgsm/functions/command_backup.sh +++ /dev/null @@ -1,268 +0,0 @@ -#!/bin/bash -# LinuxGSM command_backup.sh module -# Author: Daniel Gibbs -# Contributors: http://linuxgsm.com/contrib -# Website: https://linuxgsm.com -# Description: Creates a .tar.gz file in the backup directory. - -commandname="BACKUP" -commandaction="Backing up" -functionselfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")" -fn_firstcommand_set - -check.sh - -# Trap to remove lockfile on quit. -fn_backup_trap() { - echo -e "" - echo -en "backup ${backupname}.tar.gz..." - fn_print_canceled_eol_nl - fn_script_log_info "Backup ${backupname}.tar.gz: CANCELED" - rm -f "${backupdir:?}/${backupname}.tar.gz" | tee -a "${lgsmlog}" - echo -en "backup ${backupname}.tar.gz..." - fn_print_removed_eol_nl - fn_script_log_info "Backup ${backupname}.tar.gz: REMOVED" - # Remove lock file. - rm -f "${lockdir:?}/backup.lock" - fn_backup_start_server - unset exitbypass - core_exit.sh -} - -# Check if a backup is pending or has been aborted using backup.lock. -fn_backup_check_lockfile() { - if [ -f "${lockdir}/backup.lock" ]; then - fn_print_info_nl "Lock file found: Backup is currently running" - fn_script_log_error "Lock file found: Backup is currently running: ${lockdir}/backup.lock" - core_exit.sh - fi -} - -# Initialisation. -fn_backup_init() { - # Backup file name with selfname and current date. - backupname="${selfname}-$(date '+%Y-%m-%d-%H%M%S')" - - info_distro.sh - fn_print_dots "Backup starting" - fn_script_log_info "Backup starting" - fn_print_ok_nl "Backup starting" - if [ ! -d "${backupdir}" ] || [ "${backupcount}" == "0" ]; then - fn_print_info_nl "There are no previous backups" - else - if [ "${lastbackupdaysago}" == "0" ]; then - daysago="less than 1 day ago" - elif [ "${lastbackupdaysago}" == "1" ]; then - daysago="1 day ago" - else - daysago="${lastbackupdaysago} days ago" - fi - echo -e "* Previous backup was created ${daysago}, total size ${lastbackupsize}" - fi -} - -# Check if server is started and whether to stop it. -fn_backup_stop_server() { - check_status.sh - # Server is running but will not be stopped. - if [ "${stoponbackup}" == "off" ]; then - fn_print_warn_nl "${selfname} is currently running" - echo -e "* Although unlikely; creating a backup while ${selfname} is running might corrupt the backup." - fn_script_log_warn "${selfname} is currently running" - fn_script_log_warn "Although unlikely; creating a backup while ${selfname} is running might corrupt the backup" - # Server is running and will be stopped if stoponbackup=on or unset. - # If server is started - elif [ "${status}" != "0" ]; then - fn_print_restart_warning - startserver="1" - exitbypass=1 - command_stop.sh - fn_firstcommand_reset - fi -} - -# Create required folders. -fn_backup_dir() { - # Create backupdir if it doesn't exist. - if [ ! -d "${backupdir}" ]; then - mkdir -p "${backupdir}" - fi -} - -# Migrate Backups from old dir before refactor -fn_backup_migrate_olddir() { - # Check if old backup dir is there before the refactor and move the backups - if [ -d "${rootdir}/backups" ]; then - if [ "${rootdir}/backups" != "${backupdir}" ]; then - fn_print_dots "Backup directory is being migrated" - fn_script_log_info "Backup directory is being migrated" - fn_script_log_info "${rootdir}/backups > ${backupdir}" - mv "${rootdir}/backups/"* "${backupdir}" 2> /dev/null - exitcode=$? - if [ "${exitcode}" == 0 ]; then - rmdir "${rootdir}/backups" 2> /dev/null - exitcode=$? - fi - if [ "${exitcode}" != 0 ]; then - fn_print_error_nl "Backup directory is being migrated" - fn_script_log_error "Backup directory is being migrated" - else - - fn_print_ok_nl "Backup directory is being migrated" - fn_script_log_pass "Backup directory is being migrated" - fi - fi - fi -} - -fn_backup_create_lockfile() { - # Create lockfile. - date '+%s' > "${lockdir}/backup.lock" - fn_script_log_info "Lockfile generated" - fn_script_log_info "${lockdir}/backup.lock" - # trap to remove lockfile on quit. - trap fn_backup_trap INT -} - -# Compressing files. -fn_backup_compression() { - # Tells how much will be compressed using rootdirduexbackup value from info_distro and prompt for continue. - fn_print_info "A total of ${rootdirduexbackup} will be compressed." - fn_script_log_info "A total of ${rootdirduexbackup} will be compressed: ${backupdir}/${backupname}.tar.gz" - fn_print_dots "Backup (${rootdirduexbackup}) ${backupname}.tar.gz, in progress..." - fn_script_log_info "backup ${rootdirduexbackup} ${backupname}.tar.gz, in progress" - excludedir=$(fn_backup_relpath) - - # Check that excludedir is a valid path. - if [ ! -d "${excludedir}" ]; then - fn_print_fail_nl "Problem identifying the previous backup directory for exclusion." - fn_script_log_fatal "Problem identifying the previous backup directory for exclusion" - core_exit.sh - fi - - tar -czf "${backupdir}/${backupname}.tar.gz" -C "${rootdir}" --exclude "${excludedir}" --exclude "${lockdir}/backup.lock" ./. - local exitcode=$? - if [ "${exitcode}" != 0 ]; then - fn_print_fail_eol - fn_script_log_fatal "Backup in progress: FAIL" - echo -e "${extractcmd}" | tee -a "${lgsmlog}" - fn_print_fail_nl "Starting backup" - fn_script_log_fatal "Starting backup" - else - fn_print_ok_eol - fn_print_ok_nl "Completed: ${backupname}.tar.gz, total size $(du -sh "${backupdir}/${backupname}.tar.gz" | awk '{print $1}')" - fn_script_log_pass "Backup created: ${backupname}.tar.gz, total size $(du -sh "${backupdir}/${backupname}.tar.gz" | awk '{print $1}')" - fi - # Remove lock file - rm -f "${lockdir:?}/backup.lock" -} - -# Clear old backups according to maxbackups and maxbackupdays variables. -fn_backup_prune() { - # Clear if backup variables are set. - if [ "${maxbackups}" ] && [ -n "${maxbackupdays}" ]; then - # How many backups there are. - info_distro.sh - # How many backups exceed maxbackups. - backupquotadiff=$((backupcount - maxbackups)) - # How many backups exceed maxbackupdays. - backupsoudatedcount=$(find "${backupdir}"/ -type f -name "*.tar.gz" -mtime +"${maxbackupdays}" | wc -l) - # If anything can be cleared. - if [ "${backupquotadiff}" -gt "0" ] || [ "${backupsoudatedcount}" -gt "0" ]; then - fn_print_dots "Pruning" - fn_script_log_info "Backup pruning activated" - fn_print_ok_nl "Pruning" - # If maxbackups greater or equal to backupsoutdatedcount, then it is over maxbackupdays. - if [ "${backupquotadiff}" -ge "${backupsoudatedcount}" ]; then - # Display how many backups will be cleared. - echo -e "* Pruning: ${backupquotadiff} backup(s) has exceeded the ${maxbackups} backups limit" - fn_script_log_info "Pruning: ${backupquotadiff} backup(s) has exceeded the ${maxbackups} backups limit" - fn_sleep_time - fn_print_dots "Pruning: Clearing ${backupquotadiff} backup(s)" - fn_script_log_info "Pruning: Clearing ${backupquotadiff} backup(s)" - # Clear backups over quota. - find "${backupdir}"/ -type f -name "*.tar.gz" -printf '%T@ %p\n' | sort -rn | tail -${backupquotadiff} | cut -f2- -d" " | xargs rm - fn_print_ok_nl "Pruning: Clearing ${backupquotadiff} backup(s)" - fn_script_log_pass "Pruning: Cleared ${backupquotadiff} backup(s)" - # If maxbackupdays is used over maxbackups. - elif [ "${backupquotadiff}" -lt "${backupsoudatedcount}" ]; then - # Display how many backups will be cleared. - echo -e "* Pruning: ${backupsoudatedcount} backup(s) are older than ${maxbackupdays} days." - fn_script_log_info "Pruning: ${backupsoudatedcount} backup(s) older than ${maxbackupdays} days." - fn_sleep_time - fn_print_dots "Pruning: Clearing ${backupquotadiff} backup(s)." - fn_script_log_info "Pruning: Clearing ${backupquotadiff} backup(s)" - # Clear backups over quota - find "${backupdir}"/ -type f -mtime +"${maxbackupdays}" -exec rm -f {} \; - fn_print_ok_nl "Pruning: Clearing ${backupquotadiff} backup(s)" - fn_script_log_pass "Pruning: Cleared ${backupquotadiff} backup(s)" - fi - fi - fi -} - -fn_backup_relpath() { - # Written by CedarLUG as a "realpath --relative-to" alternative in bash. - # Populate an array of tokens initialized from the rootdir components. - declare -a rdirtoks=($(readlink -f "${rootdir}" | sed "s/\// /g")) - if [ ${#rdirtoks[@]} -eq 0 ]; then - fn_print_fail_nl "Problem assessing rootdir during relative path assessment" - fn_script_log_fatal "Problem assessing rootdir during relative path assessment: ${rootdir}" - core_exit.sh - fi - - # Populate an array of tokens initialized from the backupdir components. - declare -a bdirtoks=($(readlink -f "${backupdir}" | sed "s/\// /g")) - if [ ${#bdirtoks[@]} -eq 0 ]; then - fn_print_fail_nl "Problem assessing backupdir during relative path assessment" - fn_script_log_fatal "Problem assessing backupdir during relative path assessment: ${rootdir}" - core_exit.sh - fi - - # Compare the leading entries of each array. These common elements will be clipped off. - # for the relative path output. - for ((base = 0; base < ${#rdirtoks[@]}; base++)); do - [[ "${rdirtoks[$base]}" != "${bdirtoks[$base]}" ]] && break - done - - # Next, climb out of the remaining rootdir location with updir references. - for ((x = base; x < ${#rdirtoks[@]}; x++)); do - echo -n "../" - done - - # Climb down the remaining components of the backupdir location. - for ((x = base; x < $((${#bdirtoks[@]} - 1)); x++)); do - echo -n "${bdirtoks[$x]}/" - done - - # In the event there were no directories left in the backupdir above to - # traverse down, just add a newline. Otherwise at this point, there is - # one remaining directory component in the backupdir to navigate. - if (("$base" < "${#bdirtoks[@]}")); then - echo -e "${bdirtoks[$((${#bdirtoks[@]} - 1))]}" - else - echo - fi -} - -# Start the server if it was stopped for the backup. -fn_backup_start_server() { - if [ -n "${startserver}" ]; then - exitbypass=1 - command_start.sh - fn_firstcommand_reset - fi -} - -# Run functions. -fn_backup_check_lockfile -fn_backup_init -fn_backup_stop_server -fn_backup_dir -fn_backup_migrate_olddir -fn_backup_create_lockfile -fn_backup_compression -fn_backup_prune -fn_backup_start_server - -core_exit.sh diff --git a/lgsm/functions/command_check_update.sh b/lgsm/functions/command_check_update.sh deleted file mode 100644 index b2647e2a16..0000000000 --- a/lgsm/functions/command_check_update.sh +++ /dev/null @@ -1,39 +0,0 @@ -#!/bin/bash -# LinuxGSM command_check_update.sh module -# Author: Daniel Gibbs -# Contributors: http://linuxgsm.com/contrib -# Website: https://linuxgsm.com -# Description: Handles updating of servers. - -commandname="CHECK-UPDATE" -commandaction="Check for Update" -functionselfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")" -fn_firstcommand_set - -fn_print_dots "" -check.sh -core_logs.sh - -if [ "${shortname}" == "ts3" ]; then - update_ts3.sh -elif [ "${shortname}" == "mc" ]; then - update_minecraft.sh -elif [ "${shortname}" == "mcb" ]; then - update_minecraft_bedrock.sh -elif [ "${shortname}" == "pmc" ] || [ "${shortname}" == "vpmc" ] || [ "${shortname}" == "wmc" ]; then - update_papermc.sh -elif [ "${shortname}" == "fctr" ]; then - update_factorio.sh -elif [ "${shortname}" == "mta" ]; then - update_mta.sh -elif [ "${shortname}" == "jk2" ]; then - update_jediknight2.sh -elif [ "${shortname}" == "vints" ]; then - update_vintagestory.sh -elif [ "${shortname}" == "ut99" ]; then - update_ut99.sh -else - update_steamcmd.sh -fi - -core_exit.sh diff --git a/lgsm/functions/command_console.sh b/lgsm/functions/command_console.sh deleted file mode 100644 index 4f09776b8d..0000000000 --- a/lgsm/functions/command_console.sh +++ /dev/null @@ -1,58 +0,0 @@ -#!/bin/bash -# LinuxGSM command_console.sh module -# Author: Daniel Gibbs -# Contributors: http://linuxgsm.com/contrib -# Website: https://linuxgsm.com -# Description: Gives access to the server tmux console. - -commandname="CONSOLE" -commandaction="Access console" -functionselfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")" -fn_firstcommand_set - -check.sh -fn_print_header - -if [ "${consoleverbose}" == "yes" ]; then - echo -e "* Verbose output: ${lightgreen}yes${default}" -elif [ "${consoleverbose}" == "no" ]; then - echo -e "* Verbose output: ${red}no${default}" -else - echo -e "* Verbose output: ${red}unknown${default}" -fi - -if [ "${consoleinteract}" == "yes" ]; then - echo -e "* Interactive output: ${lightgreen}yes${default}" -elif [ "${consoleinteract}" == "no" ]; then - echo -e "* Interactive output: ${red}no${default}" -else - echo -e "* Interactive output: ${red}unknown${default}" -fi -echo "" -fn_print_information_nl "Press \"CTRL+b\" then \"d\" to exit console." -fn_print_warning_nl "Do NOT press CTRL+c to exit." -echo -e "* https://docs.linuxgsm.com/commands/console" -echo -e "" -if ! fn_prompt_yn "Continue?" Y; then - exitcode=0 - core_exit.sh -fi -fn_print_dots "Accessing console" -check_status.sh -if [ "${status}" != "0" ]; then - fn_print_ok_nl "Accessing console" - fn_script_log_pass "Console accessed" - tmux -L "${sessionname}" attach-session -t "${sessionname}" - fn_print_ok_nl "Closing console" - fn_script_log_pass "Console closed" -else - fn_print_error_nl "Server not running" - fn_script_log_error "Failed to access: Server not running" - if fn_prompt_yn "Do you want to start the server?" Y; then - exitbypass=1 - command_start.sh - fn_firstcommand_reset - fi -fi - -core_exit.sh diff --git a/lgsm/functions/command_debug.sh b/lgsm/functions/command_debug.sh deleted file mode 100644 index c6422be651..0000000000 --- a/lgsm/functions/command_debug.sh +++ /dev/null @@ -1,142 +0,0 @@ -#!/bin/bash -# LinuxGSM command_debug.sh module -# Author: Daniel Gibbs -# Contributors: http://linuxgsm.com/contrib -# Website: https://linuxgsm.com -# Description: Runs the server without tmux and directly from the terminal. - -commandname="DEBUG" -commandaction="Debuging" -functionselfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")" -fn_firstcommand_set - -# Trap to remove lockfile on quit. -fn_lockfile_trap() { - # Remove lockfile. - rm -f "${lockdir:?}/${selfname}.lock" - # resets terminal. Servers can sometimes mess up the terminal on exit. - reset - fn_print_dots "Stopping debug" - fn_print_ok_nl "Stopping debug" - fn_script_log_pass "Stopping debug" - # remove trap. - trap - INT - core_exit.sh -} - -check.sh -fix.sh -info_distro.sh -info_game.sh -fn_print_header -{ - echo -e "${lightblue}Distro:\t\t${default}${distroname}" - echo -e "${lightblue}Architecture:\t\t${default}${arch}" - echo -e "${lightblue}Kernel:\t\t${default}${kernel}" - echo -e "${lightblue}Hostname:\t\t${default}${HOSTNAME}" - echo -e "${lightblue}tmux:\t\t${default}${tmuxv}" - echo -e "${lightblue}Avg Load:\t\t${default}${load}" - echo -e "${lightblue}Free Memory:\t\t${default}${physmemfree}" - echo -e "${lightblue}Free Disk:\t\t${default}${availspace}" -} | column -s $'\t' -t - -# glibc required. -if [ -n "${glibc}" ]; then - if [ "${glibc}" == "null" ]; then - # Glibc is not required. - : - elif [ -z "${glibc}" ]; then - echo -e "${lightblue}glibc required:\t${red}UNKNOWN${default}" - elif [ "$(printf '%s\n'${glibc}'\n' ${glibcversion} | sort -V | head -n 1)" != "${glibc}" ]; then - echo -e "${lightblue}glibc required:\t${red}${glibc} ${default}(${red}distro glibc ${glibcversion} too old${default})" - else - echo -e "${lightblue}glibc required:\t${green}${glibc}${default}" - fi -fi - -# Server IP. -echo -e "${lightblue}Game Server IP:\t${default}${ip}:${port}" - -# External server IP. -if [ "${extip}" ]; then - if [ "${ip}" != "${extip}" ]; then - echo -e "${lightblue}Internet IP:\t${default}${extip}:${port}" - fi -fi - -# Server password. -if [ "${serverpassword}" ]; then - echo -e "${lightblue}Server password:\t${default}${serverpassword}" -fi - -fn_reload_startparameters -echo -e "${lightblue}Start parameters:${default}" -if [ "${engine}" == "source" ] || [ "${engine}" == "goldsrc" ]; then - echo -e "${executable} ${startparameters} -debug" -elif [ "${engine}" == "quake" ]; then - echo -e "${executable} ${startparameters} -condebug" -else - echo -e "${preexecutable} ${executable} ${startparameters}" -fi -echo -e "" -echo -e "Use debug for identifying server issues only!" -echo -e "Press CTRL+c to drop out of debug mode." -fn_print_warning_nl "If ${selfname} is already running it will be stopped." -echo -e "" -if ! fn_prompt_yn "Continue?" Y; then - exitcode=0 - core_exit.sh -fi - -fn_print_info_nl "Stopping any running servers" -fn_script_log_info "Stopping any running servers" -exitbypass=1 -command_stop.sh -fn_firstcommand_reset -unset exitbypass -fn_print_dots "Starting debug" -fn_script_log_info "Starting debug" -fn_print_ok_nl "Starting debug" - -# Create lockfile. -date '+%s' > "${lockdir}/${selfname}.lock" -echo "${version}" >> "${lockdir}/${selfname}.lock" -echo "${port}" >> "${lockdir}/${selfname}.lock" -fn_script_log_info "Lockfile generated" -fn_script_log_info "${lockdir}/${selfname}.lock" - -if [ "${shortname}" == "av" ]; then - cd "${systemdir}" || exit -else - cd "${executabledir}" || exit -fi - -# Note: do not add double quotes to ${executable} ${startparameters}. -if [ "${engine}" == "source" ] || [ "${engine}" == "goldsrc" ]; then - eval "${executable} ${startparameters} -debug" -elif [ "${engine}" == "quake" ]; then - eval "${executable} ${startparameters} -condebug" -else - # shellcheck disable=SC2086 - eval "${preexecutable} ${executable} ${startparameters}" -fi - -if [ $? -ne 0 ]; then - fn_print_error_nl "Server has stopped: exit code: $?" - fn_script_log_error "Server has stopped: exit code: $?" - fn_print_error_nl "Press ENTER to exit debug mode" - read -r -else - fn_print_ok_nl "Server has stopped" - fn_script_log_pass "Server has stopped" - fn_print_ok_nl "Press ENTER to exit debug mode" - read -r -fi - -fn_lockfile_trap - -fn_print_dots "Stopping debug" -fn_print_ok_nl "Stopping debug" -fn_script_log_info "Stopping debug" - -core_exit.sh diff --git a/lgsm/functions/command_details.sh b/lgsm/functions/command_details.sh deleted file mode 100644 index 08d9f031b4..0000000000 --- a/lgsm/functions/command_details.sh +++ /dev/null @@ -1,41 +0,0 @@ -#!/bin/bash -# LinuxGSM command_details.sh module -# Author: Daniel Gibbs -# Contributors: http://linuxgsm.com/contrib -# Website: https://linuxgsm.com -# Description: Displays server information. - -commandname="DETAILS" -commandaction="Viewing details" -functionselfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")" -fn_firstcommand_set - -# Run checks and gathers details to display. -check.sh -info_distro.sh -info_game.sh -info_messages.sh -if [ "${querymode}" == "2" ] || [ "${querymode}" == "3" ]; then - for queryip in "${queryips[@]}"; do - query_gamedig.sh - if [ "${querystatus}" == "0" ]; then - break - fi - done -fi -fn_info_message_distro -fn_info_message_server_resource -fn_info_message_gameserver_resource -fn_info_message_gameserver -fn_info_message_script -fn_info_message_backup -# Some game servers do not have parms. -if [ "${shortname}" != "jc2" ] && [ "${shortname}" != "dst" ] && [ "${shortname}" != "pz" ] && [ "${engine}" != "renderware" ]; then - fn_info_message_commandlineparms -fi -fn_info_message_ports_edit -fn_info_message_ports -fn_info_message_select_engine -fn_info_message_statusbottom - -core_exit.sh diff --git a/lgsm/functions/command_dev_clear_functions.sh b/lgsm/functions/command_dev_clear_functions.sh deleted file mode 100644 index 87c77515d3..0000000000 --- a/lgsm/functions/command_dev_clear_functions.sh +++ /dev/null @@ -1,24 +0,0 @@ -#!/bin/bash -# LinuxGSM command_dev_clear_functions.sh module -# Author: Daniel Gibbs -# Contributors: http://linuxgsm.com/contrib -# Website: https://linuxgsm.com -# Description: Deletes the contents of the functions dir. - -commandname="DEV-CLEAR-MODULES" -commandaction="Clearing modules" -functionselfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")" -fn_firstcommand_set - -echo -e "=================================" -echo -e "Clear Functions" -echo -e "=================================" -echo -e "" -if fn_prompt_yn "Do you want to delete all functions?" Y; then - rm -rfv "${functionsdir:?}/"* - rm -rfv "${configdirdefault:?}/"* - fn_script_log_info "Cleared modules directory" - fn_script_log_info "Cleared default config directory" -fi - -core_exit.sh diff --git a/lgsm/functions/command_dev_debug.sh b/lgsm/functions/command_dev_debug.sh deleted file mode 100644 index 19f16d58e2..0000000000 --- a/lgsm/functions/command_dev_debug.sh +++ /dev/null @@ -1,23 +0,0 @@ -#!/bin/bash -# LinuxGSM command_dev_debug.sh module -# Author: Daniel Gibbs -# Contributors: http://linuxgsm.com/contrib -# Website: https://linuxgsm.com -# Description: Dev only: Enables debugging log to be saved to dev-debug.log. - -commandname="DEV-DEBUG" -commandaction="Developer debug" -functionselfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")" -fn_firstcommand_reset - -if [ -f "${rootdir}/.dev-debug" ]; then - rm -f "${rootdir:?}/.dev-debug" - fn_print_ok_nl "Disabled dev-debug" - fn_script_log_info "Disabled dev-debug" -else - date '+%s' > "${rootdir}/.dev-debug" - fn_print_ok_nl "Enabled dev-debug" - fn_script_log_info "Enabled dev-debug" -fi - -core_exit.sh diff --git a/lgsm/functions/command_dev_detect_deps.sh b/lgsm/functions/command_dev_detect_deps.sh deleted file mode 100644 index d16b744189..0000000000 --- a/lgsm/functions/command_dev_detect_deps.sh +++ /dev/null @@ -1,231 +0,0 @@ -#!/bin/bash -# LinuxGSM command_dev_detect_deps.sh module -# Author: Daniel Gibbs -# Contributors: http://linuxgsm.com/contrib -# Website: https://linuxgsm.com -# Description: Detects dependencies the server binary requires. - -commandname="DEV-DETECT-DEPS" -commandaction="Developer detect deps" -functionselfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")" -fn_firstcommand_set - -echo -e "=================================" -echo -e "Dependencies Checker" -echo -e "=================================" -echo -e "Checking directory: " -echo -e "${serverfiles}" -if [ "$(command -v eu-readelf 2> /dev/null)" ]; then - readelf=eu-readelf -elif [ "$(command -v readelf 2> /dev/null)" ]; then - readelf=readelf -else - echo -e "readelf/eu-readelf not installed" -fi -files=$(find "${serverfiles}" | wc -l) -find "${serverfiles}" -type f -print0 \ - | while IFS= read -r -d $'\0' line; do - if [ "${readelf}" == "eu-readelf" ]; then - ${readelf} -d "${line}" 2> /dev/null | grep NEEDED | awk '{ print $4 }' | sed 's/\[//g;s/\]//g' >> "${tmpdir}/.depdetect_readelf" - else - ${readelf} -d "${line}" 2> /dev/null | grep NEEDED | awk '{ print $5 }' | sed 's/\[//g;s/\]//g' >> "${tmpdir}/.depdetect_readelf" - fi - echo -n "${i} / ${files}" $'\r' - ((i++)) - done - -sort "${tmpdir}/.depdetect_readelf" | uniq > "${tmpdir}/.depdetect_readelf_uniq" - -touch "${tmpdir}/.depdetect_centos_list" -touch "${tmpdir}/.depdetect_ubuntu_list" -touch "${tmpdir}/.depdetect_debian_list" - -while read -r lib; do - echo -e "${lib}" - libs_array=(libm.so.6 libc.so.6 libtcmalloc_minimal.so.4 libpthread.so.0 libdl.so.2 libnsl.so.1 libgcc_s.so.1 librt.so.1 ld-linux.so.2 libdbus-glib-1.so.2 libgio-2.0.so.0 libglib-2.0.so.0 libGL.so.1 libgobject-2.0.so.0 libnm-glib.so.4 libnm-util.so.2) - for lib_file in "${libs_array[@]}"; do - if [ "${lib}" == "${lib_file}" ]; then - echo -e "glibc.i686" >> "${tmpdir}/.depdetect_centos_list" - echo -e "lib32gcc1" >> "${tmpdir}/.depdetect_ubuntu_list" - echo -e "lib32gcc1" >> "${tmpdir}/.depdetect_debian_list" - libdetected=1 - fi - done - - libs_array=(libawt.so libjava.so libjli.so libjvm.so libnet.so libnio.so libverify.so) - for lib_file in "${libs_array[@]}"; do - if [ "${lib}" == "${lib_file}" ]; then - echo -e "java-1.8.0-openjdk" >> "${tmpdir}/.depdetect_centos_list" - echo -e "default-jre" >> "${tmpdir}/.depdetect_ubuntu_list" - echo -e "default-jre" >> "${tmpdir}/.depdetect_debian_list" - libdetected=1 - fi - done - - libs_array=(libtier0.so libtier0_srv.so libvstdlib_srv.so Core.so libvstdlib.so libtier0_s.so Editor.so Engine.so liblua.so libsteam_api.so ld-linux-x86-64.so.2 libPhysX3_x86.so libPhysX3Common_x86.so libPhysX3Cooking_x86.so) - for lib_file in "${libs_array[@]}"; do - # Known shared libs what dont requires dependencies. - if [ "${lib}" == "${lib_file}" ]; then - libdetected=1 - fi - done - - if [ "${lib}" == "libstdc++.so.6" ]; then - echo -e "libstdc++.i686" >> "${tmpdir}/.depdetect_centos_list" - echo -e "libstdc++6:i386" >> "${tmpdir}/.depdetect_ubuntu_list" - echo -e "libstdc++6:i386" >> "${tmpdir}/.depdetect_debian_list" - libdetected=1 - elif [ "${lib}" == "libstdc++.so.5" ]; then - echo -e "compat-libstdc++-33.i686" >> "${tmpdir}/.depdetect_centos_list" - echo -e "libstdc++5:i386" >> "${tmpdir}/.depdetect_ubuntu_list" - echo -e "libstdc++5:i386" >> "${tmpdir}/.depdetect_debian_list" - libdetected=1 - elif [ "${lib}" == "libcurl-gnutls.so.4" ]; then - echo -e "libcurl.i686" >> "${tmpdir}/.depdetect_centos_list" - echo -e "libcurl4-gnutls-dev:i386" >> "${tmpdir}/.depdetect_ubuntu_list" - echo -e "libcurl4-gnutls-dev:i386" >> "${tmpdir}/.depdetect_debian_list" - libdetected=1 - elif [ "${lib}" == "libspeex.so.1" ] || [ "${lib}" == "libspeexdsp.so.1" ]; then - echo -e "speex.i686" >> "${tmpdir}/.depdetect_centos_list" - echo -e "speex:i386" >> "${tmpdir}/.depdetect_ubuntu_list" - echo -e "speex:i386" >> "${tmpdir}/.depdetect_debian_list" - libdetected=1 - elif [ "${lib}" == "./libSDL-1.2.so.0" ] || [ "${lib}" == "libSDL-1.2.so.0" ]; then - echo -e "SDL.i686" >> "${tmpdir}/.depdetect_centos_list" - echo -e "libsdl1.2debian" >> "${tmpdir}/.depdetect_ubuntu_list" - echo -e "libsdl1.2debian" >> "${tmpdir}/.depdetect_debian_list" - libdetected=1 - elif [ "${lib}" == "libtbb.so.2" ]; then - echo -e "tbb.i686" >> "${tmpdir}/.depdetect_centos_list" - echo -e "libtbb2" >> "${tmpdir}/.depdetect_ubuntu_list" - echo -e "libtbb2" >> "${tmpdir}/.depdetect_debian_list" - libdetected=1 - - elif [ "${lib}" == "libXrandr.so.2" ]; then - echo -e "libXrandr" >> "${tmpdir}/.depdetect_centos_list" - echo -e "libxrandr2" >> "${tmpdir}/.depdetect_ubuntu_list" - echo -e "libxrandr2" >> "${tmpdir}/.depdetect_debian_list" - libdetected=1 - elif [ "${lib}" == "libXext.so.6" ]; then - echo -e "libXext" >> "${tmpdir}/.depdetect_centos_list" - echo -e "libxext6" >> "${tmpdir}/.depdetect_ubuntu_list" - echo -e "libxext6" >> "${tmpdir}/.depdetect_debian_list" - libdetected=1 - elif [ "${lib}" == "libXtst.so.6" ]; then - echo -e "libXtst" >> "${tmpdir}/.depdetect_centos_list" - echo -e "libxtst6" >> "${tmpdir}/.depdetect_ubuntu_list" - echo -e "libxtst6" >> "${tmpdir}/.depdetect_debian_list" - libdetected=1 - elif [ "${lib}" == "libpulse.so.0" ]; then - echo -e "pulseaudio-libs" >> "${tmpdir}/.depdetect_centos_list" - echo -e "libpulse0" >> "${tmpdir}/.depdetect_ubuntu_list" - echo -e "libpulse0" >> "${tmpdir}/.depdetect_debian_list" - libdetected=1 - elif [ "${lib}" == "libopenal.so.1" ]; then - echo -e "" >> "${tmpdir}/.depdetect_centos_list" - echo -e "libopenal1" >> "${tmpdir}/.depdetect_ubuntu_list" - echo -e "libopenal1" >> "${tmpdir}/.depdetect_debian_list" - libdetected=1 - elif [ "${lib}" == "libgconf-2.so.4" ]; then - echo -e "GConf2" >> "${tmpdir}/.depdetect_centos_list" - echo -e "libgconf2-4" >> "${tmpdir}/.depdetect_ubuntu_list" - echo -e "libgconf2-4" >> "${tmpdir}/.depdetect_debian_list" - libdetected=1 - elif [ "${lib}" == "libz.so.1" ]; then - echo -e "zlib" >> "${tmpdir}/.depdetect_centos_list" - echo -e "zlib1g" >> "${tmpdir}/.depdetect_ubuntu_list" - echo -e "zlib1g" >> "${tmpdir}/.depdetect_debian_list" - libdetected=1 - elif [ "${lib}" == "libatk-1.0.so.0" ]; then - echo -e "atk" >> "${tmpdir}/.depdetect_centos_list" - echo -e "libatk1.0-0" >> "${tmpdir}/.depdetect_ubuntu_list" - echo -e "libatk1.0-0" >> "${tmpdir}/.depdetect_debian_list" - libdetected=1 - elif [ "${lib}" == "libcairo.so.2" ]; then - echo -e "cairo" >> "${tmpdir}/.depdetect_centos_list" - echo -e "libcairo2" >> "${tmpdir}/.depdetect_ubuntu_list" - echo -e "libcairo2" >> "${tmpdir}/.depdetect_debian_list" - libdetected=1 - elif [ "${lib}" == "libfontconfig.so.1" ]; then - echo -e "fontconfig" >> "${tmpdir}/.depdetect_centos_list" - echo -e "libfontconfig1" >> "${tmpdir}/.depdetect_ubuntu_list" - echo -e "libfontconfig1" >> "${tmpdir}/.depdetect_debian_list" - libdetected=1 - elif [ "${lib}" == "libfreetype.so.6" ]; then - echo -e "freetype" >> "${tmpdir}/.depdetect_centos_list" - echo -e "libfreetype6" >> "${tmpdir}/.depdetect_ubuntu_list" - echo -e "libfreetype6" >> "${tmpdir}/.depdetect_debian_list" - libdetected=1 - elif [ "${lib}" == "libc++.so.1" ]; then - echo -e "libcxx" >> "${tmpdir}/.depdetect_centos_list" - echo -e "libc++1" >> "${tmpdir}/.depdetect_ubuntu_list" - echo -e "libc++1" >> "${tmpdir}/.depdetect_debian_list" - libdetected=1 - fi - - if [ "${libdetected}" != "1" ]; then - unknownlib=1 - echo -e "${lib}" >> "${tmpdir}/.depdetect_unknown" - fi - unset libdetected -done < "${tmpdir}/.depdetect_readelf_uniq" - -sort "${tmpdir}/.depdetect_centos_list" | uniq >> "${tmpdir}/.depdetect_centos_list_uniq" -sort "${tmpdir}/.depdetect_ubuntu_list" | uniq >> "${tmpdir}/.depdetect_ubuntu_list_uniq" -sort "${tmpdir}/.depdetect_debian_list" | uniq >> "${tmpdir}/.depdetect_debian_list_uniq" -if [ "${unknownlib}" == "1" ]; then - sort "${tmpdir}/.depdetect_unknown" | uniq >> "${tmpdir}/.depdetect_unknown_uniq" -fi - -awk -vORS='' '{ print $1,$2 }' "${tmpdir}/.depdetect_centos_list_uniq" > "${tmpdir}/.depdetect_centos_line" -awk -vORS='' '{ print $1,$2 }' "${tmpdir}/.depdetect_ubuntu_list_uniq" > "${tmpdir}/.depdetect_ubuntu_line" -awk -vORS='' '{ print $1,$2 }' "${tmpdir}/.depdetect_debian_list_uniq" > "${tmpdir}/.depdetect_debian_line" -echo -e "" -echo -e "" -echo -e "Required Dependencies" -echo -e "=================================" -echo -e "${executable}" -echo -e "" -echo -e "CentOS" -echo -e "=================================" -cat "${tmpdir}/.depdetect_centos_line" -echo -e "" -echo -e "" -echo -e "Ubuntu" -echo -e "=================================" -cat "${tmpdir}/.depdetect_ubuntu_line" -echo -e "" -echo -e "" -echo -e "Debian" -echo -e "=================================" -cat "${tmpdir}/.depdetect_debian_line" -echo -e "" -if [ "${unknownlib}" == "1" ]; then - echo -e "" - echo -e "Unknown shared Library" - echo -e "=================================" - cat "${tmpdir}/.depdetect_unknown" -fi -echo -e "" -echo -e "Required Librarys" -echo -e "=================================" -sort "${tmpdir}/.depdetect_readelf" | uniq -echo -en "\n" -rm -f "${tmpdir:?}/.depdetect_centos_line" -rm -f "${tmpdir:?}/.depdetect_centos_list" -rm -f "${tmpdir:?}/.depdetect_centos_list_uniq" - -rm -f "${tmpdir:?}/.depdetect_debian_line" -rm -f "${tmpdir:?}/.depdetect_debian_list" -rm -f "${tmpdir:?}/.depdetect_debian_list_uniq" - -rm -f "${tmpdir:?}/.depdetect_ubuntu_line" -rm -f "${tmpdir:?}/.depdetect_ubuntu_list" -rm -f "${tmpdir:?}/.depdetect_ubuntu_list_uniq" - -rm -f "${tmpdir:?}/.depdetect_readelf" -rm -f "${tmpdir:?}/.depdetect_readelf_uniq" -rm -f "${tmpdir:?}/.depdetect_unknown" -rm -f "${tmpdir:?}/.depdetect_unknown_uniq" - -core_exit.sh diff --git a/lgsm/functions/command_dev_detect_glibc.sh b/lgsm/functions/command_dev_detect_glibc.sh deleted file mode 100644 index 73280e55d3..0000000000 --- a/lgsm/functions/command_dev_detect_glibc.sh +++ /dev/null @@ -1,92 +0,0 @@ -#!/bin/bash -# LinuxGSM command_dev_detect_glibc.sh module -# Author: Daniel Gibbs -# Contributors: http://linuxgsm.com/contrib -# Website: https://linuxgsm.com -# Description: Automatically detects the version of GLIBC that is required. -# Can check a file or directory recursively. - -commandname="DEV-DETECT-GLIBC" -commandaction="Developer detect glibc" -functionselfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")" -fn_firstcommand_set - -echo -e "=================================" -echo -e "glibc Requirements Checker" -echo -e "=================================" - -if [ ! "$(command -v objdump)" ]; then - fn_print_failure_nl "objdump is missing" - fn_script_log_fatal "objdump is missing" - core_exit.sh -fi - -if [ -z "${serverfiles}" ]; then - dir=$(dirname "$(readlink -f "${BASH_SOURCE[0]}")") -fi - -if [ -d "${serverfiles}" ]; then - echo -e "Checking directory: " - echo -e "${serverfiles}" -elif [ -f "${serverfiles}" ]; then - echo -e "Checking file: " - echo -e "${serverfiles}" -fi -echo -e "" - -glibc_check_dir_array=(steamcmddir serverfiles) -for glibc_check_var in "${glibc_check_dir_array[@]}"; do - if [ "${glibc_check_var}" == "serverfiles" ]; then - glibc_check_dir="${serverfiles}" - glibc_check_name="${gamename}" - elif [ "${glibc_check_var}" == "steamcmddir" ]; then - glibc_check_dir="${steamcmddir}" - glibc_check_name="SteamCMD" - fi - - if [ -d "${glibc_check_dir}" ]; then - glibc_check_files=$(find "${glibc_check_dir}" | wc -l) - find "${glibc_check_dir}" -type f -print0 \ - | while IFS= read -r -d $'\0' line; do - glibcversion=$(objdump -T "${line}" 2> /dev/null | grep -oP "GLIBC[^ ]+" | grep -v GLIBCXX | sort | uniq | sort -r --version-sort | head -n 1) - if [ "${glibcversion}" ]; then - echo -e "${glibcversion}: ${line}" >> "${tmpdir}/detect_glibc_files_${glibc_check_var}.tmp" - fi - objdump -T "${line}" 2> /dev/null | grep -oP "GLIBC[^ ]+" >> "${tmpdir}/detect_glibc_${glibc_check_var}.tmp" - echo -n "${i} / ${glibc_check_files}" $'\r' - ((i++)) - done - echo -e "" - echo -e "" - echo -e "${glibc_check_name} glibc Requirements" - echo -e "=================================" - if [ -f "${tmpdir}/detect_glibc_files_${glibc_check_var}.tmp" ]; then - echo -e "Required glibc" - cat "${tmpdir}/detect_glibc_${glibc_check_var}.tmp" | sort | uniq | sort -r --version-sort | head -1 | tee -a "${tmpdir}/detect_glibc_highest.tmp" - echo -e "" - echo -e "Files requiring GLIBC" - echo -e "Highest verion required: filename" - cat "${tmpdir}/detect_glibc_files_${glibc_check_var}.tmp" - echo -e "" - echo -e "All required GLIBC versions" - cat "${tmpdir}/detect_glibc_${glibc_check_var}.tmp" | sort | uniq | sort -r --version-sort - rm -f "${tmpdir:?}/detect_glibc_${glibc_check_var}.tmp" - rm -f "${tmpdir:?}/detect_glibc_files_${glibc_check_var}.tmp" - else - fn_print_information_nl "glibc is not required" - fi - else - fn_print_information_nl "${glibc_check_name} is not installed" - fi -done -echo -e "" -echo -e "Final glibc Requirement" -echo -e "=================================" -if [ -f "${tmpdir}/detect_glibc_highest.tmp" ]; then - cat "${tmpdir}/detect_glibc_highest.tmp" | sort | uniq | sort -r --version-sort | head -1 - rm -f "${tmpdir:?}/detect_glibc_highest.tmp" -else - fn_print_information_nl "glibc is not required" -fi - -core_exit.sh diff --git a/lgsm/functions/command_dev_detect_ldd.sh b/lgsm/functions/command_dev_detect_ldd.sh deleted file mode 100644 index 43630d4e93..0000000000 --- a/lgsm/functions/command_dev_detect_ldd.sh +++ /dev/null @@ -1,61 +0,0 @@ -#!/bin/bash -# LinuxGSM command_dev_detect_ldd.sh module -# Author: Daniel Gibbs -# Contributors: http://linuxgsm.com/contrib -# Website: https://linuxgsm.com -# Description: Automatically detects required deps using ldd. -# Can check a file or directory recursively. - -commandname="DEV-DETECT-LDD" -commandaction="Developer detect ldd" -functionselfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")" -fn_firstcommand_set - -echo -e "=================================" -echo -e "Shared Object dependencies Checker" -echo -e "=================================" - -if [ -z "${serverfiles}" ]; then - dir=$(dirname "$(readlink -f "${BASH_SOURCE[0]}")") -fi - -if [ -d "${serverfiles}" ]; then - echo -e "Checking directory: " - echo -e "${serverfiles}" -elif [ -f "${serverfiles}" ]; then - echo -e "Checking file: " - echo -e "${serverfiles}" -fi -echo -e "" -touch "${tmpdir}/detect_ldd.tmp" -touch "${tmpdir}/detect_ldd_not_found.tmp" - -files=$(find "${serverfiles}" | wc -l) -find "${serverfiles}" -type f -print0 \ - | while IFS= read -r -d $'\0' line; do - if ldd "${line}" 2> /dev/null | grep -v "not a dynamic executable"; then - echo -e "${line}" >> "${tmpdir}/detect_ldd.tmp" - ldd "${line}" 2> /dev/null | grep -v "not a dynamic executable" >> "${tmpdir}/detect_ldd.tmp" - if ldd "${line}" 2> /dev/null | grep -v "not a dynamic executable" | grep "not found"; then - echo -e "${line}" >> "${tmpdir}/detect_ldd_not_found.tmp" - ldd "${line}" 2> /dev/null | grep -v "not a dynamic executable" | grep "not found" >> "${tmpdir}/detect_ldd_not_found.tmp" - fi - fi - echo -n "$i / $files" $'\r' - ((i++)) - done -echo -e "" -echo -e "" -echo -e "All" -echo -e "=================================" -cat "${tmpdir}/detect_ldd.tmp" - -echo -e "" -echo -e "Not Found" -echo -e "=================================" -cat "${tmpdir}/detect_ldd_not_found.tmp" - -rm -f "${tmpdir:?}/detect_ldd.tmp" -rm -f "${tmpdir:?}/detect_ldd_not_found.tmp" - -core_exit.sh diff --git a/lgsm/functions/command_dev_query_raw.sh b/lgsm/functions/command_dev_query_raw.sh deleted file mode 100644 index 26884b2598..0000000000 --- a/lgsm/functions/command_dev_query_raw.sh +++ /dev/null @@ -1,280 +0,0 @@ -#!/bin/bash -# LinuxGSM command_dev_query_raw.sh module -# Author: Daniel Gibbs -# Contributors: http://linuxgsm.com/contrib -# Website: https://linuxgsm.com -# Description: Raw gamedig output of the server. - -commandname="DEV-QUERY-RAW" -commandaction="Developer query raw" -functionselfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")" -fn_firstcommand_set - -check.sh -info_game.sh -info_distro.sh -info_messages.sh - -echo -e "" -echo -e "${lightgreen}Query IP Addresses${default}" -echo -e "==================================================================" -echo -e "" -for queryip in "${queryips[@]}"; do - echo -e "${queryip}" -done -echo -e "" -echo -e "${lightgreen}Game Server Ports${default}" -echo -e "==================================================================" -{ - echo -e "${lightblue}Port Name \tPort Number \tStatus \tTCP \tUDP${default}" - if [ -v port ]; then - echo -e "Game: \t${port} \t$(ss -tupl | grep -c ${port}) \t$(ss -tupl | grep ${port} | grep tcp | awk '{ print $2 }') \t$(ss -tupl | grep ${port} | grep udp | awk '{ print $2 }')" - else - echo -e "Game:" - fi - if [ "${shortname}" == "rw" ]; then - if [ -v port2 ]; then - echo -e "Game+1: \t${port2} \t$(ss -tupl | grep -c ${port}) \t$(ss -tupl | grep ${port2} | grep tcp | awk '{ print $2 }') \t$(ss -tupl | grep ${port2} | grep udp | awk '{ print $2 }')" - else - echo -e "Game+1:" - fi - - if [ -v port3 ]; then - echo -e "Game+2: \t${port3} \t$(ss -tupl | grep -c ${port}) \t$(ss -tupl | grep ${port3} | grep tcp | awk '{ print $2 }') \t$(ss -tupl | grep ${port3} | grep udp | awk '{ print $2 }')" - else - echo -e "Game+2:" - fi - - if [ -v port4 ]; then - echo -e "Game+3: \t${port4} \t$(ss -tupl | grep -c ${port}) \t$(ss -tupl | grep ${port4} | grep tcp | awk '{ print $2 }') \t$(ss -tupl | grep ${port4} | grep udp | awk '{ print $2 }')" - else - echo -e "Game+3:" - fi - fi - - if [ -v port401 ]; then - echo -e "Game+400: \t${port401} \t$(ss -tupl | grep -c ${port401}) \t$(ss -tupl | grep ${port401} | grep tcp | awk '{ print $2 }') \t$(ss -tupl | grep ${port401} | grep udp | awk '{ print $2 }')" - else - echo -e "Game+400:" - fi - - if [ -v portipv6 ]; then - echo -e "Game ipv6: \t${portipv6} \t$(ss -tupl | grep -c ${portipv6}) \t$(ss -tupl | grep ${portipv6} | grep tcp | awk '{ print $2 }') \t$(ss -tupl | grep ${portipv6} | grep udp | awk '{ print $2 }')" - else - echo -e "Game ipv6:" - fi - - if [ -v queryport ]; then - echo -e "Query: \t${queryport} \t$(ss -tupl | grep -c ${queryport}) \t$(ss -tupl | grep ${queryport} | grep tcp | awk '{ print $2 }') \t$(ss -tupl | grep ${queryport} | grep udp | awk '{ print $2 }')" - else - echo -e "Query:" - fi - - if [ -v httpport ]; then - echo -e "HTTP: \t${httpport} \t$(ss -tupl | grep -c ${httpport}) \t$(ss -tupl | grep ${httpport} | grep tcp | awk '{ print $2 }') \t$(ss -tupl | grep ${httpport} | grep udp | awk '{ print $2 }')" - else - echo -e "HTTP:" - fi - - if [ -v httpqueryport ]; then - echo -e "HTTP Query: \t${httpqueryport} \t$(ss -tupl | grep -c ${httpqueryport}) \t$(ss -tupl | grep ${httpqueryport} | grep tcp | awk '{ print $2 }') \t$(ss -tupl | grep ${httpqueryport} | grep udp | awk '{ print $2 }')" - else - echo -e "HTTP Query:" - fi - - if [ -v webadminport ]; then - echo -e "Web Admin: \t${webadminport} \t$(ss -tupl | grep -c ${webadminport}) \t$(ss -tupl | grep ${webadminport} | grep tcp | awk '{ print $2 }') \t$(ss -tupl | grep ${webadminport} | grep udp | awk '{ print $2 }')" - else - echo -e "Web Admin:" - fi - - if [ -v clientport ]; then - echo -e "Client: \t${clientport} \t$(ss -tupl | grep -c ${clientport}) \t$(ss -tupl | grep ${clientport} | grep tcp | awk '{ print $2 }') \t$(ss -tupl | grep ${clientport} | grep udp | awk '{ print $2 }')" - else - echo -e "Client:" - fi - - if [ -v rconport ]; then - echo -e "RCON: \t${rconport} \t$(ss -tupl | grep -c ${rconport}) \t$(ss -tupl | grep ${rconport} | grep tcp | awk '{ print $2 }') \t$(ss -tupl | grep ${rconport} | grep udp | awk '{ print $2 }')" - else - echo -e "RCON:" - fi - - if [ -v rawport ]; then - echo -e "RAW UDP Socket: \t${rawport} \t$(ss -tupl | grep -c ${rawport}) \t$(ss -tupl | grep ${rawport} | grep tcp | awk '{ print $2 }') \t$(ss -tupl | grep ${rawport} | grep udp | awk '{ print $2 }')" - else - echo -e "RAW UDP Socket:" - fi - - if [ -v masterport ]; then - echo -e "Game: Master: \t${masterport} \t$(ss -tupl | grep -c ${masterport}) \t$(ss -tupl | grep ${masterport} | grep tcp | awk '{ print $2 }') \t$(ss -tupl | grep ${masterport} | grep udp | awk '{ print $2 }')" - else - echo -e "Game: Master:" - fi - - if [ -v steamport ]; then - echo -e "Steam: \t${steamport} \t$(ss -tupl | grep -c ${steamport}) \t$(ss -tupl | grep ${steamport} | grep tcp | awk '{ print $2 }') \t$(ss -tupl | grep ${steamport} | grep udp | awk '{ print $2 }')" - else - echo -e "Steam:" - fi - - if [ -v steamauthport ]; then - echo -e "Steam: Auth: \t${steamauthport} \t$(ss -tupl | grep -c ${steamauthport}) \t$(ss -tupl | grep ${steamauthport} | grep tcp | awk '{ print $2 }') \t$(ss -tupl | grep ${steamauthport} | grep udp | awk '{ print $2 }')" - else - echo -e "Steam: Auth:" - fi - - if [ -v steammasterport ]; then - echo -e "Steam: Master: \t${steammasterport} \t$(ss -tupl | grep -c ${steammasterport}) \t$(ss -tupl | grep ${steammasterport} | grep tcp | awk '{ print $2 }') \t$(ss -tupl | grep ${steammasterport} | grep udp | awk '{ print $2 }')" - else - echo -e "Steam: Master:" - fi - - if [ -v steamqueryport ]; then - echo -e "Steam: Query: \t${steamqueryport} \t$(ss -tupl | grep -c ${steamqueryport}) \t$(ss -tupl | grep ${steamqueryport} | grep tcp | awk '{ print $2 }') \t$(ss -tupl | grep ${steamqueryport} | grep udp | awk '{ print $2 }')" - else - echo -e "Steam: Query:" - fi - if [ -v beaconport ]; then - echo -e "Beacon: \t${beaconport} \t$(ss -tupl | grep -c ${beaconport}) \t$(ss -tupl | grep ${beaconport} | grep tcp | awk '{ print $2 }') \t$(ss -tupl | grep ${beaconport} | grep udp | awk '{ print $2 }')" - else - echo -e "Beacon:" - fi - - if [ -v appport ]; then - echo -e "App: \t${appport} \t$(ss -tupl | grep -c ${appport}) \t$(ss -tupl | grep ${appport} | grep tcp | awk '{ print $2 }') \t$(ss -tupl | grep ${appport} | grep udp | awk '{ print $2 }')" - else - echo -e "App:" - fi - - if [ -v telnetport ]; then - echo -e "Telnet: \t${telnetport} \t$(ss -tupl | grep -c ${telnetport}) \t$(ss -tupl | grep ${telnetport} | grep tcp | awk '{ print $2 }') \t$(ss -tupl | grep ${telnetport} | grep udp | awk '{ print $2 }')" - else - echo -e "Telnet:" - fi - - if [ -v sourcetvport ]; then - echo -e "SourceTV: \t${sourcetvport} \t$(ss -tupl | grep -c ${sourcetvport}) \t$(ss -tupl | grep ${sourcetvport} | grep tcp | awk '{ print $2 }') \t$(ss -tupl | grep ${sourcetvport} | grep udp | awk '{ print $2 }')" - else - echo -e "SourceTV:" - fi - - if [ -v fileport ]; then - echo -e "File: \t${fileport} \t$(ss -tupl | grep -c ${fileport}) \t$(ss -tupl | grep ${fileport} | grep tcp | awk '{ print $2 }') \t$(ss -tupl | grep ${fileport} | grep udp | awk '{ print $2 }')" - else - echo -e "File:" - fi - - if [ -v udplinkport ]; then - echo -e "UDP Link: \t${udplinkport} \t$(ss -tupl | grep -c ${udplinkport}) \t$(ss -tupl | grep ${udplinkport} | grep tcp | awk '{ print $2 }') \t$(ss -tupl | grep ${udplinkport} | grep udp | awk '{ print $2 }')" - else - echo -e "UDP Link:" - fi - - if [ -v voiceport ]; then - echo -e "Voice: \t${voiceport} \t$(ss -tupl | grep -c ${voiceport}) \t$(ss -tupl | grep ${voiceport} | grep tcp | awk '{ print $2 }') \t$(ss -tupl | grep ${voiceport} | grep udp | awk '{ print $2 }')" - else - echo -e "Voice:" - fi - - if [ -v voiceunusedport ]; then - echo -e "Voice (Unused): \t${voiceunusedport} \t$(ss -tupl | grep -c ${voiceunusedport}) \t$(ss -tupl | grep ${voiceunusedport} | grep tcp | awk '{ print $2 }') \t$(ss -tupl | grep ${voiceunusedport} | grep udp | awk '{ print $2 }')" - else - echo -e "Voice (Unused):" - fi - - if [ -v battleeyeport ]; then - echo -e "BattleEye: \t${battleeyeport} \t$(ss -tupl | grep -c ${battleeyeport}) \t$(ss -tupl | grep ${battleeyeport} | grep tcp | awk '{ print $2 }') \t$(ss -tupl | grep ${battleeyeport} | grep udp | awk '{ print $2 }')" - else - echo -e "BattleEye:" - fi - - if [ -v statsport ]; then - echo -e "Stats: \t${battleeyeport} \t$(ss -tupl | grep -c ${statsport}) \t$(ss -tupl | grep ${statsport} | grep tcp | awk '{ print $2 }') \t$(ss -tupl | grep ${statsport} | grep udp | awk '{ print $2 }')" - else - echo -e "Stats:" - fi - -} | column -s $'\t' -t -echo -e "" -echo -e "${lightgreen}SS Output${default}" -echo -e "=================================" -fn_info_message_ports -echo -e "" -echo -e "${lightgreen}Query Port - Raw Output${default}" -echo -e "==================================================================" -echo -e "" -echo -e "PORT: ${port}" -echo -e "QUERY PORT: ${queryport}" -echo -e "" -echo -e "${lightgreen}Gamedig Raw Output${default}" -echo -e "=================================" -echo -e "" -if [ ! "$(command -v gamedig 2> /dev/null)" ]; then - fn_print_failure_nl "gamedig not installed" -fi -if [ ! "$(command -v jq 2> /dev/null)" ]; then - fn_print_failure_nl "jq not installed" -fi -for queryip in "${queryips[@]}"; do - query_gamedig.sh - echo -e "${gamedigcmd}" - echo"" - echo "${gamedigraw}" | jq -done -echo -e "" -echo -e "${lightgreen}gsquery Raw Output${default}" -echo -e "=================================" -echo -e "" -for queryip in "${queryips[@]}"; do - echo -e "./query_gsquery.py -a \"${queryip}\" -p \"${queryport}\" -e \"${querytype}\"" - echo -e "" - if [ ! -f "${functionsdir}/query_gsquery.py" ]; then - fn_fetch_file_github "lgsm/functions" "query_gsquery.py" "${functionsdir}" "chmodx" "norun" "noforce" "nohash" - fi - "${functionsdir}"/query_gsquery.py -a "${queryip}" -p "${queryport}" -e "${querytype}" -done -echo -e "" -echo -e "${lightgreen}TCP Raw Output${default}" -echo -e "=================================" -echo -e "" -for queryip in "${queryips[@]}"; do - echo -e "bash -c 'exec 3<> /dev/tcp/'${queryip}'/'${queryport}''" - echo -e "" - timeout 3 bash -c 'exec 3<> /dev/tcp/'${queryip}'/'${queryport}'' - querystatus="$?" - echo -e "" - if [ "${querystatus}" == "0" ]; then - echo -e "TCP query PASS" - else - echo -e "TCP query FAIL" - fi -done -echo -e "" -echo -e "${lightgreen}Game Port - Raw Output${default}" -echo -e "==================================================================" -echo -e "" -echo -e "${lightgreen}TCP Raw Output${default}" -echo -e "=================================" -echo -e "" -for queryip in "${queryips[@]}"; do - echo -e "bash -c 'exec 3<> /dev/tcp/'${queryip}'/'${port}''" - echo -e "" - timeout 3 bash -c 'exec 3<> /dev/tcp/'${queryip}'/'${port}'' - querystatus="$?" - echo -e "" - if [ "${querystatus}" == "0" ]; then - echo -e "TCP query PASS" - else - echo -e "TCP query FAIL" - fi -done -echo -e "" -echo -e "${lightgreen}Steam Master Server Response${default}" -echo -e "==================================================================" -echo -e "" -echo -e "Response: ${displaymasterserver}" -echo -e "" - -exitcode=0 -core_exit.sh diff --git a/lgsm/functions/command_donate.sh b/lgsm/functions/command_donate.sh deleted file mode 100644 index f00a4d7025..0000000000 --- a/lgsm/functions/command_donate.sh +++ /dev/null @@ -1,26 +0,0 @@ -#!/bin/bash -# LinuxGSM command_donate.sh module -# Author: Daniel Gibbs -# Contributors: http://linuxgsm.com/contrib -# Website: https://linuxgsm.com -# Description: Shows ways to donate. - -commandname="DONATE" -commandaction="Donate" -functionselfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")" -fn_firstcommand_set - -fn_print_ascii_logo -echo -e "${lightyellow}Support LinuxGSM${default}" -echo -e "=================================" -echo -e "" -echo -e "Been using LinuxGSM?" -echo -e "Consider donating to support development." -echo -e "" -echo -e "* ${lightblue}Patreon:${default} https://linuxgsm.com/patreon" -echo -e "* ${lightblue}GitHub:${default} https://github.com/sponsors/dgibbs64" -echo -e "* ${lightblue}PayPal:${default} https://linuxgsm.com/paypal" -echo -e "" -echo -e "LinuxGSM est. 2012" - -core_exit.sh diff --git a/lgsm/functions/command_fastdl.sh b/lgsm/functions/command_fastdl.sh deleted file mode 100644 index 78abd650a1..0000000000 --- a/lgsm/functions/command_fastdl.sh +++ /dev/null @@ -1,442 +0,0 @@ -#!/bin/bash -# LinuxGSM command_fastdl.sh module -# Author: Daniel Gibbs -# Contributors: http://linuxgsm.com/contrib -# Website: https://linuxgsm.com -# Description: Creates a FastDL directory. - -commandname="FASTDL" -commandaction="Fastdl" -functionselfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")" -fn_firstcommand_set - -check.sh - -# Directories. -if [ -z "${webdir}" ]; then - webdir="${rootdir}/public_html" -fi -fastdldir="${webdir}/fastdl" -addonsdir="${systemdir}/addons" -# Server lua autorun dir, used to autorun lua on client connect to the server. -luasvautorundir="${systemdir}/lua/autorun/server" -luafastdlfile="lgsm_cl_force_fastdl.lua" -luafastdlfullpath="${luasvautorundir}/${luafastdlfile}" - -# Check if bzip2 is installed. -if [ ! "$(command -v bzip2 2> /dev/null)" ]; then - fn_print_fail "bzip2 is not installed" - fn_script_log_fatal "bzip2 is not installed" - core_exit.sh -fi - -# Header -fn_print_header -echo -e "More info: https://docs.linuxgsm.com/commands/fastdl" -echo -e "" - -# Prompts user for FastDL creation settings. -echo -e "${commandaction} setup" -echo -e "=================================" - -# Prompt for clearing old files if directory was already here. -if [ -d "${fastdldir}" ]; then - fn_print_warning_nl "FastDL directory already exists." - echo -e "${fastdldir}" - echo -e "" - if fn_prompt_yn "Overwrite existing directory?" Y; then - fn_script_log_info "Overwrite existing directory: YES" - else - core_exit.sh - fi -fi - -# Garry's Mod Specific. -if [ "${shortname}" == "gmod" ]; then - # Prompt for download enforcer, which is using a .lua addfile resource generator. - if fn_prompt_yn "Force clients to download files?" Y; then - luaresource="on" - fn_script_log_info "Force clients to download files: YES" - else - luaresource="off" - fn_script_log_info "Force clients to download filesr: NO" - fi -fi - -# Clears any fastdl directory content. -fn_clear_old_fastdl() { - # Clearing old FastDL. - if [ -d "${fastdldir}" ]; then - echo -en "clearing existing FastDL directory ${fastdldir}..." - rm -rf "${fastdldir:?}" - exitcode=$? - if [ "${exitcode}" != 0 ]; then - fn_print_fail_eol_nl - fn_script_log_fatal "Clearing existing FastDL directory ${fastdldir}" - core_exit.sh - else - fn_print_ok_eol_nl - fn_script_log_pass "Clearing existing FastDL directory ${fastdldir}" - fi - fi -} - -fn_fastdl_dirs() { - # Check and create directories. - if [ ! -d "${webdir}" ]; then - echo -en "creating web directory ${webdir}..." - mkdir -p "${webdir}" - exitcode=$? - if [ "${exitcode}" != 0 ]; then - fn_print_fail_eol_nl - fn_script_log_fatal "Creating web directory ${webdir}" - core_exit.sh - else - fn_print_ok_eol_nl - fn_script_log_pass "Creating web directory ${webdir}" - fi - fi - if [ ! -d "${fastdldir}" ]; then - echo -en "creating fastdl directory ${fastdldir}..." - mkdir -p "${fastdldir}" - exitcode=$? - if [ "${exitcode}" != 0 ]; then - fn_print_fail_eol_nl - fn_script_log_fatal "Creating fastdl directory ${fastdldir}" - core_exit.sh - else - fn_print_ok_eol_nl - fn_script_log_pass "Creating fastdl directory ${fastdldir}" - fi - fi -} - -# Using this gist https://gist.github.com/agunnerson-ibm/efca449565a3e7356906 -fn_human_readable_file_size() { - local abbrevs=( - $((1 << 60)):ZB - $((1 << 50)):EB - $((1 << 40)):TB - $((1 << 30)):GB - $((1 << 20)):MB - $((1 << 10)):KB - $((1)):bytes - ) - - local bytes="${1}" - local precision="${2}" - - if [[ "${bytes}" == "1" ]]; then - echo -e "1 byte" - else - for item in "${abbrevs[@]}"; do - local factor="${item%:*}" - local abbrev="${item#*:}" - if [[ "${bytes}" -ge "${factor}" ]]; then - size=$(bc -l <<< "${bytes} / ${factor}") - printf "%.*f %s\n" "${precision}" "${size}" "${abbrev}" - break - fi - done - fi -} - -# Provides info about the fastdl directory content and prompts for confirmation. -fn_fastdl_preview() { - # Remove any file list. - if [ -f "${tmpdir}/fastdl_files_to_compress.txt" ]; then - rm -f "${tmpdir:?}/fastdl_files_to_compress.txt" - fi - echo -e "analysing required files" - fn_script_log_info "Analysing required files" - # Garry's Mod - if [ "${shortname}" == "gmod" ]; then - cd "${systemdir}" || exit - allowed_extentions_array=("*.ain" "*.bsp" "*.mdl" "*.mp3" "*.ogg" "*.otf" "*.pcf" "*.phy" "*.png" "*.svg" "*.vtf" "*.vmt" "*.vtx" "*.vvd" "*.ttf" "*.wav") - for allowed_extention in "${allowed_extentions_array[@]}"; do - fileswc=0 - tput sc - while read -r ext; do - ((fileswc++)) - tput rc - tput el - echo -e "gathering ${allowed_extention} : ${fileswc}..." - echo -e "${ext}" >> "${tmpdir}/fastdl_files_to_compress.txt" - done < <(find . -type f -iname "${allowed_extention}") - if [ ${fileswc} != 0 ]; then - fn_print_ok_eol_nl - else - fn_print_info_eol_nl - fi - done - # Source engine - else - fastdl_directories_array=("maps" "materials" "models" "particles" "sound" "resources") - for directory in "${fastdl_directories_array[@]}"; do - if [ -d "${systemdir}/${directory}" ]; then - if [ "${directory}" == "maps" ]; then - local allowed_extentions_array=("*.bsp" "*.ain" "*.nav" "*.jpg" "*.txt") - elif [ "${directory}" == "materials" ]; then - local allowed_extentions_array=("*.vtf" "*.vmt" "*.vbf" "*.png" "*.svg") - elif [ "${directory}" == "models" ]; then - local allowed_extentions_array=("*.vtx" "*.vvd" "*.mdl" "*.phy" "*.jpg" "*.png" "*.vmt" "*.vtf") - elif [ "${directory}" == "particles" ]; then - local allowed_extentions_array=("*.pcf") - elif [ "${directory}" == "sound" ]; then - local allowed_extentions_array=("*.wav" "*.mp3" "*.ogg") - fi - for allowed_extention in "${allowed_extentions_array[@]}"; do - fileswc=0 - tput sc - while read -r ext; do - ((fileswc++)) - tput rc - tput el - echo -e "gathering ${directory} ${allowed_extention} : ${fileswc}..." - echo -e "${ext}" >> "${tmpdir}/fastdl_files_to_compress.txt" - done < <(find "${systemdir}/${directory}" -type f -iname "${allowed_extention}") - tput rc - tput el - echo -e "gathering ${directory} ${allowed_extention} : ${fileswc}..." - if [ ${fileswc} != 0 ]; then - fn_print_ok_eol_nl - else - fn_print_info_eol_nl - fi - done - fi - done - fi - if [ -f "${tmpdir}/fastdl_files_to_compress.txt" ]; then - echo -e "calculating total file size..." - fn_sleep_time - totalfiles=$(wc -l < "${tmpdir}/fastdl_files_to_compress.txt") - # Calculates total file size. - while read -r dufile; do - filesize=$(stat -c %s "${dufile}") - filesizetotal=$((filesizetotal + filesize)) - exitcode=$? - if [ "${exitcode}" != 0 ]; then - fn_print_fail_eol_nl - fn_script_log_fatal "Calculating total file size." - core_exit.sh - fi - done < "${tmpdir}/fastdl_files_to_compress.txt" - else - fn_print_fail_eol_nl "generating file list" - fn_script_log_fatal "Generating file list." - core_exit.sh - fi - echo -e "about to compress ${totalfiles} files, total size $(fn_human_readable_file_size ${filesizetotal} 0)" - fn_script_log_info "${totalfiles} files, total size $(fn_human_readable_file_size ${filesizetotal} 0)" - rm -f "${tmpdir:?}/fastdl_files_to_compress.txt" - if ! fn_prompt_yn "Continue?" Y; then - fn_script_log "User exited" - core_exit.sh - fi -} - -# Builds Garry's Mod fastdl directory content. -fn_fastdl_gmod() { - cd "${systemdir}" || exit - for allowed_extention in "${allowed_extentions_array[@]}"; do - fileswc=0 - tput sc - while read -r fastdlfile; do - ((fileswc++)) - tput rc - tput el - echo -e "copying ${allowed_extention} : ${fileswc}..." - cp --parents "${fastdlfile}" "${fastdldir}" - exitcode=$? - if [ "${exitcode}" != 0 ]; then - fn_print_fail_eol_nl - fn_script_log_fatal "Copying ${fastdlfile} > ${fastdldir}" - core_exit.sh - else - fn_script_log_pass "Copying ${fastdlfile} > ${fastdldir}" - fi - done < <(find . -type f -iname "${allowed_extention}") - if [ ${fileswc} != 0 ]; then - fn_print_ok_eol_nl - fi - done - # Correct addons directory structure for FastDL. - if [ -d "${fastdldir}/addons" ]; then - echo -en "updating addons file structure..." - cp -Rf "${fastdldir}"/addons/*/* "${fastdldir}" - exitcode=$? - if [ "${exitcode}" != 0 ]; then - fn_print_fail_eol_nl - fn_script_log_fatal "Updating addons file structure" - core_exit.sh - else - fn_print_ok_eol_nl - fn_script_log_pass "Updating addons file structure" - fi - # Clear addons directory in fastdl. - echo -en "clearing addons dir from fastdl dir..." - fn_sleep_time - rm -rf "${fastdldir:?}/addons" - exitcode=$? - if [ "${exitcode}" != 0 ]; then - fn_print_fail_eol_nl - fn_script_log_fatal "Clearing addons dir from fastdl dir" - core_exit.sh - else - fn_print_ok_eol_nl - fn_script_log_pass "Clearing addons dir from fastdl dir" - fi - fi - # Correct content that may be into a lua directory by mistake like some darkrpmodification addons. - if [ -d "${fastdldir}/lua" ]; then - echo -en "correcting DarkRP files..." - fn_sleep_time - cp -Rf "${fastdldir}/lua/"* "${fastdldir}" - exitcode=$? - if [ "${exitcode}" != 0 ]; then - fn_print_fail_eol_nl - fn_script_log_fatal "Correcting DarkRP files" - core_exit.sh - else - fn_print_ok_eol_nl - fn_script_log_pass "Correcting DarkRP files" - fi - fi - if [ -f "${tmpdir}/fastdl_files_to_compress.txt" ]; then - totalfiles=$(wc -l < "${tmpdir}/fastdl_files_to_compress.txt") - # Calculates total file size. - while read -r dufile; do - filesize=$(du -b "${dufile}" | awk '{ print $1 }') - filesizetotal=$((filesizetotal + filesize)) - done < "${tmpdir}/fastdl_files_to_compress.txt" - fi -} - -fn_fastdl_source() { - for directory in "${fastdl_directories_array[@]}"; do - if [ -d "${systemdir}/${directory}" ]; then - if [ "${directory}" == "maps" ]; then - local allowed_extentions_array=("*.bsp" "*.ain" "*.nav" "*.jpg" "*.txt") - elif [ "${directory}" == "materials" ]; then - local allowed_extentions_array=("*.vtf" "*.vmt" "*.vbf" "*.png" "*.svg") - elif [ "${directory}" == "models" ]; then - local allowed_extentions_array=("*.vtx" "*.vvd" "*.mdl" "*.phy" "*.jpg" "*.png") - elif [ "${directory}" == "particles" ]; then - local allowed_extentions_array=("*.pcf") - elif [ "${directory}" == "sound" ]; then - local allowed_extentions_array=("*.wav" "*.mp3" "*.ogg") - fi - for allowed_extention in "${allowed_extentions_array[@]}"; do - fileswc=0 - tput sc - while read -r fastdlfile; do - ((fileswc++)) - tput rc - tput el - echo -e "copying ${directory} ${allowed_extention} : ${fileswc}..." - fn_sleep_time - # get relative path of file in the dir - tmprelfilepath="${fastdlfile#"${systemdir}/"}" - copytodir="${tmprelfilepath%/*}" - # create relative path for fastdl - if [ ! -d "${fastdldir}/${copytodir}" ]; then - mkdir -p "${fastdldir}/${copytodir}" - fi - cp "${fastdlfile}" "${fastdldir}/${copytodir}" - exitcode=$? - if [ "${exitcode}" != 0 ]; then - fn_print_fail_eol_nl - fn_script_log_fatal "Copying ${fastdlfile} > ${fastdldir}/${copytodir}" - core_exit.sh - else - fn_script_log_pass "Copying ${fastdlfile} > ${fastdldir}/${copytodir}" - fi - done < <(find "${systemdir}/${directory}" -type f -iname "${allowed_extention}") - if [ ${fileswc} != 0 ]; then - fn_print_ok_eol_nl - fi - done - fi - done -} - -# Builds the fastdl directory content. -fn_fastdl_build() { - # Copy all needed files for FastDL. - echo -e "copying files to ${fastdldir}" - fn_script_log_info "Copying files to ${fastdldir}" - if [ "${shortname}" == "gmod" ]; then - fn_fastdl_gmod - fn_fastdl_gmod_dl_enforcer - else - fn_fastdl_source - fi -} - -# Generate lua file that will force download any file into the FastDL directory. -fn_fastdl_gmod_dl_enforcer() { - # Clear old lua file. - if [ -f "${luafastdlfullpath}" ]; then - echo -en "removing existing download enforcer: ${luafastdlfile}..." - rm -f "${luafastdlfullpath:?}" - exitcode=$? - if [ "${exitcode}" != 0 ]; then - fn_print_fail_eol_nl - fn_script_log_fatal "Removing existing download enforcer ${luafastdlfullpath}" - core_exit.sh - else - fn_print_ok_eol_nl - fn_script_log_pass "Removing existing download enforcer ${luafastdlfullpath}" - fi - fi - # Generate new one if user said yes. - if [ "${luaresource}" == "on" ]; then - echo -en "creating new download enforcer: ${luafastdlfile}..." - touch "${luafastdlfullpath}" - # Read all filenames and put them into a lua file at the right path. - while read -r line; do - echo -e "resource.AddFile( \"${line}\" )" >> "${luafastdlfullpath}" - done < <(find "${fastdldir:?}" \( -type f ! -name "*.bz2" \) -printf '%P\n') - exitcode=$? - if [ "${exitcode}" != 0 ]; then - fn_print_fail_eol_nl - fn_script_log_fatal "Creating new download enforcer ${luafastdlfullpath}" - core_exit.sh - else - fn_print_ok_eol_nl - fn_script_log_pass "Creating new download enforcer ${luafastdlfullpath}" - fi - fi -} - -# Compresses FastDL files using bzip2. -fn_fastdl_bzip2() { - while read -r filetocompress; do - echo -en "\r\033[Kcompressing ${filetocompress}..." - bzip2 -f "${filetocompress}" - exitcode=$? - if [ "${exitcode}" != 0 ]; then - fn_print_fail_eol_nl - fn_script_log_fatal "Compressing ${filetocompress}" - core_exit.sh - else - fn_script_log_pass "Compressing ${filetocompress}" - fi - done < <(find "${fastdldir:?}" \( -type f ! -name "*.bz2" \)) - fn_print_ok_eol_nl -} - -# Run functions. -fn_fastdl_preview -fn_clear_old_fastdl -fn_fastdl_dirs -fn_fastdl_build -fn_fastdl_bzip2 -# Finished message. -echo -e "FastDL files are located in:" -echo -e "${fastdldir}" -echo -e "FastDL completed" -fn_script_log_info "FastDL completed" - -core_exit.sh diff --git a/lgsm/functions/command_install.sh b/lgsm/functions/command_install.sh deleted file mode 100644 index 19dc59c7ee..0000000000 --- a/lgsm/functions/command_install.sh +++ /dev/null @@ -1,52 +0,0 @@ -#!/bin/bash -# LinuxGSM command_install.sh module -# Author: Daniel Gibbs -# Contributors: http://linuxgsm.com/contrib -# Website: https://linuxgsm.com -# Description: Overall function for the installer. - -commandname="INSTALL" -commandaction="Installing" -functionselfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")" -fn_firstcommand_set - -check.sh -if [ "$(whoami)" == "root" ] && [ ! -f /.dockerenv ]; then - check_deps.sh -else - install_header.sh - install_server_dir.sh - install_logs.sh - check_deps.sh - installflag=1 - # Download and install. - if [ "${shortname}" == "ut2k4" ]; then - install_server_files.sh - install_ut2k4_key.sh - elif [ -z "${appid}" ]; then - install_server_files.sh - elif [ "${appid}" ]; then - install_steamcmd.sh - install_server_files.sh - fi - - # Configuration. - install_config.sh - if [ -v gslt ]; then - install_gslt.sh - elif [ "${shortname}" == "dst" ]; then - install_dst_token.sh - elif [ "${shortname}" == "squad" ]; then - install_squad_license.sh - elif [ "${shortname}" == "ts3" ]; then - install_ts3db.sh - elif [ "${shortname}" == "mta" ]; then - command_install_resources_mta.sh - fn_firstcommand_reset - fi - - fix.sh - install_stats.sh - install_complete.sh -fi -core_exit.sh diff --git a/lgsm/functions/command_install_resources_mta.sh b/lgsm/functions/command_install_resources_mta.sh deleted file mode 100644 index daf0395511..0000000000 --- a/lgsm/functions/command_install_resources_mta.sh +++ /dev/null @@ -1,32 +0,0 @@ -#!/bin/bash -# LinuxGSM command_install_resources_mta.sh module -# Author: Daniel Gibbs -# Contributors: http://linuxgsm.com/contrib -# Website: https://linuxgsm.com -# Description: Installs the default resources for Multi Theft Auto. - -commandname="DEFAULT-RESOURCES" -commandaction="Default Resources" -functionselfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")" -fn_firstcommand_set - -fn_install_resources() { - echo -e "" - echo -e "${lightyellow}Installing Default Resources${default}" - echo -e "=================================" - fn_fetch_file "http://mirror.mtasa.com/mtasa/resources/mtasa-resources-latest.zip" "" "" "" "${tmpdir}" "mtasa-resources-latest.zip" "nochmodx" "norun" "noforce" "nohash" - fn_dl_extract "${tmpdir}" "mtasa-resources-latest.zip" "${resourcesdir}" - echo -e "Default Resources Installed." -} - -fn_print_header - -if [ -z "${autoinstall}" ]; then - fn_print_warning_nl "Installing the default resources with existing resources may cause issues." - if fn_prompt_yn "Do you want to install MTA default resources?" Y; then - fn_install_resources - fi -else - fn_print_warning_nl "Default resources are not installed when using ./${selfname} auto-install." - fn_print_information_nl "To install default resources use ./${selfname} install" -fi diff --git a/lgsm/functions/command_mods_install.sh b/lgsm/functions/command_mods_install.sh deleted file mode 100644 index 0edbe5bc04..0000000000 --- a/lgsm/functions/command_mods_install.sh +++ /dev/null @@ -1,135 +0,0 @@ -#!/bin/bash -# LinuxGSM command_mods_install.sh module -# Author: Daniel Gibbs -# Contributors: http://linuxgsm.com/contrib -# Website: https://linuxgsm.com -# Description: List and installs available mods along with mods_list.sh and mods_core.sh. - -commandname="MODS-INSTALL" -commandaction="Installing mods" -functionselfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")" -fn_firstcommand_set - -check.sh -mods_core.sh - -fn_print_header - -# Displays a list of installed mods. -fn_mods_installed_list -if [ "${installedmodscount}" -gt "0" ]; then - echo -e "Installed addons/mods" - echo -e "=================================" - # Go through all available commands, get details and display them to the user. - for ((llindex = 0; llindex < ${#installedmodslist[@]}; llindex++)); do - # Current mod is the "llindex" value of the array we're going through. - currentmod="${installedmodslist[llindex]}" - fn_mod_get_info - # Display mod info to the user. - echo -e " * ${green}${modcommand}${default}${default}" - done - echo -e "" -fi - -echo -e "Available addons/mods" -echo -e "=================================" -# Display available mods from mods_list.sh. -# Set and reset vars -compatiblemodslistindex=0 -# As long as we're within index values. -while [ "${compatiblemodslistindex}" -lt "${#compatiblemodslist[@]}" ]; do - # Set values for convenience. - displayedmodname="${compatiblemodslist[compatiblemodslistindex]}" - displayedmodcommand="${compatiblemodslist[compatiblemodslistindex + 1]}" - displayedmodsite="${compatiblemodslist[compatiblemodslistindex + 2]}" - displayedmoddescription="${compatiblemodslist[compatiblemodslistindex + 3]}" - # Output mods to the user. - echo -e "${displayedmodname} - ${displayedmoddescription} - ${displayedmodsite}" - echo -e " * ${cyan}${displayedmodcommand}${default}" - # Increment index from the amount of values we just displayed. - let "compatiblemodslistindex+=4" - ((totalmodsavailable++)) -done - -# If no mods are available for a specific game. -if [ -z "${compatiblemodslist}" ]; then - fn_print_fail_nl "No mods are currently available for ${gamename}." - fn_script_log_info "No mods are currently available for ${gamename}." - core_exit.sh -fi -fn_script_log_info "${totalmodsavailable} addons/mods are available for install" - -## User selects a mod. -echo -e "" -while [[ ! " ${availablemodscommands[@]} " =~ " ${usermodselect} " ]]; do - echo -en "Enter an ${cyan}addon/mod${default} to ${green}install${default} (or exit to abort): " - read -r usermodselect - # Exit if user says exit or abort. - if [ "${usermodselect}" == "exit" ] || [ "${usermodselect}" == "abort" ]; then - core_exit.sh - # Supplementary output upon invalid user input. - elif [[ ! " ${availablemodscommands[@]} " =~ " ${usermodselect} " ]]; then - fn_print_error2_nl "${usermodselect} is not a valid addon/mod." - fi -done -# Get mod info. -currentmod="${usermodselect}" -fn_mod_get_info - -echo -e "" -echo -e "Installing ${modprettyname}" -echo -e "=================================" -fn_script_log_info "${modprettyname} selected for install" - -# Check if the mod is already installed and warn the user. -if [ -f "${modsinstalledlistfullpath}" ]; then - if [ "$(sed -n "/^${modcommand}$/p" "${modsinstalledlistfullpath}")" ]; then - fn_print_warning_nl "${modprettyname} is already installed" - fn_script_log_warn "${modprettyname} is already installed" - echo -e " * Any configs may be overwritten." - if ! fn_prompt_yn "Continue?" Y; then - core_exit.sh - fi - fn_script_log_info "User selected to continue" - fi -fi - -## Installation. -# If amxmodx check if metamod exists first -if [ "${modcommand}" == "amxmodx" ]; then - fn_mod_exist "metamod" -fi - -if [ "${modcommand}" == "amxmodxcs" ] \ - || [ "${modcommand}" == "amxmodxdod" ] \ - || [ "${modcommand}" == "amxmodxtfc" ] \ - || [ "${modcommand}" == "amxmodxns" ] \ - || [ "${modcommand}" == "amxmodxts" ]; then - fn_mod_exist "amxmodx" -fi - -fn_create_mods_dir -fn_mods_clear_tmp_dir -fn_mods_create_tmp_dir -fn_mod_install_files -fn_mod_lowercase -fn_mod_create_filelist -fn_mod_copy_destination -fn_mod_add_list -fn_mod_tidy_files_list -fn_mods_clear_tmp_dir - -# Create/modify existing liblist.gam file for Metamod -if [ "${modcommand}" == "metamod" ]; then - fn_mod_install_liblist_gam_file -fi - -# Create/modify plugins.ini file for Metamod -if [ "${modcommand}" == "amxmodx" ]; then - fn_mod_install_amxmodx_file -fi - -echo -e "${modprettyname} installed" -fn_script_log_pass "${modprettyname} installed." - -core_exit.sh diff --git a/lgsm/functions/command_mods_remove.sh b/lgsm/functions/command_mods_remove.sh deleted file mode 100644 index 7127dcb3ca..0000000000 --- a/lgsm/functions/command_mods_remove.sh +++ /dev/null @@ -1,153 +0,0 @@ -#!/bin/bash -# LinuxGSM command_mods_uninstall.sh module -# Author: Daniel Gibbs -# Contributors: http://linuxgsm.com/contrib -# Website: https://linuxgsm.com -# Description: Uninstall mods along with mods_list.sh and mods_core.sh. - -commandname="MODS-REMOVE" -commandaction="Removing mods" -functionselfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")" -fn_firstcommand_set - -check.sh -mods_core.sh -fn_mods_check_installed - -fn_print_header -echo -e "Remove addons/mods" -echo -e "=================================" - -# Displays list of installed mods. -# Generates list to display to user. -fn_mods_installed_list -for ((mlindex = 0; mlindex < ${#installedmodslist[@]}; mlindex++)); do - # Current mod is the "mlindex" value of the array we are going through. - currentmod="${installedmodslist[mlindex]}" - # Get mod info. - fn_mod_get_info - # Display mod info to the user. - echo -e "${red}${modcommand}${default} - ${modprettyname} - ${moddescription}" -done - -echo -e "" -# Keep prompting as long as the user input doesn't correspond to an available mod. -while [[ ! " ${installedmodslist[@]} " =~ " ${usermodselect} " ]]; do - echo -en "Enter an ${cyan}addon/mod${default} to ${red}remove${default} (or exit to abort): " - read -r usermodselect - # Exit if user says exit or abort. - if [ "${usermodselect}" == "exit" ] || [ "${usermodselect}" == "abort" ]; then - core_exit.sh - # Supplementary output upon invalid user input. - elif [[ ! " ${availablemodscommands[@]} " =~ " ${usermodselect} " ]]; then - fn_print_error2_nl "${usermodselect} is not a valid addon/mod." - fi -done - -fn_print_warning_nl "You are about to remove ${cyan}${usermodselect}${default}." -echo -e " * Any custom files/configuration will be removed." -if ! fn_prompt_yn "Continue?" Y; then - core_exit.sh -fi - -currentmod="${usermodselect}" -fn_mod_get_info -fn_check_mod_files_list - -# Uninstall the mod. -fn_script_log_info "Removing ${modsfilelistsize} files from ${modprettyname}" -echo -e "removing ${modprettyname}" -echo -e "* ${modsfilelistsize} files to be removed" -echo -e "* location: ${modinstalldir}" -fn_sleep_time -# Go through every file and remove it. -modfileline="1" -tput sc -while [ "${modfileline}" -le "${modsfilelistsize}" ]; do - # Current line defines current file to remove. - currentfileremove=$(sed "${modfileline}q;d" "${modsdir}/${modcommand}-files.txt") - # If file or directory exists, then remove it. - - if [ -f "${modinstalldir}/${currentfileremove}" ] || [ -d "${modinstalldir}/${currentfileremove}" ]; then - rm -rf "${modinstalldir:?}/${currentfileremove:?}" - ((exitcode = $?)) - if [ "${exitcode}" != 0 ]; then - fn_script_log_fatal "Removing ${modinstalldir}/${currentfileremove}" - break - else - fn_script_log_pass "Removing ${modinstalldir}/${currentfileremove}" - fi - fi - tput rc - tput el - echo -e "removing ${modprettyname} ${modfileline} / ${modsfilelistsize} : ${currentfileremove}..." - ((modfileline++)) -done - -# Added logic not to fail since removing game specific mods (amxmodxcs) removes files that will -# not be found when removing the base (amxmodx) mod -if [ "${modcommand}" != "amxmodx" ]; then - if [ "${exitcode}" != 0 ]; then - fn_print_fail_eol_nl - core_exit.sh - else - fn_print_ok_eol_nl - fi -else - fn_print_ok_eol_nl -fi - -# Remove file list. -echo -en "removing ${modcommand}-files.txt..." -fn_sleep_time -rm -rf "${modsdir:?}/${modcommand}-files.txt" -exitcode=$? -if [ "${exitcode}" != 0 ]; then - fn_script_log_fatal "Removing ${modsdir}/${modcommand}-files.txt" - fn_print_fail_eol_nl - core_exit.sh -else - fn_script_log_pass "Removing ${modsdir}/${modcommand}-files.txt" - fn_print_ok_eol_nl -fi - -# Remove mods from installed mods list. -echo -en "removing ${modcommand} from ${modsinstalledlist}..." -fn_sleep_time - -sed -i "/^${modcommand}$/d" "${modsinstalledlistfullpath}" -exitcode=$? -if [ "${exitcode}" != 0 ]; then - fn_script_log_fatal "Removing ${modcommand} from ${modsinstalledlist}" - fn_print_fail_eol_nl - core_exit.sh -else - fn_script_log_pass "Removing ${modcommand} from ${modsinstalledlist}" - fn_print_ok_eol_nl -fi - -# Oxide fix -# Oxide replaces server files, so a validate is required after uninstall. -if [ "${engine}" == "unity3d" ] && [[ "${modprettyname}" == *"Oxide"* ]]; then - fn_print_information_nl "Validating to restore original ${gamename} files replaced by Oxide" - fn_script_log "Validating to restore original ${gamename} files replaced by Oxide" - exitbypass="1" - command_validate.sh - fn_firstcommand_reset - unset exitbypass -fi - -# Remove/modify existing liblist.gam file for Metamod -if [ "${modcommand}" == "metamod" ]; then - fn_mod_remove_liblist_gam_file -fi - -# Remove/modify plugins.ini file for AMX Mod X -if [ "${modcommand}" == "amxmodx" ]; then - fn_mod_remove_amxmodx_file -fi - -echo -e "${modprettyname} removed" -fn_script_log "${modprettyname} removed" - -core_exit.sh diff --git a/lgsm/functions/command_mods_update.sh b/lgsm/functions/command_mods_update.sh deleted file mode 100644 index 80b23fea9c..0000000000 --- a/lgsm/functions/command_mods_update.sh +++ /dev/null @@ -1,109 +0,0 @@ -#!/bin/bash -# LinuxGSM command_mods_update.sh module -# Author: Daniel Gibbs -# Contributors: http://linuxgsm.com/contrib -# Website: https://linuxgsm.com -# Description: Updates installed mods along with mods_list.sh and mods_core.sh. - -commandname="MODS-UPDATE" -commandaction="Updating mods" -functionselfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")" -fn_firstcommand_set - -check.sh -mods_core.sh - -# Prevents specific files being overwritten upon update (set by ${modkeepfiles}). -# For that matter, remove cfg files after extraction before copying them to destination. -fn_remove_cfg_files() { - if [ "${modkeepfiles}" != "OVERWRITE" ] && [ "${modkeepfiles}" != "NOUPDATE" ]; then - echo -e "the following files/directories will be preserved:" - fn_sleep_time - # Count how many files there are to remove. - filestopreserve=$(echo -e "${modkeepfiles}" | awk -F ';' '{ print NF }') - # Test all subvalues of "modkeepfiles" using the ";" separator. - for ((preservefilesindex = 1; preservefilesindex < filestopreserve; preservefilesindex++)); do - # Put the current file we are looking for into a variable. - filetopreserve=$(echo -e "${modkeepfiles}" | awk -F ';' -v x=${preservefilesindex} '{ print $x }') - echo -e " * serverfiles/${filetopreserve}" - # If it matches an existing file that have been extracted delete the file. - if [ -f "${extractdest}/${filetopreserve}" ] || [ -d "${extractdest}/${filetopreserve}" ]; then - rm -r "${extractdest:?}/${filetopreserve}" - # Write the file path in a tmp file, to rebuild a full file list as it is rebuilt upon update. - if [ ! -f "${modsdir}/.removedfiles.tmp" ]; then - touch "${modsdir}/.removedfiles.tmp" - fi - echo -e "${filetopreserve}" >> "${modsdir}/.removedfiles.tmp" - fi - done - fi -} - -fn_print_dots "Update addons/mods" -fn_mods_check_installed -fn_print_info_nl "Update addons/mods: ${installedmodscount} addons/mods will be updated" -fn_script_log_info "${installedmodscount} mods or addons will be updated" -fn_mods_installed_list -# Go through all available commands, get details and display them to the user. -for ((ulindex = 0; ulindex < ${#installedmodslist[@]}; ulindex++)); do - # Current mod is the "ulindex" value of the array we're going through. - currentmod="${installedmodslist[ulindex]}" - fn_mod_get_info - # Display installed mods and the update policy. - if [ -z "${modkeepfiles}" ]; then - # If modkeepfiles is not set for some reason, that's a problem. - fn_script_log_error "Could not find update policy for ${modprettyname}" - fn_print_error_nl "Could not find update policy for ${modprettyname}" - exitcode="1" - core_exit.sh - # If the mod won't get updated. - elif [ "${modkeepfiles}" == "NOUPDATE" ]; then - echo -e " * ${red}{modprettyname}${default} (won't be updated)" - # If the mode is just overwritten. - elif [ "${modkeepfiles}" == "OVERWRITE" ]; then - echo -e " * ${modprettyname} (overwrite)" - else - echo -e " * ${yellow}${modprettyname}${default} (retain common custom files)" - fi -done - -## Update -# List all installed mods and apply update. -# Reset line value. -installedmodsline="1" -while [ "${installedmodsline}" -le "${installedmodscount}" ]; do - currentmod=$(sed "${installedmodsline}q;d" "${modsinstalledlistfullpath}") - if [ "${currentmod}" ]; then - fn_mod_get_info - # Don not update mod if the policy is set to "NOUPDATE". - if [ "${modkeepfiles}" == "NOUPDATE" ]; then - fn_print_info "${modprettyname} will not be updated to preserve custom files" - fn_script_log_info "${modprettyname} will not be updated to preserve custom files" - else - echo -e "" - echo -e "==> Updating ${modprettyname}" - fn_create_mods_dir - fn_mods_clear_tmp_dir - fn_mods_create_tmp_dir - fn_mod_install_files - fn_mod_lowercase - fn_remove_cfg_files - fn_mod_create_filelist - fn_mod_copy_destination - fn_mod_add_list - fn_mod_tidy_files_list - fn_mods_clear_tmp_dir - fi - ((installedmodsline++)) - else - fn_print_fail "No mod was selected" - fn_script_log_fatal "No mod was selected" - exitcode="1" - core_exit.sh - fi -done -echo -e "" -fn_print_ok_nl "Mods update complete" -fn_script_log_info "Mods update complete" - -core_exit.sh diff --git a/lgsm/functions/command_monitor.sh b/lgsm/functions/command_monitor.sh deleted file mode 100644 index 20c830e0b8..0000000000 --- a/lgsm/functions/command_monitor.sh +++ /dev/null @@ -1,245 +0,0 @@ -#!/bin/bash -# LinuxGSM command_monitor.sh module -# Author: Daniel Gibbs -# Contributors: http://linuxgsm.com/contrib -# Website: https://linuxgsm.com -# Description: Monitors server by checking for running processes -# then passes to gamedig and gsquery. - -commandname="MONITOR" -commandaction="Monitoring" -functionselfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")" -fn_firstcommand_set - -fn_monitor_check_lockfile() { - # Monitor does not run it lockfile is not found. - if [ ! -f "${lockdir}/${selfname}.lock" ]; then - fn_print_dots "Checking lockfile: " - fn_print_checking_eol - fn_script_log_info "Checking lockfile: CHECKING" - fn_print_error "Checking lockfile: No lockfile found: " - fn_print_error_eol_nl - fn_script_log_error "Checking lockfile: No lockfile found: ERROR" - echo -e "* Start ${selfname} to run monitor." - core_exit.sh - fi - - # Fix if lockfile is not unix time or contains letters - if [ -f "${lockdir}/${selfname}.lock" ] && [[ "$(head -n 1 "${lockdir}/${selfname}.lock")" =~ [A-Za-z] ]]; then - date '+%s' > "${lockdir}/${selfname}.lock" - echo "${version}" >> "${lockdir}/${selfname}.lock" - echo "${port}" >> "${lockdir}/${selfname}.lock" - fi -} - -fn_monitor_check_update() { - # Monitor will check if update is already running. - if [ "$(pgrep "${selfname} update" | wc -l)" != "0" ]; then - fn_print_dots "Checking active updates: " - fn_print_checking_eol - fn_script_log_info "Checking active updates: CHECKING" - fn_print_error_nl "Checking active updates: SteamCMD is currently checking for updates: " - fn_print_error_eol - fn_script_log_error "Checking active updates: SteamCMD is currently checking for updates: ERROR" - core_exit.sh - fi -} - -fn_monitor_check_session() { - fn_print_dots "Checking session: " - fn_print_checking_eol - fn_script_log_info "Checking session: CHECKING" - # uses status var from check_status.sh - if [ "${status}" != "0" ]; then - fn_print_ok "Checking session: " - fn_print_ok_eol_nl - fn_script_log_pass "Checking session: OK" - else - fn_print_error "Checking session: " - fn_print_fail_eol_nl - fn_script_log_fatal "Checking session: FAIL" - alert="restart" - alert.sh - fn_script_log_info "Checking session: Monitor is restarting ${selfname}" - command_restart.sh - core_exit.sh - fi -} - -fn_monitor_check_queryport() { - # Monitor will check queryport is set before continuing. - if [ -z "${queryport}" ] || [ "${queryport}" == "0" ]; then - fn_print_dots "Checking port: " - fn_print_checking_eol - fn_script_log_info "Checking port: CHECKING" - if [ -n "${rconenabled}" ] && [ "${rconenabled}" != "true" ] && [ "${shortname}" == "av" ]; then - fn_print_warn "Checking port: Unable to query, rcon is not enabled" - fn_script_log_warn "Checking port: Unable to query, rcon is not enabled" - else - fn_print_error "Checking port: Unable to query, queryport is not set" - fn_script_log_error "Checking port: Unable to query, queryport is not set" - fi - core_exit.sh - fi -} - -fn_query_gsquery() { - if [ ! -f "${functionsdir}/query_gsquery.py" ]; then - fn_fetch_file_github "lgsm/functions" "query_gsquery.py" "${functionsdir}" "chmodx" "norun" "noforce" "nohash" - fi - "${functionsdir}"/query_gsquery.py -a "${queryip}" -p "${queryport}" -e "${querytype}" > /dev/null 2>&1 - querystatus="$?" -} - -fn_query_tcp() { - bash -c 'exec 3<> /dev/tcp/'${queryip}'/'${queryport}'' > /dev/null 2>&1 - querystatus="$?" -} - -fn_monitor_query() { - # Will loop and query up to 5 times every 15 seconds. - # Query will wait up to 60 seconds to confirm server is down as server can become non-responsive during map changes. - totalseconds=0 - for queryattempt in {1..5}; do - for queryip in "${queryips[@]}"; do - fn_print_dots "Querying port: ${querymethod}: ${queryip}:${queryport} : ${totalseconds}/${queryattempt}: " - fn_print_querying_eol - fn_script_log_info "Querying port: ${querymethod}: ${queryip}:${queryport} : ${queryattempt} : QUERYING" - # querydelay - if [ "$(head -n 1 "${lockdir}/${selfname}.lock")" -gt "$(date "+%s" -d "${querydelay} mins ago")" ]; then - fn_print_ok "Querying port: ${querymethod}: ${ip}:${queryport} : ${totalseconds}/${queryattempt}: " - fn_print_delay_eol_nl - fn_script_log_info "Querying port: ${querymethod}: ${ip}:${queryport} : ${queryattempt} : DELAY" - fn_script_log_info "Query bypassed: ${gameservername} started less than ${querydelay} minutes ago" - fn_script_log_info "Server started: $(date -d @$(head -n 1 "${lockdir}/${selfname}.lock"))" - fn_script_log_info "Current time: $(date)" - monitorpass=1 - core_exit.sh - # will use query method selected in fn_monitor_loop - # gamedig - elif [ "${querymethod}" == "gamedig" ]; then - query_gamedig.sh - # gsquery - elif [ "${querymethod}" == "gsquery" ]; then - fn_query_gsquery - #tcp query - elif [ "${querymethod}" == "tcp" ]; then - fn_query_tcp - fi - - if [ "${querystatus}" == "0" ]; then - # Server query OK. - fn_print_ok "Querying port: ${querymethod}: ${queryip}:${queryport} : ${totalseconds}/${queryattempt}: " - fn_print_ok_eol_nl - fn_script_log_pass "Querying port: ${querymethod}: ${queryip}:${queryport} : ${queryattempt} : OK" - monitorpass=1 - if [ "${querystatus}" == "0" ]; then - # Add query data to log. - if [ "${gdname}" ]; then - fn_script_log_info "Server name: ${gdname}" - fi - if [ "${gdplayers}" ]; then - fn_script_log_info "Players: ${gdplayers}/${gdmaxplayers}" - fi - if [ "${gdbots}" ]; then - fn_script_log_info "Bots: ${gdbots}" - fi - if [ "${gdmap}" ]; then - fn_script_log_info "Map: ${gdmap}" - fi - if [ "${gdgamemode}" ]; then - fn_script_log_info "Game Mode: ${gdgamemode}" - fi - - # send LinuxGSM stats if monitor is OK. - if [ "${stats}" == "on" ] || [ "${stats}" == "y" ]; then - info_stats.sh - fi - fi - core_exit.sh - else - # Server query FAIL. - fn_print_fail "Querying port: ${querymethod}: ${queryip}:${queryport} : ${totalseconds}/${queryattempt}: " - fn_print_fail_eol - fn_script_log_warn "Querying port: ${querymethod}: ${queryip}:${queryport} : ${queryattempt} : FAIL" - # Monitor will try gamedig (if supported) for first 30s then gsquery before restarting. - # gsquery will fail if longer than 60s - if [ "${totalseconds}" -ge "59" ]; then - # Monitor will FAIL if over 60s and trigger gane server reboot. - fn_print_fail "Querying port: ${querymethod}: ${queryip}:${queryport} : ${totalseconds}/${queryattempt}: " - fn_print_fail_eol_nl - fn_script_log_warn "Querying port: ${querymethod}: ${queryip}:${queryport} : ${queryattempt} : FAIL" - # Send alert if enabled. - alert="restartquery" - alert.sh - command_restart.sh - fn_firstcommand_reset - core_exit.sh - fi - fi - done - # Second counter will wait for 15s before breaking loop. - for seconds in {1..15}; do - fn_print_fail "Querying port: ${querymethod}: ${ip}:${queryport} : ${totalseconds}/${queryattempt} : ${cyan}WAIT${default}" - sleep 0.5 - totalseconds=$((totalseconds + 1)) - if [ "${seconds}" == "15" ]; then - break - fi - done - done -} - -fn_monitor_loop() { - # loop though query methods selected by querymode. - totalseconds=0 - if [ "${querymode}" == "2" ]; then - local query_methods_array=(gamedig gsquery) - elif [ "${querymode}" == "3" ]; then - local query_methods_array=(gamedig) - elif [ "${querymode}" == "4" ]; then - local query_methods_array=(gsquery) - elif [ "${querymode}" == "5" ]; then - local query_methods_array=(tcp) - fi - for querymethod in "${query_methods_array[@]}"; do - # Will check if gamedig is installed and bypass if not. - if [ "${querymethod}" == "gamedig" ]; then - if [ "$(command -v gamedig 2> /dev/null)" ] && [ "$(command -v jq 2> /dev/null)" ]; then - if [ -z "${monitorpass}" ]; then - fn_monitor_query - fi - else - fn_script_log_info "gamedig is not installed" - fn_script_log_info "https://docs.linuxgsm.com/requirements/gamedig" - fi - else - # will not query if query already passed. - if [ -z "${monitorpass}" ]; then - fn_monitor_query - fi - fi - done -} - -monitorflag=1 -check.sh -core_logs.sh -info_game.sh - -# query pre-checks -fn_monitor_check_lockfile -fn_monitor_check_update -fn_monitor_check_session -# Monitor will not continue if session only check. -if [ "${querymode}" != "1" ]; then - fn_monitor_check_queryport - - # Add a querydelay of 1 min if var missing. - if [ -z "${querydelay}" ]; then - querydelay="1" - fi - - fn_monitor_loop -fi -core_exit.sh diff --git a/lgsm/functions/command_postdetails.sh b/lgsm/functions/command_postdetails.sh deleted file mode 100644 index dad44d9afb..0000000000 --- a/lgsm/functions/command_postdetails.sh +++ /dev/null @@ -1,78 +0,0 @@ -#!/bin/bash -# LinuxGSM command_postdetails.sh module -# Author: Daniel Gibbs -# Contributors: http://linuxgsm.com/contrib -# Website: https://linuxgsm.com -# Description: Strips sensitive information out of Details output. - -commandname="POST-DETAILS" -commandaction="Posting details" -functionselfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")" -fn_firstcommand_set - -posttarget="https://termbin.com" - -# source all of the functions defined in the details command. -info_messages.sh - -fn_bad_postdetailslog() { - fn_print_fail_nl "Unable to create temporary file ${postdetailslog}." - core_exit.sh -} - -# Remove any existing postdetails.log file. -if [ -f "${postdetailslog}" ]; then - rm -f "${postdetailslog:?}" -fi - -# Rather than a one-pass sed parser, default to using a temporary directory. -if [ "${exitbypass}" ]; then - postdetailslog="${alertlog}" -else - # Run checks and gathers details to display. - check.sh - info_game.sh - info_distro.sh - info_messages.sh - for queryip in "${queryips[@]}"; do - query_gamedig.sh - if [ "${querystatus}" == "0" ]; then - break - fi - done - touch "${postdetailslog}" || fn_bad_postdetailslog - { - fn_info_message_distro - fn_info_message_server_resource - fn_info_message_gameserver_resource - fn_info_message_gameserver - fn_info_message_script - fn_info_message_backup - # Some game servers do not have parms. - if [ "${shortname}" != "jc2" ] && [ "${shortname}" != "jc3" ] && [ "${shortname}" != "dst" ] && [ "${shortname}" != "pz" ] && [ "${engine}" != "renderware" ]; then - fn_info_message_commandlineparms - fi - fn_info_message_ports_edit - fn_info_message_ports - fn_info_message_select_engine - fn_info_message_statusbottom - } | sed -r "s/\x1B\[([0-9]{1,2}(;[0-9]{1,2})?)?[m|K]//g" | tee -a "${postdetailslog}" > /dev/null 2>&1 -fi - -fn_print_dots "termbin.com" -link=$(cat "${postdetailslog}" | nc termbin.com 9999 | tr -d '\n\0') -fn_print_ok_nl "termbin.com for 30D" -fn_script_log_pass "termbin.com for 30D" -pdurl="${link}" - -if [ "${firstcommandname}" == "POST-DETAILS" ]; then - echo -e "" - echo -e "Please share the following url for support: " - echo -e "${pdurl}" -fi -fn_script_log_info "${pdurl}" -alerturl="${pdurl}" - -if [ -z "${exitbypass}" ]; then - core_exit.sh -fi diff --git a/lgsm/functions/command_restart.sh b/lgsm/functions/command_restart.sh deleted file mode 100644 index 3bf60c32cd..0000000000 --- a/lgsm/functions/command_restart.sh +++ /dev/null @@ -1,18 +0,0 @@ -#!/bin/bash -# LinuxGSM command_restart.sh module -# Author: Daniel Gibbs -# Contributors: http://linuxgsm.com/contrib -# Website: https://linuxgsm.com -# Description: Restarts the server. - -commandname="MODS-INSTALL" -commandaction="Restarting" -functionselfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")" -fn_firstcommand_set - -info_game.sh -exitbypass=1 -command_stop.sh -command_start.sh -fn_firstcommand_reset -core_exit.sh diff --git a/lgsm/functions/command_send.sh b/lgsm/functions/command_send.sh deleted file mode 100644 index d652125717..0000000000 --- a/lgsm/functions/command_send.sh +++ /dev/null @@ -1,41 +0,0 @@ -#!/bin/bash -# LinuxGSM command_send.sh module -# Author: Daniel Gibbs -# Contributors: http://linuxgsm.com/contrib -# Website: https://linuxgsm.com -# Description: Send command to the server tmux console. - -commandname="SEND" -commandaction="Send" -functionselfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")" -fn_firstcommand_set - -check.sh -if [ -z "${userinput2}" ]; then - fn_print_header - fn_print_information_nl "Send a command to the console." -fi - -check_status.sh -if [ "${status}" != "0" ]; then - if [ -n "${userinput2}" ]; then - commandtosend="${userinput2}" - else - echo "" - commandtosend=$(fn_prompt_message "send: ") - fi - echo "" - fn_print_dots "Sending command to console: \"${commandtosend}\"" - tmux -L "${sessionname}" send-keys -t "${servicename}" "${commandtosend}" ENTER - fn_print_ok_nl "Sending command to console: \"${commandtosend}\"" - fn_script_log_pass "Command \"${commandtosend}\" sent to console" -else - fn_print_error_nl "Server not running" - fn_script_log_error "Failed to access: Server not running" - if fn_prompt_yn "Do you want to start the server?" Y; then - exitbypass=1 - command_start.sh - fi -fi - -core_exit.sh diff --git a/lgsm/functions/command_skeleton.sh b/lgsm/functions/command_skeleton.sh deleted file mode 100644 index 53c4ddec52..0000000000 --- a/lgsm/functions/command_skeleton.sh +++ /dev/null @@ -1,23 +0,0 @@ -#!/bin/bash -# LinuxGSM command_skeleton.sh module -# Author: Daniel Gibbs -# Contributors: http://linuxgsm.com/contrib -# Website: https://linuxgsm.com -# Description: Creates an copy of a game servers directorys. - -functionselfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")" - -fn_print_dots "Creating skeleton directory" -check.sh - -# Find all directorys and create them in the skel directory -find "${rootdir}" -type d -not \( -path ./skel -prune \) | cpio -pdvm skel 2> /dev/null -exitcode=$? -if [ "${exitcode}" != 0 ]; then - fn_print_fail_nl "Creating skeleton directory" - fn_script_log_fatal "Creating skeleton directory" -else - fn_print_ok_nl "Creating skeleton directory: ./skel" - fn_script_log_pass "Creating skeleton directory: ./skel" -fi -core_exit.sh diff --git a/lgsm/functions/command_start.sh b/lgsm/functions/command_start.sh deleted file mode 100644 index 699bc82220..0000000000 --- a/lgsm/functions/command_start.sh +++ /dev/null @@ -1,224 +0,0 @@ -#!/bin/bash -# LinuxGSM command_start.sh module -# Author: Daniel Gibbs -# Contributors: http://linuxgsm.com/contrib -# Website: https://linuxgsm.com -# Description: Starts the server. - -commandname="START" -commandaction="Starting" -functionselfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")" -addtimestamp="gawk '{ print strftime(\\\"[$logtimestampformat]\\\"), \\\$0 }'" -fn_firstcommand_set - -fn_start_teamspeak3() { - if [ ! -f "${servercfgfullpath}" ]; then - fn_print_warn_nl "${servercfgfullpath} is missing" - fn_script_log_warn "${servercfgfullpath} is missing" - echo " * Creating blank ${servercfg}" - fn_script_log_info "Creating blank ${servercfg}" - fn_sleep_time - echo " * ${servercfg} can remain blank by default." - fn_script_log_info "${servercfgfullpath} can remain blank by default." - fn_sleep_time - echo " * ${servercfg} is located in ${servercfgfullpath}." - fn_script_log_info "${servercfg} is located in ${servercfgfullpath}." - sleep 5 - touch "${servercfgfullpath}" - fi - # Accept license. - if [ ! -f "${executabledir}/.ts3server_license_accepted" ]; then - install_eula.sh - fi - fn_start_tmux -} - -# This will allow the Jedi Knight 2 version to be printed in console on start. -# Used to allow update to detect JK2MV server version. -fn_start_jk2() { - fn_start_tmux - tmux -L "${sessionname}" send -t "${sessionname}" version ENTER > /dev/null 2>&1 -} - -fn_start_tmux() { - if [ "${parmsbypass}" ]; then - startparameters="" - fi - # check for tmux size variables. - if [[ "${servercfgtmuxwidth}" =~ ^[0-9]+$ ]]; then - sessionwidth="${servercfgtmuxwidth}" - else - sessionwidth="80" - fi - if [[ "${servercfgtmuxheight}" =~ ^[0-9]+$ ]]; then - sessionheight="${servercfgtmuxheight}" - else - sessionheight="23" - fi - - # Log rotation. - fn_script_log_info "Rotating log files" - if [ "${engine}" == "unreal2" ] && [ -f "${gamelog}" ]; then - mv "${gamelog}" "${gamelogdate}" - fi - if [ -f "${lgsmlog}" ]; then - mv "${lgsmlog}" "${lgsmlogdate}" - fi - if [ -f "${consolelog}" ]; then - mv "${consolelog}" "${consolelogdate}" - fi - - # Create lockfile - date '+%s' > "${lockdir}/${selfname}.lock" - echo "${version}" >> "${lockdir}/${selfname}.lock" - echo "${port}" >> "${lockdir}/${selfname}.lock" - fn_reload_startparameters - - if [ "${shortname}" == "av" ]; then - cd "${systemdir}" || exit - else - cd "${executabledir}" || exit - fi - - tmux -L "${sessionname}" new-session -d -x "${sessionwidth}" -y "${sessionheight}" -s "${sessionname}" "${preexecutable} ${executable} ${startparameters}" 2> "${lgsmlogdir}/.${selfname}-tmux-error.tmp" - - # Create logfile. - touch "${consolelog}" - - # Create last start lock file - date +%s > "${lockdir}/${selfname}-laststart.lock" - - # tmux compiled from source will return "master", therefore ignore it. - if [ "${tmuxv}" == "master" ]; then - fn_script_log "tmux version: master (user compiled)" - echo -e "tmux version: master (user compiled)" >> "${consolelog}" - if [ "${consolelogging}" == "on" ] || [ -z "${consolelogging}" ]; then - if [ "$logtimestamp" == "on" ]; then - tmux -L "${sessionname}" pipe-pane -o -t "${sessionname}" "exec bash -c \"cat | $addtimestamp\" >> '${consolelog}'" - else - tmux -L "${sessionname}" pipe-pane -o -t "${sessionname}" "exec cat >> '${consolelog}'" - fi - fi - - elif [ -n "${tmuxv}" ]; then - # tmux pipe-pane not supported in tmux versions < 1.6. - if [ "${tmuxvdigit}" -lt "16" ]; then - echo -e "Console logging disabled: tmux => 1.6 required - https://linuxgsm.com/tmux-upgrade - Currently installed: $(tmux -V)" > "${consolelog}" - - # Console logging disabled: Bug in tmux 1.8 breaks logging. - elif [ "${tmuxvdigit}" -eq "18" ]; then - echo -e "Console logging disabled: Bug in tmux 1.8 breaks logging - https://linuxgsm.com/tmux-upgrade - Currently installed: $(tmux -V)" > "${consolelog}" - # Console logging enable or not set. - elif [ "${consolelogging}" == "on" ] || [ -z "${consolelogging}" ]; then - if [ "$logtimestamp" == "on" ]; then - tmux pipe-pane -o -t "${sessionname}" "exec bash -c \"cat | $addtimestamp\" >> '${consolelog}'" - else - tmux pipe-pane -o -t "${sessionname}" "exec cat >> '${consolelog}'" - fi - fi - else - echo -e "Unable to detect tmux version" >> "${consolelog}" - fn_script_log_warn "Unable to detect tmux version" - fi - - # Console logging disabled. - if [ "${consolelogging}" == "off" ]; then - echo -e "Console logging disabled by user" >> "${consolelog}" - fn_script_log_info "Console logging disabled by user" - fi - fn_sleep_time - - # If the server fails to start. - check_status.sh - if [ "${status}" == "0" ]; then - fn_print_fail_nl "Unable to start ${servername}" - fn_script_log_fatal "Unable to start ${servername}" - if [ -s "${lgsmlogdir}/.${selfname}-tmux-error.tmp" ]; then - fn_print_fail_nl "Unable to start ${servername}: tmux error:" - fn_script_log_fatal "Unable to start ${servername}: tmux error:" - echo -e "" - echo -e "Command" - echo -e "=================================" - echo -e "tmux -L \"${sessionname}\" new-session -d -s \"${sessionname}\" \"${preexecutable} ${executable} ${startparameters}\"" | tee -a "${lgsmlog}" - echo -e "" - echo -e "Error" - echo -e "=================================" - tee -a "${lgsmlog}" < "${lgsmlogdir}/.${selfname}-tmux-error.tmp" - - # Detected error https://linuxgsm.com/support - if grep -c "Operation not permitted" "${lgsmlogdir}/.${selfname}-tmux-error.tmp"; then - echo -e "" - echo -e "Fix" - echo -e "=================================" - if ! grep "tty:" /etc/group | grep "$(whoami)"; then - echo -e "$(whoami) is not part of the tty group." - fn_script_log_info "$(whoami) is not part of the tty group." - group=$(grep tty /etc/group) - echo -e "" - echo -e " ${group}" - fn_script_log_info "${group}" - echo -e "" - echo -e "Run the following command with root privileges." - echo -e "" - echo -e " usermod -G tty $(whoami)" - echo -e "" - echo -e "https://linuxgsm.com/tmux-op-perm" - fn_script_log_info "https://linuxgsm.com/tmux-op-perm" - else - echo -e "No known fix currently. Please log an issue." - fn_script_log_info "No known fix currently. Please log an issue." - echo -e "https://linuxgsm.com/support" - fn_script_log_info "https://linuxgsm.com/support" - fi - fi - fi - core_exit.sh - else - fn_print_ok "${servername}" - fn_script_log_pass "Started ${servername}" - fi - rm -f "${lgsmlogdir:?}/.${selfname}-tmux-error.tmp" 2> /dev/null - echo -en "\n" -} - -check.sh - -# Is the server already started. -# $status comes from check_status.sh, which is run by check.sh for this command -if [ "${status}" != "0" ]; then - fn_print_dots "${servername}" - fn_print_info_nl "${servername} is already running" - fn_script_log_error "${servername} is already running" - if [ -z "${exitbypass}" ]; then - core_exit.sh - fi -fi -if [ -z "${fixbypass}" ]; then - fix.sh -fi -info_game.sh -core_logs.sh - -# Will check for updates is updateonstart is yes. -if [ "${updateonstart}" == "yes" ] || [ "${updateonstart}" == "1" ] || [ "${updateonstart}" == "on" ]; then - exitbypass=1 - unset updateonstart - command_update.sh - fn_firstcommand_reset -fi - -fn_print_dots "${servername}" - -if [ "${shortname}" == "ts3" ]; then - fn_start_teamspeak3 -elif [ "${shortname}" == "jk2" ]; then - fn_start_jk2 -else - fn_start_tmux -fi - -core_exit.sh diff --git a/lgsm/functions/command_stop.sh b/lgsm/functions/command_stop.sh deleted file mode 100644 index 92785af98e..0000000000 --- a/lgsm/functions/command_stop.sh +++ /dev/null @@ -1,283 +0,0 @@ -#!/bin/bash -# LinuxGSM command_stop.sh module -# Author: Daniel Gibbs -# Contributors: http://linuxgsm.com/contrib -# Website: https://linuxgsm.com -# Description: Stops the server. - -commandname="STOP" -commandaction="Stopping" -functionselfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")" -fn_firstcommand_set - -# Attempts graceful shutdown by sending 'CTRL+c'. -fn_stop_graceful_ctrlc() { - fn_print_dots "Graceful: CTRL+c" - fn_script_log_info "Graceful: CTRL+c" - # Sends quit. - tmux -L "${sessionname}" send-keys -t "${sessionname}" C-c > /dev/null 2>&1 - # Waits up to 30 seconds giving the server time to shutdown gracefuly. - for seconds in {1..30}; do - check_status.sh - if [ "${status}" == "0" ]; then - fn_print_ok "Graceful: CTRL+c: ${seconds}: " - fn_print_ok_eol_nl - fn_script_log_pass "Graceful: CTRL+c: OK: ${seconds} seconds" - break - fi - sleep 1 - fn_print_dots "Graceful: CTRL+c: ${seconds}" - done - check_status.sh - if [ "${status}" != "0" ]; then - fn_print_error "Graceful: CTRL+c: " - fn_print_fail_eol_nl - fn_script_log_error "Graceful: CTRL+c: FAIL" - fi -} - -# Attempts graceful shutdown by sending a specified command. -# Usage: fn_stop_graceful_cmd "console_command" "timeout_in_seconds" -# e.g.: fn_stop_graceful_cmd "quit" "30" -fn_stop_graceful_cmd() { - fn_print_dots "Graceful: sending \"${1}\"" - fn_script_log_info "Graceful: sending \"${1}\"" - # Sends specific stop command. - tmux -L "${sessionname}" send -t "${sessionname}" ENTER "${1}" ENTER > /dev/null 2>&1 - # Waits up to ${seconds} seconds giving the server time to shutdown gracefully. - for ((seconds = 1; seconds <= ${2}; seconds++)); do - check_status.sh - if [ "${status}" == "0" ]; then - fn_print_ok "Graceful: sending \"${1}\": ${seconds}: " - fn_print_ok_eol_nl - fn_script_log_pass "Graceful: sending \"${1}\": OK: ${seconds} seconds" - break - fi - sleep 1 - fn_print_dots "Graceful: sending \"${1}\": ${seconds}" - done - check_status.sh - if [ "${status}" != "0" ]; then - fn_print_error "Graceful: sending \"${1}\": " - fn_print_fail_eol_nl - fn_script_log_error "Graceful: sending \"${1}\": FAIL" - fi -} - -# Attempts graceful shutdown of goldsrc using rcon 'quit' command. -# There is only a 3 second delay before a forced a tmux shutdown -# as GoldSrc servers 'quit' command does a restart rather than shutdown. -fn_stop_graceful_goldsrc() { - fn_print_dots "Graceful: sending \"quit\"" - fn_script_log_info "Graceful: sending \"quit\"" - # sends quit - tmux -L "${sessionname}" send -t "${sessionname}" quit ENTER > /dev/null 2>&1 - # Waits 3 seconds as goldsrc servers restart with the quit command. - for seconds in {1..3}; do - sleep 1 - fn_print_dots "Graceful: sending \"quit\": ${seconds}" - done - fn_print_ok "Graceful: sending \"quit\": ${seconds}: " - fn_print_ok_eol_nl - fn_script_log_pass "Graceful: sending \"quit\": OK: ${seconds} seconds" -} - -# telnet command for sdtd graceful shutdown. -fn_stop_graceful_sdtd_telnet() { - if [ -z "${telnetpass}" ] || [ "${telnetpass}" == "NOT SET" ]; then - sdtd_telnet_shutdown=$(expect -c ' - proc abort {} { - puts "Timeout or EOF\n" - exit 1 - } - spawn telnet '"${telnetip}"' '"${telnetport}"' - expect { - "session." { send "shutdown\r" } - default abort - } - expect { eof } - puts "Completed.\n" - ') - else - sdtd_telnet_shutdown=$(expect -c ' - proc abort {} { - puts "Timeout or EOF\n" - exit 1 - } - spawn telnet '"${telnetip}"' '"${telnetport}"' - expect { - "password:" { send "'"${telnetpass}"'\r" } - default abort - } - expect { - "session." { send "shutdown\r" } - default abort - } - expect { eof } - puts "Completed.\n" - ') - fi -} - -# Attempts graceful shutdown of 7 Days To Die using telnet. -fn_stop_graceful_sdtd() { - fn_print_dots "Graceful: telnet" - fn_script_log_info "Graceful: telnet" - if [ "${telnetenabled}" == "false" ]; then - fn_print_info_nl "Graceful: telnet: DISABLED: Enable in ${servercfg}" - elif [ "$(command -v expect 2> /dev/null)" ]; then - # Tries to shutdown with both localhost and server IP. - for telnetip in 127.0.0.1 ${ip}; do - fn_print_dots "Graceful: telnet: ${telnetip}:${telnetport}" - fn_script_log_info "Graceful: telnet: ${telnetip}:${telnetport}" - fn_stop_graceful_sdtd_telnet - completed=$(echo -en "\n ${sdtd_telnet_shutdown}" | grep "Completed.") - refused=$(echo -en "\n ${sdtd_telnet_shutdown}" | grep "Timeout or EOF") - if [ "${refused}" ]; then - fn_print_error "Graceful: telnet: ${telnetip}:${telnetport} : " - fn_print_fail_eol_nl - fn_script_log_error "Graceful: telnet: ${telnetip}:${telnetport} : FAIL" - elif [ "${completed}" ]; then - break - fi - done - - # If telnet shutdown was successful will use telnet again to check - # the connection has closed, confirming that the tmux session can now be killed. - if [ "${completed}" ]; then - for seconds in {1..30}; do - fn_stop_graceful_sdtd_telnet - refused=$(echo -en "\n ${sdtd_telnet_shutdown}" | grep "Timeout or EOF") - if [ "${refused}" ]; then - fn_print_ok "Graceful: telnet: ${telnetip}:${telnetport} : " - fn_print_ok_eol_nl - fn_script_log_pass "Graceful: telnet: ${telnetip}:${telnetport} : ${seconds} seconds" - break - fi - sleep 1 - fn_print_dots "Graceful: telnet: ${seconds}" - done - # If telnet shutdown fails tmux shutdown will be used, this risks loss of world save. - else - if [ "${refused}" ]; then - fn_print_error "Graceful: telnet: " - fn_print_fail_eol_nl - fn_script_log_error "Graceful: telnet: ${telnetip}:${telnetport} : FAIL" - else - fn_print_error_nl "Graceful: telnet: Unknown error" - fn_script_log_error "Graceful: telnet: Unknown error" - fi - echo -en "\n" | tee -a "${lgsmlog}" - echo -en "Telnet output:" | tee -a "${lgsmlog}" - echo -en "\n ${sdtd_telnet_shutdown}" | tee -a "${lgsmlog}" - echo -en "\n\n" | tee -a "${lgsmlog}" - fi - else - fn_print_warn "Graceful: telnet: expect not installed: " - fn_print_fail_eol_nl - fn_script_log_warn "Graceful: telnet: expect not installed: FAIL" - fi -} - -# Attempts graceful shutdown by sending /save /stop. -fn_stop_graceful_avorion() { - fn_print_dots "Graceful: /save /stop" - fn_script_log_info "Graceful: /save /stop" - # Sends /save. - tmux -L "${sessionname}" send-keys -t "${sessionname}" /save ENTER > /dev/null 2>&1 - sleep 5 - # Sends /quit. - tmux -L "${sessionname}" send-keys -t "${sessionname}" /stop ENTER > /dev/null 2>&1 - # Waits up to 30 seconds giving the server time to shutdown gracefuly. - for seconds in {1..30}; do - check_status.sh - if [ "${status}" == "0" ]; then - fn_print_ok "Graceful: /save /stop: ${seconds}: " - fn_print_ok_eol_nl - fn_script_log_pass "Graceful: /save /stop: OK: ${seconds} seconds" - break - fi - sleep 1 - fn_print_dots "Graceful: /save /stop: ${seconds}" - done - check_status.sh - if [ "${status}" != "0" ]; then - fn_print_error "Graceful: /save /stop: " - fn_print_fail_eol_nl - fn_script_log_error "Graceful: /save /stop: FAIL" - fi -} - -fn_stop_graceful_select() { - if [ "${stopmode}" == "1" ]; then - fn_stop_tmux - elif [ "${stopmode}" == "2" ]; then - fn_stop_graceful_ctrlc - elif [ "${stopmode}" == "3" ]; then - fn_stop_graceful_cmd "quit" 30 - elif [ "${stopmode}" == "4" ]; then - fn_stop_graceful_cmd "quit" 120 - elif [ "${stopmode}" == "5" ]; then - fn_stop_graceful_cmd "stop" 30 - elif [ "${stopmode}" == "6" ]; then - fn_stop_graceful_cmd "q" 30 - elif [ "${stopmode}" == "7" ]; then - fn_stop_graceful_cmd "exit" 30 - elif [ "${stopmode}" == "8" ]; then - fn_stop_graceful_sdtd - elif [ "${stopmode}" == "9" ]; then - fn_stop_graceful_goldsrc - elif [ "${stopmode}" == "10" ]; then - fn_stop_graceful_avorion - elif [ "${stopmode}" == "11" ]; then - fn_stop_graceful_cmd "end" 30 - elif [ "${stopmode}" == "12" ]; then - fn_stop_graceful_cmd "shutdown" 30 - fi -} - -fn_stop_tmux() { - fn_print_dots "${servername}" - fn_script_log_info "tmux kill-session: ${sessionname}: ${servername}" - # Kill tmux session. - tmux -L "${sessionname}" kill-session -t "${sessionname}" > /dev/null 2>&1 - sleep 0.5 - check_status.sh - if [ "${status}" == "0" ]; then - fn_print_ok_nl "${servername}" - fn_script_log_pass "Stopped ${servername}" - else - fn_print_fail_nl "Unable to stop ${servername}" - fn_script_log_fatal "Unable to stop ${servername}" - fi -} - -# Checks if the server is already stopped. -fn_stop_pre_check() { - if [ "${status}" == "0" ]; then - fn_print_info_nl "${servername} is already stopped" - fn_script_log_error "${servername} is already stopped" - else - # Select graceful shutdown. - fn_stop_graceful_select - fi - # Check status again, a kill tmux session if graceful shutdown failed. - check_status.sh - if [ "${status}" != "0" ]; then - fn_stop_tmux - fi -} - -check.sh -fn_print_dots "${servername}" - -info_game.sh -fn_stop_pre_check -# Remove lockfile. -if [ -f "${lockdir}/${selfname}.lock" ]; then - rm -f "${lockdir:?}/${selfname}.lock" -fi - -if [ -z "${exitbypass}" ]; then - core_exit.sh -fi diff --git a/lgsm/functions/command_test_alert.sh b/lgsm/functions/command_test_alert.sh deleted file mode 100644 index 7fe61e48a9..0000000000 --- a/lgsm/functions/command_test_alert.sh +++ /dev/null @@ -1,19 +0,0 @@ -#!/bin/bash -# LinuxGSM command_test_alert.sh module -# Author: Daniel Gibbs -# Contributors: http://linuxgsm.com/contrib -# Website: https://linuxgsm.com -# Description: Sends a test alert. - -commandname="TEST-ALERT" -commandaction="Sending Alert" -functionselfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")" -fn_firstcommand_set - -fn_print_dots "${servername}" -check.sh -info_game.sh -alert="test" -alert.sh - -core_exit.sh diff --git a/lgsm/functions/command_ts3_server_pass.sh b/lgsm/functions/command_ts3_server_pass.sh deleted file mode 100644 index be0816d15f..0000000000 --- a/lgsm/functions/command_ts3_server_pass.sh +++ /dev/null @@ -1,57 +0,0 @@ -#!/bin/bash -# LinuxGSM command_ts3_server_pass.sh module -# Author: Daniel Gibbs -# Contributors: http://linuxgsm.com/contrib -# Website: https://linuxgsm.com -# Description: Changes TS3 serveradmin password. - -commandname="CHANGE-PASSWORD" -commandaction="Changing password" -functionselfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")" -fn_firstcommand_set - -fn_serveradmin_password_prompt() { - fn_print_header - fn_print_information_nl "You are about to change the ${gamename} ServerAdmin password." - fn_print_warning_nl "${gamename} will restart during this process." - echo -e "" - if ! fn_prompt_yn "Continue?" Y; then - exitcode=0 - core_exit.sh - fi - fn_script_log_info "Initiating ${gamename} ServerAdmin password change" - read -rp "Enter new password: " newpassword - fn_print_info_nl "Changing password" - fn_script_log_info "Changing password" -} - -fn_serveradmin_password_set() { - # Start server in "new password mode". - ts3serverpass="1" - exitbypass="1" - command_start.sh - fn_firstcommand_reset - fn_print_ok_nl "New password applied" - fn_script_log_pass "New ServerAdmin password applied" -} - -# Running functions. -check.sh -fn_serveradmin_password_prompt -if [ "${status}" != "0" ]; then - # Stop any running server. - exitbypass="1" - command_stop.sh - fn_firstcommand_reset - fn_serveradmin_password_set - parms="serveradmin_password=\"${newpassword}\" inifile=\"${servercfgfullpath}\" > /dev/null 2>&1" - ts3serverpass="0" - command_restart.sh - fn_firstcommand_reset -else - fn_serveradmin_password_set - command_stop.sh - fn_firstcommand_reset -fi - -core_exit.sh diff --git a/lgsm/functions/command_update.sh b/lgsm/functions/command_update.sh deleted file mode 100644 index ae5c2065c6..0000000000 --- a/lgsm/functions/command_update.sh +++ /dev/null @@ -1,40 +0,0 @@ -#!/bin/bash -# LinuxGSM command_update.sh module -# Author: Daniel Gibbs -# Contributors: http://linuxgsm.com/contrib -# Website: https://linuxgsm.com -# Description: Handles updating of servers. - -commandname="UPDATE" -commandaction="Updating" -functionselfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")" -fn_firstcommand_set - -fn_print_dots "" -check.sh -core_logs.sh -check_last_update.sh - -if [ "${shortname}" == "ts3" ]; then - update_ts3.sh -elif [ "${shortname}" == "mc" ]; then - update_minecraft.sh -elif [ "${shortname}" == "mcb" ]; then - update_minecraft_bedrock.sh -elif [ "${shortname}" == "pmc" ] || [ "${shortname}" == "vpmc" ] || [ "${shortname}" == "wmc" ]; then - update_papermc.sh -elif [ "${shortname}" == "fctr" ]; then - update_factorio.sh -elif [ "${shortname}" == "mta" ]; then - update_mta.sh -elif [ "${shortname}" == "jk2" ]; then - update_jediknight2.sh -elif [ "${shortname}" == "vints" ]; then - update_vintagestory.sh -elif [ "${shortname}" == "ut99" ]; then - update_ut99.sh -else - update_steamcmd.sh -fi - -core_exit.sh diff --git a/lgsm/functions/command_update_linuxgsm.sh b/lgsm/functions/command_update_linuxgsm.sh deleted file mode 100644 index 569bc7cdb9..0000000000 --- a/lgsm/functions/command_update_linuxgsm.sh +++ /dev/null @@ -1,236 +0,0 @@ -#!/bin/bash -# LinuxGSM command_update_linuxgsm.sh module -# Author: Daniel Gibbs -# Contributors: http://linuxgsm.com/contrib -# Website: https://linuxgsm.com -# Description: Deletes the functions dir to allow re-downloading of functions from GitHub. - -commandname="UPDATE-LGSM" -commandaction="Updating LinuxGSM" -functionselfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")" -fn_firstcommand_set - -check.sh -info_distro.sh - -fn_print_dots "" -fn_script_log_info "Updating LinuxGSM" - -fn_print_dots "Selecting repo" -fn_script_log_info "Selecting repo" -# Select remotereponame -curl --connect-timeout 10 -IsfL "https://raw.githubusercontent.com/${githubuser}/${githubrepo}/${githubbranch}/linuxgsm.sh" 1> /dev/null -if [ $? != "0" ]; then - curl --connect-timeout 10 -IsfL "https://bitbucket.org/${githubuser}/${githubrepo}/raw/${githubbranch}/linuxgsm.sh" 1> /dev/null - if [ $? != "0" ]; then - fn_print_fail_nl "Selecting repo: Unable to to access GitHub or Bitbucket repositories" - fn_script_log_fatal "Selecting repo: Unable to to access GitHub or Bitbucket repositories" - core_exit.sh - else - remotereponame="Bitbucket" - fn_print_ok_nl "Selecting repo: ${remotereponame}" - fi -else - remotereponame="GitHub" - fn_print_ok_nl "Selecting repo: ${remotereponame}" -fi - -# Check linuxsm.sh -echo -en "checking ${remotereponame} linuxgsm.sh...\c" -if [ "${remotereponame}" == "GitHub" ]; then - curl --connect-timeout 10 -IsfL "https://raw.githubusercontent.com/${githubuser}/${githubrepo}/${githubbranch}/linuxgsm.sh" 1> /dev/null -else - curl --connect-timeout 10 -IsfL "https://bitbucket.org/${githubuser}/${githubrepo}/raw/${githubbranch}/linuxgsm.sh" 1> /dev/null -fi -if [ $? != "0" ]; then - fn_print_fail_eol_nl - fn_script_log_fatal "Checking ${remotereponame} linuxgsm.sh" - fn_script_log_fatal "Curl returned error: $?" - core_exit.sh -fi - -if [ "${remotereponame}" == "GitHub" ]; then - tmp_script_diff=$(diff "${tmpdir}/linuxgsm.sh" <(curl --connect-timeout 10 -s "https://raw.githubusercontent.com/${githubuser}/${githubrepo}/${githubbranch}/linuxgsm.sh")) -else - tmp_script_diff=$(diff "${tmpdir}/linuxgsm.sh" <(curl --connect-timeout 10 -s "https://bitbucket.org/${githubuser}/${githubrepo}/raw/${githubbranch}/linuxgsm.sh")) -fi - -if [ "${tmp_script_diff}" != "" ]; then - fn_print_update_eol_nl - fn_script_log_update "Checking ${remotereponame} linuxgsm.sh" - rm -f "${tmpdir:?}/linuxgsm.sh" - fn_fetch_file_github "" "linuxgsm.sh" "${tmpdir}" "nochmodx" "norun" "noforcedl" "nohash" -else - fn_print_ok_eol_nl - fn_script_log_pass "Checking ${remotereponame} linuxgsm.sh" -fi - -# Check gameserver.sh -# Compare gameserver.sh against linuxgsm.sh in the tmp dir. -# Ignoring server specific vars. -echo -en "checking ${selfname}...\c" -fn_script_log_info "Checking ${selfname}" -script_diff=$(diff <(sed '\/shortname/d;\/gameservername/d;\/gamename/d;\/githubuser/d;\/githubrepo/d;\/githubbranch/d' "${tmpdir}/linuxgsm.sh") <(sed '\/shortname/d;\/gameservername/d;\/gamename/d;\/githubuser/d;\/githubrepo/d;\/githubbranch/d' "${rootdir}/${selfname}")) -if [ "${script_diff}" != "" ]; then - fn_print_update_eol_nl - fn_script_log_update "Checking ${selfname}" - echo -en "backup ${selfname}...\c" - fn_script_log_info "Backup ${selfname}" - if [ ! -d "${backupdir}/script" ]; then - mkdir -p "${backupdir}/script" - fi - cp "${rootdir}/${selfname}" "${backupdir}/script/${selfname}-$(date +"%m_%d_%Y_%M").bak" - if [ $? != 0 ]; then - fn_print_fail_eol_nl - fn_script_log_fatal "Backup ${selfname}" - core_exit.sh - else - fn_print_ok_eol_nl - fn_script_log_pass "Backup ${selfname}" - echo -e "backup location ${backupdir}/script/${selfname}-$(date +"%m_%d_%Y_%M").bak" - fn_script_log_pass "Backup location ${backupdir}/script/${selfname}-$(date +"%m_%d_%Y_%M").bak" - fi - - echo -en "copying ${selfname}...\c" - fn_script_log_info "copying ${selfname}" - cp "${tmpdir}/linuxgsm.sh" "${rootdir}/${selfname}" - sed -i "s+shortname=\"core\"+shortname=\"${shortname}\"+g" "${rootdir}/${selfname}" - sed -i "s+gameservername=\"core\"+gameservername=\"${gameservername}\"+g" "${rootdir}/${selfname}" - sed -i "s+gamename=\"core\"+gamename=\"${gamename}\"+g" "${rootdir}/${selfname}" - sed -i "s+githubuser=\"GameServerManagers\"+githubuser=\"${githubuser}\"+g" "${rootdir}/${selfname}" - sed -i "s+githubrepo=\"LinuxGSM\"+githubrepo=\"${githubrepo}\"+g" "${rootdir}/${selfname}" - sed -i "s+githubbranch=\"master\"+githubbranch=\"${githubbranch}\"+g" "${rootdir}/${selfname}" - - if [ $? != "0" ]; then - fn_print_fail_eol_nl - fn_script_log_fatal "copying ${selfname}" - core_exit.sh - else - fn_print_ok_eol_nl - fn_script_log_pass "copying ${selfname}" - fi -else - fn_print_ok_eol_nl - fn_script_log_info "Checking ${selfname}" -fi - -# Check _default.cfg. -echo -en "checking ${remotereponame} config _default.cfg...\c" -fn_script_log_info "Checking ${remotereponame} config _default.cfg" -if [ "${remotereponame}" == "GitHub" ]; then - curl --connect-timeout 10 -IsfL "https://raw.githubusercontent.com/${githubuser}/${githubrepo}/${githubbranch}/lgsm/config-default/config-lgsm/${gameservername}/_default.cfg" 1> /dev/null -else - curl --connect-timeout 10 -IsfL "https://bitbucket.org/${githubuser}/${githubrepo}/raw/${githubbranch}/lgsm/config-default/config-lgsm/${gameservername}/_default.cfg" 1> /dev/null -fi -if [ $? != "0" ]; then - fn_print_fail_eol_nl - fn_script_log_fatal "Checking ${remotereponame} config _default.cfg" - fn_script_log_fatal "Curl returned error: $?" - core_exit.sh -fi - -if [ "${remotereponame}" == "GitHub" ]; then - config_file_diff=$(diff "${configdirdefault}/config-lgsm/${gameservername}/_default.cfg" <(curl --connect-timeout 10 -s "https://raw.githubusercontent.com/${githubuser}/${githubrepo}/${githubbranch}/lgsm/config-default/config-lgsm/${gameservername}/_default.cfg")) -else - config_file_diff=$(diff "${configdirdefault}/config-lgsm/${gameservername}/_default.cfg" <(curl --connect-timeout 10 -s "https://bitbucket.org/${githubuser}/${githubrepo}/raw/${githubbranch}/lgsm/config-default/config-lgsm/${gameservername}/_default.cfg")) -fi - -if [ "${config_file_diff}" != "" ]; then - fn_print_update_eol_nl - fn_script_log_update "Checking ${remotereponame} config _default.cfg" - rm -f "${configdirdefault:?}/config-lgsm/${gameservername:?}/_default.cfg" - fn_fetch_file_github "lgsm/config-default/config-lgsm/${gameservername}" "_default.cfg" "${configdirdefault}/config-lgsm/${gameservername}" "nochmodx" "norun" "noforce" "nohash" - alert="config" - alert.sh -else - fn_print_ok_eol_nl - fn_script_log_pass "Checking ${remotereponame} config _default.cfg" -fi - -# Check distro csv. ${datadir}/${distroid}-${distroversioncsv}.csv -if [ -f "${datadir}/${distroid}-${distroversioncsv}.csv" ]; then - echo -en "checking ${remotereponame} config ${distroid}-${distroversioncsv}.csv...\c" - fn_script_log_info "Checking ${remotereponame} ${distroid}-${distroversioncsv}.csv" - if [ "${remotereponame}" == "GitHub" ]; then - curl --connect-timeout 10 -IsfL "https://raw.githubusercontent.com/${githubuser}/${githubrepo}/${githubbranch}/lgsm/data/${distroid}-${distroversioncsv}.csv" 1> /dev/null - else - curl --connect-timeout 10 -IsfL "https://bitbucket.org/${githubuser}/${githubrepo}/raw/${githubbranch}/lgsm/data/${distroid}-${distroversioncsv}.csv" 1> /dev/null - fi - if [ $? != "0" ]; then - fn_print_fail_eol_nl - fn_script_log_fatal "Checking ${remotereponame} ${distroid}-${distroversioncsv}.csv" - fn_script_log_fatal "Curl returned error: $?" - core_exit.sh - fi - - if [ "${remotereponame}" == "GitHub" ]; then - config_file_diff=$(diff "${datadir}/${distroid}-${distroversioncsv}.csv" <(curl --connect-timeout 10 -s "https://raw.githubusercontent.com/${githubuser}/${githubrepo}/${githubbranch}/lgsm/data/${distroid}-${distroversioncsv}.csv")) - else - config_file_diff=$(diff "${datadir}/${distroid}-${distroversioncsv}.csv" <(curl --connect-timeout 10 -s "https://bitbucket.org/${githubuser}/${githubrepo}/raw/${githubbranch}/lgsm/data/${distroid}-${distroversioncsv}.csv")) - fi - - if [ "${config_file_diff}" != "" ]; then - fn_print_update_eol_nl - fn_script_log_update "Checking ${remotereponame} ${distroid}-${distroversioncsv}.csv" - rm -f "${datadir:?}/${distroid}-${distroversioncsv}.csv" - fn_fetch_file_github "lgsm/data" "${distroid}-${distroversioncsv}.csv" "${datadir}" "nochmodx" "norun" "noforce" "nohash" - else - fn_print_ok_eol_nl - fn_script_log_pass "Checking ${remotereponame} ${distroid}-${distroversioncsv}.csv" - fi -fi -# Check and update modules. -if [ -n "${functionsdir}" ]; then - if [ -d "${functionsdir}" ]; then - ( - cd "${functionsdir}" || exit - for functionfile in *; do - # check if module exists in the repo and remove if missing. - # commonly used if module names change. - echo -en "checking ${remotereponame} module ${functionfile}...\c" - github_file_url_dir="lgsm/functions" - if [ "${remotereponame}" == "GitHub" ]; then - curl --connect-timeout 10 -IsfL "https://raw.githubusercontent.com/${githubuser}/${githubrepo}/${githubbranch}/${github_file_url_dir}/${functionfile}" 1> /dev/null - else - curl --connect-timeout 10 -IsfL "https://bitbucket.org/${githubuser}/${githubrepo}/raw/${githubbranch}/${github_file_url_dir}/${functionfile}" 1> /dev/null - fi - if [ $? != 0 ]; then - fn_print_error_eol_nl - fn_script_log_error "Checking ${remotereponame} module ${functionfile}" - echo -en "removing module ${functionfile}...\c" - if ! rm -f "${functionfile:?}"; then - fn_print_fail_eol_nl - fn_script_log_fatal "Removing module ${functionfile}" - core_exit.sh - else - fn_print_ok_eol_nl - fn_script_log_pass "Removing module ${functionfile}" - fi - else - # compare file - if [ "${remotereponame}" == "GitHub" ]; then - function_file_diff=$(diff "${functionsdir}/${functionfile}" <(curl --connect-timeout 10 -s "https://raw.githubusercontent.com/${githubuser}/${githubrepo}/${githubbranch}/${github_file_url_dir}/${functionfile}")) - else - function_file_diff=$(diff "${functionsdir}/${functionfile}" <(curl --connect-timeout 10 -s "https://bitbucket.org/${githubuser}/${githubrepo}/raw/${githubbranch}/${github_file_url_dir}/${functionfile}")) - fi - - # results - if [ "${function_file_diff}" != "" ]; then - fn_print_update_eol_nl - fn_script_log_update "Checking ${remotereponame} module ${functionfile}" - rm -rf "${functionsdir:?}/${functionfile}" - fn_update_function - else - fn_print_ok_eol_nl - fn_script_log_pass "Checking ${remotereponame} module ${functionfile}" - fi - fi - done - ) - fi -fi - -fn_print_ok_nl "Updating functions" -fn_script_log_pass "Updating functions" - -core_exit.sh diff --git a/lgsm/functions/command_validate.sh b/lgsm/functions/command_validate.sh deleted file mode 100644 index 15257a3e28..0000000000 --- a/lgsm/functions/command_validate.sh +++ /dev/null @@ -1,49 +0,0 @@ -#!/bin/bash -# LinuxGSM command_validate.sh module -# Author: Daniel Gibbs -# Contributors: http://linuxgsm.com/contrib -# Website: https://linuxgsm.com -# Description: Runs a server validation. - -commandname="VALIDATE" -commandaction="Validating" -functionselfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")" -fn_firstcommand_set - -fn_validate() { - fn_print_warn "Validate might overwrite some customised files" - fn_script_log_warn "${commandaction} server: Validate might overwrite some customised files" - totalseconds=3 - for seconds in {3..1}; do - fn_print_warn "Validate might overwrite some customised files: ${totalseconds}" - totalseconds=$((totalseconds - 1)) - sleep 1 - if [ "${seconds}" == "0" ]; then - break - fi - done - fn_print_warn_nl "Validate might overwrite some customised files" - - fn_dl_steamcmd -} - -# The location where the builds are checked and downloaded. -remotelocation="SteamCMD" -check.sh - -fn_print_dots "${remotelocation}" - -if [ "${status}" != "0" ]; then - fn_print_restart_warning - exitbypass=1 - command_stop.sh - fn_firstcommand_reset - fn_validate - exitbypass=1 - command_start.sh - fn_firstcommand_reset -else - fn_validate -fi - -core_exit.sh diff --git a/lgsm/functions/command_wipe.sh b/lgsm/functions/command_wipe.sh deleted file mode 100644 index e1677e8276..0000000000 --- a/lgsm/functions/command_wipe.sh +++ /dev/null @@ -1,183 +0,0 @@ -#!/bin/bash -# LinuxGSM command_backup.sh module -# Author: Daniel Gibbs -# Contributors: http://linuxgsm.com/contrib -# Website: https://linuxgsm.com -# Description: Wipes server data, useful after updates for some games like Rust. - -commandname="WIPE" -commandaction="Wiping" -functionselfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")" -fn_firstcommand_set - -# Provides an exit code upon error. -fn_wipe_exit_code() { - exitcode=$? - if [ "${exitcode}" != 0 ]; then - fn_print_fail_eol_nl - core_exit.sh - else - fn_print_ok_eol_nl - fi -} - -# Removes files to wipe server. -fn_wipe_files() { - fn_print_start_nl "${wipetype}" - fn_script_log_info "${wipetype}" - - # Remove Map files - if [ -n "${serverwipe}" ] || [ -n "${mapwipe}" ]; then - if [ -n "$(find "${serveridentitydir}" -type f -name "*.map")" ]; then - echo -en "removing .map file(s)..." - fn_script_log_info "removing *.map file(s)" - fn_sleep_time - find "${serveridentitydir:?}" -type f -name "*.map" -printf "%f\n" >> "${lgsmlog}" - find "${serveridentitydir:?}" -type f -name "*.map" -delete | tee -a "${lgsmlog}" - fn_wipe_exit_code - else - echo -e "no .map file(s) to remove" - fn_sleep_time - fn_script_log_pass "no .map file(s) to remove" - fi - fi - # Remove Save files. - if [ -n "${serverwipe}" ] || [ -n "${mapwipe}" ]; then - if [ -n "$(find "${serveridentitydir}" -type f -name "*.sav*")" ]; then - echo -en "removing .sav file(s)..." - fn_script_log_info "removing .sav file(s)" - fn_sleep_time - find "${serveridentitydir:?}" -type f -name "*.sav*" -printf "%f\n" >> "${lgsmlog}" - find "${serveridentitydir:?}" -type f -name "*.sav*" -delete - fn_wipe_exit_code - else - echo -e "no .sav file(s) to remove" - fn_script_log_pass "no .sav file(s) to remove" - fn_sleep_time - fi - fi - # Remove db files for full wipe. - # Excluding player.tokens.db for Rust+. - if [ -n "${serverwipe}" ]; then - if [ -n "$(find "${serveridentitydir}" -type f ! -name 'player.tokens.db' -name "*.db")" ]; then - echo -en "removing .db file(s)..." - fn_script_log_info "removing .db file(s)" - fn_sleep_time - find "${serveridentitydir:?}" -type f ! -name 'player.tokens.db' -name "*.db" -printf "%f\n" >> "${lgsmlog}" - find "${serveridentitydir:?}" -type f ! -name 'player.tokens.db' -name "*.db" -delete - fn_wipe_exit_code - else - echo -e "no .db file(s) to remove" - fn_sleep_time - fn_script_log_pass "no .db file(s) to remove" - fi - fi -} - -fn_map_wipe_warning() { - fn_print_warn "Map wipe will reset the map data and keep blueprint data" - fn_script_log_warn "Map wipe will reset the map data and keep blueprint data" - totalseconds=3 - for seconds in {3..1}; do - fn_print_warn "Map wipe will reset the map data and keep blueprint data: ${totalseconds}" - totalseconds=$((totalseconds - 1)) - sleep 1 - if [ "${seconds}" == "0" ]; then - break - fi - done - fn_print_warn_nl "Map wipe will reset the map data and keep blueprint data" -} - -fn_full_wipe_warning() { - fn_print_warn "Server wipe will reset the map data and remove blueprint data" - fn_script_log_warn "Server wipe will reset the map data and remove blueprint data" - totalseconds=3 - for seconds in {3..1}; do - fn_print_warn "Server wipe will reset the map data and remove blueprint data: ${totalseconds}" - totalseconds=$((totalseconds - 1)) - sleep 1 - if [ "${seconds}" == "0" ]; then - break - fi - done - fn_print_warn_nl "Server wipe will reset the map data and remove blueprint data" -} - -# Will change the seed if the seed is not defined by the user. -fn_wipe_random_seed() { - if [ -f "${datadir}/${selfname}-seed.txt" ] && [ -n "${randomseed}" ]; then - shuf -i 1-2147483647 -n 1 > "${datadir}/${selfname}-seed.txt" - seed=$(cat "${datadir}/${selfname}-seed.txt") - randomseed=1 - echo -en "generating new random seed (${cyan}${seed}${default})..." - fn_script_log_pass "Generating new random seed (${cyan}${seed}${default})" - fn_sleep_time - fn_print_ok_eol_nl - fi -} - -# A summary of what wipe is going to do. -fn_wipe_details() { - fn_print_information_nl "Wipe does not remove Rust+ data." - echo -en "* Wipe map data: " - if [ -n "${serverwipe}" ] || [ -n "${mapwipe}" ]; then - fn_print_yes_eol_nl - else - fn_print_no_eol_nl - fi - - echo -en "* Wipe blueprint data: " - if [ -n "${serverwipe}" ]; then - fn_print_yes_eol_nl - else - fn_print_no_eol_nl - fi - - echo -en "* Change Procedural Map seed: " - if [ -n "${randomseed}" ]; then - fn_print_yes_eol_nl - else - fn_print_no_eol_nl - fi -} - -fn_print_dots "" -check.sh -fix_rust.sh - -# Check if there is something to wipe. -if [ -n "$(find "${serveridentitydir}" -type f -name "*.map")" ] || [ -n "$(find "${serveridentitydir}" -type f -name "*.sav*")" ] && [ -n "$(find "${serveridentitydir}" -type f ! -name 'player.tokens.db' -name "*.db")" ]; then - if [ -n "${serverwipe}" ]; then - wipetype="Full wipe" - fn_full_wipe_warning - fn_wipe_details - elif [ -n "${mapwipe}" ]; then - wipetype="Map wipe" - fn_map_wipe_warning - fn_wipe_details - fi - check_status.sh - if [ "${status}" != "0" ]; then - fn_print_restart_warning - exitbypass=1 - command_stop.sh - fn_firstcommand_reset - fn_wipe_files - fn_wipe_random_seed - fn_print_complete_nl "${wipetype}" - fn_script_log_pass "${wipetype}" - exitbypass=1 - command_start.sh - fn_firstcommand_reset - else - fn_wipe_files - fn_wipe_random_seed - fn_print_complete_nl "${wipetype}" - fn_script_log_pass "${wipetype}" - fi -else - fn_print_ok_nl "Wipe not required" - fn_script_log_pass "Wipe not required" -fi -core_exit.sh diff --git a/lgsm/functions/compress_unreal2_maps.sh b/lgsm/functions/compress_unreal2_maps.sh deleted file mode 100644 index 0c32d3c77b..0000000000 --- a/lgsm/functions/compress_unreal2_maps.sh +++ /dev/null @@ -1,35 +0,0 @@ -#!/bin/bash -# LinuxGSM compress_unreal2_maps.sh module -# Author: Daniel Gibbs -# Contributors: http://linuxgsm.com/contrib -# Website: https://linuxgsm.com -# Description: Compresses unreal maps. - -commandname="MAP-COMPRESSOR" -commandaction="Compressing maps" -functionselfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")" -fn_firstcommand_set - -check.sh -fn_print_header -echo -e "Will compress all maps in:" -echo -e "" -pwd -echo -e "" -echo -e "Compressed maps saved to:" -echo -e "" -echo -e "${compressedmapsdir}" -echo -e "" -if ! fn_prompt_yn "Start compression?" Y; then - exitcode=0 - core_exit.sh -fi -mkdir -pv "${compressedmapsdir}" > /dev/null 2>&1 -rm -rfv "${serverfiles:?}/Maps/"*.ut2.uz2 -cd "${systemdir}" || exit -for map in "${serverfiles}/Maps/"*; do - ./ucc-bin compress "${map}" --nohomedir -done -mv -fv "${serverfiles}/Maps/"*.ut2.uz2 "${compressedmapsdir}" - -core_exit.sh diff --git a/lgsm/functions/compress_ut99_maps.sh b/lgsm/functions/compress_ut99_maps.sh deleted file mode 100644 index 9aa074ba9a..0000000000 --- a/lgsm/functions/compress_ut99_maps.sh +++ /dev/null @@ -1,35 +0,0 @@ -#!/bin/bash -# LinuxGSM compress_ut99_maps.sh module -# Author: Daniel Gibbs -# Contributors: http://linuxgsm.com/contrib -# Website: https://linuxgsm.com -# Description: Compresses unreal maps. - -commandname="MAP-COMPRESSOR" -commandaction="Compressing maps" -functionselfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")" -fn_firstcommand_set - -check.sh -fn_print_header -echo -e "Will compress all maps in:" -echo -e "" -pwd -echo -e "" -echo -e "Compressed maps saved to:" -echo -e "" -echo -e "${compressedmapsdir}" -echo -e "" -if ! fn_prompt_yn "Start compression?" Y; then - exitcode=0 - core_exit.sh -fi -mkdir -pv "${compressedmapsdir}" > /dev/null 2>&1 -rm -rfv "${serverfiles:?}/Maps/"*.unr.uz -cd "${systemdir}" || exit -for map in "${serverfiles}/Maps/"*; do - ./ucc-bin compress "${map}" --nohomedir -done -mv -fv "${serverfiles}/Maps/"*.unr.uz "${compressedmapsdir}" - -core_exit.sh diff --git a/lgsm/functions/core_dl.sh b/lgsm/functions/core_dl.sh deleted file mode 100644 index 53a60cc1ad..0000000000 --- a/lgsm/functions/core_dl.sh +++ /dev/null @@ -1,625 +0,0 @@ -#!/bin/bash -# LinuxGSM core_dl.sh module -# Author: Daniel Gibbs -# Contributors: http://linuxgsm.com/contrib -# Website: https://linuxgsm.com -# Description: Deals with all downloads for LinuxGSM. - -# remote_fileurl: The URL of the file: http://example.com/dl/File.tar.bz2 -# local_filedir: location the file is to be saved: /home/server/lgsm/tmp -# local_filename: name of file (this can be different from the url name): file.tar.bz2 -# chmodx: Optional, set to "chmodx" to make file executable using chmod +x -# run: Optional, set run to execute the file after download -# forcedl: Optional, force re-download of file even if exists -# hash: Optional, set an hash sum and will compare it against the file. -# -# Downloads can be defined in code like so: -# fn_fetch_file "${remote_fileurl}" "${remote_fileurl_backup}" "${remote_fileurl_name}" "${remote_fileurl_backup_name}" "${local_filedir}" "${local_filename}" "${chmodx}" "${run}" "${forcedl}" "${hash}" -# fn_fetch_file "http://example.com/file.tar.bz2" "http://example.com/file2.tar.bz2" "file.tar.bz2" "file2.tar.bz2" "/some/dir" "file.tar.bz2" "chmodx" "run" "forcedl" "10cd7353aa9d758a075c600a6dd193fd" - -functionselfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")" - -fn_dl_steamcmd() { - fn_print_start_nl "${remotelocation}" - fn_script_log_info "${commandaction} ${selfname}: ${remotelocation}" - if [ -n "${branch}" ]; then - echo -e "Branch: ${branch}" - fn_script_log_info "Branch: ${branch}" - fi - if [ -n "${betapassword}" ]; then - echo -e "Branch password: ${betapassword}" - fn_script_log_info "Branch password: ${betapassword}" - fi - if [ -d "${steamcmddir}" ]; then - cd "${steamcmddir}" || exit - fi - - # Unbuffer will allow the output of steamcmd not buffer allowing a smooth output. - # unbuffer us part of the expect package. - if [ "$(command -v unbuffer)" ]; then - unbuffer="unbuffer" - fi - - # Validate will be added as a parameter if required. - if [ "${commandname}" == "VALIDATE" ] || [ "${commandname}" == "INSTALL" ]; then - validate="validate" - fi - - # To do error checking for SteamCMD the output of steamcmd will be saved to a log. - steamcmdlog="${lgsmlogdir}/${selfname}-steamcmd.log" - - # clear previous steamcmd log - if [ -f "${steamcmdlog}" ]; then - rm -f "${steamcmdlog:?}" - fi - counter=0 - while [ "${counter}" == "0" ] || [ "${exitcode}" != "0" ]; do - counter=$((counter + 1)) - # Select SteamCMD parameters - # If GoldSrc (appid 90) servers. GoldSrc (appid 90) require extra commands. - if [ "${appid}" == "90" ]; then - # If using a specific branch. - if [ -n "${branch}" ] && [ -n "${betapassword}" ]; then - ${unbuffer} ${steamcmdcommand} +force_install_dir "${serverfiles}" +login "${steamuser}" "${steampass}" +app_set_config 90 mod "${appidmod}" +app_update "${appid}" -beta "${branch}" -betapassword "${betapassword}" ${validate} +quit | uniq | tee -a "${lgsmlog}" "${steamcmdlog}" - elif [ -n "${branch}" ]; then - ${unbuffer} ${steamcmdcommand} +force_install_dir "${serverfiles}" +login "${steamuser}" "${steampass}" +app_set_config 90 mod "${appidmod}" +app_update "${appid}" -beta "${branch}" ${validate} +quit | uniq | tee -a "${lgsmlog}" "${steamcmdlog}" - else - ${unbuffer} ${steamcmdcommand} +force_install_dir "${serverfiles}" +login "${steamuser}" "${steampass}" +app_set_config 90 mod "${appidmod}" +app_update "${appid}" ${validate} +quit | uniq | tee -a "${lgsmlog}" "${steamcmdlog}" - fi - # Force Windows Platform type. - elif [ "${steamcmdforcewindows}" == "yes" ]; then - if [ -n "${branch}" ] && [ -n "${betapassword}" ]; then - ${unbuffer} ${steamcmdcommand} +@sSteamCmdForcePlatformType windows +force_install_dir "${serverfiles}" +login "${steamuser}" "${steampass}" +app_update "${appid}" -beta "${branch}" -betapassword "${betapassword}" ${validate} +quit | uniq | tee -a "${lgsmlog}" "${steamcmdlog}" - elif [ -n "${branch}" ]; then - ${unbuffer} ${steamcmdcommand} +@sSteamCmdForcePlatformType windows +force_install_dir "${serverfiles}" +login "${steamuser}" "${steampass}" +app_update "${appid}" -beta "${branch}" ${validate} +quit | uniq | tee -a "${lgsmlog}" "${steamcmdlog}" - else - ${unbuffer} ${steamcmdcommand} +@sSteamCmdForcePlatformType windows +force_install_dir "${serverfiles}" +login "${steamuser}" "${steampass}" +app_update "${appid}" ${validate} +quit | uniq | tee -a "${lgsmlog}" "${steamcmdlog}" - fi - # All other servers. - else - if [ -n "${branch}" ] && [ -n "${betapassword}" ]; then - ${unbuffer} ${steamcmdcommand} +force_install_dir "${serverfiles}" +login "${steamuser}" "${steampass}" +app_update "${appid}" -beta "${branch}" -betapassword "${betapassword}" ${validate} +quit | uniq | tee -a "${lgsmlog}" "${steamcmdlog}" - elif [ -n "${branch}" ]; then - ${unbuffer} ${steamcmdcommand} +force_install_dir "${serverfiles}" +login "${steamuser}" "${steampass}" +app_update "${appid}" -beta "${branch}" ${validate} +quit | uniq | tee -a "${lgsmlog}" "${steamcmdlog}" - else - ${unbuffer} ${steamcmdcommand} +force_install_dir "${serverfiles}" +login "${steamuser}" "${steampass}" +app_update "${appid}" ${validate} +quit | uniq | tee -a "${lgsmlog}" "${steamcmdlog}" - fi - fi - - # Error checking for SteamCMD. Some errors will loop to try again and some will just exit. - # Check also if we have more errors than retries to be sure that we do not loop to many times and error out. - exitcode=$? - if [ -n "$(grep -i "Error!" "${steamcmdlog}" | tail -1)" ] && [ "$(grep -ic "Error!" "${steamcmdlog}")" -ge "${counter}" ]; then - # Not enough space. - if [ -n "$(grep "0x202" "${steamcmdlog}" | tail -1)" ]; then - fn_print_failure_nl "${commandaction} ${selfname}: ${remotelocation}: Not enough disk space to download server files" - fn_script_log_fatal "${commandaction} ${selfname}: ${remotelocation}: Not enough disk space to download server files" - core_exit.sh - # Not enough space. - elif [ -n "$(grep "0x212" "${steamcmdlog}" | tail -1)" ]; then - fn_print_failure_nl "${commandaction} ${selfname}: ${remotelocation}: Not enough disk space to download server files" - fn_script_log_fatal "${commandaction} ${selfname}: ${remotelocation}: Not enough disk space to download server files" - core_exit.sh - # Need tp purchase game. - elif [ -n "$(grep "No subscription" "${steamcmdlog}" | tail -1)" ]; then - fn_print_failure_nl "${commandaction} ${selfname}: ${remotelocation}: Steam account does not have a license for the required game" - fn_script_log_fatal "${commandaction} ${selfname}: ${remotelocation}: Steam account does not have a license for the required game" - core_exit.sh - # Two-factor authentication failure - elif [ -n "$(grep "Two-factor code mismatch" "${steamcmdlog}" | tail -1)" ]; then - fn_print_failure_nl "${commandaction} ${selfname}: ${remotelocation}: Two-factor authentication failure" - fn_script_log_fatal "${commandaction} ${selfname}: ${remotelocation}: Two-factor authentication failure" - core_exit.sh - # Incorrect Branch password - elif [ -n "$(grep "Password check for AppId" "${steamcmdlog}" | tail -1)" ]; then - fn_print_failure_nl "${commandaction} ${selfname}: ${remotelocation}: betapassword is incorrect" - fn_script_log_fatal "${commandaction} ${selfname}: ${remotelocation}: betapassword is incorrect" - core_exit.sh - # Update did not finish. - elif [ -n "$(grep "0x402" "${steamcmdlog}" | tail -1)" ] || [ -n "$(grep "0x602" "${steamcmdlog}" | tail -1)" ]; then - fn_print_error2_nl "${commandaction} ${selfname}: ${remotelocation}: Update required but not completed - check network" - fn_script_log_error "${commandaction} ${selfname}: ${remotelocation}: Update required but not completed - check network" - else - fn_print_error2_nl "${commandaction} ${selfname}: ${remotelocation}: Unknown error occured" - echo -en "Please provide content log to LinuxGSM developers https://linuxgsm.com/steamcmd-error" - fn_script_log_error "${commandaction} ${selfname}: ${remotelocation}: Unknown error occured" - fi - elif [ "${exitcode}" != 0 ]; then - fn_print_error2_nl "${commandaction} ${selfname}: ${remotelocation}: Exit code: ${exitcode}" - fn_script_log_error "${commandaction} ${selfname}: ${remotelocation}: Exit code: ${exitcode}" - else - fn_print_complete_nl "${commandaction} ${selfname}: ${remotelocation}" - fn_script_log_pass "${commandaction} ${selfname}: ${remotelocation}" - fi - - if [ "${counter}" -gt "10" ]; then - fn_print_failure_nl "${commandaction} ${selfname}: ${remotelocation}: Did not complete the download, too many retrys" - fn_script_log_fatal "${commandaction} ${selfname}: ${remotelocation}: Did not complete the download, too many retrys" - core_exit.sh - fi - done -} - -# Emptys contents of the LinuxGSM tmpdir. -fn_clear_tmp() { - echo -en "clearing LinuxGSM tmp directory..." - if [ -d "${tmpdir}" ]; then - rm -rf "${tmpdir:?}/"* - local exitcode=$? - if [ "${exitcode}" != 0 ]; then - fn_print_error_eol_nl - fn_script_log_error "clearing LinuxGSM tmp directory" - else - fn_print_ok_eol_nl - fn_script_log_pass "clearing LinuxGSM tmp directory" - fi - fi -} - -fn_dl_hash() { - # Runs Hash Check if available. - if [ "${hash}" != "0" ] && [ "${hash}" != "nohash" ] && [ "${hash}" != "nomd5" ]; then - # MD5 - if [ "${#hash}" == "32" ]; then - hashbin="md5sum" - hashtype="MD5" - # SHA1 - elif [ "${#hash}" == "40" ]; then - hashbin="sha1sum" - hashtype="SHA1" - # SHA256 - elif [ "${#hash}" == "64" ]; then - hashbin="sha256sum" - hashtype="SHA256" - # SHA512 - elif [ "${#hash}" == "128" ]; then - hashbin="sha512sum" - hashtype="SHA512" - else - fn_script_log_error "hash lengh not known for hash type" - fn_print_error_nl "hash lengh not known for hash type" - core_exit.sh - fi - echo -en "verifying ${local_filename} with ${hashtype}..." - fn_sleep_time - hashsumcmd=$(${hashbin} "${local_filedir}/${local_filename}" | awk '{print $1}') - if [ "${hashsumcmd}" != "${hash}" ]; then - fn_print_fail_eol_nl - echo -e "${local_filename} returned ${hashtype} checksum: ${hashsumcmd}" - echo -e "expected ${hashtype} checksum: ${hash}" - fn_script_log_fatal "Verifying ${local_filename} with ${hashtype}" - fn_script_log_info "${local_filename} returned ${hashtype} checksum: ${hashsumcmd}" - fn_script_log_info "Expected ${hashtype} checksum: ${hash}" - core_exit.sh - else - fn_print_ok_eol_nl - fn_script_log_pass "Verifying ${local_filename} with ${hashtype}" - fn_script_log_info "${local_filename} returned ${hashtype} checksum: ${hashsumcmd}" - fn_script_log_info "Expected ${hashtype} checksum: ${hash}" - fi - fi -} - -# Extracts bzip2, gzip or zip files. -# Extracts can be defined in code like so: -# fn_dl_extract "${local_filedir}" "${local_filename}" "${extractdest}" "${extractsrc}" -# fn_dl_extract "/home/gameserver/lgsm/tmp" "file.tar.bz2" "/home/gamserver/serverfiles" -fn_dl_extract() { - local_filedir="${1}" - local_filename="${2}" - extractdest="${3}" - extractsrc="${4}" - # Extracts archives. - echo -en "extracting ${local_filename}..." - - if [ ! -d "${extractdest}" ]; then - mkdir "${extractdest}" - fi - if [ ! -f "${local_filedir}/${local_filename}" ]; then - fn_print_fail_eol_nl - echo -en "file ${local_filedir}/${local_filename} not found" - fn_script_log_fatal "Extracting ${local_filename}" - fn_script_log_fatal "File ${local_filedir}/${local_filename} not found" - core_exit.sh - fi - mime=$(file -b --mime-type "${local_filedir}/${local_filename}") - if [ "${mime}" == "application/gzip" ] || [ "${mime}" == "application/x-gzip" ]; then - if [ -n "${extractsrc}" ]; then - extractcmd=$(tar -zxf "${local_filedir}/${local_filename}" -C "${extractdest}" --strip-components=1 "${extractsrc}") - else - extractcmd=$(tar -zxf "${local_filedir}/${local_filename}" -C "${extractdest}") - fi - elif [ "${mime}" == "application/x-bzip2" ]; then - if [ -n "${extractsrc}" ]; then - extractcmd=$(tar -jxf "${local_filedir}/${local_filename}" -C "${extractdest}" --strip-components=1 "${extractsrc}") - else - extractcmd=$(tar -jxf "${local_filedir}/${local_filename}" -C "${extractdest}") - fi - elif [ "${mime}" == "application/x-xz" ]; then - if [ -n "${extractsrc}" ]; then - extractcmd=$(tar -Jxf "${local_filedir}/${local_filename}" -C "${extractdest}" --strip-components=1 "${extractsrc}") - else - extractcmd=$(tar -Jxf "${local_filedir}/${local_filename}" -C "${extractdest}") - fi - elif [ "${mime}" == "application/zip" ]; then - if [ -n "${extractsrc}" ]; then - extractcmd=$(unzip -qoj -d "${extractdest}" "${local_filedir}/${local_filename}" "${extractsrc}"/*) - else - extractcmd=$(unzip -qo -d "${extractdest}" "${local_filedir}/${local_filename}") - fi - fi - local exitcode=$? - if [ "${exitcode}" != 0 ]; then - fn_print_fail_eol_nl - fn_script_log_fatal "Extracting ${local_filename}" - if [ -f "${lgsmlog}" ]; then - echo -e "${extractcmd}" >> "${lgsmlog}" - fi - echo -e "${extractcmd}" - core_exit.sh - else - fn_print_ok_eol_nl - fn_script_log_pass "Extracting ${local_filename}" - fi -} - -# Trap to remove file download if canceled before completed. -fn_fetch_trap() { - echo -e "" - echo -en "downloading ${local_filename}..." - fn_print_canceled_eol_nl - fn_script_log_info "Downloading ${local_filename}...CANCELED" - fn_sleep_time - rm -f "${local_filedir:?}/${local_filename}" - echo -en "downloading ${local_filename}..." - fn_print_removed_eol_nl - fn_script_log_info "Downloading ${local_filename}...REMOVED" - core_exit.sh -} - -# Will check a file exists and download it. Will not exit if fails to download. -fn_check_file() { - remote_fileurl="${1}" - remote_fileurl_backup="${2}" - remote_fileurl_name="${3}" - remote_fileurl_backup_name="${4}" - remote_filename="${5}" - # If backup fileurl exists include it. - if [ -n "${remote_fileurl_backup}" ]; then - # counter set to 0 to allow second try - counter=0 - remote_fileurls_array=(remote_fileurl remote_fileurl_backup) - else - # counter set to 1 to not allow second try - counter=1 - remote_fileurls_array=(remote_fileurl) - fi - for remote_fileurl_array in "${remote_fileurls_array[@]}"; do - if [ "${remote_fileurl_array}" == "remote_fileurl" ]; then - fileurl="${remote_fileurl}" - fileurl_name="${remote_fileurl_name}" - elif [ "${remote_fileurl_array}" == "remote_fileurl_backup" ]; then - fileurl="${remote_fileurl_backup}" - fileurl_name="${remote_fileurl_backup_name}" - fi - counter=$((counter + 1)) - echo -en "checking ${fileurl_name} ${remote_filename}...\c" - curlcmd=$(curl --output /dev/null --silent --head --fail "${fileurl}" 2>&1) - local exitcode=$? - - # On first try will error. On second try will fail. - if [ "${exitcode}" != 0 ]; then - if [ ${counter} -ge 2 ]; then - fn_print_fail_eol_nl - if [ -f "${lgsmlog}" ]; then - fn_script_log_fatal "Checking ${remote_filename}" - fn_script_log_fatal "${fileurl}" - checkflag=1 - fi - else - fn_print_error_eol_nl - if [ -f "${lgsmlog}" ]; then - fn_script_log_error "Checking ${remote_filename}" - fn_script_log_error "${fileurl}" - checkflag=2 - fi - fi - else - fn_print_ok_eol - echo -en "\033[2K\\r" - if [ -f "${lgsmlog}" ]; then - fn_script_log_pass "Checking ${remote_filename}" - checkflag=0 - fi - break - fi - done - - if [ -f "${local_filedir}/${local_filename}" ]; then - fn_dl_hash - # Execute file if run is set. - if [ "${run}" == "run" ]; then - # shellcheck source=/dev/null - source "${local_filedir}/${local_filename}" - fi - fi -} - -fn_fetch_file() { - remote_fileurl="${1}" - remote_fileurl_backup="${2}" - remote_fileurl_name="${3}" - remote_fileurl_backup_name="${4}" - local_filedir="${5}" - local_filename="${6}" - chmodx="${7:-0}" - run="${8:-0}" - forcedl="${9:-0}" - hash="${10:-0}" - - # Download file if missing or download forced. - if [ ! -f "${local_filedir}/${local_filename}" ] || [ "${forcedl}" == "forcedl" ]; then - # If backup fileurl exists include it. - if [ -n "${remote_fileurl_backup}" ]; then - # counter set to 0 to allow second try - counter=0 - remote_fileurls_array=(remote_fileurl remote_fileurl_backup) - else - # counter set to 1 to not allow second try - counter=1 - remote_fileurls_array=(remote_fileurl) - fi - for remote_fileurl_array in "${remote_fileurls_array[@]}"; do - if [ "${remote_fileurl_array}" == "remote_fileurl" ]; then - fileurl="${remote_fileurl}" - fileurl_name="${remote_fileurl_name}" - elif [ "${remote_fileurl_array}" == "remote_fileurl_backup" ]; then - fileurl="${remote_fileurl_backup}" - fileurl_name="${remote_fileurl_backup_name}" - fi - counter=$((counter + 1)) - if [ ! -d "${local_filedir}" ]; then - mkdir -p "${local_filedir}" - fi - # Trap will remove part downloaded files if canceled. - trap fn_fetch_trap INT - curlcmd=(curl --connect-timeout 10 --fail -L -o "${local_filedir}/${local_filename}" --retry 2) - - # if is large file show progress, else be silent - local exitcode="" - large_files=("bz2" "gz" "zip" "jar" "xz") - if grep -qE "(^|\s)${local_filename##*.}(\s|$)" <<< "${large_files[@]}"; then - echo -en "downloading ${local_filename}..." - fn_sleep_time - echo -en "\033[1K" - "${curlcmd[@]}" --progress-bar "${fileurl}" 2>&1 - exitcode="$?" - else - echo -en "fetching ${fileurl_name} ${local_filename}...\c" - "${curlcmd[@]}" --silent --show-error "${fileurl}" 2>&1 - exitcode="$?" - fi - - # Download will fail if downloads a html file. - if [ -f "${local_filedir}/${local_filename}" ]; then - if head -n 1 "${local_filedir}/${local_filename}" | grep -q "DOCTYPE"; then - rm "${local_filedir:?}/${local_filename:?}" - local exitcode=2 - fi - fi - - # On first try will error. On second try will fail. - if [ "${exitcode}" != 0 ]; then - if [ ${counter} -ge 2 ]; then - fn_print_fail_eol_nl - if [ -f "${lgsmlog}" ]; then - fn_script_log_fatal "Downloading ${local_filename}..." - fn_script_log_fatal "${fileurl}" - fi - core_exit.sh - else - fn_print_error_eol_nl - if [ -f "${lgsmlog}" ]; then - fn_script_log_error "Downloading ${local_filename}..." - fn_script_log_error "${fileurl}" - fi - fi - else - fn_print_ok_eol_nl - if [ -f "${lgsmlog}" ]; then - fn_script_log_pass "Downloading ${local_filename}..." - fi - - # Make file executable if chmodx is set. - if [ "${chmodx}" == "chmodx" ]; then - chmod +x "${local_filedir}/${local_filename}" - fi - - # Remove trap. - trap - INT - - break - fi - done - fi - - if [ -f "${local_filedir}/${local_filename}" ]; then - fn_dl_hash - # Execute file if run is set. - if [ "${run}" == "run" ]; then - # shellcheck source=/dev/null - source "${local_filedir}/${local_filename}" - fi - fi -} - -# GitHub file download functions. -# Used to simplify downloading specific files from GitHub. - -# github_fileurl_dir: the directory of the file in the GitHub: lgsm/functions -# github_fileurl_name: the filename of the file to download from GitHub: core_messages.sh -# githuburl: the full GitHub url - -# remote_fileurl: The URL of the file: http://example.com/dl/File.tar.bz2 -# local_filedir: location the file is to be saved: /home/server/lgsm/tmp -# local_filename: name of file (this can be different from the url name): file.tar.bz2 -# chmodx: Optional, set to "chmodx" to make file executable using chmod +x -# run: Optional, set run to execute the file after download -# forcedl: Optional, force re-download of file even if exists -# hash: Optional, set an hash sum and will compare it against the file. - -# Fetches files from the Git repo. -fn_fetch_file_github() { - github_fileurl_dir="${1}" - github_fileurl_name="${2}" - # For legacy versions - code can be removed at a future date - if [ "${legacymode}" == "1" ]; then - remote_fileurl="https://raw.githubusercontent.com/${githubuser}/${githubrepo}/${githubbranch}/${github_fileurl_dir}/${github_fileurl_name}" - remote_fileurl_backup="https://bitbucket.org/${githubuser}/${githubrepo}/raw/${githubbranch}/${github_fileurl_dir}/${github_fileurl_name}" - # If master branch will currently running LinuxGSM version to prevent "version mixing". This is ignored if a fork. - elif [ "${githubbranch}" == "master" ] && [ "${githubuser}" == "GameServerManager" ] && [ "${commandname}" != "UPDATE-LGSM" ]; then - remote_fileurl="https://raw.githubusercontent.com/${githubuser}/${githubrepo}/${version}/${github_fileurl_dir}/${github_fileurl_name}" - remote_fileurl_backup="https://bitbucket.org/${githubuser}/${githubrepo}/raw/${version}/${github_fileurl_dir}/${github_fileurl_name}" - else - remote_fileurl="https://raw.githubusercontent.com/${githubuser}/${githubrepo}/${githubbranch}/${github_fileurl_dir}/${github_fileurl_name}" - remote_fileurl_backup="https://bitbucket.org/${githubuser}/${githubrepo}/raw/${githubbranch}/${github_fileurl_dir}/${github_fileurl_name}" - fi - remote_fileurl_name="GitHub" - remote_fileurl_backup_name="Bitbucket" - local_filedir="${3}" - local_filename="${github_fileurl_name}" - chmodx="${4:-0}" - run="${5:-0}" - forcedl="${6:-0}" - hash="${7:-0}" - # Passes vars to the file download function. - fn_fetch_file "${remote_fileurl}" "${remote_fileurl_backup}" "${remote_fileurl_name}" "${remote_fileurl_backup_name}" "${local_filedir}" "${local_filename}" "${chmodx}" "${run}" "${forcedl}" "${hash}" -} - -fn_check_file_github() { - github_fileurl_dir="${1}" - github_fileurl_name="${2}" - if [ "${githubbranch}" == "master" ] && [ "${githubuser}" == "GameServerManager" ] && [ "${commandname}" != "UPDATE-LGSM" ]; then - remote_fileurl="https://raw.githubusercontent.com/${githubuser}/${githubrepo}/${version}/${github_fileurl_dir}/${github_fileurl_name}" - remote_fileurl_backup="https://bitbucket.org/${githubuser}/${githubrepo}/raw/${version}/${github_fileurl_dir}/${github_fileurl_name}" - else - remote_fileurl="https://raw.githubusercontent.com/${githubuser}/${githubrepo}/${githubbranch}/${github_fileurl_dir}/${github_fileurl_name}" - remote_fileurl_backup="https://bitbucket.org/${githubuser}/${githubrepo}/raw/${githubbranch}/${github_fileurl_dir}/${github_fileurl_name}" - fi - remote_fileurl_name="GitHub" - remote_fileurl_backup_name="Bitbucket" - fn_check_file "${remote_fileurl}" "${remote_fileurl_backup}" "${remote_fileurl_name}" "${remote_fileurl_backup_name}" "${github_fileurl_name}" -} - -# Fetches config files from the Git repo. -fn_fetch_config() { - github_fileurl_dir="${1}" - github_fileurl_name="${2}" - # If master branch will currently running LinuxGSM version to prevent "version mixing". This is ignored if a fork. - if [ "${githubbranch}" == "master" ] && [ "${githubuser}" == "GameServerManager" ] && [ "${commandname}" != "UPDATE-LGSM" ]; then - remote_fileurl="https://raw.githubusercontent.com/${githubuser}/${githubrepo}/${version}/${github_fileurl_dir}/${github_fileurl_name}" - remote_fileurl_backup="https://bitbucket.org/${githubuser}/${githubrepo}/raw/${version}/${github_fileurl_dir}/${github_fileurl_name}" - else - remote_fileurl="https://raw.githubusercontent.com/${githubuser}/${githubrepo}/${githubbranch}/${github_fileurl_dir}/${github_fileurl_name}" - remote_fileurl_backup="https://bitbucket.org/${githubuser}/${githubrepo}/raw/${githubbranch}/${github_fileurl_dir}/${github_fileurl_name}" - fi - remote_fileurl_name="GitHub" - remote_fileurl_backup_name="Bitbucket" - local_filedir="${3}" - local_filename="${4}" - chmodx="nochmodx" - run="norun" - forcedl="noforce" - hash="nohash" - # Passes vars to the file download function. - fn_fetch_file "${remote_fileurl}" "${remote_fileurl_backup}" "${remote_fileurl_name}" "${remote_fileurl_backup_name}" "${local_filedir}" "${local_filename}" "${chmodx}" "${run}" "${forcedl}" "${hash}" -} - -# Fetches modules from the Git repo during first download. -fn_fetch_function() { - github_fileurl_dir="lgsm/functions" - github_fileurl_name="${functionfile}" - # If master branch will currently running LinuxGSM version to prevent "version mixing". This is ignored if a fork. - if [ "${githubbranch}" == "master" ] && [ "${githubuser}" == "GameServerManager" ] && [ "${commandname}" != "UPDATE-LGSM" ]; then - remote_fileurl="https://raw.githubusercontent.com/${githubuser}/${githubrepo}/${version}/${github_fileurl_dir}/${github_fileurl_name}" - remote_fileurl_backup="https://bitbucket.org/${githubuser}/${githubrepo}/raw/${version}/${github_fileurl_dir}/${github_fileurl_name}" - else - remote_fileurl="https://raw.githubusercontent.com/${githubuser}/${githubrepo}/${githubbranch}/${github_fileurl_dir}/${github_fileurl_name}" - remote_fileurl_backup="https://bitbucket.org/${githubuser}/${githubrepo}/raw/${githubbranch}/${github_fileurl_dir}/${github_fileurl_name}" - fi - remote_fileurl_name="GitHub" - remote_fileurl_backup_name="Bitbucket" - local_filedir="${functionsdir}" - local_filename="${github_fileurl_name}" - chmodx="chmodx" - run="run" - forcedl="noforce" - hash="nohash" - # Passes vars to the file download function. - fn_fetch_file "${remote_fileurl}" "${remote_fileurl_backup}" "${remote_fileurl_name}" "${remote_fileurl_backup_name}" "${local_filedir}" "${local_filename}" "${chmodx}" "${run}" "${forcedl}" "${hash}" -} - -# Fetches modules from the Git repo during update-lgsm. -fn_update_function() { - github_fileurl_dir="lgsm/functions" - github_fileurl_name="${functionfile}" - # If master branch will currently running LinuxGSM version to prevent "version mixing". This is ignored if a fork. - if [ "${githubbranch}" == "master" ] && [ "${githubuser}" == "GameServerManager" ] && [ "${commandname}" != "UPDATE-LGSM" ]; then - remote_fileurl="https://raw.githubusercontent.com/${githubuser}/${githubrepo}/${version}/${github_fileurl_dir}/${github_fileurl_name}" - remote_fileurl_backup="https://bitbucket.org/${githubuser}/${githubrepo}/raw/${version}/${github_fileurl_dir}/${github_fileurl_name}" - else - remote_fileurl="https://raw.githubusercontent.com/${githubuser}/${githubrepo}/${githubbranch}/${github_fileurl_dir}/${github_fileurl_name}" - remote_fileurl_backup="https://bitbucket.org/${githubuser}/${githubrepo}/raw/${githubbranch}/${github_fileurl_dir}/${github_fileurl_name}" - fi - remote_fileurl_name="GitHub" - remote_fileurl_backup_name="Bitbucket" - local_filedir="${functionsdir}" - local_filename="${github_fileurl_name}" - chmodx="chmodx" - run="norun" - forcedl="noforce" - hash="nohash" - # Passes vars to the file download function. - fn_fetch_file "${remote_fileurl}" "${remote_fileurl_backup}" "${remote_fileurl_name}" "${remote_fileurl_backup_name}" "${local_filedir}" "${local_filename}" "${chmodx}" "${run}" "${forcedl}" "${hash}" - -} - -# Function to download latest github release. -# $1 GitHub user / organisation. -# $2 Repo name. -# $3 Destination for download. -# $4 Search string in releases (needed if there are more files that can be downloaded from the release pages). -fn_dl_latest_release_github() { - local githubreleaseuser="${1}" - local githubreleaserepo="${2}" - local githubreleasedownloadpath="${3}" - local githubreleasesearch="${4}" - local githublatestreleaseurl="https://api.github.com/repos/${githubreleaseuser}/${githubreleaserepo}/releases/latest" - - # Get last github release. - # If no search for the release filename is set, just get the first file from the latest release. - if [ -z "${githubreleasesearch}" ]; then - githubreleaseassets=$(curl -s "${githublatestreleaseurl}" | jq '[ .assets[] ]') - else - githubreleaseassets=$(curl -s "${githublatestreleaseurl}" | jq "[ .assets[]|select(.browser_download_url | contains(\"${githubreleasesearch}\")) ]") - fi - - # Check how many releases we got from the api and exit if we have more then one. - if [ "$(echo -e "${githubreleaseassets}" | jq '. | length')" -gt 1 ]; then - fn_print_fatal_nl "Found more than one release to download - Please report this to the LinuxGSM issue tracker" - fn_script_log_fatal "Found more than one release to download - Please report this to the LinuxGSM issue tracker" - else - # Set variables for download via fn_fetch_file. - githubreleasefilename=$(echo -e "${githubreleaseassets}" | jq -r '.[]name') - githubreleasedownloadlink=$(echo -e "${githubreleaseassets}" | jq -r '.[]browser_download_url') - - # Error if no version is there. - if [ -z "${githubreleasefilename}" ]; then - fn_print_fail_nl "Cannot get version from GitHub API for ${githubreleaseuser}/${githubreleaserepo}" - fn_script_log_fatal "Cannot get version from GitHub API for ${githubreleaseuser}/${githubreleaserepo}" - else - # Fetch file from the remote location from the existing function to the ${tmpdir} for now. - fn_fetch_file "${githubreleasedownloadlink}" "" "${githubreleasefilename}" "" "${githubreleasedownloadpath}" "${githubreleasefilename}" - fi - fi -} diff --git a/lgsm/functions/core_exit.sh b/lgsm/functions/core_exit.sh deleted file mode 100644 index 95d9d8cae0..0000000000 --- a/lgsm/functions/core_exit.sh +++ /dev/null @@ -1,61 +0,0 @@ -#!/bin/bash -# LinuxGSM core_exit.sh module -# Author: Daniel Gibbs -# Contributors: http://linuxgsm.com/contrib -# Website: https://linuxgsm.com -# Description: Handles exiting of LinuxGSM by running and reporting an exit code. - -functionselfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")" - -fn_exit_dev_debug() { - if [ -f "${rootdir}/.dev-debug" ]; then - echo -e "" - echo -e "${functionselfname} exiting with code: ${exitcode}" - if [ -f "${rootdir}/dev-debug.log" ]; then - grep "functionfile=" "${rootdir}/dev-debug.log" | sed 's/functionfile=//g' > "${rootdir}/dev-debug-function-order.log" - fi - fi -} - -# If running dependency check as root will remove any files that belong to root user. -if [ "$(whoami)" == "root" ] && [ ! -f /.dockerenv ]; then - find "${lgsmdir}"/ -group root -prune -exec rm -rf {} + > /dev/null 2>&1 - find "${logdir}"/ -group root -prune -exec rm -rf {} + > /dev/null 2>&1 -fi - -if [ "${exitbypass}" ]; then - unset exitbypass -elif [ "${exitcode}" != "0" ]; then - # List LinuxGSM version in logs - fn_script_log_info "LinuxGSM version: ${version}" - if [ "${exitcode}" == "1" ]; then - fn_script_log_fatal "${functionselfname} exiting with code: ${exitcode}" - elif [ "${exitcode}" == "2" ]; then - fn_script_log_error "${functionselfname} exiting with code: ${exitcode}" - elif [ "${exitcode}" == "3" ]; then - fn_script_log_warn "${functionselfname} exiting with code: ${exitcode}" - else - fn_script_log_warn "${functionselfname} exiting with code: ${exitcode}" - fi - fn_exit_dev_debug - # remove trap. - trap - INT - exit "${exitcode}" -elif [ "${exitcode}" ] && [ "${exitcode}" == "0" ]; then - # List LinuxGSM version in logs - fn_script_log_info "LinuxGSM version: ${version}" - fn_script_log_pass "${functionselfname} exiting with code: ${exitcode}" - fn_exit_dev_debug - # remove trap. - trap - INT - exit "${exitcode}" -else - # List LinuxGSM version in logs - fn_script_log_info "LinuxGSM version: ${version}" - fn_print_error "No exit code set" - fn_script_log_pass "${functionselfname} exiting with code: NOT SET" - fn_exit_dev_debug - # remove trap. - trap - INT - exit "${exitcode}" -fi diff --git a/lgsm/functions/core_functions.sh b/lgsm/functions/core_functions.sh deleted file mode 100644 index b301b7e465..0000000000 --- a/lgsm/functions/core_functions.sh +++ /dev/null @@ -1,816 +0,0 @@ -#!/bin/bash -# LinuxGSM core_functions.sh module -# Author: Daniel Gibbs -# Contributors: http://linuxgsm.com/contrib -# Website: https://linuxgsm.com -# Description: Defines all functions to allow download and execution of functions using fn_fetch_function. -# This function is called first before any other function. Without this file other functions will not load. - -functionselfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")" - -modulesversion="v23.2.3" - -# Core - -core_dl.sh() { - functionfile="${FUNCNAME[0]}" - if [ "$(type fn_fetch_core_dl 2> /dev/null)" ]; then - fn_fetch_core_dl "lgsm/functions" "core_dl.sh" "${functionsdir}" "chmodx" "run" "noforcedl" "nohash" - else - fn_bootstrap_fetch_file_github "lgsm/functions" "core_dl.sh" "${functionsdir}" "chmodx" "run" "noforcedl" "nohash" - fi -} - -core_messages.sh() { - functionfile="${FUNCNAME[0]}" - if [ "$(type fn_fetch_core_dl 2> /dev/null)" ]; then - fn_fetch_core_dl "lgsm/functions" "core_messages.sh" "${functionsdir}" "chmodx" "run" "noforcedl" "nohash" - else - fn_bootstrap_fetch_file_github "lgsm/functions" "core_messages.sh" "${functionsdir}" "chmodx" "run" "noforcedl" "nohash" - fi -} - -core_legacy.sh() { - functionfile="${FUNCNAME[0]}" - if [ "$(type fn_fetch_core_dl 2> /dev/null)" ]; then - fn_fetch_core_dl "lgsm/functions" "core_legacy.sh" "${functionsdir}" "chmodx" "run" "noforcedl" "nohash" - else - fn_bootstrap_fetch_file_github "lgsm/functions" "core_legacy.sh" "${functionsdir}" "chmodx" "run" "noforcedl" "nohash" - fi -} - -core_exit.sh() { - functionfile="${FUNCNAME[0]}" - fn_fetch_function -} - -core_getopt.sh() { - functionfile="${FUNCNAME[0]}" - fn_fetch_function -} - -core_trap.sh() { - functionfile="${FUNCNAME[0]}" - fn_fetch_function -} - -core_steamcmd.sh() { - functionfile="${FUNCNAME[0]}" - fn_fetch_function -} - -core_github.sh() { - functionfile="${FUNCNAME[0]}" - fn_fetch_function -} - -# Commands - -command_backup.sh() { - functionfile="${FUNCNAME[0]}" - fn_fetch_function -} - -command_console.sh() { - functionfile="${FUNCNAME[0]}" - fn_fetch_function -} - -command_debug.sh() { - functionfile="${FUNCNAME[0]}" - fn_fetch_function -} - -command_details.sh() { - functionfile="${FUNCNAME[0]}" - fn_fetch_function -} - -command_donate.sh() { - functionfile="${FUNCNAME[0]}" - fn_fetch_function -} - -command_postdetails.sh() { - functionfile="${FUNCNAME[0]}" - fn_fetch_function -} - -command_test_alert.sh() { - functionfile="${FUNCNAME[0]}" - fn_fetch_function -} - -command_monitor.sh() { - functionfile="${FUNCNAME[0]}" - fn_fetch_function -} - -command_start.sh() { - functionfile="${FUNCNAME[0]}" - fn_fetch_function -} - -command_stop.sh() { - functionfile="${FUNCNAME[0]}" - fn_fetch_function -} - -command_validate.sh() { - functionfile="${FUNCNAME[0]}" - fn_fetch_function -} - -command_install.sh() { - functionfile="${FUNCNAME[0]}" - fn_fetch_function -} - -command_install_resources_mta.sh() { - functionfile="${FUNCNAME[0]}" - fn_fetch_function -} - -install_squad_license.sh() { - functionfile="${FUNCNAME[0]}" - fn_fetch_function -} - -command_mods_install.sh() { - functionfile="${FUNCNAME[0]}" - fn_fetch_function -} - -command_mods_update.sh() { - functionfile="${FUNCNAME[0]}" - fn_fetch_function -} - -command_mods_remove.sh() { - functionfile="${FUNCNAME[0]}" - fn_fetch_function -} - -command_fastdl.sh() { - functionfile="${FUNCNAME[0]}" - fn_fetch_function -} - -command_ts3_server_pass.sh() { - functionfile="${FUNCNAME[0]}" - fn_fetch_function -} - -command_restart.sh() { - functionfile="${FUNCNAME[0]}" - fn_fetch_function -} - -command_skeleton.sh() { - functionfile="${FUNCNAME[0]}" - fn_fetch_function -} - -command_wipe.sh() { - functionfile="${FUNCNAME[0]}" - fn_fetch_function -} - -command_send.sh() { - functionfile="${FUNCNAME[0]}" - fn_fetch_function -} - -# Checks - -check.sh() { - functionfile="${FUNCNAME[0]}" - fn_fetch_function -} - -check_config.sh() { - functionfile="${FUNCNAME[0]}" - fn_fetch_function -} - -check_deps.sh() { - functionfile="${FUNCNAME[0]}" - fn_fetch_function -} - -check_executable.sh() { - functionfile="${FUNCNAME[0]}" - fn_fetch_function -} - -check_glibc.sh() { - functionfile="${FUNCNAME[0]}" - fn_fetch_function -} - -check_ip.sh() { - functionfile="${FUNCNAME[0]}" - fn_fetch_function -} - -check_last_update.sh() { - functionfile="${FUNCNAME[0]}" - fn_fetch_function -} - -check_logs.sh() { - functionfile="${FUNCNAME[0]}" - fn_fetch_function -} - -check_permissions.sh() { - functionfile="${FUNCNAME[0]}" - fn_fetch_function -} - -check_root.sh() { - functionfile="${FUNCNAME[0]}" - fn_fetch_function -} - -check_status.sh() { - functionfile="${FUNCNAME[0]}" - fn_fetch_function -} - -check_steamcmd.sh() { - functionfile="${FUNCNAME[0]}" - fn_fetch_function -} - -check_system_dir.sh() { - functionfile="${FUNCNAME[0]}" - fn_fetch_function -} - -check_system_requirements.sh() { - functionfile="${FUNCNAME[0]}" - fn_fetch_function -} - -check_tmuxception.sh() { - functionfile="${FUNCNAME[0]}" - fn_fetch_function -} - -check_version.sh() { - functionfile="${FUNCNAME[0]}" - fn_fetch_function -} - -# Compress - -compress_unreal2_maps.sh() { - functionfile="${FUNCNAME[0]}" - fn_fetch_function -} - -compress_ut99_maps.sh() { - functionfile="${FUNCNAME[0]}" - fn_fetch_function -} - -# Mods - -mods_list.sh() { - functionfile="${FUNCNAME[0]}" - fn_fetch_function -} - -mods_core.sh() { - functionfile="${FUNCNAME[0]}" - fn_fetch_function -} - -# Dev - -command_dev_clear_functions.sh() { - functionfile="${FUNCNAME[0]}" - fn_fetch_function -} - -command_dev_debug.sh() { - functionfile="${FUNCNAME[0]}" - fn_fetch_function -} - -command_dev_detect_deps.sh() { - functionfile="${FUNCNAME[0]}" - fn_fetch_function -} - -command_dev_detect_glibc.sh() { - functionfile="${FUNCNAME[0]}" - fn_fetch_function -} - -command_dev_detect_ldd.sh() { - functionfile="${FUNCNAME[0]}" - fn_fetch_function -} - -command_dev_query_raw.sh() { - functionfile="${FUNCNAME[0]}" - fn_fetch_function -} - -# Fix - -fix.sh() { - functionfile="${FUNCNAME[0]}" - fn_fetch_function -} - -fix_ark.sh() { - functionfile="${FUNCNAME[0]}" - fn_fetch_function -} - -fix_av.sh() { - functionfile="${FUNCNAME[0]}" - fn_fetch_function -} - -fix_arma3.sh() { - functionfile="${FUNCNAME[0]}" - fn_fetch_function -} - -fix_armar.sh() { - functionfile="${FUNCNAME[0]}" - fn_fetch_function -} - -fix_bt.sh() { - functionfile="${FUNCNAME[0]}" - fn_fetch_function -} - -fix_bo.sh() { - functionfile="${FUNCNAME[0]}" - fn_fetch_function -} - -fix_cmw.sh() { - functionfile="${FUNCNAME[0]}" - fn_fetch_function -} - -fix_csgo.sh() { - functionfile="${FUNCNAME[0]}" - fn_fetch_function -} - -fix_dst.sh() { - functionfile="${FUNCNAME[0]}" - fn_fetch_function -} - -fix_hw.sh() { - functionfile="${FUNCNAME[0]}" - fn_fetch_function -} - -fix_ins.sh() { - functionfile="${FUNCNAME[0]}" - fn_fetch_function -} - -fix_kf.sh() { - functionfile="${FUNCNAME[0]}" - fn_fetch_function -} - -fix_kf2.sh() { - functionfile="${FUNCNAME[0]}" - fn_fetch_function -} - -fix_lo.sh() { - functionfile="${FUNCNAME[0]}" - fn_fetch_function -} - -fix_mcb.sh() { - functionfile="${FUNCNAME[0]}" - fn_fetch_function -} - -fix_mta.sh() { - functionfile="${FUNCNAME[0]}" - fn_fetch_function -} - -fix_nmrih.sh() { - functionfile="${FUNCNAME[0]}" - fn_fetch_function -} - -fix_onset.sh() { - functionfile="${FUNCNAME[0]}" - fn_fetch_function -} - -fix_ro.sh() { - functionfile="${FUNCNAME[0]}" - fn_fetch_function -} - -fix_rust.sh() { - functionfile="${FUNCNAME[0]}" - fn_fetch_function -} - -fix_rw.sh() { - functionfile="${FUNCNAME[0]}" - fn_fetch_function -} - -fix_sfc.sh() { - functionfile="${FUNCNAME[0]}" - fn_fetch_function -} - -fix_st.sh() { - functionfile="${FUNCNAME[0]}" - fn_fetch_function -} - -fix_steamcmd.sh() { - functionfile="${FUNCNAME[0]}" - fn_fetch_function -} - -fix_terraria.sh() { - functionfile="${FUNCNAME[0]}" - fn_fetch_function -} - -fix_tf2.sh() { - functionfile="${FUNCNAME[0]}" - fn_fetch_function -} - -fix_ut3.sh() { - functionfile="${FUNCNAME[0]}" - fn_fetch_function -} - -fix_rust.sh() { - functionfile="${FUNCNAME[0]}" - fn_fetch_function -} - -fix_samp.sh() { - functionfile="${FUNCNAME[0]}" - fn_fetch_function -} - -fix_sdtd.sh() { - functionfile="${FUNCNAME[0]}" - fn_fetch_function -} - -fix_sof2.sh() { - functionfile="${FUNCNAME[0]}" - fn_fetch_function -} - -fix_squad.sh() { - functionfile="${FUNCNAME[0]}" - fn_fetch_function -} - -fix_ts3.sh() { - functionfile="${FUNCNAME[0]}" - fn_fetch_function -} - -fix_ut2k4.sh() { - functionfile="${FUNCNAME[0]}" - fn_fetch_function -} - -fix_ut.sh() { - functionfile="${FUNCNAME[0]}" - fn_fetch_function -} - -fix_unt.sh() { - functionfile="${FUNCNAME[0]}" - fn_fetch_function -} - -fix_vh.sh() { - functionfile="${FUNCNAME[0]}" - fn_fetch_function -} - -fix_wurm.sh() { - functionfile="${FUNCNAME[0]}" - fn_fetch_function -} - -fix_zmr.sh() { - functionfile="${FUNCNAME[0]}" - fn_fetch_function -} - -# Info - -info_distro.sh() { - functionfile="${FUNCNAME[0]}" - fn_fetch_function -} - -info_game.sh() { - functionfile="${FUNCNAME[0]}" - fn_fetch_function -} - -info_messages.sh() { - functionfile="${FUNCNAME[0]}" - fn_fetch_function -} - -info_stats.sh() { - functionfile="${FUNCNAME[0]}" - fn_fetch_function -} - -# Alert - -alert.sh() { - functionfile="${FUNCNAME[0]}" - fn_fetch_function -} - -alert_discord.sh() { - functionfile="${FUNCNAME[0]}" - fn_fetch_function -} - -alert_email.sh() { - functionfile="${FUNCNAME[0]}" - fn_fetch_function -} - -alert_ifttt.sh() { - functionfile="${FUNCNAME[0]}" - fn_fetch_function -} - -alert_mailgun.sh() { - functionfile="${FUNCNAME[0]}" - fn_fetch_function -} - -alert_pushbullet.sh() { - functionfile="${FUNCNAME[0]}" - fn_fetch_function -} - -alert_pushover.sh() { - functionfile="${FUNCNAME[0]}" - fn_fetch_function -} - -alert_gotify.sh() { - functionfile="${FUNCNAME[0]}" - fn_fetch_function -} - -alert_telegram.sh() { - functionfile="${FUNCNAME[0]}" - fn_fetch_function -} - -alert_rocketchat.sh() { - functionfile="${FUNCNAME[0]}" - fn_fetch_function -} - -alert_slack.sh() { - functionfile="${FUNCNAME[0]}" - fn_fetch_function -} -# Logs - -core_logs.sh() { - functionfile="${FUNCNAME[0]}" - fn_fetch_function -} - -# Query - -query_gamedig.sh() { - functionfile="${FUNCNAME[0]}" - fn_fetch_function -} - -# Update - -command_update_functions.sh() { - functionfile="${FUNCNAME[0]}" - fn_fetch_function -} - -command_update_linuxgsm.sh() { - functionfile="${FUNCNAME[0]}" - fn_fetch_function -} - -command_update.sh() { - functionfile="${FUNCNAME[0]}" - fn_fetch_function -} - -command_check_update.sh() { - functionfile="${FUNCNAME[0]}" - fn_fetch_function -} - -update_ts3.sh() { - functionfile="${FUNCNAME[0]}" - fn_fetch_function -} - -update_minecraft.sh() { - functionfile="${FUNCNAME[0]}" - fn_fetch_function -} - -update_minecraft_bedrock.sh() { - functionfile="${FUNCNAME[0]}" - fn_fetch_function -} - -update_papermc.sh() { - functionfile="${FUNCNAME[0]}" - fn_fetch_function -} - -update_mta.sh() { - functionfile="${FUNCNAME[0]}" - fn_fetch_function -} - -update_factorio.sh() { - functionfile="${FUNCNAME[0]}" - fn_fetch_function -} - -update_jediknight2.sh() { - functionfile="${FUNCNAME[0]}" - fn_fetch_function -} - -update_steamcmd.sh() { - functionfile="${FUNCNAME[0]}" - fn_fetch_function -} - -update_vintagestory.sh() { - functionfile="${FUNCNAME[0]}" - fn_fetch_function -} - -update_ut99.sh() { - functionfile="${FUNCNAME[0]}" - fn_fetch_function -} - -fn_update_functions.sh() { - functionfile="${FUNCNAME[0]}" - fn_fetch_function -} - -# -## Installer functions -# - -fn_autoinstall() { - autoinstall=1 - command_install.sh -} - -install_complete.sh() { - functionfile="${FUNCNAME[0]}" - fn_fetch_function -} - -install_config.sh() { - functionfile="${FUNCNAME[0]}" - fn_fetch_function -} - -install_factorio_save.sh() { - functionfile="${FUNCNAME[0]}" - fn_fetch_function -} - -install_dst_token.sh() { - functionfile="${FUNCNAME[0]}" - fn_fetch_function -} - -install_eula.sh() { - functionfile="${FUNCNAME[0]}" - fn_fetch_function -} - -install_gsquery.sh() { - functionfile="${FUNCNAME[0]}" - fn_fetch_function -} - -install_gslt.sh() { - functionfile="${FUNCNAME[0]}" - fn_fetch_function -} - -install_header.sh() { - functionfile="${FUNCNAME[0]}" - fn_fetch_function -} - -install_logs.sh() { - functionfile="${FUNCNAME[0]}" - fn_fetch_function -} - -install_retry.sh() { - functionfile="${FUNCNAME[0]}" - fn_fetch_function -} - -install_server_dir.sh() { - functionfile="${FUNCNAME[0]}" - fn_fetch_function -} -install_server_files.sh() { - functionfile="${FUNCNAME[0]}" - fn_fetch_function -} - -install_stats.sh() { - functionfile="${FUNCNAME[0]}" - fn_fetch_function -} - -install_steamcmd.sh() { - functionfile="${FUNCNAME[0]}" - fn_fetch_function -} - -install_ts3.sh() { - functionfile="${FUNCNAME[0]}" - fn_fetch_function -} - -install_ts3db.sh() { - functionfile="${FUNCNAME[0]}" - fn_fetch_function -} - -install_ut2k4.sh() { - functionfile="${FUNCNAME[0]}" - fn_fetch_function -} - -install_dl_ut2k4.sh() { - functionfile="${FUNCNAME[0]}" - fn_fetch_function -} - -install_ut2k4_key.sh() { - functionfile="${FUNCNAME[0]}" - fn_fetch_function -} - -# Calls code required for legacy servers -core_legacy.sh - -# Creates tmp dir if missing -if [ ! -d "${tmpdir}" ]; then - mkdir -p "${tmpdir}" -fi - -# Creates lock dir if missing -if [ ! -d "${lockdir}" ]; then - mkdir -p "${lockdir}" -fi - -# Calls on-screen messages (bootstrap) -core_messages.sh - -#Calls file downloader (bootstrap) -core_dl.sh - -# Calls the global Ctrl-C trap -core_trap.sh diff --git a/lgsm/functions/core_getopt.sh b/lgsm/functions/core_getopt.sh deleted file mode 100644 index 808fe2e2af..0000000000 --- a/lgsm/functions/core_getopt.sh +++ /dev/null @@ -1,215 +0,0 @@ -#!/bin/bash -# LinuxGSM core_getopt.sh module -# Author: Daniel Gibbs -# Contributors: http://linuxgsm.com/contrib -# Website: https://linuxgsm.com -# Description: getopt arguments. - -functionselfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")" - -### Define all commands here. -## User commands | Trigger commands | Description -# Standard commands. -cmd_install=("i;install" "command_install.sh" "Install the server.") -cmd_auto_install=("ai;auto-install" "fn_autoinstall" "Install the server without prompts.") -cmd_start=("st;start" "command_start.sh" "Start the server.") -cmd_stop=("sp;stop" "command_stop.sh" "Stop the server.") -cmd_restart=("r;restart" "command_restart.sh" "Restart the server.") -cmd_details=("dt;details" "command_details.sh" "Display server information.") -cmd_postdetails=("pd;postdetails" "command_postdetails.sh" "Post details to termbin.com (removing passwords).") -cmd_backup=("b;backup" "command_backup.sh" "Create backup archives of the server.") -cmd_update_linuxgsm=("ul;update-lgsm;uf;update-functions" "command_update_linuxgsm.sh" "Check and apply any LinuxGSM updates.") -cmd_test_alert=("ta;test-alert" "command_test_alert.sh" "Send a test alert.") -cmd_monitor=("m;monitor" "command_monitor.sh" "Check server status and restart if crashed.") -cmd_skeleton=("sk;skeleton" "command_skeleton.sh" "Create a skeleton directory.") -cmd_donate=("do;donate" "command_donate.sh" "Donation options.") -cmd_send=("sd;send" "command_send.sh" "Send command to game server console.") -# Console servers only. -cmd_console=("c;console" "command_console.sh" "Access server console.") -cmd_debug=("d;debug" "command_debug.sh" "Start server directly in your terminal.") -# Update servers only. -cmd_update=("u;update" "command_update.sh" "Check and apply any server updates.") -cmd_check_update=("cu;check-update" "command_check_update.sh" "Check if a gameserver update is available") -cmd_force_update=("fu;force-update;update-restart;ur" "forceupdate=1; command_update.sh" "Apply server updates bypassing check.") -# SteamCMD servers only. -cmd_validate=("v;validate" "command_validate.sh" "Validate server files with SteamCMD.") -# Server with mods-install. -cmd_mods_install=("mi;mods-install" "command_mods_install.sh" "View and install available mods/addons.") -cmd_mods_remove=("mr;mods-remove" "command_mods_remove.sh" "View and remove an installed mod/addon.") -cmd_mods_update=("mu;mods-update" "command_mods_update.sh" "Update installed mods/addons.") -# Server specific. -cmd_change_password=("pw;change-password" "command_ts3_server_pass.sh" "Change TS3 serveradmin password.") -cmd_install_default_resources=("ir;install-default-resources" "command_install_resources_mta.sh" "Install the MTA default resources.") -cmd_fullwipe=("fw;full-wipe;wa;wipeall" "serverwipe=1; command_wipe.sh" "Reset the map and remove blueprint data.") -cmd_mapwipe=("mw;map-wipe;w;wipe;wi" "mapwipe=1; command_wipe.sh" "Reset the map and keep blueprint data.") -cmd_map_compressor_u99=("mc;map-compressor" "compress_ut99_maps.sh" "Compresses all ${gamename} server maps.") -cmd_map_compressor_u2=("mc;map-compressor" "compress_unreal2_maps.sh" "Compresses all ${gamename} server maps.") -cmd_install_cdkey=("cd;server-cd-key" "install_ut2k4_key.sh" "Add your server cd key.") -cmd_install_dst_token=("ct;cluster-token" "install_dst_token.sh" "Configure cluster token.") -cmd_install_squad_license=("li;license" "install_squad_license.sh" "Add your Squad server license.") -cmd_fastdl=("fd;fastdl" "command_fastdl.sh" "Build a FastDL directory.") -# Dev commands. -cmd_dev_debug=("dev;developer" "command_dev_debug.sh" "Enable developer Mode.") -cmd_dev_detect_deps=("dd;detect-deps" "command_dev_detect_deps.sh" "Detect required dependencies.") -cmd_dev_detect_glibc=("dg;detect-glibc" "command_dev_detect_glibc.sh" "Detect required glibc.") -cmd_dev_detect_ldd=("dl;detect-ldd" "command_dev_detect_ldd.sh" "Detect required dynamic dependencies.") -cmd_dev_query_raw=("qr;query-raw" "command_dev_query_raw.sh" "The raw output of gamedig and gsquery.") -cmd_dev_clear_functions=("cf;clear-functions" "command_dev_clear_functions.sh" "Delete the contents of the functions dir.") - -### Set specific opt here. - -currentopt=("${cmd_start[@]}" "${cmd_stop[@]}" "${cmd_restart[@]}" "${cmd_monitor[@]}" "${cmd_test_alert[@]}" "${cmd_details[@]}" "${cmd_postdetails[@]}" "${cmd_skeleton[@]}") - -# Update LinuxGSM. -currentopt+=("${cmd_update_linuxgsm[@]}") - -# Exclude noupdate games here. -if [ "${shortname}" == "jk2" ] || [ "${engine}" != "idtech3" ]; then - if [ "${shortname}" != "bf1942" ] && [ "${shortname}" != "bfv" ] && [ "${engine}" != "idtech2" ] && [ "${engine}" != "iw2.0" ] && [ "${engine}" != "iw3.0" ] && [ "${engine}" != "quake" ] && [ "${shortname}" != "samp" ] && [ "${shortname}" != "ut2k4" ]; then - currentopt+=("${cmd_update[@]}" "${cmd_check_update[@]}") - # force update for SteamCMD or Multi Theft Auto only. - if [ "${appid}" ] || [ "${shortname}" == "mta" ]; then - currentopt+=("${cmd_force_update[@]}") - fi - fi -fi - -# Validate and check-update command. -if [ "${appid}" ]; then - currentopt+=("${cmd_validate[@]}") -fi - -# Backup. -currentopt+=("${cmd_backup[@]}") - -# Console & Debug. -currentopt+=("${cmd_console[@]}" "${cmd_debug[@]}") - -# Console send. -if [ "${consoleinteract}" == "yes" ]; then - currentopt+=("${cmd_send[@]}") -fi - -## Game server exclusive commands. - -# FastDL command. -if [ "${engine}" == "source" ]; then - currentopt+=("${cmd_fastdl[@]}") -fi - -# TeamSpeak exclusive. -if [ "${shortname}" == "ts3" ]; then - currentopt+=("${cmd_change_password[@]}") -fi - -# Rust exclusive. -if [ "${shortname}" == "rust" ]; then - currentopt+=("${cmd_fullwipe[@]}" "${cmd_mapwipe[@]}") -fi - -# Unreal exclusive. -if [ "${engine}" == "unreal2" ]; then - if [ "${shortname}" == "ut2k4" ]; then - currentopt+=("${cmd_install_cdkey[@]}" "${cmd_map_compressor_u2[@]}") - else - currentopt+=("${cmd_map_compressor_u2[@]}") - fi -fi -if [ "${engine}" == "unreal" ]; then - currentopt+=("${cmd_map_compressor_u99[@]}") -fi - -# DST exclusive. -if [ "${shortname}" == "dst" ]; then - currentopt+=("${cmd_install_dst_token[@]}") -fi - -# MTA exclusive. -if [ "${shortname}" == "mta" ]; then - currentopt+=("${cmd_install_default_resources[@]}") -fi - -# Squad license exclusive. -if [ "${shortname}" == "squad" ]; then - currentopt+=("${cmd_install_squad_license[@]}") -fi - -## Mods commands. -if [ "${engine}" == "source" ] || [ "${shortname}" == "rust" ] || [ "${shortname}" == "hq" ] || [ "${shortname}" == "sdtd" ] || [ "${shortname}" == "cs" ] || [ "${shortname}" == "dod" ] || [ "${shortname}" == "tfc" ] || [ "${shortname}" == "ns" ] || [ "${shortname}" == "ts" ] || [ "${shortname}" == "hldm" ] || [ "${shortname}" == "vh" ]; then - currentopt+=("${cmd_mods_install[@]}" "${cmd_mods_remove[@]}" "${cmd_mods_update[@]}") -fi - -## Installer. -currentopt+=("${cmd_install[@]}" "${cmd_auto_install[@]}") - -## Developer commands. -currentopt+=("${cmd_dev_debug[@]}") -if [ -f ".dev-debug" ]; then - currentopt+=("${cmd_dev_detect_deps[@]}" "${cmd_dev_detect_glibc[@]}" "${cmd_dev_detect_ldd[@]}" "${cmd_dev_query_raw[@]}" "${cmd_dev_clear_functions[@]}") -fi - -## Donate. -currentopt+=("${cmd_donate[@]}") - -### Build list of available commands. -optcommands=() -index="0" -for ((index = "0"; index < ${#currentopt[@]}; index += 3)); do - cmdamount=$(echo -e "${currentopt[index]}" | awk -F ';' '{ print NF }') - for ((cmdindex = 1; cmdindex <= cmdamount; cmdindex++)); do - optcommands+=("$(echo -e "${currentopt[index]}" | awk -F ';' -v x=${cmdindex} '{ print $x }')") - done -done - -# Shows LinuxGSM usage. -fn_opt_usage() { - echo -e "Usage: $0 [option]" - echo -e "" - echo -e "LinuxGSM - ${gamename} - Version ${version}" - echo -e "https://linuxgsm.com/${gameservername}" - echo -e "" - echo -e "${lightyellow}Commands${default}" - # Display available commands. - index="0" - { - for ((index = "0"; index < ${#currentopt[@]}; index += 3)); do - # Hide developer commands. - if [ "${currentopt[index + 2]}" != "DEVCOMMAND" ]; then - echo -e "${cyan}$(echo -e "${currentopt[index]}" | awk -F ';' '{ print $2 }')\t${default}$(echo -e "${currentopt[index]}" | awk -F ';' '{ print $1 }')\t| ${currentopt[index + 2]}" - fi - done - } | column -s $'\t' -t - fn_script_log_pass "Display commands" - core_exit.sh -} - -# Check if command existw and run corresponding scripts, or display script usage. -if [ -z "${getopt}" ]; then - fn_opt_usage -fi -# If command exists. -for i in "${optcommands[@]}"; do - if [ "${i}" == "${getopt}" ]; then - # Seek and run command. - index="0" - for ((index = "0"; index < ${#currentopt[@]}; index += 3)); do - currcmdamount=$(echo -e "${currentopt[index]}" | awk -F ';' '{ print NF }') - for ((currcmdindex = 1; currcmdindex <= currcmdamount; currcmdindex++)); do - if [ "$(echo -e "${currentopt[index]}" | awk -F ';' -v x=${currcmdindex} '{ print $x }')" == "${getopt}" ]; then - # Run command. - eval "${currentopt[index + 1]}" - # Exit should occur in modules. Should this not happen print an error - fn_print_error2_nl "Command did not exit correctly: ${getopt}" - fn_script_log_error "Command did not exit correctly: ${getopt}" - core_exit.sh - fi - done - done - fi -done - -# If we're executing this, it means command was not found. -fn_print_error2_nl "Unknown command: $0 ${getopt}" -fn_script_log_error "Unknown command: $0 ${getopt}" -fn_opt_usage -core_exit.sh diff --git a/lgsm/functions/core_github.sh b/lgsm/functions/core_github.sh deleted file mode 100644 index 0462e65bfa..0000000000 --- a/lgsm/functions/core_github.sh +++ /dev/null @@ -1,114 +0,0 @@ -#!/bin/bash -# LinuxGSM core_github.sh function -# Author: Daniel Gibbs -# Contributors: http://linuxgsm.com/contrib -# Website: https://linuxgsm.com -# Description: core function file for updates via github - -functionselfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")" - -github_api="https://api.github.com" - -fn_githublocalversionfile() { - local githubreleaseuser="${1}" - local githubreleaserepo="${2}" - - githublocalversionfile="${datadir}/github-${githubreleaseuser}-${githubreleaserepo}-version" -} - -# $1 githubuser/group -# $2 github repo name -fn_github_get_latest_release_version() { - local githubreleaseuser="${1}" - local githubreleaserepo="${2}" - local githublatestreleaseurl="${github_api}/repos/${githubreleaseuser}/${githubreleaserepo}/releases/latest" - - githubreleaseversion=$(curl -s --connect-timeout 10 "${githublatestreleaseurl}" | jq '.tag_name') - - # error if no version is there - if [ -z "${githubreleaseversion}" ]; then - fn_print_fail_nl "Cannot get version from GitHub API for ${githubreleaseuser}/${githubreleaserepo}" - fn_script_log_fatal "Cannot get version from GitHub API for ${githubreleaseuser}/${githubreleaserepo}" - fi -} - -# $1 githubuser/group -# $2 github repo name -fn_github_set_latest_release_version() { - local githubreleaseuser="${1}" - local githubreleaserepo="${2}" - - fn_githublocalversionfile "${githubreleaseuser}" "${githubreleaserepo}" - - local githublatestreleaseurl="${github_api}/repos/${githubreleaseuser}/${githubreleaserepo}/releases/latest" - githubreleaseversion=$(curl -s "${githublatestreleaseurl}" | jq -r '.tag_name') - - # error if no version is there - if [ -z "${githubreleaseversion}" ]; then - fn_print_fail_nl "Cannot get version from GitHub API for ${githubreleaseuser}/${githubreleaserepo}" - fn_script_log_fatal "Cannot get version from GitHub API for ${githubreleaseuser}/${githubreleaserepo}" - else - echo "${githubreleaseversion}" > "${githublocalversionfile}" - fi -} - -# $1 githubuser/group -# $2 github repo name -fn_github_get_installed_version() { - local githubreleaseuser="${1}" - local githubreleaserepo="${2}" - - fn_githublocalversionfile "${githubreleaseuser}" "${githubreleaserepo}" - - githublocalversion=$(cat "${githublocalversionfile}") -} - -# $1 githubuser/group -# $2 github repo name -# if a update needs to be downloaded - updateneeded is set to 1 -fn_github_compare_version() { - local githubreleaseuser="${1}" - local githubreleaserepo="${2}" - exitcode=0 - updateneeded=0 - - fn_githublocalversionfile "${githubreleaseuser}" "${githubreleaserepo}" - local githublatestreleaseurl="${github_api}/repos/${githubreleaseuser}/${githubreleaserepo}/releases/latest" - - githublocalversion=$(cat "${githublocalversionfile}") - githubreleaseversion=$(curl -s "${githublatestreleaseurl}" | jq '.tag_name') - - # error if no version is there - if [ -z "${githubreleaseversion}" ]; then - fn_print_fail_nl "Can not get version from Github Api for ${githubreleaseuser}/${githubreleaserepo}" - fn_script_log_fatal "Can not get version from Github Api for ${githubreleaseuser}/${githubreleaserepo}" - else - if [ "${githublocalversion}" == "${githubreleaseversion}" ]; then - echo -en "\n" - echo -e "No update from github.com/${githubreleaseuser}/${githubreleaserepo}/ available:" - echo -e "* Local build: ${red}${githublocalversion}${default}" - echo -e "* Remote build: ${green}${githubreleaseversion}${default}" - echo -en "\n" - else - # check if version that is installed is higher than the remote version to not override it - last_version=$(echo -e "${githublocalversion}\n${githubreleaseversion}" | sort -V | head -n1) - if [ "${githubreleaseversion}" == "${last_version}" ]; then - echo -en "\n" - echo -e "Update from github.com/${githubreleaseuser}/${githubreleaserepo}/ available:" - echo -e "* Local build: ${red}${githublocalversion}${default}" - echo -e "* Remote build: ${green}${githubreleaseversion}${default}" - echo -en "\n" - updateneeded=1 - else - # local version is higher than the remote version output this to the user - # strange case but could be possible, as a release could be removed from github - echo -en "\n" - echo -e "Local version is newer than the remote version" - echo -e "* Local version: ${green}${githublocalversion}${default}" - echo -e "* Remote version: ${green}${githubreleaseversion}${default}" - echo -en "\n" - exitcode=1 - fi - fi - fi -} diff --git a/lgsm/functions/core_legacy.sh b/lgsm/functions/core_legacy.sh deleted file mode 100644 index 1cb77258b8..0000000000 --- a/lgsm/functions/core_legacy.sh +++ /dev/null @@ -1,84 +0,0 @@ -#!/bin/bash -# LinuxGSM core_legacy.sh module -# Author: Daniel Gibbs -# Contributors: http://linuxgsm.com/contrib -# Website: https://linuxgsm.com -# Description: Code for backwards compatability with older versions of LinuxGSM. - -functionselfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")" - -# This is to help the transition to v20.3.0 and above -legacy_versions_array=(v20.2.1 v20.2.0 v20.1.5 v20.1.4 v20.1.3 v20.1.2 v20.1.1 v20.1.0 v19.12.5 v19.12.4 v19.12.3 v19.12.2 v19.12.1 v19.12.0) -for legacy_version in "${legacy_versions_array[@]}"; do - if [ "${version}" == "${legacy_version}" ]; then - legacymode=1 - fi -done - -if [ -z "${serverfiles}" ]; then - serverfiles="${filesdir}" -fi - -if [ -z "${logdir}" ]; then - [ -n "${LGSM_LOGDIR}" ] && logdir="${LGSM_LOGDIR}" || logdir="${rootdir}/log" -fi - -if [ -z "${lgsmlogdir}" ]; then - lgsmlogdir="${scriptlogdir}" -fi - -if [ -z "${lgsmlog}" ]; then - lgsmlog="${scriptlog}" -fi - -if [ -z "${lgsmlogdate}" ]; then - lgsmlogdate="${scriptlogdate}" -fi - -if [ -z "${steamcmddir}" ]; then - steamcmddir="${HOME}/.steam/steamcmd" -fi - -if [ -z "${lgsmdir}" ]; then - lgsmdir="${rootdir}/lgsm" -fi - -if [ -z "${tmpdir}" ]; then - tmpdir="${lgsmdir}/tmp" -fi - -if [ -z "${alertlog}" ]; then - alertlog="${emaillog}" -fi - -if [ -z "${servicename}" ]; then - servicename="${selfname}" -fi - -# Alternations to workshop variables. -if [ -z "${wsapikey}" ]; then - if [ "${workshopauth}" ]; then - wsapikey="${workshopauth}" - elif [ "${authkey}" ]; then - wsapikey="${authkey}" - fi -fi - -if [ -z "${wscollectionid}" ]; then - if [ "${workshopauth}" ]; then - wscollectionid="${ws_collection_id}" - elif [ "${authkey}" ]; then - wscollectionid="${workshopcollectionid}" - fi -fi - -if [ -z "${wsstartmap}" ]; then - if [ "${ws_start_map}" ]; then - wscollectionid="${ws_start_map}" - fi -fi - -fn_parms() { - fn_reload_startparameters - parms="${startparameters}" -} diff --git a/lgsm/functions/core_logs.sh b/lgsm/functions/core_logs.sh deleted file mode 100644 index 1f0e275400..0000000000 --- a/lgsm/functions/core_logs.sh +++ /dev/null @@ -1,110 +0,0 @@ -#!/bin/bash -# LinuxGSM core_logs.sh module -# Author: Daniel Gibbs -# Contributors: http://linuxgsm.com/contrib -# Website: https://linuxgsm.com -# Description: Acts as a log rotator, removing old logs. - -functionselfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")" - -# Check if logfile variable and file exist, create logfile if it doesn't exist. -if [ "${consolelog}" ]; then - if [ ! -f "${consolelog}" ]; then - touch "${consolelog}" - fi -fi - -# For games not displaying a console, and having logs into their game directory. -check_status.sh -if [ "${status}" != "0" ] && [ "${commandname}" == "START" ] && [ -n "${gamelogfile}" ]; then - if [ "$(find "${systemdir}" -name "gamelog*.log")" ]; then - fn_print_info "Moving game logs to ${gamelogdir}" - fn_script_log_info "Moving game logs to ${gamelogdir}" - echo -en "\n" - fn_sleep_time - mv "${systemdir}"/gamelog*.log "${gamelogdir}" - fi -fi - -# Log manager will start the cleanup if it finds logs older than "${logdays}". -if [ "$(find "${lgsmlogdir}"/ -type f -mtime +"${logdays}" | wc -l)" -ne "0" ]; then - fn_print_dots "Starting" - # Set common logs directories - commonlogs="${systemdir}/logs" - commonsourcelogs="${systemdir}/*/logs" - # Set addon logs directories - sourcemodlogdir="${systemdir}/addons/sourcemod/logs" - ulxlogdir="${systemdir}/data/ulx_logs" - darkrplogdir="${systemdir}/data/darkrp_logs" - legacyserverlogdir="${logdir}/server" - # Setting up counting variables - scriptcount="0" - consolecount="0" - gamecount="0" - srcdscount="0" - smcount="0" - ulxcount="0" - darkrpcount="0" - legacycount="0" - fn_sleep_time - fn_print_info "Removing logs older than ${logdays} days" - fn_script_log_info "Removing logs older than ${logdays} days" - # Logging logfiles to be removed according to "${logdays}", counting and removing them. - # Script logfiles. - find "${lgsmlogdir}"/ -type f -mtime +"${logdays}" | tee >> "${lgsmlog}" - scriptcount=$(find "${lgsmlogdir}"/ -type f -mtime +"${logdays}" | wc -l) - find "${lgsmlogdir}"/ -mtime +"${logdays}" -type f -exec rm -f {} \; - # SRCDS and unreal logfiles. - if [ "${engine}" == "unreal2" ] || [ "${engine}" == "source" ]; then - find "${gamelogdir}"/ -type f -mtime +"${logdays}" | tee >> "${lgsmlog}" - gamecount=$(find "${gamelogdir}"/ -type f -mtime +"${logdays}" | wc -l) - find "${gamelogdir}"/ -mtime +"${logdays}" -type f -exec rm -f {} \; - fi - # Console logfiles. - if [ "${consolelog}" ]; then - find "${consolelogdir}"/ -type f -mtime +"${logdays}" | tee >> "${lgsmlog}" - consolecount=$(find "${consolelogdir}"/ -type f -mtime +"${logdays}" | wc -l) - find "${consolelogdir}"/ -mtime +"${logdays}" -type f -exec rm -f {} \; - fi - # Common logfiles. - if [ -d "${commonlogs}" ]; then - find "${commonlogs}"/ -type f -mtime +"${logdays}" | tee >> "${lgsmlog}" - smcount=$(find "${commonlogs}"/ -type f -mtime +"${logdays}" | wc -l) - find "${commonlogs}"/ -mtime +"${logdays}" -type f -exec rm -f {} \; - fi - if [ -d "${commonsourcelogs}" ]; then - find "${commonsourcelogs}"/* -type f -mtime +"${logdays}" | tee >> "${lgsmlog}" - smcount=$(find "${commonsourcelogs}"/* -type f -mtime +"${logdays}" | wc -l) - find "${commonsourcelogs}"/* -mtime +"${logdays}" -type f -exec rm -f {} \; - fi - # Source addons logfiles. - if [ "${engine}" == "source" ]; then - # SourceMod logfiles. - if [ -d "${sourcemodlogdir}" ]; then - find "${sourcemodlogdir}"/ -type f -mtime +"${logdays}" | tee >> "${lgsmlog}" - smcount=$(find "${sourcemodlogdir}"/ -type f -mtime +"${logdays}" | wc -l) - find "${sourcemodlogdir}"/ -mtime +"${logdays}" -type f -exec rm -f {} \; - fi - # Garry's Mod logfiles. - if [ "${shortname}" == "gmod" ]; then - # ULX logfiles. - if [ -d "${ulxlogdir}" ]; then - find "${ulxlogdir}"/ -type f -mtime +"${logdays}" | tee >> "${lgsmlog}" - ulxcount=$(find "${ulxlogdir}"/ -type f -mtime +"${logdays}" | wc -l) - find "${ulxlogdir}"/ -mtime +"${logdays}" -type f -exec rm -f {} \; - fi - # DarkRP logfiles. - if [ -d "${darkrplogdir}" ]; then - find "${darkrplogdir}"/ -type f -mtime +"${logdays}" | tee >> "${lgsmlog}" - darkrpcount=$(find "${darkrplogdir}"/ -type f -mtime +"${logdays}" | wc -l) - find "${darkrplogdir}"/ -mtime +"${logdays}" -type f -exec rm -f {} \; - fi - fi - fi - - # Count total amount of files removed. - countlogs=$((scriptcount + consolecount + gamecount + srcdscount + smcount + ulxcount + darkrpcount)) - # Job done. - fn_print_ok "Removed ${countlogs} log files" - fn_script_log "Removed ${countlogs} log files" -fi diff --git a/lgsm/functions/core_messages.sh b/lgsm/functions/core_messages.sh deleted file mode 100644 index 5362dd3d30..0000000000 --- a/lgsm/functions/core_messages.sh +++ /dev/null @@ -1,598 +0,0 @@ -#!/bin/bash -# LinuxGSM core_messages.sh module -# Author: Daniel Gibbs -# Contributors: http://linuxgsm.com/contrib -# Website: https://linuxgsm.com -# Description: Defines on-screen messages such as [ OK ] and how script logs look. - -functionselfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")" - -# nl: new line: message is following by a new line. -# eol: end of line: message is placed at the end of the current line. -fn_ansi_loader() { - if [ "${ansi}" != "off" ]; then - # echo colors - default="\e[0m" - black="\e[30m" - red="\e[31m" - lightred="\e[91m" - green="\e[32m" - lightgreen="\e[92m" - yellow="\e[33m" - lightyellow="\e[93m" - blue="\e[34m" - lightblue="\e[94m" - magenta="\e[35m" - lightmagenta="\e[95m" - cyan="\e[36m" - lightcyan="\e[96m" - darkgrey="\e[90m" - lightgrey="\e[37m" - white="\e[97m" - fi - # carriage return & erase to end of line. - creeol="\r\033[K" -} - -fn_sleep_time() { - if [ "${sleeptime}" != "0" ] || [ "${travistest}" != "1" ]; then - if [ -z "${sleeptime}" ]; then - sleeptime=0.5 - fi - sleep "${sleeptime}" - fi -} - -# Log display -######################## -## Feb 28 14:56:58 ut99-server: Monitor: -fn_script_log() { - if [ -d "${lgsmlogdir}" ]; then - if [ -n "${commandname}" ]; then - echo -e "$(date '+%b %d %H:%M:%S.%3N') ${selfname}: ${commandname}: ${1}" >> "${lgsmlog}" - else - echo -e "$(date '+%b %d %H:%M:%S.%3N') ${selfname}: ${1}" >> "${lgsmlog}" - fi - fi -} - -## Feb 28 14:56:58 ut99-server: Monitor: PASS: -fn_script_log_pass() { - if [ -d "${lgsmlogdir}" ]; then - - if [ -n "${commandname}" ]; then - echo -e "$(date '+%b %d %H:%M:%S.%3N') ${selfname}: ${commandname}: PASS: ${1}" >> "${lgsmlog}" - else - echo -e "$(date '+%b %d %H:%M:%S.%3N') ${selfname}: PASS: ${1}" >> "${lgsmlog}" - fi - fi - exitcode=0 -} - -## Feb 28 14:56:58 ut99-server: Monitor: FATAL: -fn_script_log_fatal() { - if [ -d "${lgsmlogdir}" ]; then - if [ -n "${commandname}" ]; then - echo -e "$(date '+%b %d %H:%M:%S.%3N') ${selfname}: ${commandname}: FATAL: ${1}" >> "${lgsmlog}" - else - echo -e "$(date '+%b %d %H:%M:%S.%3N') ${selfname}: FATAL: ${1}" >> "${lgsmlog}" - fi - fi - exitcode=1 -} - -## Feb 28 14:56:58 ut99-server: Monitor: ERROR: -fn_script_log_error() { - if [ -d "${lgsmlogdir}" ]; then - if [ -n "${commandname}" ]; then - echo -e "$(date '+%b %d %H:%M:%S.%3N') ${selfname}: ${commandname}: ERROR: ${1}" >> "${lgsmlog}" - else - echo -e "$(date '+%b %d %H:%M:%S.%3N') ${selfname}: ERROR: ${1}" >> "${lgsmlog}" - fi - fi - exitcode=2 -} - -## Feb 28 14:56:58 ut99-server: Monitor: WARN: -fn_script_log_warn() { - if [ -d "${lgsmlogdir}" ]; then - if [ -n "${commandname}" ]; then - echo -e "$(date '+%b %d %H:%M:%S.%3N') ${selfname}: ${commandname}: WARN: ${1}" >> "${lgsmlog}" - else - echo -e "$(date '+%b %d %H:%M:%S.%3N') ${selfname}: WARN: ${1}" >> "${lgsmlog}" - fi - fi - exitcode=3 -} - -## Feb 28 14:56:58 ut99-server: Monitor: INFO: -fn_script_log_info() { - if [ -d "${lgsmlogdir}" ]; then - if [ -n "${commandname}" ]; then - echo -e "$(date '+%b %d %H:%M:%S.%3N') ${selfname}: ${commandname}: INFO: ${1}" >> "${lgsmlog}" - else - echo -e "$(date '+%b %d %H:%M:%S.%3N') ${selfname}: INFO: ${1}" >> "${lgsmlog}" - fi - fi -} - -## Feb 28 14:56:58 ut99-server: Monitor: UPDATE: -fn_script_log_update() { - if [ -d "${lgsmlogdir}" ]; then - if [ -n "${commandname}" ]; then - echo -e "$(date '+%b %d %H:%M:%S.%3N') ${selfname}: ${commandname}: UPDATE: ${1}" >> "${lgsmlog}" - else - echo -e "$(date '+%b %d %H:%M:%S.%3N') ${selfname}: UPDATE: ${1}" >> "${lgsmlog}" - fi - fi -} - -# On-Screen - Automated functions -################################## - -# [ .... ] -fn_print_dots() { - if [ "${commandaction}" ]; then - echo -en "${creeol}[ .... ] ${commandaction} ${selfname}: $*" - else - echo -en "${creeol}[ .... ] $*" - fi - fn_sleep_time -} - -fn_print_dots_nl() { - if [ "${commandaction}" ]; then - echo -e "${creeol}[ .... ] ${commandaction} ${selfname}: $*" - else - echo -e "${creeol}[ .... ] $*" - fi - fn_sleep_time - echo -en "\n" -} - -# [ OK ] -fn_print_ok() { - if [ "${commandaction}" ]; then - echo -en "${creeol}[${green} OK ${default}] ${commandaction} ${selfname}: $*" - else - echo -en "${creeol}[${green} OK ${default}] $*" - fi - fn_sleep_time -} - -fn_print_ok_nl() { - if [ "${commandaction}" ]; then - echo -en "${creeol}[${green} OK ${default}] ${commandaction} ${selfname}: $*" - else - echo -en "${creeol}[${green} OK ${default}] $*" - fi - fn_sleep_time - echo -en "\n" -} - -# [ FAIL ] -fn_print_fail() { - if [ "${commandaction}" ]; then - echo -en "${creeol}[${red} FAIL ${default}] ${commandaction} ${selfname}: $*" - else - echo -en "${creeol}[${red} FAIL ${default}] $*" - fi - fn_sleep_time -} - -fn_print_fail_nl() { - if [ "${commandaction}" ]; then - echo -en "${creeol}[${red} FAIL ${default}] ${commandaction} ${selfname}: $*" - else - echo -en "${creeol}[${red} FAIL ${default}] $*" - fi - fn_sleep_time - echo -en "\n" -} - -# [ ERROR ] -fn_print_error() { - if [ "${commandaction}" ]; then - echo -en "${creeol}[${red} ERROR ${default}] ${commandaction} ${selfname}: $*" - else - echo -en "${creeol}[${red} ERROR ${default}] $*" - fi - fn_sleep_time -} - -fn_print_error_nl() { - if [ "${commandaction}" ]; then - echo -en "${creeol}[${red} ERROR ${default}] ${commandaction} ${selfname}: $*" - else - echo -en "${creeol}[${red} ERROR ${default}] $*" - fi - fn_sleep_time - echo -en "\n" -} - -# [ WARN ] -fn_print_warn() { - if [ "${commandaction}" ]; then - echo -en "${creeol}[${lightyellow} WARN ${default}] ${commandaction} ${selfname}: $*" - else - echo -en "${creeol}[${lightyellow} WARN ${default}] $*" - fi - fn_sleep_time -} - -fn_print_warn_nl() { - if [ "${commandaction}" ]; then - echo -en "${creeol}[${lightyellow} WARN ${default}] ${commandaction} ${selfname}: $*" - else - echo -en "${creeol}[${lightyellow} WARN ${default}] $*" - fi - fn_sleep_time - echo -en "\n" -} - -# [ INFO ] -fn_print_info() { - if [ "${commandaction}" ]; then - echo -en "${creeol}[${cyan} INFO ${default}] ${commandaction} ${selfname}: $*" - else - echo -en "${creeol}[${cyan} INFO ${default}] $*" - fi - fn_sleep_time -} - -fn_print_info_nl() { - if [ "${commandaction}" ]; then - echo -en "${creeol}[${cyan} INFO ${default}] ${commandaction} ${selfname}: $*" - else - echo -en "${creeol}[${cyan} INFO ${default}] $*" - fi - fn_sleep_time - echo -en "\n" -} - -# [ START ] -fn_print_start() { - if [ "${commandaction}" ]; then - echo -en "${creeol}[${lightgreen} START ${default}] ${commandaction} ${selfname}: $*" - else - echo -en "${creeol}[${lightgreen} START ${default}] $*" - fi - fn_sleep_time -} - -fn_print_start_nl() { - if [ "${commandaction}" ]; then - echo -en "${creeol}[${lightgreen} START ${default}] ${commandaction} ${selfname}: $*" - else - echo -en "${creeol}[${lightgreen} START ${default}] $*" - fi - fn_sleep_time - echo -en "\n" -} - -# On-Screen - Interactive messages -################################## - -# No More Room in Hell Debug -# ================================= -fn_print_header() { - echo -e "" - echo -e "${lightyellow}${gamename} ${commandaction}${default}" - echo -e "=================================${default}" -} - -# Complete! -fn_print_complete() { - echo -en "${green}Complete!${default} $*" - fn_sleep_time -} - -fn_print_complete_nl() { - echo -e "${green}Complete!${default} $*" - fn_sleep_time -} - -# Failure! -fn_print_failure() { - echo -en "${red}Failure!${default} $*" - fn_sleep_time -} - -fn_print_failure_nl() { - echo -e "${red}Failure!${default} $*" - fn_sleep_time -} - -# Error! -fn_print_error2() { - echo -en "${red}Error!${default} $*" - fn_sleep_time -} - -fn_print_error2_nl() { - echo -e "${red}Error!${default} $*" - fn_sleep_time -} - -# Warning! -fn_print_warning() { - echo -en "${lightyellow}Warning!${default} $*" - fn_sleep_time -} - -fn_print_warning_nl() { - echo -e "${lightyellow}Warning!${default} $*" - fn_sleep_time -} - -# Information! -fn_print_information() { - echo -en "${cyan}Information!${default} $*" - fn_sleep_time -} - -fn_print_information_nl() { - echo -e "${cyan}Information!${default} $*" - fn_sleep_time -} - -# Y/N Prompt -fn_prompt_yn() { - local prompt="$1" - local initial="$2" - - if [ "${initial}" == "Y" ]; then - prompt+=" [Y/n] " - elif [ "${initial}" == "N" ]; then - prompt+=" [y/N] " - else - prompt+=" [y/n] " - fi - - while true; do - read -e -i "${initial}" -p "${prompt}" -r yn - case "${yn}" in - [Yy] | [Yy][Ee][Ss]) return 0 ;; - [Nn] | [Nn][Oo]) return 1 ;; - *) echo -e "Please answer yes or no." ;; - esac - done -} - -# Prompt for message -fn_prompt_message() { - while true; do - unset prompt - local prompt="$1" - read -e -p "${prompt}" -r answer - if fn_prompt_yn "Continue" Y; then - break - fi - done - echo "${answer}" -} - -# On-Screen End of Line -################################## - -# YES -fn_print_yes_eol() { - echo -en "${cyan}YES${default}" - fn_sleep_time -} - -fn_print_yes_eol_nl() { - echo -e "${cyan}YES${default}" - fn_sleep_time -} - -# NO -fn_print_no_eol() { - echo -en "${red}NO${default}" - fn_sleep_time -} - -fn_print_no_eol_nl() { - echo -e "${red}NO${default}" - fn_sleep_time -} - -# OK -fn_print_ok_eol() { - echo -en "${green}OK${default}" - fn_sleep_time -} - -fn_print_ok_eol_nl() { - echo -e "${green}OK${default}" - fn_sleep_time -} - -# FAIL -fn_print_fail_eol() { - echo -en "${red}FAIL${default}" - fn_sleep_time -} - -fn_print_fail_eol_nl() { - echo -e "${red}FAIL${default}" - fn_sleep_time -} - -# ERROR -fn_print_error_eol() { - echo -en "${red}ERROR${default}" - fn_sleep_time -} - -fn_print_error_eol_nl() { - echo -e "${red}ERROR${default}" - fn_sleep_time -} - -# WAIT -fn_print_wait_eol() { - echo -en "${cyan}WAIT${default}" - fn_sleep_time -} - -fn_print_wait_eol_nl() { - echo -e "${cyan}WAIT${default}" - fn_sleep_time -} - -# WARN -fn_print_warn_eol() { - echo -en "${lightyellow}WARN${default}" - fn_sleep_time -} - -fn_print_warn_eol_nl() { - echo -e "${lightyellow}WARN${default}" - fn_sleep_time -} - -# INFO -fn_print_info_eol() { - echo -en "${cyan}INFO${default}" - fn_sleep_time -} - -fn_print_info_eol_nl() { - echo -e "${cyan}INFO${default}" - fn_sleep_time -} - -# QUERYING -fn_print_querying_eol() { - echo -en "${cyan}QUERYING${default}" - fn_sleep_time -} - -fn_print_querying_eol_nl() { - echo -e "${cyan}QUERYING${default}" - fn_sleep_time -} - -# CHECKING -fn_print_checking_eol() { - echo -en "${cyan}CHECKING${default}" - fn_sleep_time -} - -fn_print_checking_eol_nl() { - echo -e "${cyan}CHECKING${default}" - fn_sleep_time -} - -# DELAY -fn_print_delay_eol() { - echo -en "${green}DELAY${default}" - fn_sleep_time -} - -fn_print_delay_eol_nl() { - echo -e "${green}DELAY${default}" - fn_sleep_time -} - -# CANCELED -fn_print_canceled_eol() { - echo -en "${lightyellow}CANCELED${default}" - fn_sleep_time -} - -fn_print_canceled_eol_nl() { - echo -e "${lightyellow}CANCELED${default}" - fn_sleep_time -} - -# REMOVED -fn_print_removed_eol() { - echo -en "${red}REMOVED${default}" - fn_sleep_time -} - -fn_print_removed_eol_nl() { - echo -e "${red}REMOVED${default}" - fn_sleep_time -} - -# UPDATE -fn_print_update_eol() { - echo -en "${cyan}UPDATE${default}" - fn_sleep_time -} - -fn_print_update_eol_nl() { - echo -e "${cyan}UPDATE${default}" - fn_sleep_time -} - -fn_print_ascii_logo() { - echo -e "" - echo -e " mdMMMMbm" - echo -e " mMMMMMMMMMMm" - echo -e " mMMMMMMMMMMMMm" - echo -e " mMMMMMMMMMMMMMMm" - echo -e " hMMMV^VMMV^VMMMh" - echo -e " MMMMM MM MMMMM" - echo -e " hMMs vv sMMh" - echo -e " hMMM: :MMMh" - echo -e " .hMMMh hMMMh." - echo -e " -dMMMh ${lightgrey}__${default} hMMMd-" - echo -e " :mMMMs ${lightgrey}||${default} sMMMm:" - echo -e " :MMMM+ ${lightgrey}||${default} ${red}_${default} +NMMN:" - echo -e " .mMMM+ ${lightgrey}========${default} +MMMm." - echo -e " yMMMy ${darkgrey}##############${default} yMMMy" - echo -e " mMMM: ${darkgrey}##############${default} :MMMm" - echo -e " mMM ${lightyellow}nn${default} ${lightyellow}nn${default} ${lightyellow}nn${default} ${lightyellow}nn${default} MMm" - echo -e " o ${lightyellow}nNNNNNNNn${default} ${lightyellow}nNNNNNNNn${default} o" - echo -e " ${lightyellow}nNNNNNNNNNn${default} ${lightyellow}nNNNNNNNNNn${default}" - echo -e " ${lightyellow}nNNNNNNNNNNN${default} ${lightyellow}NNNNNNNNNNNn${default}" - echo -e " ${lightyellow}+NNNNNNNNN:${default} ${lightyellow}:NNNNNNNNN+${default}" - echo -e " ${lightyellow}nNNNNNNN${default} /\ ${lightyellow}NNNNNNNn${default}" - echo -e " ${lightyellow}nnnnn${default} db ${lightyellow}nnnnn${default}" - echo -e "" - echo -e "${lightyellow}888${default} ${lightyellow}d8b${default} ${default}.d8888b. .d8888b. 888b d888" - echo -e "${lightyellow}888 Y8P ${default}d88P Y88b d88P Y88b 8888b d8888" - echo -e "${lightyellow}888${default} ${default}888${default} 888 Y88b. 88888b.d88888" - echo -e "${lightyellow}888${default} ${lightyellow}888${default} ${lightyellow}88888b.${default} ${lightyellow}888${default} ${lightyellow}888${default} ${lightyellow}888${default} ${lightyellow}888${default} 888 Y888b. 888Y88888P888" - echo -e "${lightyellow}888${default} ${lightyellow}888${default} ${lightyellow}888${default} ${lightyellow}88b${default} ${lightyellow}888${default} ${lightyellow}888${default} ${lightyellow}Y8bd8P${default} 888 88888 Y88b. 888 Y888P 888" - echo -e "${lightyellow}888${default} ${lightyellow}888${default} ${lightyellow}888${default} ${lightyellow}888${default} ${lightyellow}888${default} ${lightyellow}888${default} ${lightyellow}X88K${default} 888 888 888 888 Y8P 888" - echo -e "${lightyellow}888${default} ${lightyellow}888${default} ${lightyellow}888${default} ${lightyellow}888${default} ${lightyellow}Y88b${default} ${lightyellow}88Y${default} ${lightyellow}.d8pq8b.${default} Y88b d88P Y88b d88P 888 * 888" - echo -e "${lightyellow}LinuxGSM${default} ${lightyellow}888${default} ${lightyellow}888${default} ${lightyellow}888${default} ${lightyellow}Y8888Y${default} ${lightyellow}888${default} ${lightyellow}888${default} Y2012P88 Y8888P 888 888" - echo -e "" -} - -fn_print_restart_warning() { - fn_print_warn "${selfname} will be restarted" - fn_script_log_warn "${selfname} will be restarted" - totalseconds=3 - for seconds in {3..1}; do - fn_print_warn "${selfname} will be restarted: ${totalseconds}" - totalseconds=$((totalseconds - 1)) - sleep 1 - if [ "${seconds}" == "0" ]; then - break - fi - done - fn_print_warn_nl "${selfname} will be restarted" -} - -# Functions below are used to ensure that logs and UI correctly reflect the command it is actually running. -# Useful when a command has to call upon another command causing the other command to overrite commandname variables - -# Used to remember the command that ran first. -fn_firstcommand_set() { - if [ -z "${firstcommandname}" ]; then - firstcommandname="${commandname}" - firstcommandaction="${commandaction}" - fi -} - -# Used to reset commandname variables to the command the script ran first. -fn_firstcommand_reset() { - commandname="${firstcommandname}" - commandaction="${firstcommandaction}" -} diff --git a/lgsm/functions/core_modules.sh b/lgsm/functions/core_modules.sh deleted file mode 100644 index 80e890d1a7..0000000000 --- a/lgsm/functions/core_modules.sh +++ /dev/null @@ -1,816 +0,0 @@ -#!/bin/bash -# LinuxGSM core_modules.sh module -# Author: Daniel Gibbs -# Contributors: http://linuxgsm.com/contrib -# Website: https://linuxgsm.com -# Description: Defines all modules to allow download and execution of modules using fn_fetch_module. -# This module is called first before any other module. Without this file other modules will not load. - -moduleselfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")" - -modulesversion="v23.3.1" - -# Core - -core_dl.sh() { - modulefile="${FUNCNAME[0]}" - if [ "$(type fn_fetch_core_dl 2> /dev/null)" ]; then - fn_fetch_core_dl "lgsm/modules" "core_dl.sh" "${modulesdir}" "chmodx" "run" "noforcedl" "nohash" - else - fn_bootstrap_fetch_file_github "lgsm/modules" "core_dl.sh" "${modulesdir}" "chmodx" "run" "noforcedl" "nohash" - fi -} - -core_messages.sh() { - modulefile="${FUNCNAME[0]}" - if [ "$(type fn_fetch_core_dl 2> /dev/null)" ]; then - fn_fetch_core_dl "lgsm/modules" "core_messages.sh" "${modulesdir}" "chmodx" "run" "noforcedl" "nohash" - else - fn_bootstrap_fetch_file_github "lgsm/modules" "core_messages.sh" "${modulesdir}" "chmodx" "run" "noforcedl" "nohash" - fi -} - -core_legacy.sh() { - modulefile="${FUNCNAME[0]}" - if [ "$(type fn_fetch_core_dl 2> /dev/null)" ]; then - fn_fetch_core_dl "lgsm/modules" "core_legacy.sh" "${modulesdir}" "chmodx" "run" "noforcedl" "nohash" - else - fn_bootstrap_fetch_file_github "lgsm/modules" "core_legacy.sh" "${modulesdir}" "chmodx" "run" "noforcedl" "nohash" - fi -} - -core_exit.sh() { - modulefile="${FUNCNAME[0]}" - fn_fetch_module -} - -core_getopt.sh() { - modulefile="${FUNCNAME[0]}" - fn_fetch_module -} - -core_trap.sh() { - modulefile="${FUNCNAME[0]}" - fn_fetch_module -} - -core_steamcmd.sh() { - modulefile="${FUNCNAME[0]}" - fn_fetch_module -} - -core_github.sh() { - modulefile="${FUNCNAME[0]}" - fn_fetch_module -} - -# Commands - -command_backup.sh() { - modulefile="${FUNCNAME[0]}" - fn_fetch_module -} - -command_console.sh() { - modulefile="${FUNCNAME[0]}" - fn_fetch_module -} - -command_debug.sh() { - modulefile="${FUNCNAME[0]}" - fn_fetch_module -} - -command_details.sh() { - modulefile="${FUNCNAME[0]}" - fn_fetch_module -} - -command_sponsor.sh() { - modulefile="${FUNCNAME[0]}" - fn_fetch_module -} - -command_postdetails.sh() { - modulefile="${FUNCNAME[0]}" - fn_fetch_module -} - -command_test_alert.sh() { - modulefile="${FUNCNAME[0]}" - fn_fetch_module -} - -command_monitor.sh() { - modulefile="${FUNCNAME[0]}" - fn_fetch_module -} - -command_start.sh() { - modulefile="${FUNCNAME[0]}" - fn_fetch_module -} - -command_stop.sh() { - modulefile="${FUNCNAME[0]}" - fn_fetch_module -} - -command_validate.sh() { - modulefile="${FUNCNAME[0]}" - fn_fetch_module -} - -command_install.sh() { - modulefile="${FUNCNAME[0]}" - fn_fetch_module -} - -command_install_resources_mta.sh() { - modulefile="${FUNCNAME[0]}" - fn_fetch_module -} - -install_squad_license.sh() { - modulefile="${FUNCNAME[0]}" - fn_fetch_module -} - -command_mods_install.sh() { - modulefile="${FUNCNAME[0]}" - fn_fetch_module -} - -command_mods_update.sh() { - modulefile="${FUNCNAME[0]}" - fn_fetch_module -} - -command_mods_remove.sh() { - modulefile="${FUNCNAME[0]}" - fn_fetch_module -} - -command_fastdl.sh() { - modulefile="${FUNCNAME[0]}" - fn_fetch_module -} - -command_ts3_server_pass.sh() { - modulefile="${FUNCNAME[0]}" - fn_fetch_module -} - -command_restart.sh() { - modulefile="${FUNCNAME[0]}" - fn_fetch_module -} - -command_skeleton.sh() { - modulefile="${FUNCNAME[0]}" - fn_fetch_module -} - -command_wipe.sh() { - modulefile="${FUNCNAME[0]}" - fn_fetch_module -} - -command_send.sh() { - modulefile="${FUNCNAME[0]}" - fn_fetch_module -} - -# Checks - -check.sh() { - modulefile="${FUNCNAME[0]}" - fn_fetch_module -} - -check_config.sh() { - modulefile="${FUNCNAME[0]}" - fn_fetch_module -} - -check_deps.sh() { - modulefile="${FUNCNAME[0]}" - fn_fetch_module -} - -check_executable.sh() { - modulefile="${FUNCNAME[0]}" - fn_fetch_module -} - -check_glibc.sh() { - modulefile="${FUNCNAME[0]}" - fn_fetch_module -} - -check_ip.sh() { - modulefile="${FUNCNAME[0]}" - fn_fetch_module -} - -check_last_update.sh() { - modulefile="${FUNCNAME[0]}" - fn_fetch_module -} - -check_logs.sh() { - modulefile="${FUNCNAME[0]}" - fn_fetch_module -} - -check_permissions.sh() { - modulefile="${FUNCNAME[0]}" - fn_fetch_module -} - -check_root.sh() { - modulefile="${FUNCNAME[0]}" - fn_fetch_module -} - -check_status.sh() { - modulefile="${FUNCNAME[0]}" - fn_fetch_module -} - -check_steamcmd.sh() { - modulefile="${FUNCNAME[0]}" - fn_fetch_module -} - -check_system_dir.sh() { - modulefile="${FUNCNAME[0]}" - fn_fetch_module -} - -check_system_requirements.sh() { - modulefile="${FUNCNAME[0]}" - fn_fetch_module -} - -check_tmuxception.sh() { - modulefile="${FUNCNAME[0]}" - fn_fetch_module -} - -check_version.sh() { - modulefile="${FUNCNAME[0]}" - fn_fetch_module -} - -# Compress - -compress_unreal2_maps.sh() { - modulefile="${FUNCNAME[0]}" - fn_fetch_module -} - -compress_ut99_maps.sh() { - modulefile="${FUNCNAME[0]}" - fn_fetch_module -} - -# Mods - -mods_list.sh() { - modulefile="${FUNCNAME[0]}" - fn_fetch_module -} - -mods_core.sh() { - modulefile="${FUNCNAME[0]}" - fn_fetch_module -} - -# Dev - -command_dev_clear_modules.sh() { - modulefile="${FUNCNAME[0]}" - fn_fetch_module -} - -command_dev_debug.sh() { - modulefile="${FUNCNAME[0]}" - fn_fetch_module -} - -command_dev_detect_deps.sh() { - modulefile="${FUNCNAME[0]}" - fn_fetch_module -} - -command_dev_detect_glibc.sh() { - modulefile="${FUNCNAME[0]}" - fn_fetch_module -} - -command_dev_detect_ldd.sh() { - modulefile="${FUNCNAME[0]}" - fn_fetch_module -} - -command_dev_query_raw.sh() { - modulefile="${FUNCNAME[0]}" - fn_fetch_module -} - -# Fix - -fix.sh() { - modulefile="${FUNCNAME[0]}" - fn_fetch_module -} - -fix_ark.sh() { - modulefile="${FUNCNAME[0]}" - fn_fetch_module -} - -fix_av.sh() { - modulefile="${FUNCNAME[0]}" - fn_fetch_module -} - -fix_arma3.sh() { - modulefile="${FUNCNAME[0]}" - fn_fetch_module -} - -fix_armar.sh() { - modulefile="${FUNCNAME[0]}" - fn_fetch_module -} - -fix_bt.sh() { - modulefile="${FUNCNAME[0]}" - fn_fetch_module -} - -fix_bo.sh() { - modulefile="${FUNCNAME[0]}" - fn_fetch_module -} - -fix_cmw.sh() { - modulefile="${FUNCNAME[0]}" - fn_fetch_module -} - -fix_csgo.sh() { - modulefile="${FUNCNAME[0]}" - fn_fetch_module -} - -fix_dst.sh() { - modulefile="${FUNCNAME[0]}" - fn_fetch_module -} - -fix_hw.sh() { - modulefile="${FUNCNAME[0]}" - fn_fetch_module -} - -fix_ins.sh() { - modulefile="${FUNCNAME[0]}" - fn_fetch_module -} - -fix_kf.sh() { - modulefile="${FUNCNAME[0]}" - fn_fetch_module -} - -fix_kf2.sh() { - modulefile="${FUNCNAME[0]}" - fn_fetch_module -} - -fix_lo.sh() { - modulefile="${FUNCNAME[0]}" - fn_fetch_module -} - -fix_mcb.sh() { - modulefile="${FUNCNAME[0]}" - fn_fetch_module -} - -fix_mta.sh() { - modulefile="${FUNCNAME[0]}" - fn_fetch_module -} - -fix_nmrih.sh() { - modulefile="${FUNCNAME[0]}" - fn_fetch_module -} - -fix_onset.sh() { - modulefile="${FUNCNAME[0]}" - fn_fetch_module -} - -fix_ro.sh() { - modulefile="${FUNCNAME[0]}" - fn_fetch_module -} - -fix_rust.sh() { - modulefile="${FUNCNAME[0]}" - fn_fetch_module -} - -fix_rw.sh() { - modulefile="${FUNCNAME[0]}" - fn_fetch_module -} - -fix_sfc.sh() { - modulefile="${FUNCNAME[0]}" - fn_fetch_module -} - -fix_st.sh() { - modulefile="${FUNCNAME[0]}" - fn_fetch_module -} - -fix_steamcmd.sh() { - modulefile="${FUNCNAME[0]}" - fn_fetch_module -} - -fix_terraria.sh() { - modulefile="${FUNCNAME[0]}" - fn_fetch_module -} - -fix_tf2.sh() { - modulefile="${FUNCNAME[0]}" - fn_fetch_module -} - -fix_ut3.sh() { - modulefile="${FUNCNAME[0]}" - fn_fetch_module -} - -fix_rust.sh() { - modulefile="${FUNCNAME[0]}" - fn_fetch_module -} - -fix_samp.sh() { - modulefile="${FUNCNAME[0]}" - fn_fetch_module -} - -fix_sdtd.sh() { - modulefile="${FUNCNAME[0]}" - fn_fetch_module -} - -fix_sof2.sh() { - modulefile="${FUNCNAME[0]}" - fn_fetch_module -} - -fix_squad.sh() { - modulefile="${FUNCNAME[0]}" - fn_fetch_module -} - -fix_ts3.sh() { - modulefile="${FUNCNAME[0]}" - fn_fetch_module -} - -fix_ut2k4.sh() { - modulefile="${FUNCNAME[0]}" - fn_fetch_module -} - -fix_ut.sh() { - modulefile="${FUNCNAME[0]}" - fn_fetch_module -} - -fix_unt.sh() { - modulefile="${FUNCNAME[0]}" - fn_fetch_module -} - -fix_vh.sh() { - modulefile="${FUNCNAME[0]}" - fn_fetch_module -} - -fix_wurm.sh() { - modulefile="${FUNCNAME[0]}" - fn_fetch_module -} - -fix_zmr.sh() { - modulefile="${FUNCNAME[0]}" - fn_fetch_module -} - -# Info - -info_distro.sh() { - modulefile="${FUNCNAME[0]}" - fn_fetch_module -} - -info_game.sh() { - modulefile="${FUNCNAME[0]}" - fn_fetch_module -} - -info_messages.sh() { - modulefile="${FUNCNAME[0]}" - fn_fetch_module -} - -info_stats.sh() { - modulefile="${FUNCNAME[0]}" - fn_fetch_module -} - -# Alert - -alert.sh() { - modulefile="${FUNCNAME[0]}" - fn_fetch_module -} - -alert_discord.sh() { - modulefile="${FUNCNAME[0]}" - fn_fetch_module -} - -alert_email.sh() { - modulefile="${FUNCNAME[0]}" - fn_fetch_module -} - -alert_ifttt.sh() { - modulefile="${FUNCNAME[0]}" - fn_fetch_module -} - -alert_mailgun.sh() { - modulefile="${FUNCNAME[0]}" - fn_fetch_module -} - -alert_pushbullet.sh() { - modulefile="${FUNCNAME[0]}" - fn_fetch_module -} - -alert_pushover.sh() { - modulefile="${FUNCNAME[0]}" - fn_fetch_module -} - -alert_gotify.sh() { - modulefile="${FUNCNAME[0]}" - fn_fetch_module -} - -alert_telegram.sh() { - modulefile="${FUNCNAME[0]}" - fn_fetch_module -} - -alert_rocketchat.sh() { - modulefile="${FUNCNAME[0]}" - fn_fetch_module -} - -alert_slack.sh() { - modulefile="${FUNCNAME[0]}" - fn_fetch_module -} -# Logs - -core_logs.sh() { - modulefile="${FUNCNAME[0]}" - fn_fetch_module -} - -# Query - -query_gamedig.sh() { - modulefile="${FUNCNAME[0]}" - fn_fetch_module -} - -# Update - -command_update_modules.sh() { - modulefile="${FUNCNAME[0]}" - fn_fetch_module -} - -command_update_linuxgsm.sh() { - modulefile="${FUNCNAME[0]}" - fn_fetch_module -} - -command_update.sh() { - modulefile="${FUNCNAME[0]}" - fn_fetch_module -} - -command_check_update.sh() { - modulefile="${FUNCNAME[0]}" - fn_fetch_module -} - -update_ts3.sh() { - modulefile="${FUNCNAME[0]}" - fn_fetch_module -} - -update_minecraft.sh() { - modulefile="${FUNCNAME[0]}" - fn_fetch_module -} - -update_minecraft_bedrock.sh() { - modulefile="${FUNCNAME[0]}" - fn_fetch_module -} - -update_papermc.sh() { - modulefile="${FUNCNAME[0]}" - fn_fetch_module -} - -update_mta.sh() { - modulefile="${FUNCNAME[0]}" - fn_fetch_module -} - -update_factorio.sh() { - modulefile="${FUNCNAME[0]}" - fn_fetch_module -} - -update_jediknight2.sh() { - modulefile="${FUNCNAME[0]}" - fn_fetch_module -} - -update_steamcmd.sh() { - modulefile="${FUNCNAME[0]}" - fn_fetch_module -} - -update_vintagestory.sh() { - modulefile="${FUNCNAME[0]}" - fn_fetch_module -} - -update_ut99.sh() { - modulefile="${FUNCNAME[0]}" - fn_fetch_module -} - -fn_update_modules.sh() { - modulefile="${FUNCNAME[0]}" - fn_fetch_module -} - -# -## Installer modules -# - -fn_autoinstall() { - autoinstall=1 - command_install.sh -} - -install_complete.sh() { - modulefile="${FUNCNAME[0]}" - fn_fetch_module -} - -install_config.sh() { - modulefile="${FUNCNAME[0]}" - fn_fetch_module -} - -install_factorio_save.sh() { - modulefile="${FUNCNAME[0]}" - fn_fetch_module -} - -install_dst_token.sh() { - modulefile="${FUNCNAME[0]}" - fn_fetch_module -} - -install_eula.sh() { - modulefile="${FUNCNAME[0]}" - fn_fetch_module -} - -install_gsquery.sh() { - modulefile="${FUNCNAME[0]}" - fn_fetch_module -} - -install_gslt.sh() { - modulefile="${FUNCNAME[0]}" - fn_fetch_module -} - -install_header.sh() { - modulefile="${FUNCNAME[0]}" - fn_fetch_module -} - -install_logs.sh() { - modulefile="${FUNCNAME[0]}" - fn_fetch_module -} - -install_retry.sh() { - modulefile="${FUNCNAME[0]}" - fn_fetch_module -} - -install_server_dir.sh() { - modulefile="${FUNCNAME[0]}" - fn_fetch_module -} -install_server_files.sh() { - modulefile="${FUNCNAME[0]}" - fn_fetch_module -} - -install_stats.sh() { - modulefile="${FUNCNAME[0]}" - fn_fetch_module -} - -install_steamcmd.sh() { - modulefile="${FUNCNAME[0]}" - fn_fetch_module -} - -install_ts3.sh() { - modulefile="${FUNCNAME[0]}" - fn_fetch_module -} - -install_ts3db.sh() { - modulefile="${FUNCNAME[0]}" - fn_fetch_module -} - -install_ut2k4.sh() { - modulefile="${FUNCNAME[0]}" - fn_fetch_module -} - -install_dl_ut2k4.sh() { - modulefile="${FUNCNAME[0]}" - fn_fetch_module -} - -install_ut2k4_key.sh() { - modulefile="${FUNCNAME[0]}" - fn_fetch_module -} - -# Calls code required for legacy servers -core_legacy.sh - -# Creates tmp dir if missing -if [ ! -d "${tmpdir}" ]; then - mkdir -p "${tmpdir}" -fi - -# Creates lock dir if missing -if [ ! -d "${lockdir}" ]; then - mkdir -p "${lockdir}" -fi - -# Calls on-screen messages (bootstrap) -core_messages.sh - -#Calls file downloader (bootstrap) -core_dl.sh - -# Calls the global Ctrl-C trap -core_trap.sh diff --git a/lgsm/functions/core_steamcmd.sh b/lgsm/functions/core_steamcmd.sh deleted file mode 100644 index 77dd12d5ee..0000000000 --- a/lgsm/functions/core_steamcmd.sh +++ /dev/null @@ -1,334 +0,0 @@ -#!/bin/bash -# LinuxGSM core_steamcmd.sh module -# Author: Daniel Gibbs -# Contributors: http://linuxgsm.com/contrib -# Website: https://linuxgsm.com -# Description: Core functions for SteamCMD - -functionselfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")" - -fn_install_steamcmd() { - if [ "${shortname}" == "ark" ] && [ "${installsteamcmd}" == "1" ]; then - steamcmddir="${serverfiles}/Engine/Binaries/ThirdParty/SteamCMD/Linux" - fi - if [ ! -d "${steamcmddir}" ]; then - mkdir -p "${steamcmddir}" - fi - fn_fetch_file "http://media.steampowered.com/client/steamcmd_linux.tar.gz" "" "" "" "${tmpdir}" "steamcmd_linux.tar.gz" "nochmodx" "norun" "noforce" "nohash" - fn_dl_extract "${tmpdir}" "steamcmd_linux.tar.gz" "${steamcmddir}" - chmod +x "${steamcmddir}/steamcmd.sh" -} - -fn_check_steamcmd_user() { - # Checks if steamuser is setup. - if [ "${steamuser}" == "username" ]; then - fn_print_fail_nl "Steam login not set. Update steamuser in ${configdirserver}" - echo -e " * Change steamuser=\"username\" to a valid steam login." - if [ -d "${lgsmlogdir}" ]; then - fn_script_log_fatal "Steam login not set. Update steamuser in ${configdirserver}" - fi - core_exit.sh - fi - # Anonymous user is set if steamuser is missing. - if [ -z "${steamuser}" ]; then - if [ -d "${lgsmlogdir}" ]; then - fn_script_log_info "Login to SteamCMD as: anonymous" - fi - steamuser="anonymous" - steampass='' - else - if [ -d "${lgsmlogdir}" ]; then - fn_script_log_info "Login to SteamCMD as: ${steamuser}" - fi - fi -} - -fn_check_steamcmd() { - # Checks if SteamCMD exists when starting or updating a server. - # Only install if steamcmd package is missing or steamcmd dir is missing. - if [ ! -f "${steamcmddir}/steamcmd.sh" ] && [ -z "$(command -v steamcmd 2> /dev/null)" ]; then - if [ "${commandname}" == "INSTALL" ]; then - fn_install_steamcmd - else - fn_print_warn_nl "SteamCMD is missing" - fn_script_log_warn "SteamCMD is missing" - fn_install_steamcmd - fi - elif [ "${commandname}" == "INSTALL" ]; then - fn_print_information "SteamCMD is already installed..." - fn_print_ok_eol_nl - fi -} - -fn_check_steamcmd_dir() { - # Worksround that pre-installs the correct steam directories to ensure all packages use the correct Standard. - # https://github.com/ValveSoftware/steam-for-linux/issues/6976#issuecomment-610446347 - - # Create Steam installation directory. - if [ ! -d "${XDG_DATA_HOME:="${HOME}/.local/share"}/Steam" ]; then - mkdir -p "${XDG_DATA_HOME:="${HOME}/.local/share"}/Steam" - fi - - # Create common Steam directory. - if [ ! -d "${HOME}/.steam" ]; then - mkdir -p "${HOME}/.steam" - fi - - # Symbolic links to Steam installation directory. - if [ ! -L "${HOME}/.steam/root" ]; then - if [ -d "${HOME}/.steam/root" ]; then - rm -f "${HOME:?}/.steam/root" - fi - ln -s "${XDG_DATA_HOME:="${HOME}/.local/share"}/Steam" "${HOME}/.steam/root" - fi - - if [ ! -L "${HOME}/.steam/steam" ]; then - if [ -d "${HOME}/.steam/steam" ]; then - rm -rf "${HOME}/.steam/steam" - fi - ln -s "${XDG_DATA_HOME:="${HOME}/.local/share"}/Steam" "${HOME}/.steam/steam" - fi -} - -fn_check_steamcmd_dir_legacy() { - # Remove old Steam installation directories ~/Steam and ${rootdir}/steamcmd - if [ -d "${rootdir}/steamcmd" ] && [ "${steamcmddir}" == "${XDG_DATA_HOME:="${HOME}/.local/share"}/Steam" ]; then - rm -rf "${rootdir:?}/steamcmd" - fi - - if [ -d "${HOME}/Steam" ] && [ "${steamcmddir}" == "${XDG_DATA_HOME:="${HOME}/.local/share"}/Steam" ]; then - rm -rf "${HOME}/Steam" - fi -} - -fn_check_steamcmd_steamapp() { - # Check that steamapp directory fixes issue #3481 - if [ ! -d "${serverfiles}/steamapps" ]; then - mkdir -p "${serverfiles}/steamapps" - fi -} - -fn_check_steamcmd_ark() { - # Checks if SteamCMD exists in - # Engine/Binaries/ThirdParty/SteamCMD/Linux - # to allow ark mods to work - if [ ! -f "${serverfiles}/Engine/Binaries/ThirdParty/SteamCMD/Linux/steamcmd.sh" ]; then - installsteamcmd=1 - if [ "${commandname}" == "INSTALL" ]; then - fn_install_steamcmd - else - fn_print_warn_nl "ARK mods SteamCMD is missing" - fn_script_log_warn "ARK mods SteamCMD is missing" - fn_install_steamcmd - fi - elif [ "${commandname}" == "INSTALL" ]; then - fn_print_information "ARK mods SteamCMD is already installed..." - fn_print_ok_eol_nl - fi -} - -fn_check_steamcmd_clear() { - # Will remove steamcmd dir if steamcmd package is installed. - if [ "$(command -v steamcmd 2> /dev/null)" ] && [ -d "${rootdir}/steamcmd" ]; then - rm -rf "${steamcmddir:?}" - exitcode=$? - if [ "${exitcode}" != 0 ]; then - fn_script_log_fatal "Removing ${rootdir}/steamcmd" - else - fn_script_log_pass "Removing ${rootdir}/steamcmd" - fi - fi -} - -fn_check_steamcmd_exec() { - if [ "$(command -v steamcmd 2> /dev/null)" ]; then - steamcmdcommand="steamcmd" - else - steamcmdcommand="./steamcmd.sh" - fi -} - -fn_update_steamcmd_localbuild() { - # Gets local build info. - fn_print_dots "Checking local build: ${remotelocation}" - fn_appmanifest_check - # Uses appmanifest to find local build. - localbuild=$(grep buildid "${appmanifestfile}" | tr '[:blank:]"' ' ' | tr -s ' ' | cut -d\ -f3) - - # Set branch to public if no custom branch. - if [ -z "${branch}" ]; then - branch="public" - fi - - # Checks if localbuild variable has been set. - if [ -z "${localbuild}" ]; then - fn_print_fail "Checking local build: ${remotelocation}: missing local build info" - fn_script_log_fatal "Missing local build info" - core_exit.sh - else - fn_print_ok "Checking local build: ${remotelocation}" - fn_script_log_pass "Checking local build" - fi -} - -fn_update_steamcmd_remotebuild() { - # Get remote build info. - if [ -d "${steamcmddir}" ]; then - cd "${steamcmddir}" || exit - fi - - # Removes appinfo.vdf as a fix for not always getting up to date version info from SteamCMD. - if [ "$(find "${HOME}" -type f -name "appinfo.vdf" | wc -l)" -ne "0" ]; then - find "${HOME}" -type f -name "appinfo.vdf" -exec rm -f {} \; - fi - - # password for branch not needed to check the buildid - remotebuildversion=$(${steamcmdcommand} +login "${steamuser}" "${steampass}" +app_info_update 1 +app_info_print "${appid}" +quit | sed -e '/"branches"/,/^}/!d' | sed -n "/\"${branch}\"/,/}/p" | grep -m 1 buildid | tr -cd '[:digit:]') - - if [ "${firstcommandname}" != "INSTALL" ]; then - fn_print_dots "Checking remote build: ${remotelocation}" - # Checks if remotebuildversion variable has been set. - if [ -z "${remotebuildversion}" ] || [ "${remotebuildversion}" == "null" ]; then - fn_print_fail "Checking remote build: ${remotelocation}" - fn_script_log_fatal "Checking remote build" - core_exit.sh - else - fn_print_ok "Checking remote build: ${remotelocation}" - fn_script_log_pass "Checking remote build" - fi - else - # Checks if remotebuild variable has been set. - if [ -z "${remotebuildversion}" ] || [ "${remotebuildversion}" == "null" ]; then - fn_print_failure "Unable to get remote build" - fn_script_log_fatal "Unable to get remote build" - core_exit.sh - fi - fi -} - -fn_update_steamcmd_compare() { - fn_print_dots "Checking for update: ${remotelocation}" - if [ "${localbuild}" != "${remotebuildversion}" ] || [ "${forceupdate}" == "1" ]; then - fn_print_ok_nl "Checking for update: ${remotelocation}" - echo -en "\n" - echo -e "Update available" - echo -e "* Local build: ${red}${localbuild}${default}" - echo -e "* Remote build: ${green}${remotebuildversion}${default}" - if [ -n "${branch}" ]; then - echo -e "* Branch: ${branch}" - fi - if [ -n "${betapassword}" ]; then - echo -e "* Branch password: ${betapassword}" - fi - echo -e "https://steamdb.info/app/${appid}/" - echo -en "\n" - fn_script_log_info "Update available" - fn_script_log_info "Local build: ${localbuild}" - fn_script_log_info "Remote build: ${remotebuildversion}" - if [ -n "${branch}" ]; then - fn_script_log_info "Branch: ${branch}" - fi - if [ -n "${betapassword}" ]; then - fn_script_log_info "Branch password: ${betapassword}" - fi - fn_script_log_info "${localbuild} > ${remotebuildversion}" - - if [ "${commandname}" == "UPDATE" ]; then - unset updateonstart - check_status.sh - # If server stopped. - if [ "${status}" == "0" ]; then - fn_dl_steamcmd - # If server started. - else - fn_print_restart_warning - exitbypass=1 - command_stop.sh - fn_firstcommand_reset - exitbypass=1 - fn_dl_steamcmd - exitbypass=1 - command_start.sh - fn_firstcommand_reset - fi - unset exitbypass - date +%s > "${lockdir}/lastupdate.lock" - alert="update" - elif [ "${commandname}" == "CHECK-UPDATE" ]; then - alert="check-update" - fi - alert.sh - else - fn_print_ok_nl "Checking for update: ${remotelocation}" - echo -en "\n" - echo -e "No update available" - echo -e "* Local build: ${green}${localbuild}${default}" - echo -e "* Remote build: ${green}${remotebuildversion}${default}" - if [ -n "${branch}" ]; then - echo -e "* Branch: ${branch}" - fi - if [ -n "${betapassword}" ]; then - echo -e "* Branch password: ${betapassword}" - fi - echo -e "https://steamdb.info/app/${appid}/" - echo -en "\n" - fn_script_log_info "No update available" - fn_script_log_info "Local build: ${localbuild}" - fn_script_log_info "Remote build: ${remotebuildversion}" - if [ -n "${branch}" ]; then - fn_script_log_info "Branch: ${branch}" - fi - if [ -n "${betapassword}" ]; then - fn_script_log_info "Branch password: ${betapassword}" - fi - fi -} - -fn_appmanifest_info() { - appmanifestfile=$(find -L "${serverfiles}" -type f -name "appmanifest_${appid}.acf") - appmanifestfilewc=$(find -L "${serverfiles}" -type f -name "appmanifest_${appid}.acf" | wc -l) -} - -fn_appmanifest_check() { - fn_appmanifest_info - # Multiple or no matching appmanifest files may sometimes be present. - # This error is corrected if required. - if [ "${appmanifestfilewc}" -ge "2" ]; then - fn_print_error "Multiple appmanifest_${appid}.acf files found" - fn_script_log_error "Multiple appmanifest_${appid}.acf files found" - fn_print_dots "Removing x${appmanifestfilewc} appmanifest_${appid}.acf files" - for appfile in ${appmanifestfile}; do - rm -f "${appfile:?}" - done - appmanifestfilewc1="${appmanifestfilewc}" - fn_appmanifest_info - # if error can not be resolved. - if [ "${appmanifestfilewc}" -ge "2" ]; then - fn_print_fail "Unable to remove x${appmanifestfilewc} appmanifest_${appid}.acf files" - fn_script_log_fatal "Unable to remove x${appmanifestfilewc} appmanifest_${appid}.acf files" - echo -e "* Check user permissions" - for appfile in ${appmanifestfile}; do - echo -e " ${appfile}" - done - core_exit.sh - else - fn_print_ok "Removed x${appmanifestfilewc1} appmanifest_${appid}.acf files" - fn_script_log_pass "Removed x${appmanifestfilewc1} appmanifest_${appid}.acf files" - fn_print_info_nl "Forcing update to correct issue" - fn_script_log_info "Forcing update to correct issue" - fn_dl_steamcmd - fi - elif [ "${appmanifestfilewc}" -eq "0" ]; then - fn_print_error_nl "No appmanifest_${appid}.acf found" - fn_script_log_error "No appmanifest_${appid}.acf found" - fn_print_info_nl "Forcing update to correct issue" - fn_script_log_info "Forcing update to correct issue" - fn_dl_steamcmd - fn_appmanifest_info - if [ "${appmanifestfilewc}" -eq "0" ]; then - fn_print_fail_nl "Still no appmanifest_${appid}.acf found" - fn_script_log_fatal "Still no appmanifest_${appid}.acf found" - core_exit.sh - fi - fi -} diff --git a/lgsm/functions/core_trap.sh b/lgsm/functions/core_trap.sh deleted file mode 100644 index ae2b794706..0000000000 --- a/lgsm/functions/core_trap.sh +++ /dev/null @@ -1,22 +0,0 @@ -#!/bin/bash -# LinuxGSM core_trap.sh module -# Author: Daniel Gibbs -# Contributors: http://linuxgsm.com/contrib -# Website: https://linuxgsm.com -# Description: Handles CTRL-C trap to give an exit code. - -functionselfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")" - -fn_exit_trap() { - if [ -z "${exitcode}" ]; then - exitcode=$? - fi - echo -e "" - if [ -z "${exitcode}" ]; then - exitcode=0 - fi - core_exit.sh -} - -# trap to give an exit code. -trap fn_exit_trap INT diff --git a/lgsm/functions/fix.sh b/lgsm/functions/fix.sh deleted file mode 100644 index 57f6a91fac..0000000000 --- a/lgsm/functions/fix.sh +++ /dev/null @@ -1,88 +0,0 @@ -#!/bin/bash -# LinuxGSM fix.sh module -# Author: Daniel Gibbs -# Contributors: http://linuxgsm.com/contrib -# Website: https://linuxgsm.com -# Description: Overall function for managing fixes. -# Runs functions that will fix an issue. - -functionselfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")" - -# Messages that are displayed for some fixes. -fn_fix_msg_start() { - fn_print_dots "Applying ${fixname} fix: ${gamename}" - fn_print_info "Applying ${fixname} fix: ${gamename}" - fn_script_log_info "Applying ${fixname} fix: ${gamename}" -} - -fn_fix_msg_start_nl() { - fn_print_dots "Applying ${fixname} fix: ${gamename}" - fn_print_info_nl "Applying ${fixname} fix: ${gamename}" - fn_script_log_info "Applying ${fixname} fix: ${gamename}" -} - -fn_fix_msg_end() { - if [ $? != 0 ]; then - fn_print_error_nl "Applying ${fixname} fix: ${gamename}" - fn_script_log_error "Applying ${fixname} fix: ${gamename}" - else - fn_print_ok_nl "Applying ${fixname} fix: ${gamename}" - fn_script_log_pass "Applying ${fixname} fix: ${gamename}" - fi -} - -fn_exists_fix() { - local short="${1:?}" - - if [ "$(type -t "fix_${short}.sh")" == 'function' ]; then - return 0 - else - return 1 - fi -} - -fn_apply_fix() { - local phase_message="${1:?}" - local short="${2:?}" - - if fn_exists_fix "${short}"; then - "fix_${short}.sh" - else - fn_print_error_nl "${shortname} is marked to apply pre start fix but there is no fix registered" - fi -} - -apply_pre_start_fix=(arma3 armar ark av bt bo csgo cmw dst hw ins nmrih onset rust rw sdtd sfc sof2 squad st tf2 terraria ts3 mcb mta unt vh wurm zmr) -apply_post_install_fix=(av kf kf2 lo ro samp ut2k4 ut ut3) - -# validate registered fixes for safe development -for fix in "${apply_pre_start_fix[@]}" "${apply_post_install_fix[@]}"; do - if ! fn_exists_fix "${fix}"; then - fn_print_fail_nl "fix_${fix}.sh is registered but doesn't exist. Typo or did you miss to modify core_functions.sh?" - exitcode 1 - core_exit.sh - fi -done - -# Fixes that are run on start. -if [ "${commandname}" != "INSTALL" ] && [ -z "${fixbypass}" ]; then - if [ "${appid}" ]; then - fix_steamcmd.sh - fi - - if grep -qEe "(^|\s)${shortname}(\s|$)" <<< "${apply_pre_start_fix[@]}"; then - fn_apply_fix "pre start" "${shortname}" - fi -fi - -# Fixes that are run on install only. -if [ "${commandname}" == "INSTALL" ]; then - if grep -qEe "(^|\s)${shortname}(\s|$)" <<< "${apply_post_install_fix[@]}"; then - echo -e "" - echo -e "${lightyellow}Applying Post-Install Fixes${default}" - echo -e "=================================" - fn_sleep_time - postinstall=1 - fn_apply_fix "post install" "${shortname}" - fi -fi diff --git a/lgsm/functions/fix_ark.sh b/lgsm/functions/fix_ark.sh deleted file mode 100644 index f8e0447e3e..0000000000 --- a/lgsm/functions/fix_ark.sh +++ /dev/null @@ -1,62 +0,0 @@ -#!/bin/bash -# LinuxGSM fix_ark.sh module -# Author: Daniel Gibbs -# Contributors: http://linuxgsm.com/contrib -# Website: https://linuxgsm.com -# Description: Resolves various issues with ARK: Survival Evolved. - -functionselfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")" - -# removes mulitple appworkshop_346110.acf if found. -steamappsfilewc="$(find "${HOME}" -name appworkshop_346110.acf | wc -l)" -if [ "${steamappsfilewc}" -gt "1" ]; then - fixname="multiple appworkshop acf files" - fn_fix_msg_start - find "${HOME}" -name appworkshop_346110.acf -exec rm -f {} \; - fn_fix_msg_end -elif [ "${steamappsfilewc}" -eq "1" ]; then - # Steam mods directory selecter - # This allows LinxuGSM to select either ~/.steam or ~/Steam. depending on what is being used - steamappsfile=$(find "${HOME}" -name appworkshop_346110.acf) - steamappsdir=$(dirname "${steamappsfile}") - steamappspath=$( - cd "${steamappsdir}" || return - cd ../ - pwd - ) - - # removes the symlink if exists. - # fixes issue with older versions of LinuxGSM linking to /home/arkserver/steamcmd - if [ -L "${serverfiles}/Engine/Binaries/ThirdParty/SteamCMD/Linux" ]; then - fixname="broken SteamCMD symlink" - fn_fix_msg_start - unlink "${serverfiles:?}/Engine/Binaries/ThirdParty/SteamCMD/Linux" - fn_fix_msg_end - check_steamcmd.sh - fi - - # removed ARK steamcmd directory if steamcmd is missing. - if [ ! -f "${serverfiles}/Engine/Binaries/ThirdParty/SteamCMD/Linux/steamcmd.sh" ]; then - fixname="remove invalid ARK SteamCMD directory" - fn_fix_msg_start - rm -rf "${serverfiles:?}/Engine/Binaries/ThirdParty/SteamCMD/Linux" - fn_fix_msg_end - check_steamcmd.sh - fi - - # if the steamapps symlink is incorrect unlink it. - if [ -d "${serverfiles}/Engine/Binaries/ThirdParty/SteamCMD/Linux" ] && [ -L "${serverfiles}/Engine/Binaries/ThirdParty/SteamCMD/Linux/steamapps" ] && [ "$(readlink "${serverfiles}/Engine/Binaries/ThirdParty/SteamCMD/Linux/steamapps")" != "${steamappspath}" ]; then - fixname="incorrect steamapps symlink" - fn_fix_msg_start - unlink "${serverfiles:?}/Engine/Binaries/ThirdParty/SteamCMD/Linux/steamapps" - fn_fix_msg_end - fi - - # Put symlink to steamapps directory into the ARK SteamCMD directory to link the downloaded mods to the correct location. - if [ ! -L "${serverfiles}/Engine/Binaries/ThirdParty/SteamCMD/Linux/steamapps" ]; then - fixname="steamapps symlink" - fn_fix_msg_start - ln -s "${steamappspath}" "${serverfiles}/Engine/Binaries/ThirdParty/SteamCMD/Linux/steamapps" - fn_fix_msg_end - fi -fi diff --git a/lgsm/functions/fix_arma3.sh b/lgsm/functions/fix_arma3.sh deleted file mode 100644 index bbf14c9d20..0000000000 --- a/lgsm/functions/fix_arma3.sh +++ /dev/null @@ -1,16 +0,0 @@ -#!/bin/bash -# LinuxGSM fix_arma3.sh module -# Author: Daniel Gibbs -# Contributors: http://linuxgsm.com/contrib -# Website: https://linuxgsm.com -# Description: Resolves an issue with ARMA3. - -functionselfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")" - -# Fixes: 20150 Segmentation fault (core dumped) error. -if [ ! -d "${XDG_DATA_HOME:="${HOME}/.local/share"}/Arma 3" ] || [ ! -d "${XDG_DATA_HOME:="${HOME}/.local/share"}/Arma 3 - Other Profiles" ]; then - fixname="20150 Segmentation fault (core dumped)" - fn_fix_msg_start - mkdir -p "${XDG_DATA_HOME:="${HOME}/.local/share"}/Arma 3 - Other Profiles" - fn_fix_msg_end -fi diff --git a/lgsm/functions/fix_armar.sh b/lgsm/functions/fix_armar.sh deleted file mode 100644 index 9db42f51ad..0000000000 --- a/lgsm/functions/fix_armar.sh +++ /dev/null @@ -1,17 +0,0 @@ -#!/bin/bash -# LinuxGSM fix_armar.sh module -# Author: Daniel Gibbs -# Contributors: http://linuxgsm.com/contrib -# Website: https://linuxgsm.com -# Description: Resolves an issue with Arma Reforger. - -functionselfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")" - -# Fixes: Profile directory doesn't exist. -# Issue Link: https://feedback.bistudio.com/T164845 -if [ ! -d "${serverprofilefullpath}" ]; then - fixname="Profile directory doesn't exist" - fn_fix_msg_start - mkdir -p "${serverprofilefullpath}" - fn_fix_msg_end -fi diff --git a/lgsm/functions/fix_av.sh b/lgsm/functions/fix_av.sh deleted file mode 100644 index a61a8be658..0000000000 --- a/lgsm/functions/fix_av.sh +++ /dev/null @@ -1,19 +0,0 @@ -#!/bin/bash -# LinuxGSM fix_av.sh module -# Author: Daniel Gibbs -# Contributors: http://linuxgsm.com/contrib -# Website: https://linuxgsm.com -# Description: Resolves startup issue with Avorion - -functionselfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")" - -export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:${serverfiles}:${serverfiles}/linux64" - -# Generates the server config if it doesn't exist. -if [ ! -f "${servercfgfullpath}" ]; then - startparameters="--datapath ${avdatapath} --galaxy-name ${selfname} --init-folders-only" - fn_print_information "starting ${gamename} server to generate configs." - fn_sleep_time - cd "${systemdir}" || exit - eval "${executable} ${startparameters}" -fi diff --git a/lgsm/functions/fix_bo.sh b/lgsm/functions/fix_bo.sh deleted file mode 100644 index 4536918748..0000000000 --- a/lgsm/functions/fix_bo.sh +++ /dev/null @@ -1,10 +0,0 @@ -#!/bin/bash -# LinuxGSM fix_hw.sh module -# Author: Daniel Gibbs -# Contributors: http://linuxgsm.com/contrib -# Website: https://linuxgsm.com -# Description: Resolves various issues with Ballistic Overkill. - -functionselfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")" - -export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:${serverfiles}:${serverfiles}/BODS_Data/Plugins/x86_64" diff --git a/lgsm/functions/fix_bt.sh b/lgsm/functions/fix_bt.sh deleted file mode 100644 index 07fd61ce57..0000000000 --- a/lgsm/functions/fix_bt.sh +++ /dev/null @@ -1,24 +0,0 @@ -#!/bin/bash -# LinuxGSM fix_bt.sh module -# Author: Daniel Gibbs -# Contributors: http://linuxgsm.com/contrib -# Website: https://linuxgsm.com -# Description: Resolves an issue with Barotrauma. - -functionselfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")" - -# Fixes: Missing user data directory error. -if [ ! -d "${XDG_DATA_HOME:="${HOME}/.local/share"}/Daedalic Entertainment GmbH/Barotrauma" ]; then - fixname="Missing user data directory error." - fn_fix_msg_start - mkdir -p "${XDG_DATA_HOME:="${HOME}/.local/share"}/Daedalic Entertainment GmbH/Barotrauma" - fn_fix_msg_end -fi - -# check if startscript is with windows line endings and reformat it -if file -b "${serverfiles}${executable:1}" | grep -q CRLF; then - fixname="Convert ${executable:2} to unix file format" - fn_fix_msg_start - dos2unix -q "${serverfiles}${executable:1}" - fn_fix_msg_end -fi diff --git a/lgsm/functions/fix_cmw.sh b/lgsm/functions/fix_cmw.sh deleted file mode 100644 index 192f483e80..0000000000 --- a/lgsm/functions/fix_cmw.sh +++ /dev/null @@ -1,23 +0,0 @@ -#!/bin/bash -# LinuxGSM fix_cmw.sh module -# Author: Daniel Gibbs -# Contributors: http://linuxgsm.com/contrib -# Website: https://linuxgsm.com -# Description: Resolves the issue of the not starting server on linux - -functionselfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")" - -if [ ! -f "${executabledir}/steam_appid.txt" ]; then - fixname="steam_appid.txt" - fn_fix_msg_start - echo 219640 > "${executabledir}/steam_appid.txt" - fn_fix_msg_end -fi - -if [ ! -f "${servercfgfullpath}" ]; then - fn_fix_msg_start - fixname="copy config" - mkdir "${servercfgdir}" - cp "${systemdir}/UDKGame/Config/"*.ini "${servercfgdir}" - fn_fix_msg_end -fi diff --git a/lgsm/functions/fix_csgo.sh b/lgsm/functions/fix_csgo.sh deleted file mode 100644 index a393f2fd9c..0000000000 --- a/lgsm/functions/fix_csgo.sh +++ /dev/null @@ -1,42 +0,0 @@ -#!/bin/bash -# LinuxGSM fix_csgo.sh module -# Author: Daniel Gibbs -# Contributors: http://linuxgsm.com/contrib -# Website: https://linuxgsm.com -# Description: Resolves various issues with CS:GO. - -functionselfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")" - -# Fixes: server not always creating steam_appid.txt file. -if [ ! -f "${serverfiles}/steam_appid.txt" ]; then - fixname="730 steam_appid.txt" - fn_fix_msg_start - echo -n "730" >> "${serverfiles}/steam_appid.txt" - fn_fix_msg_end -fi - -# Fixes: Error parsing BotProfile.db - unknown attribute 'Rank'". -if [ -f "${systemdir}/botprofile.db" ] && grep "^\s*Rank" "${systemdir}/botprofile.db" > /dev/null 2>&1; then - fixname="botprofile.db" - fn_fix_msg_start - sed -i 's/^\s*Rank/\t\/\/Rank/g' "${systemdir}/botprofile.db" > /dev/null 2>&1 - fn_fix_msg_end -fi - -# Fixes: Unknown command "cl_bobamt_vert" and exec: couldn't exec joystick.cfg. -if [ -f "${servercfgdir}/valve.rc" ] && grep -E '^\s*exec\s*(default|joystick)\.cfg' "${servercfgdir}/valve.rc" > /dev/null 2>&1; then - fixname="valve.rc" - fn_fix_msg_start - sed -i 's/^\s*exec\s*default.cfg/\/\/exec default.cfg/g' "${servercfgdir}/valve.rc" > /dev/null 2>&1 - sed -i 's/^\s*exec\s*joystick.cfg/\/\/exec joystick.cfg/g' "${servercfgdir}/valve.rc" > /dev/null 2>&1 - fn_fix_msg_end -fi - -# Fixes: Detected engine 11 but could not load: /home/csgo/serverfiles/bin/libgcc_s.so.1: version `GCC_7.0.0' not found (required by /lib/i386-linux-gnu/libstdc++.so.6) -libgccc_so="${serverfiles}/bin/libgcc_s.so.1" -if [ -f "${libgccc_so}" ]; then - fixname="libgcc_s.so.1 move away" - fn_fix_msg_start - mv -v "${libgccc_so}" "${libgccc_so}.bck" - fn_fix_msg_end -fi diff --git a/lgsm/functions/fix_dst.sh b/lgsm/functions/fix_dst.sh deleted file mode 100644 index e30507dc9e..0000000000 --- a/lgsm/functions/fix_dst.sh +++ /dev/null @@ -1,17 +0,0 @@ -#!/bin/bash -# LinuxGSM fix_dst.sh module -# Author: Daniel Gibbs -# Contributors: http://linuxgsm.com/contrib -# Website: https://linuxgsm.com -# Description: Resolves various issues with Don't Starve Together. - -functionselfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")" - -# Fixes: ./dontstarve_dedicated_server_nullrenderer: ./lib32/libcurl-gnutls.so.4: no version information available (required by ./dontstarve_dedicated_server_nullrenderer). -# Issue only occures on CentOS as libcurl-gnutls.so.4 is called libcurl.so.4 on CentOS. -if [ -f "/etc/redhat-release" ] && [ ! -f "${serverfiles}/bin/lib32/libcurl-gnutls.so.4" ]; then - fixname="libcurl-gnutls.so.4" - fn_fix_msg_start - ln -s "/usr/lib/libcurl.so.4" "${serverfiles}/bin/lib32/libcurl-gnutls.so.4" - fn_fix_msg_end -fi diff --git a/lgsm/functions/fix_hw.sh b/lgsm/functions/fix_hw.sh deleted file mode 100644 index af06924dbb..0000000000 --- a/lgsm/functions/fix_hw.sh +++ /dev/null @@ -1,10 +0,0 @@ -#!/bin/bash -# LinuxGSM fix_hw.sh module -# Author: Daniel Gibbs -# Contributors: http://linuxgsm.com/contrib -# Website: https://linuxgsm.com -# Description: Resolves various issues with Hurtworld. - -functionselfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")" - -export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:${serverfiles}:${serverfiles}/Hurtworld_Data/Plugins/x86_64" diff --git a/lgsm/functions/fix_ins.sh b/lgsm/functions/fix_ins.sh deleted file mode 100644 index 21a979c4cf..0000000000 --- a/lgsm/functions/fix_ins.sh +++ /dev/null @@ -1,20 +0,0 @@ -#!/bin/bash -# LinuxGSM fix_ins.sh module -# Author: Daniel Gibbs -# Contributors: http://linuxgsm.com/contrib -# Website: https://linuxgsm.com -# Description: Resolves various issues with Insurgency. - -functionselfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")" - -# Fixes: ./srcds_linux: error while loading shared libraries: libtier0.so: cannot open shared object file: No such file or directory. - -export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:${serverfiles}:${serverfiles}/bin" - -# Fixes: issue #529 - gamemode not passed to debug or start. - -if [ "${commandname}" == "DEBUG" ]; then - defaultmap="\"${defaultmap}\"" -else - defaultmap="\\\"${defaultmap}\\\"" -fi diff --git a/lgsm/functions/fix_kf.sh b/lgsm/functions/fix_kf.sh deleted file mode 100644 index e749a2d278..0000000000 --- a/lgsm/functions/fix_kf.sh +++ /dev/null @@ -1,36 +0,0 @@ -#!/bin/bash -# LinuxGSM fix_kf.sh module -# Author: Daniel Gibbs -# Contributors: http://linuxgsm.com/contrib -# Website: https://linuxgsm.com -# Description: Resolves various issues with Killing Floor. - -functionselfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")" - -echo -e "Applying WebAdmin ROOst.css fix." -echo -e "http://forums.tripwireinteractive.com/showpost.php?p=585435&postcount=13" -sed -i 's/none}/none;/g' "${serverfiles}/Web/ServerAdmin/ROOst.css" -sed -i 's/underline}/underline;/g' "${serverfiles}/Web/ServerAdmin/ROOst.css" -fn_sleep_time -echo -e "Applying WebAdmin CharSet fix." -echo -e "http://forums.tripwireinteractive.com/showpost.php?p=442340&postcount=1" -sed -i 's/CharSet="iso-8859-1"/CharSet="utf-8"/g' "${systemdir}/UWeb.int" -fn_sleep_time -echo -e "applying server name fix." -fn_sleep_time -echo -e "forcing server restart..." -fn_sleep_time -exitbypass=1 -command_start.sh -fn_firstcommand_reset -sleep 5 -exitbypass=1 -command_stop.sh -fn_firstcommand_reset -exitbypass=1 -command_start.sh -fn_firstcommand_reset -sleep 5 -exitbypass=1 -command_stop.sh -fn_firstcommand_reset diff --git a/lgsm/functions/fix_kf2.sh b/lgsm/functions/fix_kf2.sh deleted file mode 100644 index b680a99378..0000000000 --- a/lgsm/functions/fix_kf2.sh +++ /dev/null @@ -1,20 +0,0 @@ -#!/bin/bash -# LinuxGSM fix_kf2.sh module -# Author: Daniel Gibbs -# Contributors: http://linuxgsm.com/contrib -# Website: https://linuxgsm.com -# Description: Resolves various issues with Killing Floor 2. - -functionselfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")" - -startparameters="\"${defaultmap}?Game=KFGameContent.KFGameInfo_VersusSurvival\"" - -fn_print_information "starting ${gamename} server to generate configs." -fn_sleep_time -exitbypass=1 -command_start.sh -fn_firstcommand_reset -sleep 10 -exitbypass=1 -command_stop.sh -fn_firstcommand_reset diff --git a/lgsm/functions/fix_lo.sh b/lgsm/functions/fix_lo.sh deleted file mode 100644 index eec2ebd360..0000000000 --- a/lgsm/functions/fix_lo.sh +++ /dev/null @@ -1,17 +0,0 @@ -#!/bin/bash -# LinuxGSM fix_lo.sh function -# Author: Daniel Gibbs -# Website: https://linuxgsm.com -# Description: Resolves installation issue with Last Oasis - -functionselfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")" - -appidfile=${executabledir}/steam_appid.txt -if [ ! -f "${appidfile}" ]; then - fn_print_information "adding ${appidfile} to ${gamename} server." - fn_sleep_time - echo "903950" > "${appidfile}" -else - fn_print_information "${appidfile} already exists. No action to be taken." - fn_sleep_time -fi diff --git a/lgsm/functions/fix_mcb.sh b/lgsm/functions/fix_mcb.sh deleted file mode 100644 index 4768a40cfe..0000000000 --- a/lgsm/functions/fix_mcb.sh +++ /dev/null @@ -1,11 +0,0 @@ -#!/bin/bash -# LinuxGSM fix_mcb.sh module -# Author: Daniel Gibbs -# Contributors: http://linuxgsm.com/contrib -# Website: https://linuxgsm.com -# Description: Resolves possible startup issue with Minecraft Bedrock. - -functionselfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")" - -# official docs state that the server should be started with: LD_LIBRARY_PATH=. ./bedrock_server -export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:${serverfiles}" diff --git a/lgsm/functions/fix_mta.sh b/lgsm/functions/fix_mta.sh deleted file mode 100644 index 2c92e8d126..0000000000 --- a/lgsm/functions/fix_mta.sh +++ /dev/null @@ -1,16 +0,0 @@ -#!/bin/bash -# LinuxGSM fix_mta.sh module -# Author: Daniel Gibbs -# Contributors: http://linuxgsm.com/contrib -# Website: https://linuxgsm.com -# Description: Installs the libmysqlclient for database functions on the server. - -functionselfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")" - -if [ ! -f "${lgsmdir}/lib/libmysqlclient.so.16" ]; then - fixname="libmysqlclient16" - fn_fix_msg_start_nl - fn_sleep_time - fn_fetch_file "https://nightly.mtasa.com/files/modules/64/libmysqlclient.so.16" "" "" "" "${lgsmdir}/lib" "libmysqlclient.so.16" "chmodx" "norun" "noforce" "6c188e0f8fb5d7a29f4bc413b9fed6c2" - fn_fix_msg_end -fi diff --git a/lgsm/functions/fix_nmrih.sh b/lgsm/functions/fix_nmrih.sh deleted file mode 100644 index 4bb70c6f9a..0000000000 --- a/lgsm/functions/fix_nmrih.sh +++ /dev/null @@ -1,17 +0,0 @@ -#!/bin/bash -# LinuxGSM fix_nmrih.sh module -# Author: Daniel Gibbs -# Contributors: http://linuxgsm.com/contrib -# Website: https://linuxgsm.com -# Description: Create symlinks for renamed No More Room In Hell serverfiles. -# Solution from Steam Community post: https://steamcommunity.com/app/224260/discussions/2/1732089092441769414/ - -functionselfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")" - -ln -s "${serverfiles}/bin/vphysics_srv.so" "${serverfiles}/bin/vphysics.so" -ln -s "${serverfiles}/bin/studiorender_srv.so" "${serverfiles}/bin/studiorender.so" -ln -s "${serverfiles}/bin/soundemittersystem_srv.so" "${serverfiles}/bin/soundemittersystem.so" -ln -s "${serverfiles}/bin/shaderapiempty_srv.so" "${serverfiles}/bin/shaderapiempty.so" -ln -s "${serverfiles}/bin/scenefilecache_srv.so" "${serverfiles}/bin/scenefilecache.so" -ln -s "${serverfiles}/bin/replay_srv.so" "${serverfiles}/bin/replay.so" -ln -s "${serverfiles}/bin/materialsystem_srv.so" "${serverfiles}/bin/materialsystem.so" diff --git a/lgsm/functions/fix_onset.sh b/lgsm/functions/fix_onset.sh deleted file mode 100644 index e4183999df..0000000000 --- a/lgsm/functions/fix_onset.sh +++ /dev/null @@ -1,19 +0,0 @@ -#!/bin/bash -# LinuxGSM fix_onset.sh module -# Author: Daniel Gibbs -# Contributors: http://linuxgsm.com/contrib -# Website: https://linuxgsm.com -# Description: Resolves various issues with Onset. - -functionselfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")" - -export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:${serverfiles}" - -# Fixes: Failed loading "mariadb": libmariadbclient.so.18: cannot open shared object file: No such file or directory -# Issue only occures on CentOS as libmariadbclient.so.18 is called libmariadb.so.3 on CentOS. -if [ -f "/etc/redhat-release" ] && [ ! -f "${serverfiles}/libmariadbclient.so.18" ] && [ -f "/usr/lib64/libmariadb.so.3" ]; then - fixname="libmariadbclient.so.18" - fn_fix_msg_start - ln -s "/usr/lib64/libmariadb.so.3" "${serverfiles}/libmariadbclient.so.18" - fn_fix_msg_end -fi diff --git a/lgsm/functions/fix_ro.sh b/lgsm/functions/fix_ro.sh deleted file mode 100644 index 895c7c2da7..0000000000 --- a/lgsm/functions/fix_ro.sh +++ /dev/null @@ -1,39 +0,0 @@ -#!/bin/bash -# LinuxGSM fix_ro.sh module -# Author: Daniel Gibbs -# Contributors: http://linuxgsm.com/contrib -# Website: https://linuxgsm.com -# Description: Resolves various issues with Red Orchestra. - -functionselfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")" - -echo -e "Applying WebAdmin ROOst.css fix." -echo -e "http://forums.tripwireinteractive.com/showpost.php?p=585435&postcount=13" -sed -i 's/none}/none;/g' "${serverfiles}/Web/ServerAdmin/ROOst.css" -sed -i 's/underline}/underline;/g' "${serverfiles}/Web/ServerAdmin/ROOst.css" -fn_sleep_time -echo -e "Applying WebAdmin CharSet fix." -echo -e "http://forums.tripwireinteractive.com/showpost.php?p=442340&postcount=1" -sed -i 's/CharSet="iso-8859-1"/CharSet="utf-8"/g' "${systemdir}/uweb.int" -fn_sleep_time -echo -e "Applying Steam AppID fix." -sed -i 's/1210/1200/g' "${systemdir}/steam_appid.txt" -fn_sleep_time -echo -e "applying server name fix." -fn_sleep_time -echo -e "forcing server restart..." -fn_sleep_time -exitbypass=1 -command_start.sh -fn_firstcommand_reset -sleep 5 -exitbypass=1 -command_stop.sh -fn_firstcommand_reset -exitbypass=1 -command_start.sh -fn_firstcommand_reset -sleep 5 -exitbypass=1 -command_stop.sh -fn_firstcommand_reset diff --git a/lgsm/functions/fix_rust.sh b/lgsm/functions/fix_rust.sh deleted file mode 100644 index 5f407e89f8..0000000000 --- a/lgsm/functions/fix_rust.sh +++ /dev/null @@ -1,32 +0,0 @@ -#!/bin/bash -# LinuxGSM fix_rust.sh module -# Author: Daniel Gibbs -# Contributors: http://linuxgsm.com/contrib -# Website: https://linuxgsm.com -# Description: Resolves startup issue with Rust. - -functionselfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")" - -# Fixes: [Raknet] Server Shutting Down (Shutting Down). -export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:${serverfiles}:${serverfiles}/RustDedicated_Data/Plugins/x86_64" - -# Part of random seed feature. -# If seed is not defined by user generate a seed file. -if [ -z "${seed}" ] || [ "${seed}" == "0" ]; then - if [ ! -f "${datadir}/${selfname}-seed.txt" ]; then - shuf -i 1-2147483647 -n 1 > "${datadir}/${selfname}-seed.txt" - seed="$(cat "${datadir}/${selfname}-seed.txt")" - fn_print_info_nl "Generating new random seed (${cyan}${seed}${default})" - fn_script_log_pass "Generating new random seed (${cyan}${seed}${default})" - fi - seed="$(cat "${datadir}/${selfname}-seed.txt")" - randomseed=1 -fi - -# If Carbon mod is installed, run enviroment.sh -if [ -f "${serverfiles}/carbon/tools/environment.sh" ]; then - fn_print_info_nl "Running Carbon environment.sh" - fn_script_log_info "Running Carbon environment.sh" - # shellcheck source=/dev/null - source "${serverfiles}/carbon/tools/environment.sh" -fi diff --git a/lgsm/functions/fix_rw.sh b/lgsm/functions/fix_rw.sh deleted file mode 100644 index aef41a7031..0000000000 --- a/lgsm/functions/fix_rw.sh +++ /dev/null @@ -1,10 +0,0 @@ -#!/bin/bash -# LinuxGSM fix_rw.sh module -# Author: Daniel Gibbs -# Contributors: http://linuxgsm.com/contrib -# Website: https://linuxgsm.com -# Description: Resolves various issues with Rising World. - -functionselfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")" - -export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:${serverfiles}:${serverfiles}/linux64" diff --git a/lgsm/functions/fix_samp.sh b/lgsm/functions/fix_samp.sh deleted file mode 100644 index a88bf154f6..0000000000 --- a/lgsm/functions/fix_samp.sh +++ /dev/null @@ -1,34 +0,0 @@ -#!/bin/bash -# LinuxGSM fix_sfc.sh module -# Author: Daniel Gibbs -# Contributors: http://linuxgsm.com/contrib -# Website: https://linuxgsm.com -# Description: Resolves issue that the default rcon password is not changed - -functionselfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")" - -if [ -f "${servercfgfullpath}" ]; then - # check if default password is set "changeme" - currentpass=$(grep -E "^rcon_password" "${servercfgfullpath}" | sed 's/^rcon_password //') - defaultpass="changeme" - # check if default password is set - if [ "${currentpass}" == "${defaultpass}" ]; then - fixname="change default rcon password" - fn_fix_msg_start - fn_script_log_info "changing rcon/admin password." - random=$(tr -dc A-Za-z0-9_ < /dev/urandom | head -c 8 | xargs) - rconpass="admin${random}" - sed -i "s/rcon_password changeme/rcon_password ${rconpass}/g" "${servercfgfullpath}" - fn_fix_msg_end - fi - # check if the hostname is the default name - currenthostname=$(grep -E "^hostname" "${servercfgfullpath}" | sed 's/^hostname //') - defaulthostname="SA-MP 0.3 Server" - if [ "${currenthostname}" == "${defaulthostname}" ]; then - fixname="change default hostname" - fn_fix_msg_start - fn_script_log_info "changing default hostname to LinuxGSM" - sed -i "s/hostname ${defaulthostname}/hostname LinuxGSM/g" "${servercfgfullpath}" - fn_fix_msg_end - fi -fi diff --git a/lgsm/functions/fix_sdtd.sh b/lgsm/functions/fix_sdtd.sh deleted file mode 100644 index e93db7970f..0000000000 --- a/lgsm/functions/fix_sdtd.sh +++ /dev/null @@ -1,10 +0,0 @@ -#!/bin/bash -# LinuxGSM fix_sdtd.sh module -# Author: Daniel Gibbs -# Contributors: http://linuxgsm.com/contrib -# Website: https://linuxgsm.com -# Description: Resolves various issues with 7 Days to Die. - -functionselfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")" - -export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:${serverfiles}/7DaysToDieServer_Data/Plugins/x86_64" diff --git a/lgsm/functions/fix_sfc.sh b/lgsm/functions/fix_sfc.sh deleted file mode 100644 index 51b95b9d52..0000000000 --- a/lgsm/functions/fix_sfc.sh +++ /dev/null @@ -1,48 +0,0 @@ -#!/bin/bash -# LinuxGSM fix_sfc.sh module -# Author: Daniel Gibbs -# Contributors: http://linuxgsm.com/contrib -# Website: https://linuxgsm.com -# Description: Resolves various issues with Source Forts Classic. - -functionselfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")" - -if [ ! -f "${serverfiles}/bin/datacache.so" ]; then - ln -s "${serverfiles}/bin/datacache_srv.so" "${serverfiles}/bin/datacache.so" -fi - -if [ ! -f "${serverfiles}/bin/dedicated.so" ]; then - ln -s "${serverfiles}/bin/dedicated_srv.so" "${serverfiles}/bin/dedicated.so" -fi - -if [ ! -f "${serverfiles}/bin/engine.so" ]; then - ln -s "${serverfiles}/bin/engine_srv.so" "${serverfiles}/bin/engine.so" -fi - -if [ ! -f "${serverfiles}/bin/materialsystem.so" ]; then - ln -s "${serverfiles}/bin/materialsystem_srv.so" "${serverfiles}/bin/materialsystem.so" -fi - -if [ ! -f "${serverfiles}/bin/replay.so" ]; then - ln -s "${serverfiles}/bin/replay_srv.so" "${serverfiles}/bin/replay.so" -fi - -if [ ! -f "${serverfiles}/bin/shaderapiempty.so" ]; then - ln -s "${serverfiles}/bin/shaderapiempty_srv.so" "${serverfiles}/bin/shaderapiempty.so" -fi - -if [ ! -f "${serverfiles}/bin/soundemittersystem.so" ]; then - ln -s "${serverfiles}/bin/soundemittersystem_srv.so" "${serverfiles}/bin/soundemittersystem.so" -fi - -if [ ! -f "${serverfiles}/bin/studiorender.so" ]; then - ln -s "${serverfiles}/bin/studiorender_srv.so" "${serverfiles}/bin/studiorender.so" -fi - -if [ ! -f "${serverfiles}/bin/vphysics.so" ]; then - ln -s "${serverfiles}/bin/vphysics_srv.so" "${serverfiles}/bin/vphysics.so" -fi - -if [ ! -f "${serverfiles}/bin/scenefilecache.so" ]; then - ln -s "${serverfiles}/bin/scenefilecache_srv.so" "${serverfiles}/bin/scenefilecache.so" -fi diff --git a/lgsm/functions/fix_sof2.sh b/lgsm/functions/fix_sof2.sh deleted file mode 100644 index 002f429528..0000000000 --- a/lgsm/functions/fix_sof2.sh +++ /dev/null @@ -1,11 +0,0 @@ -#!/bin/bash -# LinuxGSM fix_rust.sh module -# Author: Daniel Gibbs -# Contributors: http://linuxgsm.com/contrib -# Website: https://linuxgsm.com -# Description: Resolves various issues with Soldier of Fortune 2. - -functionselfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")" - -# Fixes: error while loading shared libraries: libcxa.so.1 -export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:${serverfiles}" diff --git a/lgsm/functions/fix_squad.sh b/lgsm/functions/fix_squad.sh deleted file mode 100644 index 7d5929b5df..0000000000 --- a/lgsm/functions/fix_squad.sh +++ /dev/null @@ -1,26 +0,0 @@ -#!/bin/bash -# LinuxGSM fix_squad.sh module -# Author: Daniel Gibbs -# Contributors: http://linuxgsm.com/contrib -# Website: https://linuxgsm.com -# Description: Resolves various issues with Squad. - -functionselfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")" - -# As the server base dir changed for the game, we need to migrate the default config from the old to the new location -oldservercfg="${serverfiles}/Squad/ServerConfig/${servercfg}" -if [ -f "${oldservercfg}" ] && [ -f "${servercfgfullpath}" ]; then - # diff old and new config - if it is different move the old config over the new one - if [ "$(diff -c "${oldservercfg}" "${servercfgfullpath}" | wc -l)" -gt 0 ]; then - fixname="Migrate server config to new Game folder" - fn_fix_msg_start - mv -v "${oldservercfg}" "${servercfgfullpath}" - fn_fix_msg_end - else - fixname="remove the same config from old configdir" - fn_fix_msg_start - rm -f "${oldservercfg}" - fn_fix_msg_end - - fi -fi diff --git a/lgsm/functions/fix_st.sh b/lgsm/functions/fix_st.sh deleted file mode 100644 index b9fb5b084a..0000000000 --- a/lgsm/functions/fix_st.sh +++ /dev/null @@ -1,11 +0,0 @@ -#!/bin/bash -# LinuxGSM fix_rust.sh module -# Author: Daniel Gibbs -# Contributors: http://linuxgsm.com/contrib -# Website: https://linuxgsm.com -# Description: Resolves startup issue with Stationeers. - -functionselfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")" - -# Fixes: [Raknet] Server Shutting Down (Shutting Down). -export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:${serverfiles}:${serverfiles}/rocketstation_DedicatedServer_Data/Plugins/x86_64" diff --git a/lgsm/functions/fix_steamcmd.sh b/lgsm/functions/fix_steamcmd.sh deleted file mode 100644 index 9644208dc7..0000000000 --- a/lgsm/functions/fix_steamcmd.sh +++ /dev/null @@ -1,141 +0,0 @@ -#!/bin/bash -# LinuxGSM fix_steamcmd.sh module -# Author: Daniel Gibbs -# Contributors: http://linuxgsm.com/contrib -# Website: https://linuxgsm.com -# Description: Resolves various issues related to SteamCMD. - -functionselfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")" - -# function to simplify the steamclient.so fix -# example -# fn_fix_steamclient_so 32|64 (bit) "${serverfiles}/linux32/" -fn_fix_steamclient_so() { - # $1 type of fix 32 or 64 as possible values - # $2 as destination where the lib will be copied to - if [ "$1" == "32" ]; then - # steamclient.so x86 fix. - if [ ! -f "${2}/steamclient.so" ]; then - fixname="steamclient.so x86" - fn_fix_msg_start - if [ ! -d "${2}" ]; then - mkdir -p "${2}" - fi - if [ -f "${HOME}/.steam/steamcmd/linux32/steamclient.so" ]; then - cp "${HOME}/.steam/steamcmd/linux32/steamclient.so" "${2}/steamclient.so" - elif [ -f "${steamcmddir}/linux32/steamclient.so" ]; then - cp "${steamcmddir}/linux32/steamclient.so" "${2}/steamclient.so" - elif [ -f "${HOME}/.local/share/Steam/steamcmd/linux32/steamclient.so" ]; then - cp "${HOME}/.local/share/Steam/steamcmd/linux32/steamclient.so" "${2}/steamclient.so" - fi - fn_fix_msg_end - fi - elif [ "$1" == "64" ]; then - # steamclient.so x86_64 fix. - if [ ! -f "${2}/steamclient.so" ]; then - fixname="steamclient.so x86_64" - fn_fix_msg_start - if [ ! -d "${2}" ]; then - mkdir -p "${2}" - fi - if [ -f "${HOME}/.steam/steamcmd/linux64/steamclient.so" ]; then - cp "${HOME}/.steam/steamcmd/linux64/steamclient.so" "${2}/steamclient.so" - elif [ -f "${steamcmddir}/linux64/steamclient.so" ]; then - cp "${steamcmddir}/linux64/steamclient.so" "${2}/steamclient.so" - elif [ -f "${HOME}/.local/share/Steam/steamcmd/linux64/steamclient.so" ]; then - cp "${HOME}/.local/share/Steam/steamcmd/linux64/steamclient.so" "${2}/steamclient.so" - fi - fn_fix_msg_end - fi - fi -} - -# Helps fix: [S_API FAIL] SteamAPI_Init() failed; unable to locate a running instance of Steam,or a local steamclient.so. -steamsdk64="${HOME}/.steam/sdk64" -steamclientsdk64="${steamsdk64}/steamclient.so" -# remove any old unlinked versions of steamclient.so -if [ -f "${steamclientsdk64}" ]; then - if [ "$(stat -c '%h' "${steamclientsdk64}")" -eq 1 ]; then - fixname="steamclient.so sdk64 - remove old file" - fn_fix_msg_start - rm -f "${steamclientsdk64}" - fn_fix_msg_end - fi -fi - -# place new hardlink for the file to the disk -if [ ! -f "${steamclientsdk64}" ]; then - fixname="steamclient.so sdk64 hardlink" - fn_fix_msg_start - if [ ! -d "${steamsdk64}" ]; then - mkdir -p "${steamsdk64}" - fi - if [ -f "${HOME}/.steam/steamcmd/linux64/steamclient.so" ]; then - ln "${HOME}/.steam/steamcmd/linux64/steamclient.so" "${steamclientsdk64}" - elif [ -f "${steamcmddir}/linux64/steamclient.so" ]; then - ln "${steamcmddir}/linux64/steamclient.so" "${steamclientsdk64}" - elif [ -f "${HOME}/.local/share/Steam/steamcmd/linux64/steamclient.so" ]; then - ln "${HOME}/.local/share/Steam/steamcmd/linux64/steamclient.so" "${steamclientsdk64}" - else - fn_print_fail_nl "Could not copy any steamclient.so 64bit for the gameserver" - fi - fn_fix_msg_end -fi - -# Helps fix: [S_API FAIL] SteamAPI_Init() failed; unable to locate a running instance of Steam,or a local steamclient.so. -steamsdk32="${HOME}/.steam/sdk32" -steamclientsdk32="${HOME}/.steam/sdk32/steamclient.so" -if [ -f "${steamclientsdk32}" ]; then - if [ " $(stat -c '%h' "${steamclientsdk32}")" -eq 1 ]; then - fixname="steamclient.so sdk32 - remove old file" - fn_fix_msg_start - rm -f "${steamclientsdk32}" - fn_fix_msg_end - fi -fi - -# place new hardlink for the file to the disk -if [ ! -f "${steamclientsdk32}" ]; then - fixname="steamclient.so sdk32 link" - fn_fix_msg_start - if [ ! -d "${steamsdk32}" ]; then - mkdir -p "${steamsdk32}" - fi - if [ -f "${HOME}/.steam/steamcmd/linux32/steamclient.so" ]; then - ln "${HOME}/.steam/steamcmd/linux32/steamclient.so" "${steamclientsdk32}" - elif [ -f "${steamcmddir}/linux32/steamclient.so" ]; then - ln "${steamcmddir}/linux32/steamclient.so" "${steamclientsdk32}" - elif [ -f "${HOME}/.local/share/Steam/steamcmd/linux32/steamclient.so" ]; then - ln "${HOME}/.local/share/Steam/steamcmd/linux32/steamclient.so" "${steamclientsdk32}" - else - fn_print_fail_nl "Could not copy any steamclient.so 32bit for the gameserver" - fi - fn_fix_msg_end -fi - -# steamclient.so fixes -if [ "${shortname}" == "bo" ]; then - fn_fix_steamclient_so "32" "${serverfiles}/BODS_Data/Plugins/x86" - fn_fix_steamclient_so "64" "${serverfiles}/BODS_Data/Plugins/x86_64" -elif [ "${shortname}" == "cmw" ]; then - fn_fix_steamclient_so "32" "${executabledir}/lib" -elif [ "${shortname}" == "cs" ]; then - fn_fix_steamclient_so "32" "${serverfiles}" -elif [ "${shortname}" == "col" ]; then - fn_fix_steamclient_so "64" "${serverfiles}" -elif [ "${shortname}" == "ins" ]; then - fn_fix_steamclient_so "32" "${serverfiles}/bin" -elif [ "${shortname}" == "pz" ]; then - fn_fix_steamclient_so "32" "${serverfiles}/linux32" - fn_fix_steamclient_so "64" "${serverfiles}/linux64" -elif [ "${shortname}" == "pvr" ]; then - fn_fix_steamclient_so "64" "${executabledir}" -elif [ "${shortname}" == "ss3" ]; then - fn_fix_steamclient_so "32" "${serverfiles}/Bin" -elif [ "${shortname}" == "tu" ]; then - fn_fix_steamclient_so "64" "${executabledir}" -elif [ "${shortname}" == "unt" ]; then - fn_fix_steamclient_so "64" "${serverfiles}" -elif [ "${shortname}" == "wurm" ]; then - fn_fix_steamclient_so "64" "${serverfiles}/nativelibs" -fi diff --git a/lgsm/functions/fix_terraria.sh b/lgsm/functions/fix_terraria.sh deleted file mode 100644 index 7758fdad96..0000000000 --- a/lgsm/functions/fix_terraria.sh +++ /dev/null @@ -1,10 +0,0 @@ -#!/bin/bash -# LinuxGSM fix_terraria.sh module -# Author: Daniel Gibbs -# Contributors: http://linuxgsm.com/contrib -# Website: https://linuxgsm.com -# Description: Resolves an issue with Terraria. - -functionselfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")" - -export TERM=xterm diff --git a/lgsm/functions/fix_tf2.sh b/lgsm/functions/fix_tf2.sh deleted file mode 100644 index 77e41a9698..0000000000 --- a/lgsm/functions/fix_tf2.sh +++ /dev/null @@ -1,16 +0,0 @@ -#!/bin/bash -# LinuxGSM fix_tf2.sh module -# Author: Daniel Gibbs -# Contributors: http://linuxgsm.com/contrib -# Website: https://linuxgsm.com -# Description: Resolves various issues with Team Fortress 2. - -functionselfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")" - -# Fixes: Team Fortress 2 Segmentation fault for Red-Hat Distros #2062. -if [ -f "/etc/redhat-release" ] && [ ! -f "${serverfiles}/bin/libcurl-gnutls.so.4" ]; then - fixname="libcurl-gnutls.so.4" - fn_fix_msg_start - ln -s "/usr/lib/libcurl.so.4" "${serverfiles}/bin/libcurl-gnutls.so.4" - fn_fix_msg_end -fi diff --git a/lgsm/functions/fix_ts3.sh b/lgsm/functions/fix_ts3.sh deleted file mode 100644 index 7c7387cb60..0000000000 --- a/lgsm/functions/fix_ts3.sh +++ /dev/null @@ -1,33 +0,0 @@ -#!/bin/bash -# LinuxGSM fix_ts3.sh module -# Author: Daniel Gibbs -# Contributors: http://linuxgsm.com/contrib -# Website: https://linuxgsm.com -# Description: Resolves various issues with Teamspeak 3. - -functionselfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")" - -# Fixes: makes libmariadb2 available #1924. -if [ ! -f "${serverfiles}/libmariadb.so.2" ]; then - fixname="libmariadb.so.2" - fn_fix_msg_start - cp "${serverfiles}/redist/libmariadb.so.2" "${serverfiles}/libmariadb.so.2" - fn_fix_msg_end -fi - -# Fixes: failed to register local accounting service: No such file or directory. -accountingfile="/dev/shm/7gbhujb54g8z9hu43jre8" -if [ -f "${accountingfile}" ] && [ "${status}" == "0" ]; then - # Check permissions for the file if the current user owns it, if not exit. - if [ "$(stat -c %U ${accountingfile})" == "$(whoami)" ]; then - fixname="Delete file ${accountingfile}" - fn_fix_msg_start - rm -f "${accountingfile}" - fn_fix_msg_end - # file is not owned by the current user and needs to be deleted manually. - else - fn_print_error_nl "File ${accountingfile} is not owned by $(whoami) and needs to be deleted manually" - fn_script_log_fatal "File ${accountingfile} is not owned by $(whoami) and needs to be deleted manually" - core_exit.sh - fi -fi diff --git a/lgsm/functions/fix_unt.sh b/lgsm/functions/fix_unt.sh deleted file mode 100644 index eae2e63134..0000000000 --- a/lgsm/functions/fix_unt.sh +++ /dev/null @@ -1,10 +0,0 @@ -#!/bin/bash -# LinuxGSM fix_rust.sh module -# Author: Daniel Gibbs -# Contributors: http://linuxgsm.com/contrib -# Website: https://linuxgsm.com -# Description: Resolves startup issue with Unturned. - -functionselfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")" - -export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:${serverfiles}:${serverfiles}/Unturned_Headless_Data/Plugins/x86_64" diff --git a/lgsm/functions/fix_ut.sh b/lgsm/functions/fix_ut.sh deleted file mode 100644 index 2e6686a8d5..0000000000 --- a/lgsm/functions/fix_ut.sh +++ /dev/null @@ -1,13 +0,0 @@ -#!/bin/bash -# LinuxGSM fix_ut.sh module -# Author: Daniel Gibbs -# Contributors: http://linuxgsm.com/contrib -# Website: https://linuxgsm.com -# Description: Resolves various issues with Unreal Tournament. - -functionselfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")" - -#Set Binary Executable -echo -e "chmod +x ${executabledir}/${executable}" -chmod +x "${executabledir}/${executable}" -fn_sleep_time diff --git a/lgsm/functions/fix_ut2k4.sh b/lgsm/functions/fix_ut2k4.sh deleted file mode 100644 index 49610e4b69..0000000000 --- a/lgsm/functions/fix_ut2k4.sh +++ /dev/null @@ -1,36 +0,0 @@ -#!/bin/bash -# LinuxGSM fix_ut2k4.sh module -# Author: Daniel Gibbs -# Contributors: http://linuxgsm.com/contrib -# Website: https://linuxgsm.com -# Description: Resolves various issues with Unreal Tournament 2004. - -functionselfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")" - -echo -e "applying WebAdmin ut2003.css fix." -echo -e "http://forums.tripwireinteractive.com/showpost.php?p=585435&postcount=13" -sed -i 's/none}/none;/g' "${serverfiles}/Web/ServerAdmin/ut2003.css" -sed -i 's/underline}/underline;/g' "${serverfiles}/Web/ServerAdmin/ut2003.css" -fn_sleep_time -echo -e "applying WebAdmin CharSet fix." -echo -e "http://forums.tripwireinteractive.com/showpost.php?p=442340&postcount=1" -sed -i 's/CharSet="iso-8859-1"/CharSet="utf-8"/g' "${systemdir}/UWeb.int" -fn_sleep_time -echo -e "applying server name fix." -fn_sleep_time -echo -e "forcing server restart." -fn_sleep_time -exitbypass=1 -command_start.sh -fn_firstcommand_reset -sleep 5 -exitbypass=1 -command_stop.sh -fn_firstcommand_reset -exitbypass=1 -command_start.sh -fn_firstcommand_reset -sleep 5 -exitbypass=1 -command_stop.sh -fn_firstcommand_reset diff --git a/lgsm/functions/fix_ut3.sh b/lgsm/functions/fix_ut3.sh deleted file mode 100644 index 6bd26a53a8..0000000000 --- a/lgsm/functions/fix_ut3.sh +++ /dev/null @@ -1,20 +0,0 @@ -#!/bin/bash -# LinuxGSM fix_ut2.sh module -# Author: Daniel Gibbs -# Contributors: http://linuxgsm.com/contrib -# Website: https://linuxgsm.com -# Description: Resolves various issues with Unreal Tournament 3. - -functionselfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")" - -startparameters="server VCTF-Suspense?Game=UTGameContent.UTVehicleCTFGame_Content?bIsDedicated=true?bIsLanMatch=false?bUsesStats=false?bShouldAdvertise=false?PureServer=1?bAllowJoinInProgress=true?ConfigSubDir=${selfname} -port=${port} -queryport=${queryport} -multihome=${ip} -nohomedir -unattended -log=${gamelog}" - -fn_print_information "starting ${gamename} server to generate configs." -fn_sleep_time -exitbypass=1 -command_start.sh -fn_firstcommand_reset -sleep 10 -exitbypass=1 -command_stop.sh -fn_firstcommand_reset diff --git a/lgsm/functions/fix_vh.sh b/lgsm/functions/fix_vh.sh deleted file mode 100644 index a90c5d0b0f..0000000000 --- a/lgsm/functions/fix_vh.sh +++ /dev/null @@ -1,35 +0,0 @@ -#!/bin/bash -# LinuxGSM fix_rust.sh function -# Author: Alasdair Haig -# Website: https://linuxgsm.com -# Description: Resolves startup issue with Valheim - -functionselfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")" - -export LD_LIBRARY_PATH=./linux64:$LD_LIBRARY_PATH - -modsdir="${lgsmdir}/mods" -modsinstalledlistfullpath="${modsdir}/installed-mods.txt" -if [ -f "${modsinstalledlistfullpath}" ]; then - # special check if Valheim Plus is installed - if grep -qE "^valheimplus" "${modsinstalledlistfullpath}"; then - if ! grep -qE "^executable=\"./start_server_bepinex.sh\"" "${configdirserver}/${selfname}.cfg"; then - echo 'executable="./start_server_bepinex.sh"' >> "${configdirserver}/${selfname}.cfg" - executable="./start_server_bepinex.sh" - fi - fi - # special exports for BepInEx if installed - if grep -qE "^bepinexvh" "${modsinstalledlistfullpath}"; then - fn_print_info_nl "BepInEx install detected, applying start exports" - fn_script_log_info "BepInEx install detected, applying start exports" - # exports for BepInEx framework from script start_server_bepinex.sh - export DOORSTOP_ENABLE=TRUE - export DOORSTOP_INVOKE_DLL_PATH=./BepInEx/core/BepInEx.Preloader.dll - export DOORSTOP_CORLIB_OVERRIDE_PATH=./unstripped_corlib - - export LD_LIBRARY_PATH="./doorstop_libs:${LD_LIBRARY_PATH}" - export LD_PRELOAD="libdoorstop_x64.so:${LD_PRELOAD}" - - export SteamAppId=892970 - fi -fi diff --git a/lgsm/functions/fix_wurm.sh b/lgsm/functions/fix_wurm.sh deleted file mode 100644 index aba24d382b..0000000000 --- a/lgsm/functions/fix_wurm.sh +++ /dev/null @@ -1,23 +0,0 @@ -#!/bin/bash -# LinuxGSM fix_wurm.sh module -# Author: Daniel Gibbs -# Contributors: http://linuxgsm.com/contrib -# Website: https://linuxgsm.com -# Description: Resolves various issues with Wurm Unlimited. - -functionselfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")" - -# First run requires start with no parms. -# After first run new dirs are created. -if [ ! -d "${serverfiles}/Creative" ]; then - parmsbypass=1 - fixbypass=1 - exitbypass=1 - command_start.sh - fn_firstcommand_reset - sleep 10 - exitbypass=1 - command_stop.sh - fn_firstcommand_reset - unset parmsbypass -fi diff --git a/lgsm/functions/fix_zmr.sh b/lgsm/functions/fix_zmr.sh deleted file mode 100644 index 491c366380..0000000000 --- a/lgsm/functions/fix_zmr.sh +++ /dev/null @@ -1,48 +0,0 @@ -#!/bin/bash -# LinuxGSM fix_sfc.sh module -# Author: Daniel Gibbs -# Contributors: http://linuxgsm.com/contrib -# Website: https://linuxgsm.com -# Description: Resolves various issues with Zombie Master: Reborn. - -functionselfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")" - -if [ ! -f "${serverfiles}/bin/datacache.so" ]; then - ln -s "${serverfiles}/bin/datacache_srv.so" "${serverfiles}/bin/datacache.so" -fi - -if [ ! -f "${serverfiles}/bin/dedicated.so" ]; then - ln -s "${serverfiles}/bin/dedicated_srv.so" "${serverfiles}/bin/dedicated.so" -fi - -if [ ! -f "${serverfiles}/bin/engine.so" ]; then - ln -s "${serverfiles}/bin/engine_srv.so" "${serverfiles}/bin/engine.so" -fi - -if [ ! -f "${serverfiles}/bin/materialsystem.so" ]; then - ln -s "${serverfiles}/bin/materialsystem_srv.so" "${serverfiles}/bin/materialsystem.so" -fi - -if [ ! -f "${serverfiles}/bin/replay.so" ]; then - ln -s "${serverfiles}/bin/replay_srv.so" "${serverfiles}/bin/replay.so" -fi - -if [ ! -f "${serverfiles}/bin/shaderapiempty.so" ]; then - ln -s "${serverfiles}/bin/shaderapiempty_srv.so" "${serverfiles}/bin/shaderapiempty.so" -fi - -if [ ! -f "${serverfiles}/bin/soundemittersystem.so" ]; then - ln -s "${serverfiles}/bin/soundemittersystem_srv.so" "${serverfiles}/bin/soundemittersystem.so" -fi - -if [ ! -f "${serverfiles}/bin/studiorender.so" ]; then - ln -s "${serverfiles}/bin/studiorender_srv.so" "${serverfiles}/bin/studiorender.so" -fi - -if [ ! -f "${serverfiles}/bin/vphysics.so" ]; then - ln -s "${serverfiles}/bin/vphysics_srv.so" "${serverfiles}/bin/vphysics.so" -fi - -if [ ! -f "${serverfiles}/bin/scenefilecache.so" ]; then - ln -s "${serverfiles}/bin/scenefilecache_srv.so" "${serverfiles}/bin/scenefilecache.so" -fi diff --git a/lgsm/functions/info_distro.sh b/lgsm/functions/info_distro.sh deleted file mode 100644 index 8c2a67adfd..0000000000 --- a/lgsm/functions/info_distro.sh +++ /dev/null @@ -1,281 +0,0 @@ -#!/bin/bash -# LinuxGSM info_distro.sh module -# Author: Daniel Gibbs -# Contributors: http://linuxgsm.com/contrib -# Website: https://linuxgsm.com -# Description: Variables providing useful info on the Operating System such as disk and performace info. -# Used for command_details.sh, command_debug.sh and alert.sh. - -functionselfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")" - -### Game Server pid -if [ "${status}" == "1" ]; then - gameserverpid="$(tmux -L "${sessionname}" list-sessions -F "#{session_name} #{pane_pid}" | grep "^${sessionname} " | awk '{print $NF}')" - if [ "${engine}" == "source" ]; then - srcdslinuxpid="$(ps -ef | grep -v grep | grep "${gameserverpid}" | grep srcds_linux | awk '{print $2}')" - elif [ "${engine}" == "goldsrc" ]; then - hldslinuxpid="$(ps -ef | grep -v grep | grep "${gameserverpid}" | grep hlds_linux | awk '{print $2}')" - fi -fi -### Distro information - -## Distro -# Returns architecture, kernel and distro/os. -arch="$(uname -m)" -kernel="$(uname -r)" - -# Distro Name - Ubuntu 16.04 LTS -# Distro Version - 16.04 -# Distro ID - ubuntu -# Distro Codename - xenial - -# Gathers distro info from various sources filling in missing gaps. -distro_info_array=(os-release lsb_release hostnamectl debian_version redhat-release) -for distro_info in "${distro_info_array[@]}"; do - if [ -f "/etc/os-release" ] && [ "${distro_info}" == "os-release" ]; then - distroname="$(grep "PRETTY_NAME" /etc/os-release | awk -F\= '{gsub(/"/,"",$2);print $2}')" - distroversion="$(grep "VERSION_ID" /etc/os-release | awk -F\= '{gsub(/"/,"",$2);print $2}')" - # Special var for rhel like distros to removed point in number e.g 8.4 to just 8. - distroversionrh="$(sed -nr 's/^VERSION_ID="([0-9]*).+?"/\1/p' /etc/os-release)" - distroid="$(grep "ID=" /etc/os-release | grep -v _ID | awk -F\= '{gsub(/"/,"",$2);print $2}')" - distroidlike="$(grep "ID_LIKE=" /etc/os-release | grep -v _ID | awk -F\= '{gsub(/"/,"",$2);print $2}')" - distrocodename="$(grep "VERSION_CODENAME" /etc/os-release | awk -F\= '{gsub(/"/,"",$2);print $2}')" - elif [ "$(command -v lsb_release 2> /dev/null)" ] && [ "${distro_info}" == "lsb_release" ]; then - if [ -z "${distroname}" ]; then - distroname="$(lsb_release -sd)" - elif [ -z "${distroversion}" ]; then - distroversion="$(lsb_release -sr)" - elif [ -z "${distroid}" ]; then - distroid="$(lsb_release -si)" - elif [ -z "${distrocodename}" ]; then - distrocodename="$(lsb_release -sc)" - fi - elif [ "$(command -v hostnamectl 2> /dev/null)" ] && [ "${distro_info}" == "hostnamectl" ]; then - if [ -z "${distroname}" ]; then - distroname="$(hostnamectl | grep "Operating System" | sed 's/Operating System: //g')" - fi - elif [ -f "/etc/debian_version" ] && [ "${distro_info}" == "debian_version" ]; then - if [ -z "${distroname}" ]; then - distroname="Debian $(cat /etc/debian_version)" - elif [ -z "${distroversion}" ]; then - distroversion="$(cat /etc/debian_version)" - elif [ -z "${distroid}" ]; then - distroid="debian" - fi - elif [ -f "/etc/redhat-release" ] && [ "${distro_info}" == "redhat-release" ]; then - if [ -z "${distroname}" ]; then - distroname="$(cat /etc/redhat-release)" - elif [ -z "${distroversion}" ]; then - distroversion="$(rpm -qa \*-release | grep -Ei "oracle|redhat|centos|fedora" | cut -d"-" -f3)" - elif [ -z "${distroid}" ]; then - distroid="$(awk '{print $1}' /etc/redhat-release)" - fi - fi -done - -# some RHEL based distros use 8.4 instead of just 8. -if [[ "${distroidlike}" == *"rhel"* ]] || [ "${distroid}" == "rhel" ]; then - distroversioncsv="${distroversionrh}" -else - distroversioncsv="${distroversion}" -fi - -# Check if distro supported by distro vendor. -if [ "$(command -v distro-info 2> /dev/null)" ]; then - distrosunsupported="$(distro-info --unsupported)" - distrosunsupported_array=("${distrosunsupported}") - for distrounsupported in "${distrosunsupported_array[@]}"; do - if [ "${distrounsupported}" == "${distrocodename}" ]; then - distrosupport=unsupported - break - else - distrosupport=supported - fi - done -else - distrosupport=unknown -fi - -## Glibc version -# e.g: 1.17 -glibcversion="$(ldd --version | sed -n '1s/.* //p')" - -## tmux version -# e.g: tmux 1.6 -if [ ! "$(command -V tmux 2> /dev/null)" ]; then - tmuxv="${red}NOT INSTALLED!${default}" - tmuxvdigit="0" -else - tmuxvdigit="$(tmux -V | sed "s/tmux //" | sed -n '1 p' | tr -cd '[:digit:]')" - if [ "${tmuxvdigit}" -lt "16" ]; then - tmuxv="$(tmux -V) (>= 1.6 required for console log)" - else - tmuxv="$(tmux -V)" - fi -fi - -if [ "$(command -V java 2> /dev/null)" ]; then - javaversion="$(java -version 2>&1 | grep "version")" -fi - -if [ "$(command -v mono 2> /dev/null)" ]; then - monoversion="$(mono --version 2>&1 | grep -Po '(?<=version )\d')" -fi - -## Uptime -uptime="$(< /proc/uptime)" -uptime=${uptime/[. ]*/} -minutes="$((uptime / 60 % 60))" -hours="$((uptime / 60 / 60 % 24))" -days="$((uptime / 60 / 60 / 24))" - -### Performance information - -## Average server load -load="$(uptime | awk -F 'load average: ' '{ print $2 }')" - -## CPU information -cpumodel="$(awk -F: '/model name/ {name=$2} END {print name}' /proc/cpuinfo | sed 's/^[ \t]*//;s/[ \t]*$//')" -cpucores="$(awk -F: '/model name/ {core++} END {print core}' /proc/cpuinfo)" -cpufreqency="$(awk -F: '/cpu MHz/ {freq=$2} END {print freq}' /proc/cpuinfo | sed 's/^[ \t]*//;s/[ \t]*$//')" -# CPU usage of the game server pid -if [ -n "${gameserverpid}" ]; then - cpuused="$(ps --forest -o pcpu -g "${gameserverpid}" | awk '{s+=$1} END {print s}')" - cpuusedmhz="$(echo "${cpufreqency} * ${cpuused} / 100" | bc)" -fi - -## Memory information -# Available RAM and swap. - -# Newer distros can use numfmt to give more accurate results. -if [ "$(command -v numfmt 2> /dev/null)" ]; then - # Issue #2005 - Kernel 3.14+ contains MemAvailable which should be used. All others will be calculated. - - # get the raw KB values of these fields. - physmemtotalkb="$(grep MemTotal /proc/meminfo | awk '{print $2}')" - physmemfreekb="$(grep ^MemFree /proc/meminfo | awk '{print $2}')" - physmembufferskb="$(grep ^Buffers /proc/meminfo | awk '{print $2}')" - physmemcachedkb="$(grep ^Cached /proc/meminfo | awk '{print $2}')" - physmemreclaimablekb="$(grep ^SReclaimable /proc/meminfo | awk '{print $2}')" - - # check if MemAvailable Exists. - if grep -q ^MemAvailable /proc/meminfo; then - physmemactualfreekb="$(grep ^MemAvailable /proc/meminfo | awk '{print $2}')" - else - physmemactualfreekb="$((physmemfreekb + physmembufferskb + physmemcachedkb))" - fi - - # Available RAM and swap. - physmemtotalmb="$((physmemtotalkb / 1024))" - physmemtotal="$(numfmt --to=iec --from=iec --suffix=B "${physmemtotalkb}K")" - physmemfree="$(numfmt --to=iec --from=iec --suffix=B "${physmemactualfreekb}K")" - physmemused="$(numfmt --to=iec --from=iec --suffix=B "$((physmemtotalkb - physmemfreekb - physmembufferskb - physmemcachedkb - physmemreclaimablekb))K")" - physmemavailable="$(numfmt --to=iec --from=iec --suffix=B "${physmemactualfreekb}K")" - physmemcached="$(numfmt --to=iec --from=iec --suffix=B "$((physmemcachedkb + physmemreclaimablekb))K")" - - swaptotal="$(numfmt --to=iec --from=iec --suffix=B "$(grep ^SwapTotal /proc/meminfo | awk '{print $2}')K")" - swapfree="$(numfmt --to=iec --from=iec --suffix=B "$(grep ^SwapFree /proc/meminfo | awk '{print $2}')K")" - swapused="$(numfmt --to=iec --from=iec --suffix=B "$(($(grep ^SwapTotal /proc/meminfo | awk '{print $2}') - $(grep ^SwapFree /proc/meminfo | awk '{print $2}')))K")" - # RAM usage of the game server pid - # MB - if [ "${gameserverpid}" ]; then - memused="$(ps --forest -o rss -g "${gameserverpid}" | awk '{s+=$1} END {print s}' | awk '{$1/=1024;printf "%.0f",$1}{print $2}')" - # % - pmemused="$(ps --forest -o %mem -g "${gameserverpid}" | awk '{s+=$1} END {print s}')" - fi -else - # Older distros will need to use free. - # Older versions of free do not support -h option. - if [ "$( - free -h > /dev/null 2>&1 - echo $? - )" -ne "0" ]; then - humanreadable="-m" - else - humanreadable="-h" - fi - physmemtotalmb="$(free -m | awk '/Mem:/ {print $2}')" - physmemtotal="$(free ${humanreadable} | awk '/Mem:/ {print $2}')" - physmemfree="$(free ${humanreadable} | awk '/Mem:/ {print $4}')" - physmemused="$(free ${humanreadable} | awk '/Mem:/ {print $3}')" - - oldfree="$(free ${humanreadable} | awk '/cache:/')" - if [ "${oldfree}" ]; then - physmemavailable="n/a" - physmemcached="n/a" - else - physmemavailable="$(free ${humanreadable} | awk '/Mem:/ {print $7}')" - physmemcached="$(free ${humanreadable} | awk '/Mem:/ {print $6}')" - fi - - swaptotal="$(free ${humanreadable} | awk '/Swap:/ {print $2}')" - swapused="$(free ${humanreadable} | awk '/Swap:/ {print $3}')" - swapfree="$(free ${humanreadable} | awk '/Swap:/ {print $4}')" -fi - -### Disk information - -## Available disk space on the partition. -filesystem="$(LC_ALL=C df -hP "${rootdir}" | tail -n 1 | awk '{print $1}')" -totalspace="$(LC_ALL=C df -hP "${rootdir}" | tail -n 1 | awk '{print $2}')" -usedspace="$(LC_ALL=C df -hP "${rootdir}" | tail -n 1 | awk '{print $3}')" -availspace="$(LC_ALL=C df -hP "${rootdir}" | tail -n 1 | awk '{print $4}')" - -## LinuxGSM used space total. -rootdirdu="$(du -sh "${rootdir}" 2> /dev/null | awk '{print $1}')" -if [ -z "${rootdirdu}" ]; then - rootdirdu="0M" -fi - -## LinuxGSM used space in serverfiles dir. -serverfilesdu="$(du -sh "${serverfiles}" 2> /dev/null | awk '{print $1}')" -if [ -z "${serverfilesdu}" ]; then - serverfilesdu="0M" -fi - -## LinuxGSM used space total minus backup dir. -rootdirduexbackup="$(du -sh --exclude="${backupdir}" "${serverfiles}" 2> /dev/null | awk '{print $1}')" -if [ -z "${rootdirduexbackup}" ]; then - rootdirduexbackup="0M" -fi - -## Backup info -if [ -d "${backupdir}" ]; then - # Used space in backups dir. - backupdirdu="$(du -sh "${backupdir}" | awk '{print $1}')" - # If no backup dir, size is 0M. - if [ -z "${backupdirdu}" ]; then - backupdirdu="0M" - fi - - # number of backups set to 0 by default. - backupcount=0 - - # If there are backups in backup dir. - if [ "$(find "${backupdir}" -name "*.tar.gz" | wc -l)" -ne "0" ]; then - # number of backups. - backupcount="$(find "${backupdir}"/*.tar.gz | wc -l)" - # most recent backup. - lastbackup="$(ls -1t "${backupdir}"/*.tar.gz | head -1)" - # date of most recent backup. - lastbackupdate="$(date -r "${lastbackup}")" - # no of days since last backup. - lastbackupdaysago="$((($(date +'%s') - $(date -r "${lastbackup}" +'%s')) / 60 / 60 / 24))" - # size of most recent backup. - lastbackupsize="$(du -h "${lastbackup}" | awk '{print $1}')" - fi -fi - -# Network Interface name -netint=$(${ipcommand} -o addr | grep "${ip}" | awk '{print $2}') -netlink=$(${ethtoolcommand} "${netint}" 2> /dev/null | grep Speed | awk '{print $2}') - -# Sets the SteamCMD glibc requirement if the game server requirement is less or not required. -if [ "${appid}" ]; then - if [ "${glibc}" = "null" ] || [ -z "${glibc}" ] || [ "$(printf '%s\n'${glibc}'\n' "2.14" | sort -V | head -n 1)" != "2.14" ]; then - glibc="2.14" - fi -fi - -# Gather Port Info using ss -ssinfo="$(ss -tuplwn)" diff --git a/lgsm/functions/info_game.sh b/lgsm/functions/info_game.sh deleted file mode 100644 index b8f94c18a6..0000000000 --- a/lgsm/functions/info_game.sh +++ /dev/null @@ -1,2600 +0,0 @@ -#!/bin/bash -# LinuxGSM info_game.sh module -# Author: Daniel Gibbs -# Contributors: http://linuxgsm.com/contrib -# Website: https://linuxgsm.com -# Description: Gathers various game server information. - -functionselfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")" - -## Examples of filtering to get info from config files. -# sed 's/foo//g' - remove foo -# tr -cd '[:digit:]' leave only digits -# tr -d '=\"; ' remove selected characters =\"; -# grep -v "foo" filter out lines that contain foo -# cut -f1 -d "/" remove everything after / - -fn_info_game_ac() { - # Config - if [ ! -f "${servercfgfullpath}" ]; then - adminpassword="${unavailable}" - httpport="${zero}" - port="${zero}" - queryport="${zero}" - servername="${unavailable}" - else - adminpassword=$(grep "ADMIN_PASSWORD" "${servercfgfullpath}" | sed -e 's/^[ \t]*//g' -e '/^\//d' -e 's/ADMIN_PASSWORD//g' | tr -d '=\";,:' | sed -e 's/^[ \t]*//' -e 's/[ \t]*$//') - httpport=$(grep "HTTP_PORT" "${servercfgfullpath}" | tr -cd '[:digit:]') - port=$(grep "TCP_PORT" "${servercfgfullpath}" | tr -cd '[:digit:]') - queryport="${httpport}" - servername=$(grep "NAME" "${servercfgfullpath}" | sed -e 's/^[ \t]*//g' -e '/^\//d' -e 's/NAME//g' | tr -d '=\";,:' | sed -e 's/^[ \t]*//' -e 's/[ \t]*$//' | head -n 1) - - # Not set - adminpassword=${adminpassword:-"NOT SET"} - httpport=${httpport:-"0"} - port=${port:-"0"} - queryport=${queryport:-"0"} - servername=${servername:-"NOT SET"} - - fi -} - -fn_info_game_ark() { - # Config - if [ ! -f "${servercfgfullpath}" ]; then - adminpassword="${unavailable}" - servername="${unavailable}" - serverpassword="${unavailable}" - else - adminpassword=$(sed -nr 's/^ServerAdminPassword=(.*)/\1/p' "${servercfgfullpath}") - servername=$(sed -nr 's/^SessionName=(.*)/\1/p' "${servercfgfullpath}") - serverpassword=$(sed -nr 's/^ServerPassword=(.*)/\1/p' "${servercfgfullpath}") - - # Not set - adminpassword=${adminpassword:-"NOT SET"} - servername=${servername:-"NOT SET"} - serverpassword=${serverpassword:-"NOT SET"} - fi - - # Parameters - maxplayers=${maxplayers:-"0"} - port=${port:-"0"} - queryport=${queryport:-"0"} - rawport=$((port + 1)) - rconport=${rconport:-"0"} -} - -fn_info_game_arma3() { - # Config - if [ ! -f "${servercfgfullpath}" ]; then - adminpassword="${unavailable}" - maxplayers="${zero}" - servername="${unavailable}" - serverpassword="${unavailable}" - else - adminpassword=$(sed -nr 's/^passwordAdmin\s*=\s*"(.*)"\s*;/\1/p' "${servercfgfullpath}") - maxplayers=$(sed -nr 's/^maxPlayers\s*=\s*([0-9]+)\s*;/\1/p' "${servercfgfullpath}") - servername=$(sed -nr 's/^hostname\s*=\s*"(.*)"\s*;/\1/p' "${servercfgfullpath}") - serverpassword=$(sed -nr 's/^password\s*=\s*"(.*)"\s*;/\1/p' "${servercfgfullpath}") - - # Not set - adminpassword=${adminpassword:-"NOT SET"} - maxplayers=${maxplayers:-"0"} - servername=${servername:-"NOT SET"} - serverpassword=${serverpassword:-"NOT SET"} - fi - - # Parameters - battleeyeport=$((port + 4)) - port=${port:-"2302"} - queryport=$((port + 1)) - steammasterport=$((port + 2)) - voiceport=${port:-"2302"} - voiceunusedport=$((port + 3)) -} - -fn_info_game_armar() { - if [ ! -f "${servercfgfullpath}" ]; then - adminpassword="${unavailable}" - maxplayers="${zero}" - port="${zero}" - queryport="${zero}" - servername="${unavailable}" - serverpassword="${unavailable}" - else - adminpassword=$(jq -r '.game.passwordAdmin' "${servercfgfullpath}") - battleeyeport=1376 - configip=$(jq -r '.bindAddress' "${servercfgfullpath}") - maxplayers=$(jq -r '.game.maxPlayers' "${servercfgfullpath}") - port=$(jq -r '.bindPort' "${servercfgfullpath}") - queryport=$(jq -r '.a2s.port' "${servercfgfullpath}") - servername=$(jq -r '.game.name' "${servercfgfullpath}") - serverpassword=$(jq -r '.game.password' "${servercfgfullpath}") - - # Not set - adminpassword=${adminpassword:-"NOT SET"} - configip=${configip:-"0.0.0.0"} - maxplayers=${maxplayers:-"0"} - port=${port:-"0"} - queryport=${queryport:-"0"} - servername=${servername:-"NOT SET"} - serverpassword=${serverpassword:-"NOT SET"} - fi -} - -fn_info_game_av() { - # Config - if [ ! -f "${servercfgfullpath}" ]; then - maxplayers="${unavailable}" - servername="${unavailable}" - serverpassword="${unavailable}" - port=${zero} - queryport=${zero} - steamqueryport=${zero} - steammasterport=${zero} - rconport=${zero} - rconenabled="${unavailable}" - rconpassword="${unavailable}" - else - maxplayers=$(grep "maxPlayers=" "${servercfgfullpath}" | sed 's/maxPlayers=//') - servername=$(grep "name=" "${servercfgfullpath}" | sed 's/name=//') - serverpassword=$(grep "password=" "${servercfgfullpath}" | sed 's/password=//') - port=$(grep "port=" "${servercfgfullpath}" | sed 's/port=//') - queryport=$((port + 3)) - steamqueryport=$((port + 20)) - steammasterport=$((port + 21)) - rconport=$(grep "rconPort=" "${servercfgfullpath}" | sed 's/rconPort=//') - - rconpassword=$(grep "rconPassword=" "${servercfgfullpath}" | sed 's/rconPassword=//') - if [ -n "${rconpassword}" ]; then - rconenabled="true" - fi - - # Not set - maxplayers=${maxplayers:-"0"} - servername=${servername:-"NOT SET"} - serverpassword=${serverpassword:-"NOT SET"} - port=${port:-"0"} - queryport=${queryport:-"0"} - steamqueryport=${steamqueryport:-"0"} - steammasterport=${steammasterport:-"0"} - rconport=${rconport:-"0"} - rconenabled=${rconenabled:-"NOT SET"} - rconpassword=${rconpassword:-"NOT SET"} - fi -} - -fn_info_game_bf1942() { - # Config - if [ ! -f "${servercfgfullpath}" ]; then - servername="${unavailable}" - serverpassword="${unavailable}" - maxplayers="${zero}" - port="${zero}" - queryport="${zero}" - else - servername=$(grep -E "^game.serverName " "${servercfgfullpath}" | sed -e 's/^[ \t]*//g' -e '/^--/d' -e 's/game.serverName //g' | tr -d '=\";,:' | xargs) - serverpassword=$(grep "game.serverPassword" "${servercfgfullpath}" | sed -e 's/^ *//g' -e '/^--/d' -e 's/game.serverPassword//g' | tr -d '=\";,:' | xargs) - maxplayers=$(grep "game.serverMaxPlayers" "${servercfgfullpath}" | grep -v "\--" | tr -cd '[:digit:]') - port=$(grep "game.serverPort" "${servercfgfullpath}" | grep -v "\--" | tr -cd '[:digit:]') - queryport="22000" - configip=$(grep "game.serverIP" "${servercfgfullpath}" | sed -e 's/^[ \t]*//g' -e '/^--/d' -e 's/game.serverIP//g' | tr -d '=\";,:' | xargs) - - # Not set - servername=${servername:-"NOT SET"} - serverpassword=${serverpassword:-"NOT SET"} - maxplayers=${maxplayers:-"0"} - port=${port:-"0"} - queryport=${queryport:-"0"} - configip=${configip:-"0.0.0.0"} - fi -} - -fn_info_game_bfv() { - # Config - if [ ! -f "${servercfgfullpath}" ]; then - servername="${unavailable}" - serverpassword="${unavailable}" - maxplayers="${zero}" - port="${zero}" - queryport="${zero}" - else - servername=$(grep "game.serverName" "${servercfgfullpath}" | sed -e 's/^[ \t]*//g' -e '/^--/d' -e 's/game.serverName//g' | tr -d '=\";,:' | xargs) - serverpassword=$(grep "game.serverPassword" "${servercfgfullpath}" | sed -e 's/^ *//g' -e '/^--/d' -e 's/game.serverPassword//g' | tr -d '=\";,:' | xargs) - maxplayers=$(grep "game.serverMaxPlayers" "${servercfgfullpath}" | grep -v "\--" | tr -cd '[:digit:]') - port=$(grep "game.serverPort" "${servercfgfullpath}" | grep -v "\--" | tr -cd '[:digit:]') - queryport="23000" - configip=$(grep "game.serverIP" "${servercfgfullpath}" | sed -e 's/^[ \t]*//g' -e '/^--/d' -e 's/game.serverIP//g' | tr -d '=\";,:' | xargs) - - # Not set - servername=${servername:-"NOT SET"} - serverpassword=${serverpassword:-"NOT SET"} - maxplayers=${maxplayers:-"0"} - port=${port:-"0"} - queryport=${queryport:-"0"} - configip=${configip:-"0.0.0.0"} - fi -} - -fn_info_game_bo() { - # Config - if [ ! -f "${servercfgfullpath}" ]; then - servername="${unavailable}" - serverpassword="${unavailable}" - port="${zero}" - queryport="${zero}" - maxplayers="${unavailable}" - else - servername=$(grep "ServerName=" "${servercfgfullpath}" | sed -e 's/^[ \t]*//g' -e '/^#/d' -e 's/ServerName//g' | tr -d '=\";,:' | sed -e 's/^[ \t]*//' -e 's/[ \t]*$//') - serverpassword=$(grep "Password=" "${servercfgfullpath}" | sed -e 's/^[ \t]*//g' -e '/^#/d' -e 's/Password//g' | tr -d '=\";,:' | sed -e 's/^[ \t]*//' -e 's/[ \t]*$//') - port=$(grep "ServerPort=" "${servercfgfullpath}" | tr -cd '[:digit:]') - queryport=$((port + 1)) - maxplayers=$(grep "MaxPlayers=" "${servercfgfullpath}" | tr -cd '[:digit:]') - - # Not set - servername=${servername:-"NOT SET"} - serverpassword=${serverpassword:-"NOT SET"} - port=${port:-"0"} - queryport=${queryport:-"0"} - maxplayers=${maxplayers:-"0"} - fi -} - -fn_info_game_bt() { - # Config - if [ ! -f "${servercfgfullpath}" ]; then - servername="${unavailable}" - serverpassword="${unavailable}" - port="${zero}" - queryport="${zero}" - maxplayers="${unavailable}" - else - servername=$(grep -Po 'name="\K.*(?=")' "${servercfgfullpath}") # Assuming GNU grep is used - serverpassword=$(grep -Po 'password="\K.*(?=")' "${servercfgfullpath}") # Assuming GNU grep is used - port=$(grep " port=" "${servercfgfullpath}" | tr -cd '[:digit:]') - queryport=$(grep "queryport=" "${servercfgfullpath}" | tr -cd '[:digit:]') - maxplayers=$(grep "maxplayers=" "${servercfgfullpath}" | tr -cd '[:digit:]') - - # Not set - servername=${servername:-"NOT SET"} - serverpassword=${serverpassword:-"NOT SET"} - port=${port:-"0"} - queryport=${queryport:-"0"} - maxplayers=${maxplayers:-"0"} - fi -} - -fn_info_game_btl() { - # Config - if [ ! -f "${servercfgfullpath}" ]; then - servername="${unavailable}" - serverpassword="${unavailable}" - gamemode="${unavailable}" - else - servername=$(grep -m2 "ServerName" "${servercfgfullpath}" | sed -e 's/^[ \t]*//g' -e '/^--/d' -e 's/ServerName//g' | tr -d '=\";,:' | sed -e 's/^[ \t]*//' -e 's/[ \t]*$//') - serverpassword=$(grep "Password" "${servercfgfullpath}" | grep -v "RCONPassword" | sed -e 's/^[ \t]*//g' -e '/^--/d' -e 's/Password//g' | tr -d '=\";,:' | sed -e 's/^[ \t]*//' -e 's/[ \t]*$//') - gamemode=$(grep -m2 "PlayMode" "${servercfgfullpath}" | sed -e 's/^[ \t]*//g' -e '/^--/d' -e 's/PlayMode//g' | tr -d '=\";,:' | sed -e 's/^[ \t]*//' -e 's/[ \t]*$//') - - # Not set - servername=${servername:-"NOT SET"} - serverpassword=${serverpassword:-"NOT SET"} - gamemode=${gamemode:-"NOT SET"} - fi - - # Parameters - port=${port:-"0"} - queryport=${queryport:-"0"} - rconport=$((port + 2)) -} - -fn_info_game_cd() { - if [ ! -f "${servercfgfullpath}" ]; then - servername="${unavailable}" - port="${zero}" - rconenabled="false" - rconport="${zero}" - rconpassword="${unavailable}" - steamport="${zero}" - maxplayers="${zero}" - else - servername=$(jq -r '.game_title' "${servercfgfullpath}") - port=$(jq -r '.game_port' "${servercfgfullpath}") - steamport=$(jq -r '.steam_port_messages' "${servercfgfullpath}") - rconenabled=$(jq -r '.rcon' "${servercfgfullpath}") - rconport=$(jq -r '.rcon_port' "${servercfgfullpath}") - rconpassword=$(jq -r '.rcon_password' "${servercfgfullpath}") - maxplayers=$(jq -r '.player_count' "${servercfgfullpath}") - fi -} - -fn_info_game_ck() { - if [ ! -f "${servercfgfullpath}" ]; then - servername="${unavailable}" - maxplayers="${zero}" - else - servername=$(jq -r '.worldName' "${servercfgfullpath}") - maxplayers=$(jq -r '.maxNumberPlayers' "${servercfgfullpath}") - fi - queryport=$((port + 1)) -} - -fn_info_game_cmw() { - # Config - if [ ! -f "${servercfgfullpath}" ]; then - adminpassword="${unavailable}" - rconport=${zero} - servername="${unavailable}" - serverpassword="${unavailable}" - - else - adminpassword=$(grep -E "^adminpassword=" "${servercfgfullpath}" | tr -cd '[:digit:]') - rconport=$(grep -E "^RConPort=" "${servercfgdir}/DefaultGame.ini" | tr -cd '[:digit:]') - servername=$(grep -E "^ServerName" "${servercfgfullpath}" | sed 's/^ServerName=//') - serverpassword=$(grep -E "^GamePassword" "${servercfgfullpath}" | sed 's/^ServerName=//') - - # Not set - adminpassword=${adminpassword:-"NOT SET"} - rconport=${rconport:-"0"} - servername=${servername:-"NOT SET"} - serverpassword=${serverpassword:-"NOT SET"} - fi - - # Parameters - defaultmap=${defaultmap:-"NOT SET"} - port=${port:-"0"} - queryport=${queryport:-"0"} -} - -fn_info_game_cod() { - # Config - if [ ! -f "${servercfgfullpath}" ]; then - servername="${unavailable}" - rconpassword="${unavailable}" - else - servername=$(grep "sv_hostname " "${servercfgfullpath}" | sed -e 's/^[ \t]*//g' -e '/^\//d' -e 's/set sv_hostname //g' | tr -d '=\";,:' | xargs) - rconpassword=$(grep "rconpassword" "${servercfgfullpath}" | sed -e 's/^[ \t]*//g' -e '/^\//d' -e 's/set rconpassword //g' | tr -d '=\";,:' | sed -e 's/^[ \t]*//' -e 's/[ \t]*$//') - - # Not set - servername=${servername:-"NOT SET"} - rconpassword=${rconpassword=:-"NOT SET"} - fi - - # Parameters - defaultmap=${defaultmap:-"NOT SET"} - maxplayers=${maxplayers:-"0"} - port=${port:-"0"} -} - -fn_info_game_coduo() { - # Config - if [ ! -f "${servercfgfullpath}" ]; then - servername="${unavailable}" - rconpassword="${unavailable}" - else - servername=$(grep "sv_hostname " "${servercfgfullpath}" | sed -e 's/^[ \t]*//g' -e '/^\//d' -e 's/set sv_hostname //g' | tr -d '=\";,:' | xargs) - rconpassword=$(grep "rconpassword" "${servercfgfullpath}" | sed -e 's/^[ \t]*//g' -e '/^\//d' -e 's/set rconpassword //g' | tr -d '=\";,:' | sed -e 's/^[ \t]*//' -e 's/[ \t]*$//') - - # Not set - servername=${servername:-"NOT SET"} - rconpassword=${rconpassword=:-"NOT SET"} - fi - - # Parameters - defaultmap=${defaultmap:-"NOT SET"} - maxplayers=${maxplayers:-"0"} - port=${port:-"0"} - queryport=${port:-"28960"} -} - -fn_info_game_cod2() { - # Config - if [ ! -f "${servercfgfullpath}" ]; then - servername="${unavailable}" - rconpassword="${unavailable}" - else - servername=$(grep "sv_hostname " "${servercfgfullpath}" | sed -e 's/^[ \t]*//g' -e '/^\//d' -e 's/set sv_hostname //g' | tr -d '=\";,:' | xargs) - rconpassword=$(grep "rconpassword" "${servercfgfullpath}" | sed -e 's/^[ \t]*//g' -e '/^\//d' -e 's/set rconpassword //g' | tr -d '=\";,:' | sed -e 's/^[ \t]*//' -e 's/[ \t]*$//') - - # Not set - servername=${servername:-"NOT SET"} - rconpassword=${rconpassword=:-"NOT SET"} - fi - - # Parameters - defaultmap=${defaultmap:-"NOT SET"} - maxplayers=${maxplayers:-"0"} - port=${port:-"0"} - queryport=${port:-"28960"} -} - -fn_info_game_cod4() { - # Config - if [ ! -f "${servercfgfullpath}" ]; then - servername="${unavailable}" - rconpassword="${unavailable}" - else - servername=$(sed -nr 's/^set\s*sv_hostname\s*"(.*)".*/\1/p' "${servercfgfullpath}") - rconpassword=$(sed -nr 's/^set\s*rcon_password\s*"(.*)"\s*\/.*/\1/p' "${servercfgfullpath}") - queryport=${port:-"28960"} - - # Not set - servername=${servername:-"NOT SET"} - rconpassword=${rconpassword=:-"NOT SET"} - queryport=${queryport:-"28960"} - fi - - # Parameters - defaultmap=${defaultmap:-"NOT SET"} - maxplayers=${maxplayers:-"0"} - port=${port:-"0"} - queryport=${port:-"28960"} -} - -fn_info_game_codwaw() { - # Config - if [ ! -f "${servercfgfullpath}" ]; then - servername="${unavailable}" - rconpassword="${unavailable}" - else - servername=$(grep "sv_hostname " "${servercfgfullpath}" | sed -e 's/^[ \t]*//g' -e '/^\//d' -e 's/set sv_hostname //g' | tr -d '=\";,:' | xargs) - rconpassword=$(grep "rconpassword" "${servercfgfullpath}" | sed -e 's/^[ \t]*//g' -e '/^\//d' -e 's/set rconpassword //g' | tr -d '=\";,:' | sed -e 's/^[ \t]*//' -e 's/[ \t]*$//') - - # Not set - servername=${servername:-"NOT SET"} - rconpassword=${rconpassword=:-"NOT SET"} - fi - - # Parameters - defaultmap=${defaultmap:-"NOT SET"} - maxplayers=${maxplayers:-"0"} - port=${port:-"0"} - queryport=${port:-"28960"} -} - -fn_info_game_col() { - # Config - if [ ! -f "${servercfgfullpath}" ]; then - servername="${unavailable}" - serverpassword="${unavailable}" - maxplayers="${unavailable}" - port="${zero}" - queryport="${zero}" - steamport="${zero}" - rconpassword="${unavailable}" - else - servername=$(jq -r '.ServerSettings.ServerName' "${servercfgfullpath}") - serverpassword=$(jq -r '.ServerSettings.ServerPassword' "${servercfgfullpath}") - maxplayers=$(jq -r '.ServerSettings.MaxPlayerCount' "${servercfgfullpath}") - port=$(jq -r '.ServerSettings.ServerGamePort' "${servercfgfullpath}") - queryport=${port:-"0"} - steamport=$(jq -r '.ServerSettings.ServerSteamPort' "${servercfgfullpath}") - rconpassword=$(jq -r '.ServerSettings.RCONPassword' "${servercfgfullpath}") - configip=$(jq -r '.ServerSettings.ServerIP' "${servercfgfullpath}") - - # Not set - servername=${servername:-"NOT SET"} - serverpassword=${serverpassword:-"NOT SET"} - maxplayers=${maxplayers:-"0"} - port=${port:-"27004"} - queryport=${queryport:-"0"} - steamport=${steamport:-"27005"} - rconpassword=${rconpassword:-"NOT SET"} - configip=${configip:-"0.0.0.0"} - fi -} - -fn_info_game_dodr() { - # Config - if [ ! -f "${servercfgfullpath}" ]; then - maxplayers="${zero}" - else - maxplayers=$(sed -nr 's/^iServerMaxPlayers=(.*)$/\1/p' "${servercfgfullpath}") - - # Not set - maxplayers=${maxplayers:-"0"} - fi - - # Parameters - servername=${servername:-"NOT SET"} - port=${port:-"7777"} - queryport=${queryport:-"27015"} -} - -fn_info_game_dayz() { - # Config - if [ ! -f "${servercfgfullpath}" ]; then - servername="${unavailable}" - adminpassword="${unavailable}" - serverpassword="${unavailable}" - maxplayers="${zero}" - else - servername=$(sed -nr 's/^hostname\s*=\s*"(.*)"\s*;/\1/p' "${servercfgfullpath}") - adminpassword=$(sed -nr 's/^passwordAdmin\s*=\s*"(.*)"\s*;/\1/p' "${servercfgfullpath}") - serverpassword=$(sed -nr 's/^password\s*=\s*"(.*)"\s*;/\1/p' "${servercfgfullpath}") - maxplayers=$(sed -nr 's/^maxPlayers\s*=\s*([0-9]+)\s*;/\1/p' "${servercfgfullpath}") - queryport=$(sed -nr 's/^steamQueryPort\s*=\s*([0-9]+)\s*;/\1/p' "${servercfgfullpath}") - - # Not Set - servername=${servername:-"NOT SET"} - adminpassword=${adminpassword:-"NOT SET"} - serverpassword=${serverpassword:-"NOT SET"} - maxplayers=${maxplayers:-"0"} - queryport=${queryport:-"27016"} - fi - - # Parameters - port=${port:-"2302"} - steammasterport=$((port + 2)) - battleeyeport=$((port + 4)) -} - -fn_info_game_dst() { - # Config - if [ ! -f "${clustercfgfullpath}" ]; then - servername="${unavailable}" - serverpassword="${unavailable}" - maxplayers="${zero}" - gamemode="${unavailable}" - tickrate="${zero}" - masterport="${zero}" - else - servername=$(grep "cluster_name" "${clustercfgfullpath}" | sed -e 's/^[ \t]*//g' -e '/^#/d' -e 's/cluster_name//g' | tr -d '=\";,:' | sed -e 's/^[ \t]*//' -e 's/[ \t]*$//') - serverpassword=$(grep "cluster_password" "${clustercfgfullpath}" | sed -e 's/^[ \t]*//g' -e '/^#/d' -e 's/cluster_password//g' | tr -d '=\";,:' | sed -e 's/^[ \t]*//' -e 's/[ \t]*$//') - maxplayers=$(grep "max_players" "${clustercfgfullpath}" | grep -v "#" | tr -cd '[:digit:]') - gamemode=$(grep "game_mode" "${clustercfgfullpath}" | sed -e 's/^[ \t]*//g' -e '/^#/d' -e 's/game_mode//g' | tr -d '=\";,:' | sed -e 's/^[ \t]*//' -e 's/[ \t]*$//') - tickrate=$(grep "tick_rate" "${clustercfgfullpath}" | grep -v "#" | tr -cd '[:digit:]') - masterport=$(grep "master_port" "${clustercfgfullpath}" | grep -v "#" | tr -cd '[:digit:]') - configip=$(grep "bind_ip" "${clustercfgfullpath}" | sed -e 's/^[ \t]*//g' -e '/^#/d' -e 's/bind_ip//g' | tr -d '=\";,:' | sed -e 's/^[ \t]*//' -e 's/[ \t]*$//') - - # Not set - servername=${servername:-"NOT SET"} - serverpassword=${serverpassword:-"NOT SET"} - maxplayers=${maxplayers:-"0"} - gamemode=${gamemode:-"NOT SET"} - tickrate=${tickrate:-"0"} - masterport=${masterport:-"0"} - configip=${configip:-"0.0.0.0"} - fi - - if [ ! -f "${servercfgfullpath}" ]; then - port="${zero}" - steamauthport="${zero}" - steammasterport="${zero}" - else - port=$(grep "server_port" "${servercfgfullpath}" | grep "^server_port" | grep -v "#" | tr -cd '[:digit:]') - steamauthport=$(grep "authentication_port" "${servercfgfullpath}" | grep -v "#" | tr -cd '[:digit:]') - steammasterport=$(grep "master_server_port" "${servercfgfullpath}" | grep -v "#" | tr -cd '[:digit:]') - - # Not set - port=${port:-"0"} - steamauthport=${steamauthport:-"0"} - steammasterport=${steammasterport:-"0"} - fi - - # Parameters - sharding=${sharding:-"NOT SET"} - master=${master:-"NOT SET"} - shard=${shard:-"NOT SET"} - cluster=${cluster:-"NOT SET"} - cave=${cave:-"NOT SET"} -} - -fn_info_game_eco() { - # Config - if [ ! -f "${servercfgfullpath}" ]; then - servername="${unavailable}" - serverpassword="${unavailable}" - maxplayers="${zero}" - tickrate="${zero}" - port="${zero}" - webadminport="${zero}" - else - configip=$(jq -r '.IPAddress' "${servercfgfullpath}") - servername=$(jq -r '.Description' "${servercfgfullpath}") - serverpassword=$(jq -r '.Password' "${servercfgfullpath}") - maxplayers=$(jq -r '.MaxConnections' "${servercfgfullpath}") - tickrate=$(jq -r '.Rate' "${servercfgfullpath}") - port=$(jq -r '.GameServerPort' "${servercfgfullpath}") - webadminport=$(jq -r '.WebServerPort' "${servercfgfullpath}") - - # Not set - configip=${configip:-"0.0.0.0"} - servername=${servername:-"NOT SET"} - serverpassword=${serverpassword:-"NOT SET"} - maxplayers=${maxplayers=:-"0"} - tickrate=${tickrate=:-"0"} - port=${port=:-"0"} - webadminport=${webadminport=:-"0"} - fi -} - -fn_info_game_etl() { - # Config - if [ ! -f "${servercfgfullpath}" ]; then - rconpassword="${unavailable}" - servername="${unavailable}" - serverpassword="${unavailable}" - maxplayers="${zero}" - port="${zero}" - queryport="${zero}" - else - port=$(grep "set net_port" "${servercfgfullpath}" | grep -v "//" | tr -cd '[:digit:]') - queryport="${port}" - rconpassword=$(grep "set rconpassword" "${servercfgfullpath}" | sed -e 's/^[ \t]*//g' -e '/^\//d' -e 's/set rconpassword //g' | tr -d '=\";,:' | sed -e 's/^[ \t]*//g' -e '/^\//d' | sed -e 's/^[ \t]*//' -e 's/[ \t]*$//') - servername=$(grep "set sv_hostname" "${servercfgfullpath}" | sed -e 's/^[ \t]*//g' -e '/^\//d' -e 's/set sv_hostname //g' | tr -d '=\";,:' | sed -e 's/^[ \t]*//' -e 's/[ \t]*$//') - serverpassword=$(grep "set g_password" "${servercfgfullpath}" | sed -e 's/^[ \t]*//g' -e '/^\//d' -e 's/set g_password //g' | tr -d '=\";,:' | sed -e 's/^[ \t]*//' -e 's/[ \t]*$//') - maxplayers=$(grep "set sv_maxclients" "${servercfgfullpath}" | grep -v "//" | tr -cd '[:digit:]') - configip=$(grep "set net_ip" "${servercfgfullpath}" | sed -e 's/^[ \t]*//g' -e '/^\//d' -e 's/set net_ip//g' | tr -d '=\";,:' | sed -e 's/^[ \t]*//' -e 's/[ \t]*$//') - - # Not set - rconpassword=${rconpassword:-"NOT SET"} - servername=${servername:-"NOT SET"} - serverpassword=${serverpassword:-"NOT SET"} - maxplayers=${maxplayers:-"0"} - port=${port:-"27960"} - queryport=${queryport:-"27960"} - configip=${configip:-"0.0.0.0"} - fi -} - -fn_info_game_fctr() { - # Config - if [ ! -f "${servercfgfullpath}" ]; then - servername="Factorio Server" - serverpassword="${unavailable}" - maxplayers="${zero}" - authtoken="${unavailable}" - savegameinterval="${unavailable}" - versioncount="${unavailable}" - else - servername=$(jq -r '.name' "${servercfgfullpath}") - serverpassword=$(jq -r '.game_password' "${servercfgfullpath}") - maxplayers=$(jq -r '.max_players' "${servercfgfullpath}") - authtoken=$(jq -r '.token' "${servercfgfullpath}") - savegameinterval=$(jq -r '.autosave_interval' "${servercfgfullpath}") - versioncount=$(jq -r '.autosave_slots' "${servercfgfullpath}") - - # Not set - servername=${servername:-"NOT SET"} - serverpassword=${serverpassword:-"NOT SET"} - maxplayers=${maxplayers:-"0"} - authtoken=${authtoken:-"NOT SET"} - savegameinterval=${savegameinterval:-"0"} - versioncount=${versioncount:-"0"} - fi - - # Parameters - port=${port:-"0"} - rconport=${rconport:-"0"} - rconpassword=${rconpassword:-"NOT SET"} - - # get server version if installed - local factoriobin="${executabledir}${executable:1}" - if [ -f "${factoriobin}" ]; then - serverversion=$(${factoriobin} --version | grep "Version:" | awk '{print $2}') - fi -} - -fn_info_game_jc2() { - # Config - if [ ! -f "${servercfgfullpath}" ]; then - servername="${unavailable}" - serverdescription="${unavailable}" - serverpassword="${unavailable}" - maxplayers="${zero}" - port="${zero}" - queryport="${zero}" - else - servername=$(grep "Name" "${servercfgfullpath}" | sed -e 's/^[ \t]*//g' -e '/^--/d' -e 's/Name//g' | tr -d '=\";,:' | sed -e 's/^[ \t]*//' -e 's/[ \t]*$//') - serverdescription=$(grep "Description" "${servercfgfullpath}" | sed -e 's/^[ \t]*//g' -e '/^--/d' -e 's/Description//g' | tr -d '=\";,:' | sed -e 's/^[ \t]*//' -e 's/[ \t]*$//') - serverpassword=$(grep "Password" "${servercfgfullpath}" | sed -e 's/^ *//g' -e '/^--/d' -e 's/Password//g' | tr -d '=\";,:' | sed -e 's/^[ \t]*//' -e 's/[ \t]*$//') - maxplayers=$(grep "MaxPlayers" "${servercfgfullpath}" | grep -v "\--" | tr -cd '[:digit:]') - port=$(grep "BindPort" "${servercfgfullpath}" | grep -v "\--" | tr -cd '[:digit:]') - queryport="${port}" - configip=$(grep "BindIP" "${servercfgfullpath}" | sed -e 's/^[ \t]*//g' -e '/^--/d' -e 's/BindIP//g' | tr -d '=\";,:' | sed -e 's/^[ \t]*//' -e 's/[ \t]*$//') - - # Not set - servername=${servername:-"NOT SET"} - serverpassword=${serverpassword:-"NOT SET"} - serverdescription=${serverdescription:-"NOT SET"} - maxplayers=${maxplayers:-"0"} - port=${port:-"0"} - queryport=${queryport:-"0"} - configip=${configip:-"0.0.0.0"} - fi -} - -fn_info_game_hw() { - # Parameters - servername=${servername:-"NOT SET"} - port=${port:-"0"} - queryport=${queryport:-"0"} - maxplayers=${maxplayers:-"0"} - defaultmap=${defaultmap:-"NOT SET"} - creativemode=${creativemode:-"NOT SET"} -} - -fn_info_game_inss() { - # Parameters - port=${port:-"0"} - queryport=${queryport:-"0"} - rconport=${rconport:-"0"} - servername=${servername:-"NOT SET"} - serverpassword=${serverpassword:-"NOT SET"} - defaultmap=${defaultmap:-"NOT SET"} - defaultscenario=${defaultscenario:-"NOT SET"} - maxplayers=${maxplayers:-"0"} -} - -fn_info_game_jc3() { - # Config - if [ ! -f "${servercfgfullpath}" ]; then - servername="${unavailable}" - serverdescription="${unavailable}" - serverpassword="${unavailable}" - maxplayers="${zero}" - port="${zero}" - queryPort="${zero}" - steamport="${zero}" - httpport="${zero}" - tickrate="${zero}" - else - servername=$(grep "name" "${servercfgfullpath}" | sed -e 's/^[ \t]*//g' -e '/^#/d' -e 's/name//g' | tr -d '=\";,:' | sed -e 's/^[ \t]*//' -e 's/[ \t]*$//') - serverdescription=$(grep "description" "${servercfgfullpath}" | sed -e 's/^[ \t]*//g' -e '/^#/d' -e 's/description//g' | tr -d '=\";,:' | sed -e 's/^[ \t]*//' -e 's/[ \t]*$//') - serverpassword=$(grep "password" "${servercfgfullpath}" | sed -e 's/^[ \t]*//g' -e '/^#/d' -e 's/password//g' | tr -d '=\";,:' | sed -e 's/^[ \t]*//' -e 's/[ \t]*$//') - maxplayers=$(grep "\"maxPlayers\"" "${servercfgfullpath}" | tr -cd '[:digit:]') - port=$(grep "\"port\"" "${servercfgfullpath}" | tr -cd '[:digit:]') - queryport=$(grep "\"queryPort\"" "${servercfgfullpath}" | tr -cd '[:digit:]') - steamport=$(grep "\"steamPort\"" "${servercfgfullpath}" | tr -cd '[:digit:]') - httpport=$(grep "\"httpPort\"" "${servercfgfullpath}" | tr -cd '[:digit:]') - tickrate=$(grep "\"maxTickRate\"" "${servercfgfullpath}" | tr -cd '[:digit:]') - configip=$(grep "host" "${servercfgfullpath}" | sed -e 's/^[ \t]*//g' -e '/^#/d' -e 's/host//g' | tr -d '=\";,:' | sed -e 's/^[ \t]*//' -e 's/[ \t]*$//') - - # Not set - servername=${servername:-"NOT SET"} - serverdescription=${serverdescription:-"NOT SET"} - serverpassword=${serverpassword:-"NOT SET"} - maxplayers=${maxplayers=:-"0"} - port=${port=:-"0"} - queryport=${queryport=:-"0"} - steamport=${steamport=:-"0"} - httpport=${httpport=:-"0"} - tickrate=${tickrate=:-"0"} - configip=${configip:-"0.0.0.0"} - fi -} - -fn_info_game_jk2() { - # Config - if [ ! -f "${servercfgfullpath}" ]; then - rconpassword="${unavailable}" - servername="${unavailable}" - serverpassword="${unavailable}" - maxplayers="${zero}" - serverversion="${unavailable}" - else - rconpassword=$(grep "seta rconpassword" "${servercfgfullpath}" | sed -e 's/^[ \t]*//g' -e '/^\//d' -e 's/seta rconpassword//g' | tr -d '=\";,:' | sed -e 's/^[ \t]*//' -e 's/[ \t]*$//') - servername=$(grep "seta sv_hostname" "${servercfgfullpath}" | sed -e 's/^[ \t]*//g' -e '/^\//d' -e 's/seta sv_hostname//g' | tr -d '=\";,:' | sed -e 's/^[ \t]*//' -e 's/[ \t]*$//') - serverpassword=$(grep "seta g_password" "${servercfgfullpath}" | sed -e 's/^[ \t]*//g' -e '/^\//d' -e 's/seta g_password//g' | tr -d '=\";,:' | sed -e 's/^[ \t]*//' -e 's/[ \t]*$//') - maxplayers=$(grep "seta sv_maxclients" "${servercfgfullpath}" | grep -v "#" | tr -cd '[:digit:]') - serverversion=$(grep "seta mv_serverversion" "${servercfgfullpath}" | sed -e 's/^[ \t]*//g' -e '/^\//d' -e 's/seta mv_serverversion//g' | tr -d '=\";,:' | sed -e 's/^[ \t]*//' -e 's/[ \t]*$//') - - # Not set - rconpassword=${rconpassword:-"NOT SET"} - servername=${servername:-"NOT SET"} - serverpassword=${serverpassword:-"NOT SET"} - maxplayers=${maxplayers:-"0"} - serverversion=${serverversion:-"NOT SET"} - fi - - # Parameters - port=${port:-"0"} - queryport=${port} - defaultmap=${defaultmap:-"NOT SET"} -} - -fn_info_game_kf() { - # Config - if [ ! -f "${servercfgfullpath}" ]; then - servername="${unavailable}" - serverpassword="${unavailable}" - adminpassword="${unavailable}" - port="${zero}" - queryport="${zero}" - queryportgs="${zero}" - steamport="${zero}" - steammasterport="${zero}" - lanport="${zero}" - httpport="${zero}" - webadminenabled="${unavailable}" - webadminuser="${unavailable}" - webadminpass="${unavailable}" - else - servername=$(sed -nr 's/^ServerName=(.*)$/\1/p' "${servercfgfullpath}" | tr -d '=\";,:' | sed 's/\r$//') - serverpassword=$(sed -nr 's/^GamePassword=(.*)$/\1/p' "${servercfgfullpath}" | tr -d '=\";,:' | sed 's/\r$//') - adminpassword=$(sed -nr 's/^AdminPassword=(.*)$/\1/p' "${servercfgfullpath}" | tr -d '=\";,:' | sed 's/\r$//') - port=$(sed -nr 's/^Port=(.*)$/\1/p' "${servercfgfullpath}" | tr -cd '[:digit:]') - queryport=$((port + 1)) - queryportgs=$(sed -nr 's/^OldQueryPortNumber=(.*)$/\1/p' "${servercfgfullpath}" | tr -cd '[:digit:]') - steamport="20560" - steammasterport="28852" - lanport=$(grep "LANServerPort=" "${servercfgfullpath}" | tr -cd '[:digit:]') - httpport=$(sed -nr 's/^ListenPort=(.*)$/\1/p' "${servercfgfullpath}" | tr -cd '[:digit:]') - webadminenabled=$(sed -nr 's/^bEnabled=(.*)$/\1/p' "${servercfgfullpath}" | tr -d '=\";,:' | sed 's/\r$//') - webadminuser=$(sed -nr 's/^AdminName=(.*)$/\1/p' "${servercfgfullpath}" | tr -d '=\";,:' | sed 's/\r$//') - webadminpass="${adminpassword}" - - # Not set - servername=${servername:-"NOT SET"} - serverpassword=${serverpassword:-"NOT SET"} - adminpassword=${adminpassword:-"NOT SET"} - port=${port:-"0"} - queryport=${queryport:-"0"} - queryportgs=${queryportgs:-"0"} - steamport=${steamport:-"0"} - steammasterport=${steammasterport:-"0"} - lanport=${lanport:-"0"} - httpport=${httpport:-"0"} - webadminenabled=${webadminenabled:-"NOT SET"} - webadminuser=${webadminuser:-"NOT SET"} - webadminpass=${webadminpass:-"NOT SET"} - fi - - # Parameters - defaultmap=${defaultmap:-"NOT SET"} -} - -fn_info_game_kf2() { - # Config - if [ ! -f "${servercfgfullpath}" ]; then - servername="${unavailable}" - serverpassword="${unavailable}" - adminpassword="${unavailable}" - port=${zero} - queryport=${zero} - webadminenabled="${unavailable}" - httpport="${zero}" - webadminuser="${unavailable}" - webadminpass="${unavailable}" - else - servername=$(grep "ServerName" "${servercfgfullpath}" | sed -e 's/^[ \t]*//g' -e '/^#/d' -e 's/ServerName//g' | tr -d '=\";,:' | sed -e 's/^[ \t]*//' -e 's/[ \t]*$//') - serverpassword=$(grep "GamePassword" "${servercfgfullpath}" | sed -e 's/^[ \t]*//g' -e '/^#/d' -e 's/GamePassword//g' | tr -d '=\";,:' | sed -e 's/^[ \t]*//' -e 's/[ \t]*$//') - adminpassword=$(grep "AdminPassword" "${servercfgfullpath}" | sed -e 's/^[ \t]*//g' -e '/^#/d' -e 's/AdminPassword//g' | tr -d '=\";,:' | sed -e 's/^[ \t]*//' -e 's/[ \t]*$//') - port=$(grep "Port" "${servercfgdir}/LinuxServer-KFEngine.ini" | sed -e 's/^[ \t]*//g' | grep "^Port" | grep -v "#" | tr -cd '[:digit:]') - webadminenabled=$(grep "bEnabled" "${servercfgdir}/KFWeb.ini" | sed -e 's/^[ \t]*//g' -e '/^#/d' -e 's/bEnabled//g' | tr -d '=\";,:' | sed -e 's/^[ \t]*//' -e 's/[ \t]*$//') - httpport=$(grep "ListenPort" "${servercfgdir}/KFWeb.ini" | grep -v "#" | tr -cd '[:digit:]') - webadminuser="Admin" - webadminpass=$(grep "AdminPassword" "${servercfgfullpath}" | sed -e 's/^[ \t]*//g' -e '/^#/d' -e 's/AdminPassword//g' | tr -d '=\";,:' | sed -e 's/^[ \t]*//' -e 's/[ \t]*$//') - - # Not set - servername=${servername:-"NOT SET"} - serverpassword=${serverpassword:-"NOT SET"} - adminpassword=${adminpassword:-"NOT SET"} - port=${port:-"0"} - webadminenabled=${webadminenabled:-"NOT SET"} - httpport=${webadminport:-"0"} - webadminuser=${webadminuser:-"NOT SET"} - webadminpass=${webadminpass:-"NOT SET"} - fi - - # Parameters - queryport=${queryport:-"0"} - defaultmap=${defaultmap:-"NOT SET"} -} - -fn_info_game_lo() { - # Parameters - servername=${servername:-"NOT SET"} - port=${port:-"0"} - queryport=${queryport:-"0"} - maxplayers=${slots:-"0"} -} - -fn_info_game_mc() { - # Config - if [ ! -f "${servercfgfullpath}" ]; then - servername="${unavailable}" - rconpassword="${unavailable}" - rconport="${zero}" - maxplayers="${zero}" - port="${zero}" - queryport="${zero}" - queryenabled="${unavailable}" - gamemode="${unavailable}" - gameworld="${unavailable}" - else - servername=$(grep "motd" "${servercfgfullpath}" | sed -e 's/^[ \t]*//g' -e '/^#/d' -e 's/motd//g' | tr -d '=\";,:' | sed 's/\\u00A70//g;s/\\u00A71//g;s/\\u00A72//g;s/\\u00A73//g;s/\\u00A74//g;s/\\u00A75//g;s/\\u00A76//g;s/\\u00A77//g;s/\\u00A78//g;s/\\u00A79//g;s/\\u00A7a//g;s/\\u00A7b//g;s/\\u00A7c//g;s/\\u00A7d//g;s/\\u00A7e//g;s/\\u00A7f//g;s/\\u00A7l//g;s/\\u00A7o//g;s/\\u00A7n//g;s/\\u00A7m//g;s/\\u00A7k//g' | sed -e 's/^[ \t]*//' -e 's/[ \t]*$//') - rconpassword=$(grep "rcon.password" "${servercfgfullpath}" | sed -e 's/^[ \t]*//g' -e '/^#/d' -e 's/rcon.password//g' | tr -d '=\";,:' | sed -e 's/^[ \t]*//' -e 's/[ \t]*$//') - rconport=$(grep "rcon.port" "${servercfgfullpath}" | grep -v "#" | tr -cd '[:digit:]') - maxplayers=$(grep "max-players" "${servercfgfullpath}" | grep -v "#" | tr -cd '[:digit:]') - port=$(grep "server-port" "${servercfgfullpath}" | grep -v "#" | tr -cd '[:digit:]') - queryport=$(grep "query.port" "${servercfgfullpath}" | grep -v "#" | tr -cd '[:digit:]') - if [ -z "${queryport}" ]; then - queryport=${port} - fi - queryenabled=$(grep "enable-query" "${servercfgfullpath}" | sed -e 's/^[ \t]*//g' -e '/^#/d' -e 's/enable-query//g' | tr -d '=\";,:' | sed -e 's/^[ \t]*//' -e 's/[ \t]*$//') - gamemode=$(grep "gamemode" "${servercfgfullpath}" | grep -v "#" | tr -cd '[:digit:]') - gameworld=$(grep "level-name" "${servercfgfullpath}" | sed -e 's/^[ \t]*//g' -e '/^#/d' -e 's/level-name//g' | tr -d '=\";,:' | sed -e 's/^[ \t]*//' -e 's/[ \t]*$//') - configip=$(grep "server-ip" "${servercfgfullpath}" | sed -e 's/^[ \t]*//g' -e '/^--/d' -e 's/server-ip//g' | tr -d '=\";,:' | sed -e 's/^[ \t]*//' -e 's/[ \t]*$//') - - # Not set - servername=${servername:-"NOT SET"} - rconpassword=${rconpassword:-"NOT SET"} - rconport=${rconport:-"NOT SET"} - maxplayers=${maxplayers:-"0"} - port=${port:-"NOT SET"} - queryport=${queryport:-"NOT SET"} - queryenabled="${queryenabled:-"NOT SET"}" - gamemode=${gamemode:-"NOT SET"} - gameworld=${gameworld:-"NOT SET"} - configip=${configip:-"0.0.0.0"} - fi -} - -fn_info_game_mcb() { - # Config - if [ ! -f "${servercfgfullpath}" ]; then - servername="${unavailable}" - maxplayers="${zero}" - port="${zero}" - portipv6="${zero}" - queryport="${zero}" - gamemode="${unavailable}" - gameworld="${unavailable}" - else - servername=$(grep "server-name" "${servercfgfullpath}" | sed -e 's/^[ \t]*//g' -e '/^#/d' -e 's/server-name//g' | tr -d '=\";,:' | sed -e 's/^[ \t]*//' -e 's/[ \t]*$//') - maxplayers=$(grep "max-players" "${servercfgfullpath}" | grep -v "#" | tr -cd '[:digit:]') - port=$(grep "server-port\b" "${servercfgfullpath}" | grep -v "#" | tr -cd '[:digit:]') - portipv6=$(grep "server-portv6\b" "${servercfgfullpath}" | sed 's/v6//g' | grep -v "#" | tr -cd '[:digit:]') - queryport=${port} - gamemode=$(grep "gamemode" "${servercfgfullpath}" | sed -e 's/^[ \t]*//g' -e '/^#/d' -e 's/gamemode//g' | tr -d '=\";,:' | sed -e 's/^[ \t]*//' -e 's/[ \t]*$//') - gameworld=$(grep "level-name" "${servercfgfullpath}" | sed -e 's/^[ \t]*//g' -e '/^#/d' -e 's/level-name//g' | tr -d '=\";,:' | sed -e 's/^[ \t]*//' -e 's/[ \t]*$//') - - # Not set - servername=${servername:-"NOT SET"} - maxplayers=${maxplayers:-"0"} - port=${port:-"NOT SET"} - portipv6=${portipv6:-"NOT SET"} - queryport=${queryport:-"NOT SET"} - gamemode=${gamemode:-"NOT SET"} - gameworld=${gameworld:-"NOT SET"} - fi -} - -fn_info_game_mh() { - # Config - if [ ! -f "${servercfgfullpath}" ]; then - servername="${unavailable}" - serverpassword="${unavailable}" - rconpassword="${unavailable}" - maxplayers="${unavailable}" - else - servername=$(grep "ServerName" "${servercfgfullpath}" | awk -F '=' '{print $2}') - serverpassword=$(grep "ServerPassword" "${servercfgfullpath}" | awk -F '=' '{print $2}') - rconpassword=$(grep "AdminPassword" "${servercfgfullpath}" | awk -F '=' '{print $2}') - maxplayers=$(grep "MaxSlots" "${servercfgfullpath}" | awk -F '=' '{print $2}') - - # Not set - servername=${servername:-"NOT SET"} - serverpassword=${serverpassword:-"NOT SET"} - rconpassword=${rconpassword:-"NOT SET"} - maxplayers=${maxplayers:-"0"} - fi - - # Parameters - port=${port:-"0"} - queryport=${queryport:-"0"} - beaconport=${beaconport:-"0"} -} - -fn_info_game_mohaa() { - # Config - if [ ! -f "${servercfgfullpath}" ]; then - rconpassword="${unavailable}" - servername="${unavailable}" - serverpassword="${unavailable}" - maxplayers="${zero}" - else - rconpassword=$(grep "rconpassword" "${servercfgfullpath}" | sed -e 's/^[ \t]*//g' -e '/^\//d' -e 's/seta rconpassword//g' | tr -d '=\";,:' | sed -e 's/^[ \t]*//' -e 's/[ \t]*$//') - servername=$(grep "sv_hostname" "${servercfgfullpath}" | sed -e 's/^[ \t]*//g' -e '/^\//d' -e 's/seta sv_hostname//g' | tr -d '=\";,:' | sed -e 's/^[ \t]*//' -e 's/[ \t]*$//') - serverpassword=$(grep "g_password" "${servercfgfullpath}" | sed -e 's/^[ \t]*//g' -e '/^\//d' -e 's/seta g_password//g' | tr -d '=\";,:' | sed -e 's/^[ \t]*//' -e 's/[ \t]*$//') - maxplayers=$(grep "sv_maxclients" "${servercfgfullpath}" | grep -v "#" | tr -cd '[:digit:]') - - # Not set - rconpassword=${rconpassword:-"NOT SET"} - servername=${servername:-"NOT SET"} - serverpassword=${serverpassword:-"NOT SET"} - maxplayers=${maxplayers:-"0"} - fi - - # Parameters - port=${port:-"0"} - queryport=${port:-"0"} - defaultmap=${defaultmap:-"NOT SET"} -} - -fn_info_game_mom() { - # Config - if [ ! -f "${servercfgfullpath}" ]; then - servername="${unavailable}" - serverpassword="${unavailable}" - maxplayers="${zero}" - defaultmap="${unavailable}" - else - servername=$(grep "ServerName" "${servercfgfullpath}" | sed -e 's/^[ \t]*//g' -e '/^--/d' -e 's/ServerName//g' | tr -d '=\";,:' | sed -e 's/^[ \t]*//' -e 's/[ \t]*$//') - serverpassword=$(grep "ServerPassword" "${servercfgfullpath}" | sed -e 's/^ *//g' -e '/^--/d' -e 's/ServerPassword//g' | tr -d '=\";,:' | sed -e 's/^[ \t]*//' -e 's/[ \t]*$//') - maxplayers=$(grep "MaxPlayers" "${servercfgfullpath}" | sed -e 's/^ *//g' -e '/^--/d' -e 's/MaxPlayers//g' | tr -d '=\";,:' | sed -e 's/^[ \t]*//' -e 's/[ \t]*$//') - defaultmap=$(grep "MapName" "${servercfgfullpath}" | sed -e 's/^ *//g' -e '/^--/d' -e 's/MapName//g' | tr -d '=\";,:' | sed -e 's/^[ \t]*//' -e 's/[ \t]*$//') - - # Not set - servername=${servername:-"NOT SET"} - serverpassword=${serverpassword:-"NOT SET"} - maxplayers=${maxplayers:-"0"} - defaultmap=${defaultmap:-"NOT SET"} - fi - - # Parameters - port=${port:-"7777"} - beaconport=${queryport:-"15000"} -} - -fn_info_game_mta() { - # Config - if [ ! -f "${servercfgfullpath}" ]; then - port=${zero} - queryport=${zero} - httpport=${zero} - ase="${unavailable}" - servername="${unavailable}" - serverpassword="${unavailable}" - maxplayers="${zero}" - else - port=$(grep -m 1 "serverport" "${servercfgfullpath}" | sed -e 's/^[ \t]*//g' -e '/^\//d' -e 's///g' | sed -e 's/^[ \t]*//' -e 's/[ \t]*$//' | cut -f1 -d "<" | tr -cd '[:digit:]') - queryport=$((port + 123)) - httpport=$(grep -m 1 "httpport" "${servercfgfullpath}" | sed -e 's/^[ \t]*//g' -e '/^\//d' -e 's///g' | sed -e 's/^[ \t]*//' -e 's/[ \t]*$//' | cut -f1 -d "<" | tr -cd '[:digit:]') - servername=$(grep -m 1 "servername" "${servercfgfullpath}" | sed -e 's/^[ \t]*//g' -e '/^\//d' -e 's///g' | sed -e 's/^[ \t]*//' -e 's/[ \t]*$//' | cut -f1 -d "<") - serverpassword=$(grep -m 1 "password" "${servercfgfullpath}" | sed -e 's/^[ \t]*//g' -e '/^\//d' -e 's///g' | sed -e 's/^[ \t]*//' -e 's/[ \t]*$//' | cut -f1 -d "<") - maxplayers=$(grep -m 1 "maxplayers" "${servercfgfullpath}" | sed -e 's/^[ \t]*//g' -e '/^\//d' -e 's///g' | sed -e 's/^[ \t]*//' -e 's/[ \t]*$//' | cut -f1 -d "<" | tr -cd '[:digit:]') - ase=$(grep -m 1 "ase" "${servercfgfullpath}" | sed -e 's/^[ \t]*//g' -e '/^\//d' -e 's///g' | sed -e 's/^[ \t]*//' -e 's/[ \t]*$//' | cut -f1 -d "<" | tr -cd '[:digit:]') - if [ "${ase}" == "1" ]; then - ase="Enabled" - else - ase="Disabled" - fi - - # Not set - port=${port:-"22003"} - queryport=${queryport:-"2326"} - httpport=${httpport:-"22005"} - ase=${ase:-"Disabled"} - servername=${servername:-"NOT SET"} - serverpassword=${serverpassword:-"NOT SET"} - maxplayers=${maxplayers:-"0"} - fi - -} - -fn_info_game_nec() { - # Config - if [ ! -f "${servercfgfullpath}" ]; then - maxplayers=${maxplayers:-"0"} - port=${port:-"0"} - servername="Necesse" - serverpassword="${unavailable}" - else - maxplayers=$(grep "slots" "${servercfgfullpath}" | cut -f1 -d "/" | tr -cd '[:digit:]') - port=$(grep "port" "${servercfgfullpath}" | cut -f1 -d "/" | tr -cd '[:digit:]') - serverpassword=$(grep "password" "${servercfgfullpath}" | cut -f1 -d "/" | tr -cd '[:digit:]') - - # Not set - maxplayers=${maxplayers:-"0"} - port=${port:-"0"} - servername="Necesse Port ${port}" - serverpassword=${serverpassword:-"NOT SET"} - fi -} - -fn_info_game_onset() { - # Config - if [ ! -f "${servercfgfullpath}" ]; then - servername="${unavailable}" - maxplayers="${zero}" - port="${zero}" - httpport="${zero}" - queryport="${zero}" - else - servername=$(grep -v "servername_short" "${servercfgfullpath}" | grep "servername" | sed -e 's/^[ \t]*//g' -e '/^#/d' -e 's/servername//g' | tr -d '=\";,:' | sed -e 's/^[ \t]*//' -e 's/[ \t]*$//') - maxplayers=$(grep "maxplayers" "${servercfgfullpath}" | grep -v "#" | tr -cd '[:digit:]') - port=$(grep "port" "${servercfgfullpath}" | grep -v "#" | tr -cd '[:digit:]') - httpport=$((port - 2)) - queryport=$((port - 1)) - - # Not set - servername=${servername:-"NOT SET"} - maxplayers=${maxplayers:-"0"} - port=${port:-"NOT SET"} - httpport=${httpport:-"NOT SET"} - queryport=${queryport:-"NOT SET"} - fi -} - -fn_info_game_pc() { - # Config - if [ ! -f "${servercfgfullpath}" ]; then - servername="${unavailable}" - serverpassword="${unavailable}" - maxplayers="${zero}" - port="${zero}" - queryport="${zero}" - steamport="${zero}" - else - servername=$(grep "name" "${servercfgfullpath}" | sed -e 's/^[ \t]*//g' -e '/^\//d' -e 's/name//g' | tr -d '=\";,:' | sed -e 's/^[ \t]*//' -e 's/[ \t]*$//') - serverpassword=$(grep "password " "${servercfgfullpath}" | sed -e 's/^[ \t]*//g' -e '/^\//d' -e 's/password//g' | tr -d '=\";,:' | sed -e 's/^[ \t]*//' -e 's/[ \t]*$//') - maxplayers=$(grep "MaxPlayers" "${servercfgfullpath}" | grep -v "//" | tr -cd '[:digit:]') - port=$(grep "hostPort" "${servercfgfullpath}" | grep -v "//" | tr -cd '[:digit:]') - queryport=$(grep "queryPort" "${servercfgfullpath}" | grep -v "//" | tr -cd '[:digit:]') - steamport=$(grep "steamPort" "${servercfgfullpath}" | grep -v "//" | tr -cd '[:digit:]') - - # Not set - servername=${servername:-"NOT SET"} - serverpassword=${serverpassword:-"NOT SET"} - maxplayers=${maxplayers:-"0"} - port=${port:-"NOT SET"} - queryport=${queryport:-"NOT SET"} - steamport=${steamport:-"NOT SET"} - fi -} - -fn_info_game_pc2() { - # Config - if [ ! -f "${servercfgfullpath}" ]; then - servername="${unavailable}" - serverpassword="${unavailable}" - maxplayers="${zero}" - port="${zero}" - queryport="${zero}" - steamport="${zero}" - else - servername=$(grep "name" "${servercfgfullpath}" | sed -e 's/^[ \t]*//g' -e '/^\//d' -e 's/name//g' | tr -d '=\";,:' | sed -e 's/^[ \t]*//' -e 's/[ \t]*$//') - serverpassword=$(grep "password " "${servercfgfullpath}" | sed -e 's/^[ \t]*//g' -e '/^\//d' -e 's/password//g' | tr -d '=\";,:' | sed -e 's/^[ \t]*//' -e 's/[ \t]*$//') - maxplayers=$(grep "MaxPlayers" "${servercfgfullpath}" | grep -v "//" | tr -cd '[:digit:]') - port=$(grep "hostPort" "${servercfgfullpath}" | grep -v "//" | tr -cd '[:digit:]') - queryport=$(grep "queryPort" "${servercfgfullpath}" | grep -v "//" | tr -cd '[:digit:]') - steamport=$(grep "steamPort" "${servercfgfullpath}" | grep -v "//" | tr -cd '[:digit:]') - - # Not set - servername=${servername:-"NOT SET"} - serverpassword=${serverpassword:-"NOT SET"} - maxplayers=${maxplayers:-"0"} - port=${port:-"NOT SET"} - queryport=${queryport:-"NOT SET"} - steamport=${steamport:-"NOT SET"} - fi -} - -fn_info_game_pstbs() { - # Config - if [ ! -f "${servercfgfullpath}" ]; then - servername="${unavailable}" - maxplayers="${unavailable}" - reservedslots="${unavailable}" - else - servername=$(grep "ServerName=" "${servercfgfullpath}" | sed -e 's/^[ \t]//g' -e '/^#/d' -e 's/ServerName//g' | tr -d '=";,:' | sed -e 's/^[ \t]//' -e 's/[ \t]*$//') - maxplayers=$(grep "MaxPlayers=" "${servercfgfullpath}" | tr -cd '[:digit:]') - reservedslots=$(grep "NumReservedSlots=" "${servercfgfullpath}" | tr -cd '[:digit:]') - - # Not set - servername=${servername:-"NOT SET"} - maxplayers=${maxplayers:-"0"} - reservedslots=${reservedslots:-"0"} - fi - - if [ ! -f "${servercfgdir}/Rcon.cfg" ]; then - rconport=${unavailable} - rconpassword=${unavailable} - else - rconport=$(grep "Port=" "${servercfgdir}/Rcon.cfg" | tr -cd '[:digit:]') - rconpassword=$(grep "Password=" "${servercfgdir}/Rcon.cfg" | sed -e 's/^[ \t]*//g' -e '/^\//d' -e 's/Password//g' | tr -d '=\";,:' | sed -e 's/^[ \t]*//' -e 's/[ \t]*$//') - - # Not set - rconport=${rconport:-"0"} - if [ -z "${rconpassword}" ] || [ ${#rconpassword} == 1 ]; then - rconpassword="NOT SET" - fi - fi - - # Parameters - port=${port:-"0"} - if [ -z "${queryport}" ]; then - queryport=${port:-"0"} - fi - rconport=${rconport:-"0"} - randommap=${randommap:-"NOT SET"} - maxplayers=${maxplayers:-"0"} - reservedslots=${reservedslots:-"0"} -} - -fn_info_game_pvr() { - # Config - if [ ! -f "${servercfgfullpath}" ]; then - servername="${unavailable}" - maxplayers="${unavailable}" - else - servername=$(grep "ServerName" "${servercfgfullpath}" | awk -F '=' '{print $2}') - maxplayers=$(grep "MaxPlayers" "${servercfgfullpath}" | awk -F '=' '{print $2}') - - # Not set - servername=${servername:-"NOT SET"} - maxplayers=${maxplayers:-"0"} - fi - - # Parameters - port=${port:-"0"} - port401=$((port + 400)) - queryport=${port:-"0"} -} - -fn_info_game_prism3d() { - # Config - if [ ! -f "${servercfgfullpath}" ]; then - maxplayers="${unavailable}" - port="${zero}" - queryport="${zero}" - servername="${unavailable}" - serverpassword="${unavailable}" - else - maxplayers=$(sed -nr 's/^\s*max_players\s*:\s*([0-9]+)/\1/p' "${servercfgfullpath}") - port=$(sed -nr 's/^\s*connection_dedicated_port\s*:\s*([0-9]+)/\1/p' "${servercfgfullpath}") - queryport=$(sed -nr 's/^\s*query_dedicated_port\s*:\s*([0-9]+)/\1/p' "${servercfgfullpath}") - servername=$(sed -nr 's/^\s*lobby_name\s*:\s*"?([^"\r\n]+)"?/\1/p' "${servercfgfullpath}") - serverpassword=$(sed -nr 's/^\s*password\s*:\s*"(.*)"/\1/p' "${servercfgfullpath}") - - # Not set - maxplayers=${maxplayers:-"0"} - port=${port:-"27015"} - queryport=${queryport:-"27016"} - servername=${servername:-"NOT SET"} - serverpassword=${serverpassword:-"NOT SET"} - fi -} - -fn_info_game_pz() { - # Config - if [ ! -f "${servercfgfullpath}" ]; then - servername="${unavailable}" - serverpassword="${unavailable}" - rconpassword="${unavailable}" - maxplayers="${zero}" - port="${zero}" - queryport="${zero}" - gameworld="${unavailable}" - else - servername=$(grep "PublicName" "${servercfgfullpath}" | sed -e 's/^[ \t]*//g' -e '/^#/d' -e 's/PublicName//g' | tr -d '=\";,:' | sed -e 's/^[ \t]*//' -e 's/[ \t]*$//') - serverpassword=$(grep "Password" "${servercfgfullpath}" | sed -e 's/^[ \t]*//g' | grep "^Password" | sed -e '/^#/d' -e 's/Password//g' | tr -d '=\";,:' | sed -e 's/^[ \t]*//' -e 's/[ \t]*$//') - rconpassword=$(grep "RCONPassword" "${servercfgfullpath}" | sed -e 's/^[ \t]*//g' -e '/^#/d' -e 's/RCONPassword//g' | tr -d '=\";,:' | sed -e 's/^[ \t]*//' -e 's/[ \t]*$//') - maxplayers=$(grep "MaxPlayers" "${servercfgfullpath}" | grep -v "#" | tr -cd '[:digit:]') - port=$(grep "DefaultPort" "${servercfgfullpath}" | tr -cd '[:digit:]') - queryport=${port} - gameworld=$(grep "Map" "${servercfgfullpath}" | sed -e 's/^[ \t]*//g' | grep "^Map" | sed -e '/^#/d' -e 's/Map//g' | tr -d '=\";' | sed -e 's/^[ \t]*//' -e 's/[ \t]*$//') - - # Not set - servername=${servername:-"NOT SET"} - serverpassword=${serverpassword:-"NOT SET"} - rconpassword=${rconpassword:-"NOT SET"} - maxplayers=${maxplayers:-"0"} - port=${port:-"0"} - queryport=${queryport:-"0"} - gameworld=${gameworld:-"NOT SET"} - fi - - # Parameters - adminpassword=${adminpassword:-"NOT SET"} - -} - -fn_info_game_q2() { - # Config - if [ ! -f "${servercfgfullpath}" ]; then - rconpassword="${unavailable}" - servername="${unavailable}" - maxplayers="${zero}" - else - rconpassword=$(grep "rcon_password" "${servercfgfullpath}" | sed -e 's/^[ \t]*//g' -e '/^\//d' -e 's/set rcon_password//g' | tr -d '=\";,:' | sed -e 's/^[ \t]*//' -e 's/[ \t]*$//') - servername=$(grep "hostname" "${servercfgfullpath}" | sed -e 's/^[ \t]*//g' -e '/^\//d' -e 's/set hostname//g' | tr -d '=\";,:' | sed -e 's/^[ \t]*//' -e 's/[ \t]*$//') - maxplayers=$(grep "maxclients" "${servercfgfullpath}" | grep -v "#" | tr -cd '[:digit:]') - - # Not set - rconpassword=${rconpassword:-"NOT SET"} - servername=${servername:-"NOT SET"} - maxplayers=${maxplayers:-"0"} - fi - - # Parameters - port=${port:-"0"} - queryport=${port} - defaultmap=${defaultmap:-"NOT SET"} -} - -fn_info_game_q3() { - # Config - if [ ! -f "${servercfgfullpath}" ]; then - rconpassword="${unavailable}" - servername="${unavailable}" - serverpassword="${unavailable}" - maxplayers="${zero}" - else - rconpassword=$(grep "zmq_rcon_password" "${servercfgfullpath}" | sed -e 's/^[ \t]*//g' -e '/^\//d' -e 's/set zmq_rcon_password//g' | tr -d '=\";,:' | sed -e 's/^[ \t]*//' -e 's/[ \t]*$//') - servername=$(grep "sv_hostname" "${servercfgfullpath}" | sed -e 's/^[ \t]*//g' -e '/^\//d' -e 's/set sv_hostname//g' | tr -d '=\";,:' | sed -e 's/^[ \t]*//' -e 's/[ \t]*$//') - serverpassword=$(grep "rconpassword" "${servercfgfullpath}" | sed -e 's/^[ \t]*//g' -e '/^\//d' -e 's/set rconpassword//g' | tr -d '=\";,:' | sed -e 's/^[ \t]*//' -e 's/[ \t]*$//') - maxplayers=$(grep "sv_maxclients" "${servercfgfullpath}" | grep -v "#" | tr -cd '[:digit:]') - - # Not set - rconpassword=${rconpassword:-"NOT SET"} - servername=${servername:-"NOT SET"} - serverpassword=${serverpassword:-"NOT SET"} - maxplayers=${maxplayers:-"0"} - fi - - # Parameters - port=${port:-"0"} - queryport=${port} - defaultmap=${defaultmap:-"NOT SET"} -} - -fn_info_game_ql() { - # Config - if [ ! -f "${servercfgfullpath}" ]; then - rconpassword="${unavailable}" - servername="${unavailable}" - serverpassword="${unavailable}" - maxplayers="${zero}" - port="${zero}" - queryport="${zero}" - rconport="${zero}" - statsport="${zero}" - else - rconpassword=$(grep "zmq_rcon_password" "${servercfgfullpath}" | sed -e 's/^[ \t]*//g' -e '/^\//d' -e 's/set zmq_rcon_password//g' | tr -d '=\";,:' | sed -e 's/^[ \t]*//' -e 's/[ \t]*$//') - servername=$(grep "sv_hostname" "${servercfgfullpath}" | sed -e 's/^[ \t]*//g' -e '/^\//d' -e 's/set sv_hostname//g' | tr -d '=\";,:' | sed -e 's/^[ \t]*//' -e 's/[ \t]*$//') - serverpassword=$(grep "g_password" "${servercfgfullpath}" | sed -e 's/^[ \t]*//g' -e '/^\//d' -e 's/set g_password//g' | tr -d '=\";,:' | sed -e 's/^[ \t]*//' -e 's/[ \t]*$//') - maxplayers=$(grep "sv_maxClients" "${servercfgfullpath}" | grep -v "//" | tr -cd '[:digit:]') - port=$(grep "net_port" "${servercfgfullpath}" | grep -v "//" | tr -cd '[:digit:]') - queryport=${port} - rconport=$(grep "zmq_rcon_port" "${servercfgfullpath}" | grep -v "//" | tr -cd '[:digit:]') - statsport=$(grep "zmq_stats_port" "${servercfgfullpath}" | grep -v "//" | tr -cd '[:digit:]') - configip=$(grep "set net_ip" "${servercfgfullpath}" | sed -e 's/^[ \t]*//g' -e '/^\//d' -e 's/set net_ip//g' | tr -d '=\";,:' | sed -e 's/^[ \t]*//' -e 's/[ \t]*$//') - - # Not set - rconpassword=${rconpassword:-"NOT SET"} - servername=${servername:-"NOT SET"} - serverpassword=${serverpassword:-"NOT SET"} - maxplayers=${maxplayers:-"0"} - port=${port:-"0"} - queryport=${queryport:-"0"} - rconport=${rconport:-"0"} - statsport=${statsport:-"0"} - configip=${configip:-"0.0.0.0"} - fi -} - -fn_info_game_qw() { - # Config - if [ ! -f "${servercfgfullpath}" ]; then - rconpassword="${unavailable}" - servername="${unavailable}" - serverpassword="${unavailable}" - maxplayers="${zero}" - port="${zero}" - else - rconpassword=$(grep "rcon_password" "${servercfgfullpath}" | sed -e 's/^[ \t]*//g' -e '/^\//d' -e 's/set rcon_password//g' | tr -d '=\";,:' | sed -e 's/^[ \t]*//' -e 's/[ \t]*$//' | cut -f1 -d "/") - servername=$(grep "hostname" "${servercfgfullpath}" | sed -e 's/^[ \t]*//g' -e '/^\//d' -e 's/set hostname//g' | tr -d '=\";,:' | sed -e 's/^[ \t]*//' -e 's/[ \t]*$//' | cut -f1 -d "/") - maxplayers=$(grep "maxclients" "${servercfgfullpath}" | grep -v "#" | tr -cd '[:digit:]') - - # Not set - rconpassword=${rconpassword:-"NOT SET"} - servername=${servername:-"NOT SET"} - maxplayers=${maxplayers:-"0"} - fi - - # Parameters - port=${port:-"0"} - queryport=${port} -} - -fn_info_game_ro() { - # Config - if [ ! -f "${servercfgfullpath}" ]; then - servername="${unavailable}" - serverpassword="${unavailable}" - adminpassword="${unavailable}" - port="${zero}" - queryport="${zero}" - steamport="${zero}" - steammasterport="${zero}" - lanport="${zero}" - httpport="${zero}" - webadminenabled="${unavailable}" - webadminuser="${unavailable}" - webadminpass="${unavailable}" - else - servername=$(sed -nr 's/^ServerName=(.*)$/\1/p' "${servercfgfullpath}" | tr -d '=\";,:' | sed 's/\r$//') - serverpassword=$(sed -nr 's/^GamePassword=(.*)$/\1/p' "${servercfgfullpath}" | tr -d '=\";,:' | sed 's/\r$//') - adminpassword=$(sed -nr 's/^AdminPassword=(.*)$/\1/p' "${servercfgfullpath}" | tr -d '=\";,:' | sed 's/\r$//') - port=$(sed -nr 's/^Port=(.*)$/\1/p' "${servercfgfullpath}" | tr -cd '[:digit:]') - queryport=$((port + 1)) - steamport="20610" - steammasterport="28902" - lanport=$(grep "LANServerPort=" "${servercfgfullpath}" | tr -cd '[:digit:]') - httpport=$(sed -nr 's/^ListenPort=(.*)$/\1/p' "${servercfgfullpath}" | tr -cd '[:digit:]') - webadminenabled=$(sed -nr 's/^bEnabled=(.*)$/\1/p' "${servercfgfullpath}" | tr -d '=\";,:' | sed 's/\r$//') - webadminuser=$(sed -nr 's/^AdminName=(.*)$/\1/p' "${servercfgfullpath}" | tr -d '=\";,:' | sed 's/\r$//') - webadminpass="${adminpassword}" - - # Not set - servername=${servername:-"NOT SET"} - serverpassword=${serverpassword:-"NOT SET"} - adminpassword=${adminpassword:-"NOT SET"} - port=${port:-"0"} - queryport=${queryport:-"0"} - steamport=${steamport:-"0"} - steammasterport=${steammasterport:-"0"} - lanport=${lanport:-"0"} - httpport=${httpport:-"0"} - webadminenabled=${webadminenabled:-"NOT SET"} - webadminuser=${webadminuser:-"NOT SET"} - webadminpass=${webadminpass:-"NOT SET"} - fi - - # Parameters - defaultmap=${defaultmap:-"NOT SET"} -} - -fn_info_game_rtcw() { - # Config - if [ ! -f "${servercfgfullpath}" ]; then - rconpassword="${unavailable}" - servername="${unavailable}" - serverpassword="${unavailable}" - maxplayers="${zero}" - else - rconpassword=$(grep "rconpassword" "${servercfgfullpath}" | sed -e 's/^[ \t]*//g' -e '/^\//d' -e 's/set rconpassword//g' | tr -d '=\";,:' | sed -e 's/^[ \t]*//' -e 's/[ \t]*$//') - servername=$(grep "sv_hostname" "${servercfgfullpath}" | sed -e 's/^[ \t]*//g' -e '/^\//d' -e 's/set sv_hostname//g' | tr -d '=\";,:' | sed -e 's/^[ \t]*//' -e 's/[ \t]*$//') - serverpassword=$(grep "g_password" "${servercfgfullpath}" | sed -e 's/^[ \t]*//g' -e '/^\//d' -e 's/set g_password//g' | tr -d '=\";,:' | sed -e 's/^[ \t]*//' -e 's/[ \t]*$//') - maxplayers=$(grep "sv_maxclients" "${servercfgfullpath}" | grep -v "#" | tr -cd '[:digit:]') - - # Not set - rconpassword=${rconpassword:-"NOT SET"} - servername=${servername:-"NOT SET"} - serverpassword=${serverpassword:-"NOT SET"} - maxplayers=${maxplayers:-"0"} - fi - - # Parameters - port=${port:-"0"} - queryport=${port:-"0"} - defaultmap=${defaultmap:-"NOT SET"} -} - -fn_info_game_rust() { - # Parameters - servername=${servername:-"NOT SET"} - port=${port:-"0"} - queryport=${queryport:-"0"} - appport=${appport:-"0"} - rconport=${rconport:-"0"} - gamemode=${gamemode:-"NOT SET"} - maxplayers=${maxplayers:-"0"} - rconpassword=${rconpassword:-"NOT SET"} - rconweb=${rconweb:-"NOT SET"} - tickrate=${tickrate:-"0"} - saveinterval=${saveinterval:-"0"} - serverlevel=${serverlevel:-"NOT SET"} - customlevelurl=${customlevelurl:-"NOT SET"} - worldsize=${worldsize:-"0"} - if [ -n "${seed}" ]; then - seed=${seed:-"0"} - elif [ -f "${datadir}/${selfname}-seed.txt" ]; then - seed=$(cat "${datadir}/${selfname}-seed.txt") - else - seed="0" - fi - salt=${salt:-"0"} -} - -fn_info_game_rw() { - # Config - if [ ! -f "${servercfgfullpath}" ]; then - servername="${unavailable}" - serverpassword="${unavailable}" - rconpassword="${unavailable}" - rconport="${zero}" - maxplayers="${zero}" - port="${zero}" - port2="${zero}" - port3="${zero}" - port4="${zero}" - queryport="${zero}" - gamemode="${unavailable}" - gameworld="${unavailable}" - else - servername=$(grep "server_name" "${servercfgfullpath}" | sed -e 's/^[ \t]*//g' -e '/^#/d' -e 's/server_name//g' | tr -d '=\";,:' | sed -e 's/^[ \t]*//' -e 's/[ \t]*$//') - serverpassword=$(grep "server_password" "${servercfgfullpath}" | sed -e 's/^[ \t]*//g' -e '/^#/d' -e 's/server_password//g' | tr -d '=\";,:' | sed -e 's/^[ \t]*//' -e 's/[ \t]*$//') - rconpassword=$(grep "rcon_password" "${servercfgfullpath}" | sed -e 's/^[ \t]*//g' -e '/^#/d' -e 's/rcon_password//g' | tr -d '=\";,:' | sed -e 's/^[ \t]*//' -e 's/[ \t]*$//') - rconport=$(grep "rcon_port" "${servercfgfullpath}" | grep -v "#" | tr -cd '[:digit:]') - maxplayers=$(grep "settings_max_players" "${servercfgfullpath}" | grep -v "#" | tr -cd '[:digit:]') - port=$(grep "server_port" "${servercfgfullpath}" | grep -v "database_mysql_server_port" | grep -v "#" | tr -cd '[:digit:]') - port2=$((port + 1)) - port3=$((port + 2)) - port4=$((port + 3)) - queryport="${port}" - httpqueryport=$((port - 1)) - gamemode=$(grep "settings_default_gamemode=" "${servercfgfullpath}" | sed -e 's/^[ \t]*//g' -e '/^#/d' -e 's/settings_default_gamemode//g' | tr -d '=\";,:' | sed -e 's/^[ \t]*//' -e 's/[ \t]*$//') - gameworld=$(grep "server_world_name" "${servercfgfullpath}" | sed -e 's/^[ \t]*//g' -e '/^#/d' -e 's/server_world_name//g' | tr -d '=\";,:' | sed -e 's/^[ \t]*//' -e 's/[ \t]*$//') - configip=$(grep "server_ip" "${servercfgfullpath}" | grep -v "database_mysql_server_ip" | sed -e 's/^[ \t]*//g' -e '/^--/d' -e 's/server_ip//g' | tr -d '=\";,:' | sed -e 's/^[ \t]*//' -e 's/[ \t]*$//') - - # Not set - servername=${servername:-"NOT SET"} - serverpassword=${serverpassword:-"NOT SET"} - rconpassword=${rconpassword:-"NOT SET"} - rconport=${rconport:-"NOT SET"} - maxplayers=${maxplayers:-"0"} - port=${port:-"0"} - port2=${port2:-"0"} - port3=${port3:-"0"} - port4=${port4:-"0"} - queryport=${queryport:-"0"} - httpqueryport=${httpport:-"0"} - gamemode=${gamemode:-"NOT SET"} - gameworld=${gameworld:-"NOT SET"} - configip=${configip:-"0.0.0.0"} - fi -} - -fn_info_game_samp() { - # Config - if [ ! -f "${servercfgfullpath}" ]; then - servername="unnamed server" - rconpassword="${unavailable}" - port="7777" - rconport="${port}" - maxplayers="50" - else - servername=$(grep "hostname" "${servercfgfullpath}" | sed -e 's/^[ \t]*//g' -e '/^\//d' -e 's/hostname//g' | tr -d '=\";,:' | sed -e 's/^[ \t]*//' -e 's/[ \t]*$//') - rconpassword=$(grep "rcon_password" "${servercfgfullpath}" | sed -e 's/^[ \t]*//g' -e '/^#/d' -e 's/^rcon_password//g' | tr -d '=\";,:' | sed -e 's/^[ \t]*//' -e 's/[ \t]*$//') - port=$(grep "port" "${servercfgfullpath}" | grep -v "#" | tr -cd '[:digit:]') - queryport=${port} - rconport=${port} - maxplayers=$(grep "maxplayers" "${servercfgfullpath}" | grep -v "#" | tr -cd '[:digit:]') - - # Not set - servername=${servername:-"NOT SET"} - rconpassword=${rconpassword:-"NOT SET"} - port=${port:-"7777"} - queryport=${port:-"7777"} - rconport=${rconport:-"7777"} - maxplayers=${maxplayers:-"12"} - fi -} - -fn_info_game_sb() { - # Config - if [ ! -f "${servercfgfullpath}" ]; then - servername="${unavailable}" - queryenabled="${unavailable}" - rconenabled="${unavailable}" - rconpassword="${unavailable}" - port="21025" - queryport="21025" - rconport="21026" - maxplayers="8" - else - servername=$(grep "serverName" "${servercfgfullpath}" | sed -e 's/^[ \t]*//g' -e 's/serverName//g' | tr -d '=\";,:' | sed -e 's/^[ \t]*//' -e 's/[ \t]*$//') - queryenabled=$(grep "runQueryServer" "${servercfgfullpath}" | sed -e 's/^[ \t]*//g' -e 's/runQueryServer//g' | tr -d '=\";,:' | sed -e 's/^[ \t]*//' -e 's/[ \t]*$//') - rconenabled=$(grep "runRconServer" "${servercfgfullpath}" | sed -e 's/^[ \t]*//g' -e 's/runRconServer//g' | tr -d '=\";,:' | sed -e 's/^[ \t]*//' -e 's/[ \t]*$//') - rconpassword=$(grep "rconServerPassword" "${servercfgfullpath}" | sed -e 's/^[ \t]*//g' -e 's/rconServerPassword//g' | tr -d '=\";,:' | sed -e 's/^[ \t]*//' -e 's/[ \t]*$//') - port=$(grep "gameServerPort" "${servercfgfullpath}" | tr -cd '[:digit:]') - queryport=$(grep "queryServerPort" "${servercfgfullpath}" | tr -cd '[:digit:]') - rconport=$(grep "rconServerPort" "${servercfgfullpath}" | tr -cd '[:digit:]') - maxplayers=$(grep "maxPlayers" "${servercfgfullpath}" | tr -cd '[:digit:]') - - # Not set - servername=${servername:-"NOT SET"} - queryenabled=${queryenabled:-"NOT SET"} - rconenabled=${rconenabled:-"NOT SET"} - rconpassword=${rconpassword:-"NOT SET"} - port=${port:-"21025"} - queryport=${queryport:-"21025"} - rconport=${rconport:-"21026"} - maxplayers=${maxplayers:-"8"} - fi -} - -fn_info_game_sbots() { - # Config - if [ ! -f "${servercfgfullpath}" ]; then - servername="${unavailable}" - maxplayers="${unavailable}" - else - servername=$(grep "ServerName=" "${servercfgfullpath}" | sed -e 's/^[ \t]//g' -e '/^#/d' -e 's/ServerName//g' | tr -d '=";,:' | sed -e 's/^[ \t]//' -e 's/[ \t]*$//') - maxplayers=$(grep "MaxPlayers=" "${servercfgfullpath}" | tr -cd '[:digit:]') - - # Not set - servername=${servername:-"NOT SET"} - maxplayers=${maxplayers:-"0"} - fi - - # Parameters - port=${port:-"0"} - queryport=${queryport:-"0"} - servername=${servername:-"NOT SET"} - serverpassword=${serverpassword:-"NOT SET"} - defaultmap=${defaultmap:-"NOT SET"} - maxplayers=${maxplayers:-"0"} -} - -fn_info_game_scpsl() { - # Config - if [ ! -f "${servercfgfullpath}" ]; then - servername=${servername:-"NOT SET"} - maxplayers=${maxplayers:-"0"} - configip=${configip:-"0.0.0.0"} - tickrate=${tickrate:-"NOT SET"} - adminpassword=${adminpassword:-"NOT SET"} - else - servername=$(sed -nr 's/^server_name: (.*)$/\1/p' "${servercfgfullpath}") - maxplayers=$(sed -nr 's/^max_players: (.*)$/\1/p' "${servercfgfullpath}") - configip=$(sed -nr 's/^ipv4_bind_ip: (.*)$/\1/p' "${servercfgfullpath}") - tickrate=$(sed -nr 's/^server_tickrate: (.*)$/\1/p' "${servercfgfullpath}") - adminpassword=$(sed -nr 's/^administrator_query_password: (.*)$/\1/p' "${servercfgfullpath}") - fi - - # Parameters - port=${port:-"0"} - queryport=${port} -} - -fn_info_game_sdtd() { - # Config - if [ ! -f "${servercfgfullpath}" ]; then - servername="${unavailable}" - serverpassword="${unavailable}" - port="${zero}" - port3="${zero}" - queryport="${zero}" - webadminenabled="${unavailable}" - webadminport="${zero}" - webadminpass="${unavailable}" - telnetenabled="${unavailable}" - telnetport="${zero}" - telnetpass="${unavailable}" - telnetip="${unavailable}" - maxplayers="${unavailable}" - gamemode="${unavailable}" - gameworld="${unavailable}" - else - servername=$(grep "ServerName" "${servercfgfullpath}" | sed 's/^.*value="//' | cut -f1 -d"\"") - serverpassword=$(grep "ServerPassword" "${servercfgfullpath}" | sed 's/^.*value="//' | cut -f1 -d"\"") - port=$(grep "ServerPort" "${servercfgfullpath}" | grep -Eo 'value="[0-9]+"' | tr -cd '[:digit:]') - port3=$((port + 2)) - queryport=${port:-"0"} - webadminenabled=$(grep "ControlPanelEnabled" "${servercfgfullpath}" | sed 's/^.*value="//' | cut -f1 -d"\"") - webadminport=$(grep "ControlPanelPort" "${servercfgfullpath}" | tr -cd '[:digit:]') - webadminpass=$(grep "ControlPanelPassword" "${servercfgfullpath}" | sed 's/^.*value="//' | cut -f1 -d"\"") - telnetenabled=$(grep "TelnetEnabled" "${servercfgfullpath}" | sed 's/^.*value="//' | cut -f1 -d"\"") - telnetport=$(grep "TelnetPort" "${servercfgfullpath}" | tr -cd '[:digit:]') - telnetpass=$(grep "TelnetPassword" "${servercfgfullpath}" | sed 's/^.*value="//' | cut -f1 -d"\"") - # Telnet IP will be localhost if no password is set - # check_ip will set the IP first. This will overwrite it. - if [ -z "${telnetpass}" ]; then - telnetip="127.0.0.1" - fi - maxplayers=$(grep "ServerMaxPlayerCount" "${servercfgfullpath}" | tr -cd '[:digit:]') - gamemode=$(grep "GameMode" "${servercfgfullpath}" | sed 's/^.*value="//' | cut -f1 -d"\"") - gameworld=$(grep "GameWorld" "${servercfgfullpath}" | sed 's/^.*value="//' | cut -f1 -d"\"") - - # Not set - servername=${servername:-"NOT SET"} - serverpassword=${serverpassword:-"NOT SET"} - port=${port:-"0"} - queryport=${queryport:-"0"} - webadminenabled=${webadminenabled:-"NOT SET"} - webadminport=${webadminport:-"0"} - webadminpass=${webadminpass:-"NOT SET"} - telnetenabled=${telnetenabled:-"NOT SET"} - telnetport=${telnetport:-"0"} - telnetpass=${telnetpass:-"NOT SET"} - maxplayers=${maxplayers:-"0"} - gamemode=${gamemode:-"NOT SET"} - gameworld=${gameworld:-"NOT SET"} - fi -} - -fn_info_game_sf() { - # Parameters - servername=${selfname:-"NOT SET"} - port=${port:-"0"} - queryport=${queryport:-"0"} - beaconport=${beaconport:-"0"} -} - -fn_info_game_sof2() { - # Config - if [ ! -f "${servercfgfullpath}" ]; then - rconpassword="${unavailable}" - servername="${unavailable}" - serverpassword="${unavailable}" - maxplayers="${zero}" - else - rconpassword=$(grep "rconpassword" "${servercfgfullpath}" | sed -e 's/^[ \t]*//g' -e '/^\//d' -e 's/set rconpassword//g' | tr -d '=\";,:' | sed -e 's/^[ \t]*//' -e 's/[ \t]*$//') - servername=$(grep "sv_hostname" "${servercfgfullpath}" | sed -e 's/^[ \t]*//g' -e '/^\//d' -e 's/set sv_hostname//g' | tr -d '=\";,:' | sed -e 's/^[ \t]*//' -e 's/[ \t]*$//') - serverpassword=$(grep "g_password" "${servercfgfullpath}" | sed -e 's/^[ \t]*//g' -e '/^\//d' -e 's/set g_password//g' | tr -d '=\";,:' | sed -e 's/^[ \t]*//' -e 's/[ \t]*$//') - maxplayers=$(grep "sv_maxclients" "${servercfgfullpath}" | grep -v "#" | tr -cd '[:digit:]') - - # Not set - rconpassword=${rconpassword:-"NOT SET"} - servername=${servername:-"NOT SET"} - serverpassword=${serverpassword:-"NOT SET"} - maxplayers=${maxplayers:-"0"} - fi - - # Parameters - port=${port:-"0"} - queryport=${port} - defaultmap=${defaultmap:-"NOT SET"} -} - -fn_info_game_sol() { - # Config - if [ ! -f "${servercfgfullpath}" ]; then - adminpassword="${unavailable}" - maxplayers="${unavailable}" - port="${zero}" - queryport="${zero}" - servername="${unavailable}" - serverpassword="${unavailable}" - else - adminpassword=$(grep "Admin_Password=" "${servercfgfullpath}" | awk -F '=' '{print $2}') - maxplayers=$(grep "Max_Players=" "${servercfgfullpath}" | tr -cd '[:digit:]') - port=$(grep "Port=" "${servercfgfullpath}" | tr -cd '[:digit:]') - queryport="${port}" - filesport=$((port + 10)) - servername=$(grep "Server_Name=" "${servercfgfullpath}" | awk -F '=' '{print $2}') - serverpassword=$(grep "Game_Password=" "${servercfgfullpath}" | awk -F '=' '{print $2}') - - # Not set - adminpassword=${adminpassword:-"NOT SET"} - maxplayers=${maxplayers:-"0"} - port=${port:-"23073"} - queryport=${queryport:-"23083"} - servername=${servername:-"NOT SET"} - serverpassword=${serverpassword:-"NOT SET"} - fi -} - -fn_info_game_source() { - # Config - if [ ! -f "${servercfgfullpath}" ]; then - servername="${unavailable}" - serverpassword="${unavailable}" - rconpassword="${unavailable}" - else - servername=$(grep "hostname" "${servercfgfullpath}" | sed -e 's/^[ \t]*//g' -e '/^\//d' -e 's/hostname//g' | tr -d '=\";,:' | sed -e 's/^[ \t]*//' -e 's/[ \t]*$//') - serverpassword=$(grep "sv_password" "${servercfgfullpath}" | sed -e 's/^[ \t]*//g' -e '/^\//d' -e 's/sv_password//g' | tr -d '=\";,:' | sed -e 's/^[ \t]*//' -e 's/[ \t]*$//') - rconpassword=$(grep "rcon_password" "${servercfgfullpath}" | sed -e 's/^[ \t]*//g' -e '/^\//d' -e 's/rcon_password//g' | tr -d '=\";,:' | sed -e 's/^[ \t]*//' -e 's/[ \t]*$//') - - # Not set - servername=${servername:-"NOT SET"} - serverpassword=${serverpassword:-"NOT SET"} - rconpassword=${rconpassword:-"NOT SET"} - fi - - # Parameters - defaultmap=${defaultmap:-"NOT SET"} - maxplayers=${maxplayers:-"0"} - port=${port:-"0"} - rconport=${port:-"0"} - queryport=${port:-"0"} - clientport=${clientport:-"0"} - # Steamport can be between 26901-26910 and is normaly automatically set. - # Some servers might support -steamport parameter to set - if [ "${steamport}" == "0" ] || [ -v "${steamport}" ]; then - steamport="$(echo "${ssinfo}" | grep "${srcdslinuxpid}" | awk '{print $5}' | grep ":269" | cut -d ":" -f2)" - fi -} - -fn_info_game_spark() { - defaultmap=${defaultmap:-"NOT SET"} - maxplayers=${maxplayers:-"0"} - port=${port:-"0"} - queryport=$((port + 1)) - servername=${servername:-"NOT SET"} - serverpassword=${serverpassword:-"NOT SET"} - webadminuser=${webadminuser:-"NOT SET"} - webadminpass=${webadminpass:-"NOT SET"} - webadminport=${webadminport:-"0"} - # Commented out as displaying not set in details parameters - #mods=${mods:-"NOT SET"} -} - -fn_info_game_squad() { - # Config - if [ ! -f "${servercfgfullpath}" ]; then - servername="${unavailable}" - maxplayers="${unavailable}" - else - servername=$(grep "ServerName=" "${servercfgfullpath}" | sed -e 's/^[ \t]*//g' -e '/^#/d' -e 's/ServerName//g' | tr -d '=\";,:' | sed -e 's/^[ \t]*//' -e 's/[ \t]*$//') - maxplayers=$(grep "MaxPlayers=" "${servercfgfullpath}" | tr -cd '[:digit:]') - - servername=${servername:-"NOT SET"} - maxplayers=${maxplayers:-"0"} - fi - - if [ ! -f "${servercfgdir}/Rcon.cfg" ]; then - rconport=${unavailable} - rconpassword=${unavailable} - else - rconport=$(grep "Port=" "${servercfgdir}/Rcon.cfg" | tr -cd '[:digit:]') - rconpassword=$(grep "Password=" "${servercfgdir}/Rcon.cfg" | sed -e 's/^[ \t]*//g' -e '/^\//d' -e 's/Password//g' | tr -d '=\";,:' | sed -e 's/^[ \t]*//' -e 's/[ \t]*$//') - - rconport=${rconport:-"0"} - if [ -z "${rconpassword}" ] || [ ${#rconpassword} == 1 ]; then - rconpassword="NOT SET" - fi - - fi - - # Parameters - port=${port:-"0"} - queryport=${queryport:-"0"} -} - -fn_info_game_st() { - # Config - if [ ! -f "${servercfgfullpath}" ]; then - servername="${unavailable}" - serverpassword="${unavailable}" - rconpassword="${unavailable}" - maxplayers="${unavailable}" - else - servername=$(grep "SERVERNAME" "${servercfgfullpath}" | sed -e 's/^[ \t]*//g' -e '/^\//d' -e 's/SERVERNAME//g' | tr -d '=\";,:' | sed -e 's/^[ \t]*//' -e 's/[ \t]*$//') - serverpassword=$(grep "PASSWORD" "${servercfgfullpath}" | grep "^PASSWORD" | sed -e 's/^[ \t]*//g' -e '/^\//d' -e 's/PASSWORD//g' | tr -d '=\";,:' | sed -e 's/^[ \t]*//' -e 's/[ \t]*$//') - rconpassword=$(grep "RCONPASSWORD" "${servercfgfullpath}" | sed -e 's/^[ \t]*//g' -e '/^\//d' -e 's/RCONPASSWORD//g' | tr -d '=\";,:' | sed -e 's/^[ \t]*//' -e 's/[ \t]*$//') - maxplayers=$(grep "MAXPLAYER" "${servercfgfullpath}" | sed -e 's/^[ \t]*//g' -e '/^\//d' -e 's/MAXPLAYER//g' | tr -d '=\";,:' | sed -e 's/^[ \t]*//' -e 's/[ \t]*$//') - - # Not set - servername=${servername:-"NOT SET"} - serverpassword=${serverpassword:-"NOT SET"} - rconpassword=${rconpassword:-"NOT SET"} - maxplayers=${maxplayers:-"0"} - fi - - # Parameters - port=${port:-"0"} - queryport=${queryport:-"0"} - httpport=${port:-"0"} - worldtype=${worldtype:-"NOT SET"} - autosaveinterval=${autosaveinterval:-"0"} - clearinterval=${clearinterval:-"0"} - worldname=${worldname:-"NOT SET"} -} - -fn_info_game_terraria() { - # Config - if [ ! -f "${servercfgfullpath}" ]; then - servername="${unavailable}" - port="${zero}" - gameworld="${unavailable}" - maxplayers="${zero}" - queryport="${zero}" - else - servername=$(grep "worldname" "${servercfgfullpath}" | sed -e 's/^[ \t]*//g' -e '/^#/d' -e 's/worldname//g' | tr -d '=\";,:' | sed -e 's/^[ \t]*//' -e 's/[ \t]*$//') - port=$(grep "port" "${servercfgfullpath}" | tr -cd '[:digit:]') - queryport=${port:-"0"} - gameworld=$(grep "world=" "${servercfgfullpath}" | grep -v "//" | sed -e 's/^[ \t]*//g' -e '/^#/d' -e 's/world=//g' | tr -d '=\";,:' | sed -e 's/^[ \t]*//' -e 's/[ \t]*$//') - maxplayers=$(grep "maxplayers" "${servercfgfullpath}" | grep -v "//" | tr -cd '[:digit:]') - - # Not set - servername=${servername:-"NOT SET"} - port=${port:-"0"} - queryport=${queryport:-"0"} - gameworld=${gameworld:-"NOT SET"} - maxplayers=${maxplayers:-"0"} - fi -} - -fn_info_game_stn() { - # Config - if [ ! -f "${servercfgfullpath}" ]; then - servername="${unavailable}" - configip=${configip:-"0.0.0.0"} - port="${zero}" - queryport="${zero}" - serverpassword=${serverpassword:-"NOT SET"} - else - servername=$(sed -nr 's/^ServerName="(.*)"/\1/p' "${servercfgfullpath}") - configip=$(sed -nr 's/^ServerIP=([0-9]+)/\1/p' "${servercfgfullpath}") - port=$(sed -nr 's/^ServerPort=([0-9]+)/\1/p' "${servercfgfullpath}") - serverpassword=$(sed -nr 's/^ServerPassword=(.*)$/\1/p' "${servercfgfullpath}") - queryport=$((port + 1)) - - # Not set - serverpassword=${serverpassword:-"NOT SET"} - port=${port:-"0"} - serverpassword=${serverpassword:-"NOT SET"} - queryport=${queryport:-"0"} - fi -} - -fn_info_game_ti() { - if [ ! -f "${servercfgfullpath}" ]; then - servername="${unavailable}" - maxplayers="${zero}" - else - servername=$(sed -nr 's/^ServerName="(.*)"/\1/p' "${servercfgfullpath}") - maxplayers=$(sed -nr 's/^MaxPlayerCount=([0-9]+)/\1/' "${servercfgfullpath}") - - # Not set - servername=${servername:-"NOT SET"} - maxplayers=${maxplayers:-"0"} - fi - -} - -fn_info_game_ts3() { - # Config - if [ ! -f "${servercfgfullpath}" ]; then - dbplugin="${unavailable}" - port="9987" - queryport="10011" - querysshport="10022" - queryhttpport="10080" - queryhttpsport="10443" - fileport="30033" - telnetport="10011" - else - dbplugin=$(grep "dbplugin=" "${servercfgfullpath}" | sed -e 's/^[ \t]*//g' -e '/^#/d' -e 's/dbplugin=//g' | tr -d '=\";,:' | sed -e 's/^[ \t]*//' -e 's/[ \t]*$//') - port=$(grep "default_voice_port" "${servercfgfullpath}" | tr -cd '[:digit:]') - queryport=$(grep "query_port" "${servercfgfullpath}" | grep -v "#" | tr -cd '[:digit:]') - querysshport=$(grep "query_ssh_port" "${servercfgfullpath}" | grep -v "#" | tr -cd '[:digit:]') - queryhttpport=$(grep "query_http_port" "${servercfgfullpath}" | grep -v "#" | tr -cd '[:digit:]') - queryhttpsport=$(grep "query_https_port" "${servercfgfullpath}" | grep -v "#" | tr -cd '[:digit:]') - fileport=$(grep "filetransfer_port" "${servercfgfullpath}" | grep -v "#" | tr -cd '[:digit:]') - telnetport="${queryport}" - configip=$(grep "voice_ip" "${servercfgfullpath}" | sed -e 's/^[ \t]*//g' -e '/^#/d' -e 's/voice_ip//g' | sed 's/,.*//' | tr -d '=\";,' | sed -e 's/^[ \t]*//' -e 's/[ \t]*$//') - - # Not set - dbplugin=${dbplugin:-"NOT SET"} - port=${port:-"9987"} - queryport=${queryport:-"10011"} - querysshport=${querysshport:-"10022"} - queryhttpport=${queryhttpport:-"10080"} - queryhttpsport=${queryhttpsport:-"10443"} - fileport=${fileport:-"30033"} - telnetport=${telnetport:-"10011"} - configip=${configip:-"0.0.0.0"} - fi -} - -fn_info_game_tu() { - # Config - if [ ! -f "${servercfgfullpath}" ]; then - servername="${unavailable}" - maxplayers="${zero}" - else - servername=$(grep "ServerTitle" "${servercfgfullpath}" | sed -e 's/^[ \t]*//g' -e '/^--/d' -e 's/ServerTitle//g' | tr -d '=\";,:' | sed -e 's/^[ \t]*//' -e 's/[ \t]*$//') - maxplayers=$(grep "MaxPlayers" "${servercfgfullpath}" | grep -v "#" | tr -cd '[:digit:]') - - # Not set - servername=${servername:-"NOT SET"} - maxplayers=${maxplayers:-"0"} - fi - - # Parameters - port=${port:-"0"} - steamport=$((port + 1)) - queryport=${queryport:-"0"} -} - -fn_info_game_tw() { - # Config - if [ ! -f "${servercfgfullpath}" ]; then - servername="unnamed server" - serverpassword="${unavailable}" - rconpassword="${unavailable}" - port="8303" - queryport="8303" - maxplayers="12" - else - servername=$(grep "sv_name" "${servercfgfullpath}" | sed -e 's/^[ \t]*//g' -e '/^#/d' -e 's/^sv_name//g' | tr -d '=\";,:' | sed -e 's/^[ \t]*//' -e 's/[ \t]*$//') - serverpassword=$(grep "password" "${servercfgfullpath}" | sed -e 's/^[ \t]*//g' | grep "^password" | sed -e '/^#/d' -e 's/^password//g' | tr -d '=\";,:' | sed -e 's/^[ \t]*//' -e 's/[ \t]*$//') - rconpassword=$(grep "sv_rcon_password" "${servercfgfullpath}" | sed -e 's/^[ \t]*//g' -e '/^#/d' -e 's/^sv_rcon_password//g' | tr -d '=\";,:' | sed -e 's/^[ \t]*//' -e 's/[ \t]*$//') - port=$(grep "sv_port" "${servercfgfullpath}" | grep -v "#" | tr -cd '[:digit:]') - queryport="${port}" - maxplayers=$(grep "sv_max_clients" "${servercfgfullpath}" | grep -v "#" | tr -cd '[:digit:]') - - # Not set - servername=${servername:-"NOT SET"} - serverpassword=${serverpassword:-"NOT SET"} - rconpassword=${rconpassword:-"NOT SET"} - port=${port:-"8303"} - queryport=${port:-"8303"} - maxplayers=${maxplayers:-"12"} - fi -} - -fn_info_game_ut99() { - # Config - if [ ! -f "${servercfgfullpath}" ]; then - servername="${unavailable}" - serverpassword="${unavailable}" - adminpassword="${unavailable}" - port="${zero}" - queryport="${zero}" - queryportgs="${zero}" - webadminenabled="${unavailable}" - webadminport="${zero}" - webadminuser="${unavailable}" - webadminpass="${unavailable}" - else - servername=$(grep "ServerName" "${servercfgfullpath}" | sed -e 's/^[ \t]*//g' -e '/^#/d' -e 's/ServerName//g' | tr -d '=\";,:' | sed -e 's/^[ \t]*//' -e 's/[ \t]*$//' | sed 's/\r$//') - serverpassword=$(grep "GamePassword" "${servercfgfullpath}" | sed -e 's/^[ \t]*//g' -e '/^#/d' -e 's/GamePassword//g' | tr -d '=\";,:' | sed -e 's/^[ \t]*//' -e 's/[ \t]*$//' | sed 's/\r$//') - adminpassword=$(grep "AdminPassword" "${servercfgfullpath}" | sed -e 's/^[ \t]*//g' -e '/^#/d' -e 's/AdminPassword//g' | tr -d '=\";,:' | sed -e 's/^[ \t]*//' -e 's/[ \t]*$//' | sed 's/\r$//') - port=$(grep "Port" "${servercfgfullpath}" | sed -e 's/^[ \t]*//g' | grep "^Port" | grep -v "#" | tr -cd '[:digit:]') - queryport=$((port + 1)) - queryportgs=$(grep "OldQueryPortNumber" "${servercfgfullpath}" | grep -v "#" | tr -cd '[:digit:]') - beaconport=$(grep "ServerBeaconPort" "${servercfgfullpath}" | grep -v "#" | tr -cd '[:digit:]') - webadminenabled=$(grep "bEnabled" "${servercfgfullpath}" | sed -e 's/^[ \t]*//g' -e '/^#/d' -e 's/bEnabled//g' | tr -d '=\";,:' | sed -e 's/^[ \t]*//' -e 's/[ \t]*$//' | sed 's/\r$//') - httpport=$(grep "ListenPort" "${servercfgfullpath}" | grep -v "#" | tr -cd '[:digit:]') - webadminuser=$(grep "AdminUsername" "${servercfgfullpath}" | sed -e 's/^[ \t]*//g' -e '/^#/d' -e 's/AdminUsername//g' | tr -d '=\";,:' | sed -e 's/^[ \t]*//' -e 's/[ \t]*$//' | sed 's/\r$//') - webadminpass=$(grep "UTServerAdmin.UTServerAdmin" "${servercfgfullpath}" -A 4 | grep "AdminPassword" | sed -e 's/^[ \t]*//g' -e '/^#/d' -e 's/AdminPassword//g' | tr -d '=\";,:' | sed -e 's/^[ \t]*//' -e 's/[ \t]*$//' | sed 's/\r$//') - - # Not set - servername=${servername:-"NOT SET"} - serverpassword=${serverpassword:-"NOT SET"} - adminpassword=${adminpassword:-"NOT SET"} - port=${port:-"0"} - queryport=${queryport:-"0"} - beaconport=${beaconport:-"8777"} - queryportgs=${queryportgs:-"0"} - webadminenabled=${webadminenabled:-"NOT SET"} - webadminport=${webadminport:-"0"} - webadminuser=${webadminuser:-"NOT SET"} - webadminpass=${webadminpass:-"NOT SET"} - fi - - # Parameters - defaultmap=${defaultmap:-"NOT SET"} -} - -fn_info_game_unreal2() { - # Config - if [ ! -f "${servercfgfullpath}" ]; then - servername="${unavailable}" - serverpassword="${unavailable}" - adminpassword="${unavailable}" - port="${zero}" - queryport="${zero}" - queryportgs="${zero}" - webadminenabled="${unavailable}" - webadminport="${zero}" - webadminuser="${unavailable}" - webadminpass="${unavailable}" - else - servername=$(sed -nr 's/^ServerName=(.*)$/\1/p' "${servercfgfullpath}" | tr -d '=\";,:' | sed 's/\r$//') - serverpassword=$(sed -nr 's/^GamePassword=(.*)$/\1/p' "${servercfgfullpath}" | tr -d '=\";,:' | sed 's/\r$//') - adminpassword=$(sed -nr 's/^AdminPassword=(.*)$/\1/p' "${servercfgfullpath}" | tr -d '=\";,:' | sed 's/\r$//') - port=$(sed -nr 's/^Port=(.*)$/\1/p' "${servercfgfullpath}" | tr -cd '[:digit:]') - queryport=$((port + 1)) - queryportgs=$(sed -nr 's/^OldQueryPortNumber=(.*)$/\1/p' "${servercfgfullpath}" | tr -cd '[:digit:]') - webadminenabled=$(sed -nr 's/^bEnabled=(.*)$/\1/p' "${servercfgfullpath}" | tr -d '=\";,:' | sed 's/\r$//') - webadminport=$(sed -nr 's/^ListenPort=(.*)$/\1/p' "${servercfgfullpath}" | tr -cd '[:digit:]') - webadminuser=$(sed -nr 's/^AdminName=(.*)$/\1/p' "${servercfgfullpath}" | tr -d '=\";,:' | sed 's/\r$//') - webadminpass="${adminpassword}" - - # Not set - servername=${servername:-"NOT SET"} - serverpassword=${serverpassword:-"NOT SET"} - adminpassword=${adminpassword:-"NOT SET"} - port=${port:-"0"} - queryport=${queryport:-"0"} - queryportgs=${queryportgs:-"0"} - webadminenabled=${webadminenabled:-"NOT SET"} - webadminport=${webadminport:-"0"} - webadminuser=${webadminuser:-"NOT SET"} - webadminpass=${webadminpass:-"NOT SET"} - fi - - # Parameters - defaultmap=${defaultmap:-"NOT SET"} -} - -fn_info_game_unt() { - # Parameters - servername=${selfname:-"NOT SET"} - port=${port:-"0"} - queryport=${port} - steamport=$((port + 1)) -} - -fn_info_game_ut() { - # Config - if [ ! -f "${servercfgfullpath}" ]; then - servername="${unavailable}" - else - servername=$(grep "ServerName" "${servercfgfullpath}" | awk -F '=' '{print $2}') - - # Not set - servername=${servername:-"NOT SET"} - fi - - # Parameters - port=${port:-"0"} - queryport=$((port + 1)) -} - -fn_info_game_unreal2k4() { - # Config - if [ ! -f "${servercfgfullpath}" ]; then - servername="${unavailable}" - serverpassword="${unavailable}" - adminpassword="${unavailable}" - port="${zero}" - queryport="${zero}" - queryportgs="${zero}" - lanport="${zero}" - webadminenabled="${unavailable}" - httpport="${zero}" - webadminuser="${unavailable}" - webadminpass="${unavailable}" - else - servername=$(sed -nr 's/^ServerName=(.*)$/\1/p' "${servercfgfullpath}" | tr -d '=\";,:' | sed 's/\r$//') - serverpassword=$(sed -nr 's/^GamePassword=(.*)$/\1/p' "${servercfgfullpath}" | tr -d '=\";,:' | sed 's/\r$//') - adminpassword=$(sed -nr 's/^AdminPassword=(.*)$/\1/p' "${servercfgfullpath}" | tr -d '=\";,:' | sed 's/\r$//') - port=$(sed -nr 's/^Port=(.*)$/\1/p' "${servercfgfullpath}" | tr -cd '[:digit:]') - queryport=$((port + 1)) - queryportgs=$(sed -nr 's/^OldQueryPortNumber=(.*)$/\1/p' "${servercfgfullpath}" | tr -cd '[:digit:]') - lanport=$(grep "LANServerPort=" "${servercfgfullpath}" | tr -cd '[:digit:]') - webadminenabled=$(sed -nr 's/^bEnabled=(.*)$/\1/p' "${servercfgfullpath}" | tr -d '=\";,:' | sed 's/\r$//') - httpport=$(sed -nr 's/^ListenPort=(.*)$/\1/p' "${servercfgfullpath}" | tr -cd '[:digit:]') - webadminuser=$(sed -nr 's/^AdminName=(.*)$/\1/p' "${servercfgfullpath}" | tr -d '=\";,:' | sed 's/\r$//') - webadminpass="${adminpassword}" - - # Not set - servername=${servername:-"NOT SET"} - serverpassword=${serverpassword:-"NOT SET"} - adminpassword=${adminpassword:-"NOT SET"} - port=${port:-"0"} - queryport=${queryport:-"0"} - queryportgs=${queryportgs:-"0"} - lanport=${lanport:-"0"} - webadminenabled=${webadminenabled:-"NOT SET"} - httpport=${httpport:-"0"} - webadminuser=${webadminuser:-"NOT SET"} - webadminpass=${webadminpass:-"NOT SET"} - fi -} - -fn_info_game_ut3() { - # Config - if [ ! -f "${servercfgfullpath}" ]; then - servername="${unavailable}" - serverpassword="${unavailable}" - adminpassword="${unavailable}" - maxplayers="${unavailable}" - webadminenabled="${unavailable}" - webadminport="${zero}" - webadminuser="${unavailable}" - webadminpass="${unavailable}" - else - servername=$(grep "ServerName" "${servercfgfullpath}" | sed -e 's/^[ \t]*//g' -e '/^#/d' -e 's/ServerName//g' | tr -d '=\";,:' | sed -e 's/^[ \t]*//' -e 's/[ \t]*$//') - serverpassword=$(grep "GamePassword" "${servercfgfullpath}" | sed -e 's/^[ \t]*//g' -e '/^#/d' -e 's/GamePassword//g' | tr -d '=\";,:' | sed -e 's/^[ \t]*//' -e 's/[ \t]*$//') - adminpassword=$(grep "AdminPassword" "${servercfgfullpath}" | sed -e 's/^[ \t]*//g' -e '/^#/d' -e 's/AdminPassword//g' | tr -d '=\";,:' | sed -e 's/^[ \t]*//' -e 's/[ \t]*$//') - maxplayers=$(grep "MaxPlayers" "${servercfgfullpath}" | grep -v "#" | tr -cd '[:digit:]') - webadminenabled=$(grep "bEnabled" "${servercfgdir}/UTWeb.ini" | sed -e 's/^[ \t]*//g' -e '/^#/d' -e 's/bEnabled//g' | tr -d '=\";,:' | sed -e 's/^[ \t]*//' -e 's/[ \t]*$//') - webadminport=$(grep "ListenPort" "${servercfgdir}/UTWeb.ini" | grep -v "#" | tr -cd '[:digit:]') - webadminuser="Admin" - webadminpass=$(grep "AdminPassword" "${servercfgfullpath}" | sed -e 's/^[ \t]*//g' -e '/^#/d' -e 's/AdminPassword//g' | tr -d '=\";,:' | sed -e 's/^[ \t]*//' -e 's/[ \t]*$//') - - # Not set - servername=${servername:-"NOT SET"} - serverpassword=${serverpassword:-"NOT SET"} - adminpassword=${adminpassword:-"NOT SET"} - maxplayers=${maxplayers:-"0"} - webadminenabled=${webadminenabled:-"NOT SET"} - webadminport=${webadminport:-"0"} - webadminuser=${webadminuser:-"NOT SET"} - webadminpass=${webadminpass:-"NOT SET"} - fi - - # Parameters - port=${port:-"0"} - queryport=${queryport:-"0"} - defaultmap=${defaultmap:-"NOT SET"} -} - -fn_info_game_vh() { - # Parameters - port=${port:-"0"} - # Query port only enabled if public server - if [ "${public}" != "0" ]; then - queryport=$((port + 1)) - else - querymode="1" - fi - gameworld=${gameworld:-"NOT SET"} - serverpassword=${serverpassword:-"NOT SET"} - servername=${servername:-"NOT SET"} -} - -fn_info_game_vints() { - if [ ! -f "${servercfgfullpath}" ]; then - servername="${unavailable}" - maxplayers="${unavailable}" - serverpassword="${unavailable}" - port="${port:-"0"}" - else - servername=$(jq -r '.ServerName' "${servercfgfullpath}") - maxplayers=$(jq -r '.MaxClients' "${servercfgfullpath}") - serverpassword=$(jq -r 'select(.Password != null) | .Password' "${servercfgfullpath}") - port=$(jq -r '.Port' "${servercfgfullpath}") - configip=$(jq -r 'select(.Ip != null) | .Ip' "${servercfgfullpath}") - fi - queryport=${port:-"0"} - serverpassword=${serverpassword:-"NOT SET"} - configip=${configip:-"0.0.0.0"} -} - -fn_info_game_vpmc() { - if [ ! -f "${servercfgfullpath}" ]; then - servername="${unavailable}" - configip="0.0.0.0" - port="25577" - else - servername=$(sed -nr 's/^motd\s*=\s*"(.*)"/\1/p' "${servercfgfullpath}") - bindaddress=$(sed -nr 's/^bind\s*=\s*"([0-9.:]+)"/\1/p' "${servercfgfullpath}") - configip=$(echo "${bindaddress}" | cut -d ':' -f 1) - port=$(echo "${bindaddress}" | cut -d ':' -f 2) - - servername=${servername:-"NOT SET"} - fi - queryport=${port:-"25577"} -} - -fn_info_game_wet() { - # Config - if [ ! -f "${servercfgfullpath}" ]; then - rconpassword="${unavailable}" - servername="${unavailable}" - serverpassword="${unavailable}" - maxplayers="${zero}" - port="${zero}" - queryport="${zero}" - else - port=$(grep "set net_port" "${servercfgfullpath}" | grep -v "//" | tr -cd '[:digit:]') - queryport="${port}" - rconpassword=$(grep "set zmq_rcon_password" "${servercfgfullpath}" | sed -e 's/^[ \t]*//g' -e '/^\//d' -e 's/set zmq_rcon_password //g' | tr -d '=\";,:' | sed -e 's/^[ \t]*//g' -e '/^\//d' | sed -e 's/^[ \t]*//' -e 's/[ \t]*$//') - servername=$(grep "set sv_hostname" "${servercfgfullpath}" | sed -e 's/^[ \t]*//g' -e '/^\//d' -e 's/set sv_hostname //g' | tr -d '=\";,:' | sed -e 's/^[ \t]*//' -e 's/[ \t]*$//') - serverpassword=$(grep "set g_password" "${servercfgfullpath}" | sed -e 's/^[ \t]*//g' -e '/^\//d' -e 's/set g_password //g' | tr -d '=\";,:' | sed -e 's/^[ \t]*//' -e 's/[ \t]*$//') - maxplayers=$(grep "set sv_maxclients" "${servercfgfullpath}" | grep -v "//" | tr -cd '[:digit:]') - configip=$(grep "set net_ip" "${servercfgfullpath}" | sed -e 's/^[ \t]*//g' -e '/^\//d' -e 's/set net_ip//g' | tr -d '=\";,:' | sed -e 's/^[ \t]*//' -e 's/[ \t]*$//') - - # Not set - rconpassword=${rconpassword:-"NOT SET"} - servername=${servername:-"NOT SET"} - serverpassword=${serverpassword:-"NOT SET"} - maxplayers=${maxplayers:-"0"} - port=${port:-"27960"} - queryport=${queryport:-"27960"} - configip=${configip:-"0.0.0.0"} - fi -} - -fn_info_game_wf() { - # Config - if [ ! -f "${servercfgfullpath}" ]; then - rconpassword="${unavailable}" - servername="${unavailable}" - maxplayers="${zero}" - else - rconpassword=$(grep "rcon_password" "${servercfgfullpath}" | sed -e 's/^[ \t]*//g' -e '/^\//d' -e 's/set rcon_password//g' | tr -d '=\";,:' | sed -e 's/^[ \t]*//' -e 's/[ \t]*$//') - servername=$(grep "sv_hostname" "${servercfgfullpath}" | sed -e 's/^[ \t]*//g' -e '/^\//d' -e 's/set sv_hostname//g' | tr -d '=\";,:' | sed -e 's/^[ \t]*//' -e 's/[ \t]*$//') - maxplayers=$(grep "sv_maxclients" "${servercfgfullpath}" | grep -v "#" | tr -cd '[:digit:]') - - # Not set - rconpassword=${rconpassword:-"NOT SET"} - servername=${servername:-"NOT SET"} - maxplayers=${maxplayers:-"0"} - fi - - # Parameters - port=${port:-"0"} - queryport="${port:-"0"}" - webadminport=${webadminport:-"0"} -} - -fn_info_game_wmc() { - if [ ! -f "${servercfgfullpath}" ]; then - servername="${unavailable}" - maxplayers="${zero}" - port="${zero}" - queryport="${zero}" - queryenabled="${unavailable}" - else - servername=$(sed -e '/^listeners:/,/^[a-z]/!d' "${servercfgfullpath}" | sed -nr 's/^[ ]+motd: (.*)$/\1/p' | tr -d "'" | sed 's/&1//') - queryport=$(sed -nr 's/^[ -]+query_port: ([0-9]+)/\1/p' "${servercfgfullpath}") - queryenabled=$(sed -nr 's/^[ ]+query_enabled: (.*)$/\1/p' "${servercfgfullpath}") - port=$(sed -nr 's/^[ ]+host: [0-9]+\.[0-9]+\.[0-9]+\.[0-9]+:([0-9]+)/\1/p' "${servercfgfullpath}") - # the normal max_players does only show in on the client side and has no effect how many players can connect. - maxplayers=$(sed -nr 's/^player_limit: ([-]*[0-9])/\1/p' "${servercfgfullpath}") - configip=$(sed -nr 's/^[ ]+host: ([0-9]+\.[0-9]+\.[0-9]+\.[0-9]+):[0-9]+/\1/p' "${servercfgfullpath}") - - if [ "${maxplayers}" == "-1" ] || [ "${maxplayers}" == "0" ]; then - maxplayers="UNLIMITED" - fi - - # Not set - servername=${servername:-"NOT SET"} - queryport=${queryport:-"25577"} - maxplayers=${maxplayers:-"0"} - configip=${configip:-"0.0.0.0"} - fi -} - -fn_info_game_wurm() { - # Config - if [ ! -f "${servercfgfullpath}" ]; then - port="${zero}" - queryport="${zero}" - rconpassword="${unavailable}" - servername="${unavailable}" - serverpassword="${unavailable}" - adminpassword="${unavailable}" - maxplayers="${zero}" - else - port=$(grep "EXTERNALPORT=" "${servercfgfullpath}" | grep -v "#" | tr -cd '[:digit:]') - queryport=$(grep "QUERYPORT=" "${servercfgfullpath}" | grep -v "#" | tr -cd '[:digit:]') - servername=$(grep "SERVERNAME=" "${servercfgfullpath}" | sed -e 's/^[ \t]*//g' -e '/^\//d' -e 's/SERVERNAME//g' | tr -d '=\";,:' | sed -e 's/^[ \t]*//' -e 's/[ \t]*$//') - serverpassword=$(grep "SERVERPASSWORD=" "${servercfgfullpath}" | sed -e 's/^[ \t]*//g' -e '/^\//d' -e 's/SERVERPASSWORD//g' | tr -d '=\";,:' | sed -e 's/^[ \t]*//' -e 's/[ \t]*$//') - adminpassword=$(grep "ADMINPWD=" "${servercfgfullpath}" | sed -e 's/^[ \t]*//g' -e '/^\//d' -e 's/ADMINPWD//g' | tr -d '=\";,:' | sed -e 's/^[ \t]*//' -e 's/[ \t]*$//') - maxplayers=$(grep "MAXPLAYERS=" "${servercfgfullpath}" | grep -v "#" | tr -cd '[:digit:]') - configip=$(grep "IP" "${servercfgfullpath}" | sed -e 's/^[ \t]*//g' -e '/^#/d' -e 's/IP//g' | tr -d '=\";,:' | sed -e 's/^[ \t]*//' -e 's/[ \t]*$//') - - # Not set - port=${port:-"3724"} - queryport=${queryport:-"27017"} - servername=${servername:-"NOT SET"} - serverpassword=${serverpassword:-"NOT SET"} - adminpassword=${adminpassword:-"NOT SET"} - maxplayers=${maxplayers:-"0"} - fi -} - -unavailable="${red}UNAVAILABLE${default}" -zero="${red}0${default}" - -if [ "${shortname}" == "ac" ]; then - fn_info_game_ac -elif [ "${shortname}" == "ark" ]; then - fn_info_game_ark -elif [ "${shortname}" == "arma3" ]; then - fn_info_game_arma3 -elif [ "${shortname}" == "armar" ]; then - fn_info_game_armar -elif [ "${shortname}" == "av" ]; then - fn_info_game_av -elif [ "${shortname}" == "bf1942" ]; then - fn_info_game_bf1942 -elif [ "${shortname}" == "bfv" ]; then - fn_info_game_bfv -elif [ "${shortname}" == "bo" ]; then - fn_info_game_bo -elif [ "${shortname}" == "bt" ]; then - fn_info_game_bt -elif [ "${shortname}" == "btl" ]; then - fn_info_game_btl -elif [ "${shortname}" == "cd" ]; then - fn_info_game_cd -elif [ "${shortname}" == "ck" ]; then - fn_info_game_ck -elif [ "${shortname}" == "cmw" ]; then - fn_info_game_cmw -elif [ "${shortname}" == "cod" ]; then - fn_info_game_cod -elif [ "${shortname}" == "coduo" ]; then - fn_info_game_cod -elif [ "${shortname}" == "cod2" ]; then - fn_info_game_cod2 -elif [ "${shortname}" == "cod4" ]; then - fn_info_game_cod4 -elif [ "${shortname}" == "codwaw" ]; then - fn_info_game_codwaw -elif [ "${shortname}" == "col" ]; then - fn_info_game_col -elif [ "${shortname}" == "dayz" ]; then - fn_info_game_dayz -elif [ "${shortname}" == "dodr" ]; then - fn_info_game_dodr -elif [ "${shortname}" == "dst" ]; then - fn_info_game_dst -elif [ "${shortname}" == "eco" ]; then - fn_info_game_eco -elif [ "${shortname}" == "etl" ]; then - fn_info_game_etl -elif [ "${shortname}" == "fctr" ]; then - fn_info_game_fctr -elif [ "${shortname}" == "hw" ]; then - fn_info_game_hw -elif [ "${shortname}" == "inss" ]; then - fn_info_game_inss -elif [ "${shortname}" == "jc2" ]; then - fn_info_game_jc2 -elif [ "${shortname}" == "jc3" ]; then - fn_info_game_jc3 -elif [ "${shortname}" == "jk2" ]; then - fn_info_game_jk2 -elif [ "${shortname}" == "kf" ]; then - fn_info_game_kf -elif [ "${shortname}" == "kf2" ]; then - fn_info_game_kf2 -elif [ "${shortname}" == "lo" ]; then - fn_info_game_lo -elif [ "${shortname}" == "mc" ] || [ "${shortname}" == "pmc" ]; then - fn_info_game_mc -elif [ "${shortname}" == "mcb" ]; then - fn_info_game_mcb -elif [ "${shortname}" == "mh" ]; then - fn_info_game_mh -elif [ "${shortname}" == "mohaa" ]; then - fn_info_game_mohaa -elif [ "${shortname}" == "mom" ]; then - fn_info_game_mom -elif [ "${shortname}" == "mta" ]; then - fn_info_game_mta -elif [ "${shortname}" == "nec" ]; then - fn_info_game_nec -elif [ "${shortname}" == "onset" ]; then - fn_info_game_onset -elif [ "${shortname}" == "pc" ]; then - fn_info_game_pc -elif [ "${shortname}" == "pc2" ]; then - fn_info_game_pc2 -elif [ "${shortname}" == "pstbs" ]; then - fn_info_game_pstbs -elif [ "${shortname}" == "pvr" ]; then - fn_info_game_pvr -elif [ "${shortname}" == "pz" ]; then - fn_info_game_pz -elif [ "${shortname}" == "q2" ]; then - fn_info_game_q2 -elif [ "${shortname}" == "q3" ]; then - fn_info_game_q3 -elif [ "${shortname}" == "ql" ]; then - fn_info_game_ql -elif [ "${shortname}" == "qw" ]; then - fn_info_game_qw -elif [ "${shortname}" == "ro" ]; then - fn_info_game_ro -elif [ "${shortname}" == "rtcw" ]; then - fn_info_game_rtcw -elif [ "${shortname}" == "rust" ]; then - fn_info_game_rust -elif [ "${shortname}" == "rw" ]; then - fn_info_game_rw -elif [ "${shortname}" == "samp" ]; then - fn_info_game_samp -elif [ "${shortname}" == "sb" ]; then - fn_info_game_sb -elif [ "${shortname}" == "sbots" ]; then - fn_info_game_sbots -elif [ "${shortname}" == "scpsl" ] || [ "${shortname}" == "scpslsm" ]; then - fn_info_game_scpsl -elif [ "${shortname}" == "sdtd" ]; then - fn_info_game_sdtd -elif [ "${shortname}" == "sf" ]; then - fn_info_game_sf -elif [ "${shortname}" == "sof2" ]; then - fn_info_game_sof2 -elif [ "${shortname}" == "sol" ]; then - fn_info_game_sol -elif [ "${engine}" == "spark" ]; then - fn_info_game_spark -elif [ "${shortname}" == "squad" ]; then - fn_info_game_squad -elif [ "${shortname}" == "st" ]; then - fn_info_game_st -elif [ "${shortname}" == "stn" ]; then - fn_info_game_stn -elif [ "${shortname}" == "terraria" ]; then - fn_info_game_terraria -elif [ "${shortname}" == "ti" ]; then - fn_info_game_ti -elif [ "${shortname}" == "ts3" ]; then - fn_info_game_ts3 -elif [ "${shortname}" == "tu" ]; then - fn_info_game_tu -elif [ "${shortname}" == "tw" ]; then - fn_info_game_tw -elif [ "${shortname}" == "unt" ]; then - fn_info_game_unt -elif [ "${shortname}" == "ut" ]; then - fn_info_game_ut -elif [ "${shortname}" == "ut2k4" ]; then - fn_info_game_unreal2k4 -elif [ "${shortname}" == "ut3" ]; then - fn_info_game_ut3 -elif [ "${shortname}" == "ut99" ]; then - fn_info_game_ut99 -elif [ "${shortname}" == "vh" ]; then - fn_info_game_vh -elif [ "${shortname}" == "vints" ]; then - fn_info_game_vints -elif [ "${shortname}" == "vpmc" ]; then - fn_info_game_vpmc -elif [ "${shortname}" == "wet" ]; then - fn_info_game_wet -elif [ "${shortname}" == "wf" ]; then - fn_info_game_wf -elif [ "${shortname}" == "wmc" ]; then - fn_info_game_wmc -elif [ "${shortname}" == "wurm" ]; then - fn_info_game_wurm -elif [ "${engine}" == "prism3d" ]; then - fn_info_game_prism3d -elif [ "${engine}" == "source" ] || [ "${engine}" == "goldsrc" ]; then - fn_info_game_source -elif [ "${engine}" == "unreal2" ]; then - fn_info_game_unreal2 -fi - -# External IP address -# Cache external IP address for 24 hours -if [ -f "${tmpdir}/extip.txt" ]; then - if [ "$(find "${tmpdir}/extip.txt" -mmin +1440)" ]; then - rm -f "${tmpdir:?}/extip.txt" - fi -fi - -if [ ! -f "${tmpdir}/extip.txt" ]; then - extip="$(curl --connect-timeout 10 -s https://api.ipify.org 2> /dev/null)" - exitcode=$? - # if curl passes add extip to externalip.txt - if [ "${exitcode}" != "0" ]; then - echo "Unable to get external IP address" - else - echo "${extip}" > "${tmpdir}/extip.txt" - fi -else - extip="$(cat "${tmpdir}/extip.txt")" -fi - -# Alert IP address -if [ "${displayip}" ]; then - alertip="${displayip}" -elif [ "${extip}" ]; then - alertip="${extip}" -else - alertip="${ip}" -fi - -# Steam Master Server - checks if detected by master server. -# Checked after config init, as the queryport is needed -if [ -z "${displaymasterserver}" ]; then - if [ "$(command -v jq 2> /dev/null)" ]; then - if [ "${ip}" ] && [ "${port}" ]; then - if [ "${steammaster}" == "true" ] || [ "${commandname}" == "DEV-QUERY-RAW" ]; then - # Will query server IP addresses first. - for queryip in "${queryips[@]}"; do - masterserver="$(curl --connect-timeout 10 -m 3 -s "https://api.steampowered.com/ISteamApps/GetServersAtAddress/v0001?addr=${queryip}&format=json" | jq --arg port "${port}" --arg queryport "${queryport}" '.response.servers[] | select((.gameport == ($port|tonumber) or (.gameport == ($queryport|tonumber)))) | .addr' | wc -l 2> /dev/null)" - done - # Should that not work it will try the external IP. - if [ "${masterserver}" == "0" ]; then - masterserver="$(curl --connect-timeout 10 -m 3 -s "https://api.steampowered.com/ISteamApps/GetServersAtAddress/v0001?addr=${extip}&format=json" | jq --arg port "${port}" --arg queryport "${queryport}" '.response.servers[] | select((.gameport == ($port|tonumber) or (.gameport == ($queryport|tonumber)))) | .addr' | wc -l 2> /dev/null)" - fi - if [ "${masterserver}" == "0" ]; then - displaymasterserver="false" - else - displaymasterserver="true" - fi - fi - fi - fi -fi diff --git a/lgsm/functions/info_messages.sh b/lgsm/functions/info_messages.sh deleted file mode 100644 index 3766049c60..0000000000 --- a/lgsm/functions/info_messages.sh +++ /dev/null @@ -1,1849 +0,0 @@ -#!/bin/bash -# LinuxGSM info_messages.sh module -# Author: Daniel Gibbs -# Contributors: http://linuxgsm.com/contrib -# Website: https://linuxgsm.com -# Description: Defines server info messages for details and alerts. - -functionselfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")" - -# Separator is different for details. -fn_messages_separator() { - if [ "${commandname}" == "DETAILS" ]; then - printf '%*s\n' "${COLUMNS:-$(tput cols)}" '' | tr ' ' = - else - echo -e "=================================" - fi -} - -# Removes the passwords form all but details. -fn_info_message_password_strip() { - if [ "${commandname}" != "DETAILS" ]; then - if [ "${serverpassword}" ]; then - serverpassword="********" - fi - - if [ "${rconpassword}" ]; then - rconpassword="********" - fi - - if [ "${adminpassword}" ]; then - adminpassword="********" - fi - - if [ "${statspassword}" ]; then - statspassword="********" - fi - - if [ "${webadminpass}" ]; then - webadminpass="********" - fi - - if [ "${telnetpass}" ]; then - telnetpass="********" - fi - - if [ "${wsapikey}" ]; then - wsapikey="********" - fi - - if [ "${gslt}" ]; then - gslt="********" - fi - fi -} - -# Alert Summary -# used with alertlog -fn_info_message_head() { - echo -e "" - echo -e "${lightyellow}Alert Summary${default}" - fn_messages_separator - echo -e "Message" - echo -e "${alertbody}" - echo -e "" - echo -e "Game" - echo -e "${gamename}" - echo -e "" - echo -e "Server name" - echo -e "${servername}" - echo -e "" - echo -e "Hostname" - echo -e "${HOSTNAME}" - echo -e "" - echo -e "Server IP" - echo -e "${ip}:${port}" -} - -fn_info_message_distro() { - # - # Distro Details - # ================================= - # Date: Sun 21 Feb 2021 09:22:53 AM UTC - # Distro: Ubuntu 20.04.2 LTS - # Arch: x86_64 - # Kernel: 5.4.0-65-generic - # Hostname: server - # Uptime: 16d, 5h, 18m - # tmux: tmux 3.0a - # glibc: 2.31 - - echo -e "" - echo -e "${lightyellow}Distro Details${default}" - fn_messages_separator - { - echo -e "${lightblue}Date:\t${default}$(date)" - echo -e "${lightblue}Distro:\t${default}${distroname}" - echo -e "${lightblue}Arch:\t${default}${arch}" - echo -e "${lightblue}Kernel:\t${default}${kernel}" - echo -e "${lightblue}Hostname:\t${default}${HOSTNAME}" - echo -e "${lightblue}Uptime:\t${default}${days}d, ${hours}h, ${minutes}m" - echo -e "${lightblue}tmux:\t${default}${tmuxv}" - echo -e "${lightblue}glibc:\t${default}${glibcversion}" - if [ -n "${javaram}" ]; then - echo -e "${lightblue}Java:\t${default}${javaversion}" - fi - } | column -s $'\t' -t -} - -fn_info_message_server_resource() { - # - # Server Resource - # ================================= - # CPU - # Model: AMD EPYC 7601 32-Core Processor - # Cores: 2 - # Frequency: 2199.994MHz - # Avg Load: 0.01, 0.05, 0.18 - # - # Memory - # Mem: total used free cached available - # Physical: 3.9GB 350MB 3.3GB 3.2GB 3.3GB - # Swap: 512MB 55MB 458MB - # - # Storage - # Filesystem: /dev/sda - # Total: 79G - # Used: 73G - # Available: 1.4G - # - # Network - # IP: 0.0.0.0 - # Internet IP: 176.58.124.96 - - echo -e "" - echo -e "${lightyellow}Server Resource${default}" - fn_messages_separator - { - echo -e "${lightyellow}CPU\t${default}" - echo -e "${lightblue}Model:\t${default}${cpumodel}" - echo -e "${lightblue}Cores:\t${default}${cpucores}" - echo -e "${lightblue}Frequency:\t${default}${cpufreqency}MHz" - echo -e "${lightblue}Avg Load:\t${default}${load}" - } | column -s $'\t' -t - echo -e "" - { - echo -e "${lightyellow}Memory\t${default}" - echo -e "${lightblue}Mem:\t${lightblue}total\tused\tfree\tcached\tavailable${default}" - echo -e "${lightblue}Physical:\t${default}${physmemtotal}\t${physmemused}\t${physmemfree}\t${physmemcached}\t${physmemavailable}${default}" - echo -e "${lightblue}Swap:\t${default}${swaptotal}\t${swapused}\t${swapfree}${default}" - } | column -s $'\t' -t - echo -e "" - { - echo -e "${lightyellow}Storage${default}" - echo -e "${lightblue}Filesystem:\t${default}${filesystem}" - echo -e "${lightblue}Total:\t\t${default}${totalspace}" - echo -e "${lightblue}Used:\t\t${default}${usedspace}" - echo -e "${lightblue}Available:\t${default}${availspace}" - } | column -s $'\t' -t - echo -e "" - { - echo -e "${lightyellow}Network${default}" - if [ -n "${netint}" ]; then - echo -e "${lightblue}Interface:\t${default}${netint}" - fi - if [ -n "${netlink}" ]; then - echo -e "${lightblue}Link Speed:\t${default}${netlink}" - fi - echo -e "${lightblue}IP:\t${default}${ip}" - if [ "${ip}" != "${extip}" ]; then - echo -e "${lightblue}Internet IP:\t${default}${extip}" - fi - } | column -s $'\t' -t -} - -fn_info_message_gameserver_resource() { - # - # Game Server Resource Usage - # ================================= - # CPU Used: 1.1% - # Mem Used: 4.8% 189MB - # - # Storage - # Total: 241M - # Serverfiles: 240M - # Backups: 24K - - echo -e "" - echo -e "${lightyellow}Game Server Resource Usage${default}" - fn_messages_separator - { - if [ "${status}" != "0" ] && [ -v status ]; then - if [ -n "${cpuused}" ]; then - echo -e "${lightblue}CPU Used:\t${default}${cpuused}%${default}" - else - echo -e "${lightblue}CPU Used:\t${red}unknown${default}" - fi - if [ -n "${memused}" ]; then - echo -e "${lightblue}Mem Used:\t${default}${pmemused}%\t${memused}MB${default}" - else - echo -e "${lightblue}Mem Used:\t${default}${pmemused}\t${red}unknown${default}" - fi - else - echo -e "${lightblue}CPU Used:\t${default}0%${default}" - echo -e "${lightblue}Mem Used:\t${default}0%\t0MB${default}" - fi - } | column -s $'\t' -t - echo -e "" - { - echo -e "${lightyellow}Storage${default}" - echo -e "${lightblue}Total:\t${default}${rootdirdu}" - echo -e "${lightblue}Serverfiles:\t${default}${serverfilesdu}" - if [ -d "${backupdir}" ]; then - echo -e "${lightblue}Backups:\t${default}${backupdirdu}" - fi - } | column -s $'\t' -t -} - -fn_info_message_gameserver() { - # - # Counter-Strike: Global Offensive Server Details - # ================================= - # Server name: LinuxGSM - # Server IP: 0.0.0.0:27015 - # Internet IP: 176.48.124.96:34197 - # Server password: NOT SET - # RCON password: adminF54CC0VR - # Players: 0/16 - # Current map: de_mirage - # Default map: de_mirage - # Game type: 0 - # Game mode: 0 - # Tick rate: 64 - # Master Server: listed - # Status: STARTED - - echo -e "" - echo -e "${lightgreen}${gamename} Server Details${default}" - fn_info_message_password_strip - fn_messages_separator - { - # Server name - if [ -n "${gdname}" ]; then - echo -e "${lightblue}Server name:\t${default}${gdname}" - elif [ -n "${servername}" ]; then - echo -e "${lightblue}Server name:\t${default}${servername}" - fi - - # Server description - if [ -n "${serverdescription}" ]; then - echo -e "${lightblue}Server Description:\t${default}${serverdescription}" - fi - - # Appid - if [ -n "${appid}" ]; then - echo -e "${lightblue}App ID:\t${default}${appid}" - fi - - # Branch - if [ -n "${branch}" ]; then - echo -e "${lightblue}Branch:\t${default}${branch}" - fi - - # Beta Password - if [ -n "${betapassword}" ]; then - echo -e "${lightblue}Beta Password:\t${default}${betapassword}" - fi - - # Server Version - if [ -n "${gdversion}" ]; then - echo -e "${lightblue}Server Version:\t${default}${gdversion}" - fi - - # Server ip - echo -e "${lightblue}Server IP:\t${default}${ip}:${port}" - - # Internet ip - if [ -n "${extip}" ]; then - if [ "${ip}" != "${extip}" ]; then - echo -e "${lightblue}Internet IP:\t${default}${extip}:${port}" - fi - fi - - # Display ip - if [ -n "${displayip}" ]; then - echo -e "${lightblue}Display IP:\t${default}${displayip}:${port}" - fi - - # Server password - if [ -n "${serverpassword}" ]; then - echo -e "${lightblue}Server password:\t${default}${serverpassword}" - fi - - # Query enabled (Starbound) - if [ -n "${queryenabled}" ]; then - echo -e "${lightblue}Query enabled:\t${default}${queryenabled}" - fi - - # RCON enabled (Starbound) - if [ -n "${rconenabled}" ]; then - echo -e "${lightblue}RCON enabled:\t${default}${rconenabled}" - fi - - # RCON password - if [ -n "${rconpassword}" ]; then - echo -e "${lightblue}RCON password:\t${default}${rconpassword}" - fi - - # RCON web (Rust) - if [ -n "${rconweb}" ]; then - echo -e "${lightblue}RCON web:\t${default}${rconweb}" - fi - - # Admin password - if [ -n "${adminpassword}" ]; then - echo -e "${lightblue}Admin password:\t${default}${adminpassword}" - fi - - # Stats password (Quake Live) - if [ -n "${statspassword}" ]; then - echo -e "${lightblue}Stats password:\t${default}${statspassword}" - fi - - # Players - if [ "${querystatus}" != "0" ]; then - if [ -n "${maxplayers}" ]; then - echo -e "${lightblue}Maxplayers:\t${default}${maxplayers}" - fi - else - if [ -n "${gdplayers}" ] && [ -n "${gdmaxplayers}" ]; then - echo -e "${lightblue}Players:\t${default}${gdplayers}/${gdmaxplayers}" - elif [ -n "${gdplayers}" ] && [ -n "${maxplayers}" ]; then - echo -e "${lightblue}Players:\t${default}${gdplayers}/${maxplayers}" - elif [ -z "${gdplayers}" ] && [ -n "${gdmaxplayers}" ]; then - echo -e "${lightblue}Players:\t${default}0/${gdmaxplayers}" - elif [ -n "${gdplayers}" ] && [ -z "${gdmaxplayers}" ]; then - echo -e "${lightblue}Players:\t${default}${gdplayers}/∞" - elif [ -z "${gdplayers}" ] && [ -z "${gdmaxplayers}" ] && [ -n "${maxplayers}" ]; then - echo -e "${lightblue}Maxplayers:\t${default}${maxplayers}" - fi - fi - - # Reverved Slots - if [ -n "${statspassword}" ]; then - echo -e "${lightblue}Reserved Slots:\t${default}${reservedslots}" - fi - - # Bots - if [ -n "${gdbots}" ]; then - echo -e "${lightblue}Bots:\t${default}${gdbots}" - fi - - # Current map - if [ -n "${gdmap}" ]; then - echo -e "${lightblue}Current map:\t${default}${gdmap}" - fi - - # Default map - if [ -n "${defaultmap}" ]; then - echo -e "${lightblue}Default map:\t${default}${defaultmap}" - fi - - if [ -n "${defaultscenario}" ]; then - # Current scenario (Insurgency: Sandstorm) - if [ -n "${gdgamemode}" ]; then - echo -e "${lightblue}Current scenario:\t${default}${gdgamemode}" - fi - else - # Current game mode - if [ -n "${gdgamemode}" ]; then - echo -e "${lightblue}Current game mode:\t${default}${gdgamemode}" - fi - fi - - # Default scenario - if [ -n "${defaultscenario}" ]; then - echo -e "${lightblue}Default scenario:\t${default}${defaultscenario}" - fi - - # Game type - if [ -n "${gametype}" ]; then - echo -e "${lightblue}Game type:\t${default}${gametype}" - fi - - # Game mode - if [ -n "${gamemode}" ]; then - echo -e "${lightblue}Game mode:\t${default}${gamemode}" - fi - - # Game world - if [ -n "${gameworld}" ]; then - echo -e "${lightblue}Game world:\t${default}${gameworld}" - fi - - # Tick rate - if [ -n "${tickrate}" ]; then - echo -e "${lightblue}Tick rate:\t${default}${tickrate}" - fi - - # Sharding (Don't Starve Together) - if [ -n "${sharding}" ]; then - echo -e "${lightblue}Sharding:\t${default}${sharding}" - fi - - # Master (Don't Starve Together) - if [ -n "${master}" ]; then - echo -e "${lightblue}Master:\t${default}${master}" - fi - - # Shard (Don't Starve Together) - if [ -n "${shard}" ]; then - echo -e "${lightblue}Shard:\t${default}${shard}" - fi - - # Cluster (Don't Starve Together) - if [ -n "${cluster}" ]; then - echo -e "${lightblue}Cluster:\t${default}${cluster}" - fi - - # Cave (Don't Starve Together) - if [ -n "${cave}" ]; then - echo -e "${lightblue}Cave:\t${default}${cave}" - fi - - # Creativemode (Hurtworld) - if [ -n "${creativemode}" ]; then - echo -e "${lightblue}Creativemode:\t${default}${creativemode}" - fi - - # TeamSpeak dbplugin - if [ -n "${dbplugin}" ]; then - echo -e "${lightblue}dbplugin:\t${default}${dbplugin}" - fi - - # ASE (Multi Theft Auto) - if [ -n "${ase}" ]; then - echo -e "${lightblue}ASE:\t${default}${ase}" - fi - - # Save interval (Rust) - if [ -n "${saveinterval}" ]; then - echo -e "${lightblue}Save interval:\t${default}${saveinterval}s" - fi - - # Seed (Rust) - if [ -n "${seed}" ]; then - echo -e "${lightblue}Seed:\t${default}${seed}" - fi - - # Salt (Rust) - if [ -n "${salt}" ]; then - echo -e "${lightblue}Salt:\t${default}${salt}" - fi - - # World Size (Rust) - if [ -n "${worldsize}" ]; then - echo -e "${lightblue}World size:\t${default}${worldsize}m" - fi - - # Random map rotation mode (Squad and Post Scriptum) - if [ -n "${randommap}" ]; then - echo -e "${lightblue}Map rotation:\t${default}${randommap}" - fi - - # Server Version (Jedi Knight II: Jedi Outcast) - if [ -n "${serverversion}" ]; then - echo -e "${lightblue}Server Version:\t${default}${serverversion}" - fi - - # authentication token (Factorio) - if [ -n "${authtoken}" ]; then - echo -e "${lightblue}Auth Token:\t${default}${authtoken}" - fi - - # savegameinterval (Factorio) - if [ -n "${savegameinterval}" ]; then - echo -e "${lightblue}Savegame Interval:\t${default}${savegameinterval}" - fi - - # versioncount (Factorio) - if [ -n "${versioncount}" ]; then - echo -e "${lightblue}Version Count:\t${default}${versioncount}" - fi - - # Listed on Master server - if [ -n "${displaymasterserver}" ]; then - if [ "${displaymasterserver}" == "true" ]; then - echo -e "${lightblue}Master server:\t${green}listed${default}" - else - echo -e "${lightblue}Master server:\t${red}not listed${default}" - fi - fi - - # Game server status - if [ "${status}" == "0" ]; then - echo -e "${lightblue}Status:\t${red}STOPPED${default}" - else - echo -e "${lightblue}Status:\t${green}STARTED${default}" - fi - } | column -s $'\t' -t - echo -e "" -} - -fn_info_message_script() { - # csgoserver Script Details - # ================================= - # Script name: csgoserver - # LinuxGSM version: v21.1.3 - # glibc required: 2.18 - # Discord alert: off - # Email alert: off - # Gotify alert: off - # IFTTT alert: off - # Mailgun (email) alert: off - # Pushbullet alert: off - # Pushover alert: off - # Rocketchat alert: off - # Slack alert: off - # Telegram alert: off - # Update on start: off - # User: lgsm - # Location: /home/lgsm/csgoserver - # Config file: /home/lgsm/csgoserver/serverfiles/csgo/cfg/csgoserver.cfg - - echo -e "${lightgreen}${selfname} Script Details${default}" - fn_messages_separator - { - # Script name - echo -e "${lightblue}Script name:\t${default}${selfname}" - - # LinuxGSM version - if [ -n "${version}" ]; then - echo -e "${lightblue}LinuxGSM version:\t${default}${version}" - fi - - # glibc required - if [ -n "${glibc}" ]; then - if [ "${glibc}" == "null" ]; then - # Glibc is not required. - : - elif [ -z "${glibc}" ]; then - echo -e "${lightblue}glibc required:\t${red}UNKNOWN${default}" - elif [ "$(printf '%s\n'${glibc}'\n' ${glibcversion} | sort -V | head -n 1)" != "${glibc}" ]; then - echo -e "${lightblue}glibc required:\t${red}${glibc} ${default}(${red}distro glibc ${glibcversion} too old${default})" - else - echo -e "${lightblue}glibc required:\t${green}${glibc}${default}" - fi - fi - - # Discord alert - echo -e "${lightblue}Discord alert:\t${default}${discordalert}" - # Email alert - echo -e "${lightblue}Email alert:\t${default}${emailalert}" - # Gotify alert - echo -e "${lightblue}Gotify alert:\t${default}${gotifyalert}" - # IFTTT alert - echo -e "${lightblue}IFTTT alert:\t${default}${iftttalert}" - # Mailgun alert - echo -e "${lightblue}Mailgun (email) alert:\t${default}${mailgunalert}" - # Pushbullet alert - echo -e "${lightblue}Pushbullet alert:\t${default}${pushbulletalert}" - # Pushover alert - echo -e "${lightblue}Pushover alert:\t${default}${pushoveralert}" - # Rocketchat alert - echo -e "${lightblue}Rocketchat alert:\t${default}${rocketchatalert}" - # Slack alert - echo -e "${lightblue}Slack alert:\t${default}${slackalert}" - # Telegram alert - echo -e "${lightblue}Telegram alert:\t${default}${telegramalert}" - - # Update on start - if [ -n "${updateonstart}" ]; then - echo -e "${lightblue}Update on start:\t${default}${updateonstart}" - fi - - # User - echo -e "${lightblue}User:\t${default}$(whoami)" - - # Script location - echo -e "${lightblue}Location:\t${default}${rootdir}" - - # Config file location - if [ -n "${servercfgfullpath}" ]; then - if [ -f "${servercfgfullpath}" ]; then - echo -e "${lightblue}Config file:\t${default}${servercfgfullpath}" - elif [ -d "${servercfgfullpath}" ]; then - echo -e "${lightblue}Config dir:\t${default}${servercfgfullpath}" - else - echo -e "${lightblue}Config file:\t${default}${red}${servercfgfullpath}${default} (${red}FILE MISSING${default})" - fi - fi - - # Network config file location (ARMA 3) - if [ -n "${networkcfgfullpath}" ]; then - echo -e "${lightblue}Network config file:\t${default}${networkcfgfullpath}" - fi - } | column -s $'\t' -t -} - -fn_info_message_backup() { - # - # Backups - # ================================= - # No. of backups: 1 - # Latest backup: - # date: Fri May 6 18:34:19 UTC 2016 - # file: /home/lgsm/qlserver/backups/ql-server-2016-05-06-183239.tar.gz - # size: 945M - - echo -e "" - echo -e "${lightgreen}Backups${default}" - fn_messages_separator - if [ ! -d "${backupdir}" ] || [ "${backupcount}" == "0" ]; then - echo -e "No Backups created" - else - { - echo -e "${lightblue}No. of backups:\t${default}${backupcount}" - echo -e "${lightblue}Latest backup:${default}" - if [ "${lastbackupdaysago}" == "0" ]; then - echo -e "${lightblue} date:\t${default}${lastbackupdate} (less than 1 day ago)" - elif [ "${lastbackupdaysago}" == "1" ]; then - echo -e "${lightblue} date:\t${default}${lastbackupdate} (1 day ago)" - else - echo -e "${lightblue} date:\t${default}${lastbackupdate} (${lastbackupdaysago} days ago)" - fi - echo -e "${lightblue} file:\t${default}${lastbackup}" - echo -e "${lightblue} size:\t${default}${lastbackupsize}" - } | column -s $'\t' -t - fi -} - -fn_info_message_commandlineparms() { - # - # Command-line Parameters - # ================================= - # ./run_server_x86.sh +set net_strict 1 - - echo -e "" - echo -e "${lightgreen}Command-line Parameters${default}" - fn_info_message_password_strip - fn_messages_separator - if [ "${serverpassword}" == "NOT SET" ]; then - unset serverpassword - fi - fn_reload_startparameters - echo -e "${preexecutable} ${executable} ${startparameters}" -} - -fn_info_message_ports_edit() { - # - # Ports - # ================================= - # Change ports by editing the parameters in: - # /home/lgsm/qlserver/serverfiles/baseq3/ql-server.cfg - echo -e "" - echo -e "${lightgreen}Ports${default}" - fn_messages_separator - echo -e "${lightblue}Change ports by editing the parameters in:${default}" - - startparameterslocation="${red}UNKNOWN${default}" - # engines/games that require editing in the config file. - local ports_edit_array=("ac" "arma3" "armar" "bo" "bt" "cd" "dst" "eco" "idtech2" "idtech3" "idtech3_ql" "jc2" "jc3" "lwjgl2" "mcb" "nec" "pc" "pc2" "prism3d" "pz" "qw" "refractor" "renderware" "rw" "sb" "sdtd" "st" "stn" "ts3" "tw" "terraria" "unreal" "unreal2" "unreal3" "vints" "wurm") - for port_edit in "${ports_edit_array[@]}"; do - if [ "${shortname}" == "ut3" ]; then - startparameterslocation="${servercfgdir}/UTWeb.ini" - elif [ "${shortname}" == "kf2" ]; then - startparameterslocation="${servercfgdir}/LinuxServer-KFEngine.ini\n${servercfgdir}/KFWeb.ini" - elif [ "${engine}" == "${port_edit}" ] || [ "${gamename}" == "${port_edit}" ] || [ "${shortname}" == "${port_edit}" ]; then - startparameterslocation="${servercfgfullpath}" - fi - done - # engines/games that require editing the start parameters. - local ports_edit_array=("av" "ck" "col" "fctr" "goldsrc" "hw" "iw3.0" "ioquake3" "qfusion" "rust" "scpsl" "scpslsm" "sol" "spark" "source" "unreal4" "arma3" "dayz" "unt" "vh") - for port_edit in "${ports_edit_array[@]}"; do - if [ "${engine}" == "${port_edit}" ] || [ "${gamename}" == "${port_edit}" ] || [ "${shortname}" == "${port_edit}" ]; then - startparameterslocation="${configdirserver}" - fi - done - echo -e "${startparameterslocation}" - echo -e "" -} - -fn_info_message_ports() { - echo -e "${lightblue}Useful port diagnostic command:${default}" - if [ "${shortname}" == "armar" ]; then - echo -e "ss -tuplwn | grep enfMain" - elif [ "${shortname}" == "av" ]; then - echo -e "ss -tuplwn | grep AvorionServer" - elif [ "${shortname}" == "bf1942" ]; then - echo -e "ss -tuplwn | grep bf1942_lnxded" - elif [ "${shortname}" == "mc" ] || [ "${shortname}" == "nec" ] || [ "${shortname}" == "pmc" ] || [ "${shortname}" == "rw" ] || [ "${shortname}" == "vpmc" ] || [ "${shortname}" == "wmc" ]; then - echo -e "ss -tuplwn | grep java" - elif [ "${shortname}" == "terraria" ]; then - echo -e "ss -tuplwn | grep Main" - elif [ "${engine}" == "source" ]; then - echo -e "ss -tuplwn | grep srcds_linux" - elif [ "${engine}" == "goldsrc" ]; then - echo -e "ss -tuplwn | grep hlds_linux" - else - executableshort="$(basename "${executable}" | cut -c -15)" - echo -e "ss -tuplwn | grep ${executableshort}" - fi - echo -e "" -} - -fn_info_message_statusbottom() { - echo -e "" - if [ "${status}" == "0" ]; then - echo -e "${lightblue}Status:\t${red}STOPPED${default}" - else - echo -e "${lightblue}Status:\t${green}STARTED${default}" - fi - echo -e "" -} - -fn_info_logs() { - echo -e "" - echo -e "${selfname} Logs" - echo -e "=================================" - - if [ -n "${lgsmlog}" ]; then - echo -e "\nScript log\n===================" - if [ ! "$(ls -A "${lgsmlogdir}")" ]; then - echo -e "${lgsmlogdir} (NO LOG FILES)" - elif [ ! -s "${lgsmlog}" ]; then - echo -e "${lgsmlog} (LOG FILE IS EMPTY)" - else - echo -e "${lgsmlog}" - tail -25 "${lgsmlog}" - fi - echo -e "" - fi - - if [ -n "${consolelog}" ]; then - echo -e "\nConsole log\n====================" - if [ ! "$(ls -A "${consolelogdir}")" ]; then - echo -e "${consolelogdir} (NO LOG FILES)" - elif [ ! -s "${consolelog}" ]; then - echo -e "${consolelog} (LOG FILE IS EMPTY)" - else - echo -e "${consolelog}" - tail -25 "${consolelog}" | awk '{ sub("\r$", ""); print }' - fi - echo -e "" - fi - - if [ -n "${gamelogdir}" ]; then - echo -e "\nServer log\n===================" - if [ ! "$(ls -A "${gamelogdir}")" ]; then - echo -e "${gamelogdir} (NO LOG FILES)" - else - echo -e "${gamelogdir}" - # dos2unix sed 's/\r//' - tail "${gamelogdir}"/* 2> /dev/null | grep -v "==>" | sed '/^$/d' | sed 's/\r//' | tail -25 - fi - echo -e "" - fi -} - -# Engine/Game Specific details - -# Function used to generate port info. by passing info to function. (Reduces repeating code) -# example output -# DESCRIPTION PORT PROTOCOL LISTEN -# Game 7777 udp 1 -# RAW UDP Socket 7778 udp 1 -# Query 27015 udp 1 -# RCON 27020 tcp 1 - -fn_port() { - if [ "${1}" == "header" ]; then - echo -e "${lightblue}DESCRIPTION\tPORT\tPROTOCOL\tLISTEN${default}" - else - portname="${1}" - porttype="${2}" - portprotocol="${3}" - echo -e "${portname}\t${!porttype}\t${portprotocol}\t$(echo "${ssinfo}" | grep "${portprotocol}" | grep -c "${!porttype}")" - fi -} - -fn_info_message_ac() { - { - fn_port "header" - fn_port "Game" port udp - fn_port "Game" port tcp - fn_port "Query" queryport udp - fn_port "HTTP" httpport tcp - } | column -s $'\t' -t -} - -fn_info_message_ark() { - { - fn_port "header" - fn_port "Game" port udp - fn_port "RAW UDP Socket" rawport udp - fn_port "Query" queryport udp - fn_port "RCON" rconport tcp - } | column -s $'\t' -t -} - -fn_info_message_arma3() { - { - fn_port "header" - fn_port "Game" port udp - fn_port "Voice" voiceport udp - fn_port "Query" queryport udp - fn_port "Steam Master" steammasterport udp - fn_port "Voice (unused)" voiceunusedport udp - fn_port "BattleEye" battleeyeport udp - } | column -s $'\t' -t -} - -fn_info_message_armar() { - { - fn_port "header" - fn_port "Game" port udp - fn_port "Steam Query" queryport udp - fn_port "BattleEye" battleeyeport tcp - } | column -s $'\t' -t -} - -fn_info_message_av() { - { - fn_port "header" - fn_port "Game" port udp - fn_port "Query" queryport udp - fn_port "Steam Master" steammasterport udp - fn_port "Steam Query" steamqueryport udp - fn_port "RCON" rconport tcp - } | column -s $'\t' -t -} - -fn_info_message_bf1942() { - { - fn_port "header" - fn_port "Game" port udp - fn_port "Query" queryport udp - } | column -s $'\t' -t -} - -fn_info_message_bfv() { - { - fn_port "header" - fn_port "Game" port udp - fn_port "Query" queryport udp - } | column -s $'\t' -t -} - -fn_info_message_bo() { - { - fn_port "header" - fn_port "Game" port udp - fn_port "Query" queryport udp - } | column -s $'\t' -t -} - -fn_info_message_bt() { - { - fn_port "header" - fn_port "Game" port udp - fn_port "Query" queryport udp - } | column -s $'\t' -t -} - -fn_info_message_btl() { - { - fn_port "header" - fn_port "Game" port udp - fn_port "Query" queryport udp - fn_port "RCON" rconport tcp - } | column -s $'\t' -t -} - -fn_info_messages_cd() { - { - fn_port "header" - fn_port "Game" port udp - fn_port "Steam" steamport udp - fn_port "RCON" rconport tcp - } | column -s $'\t' -t -} - -fn_info_messages_ck() { - { - fn_port "header" - fn_port "Game" port udp - fn_port "Query" queryport udp - } | column -s $'\t' -t -} - -fn_info_message_cmw() { - fn_info_message_password_strip - { - fn_port "header" - fn_port "Game" port udp - fn_port "Query" queryport udp - fn_port "RCON" rconport tcp - } | column -s $'\t' -t -} - -fn_info_message_cod() { - { - fn_port "header" - fn_port "Game" port udp - fn_port "Query" queryport udp - } | column -s $'\t' -t -} - -fn_info_message_coduo() { - { - fn_port "header" - fn_port "Game" port udp - fn_port "Query" queryport udp - } | column -s $'\t' -t -} - -fn_info_message_cod2() { - { - fn_port "header" - fn_port "Game" port udp - fn_port "Query" queryport udp - } | column -s $'\t' -t -} - -fn_info_message_cod4() { - { - fn_port "header" - fn_port "Game" port udp - fn_port "Query" queryport udp - } | column -s $'\t' -t -} - -fn_info_message_codwaw() { - { - fn_port "header" - fn_port "Game" port udp - fn_port "Query" queryport udp - } | column -s $'\t' -t -} - -fn_info_message_col() { - { - fn_port "header" - fn_port "Game" port udp - fn_port "Query" queryport tcp - fn_port "Steam" steamport tcp - } | column -s $'\t' -t -} - -fn_info_message_csgo() { - { - fn_port "header" - fn_port "Game" port udp - fn_port "Query" queryport tcp - fn_port "RCON" rconport tcp - fn_port "SourceTV" sourcetvport udp - fn_port "Client" clientport udp - } | column -s $'\t' -t -} - -fn_info_message_dayz() { - { - fn_port "header" - fn_port "Game" port udp - fn_port "Query Steam" queryport udp - fn_port "Steam Master" steammasterport udp - fn_port "BattleEye" battleeyeport udp - } | column -s $'\t' -t -} - -fn_info_message_dodr() { - { - fn_port "header" - fn_port "Game" port udp - fn_port "Query" queryport udp - } | column -s $'\t' -t -} - -fn_info_message_dst() { - { - fn_port "header" - fn_port "Game: Server" port udp - fn_port "Game: Master" masterport udp - fn_port "Steam: Auth" steamauthport udp - fn_port "Steam: Master" steammasterport udp - } | column -s $'\t' -t -} - -fn_info_message_eco() { - { - fn_port "header" - fn_port "Game" port udp - fn_port "Web Admin" webadminport tcp - } | column -s $'\t' -t -} - -fn_info_message_etl() { - { - fn_port "header" - fn_port "Game" port udp - fn_port "Query" queryport udp - } | column -s $'\t' -t -} - -fn_info_message_fctr() { - { - fn_port "header" - fn_port "Game" port udp - fn_port "RCON" rconport tcp - } | column -s $'\t' -t -} - -fn_info_message_goldsrc() { - { - fn_port "header" - fn_port "Game" port udp - fn_port "Client" clientport udp - } | column -s $'\t' -t -} - -fn_info_message_hw() { - { - fn_port "header" - fn_port "Game" port udp - fn_port "Query" queryport udp - } | column -s $'\t' -t -} - -fn_info_message_ins() { - { - fn_port "header" - fn_port "Game" port udp - fn_port "Query" queryport tcp - fn_port "RCON" rconport tcp - fn_port "SourceTV" sourcetvport udp - fn_port "Client" clientport udp - } | column -s $'\t' -t -} - -fn_info_message_inss() { - { - fn_port "header" - fn_port "Game" port udp - fn_port "Query" queryport udp - fn_port "RCON" rconport tcp - } | column -s $'\t' -t -} - -fn_info_message_jc2() { - { - fn_port "header" - fn_port "Game" port udp - fn_port "Query" queryport udp - } | column -s $'\t' -t -} - -fn_info_message_jc3() { - { - fn_port "header" - fn_port "Game" port udp - fn_port "Query" queryport udp - fn_port "Steam" steamport udp - fn_port "HTTP" httpport tcp - } | column -s $'\t' -t -} - -fn_info_message_jk2() { - { - fn_port "header" - fn_port "Game" port udp - } | column -s $'\t' -t -} - -fn_info_message_kf() { - { - fn_port "header" - fn_port "Game" port udp - fn_port "Query" queryport udp - fn_port "Query (GameSpy)" queryportgs udp - fn_port "Web Admin" webadminport tcp - fn_port "LAN" lanport udp - fn_port "Steam" steamport udp - fn_port "Steam Master" steammasterport udp - } | column -s $'\t' -t - echo -e "" - echo -e "${lightgreen}${servername} Web Admin${default}" - fn_messages_separator - { - echo -e "${lightblue}Web Admin enabled:\t${default}${webadminenabled}" - echo -e "${lightblue}Web Admin url:\t${default}http://${webadminip}:${webadminport}" - echo -e "${lightblue}Web Admin username:\t${default}${webadminuser}" - echo -e "${lightblue}Web Admin password:\t${default}${webadminpass}" - } | column -s $'\t' -t -} - -fn_info_message_kf2() { - fn_info_message_password_strip - { - fn_port "header" - fn_port "Game" port udp - fn_port "Query" queryport udp - fn_port "Web Admin" webadminport tcp - } | column -s $'\t' -t - echo -e "" - echo -e "${lightgreen}${servername} Web Admin${default}" - fn_messages_separator - { - echo -e "${lightblue}Web Admin enabled:\t${default}${webadminenabled}" - echo -e "${lightblue}Web Admin url:\t${default}http://${webadminip}:${webadminport}" - echo -e "${lightblue}Web Admin username:\t${default}${webadminuser}" - echo -e "${lightblue}Web Admin password:\t${default}${webadminpass}" - } | column -s $'\t' -t -} - -fn_info_message_lo() { - { - fn_port "header" - fn_port "Game" port udp - fn_port "Query" queryport udp - } | column -s $'\t' -t -} - -fn_info_message_mc() { - { - fn_port "header" - fn_port "Game" port tcp - fn_port "Query" queryport udp - fn_port "RCON" rconport tcp - } | column -s $'\t' -t -} - -fn_info_message_mcb() { - { - fn_port "header" - fn_port "Game" port udp - fn_port "Game" portipv6 udp6 - } | column -s $'\t' -t -} - -fn_info_message_mh() { - { - fn_port "header" - fn_port "Game" port udp - fn_port "Query" queryport udp - fn_port "Beacon" beaconport udp - } | column -s $'\t' -t -} - -fn_info_message_mohaa() { - { - fn_port "header" - fn_port "Game" port udp - } | column -s $'\t' -t -} - -fn_info_message_mom() { - { - fn_port "header" - fn_port "Game" port udp - fn_port "Beacon" beaconport udp - } | column -s $'\t' -t -} - -fn_info_message_mta() { - { - fn_port "header" - fn_port "Game" port udp - if [ "${ase}" == "Enabled" ]; then - fn_port "Query" queryport udp - fi - fn_port "HTTP" httpport tcp - } | column -s $'\t' -t -} - -fn_info_message_nec() { - { - fn_port "header" - fn_port "Game" port udp - } | column -s $'\t' -t -} - -fn_info_message_onset() { - { - fn_port "header" - fn_port "Game" port udp - fn_port "Query" queryport udp - fn_port "HTTP" httpport tcp - } | column -s $'\t' -t -} - -fn_info_message_pc() { - { - fn_port "header" - fn_port "Game" port udp - fn_port "Query" queryport udp - fn_port "Steam" steamport udp - } | column -s $'\t' -t -} - -fn_info_message_pc2() { - { - fn_port "header" - fn_port "Game" port udp - fn_port "Query" queryport udp - fn_port "Steam" steamport udp - } | column -s $'\t' -t -} - -fn_info_message_pstbs() { - { - fn_port "header" - fn_port "Game" port udp - fn_port "Query" queryport udp - fn_port "RCON" rconport tcp - } | column -s $'\t' -t -} - -fn_info_message_pvr() { - { - fn_port "header" - fn_port "Game" port udp - fn_port "Game" port tcp - fn_port "Game+400" port401 udp - fn_port "Query" queryport tcp - } | column -s $'\t' -t -} - -fn_info_message_pz() { - { - fn_port "header" - fn_port "Game" port udp - fn_port "Query" queryport udp - } | column -s $'\t' -t -} - -fn_info_message_qw() { - { - fn_port "header" - fn_port "Game" port udp - } | column -s $'\t' -t -} - -fn_info_message_q2() { - { - fn_port "header" - fn_port "Game" port udp - } | column -s $'\t' -t -} - -fn_info_message_q3() { - { - fn_port "header" - fn_port "Game" port udp - } | column -s $'\t' -t -} - -fn_info_message_ql() { - { - fn_port "header" - fn_port "Game" port udp - fn_port "Query" queryport udp - fn_port "RCON" rconport tcp - fn_port "Stats" statsport udp - } | column -s $'\t' -t -} - -fn_info_message_ro() { - { - fn_port "header" - fn_port "Game" port udp - fn_port "Query" queryport udp - fn_port "Web Admin" webadminport tcp - fn_port "LAN" lanport udp - fn_port "Steam" steamport udp - fn_port "Steam Master" steammasterport udp - } | column -s $'\t' -t - echo -e "" - echo -e "${lightgreen}${servername} Web Admin${default}" - fn_messages_separator - { - echo -e "${lightblue}Web Admin enabled:\t${default}${webadminenabled}" - echo -e "${lightblue}Web Admin url:\t${default}http://${webadminip}:${webadminport}" - echo -e "${lightblue}Web Admin username:\t${default}${webadminuser}" - echo -e "${lightblue}Web Admin password:\t${default}${webadminpass}" - } | column -s $'\t' -t -} - -fn_info_message_rtcw() { - { - fn_port "header" - fn_port "Game" port udp - } | column -s $'\t' -t -} - -fn_info_message_rust() { - { - fn_port "header" - fn_port "Game" port udp - fn_port "Query" queryport udp - fn_port "RCON" rconport tcp - fn_port "App" appport tcp - } | column -s $'\t' -t -} - -fn_info_message_rw() { - { - fn_port "header" - fn_port "Game" port udp - fn_port "Game+1" port2 udp - fn_port "Game+2" port3 udp - fn_port "Game+3" port4 udp - fn_port "Game+1" port2 tcp - fn_port "Game+2" port3 tcp - fn_port "Game+3" port4 tcp - fn_port "Query" queryport tcp - fn_port "Query HTTP" httpqueryport tcp - fn_port "RCON" rconport tcp - } | column -s $'\t' -t -} - -fn_info_message_samp() { - { - fn_port "header" - fn_port "Game" port udp - fn_port "RCON" rconport udp - } | column -s $'\t' -t -} - -fn_info_message_sb() { - { - fn_port "header" - fn_port "Game" port udp - fn_port "Query" queryport tcp - fn_port "RCON" rconport tcp - } | column -s $'\t' -t -} - -fn_info_message_sbots() { - { - fn_port "header" - fn_port "Game" port udp - fn_port "Query" queryport udp - } | column -s $'\t' -t -} - -fn_info_message_scpsl() { - { - fn_port "header" - fn_port "Game" port tcp - } | column -s $'\t' -t -} - -fn_info_message_sdtd() { - fn_info_message_password_strip - { - fn_port "header" - fn_port "Game" port udp - fn_port "Game+2" port3 udp - fn_port "Query" queryport tcp - fn_port "Web Admin" webadminport tcp - fn_port "Telnet" telnetport tcp - } | column -s $'\t' -t - echo -e "" - echo -e "${lightgreen}${gamename} Web Admin${default}" - fn_messages_separator - { - echo -e "${lightblue}Web Admin enabled:\t${default}${webadminenabled}" - echo -e "${lightblue}Web Admin url:\t${default}http://${webadminip}:${webadminport}/index.html" - echo -e "${lightblue}Web Admin username:\t${default}${webadminuser}" - echo -e "${lightblue}Web Admin password:\t${default}${webadminpass}" - } | column -s $'\t' -t - echo -e "" - echo -e "${lightgreen}${gamename} Telnet${default}" - fn_messages_separator - { - echo -e "${lightblue}Telnet enabled:\t${default}${telnetenabled}" - echo -e "${lightblue}Telnet address:\t${default}${telnetip} ${telnetport}" - echo -e "${lightblue}Telnet password:\t${default}${telnetpass}" - } | column -s $'\t' -t -} - -fn_info_message_sf() { - { - fn_port "header" - fn_port "Game" port udp - fn_port "Query" queryport udp - fn_port "Beacon" beaconport udp - } | column -s $'\t' -t -} - -fn_info_message_sof2() { - { - fn_port "header" - fn_port "Game" port udp - fn_port "Query" queryport udp - } | column -s $'\t' -t -} - -fn_info_message_sol() { - { - fn_port "header" - fn_port "Game" port udp - fn_port "Query" queryport udp - fn_port "Files" filesport tcp - } | column -s $'\t' -t -} - -fn_info_message_prism3d() { - { - fn_port "header" - fn_port "Game" port udp - fn_port "Query" queryport udp - } | column -s $'\t' -t -} - -fn_info_message_source() { - { - fn_port "header" - fn_port "Game" port udp - fn_port "Query" queryport tcp - fn_port "RCON" rconport tcp - fn_port "SourceTV" sourcetvport udp - # Will not show if unaviable - if [ "${steamport}" == "0" ] || [ -v "${steamport}" ]; then - fn_port "Steam" steamport udp - fi - fn_port "Client" clientport udp - } | column -s $'\t' -t -} - -fn_info_message_spark() { - fn_info_message_password_strip - { - fn_port "header" - fn_port "Game" port udp - fn_port "Query" queryport udp - fn_port "Web Admin" webadminport tcp - } | column -s $'\t' -t - echo -e "" - echo -e "${lightgreen}${gamename} Web Admin${default}" - fn_messages_separator - { - echo -e "${lightblue}Web Admin url:\t${default}http://${webadminip}:${webadminport}/index.html" - echo -e "${lightblue}Web Admin username:\t${default}${webadminuser}" - echo -e "${lightblue}Web Admin password:\t${default}${webadminpass}" - } | column -s $'\t' -t -} - -fn_info_message_squad() { - { - fn_port "header" - fn_port "Game" port udp - fn_port "Query" queryport udp - fn_port "RCON" rconport tcp - } | column -s $'\t' -t -} - -fn_info_message_st() { - { - fn_port "header" - fn_port "Game" port udp - fn_port "Query" queryport udp - fn_port "Web Admin" webadminport tcp - } | column -s $'\t' -t - echo -e "" - echo -e "${lightgreen}${gamename} Web Admin${default}" - fn_messages_separator - { - echo -e "${lightblue}Web Admin url:\t${default}http://${webadminip}:${webadminport}" - } | column -s $'\t' -t -} - -fn_info_message_ti() { - { - fn_port "header" - fn_port "Game" port udp - fn_port "Query" queryport udp - } | column -s $'\t' -t -} - -fn_info_message_ts3() { - { - fn_port "header" - fn_port "Voice" port udp - fn_port "Query" queryport tcp - fn_port "Query (SSH)" querysshport tcp - fn_port "Query (http)" queryhttpport tcp - fn_port "Query (https)" queryhttpsport tcp - fn_port "File Transfer" fileport tcp - fn_port "Telnet" telnetport tcp - } | column -s $'\t' -t -} - -fn_info_message_tw() { - { - fn_port "header" - fn_port "Game" port udp - fn_port "Query" queryport udp - } | column -s $'\t' -t -} - -fn_info_message_terraria() { - { - fn_port "header" - fn_port "Game" port tcp - fn_port "Query" queryport tcp - } | column -s $'\t' -t -} - -fn_info_message_tu() { - { - fn_port "header" - fn_port "Game" port udp - fn_port "Query" queryport udp - fn_port "Steam" steamport udp - } | column -s $'\t' -t -} - -fn_info_message_unreal() { - fn_info_message_password_strip - { - fn_port "header" - fn_port "Game" port udp - fn_port "Query" queryport udp - fn_port "LAN Beacon" beaconport udp - fn_port "Web Admin" webadminport tcp - } | column -s $'\t' -t - echo -e "" - echo -e "${lightgreen}${servername} Web Admin${default}" - fn_messages_separator - { - echo -e "${lightblue}Web Admin enabled:\t${default}${webadminenabled}" - echo -e "${lightblue}Web Admin url:\t${default}http://${webadminip}:${webadminport}" - echo -e "${lightblue}Web Admin username:\t${default}${webadminuser}" - echo -e "${lightblue}Web Admin password:\t${default}${webadminpass}" - } | column -s $'\t' -t -} - -fn_info_message_ut2k4() { - { - fn_port "header" - fn_port "Game" port udp - fn_port "Query" queryport udp - fn_port "Query (GameSpy)" queryportgs udp - fn_port "Web Admin" webadminport tcp - fn_port "LAN" lanport udp - } | column -s $'\t' -t - echo -e "" - echo -e "${lightgreen}${servername} Web Admin${default}" - fn_messages_separator - { - echo -e "${lightblue}Web Admin enabled:\t${default}${webadminenabled}" - echo -e "${lightblue}Web Admin url:\t${default}http://${webadminip}:${webadminport}" - echo -e "${lightblue}Web Admin username:\t${default}${webadminuser}" - echo -e "${lightblue}Web Admin password:\t${default}${webadminpass}" - } | column -s $'\t' -t -} - -fn_info_message_unreal() { - fn_info_message_password_strip - { - fn_port "header" - fn_port "Game" port udp - fn_port "Query" queryport udp - fn_port "LAN Beacon" beaconport udp - fn_port "Web Admin" webadminport tcp - } | column -s $'\t' -t - echo -e "" - echo -e "${lightgreen}${servername} Web Admin${default}" - fn_messages_separator - { - echo -e "${lightblue}Web Admin enabled:\t${default}${webadminenabled}" - echo -e "${lightblue}Web Admin url:\t${default}http://${webadminip}:${webadminport}" - echo -e "${lightblue}Web Admin username:\t${default}${webadminuser}" - echo -e "${lightblue}Web Admin password:\t${default}${webadminpass}" - } | column -s $'\t' -t -} - -fn_info_message_unt() { - { - fn_port "header" - fn_port "Game" port udp - fn_port "Query" queryport udp - fn_port "Steam" steamport udp - } | column -s $'\t' -t -} - -fn_info_message_ut() { - { - fn_port "header" - fn_port "Game" port udp - fn_port "Query" queryport udp - } | column -s $'\t' -t -} - -fn_info_message_ut3() { - fn_info_message_password_strip - { - fn_port "header" - fn_port "Game" port udp - fn_port "Query" queryport udp - fn_port "Web Admin" webadminport tcp - } | column -s $'\t' -t - echo -e "" - echo -e "${lightgreen}${servername} Web Admin${default}" - fn_messages_separator - { - echo -e "${lightblue}Web Admin enabled:\t${default}${webadminenabled}" - echo -e "${lightblue}Web Admin url:\t${default}http://${webadminip}:${webadminport}" - echo -e "${lightblue}Web Admin username:\t${default}${webadminuser}" - echo -e "${lightblue}Web Admin password:\t${default}${webadminpass}" - } | column -s $'\t' -t -} - -fn_info_message_vh() { - { - fn_port "header" - fn_port "Game" port udp - fn_port "Query" queryport udp - } | column -s $'\t' -t -} - -fn_info_message_vints() { - { - fn_port "header" - fn_port "Game" port tcp - } | column -s $'\t' -t -} - -fn_info_message_vpmc() { - { - fn_port "header" - fn_port "Game" port tcp - } | column -s $'\t' -t -} - -fn_info_message_wet() { - { - fn_port "header" - fn_port "Game" port udp - fn_port "Query" queryport udp - } | column -s $'\t' -t -} - -fn_info_message_wf() { - { - fn_port "header" - fn_port "Game" port udp - fn_port "HTTP" httpport tcp - } | column -s $'\t' -t -} - -fn_info_message_wurm() { - { - fn_port "header" - fn_port "Game" port tcp - fn_port "Query" queryport udp - } | column -s $'\t' -t -} - -fn_info_message_stn() { - { - fn_port "header" - fn_port "Game" port udp - fn_port "Query" queryport udp - } | column -s $'\t' -t -} - -fn_info_message_select_engine() { - # Display details depending on game or engine. - if [ "${shortname}" == "ac" ]; then - fn_info_message_ac - elif [ "${shortname}" == "ark" ]; then - fn_info_message_ark - elif [ "${shortname}" == "arma3" ]; then - fn_info_message_arma3 - elif [ "${shortname}" == "armar" ]; then - fn_info_message_armar - elif [ "${shortname}" == "av" ]; then - fn_info_message_av - elif [ "${shortname}" == "bf1942" ]; then - fn_info_message_bf1942 - elif [ "${shortname}" == "bfv" ]; then - fn_info_message_bfv - elif [ "${shortname}" == "bo" ]; then - fn_info_message_bo - elif [ "${shortname}" == "bt" ]; then - fn_info_message_bt - elif [ "${shortname}" == "btl" ]; then - fn_info_message_btl - elif [ "${shortname}" == "cd" ]; then - fn_info_messages_cd - elif [ "${shortname}" == "ck" ]; then - fn_info_messages_ck - elif [ "${shortname}" == "csgo" ]; then - fn_info_message_csgo - elif [ "${shortname}" == "cmw" ]; then - fn_info_message_cmw - elif [ "${shortname}" == "cod" ]; then - fn_info_message_cod - elif [ "${shortname}" == "coduo" ]; then - fn_info_message_coduo - elif [ "${shortname}" == "cod2" ]; then - fn_info_message_cod2 - elif [ "${shortname}" == "cod4" ]; then - fn_info_message_cod4 - elif [ "${shortname}" == "codwaw" ]; then - fn_info_message_codwaw - elif [ "${shortname}" == "col" ]; then - fn_info_message_col - elif [ "${shortname}" == "dayz" ]; then - fn_info_message_dayz - elif [ "${shortname}" == "dodr" ]; then - fn_info_message_dodr - elif [ "${shortname}" == "dst" ]; then - fn_info_message_dst - elif [ "${shortname}" == "eco" ]; then - fn_info_message_eco - elif [ "${shortname}" == "etl" ]; then - fn_info_message_etl - elif [ "${shortname}" == "fctr" ]; then - fn_info_message_fctr - elif [ "${shortname}" == "hcu" ]; then - fn_info_message_hcu - elif [ "${shortname}" == "hw" ]; then - fn_info_message_hw - elif [ "${shortname}" == "ins" ]; then - fn_info_message_ins - elif [ "${shortname}" == "inss" ]; then - fn_info_message_inss - elif [ "${shortname}" == "jc2" ]; then - fn_info_message_jc2 - elif [ "${shortname}" == "jc3" ]; then - fn_info_message_jc3 - elif [ "${shortname}" == "jk2" ]; then - fn_info_message_jk2 - elif [ "${shortname}" == "kf" ]; then - fn_info_message_kf - elif [ "${shortname}" == "kf2" ]; then - fn_info_message_kf2 - elif [ "${shortname}" == "lo" ]; then - fn_info_message_lo - elif [ "${shortname}" == "mc" ] || [ "${shortname}" == "pmc" ] || [ "${shortname}" == "wmc" ]; then - fn_info_message_mc - elif [ "${shortname}" == "mcb" ]; then - fn_info_message_mcb - elif [ "${shortname}" == "mh" ]; then - fn_info_message_mh - elif [ "${shortname}" == "mohaa" ]; then - fn_info_message_mohaa - elif [ "${shortname}" == "mom" ]; then - fn_info_message_mom - elif [ "${shortname}" == "mta" ]; then - fn_info_message_mta - elif [ "${shortname}" == "nec" ]; then - fn_info_message_nec - elif [ "${shortname}" == "onset" ]; then - fn_info_message_onset - elif [ "${shortname}" == "pc" ]; then - fn_info_message_pc - elif [ "${shortname}" == "pc2" ]; then - fn_info_message_pc2 - elif [ "${shortname}" == "pstbs" ]; then - fn_info_message_pstbs - elif [ "${shortname}" == "pvr" ]; then - fn_info_message_pvr - elif [ "${shortname}" == "pz" ]; then - fn_info_message_pz - elif [ "${shortname}" == "q2" ]; then - fn_info_message_q2 - elif [ "${shortname}" == "q3" ]; then - fn_info_message_q3 - elif [ "${shortname}" == "ql" ]; then - fn_info_message_ql - elif [ "${shortname}" == "qw" ]; then - fn_info_message_qw - elif [ "${shortname}" == "ro" ]; then - fn_info_message_ro - elif [ "${shortname}" == "rtcw" ]; then - fn_info_message_rtcw - elif [ "${shortname}" == "samp" ]; then - fn_info_message_samp - elif [ "${shortname}" == "sb" ]; then - fn_info_message_sb - elif [ "${shortname}" == "sbots" ]; then - fn_info_message_sbots - elif [ "${shortname}" == "scpsl" ] || [ "${shortname}" == "scpslsm" ]; then - fn_info_message_scpsl - elif [ "${shortname}" == "sdtd" ]; then - fn_info_message_sdtd - elif [ "${shortname}" == "sf" ]; then - fn_info_message_sf - elif [ "${shortname}" == "sof2" ]; then - fn_info_message_sof2 - elif [ "${shortname}" == "sol" ]; then - fn_info_message_sol - elif [ "${shortname}" == "squad" ]; then - fn_info_message_squad - elif [ "${shortname}" == "st" ]; then - fn_info_message_st - elif [ "${shortname}" == "stn" ]; then - fn_info_message_stn - elif [ "${shortname}" == "terraria" ]; then - fn_info_message_terraria - elif [ "${shortname}" == "ti" ]; then - fn_info_message_ti - elif [ "${shortname}" == "ts3" ]; then - fn_info_message_ts3 - elif [ "${shortname}" == "tu" ]; then - fn_info_message_tu - elif [ "${shortname}" == "tw" ]; then - fn_info_message_tw - elif [ "${shortname}" == "unt" ]; then - fn_info_message_unt - elif [ "${shortname}" == "vh" ]; then - fn_info_message_vh - elif [ "${shortname}" == "vints" ]; then - fn_info_message_vints - elif [ "${shortname}" == "rust" ]; then - fn_info_message_rust - elif [ "${shortname}" == "rw" ]; then - fn_info_message_rw - elif [ "${shortname}" == "ut" ]; then - fn_info_message_ut - elif [ "${shortname}" == "ut2k4" ]; then - fn_info_message_ut2k4 - elif [ "${shortname}" == "ut3" ]; then - fn_info_message_ut3 - elif [ "${shortname}" == "vpmc" ]; then - fn_info_message_vpmc - elif [ "${shortname}" == "wet" ]; then - fn_info_message_wet - elif [ "${shortname}" == "wf" ]; then - fn_info_message_wf - elif [ "${shortname}" == "wurm" ]; then - fn_info_message_wurm - elif [ "${engine}" == "goldsrc" ]; then - fn_info_message_goldsrc - elif [ "${engine}" == "prism3d" ]; then - fn_info_message_prism3d - elif [ "${engine}" == "source" ]; then - fn_info_message_source - elif [ "${engine}" == "spark" ]; then - fn_info_message_spark - elif [ "${engine}" == "unreal" ]; then - fn_info_message_unreal - else - fn_print_error_nl "Unable to detect game server." - fi -} diff --git a/lgsm/functions/info_stats.sh b/lgsm/functions/info_stats.sh deleted file mode 100644 index 0589770f69..0000000000 --- a/lgsm/functions/info_stats.sh +++ /dev/null @@ -1,173 +0,0 @@ -#!/bin/bash -# LinuxGSM info_stats.sh module -# Author: Daniel Gibbs -# Contributors: http://linuxgsm.com/contrib -# Website: https://linuxgsm.com -# Description: Collect optional Stats sent to LinuxGSM project. -# Uses Google analytics. - -functionselfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")" - -info_distro.sh - -# remove uuid that was used in v20.2.0 and below -if [ -f "${datadir}/uuid.txt" ]; then - rm -f "${datadir:?}/uuid.txt" -fi - -# generate uuid's -# this consists of a standard uuid and a docker style name -# to allow human readable uuid's. -# e.g angry_proskuriakova_38a9ef76-4ae3-46a6-a895-7af474831eba - -if [ ! -f "${datadir}/uuid-${selfname}.txt" ] || [ ! -f "${datadir}/uuid-install.txt" ]; then - # download dictionary words - if [ ! -f "${datadir}/name-left.csv" ]; then - fn_fetch_file_github "lgsm/data" "name-left.csv" "${datadir}" "nochmodx" "norun" "forcedl" "nohash" - fi - if [ ! -f "${datadir}/name-right.csv" ]; then - fn_fetch_file_github "lgsm/data" "name-right.csv" "${datadir}" "nochmodx" "norun" "forcedl" "nohash" - fi - - # generate instance uuid - if [ -n "$(command -v uuidgen 2> /dev/null)" ]; then - uuid="$(uuidgen)" - else - uuid="$(cat /proc/sys/kernel/random/uuid)" - fi - - nameleft="$(shuf -n 1 "${datadir}/name-left.csv")" - nameright="$(shuf -n 1 "${datadir}/name-right.csv")" - echo "instance_${nameleft}_${nameright}_${uuid}" > "${datadir}/uuid-${selfname}.txt" - # generate install uuid if missing - if [ ! -f "${datadir}/uuid-install.txt" ]; then - echo "${nameleft}_${nameright}_${uuid}" > "${datadir}/uuid-install.txt" - fi -fi - -uuidinstance=$(cat "${datadir}/uuid-${selfname}.txt") -uuidinstall=$(cat "${datadir}/uuid-install.txt") -# machine-id is a unique id set on OS install -uuidhardware=$(cat "/etc/machine-id") - -# results are rounded up to reduce number of different results in analytics. -# nearest 100Mhz. -cpuusedmhzroundup="$(((cpuusedmhz + 99) / 100 * 100))" -# nearest 100MB -memusedroundup="$(((memused + 99) / 100 * 100))" - -# Spliting the metrics in to 3 propertys allows more accurate metrics on numbers of invidual instances, installs and hardware. -# Instance Property - UA-165287622-1 -# Install Property - UA-165287622-2 -# Hardware Property - UA-165287622-3 - -## Distro. -curl https://www.google-analytics.com/collect -d "tid=UA-165287622-1" -d "aip=1" -d "cid=${uuidinstance}" -d "t=event" -d "ec=distro" -d "ea=${distroname}" -d "el=${gamename}" -d "v=1" > /dev/null 2>&1 -curl https://www.google-analytics.com/collect -d "tid=UA-165287622-2" -d "aip=1" -d "cid=${uuidinstall}" -d "t=event" -d "ec=distro" -d "ea=${distroname}" -d "el=${gamename}" -d "v=1" > /dev/null 2>&1 -curl https://www.google-analytics.com/collect -d "tid=UA-165287622-3" -d "aip=1" -d "cid=${uuidhardware}" -d "t=event" -d "ec=distro" -d "ea=${distroname}" -d "el=${gamename}" -d "v=1" > /dev/null 2>&1 - -## Game Server Name. -curl https://www.google-analytics.com/collect -d "tid=UA-165287622-1" -d "aip=1" -d "cid=${uuidinstance}" -d "t=event" -d "ec=game" -d "ea=${gamename}" -d "el=${gamename}" -d "v=1" > /dev/null 2>&1 -curl https://www.google-analytics.com/collect -d "tid=UA-165287622-2" -d "aip=1" -d "cid=${uuidinstall}" -d "t=event" -d "ec=game" -d "ea=${gamename}" -d "el=${gamename}" -d "v=1" > /dev/null 2>&1 -curl https://www.google-analytics.com/collect -d "tid=UA-165287622-3" -d "aip=1" -d "cid=${uuidhardware}" -d "t=event" -d "ec=game" -d "ea=${gamename}" -d "el=${gamename}" -d "v=1" > /dev/null 2>&1 - -## LinuxGSM Version. -curl https://www.google-analytics.com/collect -d "tid=UA-165287622-1" -d "aip=1" -d "cid=${uuidinstance}" -d "t=event" -d "ec=version" -d "ea=${version}" -d "el=${gamename}" -d "v=1" > /dev/null 2>&1 -curl https://www.google-analytics.com/collect -d "tid=UA-165287622-2" -d "aip=1" -d "cid=${uuidinstall}" -d "t=event" -d "ec=version" -d "ea=${version}" -d "el=${gamename}" -d "v=1" > /dev/null 2>&1 -curl https://www.google-analytics.com/collect -d "tid=UA-165287622-3" -d "aip=1" -d "cid=${uuidhardware}" -d "t=event" -d "ec=version" -d "ea=${version}" -d "el=${gamename}" -d "v=1" > /dev/null 2>&1 - -## CPU usage of a game server. -if [ -n "${cpuusedmhzroundup}" ]; then - curl https://www.google-analytics.com/collect -d "tid=UA-165287622-1" -d "aip=1" -d "cid=${uuidinstance}" -d "t=event" -d "ec=cpuused" -d "ea=${cpuusedmhzroundup}MHz" -d "el=${gamename}" -d "v=1" > /dev/null 2>&1 - curl https://www.google-analytics.com/collect -d "tid=UA-165287622-2" -d "aip=1" -d "cid=${uuidinstall}" -d "t=event" -d "ec=cpuused" -d "ea=${cpuusedmhzroundup}MHz" -d "el=${gamename}" -d "v=1" > /dev/null 2>&1 - curl https://www.google-analytics.com/collect -d "tid=UA-165287622-3" -d "aip=1" -d "cid=${uuidhardware}" -d "t=event" -d "ec=cpuused" -d "ea=${cpuusedmhzroundup}MHz" -d "el=${gamename}" -d "v=1" > /dev/null 2>&1 -fi -## Ram usage of a game server. -if [ -n "${memusedroundup}" ]; then - curl https://www.google-analytics.com/collect -d "tid=UA-165287622-1" -d "aip=1" -d "cid=${uuidinstance}" -d "t=event" -d "ec=ramused" -d "ea=${memusedroundup}MB" -d "el=${gamename}" -d "v=1" > /dev/null 2>&1 - curl https://www.google-analytics.com/collect -d "tid=UA-165287622-2" -d "aip=1" -d "cid=${uuidinstall}" -d "t=event" -d "ec=ramused" -d "ea=${memusedroundup}MB" -d "el=${gamename}" -d "v=1" > /dev/null 2>&1 - curl https://www.google-analytics.com/collect -d "tid=UA-165287622-3" -d "aip=1" -d "cid=${uuidhardware}" -d "t=event" -d "ec=ramused" -d "ea=${memusedroundup}MB" -d "el=${gamename}" -d "v=1" > /dev/null 2>&1 -fi -## Disk usage of a game server. -if [ -n "${serverfilesdu}" ]; then - curl https://www.google-analytics.com/collect -d "tid=UA-165287622-1" -d "aip=1" -d "cid=${uuidinstance}" -d "t=event" -d "ec=diskused" -d "ea=${serverfilesdu}" -d "el=${gamename}" -d "v=1" > /dev/null 2>&1 - curl https://www.google-analytics.com/collect -d "tid=UA-165287622-2" -d "aip=1" -d "cid=${uuidinstall}" -d "t=event" -d "ec=diskused" -d "ea=${serverfilesdu}" -d "el=${gamename}" -d "v=1" > /dev/null 2>&1 - curl https://www.google-analytics.com/collect -d "tid=UA-165287622-3" -d "aip=1" -d "cid=${uuidhardware}" -d "t=event" -d "ec=diskused" -d "ea=${serverfilesdu}" -d "el=${gamename}" -d "v=1" > /dev/null 2>&1 -fi - -## CPU Model. -if [ -n "${cpumodel}" ]; then - curl https://www.google-analytics.com/collect -d "tid=UA-165287622-1" -d "aip=1" -d "cid=${uuidinstance}" -d "t=event" -d "ec=servercpu" -d "ea=${cpumodel} ${cpucores} cores" -d "el=${gamename}" -d "v=1" > /dev/null 2>&1 - curl https://www.google-analytics.com/collect -d "tid=UA-165287622-2" -d "aip=1" -d "cid=${uuidinstall}" -d "t=event" -d "ec=servercpu" -d "ea=${cpumodel} ${cpucores} cores" -d "el=${gamename}" -d "v=1" > /dev/null 2>&1 - curl https://www.google-analytics.com/collect -d "tid=UA-165287622-3" -d "aip=1" -d "cid=${uuidhardware}" -d "t=event" -d "ec=servercpu" -d "ea=${cpumodel} ${cpucores} cores" -d "el=${gamename}" -d "v=1" > /dev/null 2>&1 - -fi - -## CPU Frequency. -if [ -n "${cpufreqency}" ]; then - curl https://www.google-analytics.com/collect -d "tid=UA-165287622-1" -d "aip=1" -d "cid=${uuidinstance}" -d "t=event" -d "ec=servercpufreq" -d "ea=${cpufreqency} x${cpucores}" -d "el=${gamename}" -d "v=1" > /dev/null 2>&1 - curl https://www.google-analytics.com/collect -d "tid=UA-165287622-2" -d "aip=1" -d "cid=${uuidinstall}" -d "t=event" -d "ec=servercpufreq" -d "ea=${cpufreqency} x${cpucores}" -d "el=${gamename}" -d "v=1" > /dev/null 2>&1 - curl https://www.google-analytics.com/collect -d "tid=UA-165287622-3" -d "aip=1" -d "cid=${uuidhardware}" -d "t=event" -d "ec=servercpufreq" -d "ea=${cpufreqency} x${cpucores}" -d "el=${gamename}" -d "v=1" > /dev/null 2>&1 -fi - -## Server RAM. -if [ -n "${physmemtotal}" ]; then - curl https://www.google-analytics.com/collect -d "tid=UA-165287622-1" -d "aip=1" -d "cid=${uuidinstance}" -d "t=event" -d "ec=serverram" -d "ea=${physmemtotal}" -d "el=${gamename}" -d "v=1" > /dev/null 2>&1 - curl https://www.google-analytics.com/collect -d "tid=UA-165287622-2" -d "aip=1" -d "cid=${uuidinstall}" -d "t=event" -d "ec=serverram" -d "ea=${physmemtotal}" -d "el=${gamename}" -d "v=1" > /dev/null 2>&1 - curl https://www.google-analytics.com/collect -d "tid=UA-165287622-3" -d "aip=1" -d "cid=${uuidhardware}" -d "t=event" -d "ec=serverram" -d "ea=${physmemtotal}" -d "el=${gamename}" -d "v=1" > /dev/null 2>&1 -fi - -## Server Disk. -if [ -n "${totalspace}" ]; then - curl https://www.google-analytics.com/collect -d "tid=UA-165287622-1" -d "aip=1" -d "cid=${uuidinstance}" -d "t=event" -d "ec=serverdisk" -d "ea=${totalspace}" -d "el=${gamename}" -d "v=1" > /dev/null 2>&1 - curl https://www.google-analytics.com/collect -d "tid=UA-165287622-2" -d "aip=1" -d "cid=${uuidinstall}" -d "t=event" -d "ec=serverdisk" -d "ea=${totalspace}" -d "el=${gamename}" -d "v=1" > /dev/null 2>&1 - curl https://www.google-analytics.com/collect -d "tid=UA-165287622-3" -d "aip=1" -d "cid=${uuidhardware}" -d "t=event" -d "ec=serverdisk" -d "ea=${totalspace}" -d "el=${gamename}" -d "v=1" > /dev/null 2>&1 -fi - -## Alert Stats. -if [ "${discordalert}" == "on" ]; then - curl https://www.google-analytics.com/collect -d "tid=UA-165287622-1" -d "aip=1" -d "cid=${uuidinstance}" -d "t=event" -d "ec=alert" -d "ea=Discord" -d "el=${gamename}" -d "v=1" > /dev/null 2>&1 -fi -if [ "${emailalert}" == "on" ]; then - curl https://www.google-analytics.com/collect -d "tid=UA-165287622-1" -d "aip=1" -d "cid=${uuidinstance}" -d "t=event" -d "ec=alert" -d "ea=Email" -d "el=${gamename}" -d "v=1" > /dev/null 2>&1 -fi -if [ "${iftttalert}" == "on" ]; then - curl https://www.google-analytics.com/collect -d "tid=UA-165287622-1" -d "aip=1" -d "cid=${uuidinstance}" -d "t=event" -d "ec=alert" -d "ea=IFTTT" -d "el=${gamename}" -d "v=1" > /dev/null 2>&1 -fi -if [ "${mailgunalert}" == "on" ]; then - curl https://www.google-analytics.com/collect -d "tid=UA-165287622-1" -d "aip=1" -d "cid=${uuidinstance}" -d "t=event" -d "ec=alert" -d "ea=Mailgun" -d "el=${gamename}" -d "v=1" > /dev/null 2>&1 -fi -if [ "${pushbulletalert}" == "on" ]; then - curl https://www.google-analytics.com/collect -d "tid=UA-165287622-1" -d "aip=1" -d "cid=${uuidinstance}" -d "t=event" -d "ec=alert" -d "ea=Pushbullet" -d "el=${gamename}" -d "v=1" > /dev/null 2>&1 -fi -if [ "${pushoveralert}" == "on" ]; then - curl https://www.google-analytics.com/collect -d "tid=UA-165287622-1" -d "aip=1" -d "cid=${uuidinstance}" -d "t=event" -d "ec=alert" -d "ea=Pushover" -d "el=${gamename}" -d "v=1" > /dev/null 2>&1 -fi -if [ "${rocketchatalert}" == "on" ]; then - curl https://www.google-analytics.com/collect -d "tid=UA-165287622-1" -d "aip=1" -d "cid=${uuidinstance}" -d "t=event" -d "ec=alert" -d "ea=Rocket Chat" -d "el=${gamename}" -d "v=1" > /dev/null 2>&1 -fi -if [ "${slackalert}" == "on" ]; then - curl https://www.google-analytics.com/collect -d "tid=UA-165287622-1" -d "aip=1" -d "cid=${uuidinstance}" -d "t=event" -d "ec=alert" -d "ea=Slack" -d "el=${gamename}" -d "v=1" > /dev/null 2>&1 -fi -if [ "${telegramalert}" == "on" ]; then - curl https://www.google-analytics.com/collect -d "tid=UA-165287622-1" -d "aip=1" -d "cid=${uuidinstance}" -d "t=event" -d "ec=alert" -d "ea=Telegram" -d "el=${gamename}" -d "v=1" > /dev/null 2>&1 -fi - -## Summary Stats -curl https://www.google-analytics.com/collect -d "tid=UA-165287622-1" -d "aip=1" -d "cid=${uuidinstance}" -d "t=event" -d "ec=summary" -d "ea=GAME: ${gamename} | DISTRO: ${distroname} | CPU MODEL: ${cpumodel} ${cpucores} cores | RAM: ${physmemtotal} | DISK: ${totalspace}" -d "el=${gamename}" -d "v=1" > /dev/null 2>&1 -curl https://www.google-analytics.com/collect -d "tid=UA-165287622-2" -d "aip=1" -d "cid=${uuidinstall}" -d "t=event" -d "ec=summary" -d "ea=GAME: ${gamename} | DISTRO: ${distroname} | CPU MODEL: ${cpumodel} ${cpucores} cores | RAM: ${physmemtotal} | DISK: ${totalspace}" -d "el=${gamename}" -d "v=1" > /dev/null 2>&1 -curl https://www.google-analytics.com/collect -d "tid=UA-165287622-3" -d "aip=1" -d "cid=${uuidhardware}" -d "t=event" -d "ec=summary" -d "ea=GAME: ${gamename} | DISTRO: ${distroname} | CPU MODEL: ${cpumodel} ${cpucores} cores | RAM: ${physmemtotal} | DISK: ${totalspace}" -d "el=${gamename}" -d "v=1" > /dev/null 2>&1 - -fn_script_log_info "Send LinuxGSM stats" -fn_script_log_info "* uuid-${selfname}: ${uuidinstance}" -fn_script_log_info "* uuid-install: ${uuidinstall}" -fn_script_log_info "* uuid-hardware: ${uuidhardware}" -fn_script_log_info "* Game Name: ${gamename}" -fn_script_log_info "* Distro Name: ${distroname}" -fn_script_log_info "* Game Server CPU Used: ${cpuusedmhzroundup}MHz" -fn_script_log_info "* Game Server RAM Used: ${memusedroundup}MB" -fn_script_log_info "* Game Server Disk Used: ${serverfilesdu}" -fn_script_log_info "* Server CPU Model: ${cpumodel}" -fn_script_log_info "* Server CPU Frequency: ${cpufreqency}" -fn_script_log_info "* Server RAM: ${physmemtotal}" -fn_script_log_info "* Server Disk: ${totalspace}" diff --git a/lgsm/functions/install_complete.sh b/lgsm/functions/install_complete.sh deleted file mode 100644 index ad258b2245..0000000000 --- a/lgsm/functions/install_complete.sh +++ /dev/null @@ -1,18 +0,0 @@ -#!/bin/bash -# LinuxGSM install_complete.sh module -# Author: Daniel Gibbs -# Contributors: http://linuxgsm.com/contrib -# Website: https://linuxgsm.com -# Description: Prints installation completion message and hints. - -functionselfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")" - -echo -e "" -echo -e "=================================" -echo -e "Install Complete!" -fn_script_log_info "Install Complete!" -echo -e "" -echo -e "To start server type:" -echo -e "./${selfname} start" -echo -e "" -core_exit.sh diff --git a/lgsm/functions/install_config.sh b/lgsm/functions/install_config.sh deleted file mode 100644 index 35d7df7c6b..0000000000 --- a/lgsm/functions/install_config.sh +++ /dev/null @@ -1,937 +0,0 @@ -#!/bin/bash -# LinuxGSM install_config.sh module -# Author: Daniel Gibbs -# Contributors: http://linuxgsm.com/contrib -# Website: https://linuxgsm.com -# Description: Creates default server configs. - -functionselfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")" - -# Checks if server cfg dir exists, creates it if it doesn't. -fn_check_cfgdir() { - if [ ! -d "${servercfgdir}" ]; then - echo -e "creating ${servercfgdir} config directory." - fn_script_log_info "creating ${servercfgdir} config directory." - mkdir -pv "${servercfgdir}" - fi -} - -# Downloads default configs from Game-Server-Configs repo to lgsm/config-default. -fn_fetch_default_config() { - echo -e "" - echo -e "${lightyellow}Downloading ${gamename} Configs${default}" - echo -e "=================================" - echo -e "default configs from https://github.com/GameServerManagers/Game-Server-Configs" - fn_sleep_time - mkdir -p "${lgsmdir}/config-default/config-game" - githuburl="https://raw.githubusercontent.com/GameServerManagers/Game-Server-Configs/master" - for config in "${array_configs[@]}"; do - fn_fetch_file "${githuburl}/${gamedirname}/${config}" "${remote_fileurl_backup}" "GitHub" "Bitbucket" "${lgsmdir}/config-default/config-game" "${config}" "nochmodx" "norun" "forcedl" "nohash" - done -} - -# Copys default configs from Game-Server-Configs repo to server config location. -fn_default_config_remote() { - for config in "${array_configs[@]}"; do - # every config is copied - echo -e "copying ${config} config file." - fn_script_log_info "copying ${servercfg} config file." - if [ "${config}" == "${servercfgdefault}" ]; then - mkdir -p "${servercfgdir}" - cp -nv "${lgsmdir}/config-default/config-game/${config}" "${servercfgfullpath}" - elif [ "${shortname}" == "arma3" ] && [ "${config}" == "${networkcfgdefault}" ]; then - mkdir -p "${servercfgdir}" - cp -nv "${lgsmdir}/config-default/config-game/${config}" "${networkcfgfullpath}" - elif [ "${shortname}" == "dst" ] && [ "${config}" == "${clustercfgdefault}" ]; then - cp -nv "${lgsmdir}/config-default/config-game/${clustercfgdefault}" "${clustercfgfullpath}" - else - mkdir -p "${servercfgdir}" - cp -nv "${lgsmdir}/config-default/config-game/${config}" "${servercfgdir}/${config}" - fi - done - fn_sleep_time -} - -# Copys local default config to server config location. -fn_default_config_local() { - echo -e "copying ${servercfgdefault} config file." - cp -nv "${servercfgdir}/${servercfgdefault}" "${servercfgfullpath}" - fn_sleep_time -} - -# Changes some variables within the default configs. -# SERVERNAME to LinuxGSM -# PASSWORD to random password -fn_set_config_vars() { - if [ -f "${servercfgfullpath}" ]; then - random=$(tr -dc A-Za-z0-9_ < /dev/urandom | head -c 8 | xargs) - servername="LinuxGSM" - rconpass="admin${random}" - echo -e "changing hostname." - fn_script_log_info "changing hostname." - fn_sleep_time - # prevents var from being overwritten with the servername. - if grep -q "SERVERNAME=SERVERNAME" "${lgsmdir}/config-default/config-game/${config}" 2> /dev/null; then - sed -i "s/SERVERNAME=SERVERNAME/SERVERNAME=${servername}/g" "${servercfgfullpath}" - elif grep -q "SERVERNAME=\"SERVERNAME\"" "${lgsmdir}/config-default/config-game/${config}" 2> /dev/null; then - sed -i "s/SERVERNAME=\"SERVERNAME\"/SERVERNAME=\"${servername}\"/g" "${servercfgfullpath}" - else - sed -i "s/SERVERNAME/${servername}/g" "${servercfgfullpath}" - fi - echo -e "changing rcon/admin password." - fn_script_log_info "changing rcon/admin password." - if [ "${shortname}" == "squad" ]; then - sed -i "s/ADMINPASSWORD/${rconpass}/g" "${servercfgdir}/Rcon.cfg" - else - sed -i "s/ADMINPASSWORD/${rconpass}/g" "${servercfgfullpath}" - fi - fn_sleep_time - else - fn_script_log_warn "Config file not found, cannot alter it." - echo -e "Config file not found, cannot alter it." - fn_sleep_time - fi -} - -# Changes some variables within the default Don't Starve Together configs. -fn_set_dst_config_vars() { - ## cluster.ini - if grep -Fq "SERVERNAME" "${clustercfgfullpath}"; then - echo -e "changing server name." - fn_script_log_info "changing server name." - sed -i "s/SERVERNAME/LinuxGSM/g" "${clustercfgfullpath}" - fn_sleep_time - echo -e "changing shard mode." - fn_script_log_info "changing shard mode." - sed -i "s/USESHARDING/${sharding}/g" "${clustercfgfullpath}" - fn_sleep_time - echo -e "randomizing cluster key." - fn_script_log_info "randomizing cluster key." - randomkey=$(tr -dc A-Za-z0-9_ < /dev/urandom | head -c 8 | xargs) - sed -i "s/CLUSTERKEY/${randomkey}/g" "${clustercfgfullpath}" - fn_sleep_time - else - echo -e "${clustercfg} is already configured." - fn_script_log_info "${clustercfg} is already configured." - fi - - ## server.ini - # removing unnecessary options (dependent on sharding & shard type). - if [ "${sharding}" == "false" ]; then - sed -i "s/ISMASTER//g" "${servercfgfullpath}" - sed -i "/SHARDNAME/d" "${servercfgfullpath}" - elif [ "${master}" == "true" ]; then - sed -i "/SHARDNAME/d" "${servercfgfullpath}" - fi - - echo -e "changing shard name." - fn_script_log_info "changing shard name." - sed -i "s/SHARDNAME/${shard}/g" "${servercfgfullpath}" - fn_sleep_time - echo -e "changing master setting." - fn_script_log_info "changing master setting." - sed -i "s/ISMASTER/${master}/g" "${servercfgfullpath}" - fn_sleep_time - - ## worldgenoverride.lua - if [ "${cave}" == "true" ]; then - echo -e "defining ${shard} as cave in ${servercfgdir}/worldgenoverride.lua." - fn_script_log_info "defining ${shard} as cave in ${servercfgdir}/worldgenoverride.lua." - echo 'return { override_enabled = true, preset = "DST_CAVE", }' > "${servercfgdir}/worldgenoverride.lua" - fi - fn_sleep_time - echo -e "" -} - -# Lists local config file locations -fn_list_config_locations() { - echo -e "" - echo -e "${lightyellow}Config File Locations${default}" - echo -e "=================================" - if [ -n "${servercfgfullpath}" ]; then - if [ -f "${servercfgfullpath}" ]; then - echo -e "Game Server Config File: ${servercfgfullpath}" - elif [ -d "${servercfgfullpath}" ]; then - echo -e "Game Server Config Dir: ${servercfgfullpath}" - else - echo -e "Config file: ${red}${servercfgfullpath} (${red}FILE MISSING${default})" - fi - fi - echo -e "LinuxGSM Config: ${lgsmdir}/config-lgsm/${gameservername}" - echo -e "Documentation: https://docs.linuxgsm.com/configuration/game-server-config" -} - -if [ "${shortname}" == "sdtd" ]; then - gamedirname="7DaysToDie" - fn_default_config_local - fn_list_config_locations -elif [ "${shortname}" == "ac" ]; then - gamedirname="AssettoCorsa" - array_configs+=(server_cfg.ini) - fn_fetch_default_config - fn_default_config_remote - fn_set_config_vars - fn_list_config_locations -elif [ "${shortname}" == "ahl" ]; then - gamedirname="ActionHalfLife" - array_configs+=(server.cfg) - fn_fetch_default_config - fn_default_config_remote - fn_set_config_vars - fn_list_config_locations -elif [ "${shortname}" == "ahl2" ]; then - gamedirname="ActionSource" - array_configs+=(server.cfg) - fn_fetch_default_config - fn_default_config_remote - fn_set_config_vars - fn_list_config_locations -elif [ "${shortname}" == "ark" ]; then - gamedirname="ARKSurvivalEvolved" - fn_check_cfgdir - array_configs+=(GameUserSettings.ini) - fn_fetch_default_config - fn_default_config_remote - fn_set_config_vars - fn_list_config_locations -elif [ "${shortname}" == "arma3" ]; then - gamedirname="Arma3" - fn_check_cfgdir - array_configs+=(server.cfg network.cfg) - fn_fetch_default_config - fn_default_config_remote - fn_set_config_vars - fn_list_config_locations -elif [ "${shortname}" == "armar" ]; then - gamedirname="ArmaReforger" - fn_check_cfgdir - array_configs+=(server.json) - fn_fetch_default_config - fn_default_config_remote - fn_set_config_vars - fn_list_config_locations -elif [ "${shortname}" == "ats" ]; then - gamedirname="AmericanTruckSimulator" - fn_check_cfgdir - array_configs+=(server_config.sii) - fn_fetch_default_config - fn_default_config_remote - fn_set_config_vars - fn_list_config_locations -elif [ "${shortname}" == "bo" ]; then - gamedirname="BallisticOverkill" - array_configs+=(config.txt) - fn_fetch_default_config - fn_default_config_remote - fn_set_config_vars - fn_list_config_locations -elif [ "${shortname}" == "bd" ]; then - gamedirname="BaseDefense" - array_configs+=(server.cfg) - fn_fetch_default_config - fn_default_config_remote - fn_set_config_vars - fn_list_config_locations -elif [ "${shortname}" == "bt" ]; then - gamedirname="Barotrauma" - fn_check_cfgdir - array_configs+=(serversettings.xml) - fn_fetch_default_config - fn_default_config_remote - fn_set_config_vars - fn_list_config_locations -elif [ "${shortname}" == "btl" ]; then - gamedirname="BattalionLegacy" - fn_check_cfgdir - array_configs+=(DefaultGame.ini) - fn_fetch_default_config - fn_default_config_remote - fn_set_config_vars - fn_list_config_locations -elif [ "${shortname}" == "bf1942" ]; then - gamedirname="Battlefield1942" - array_configs+=(serversettings.con) - fn_fetch_default_config - fn_default_config_remote - fn_set_config_vars - fn_list_config_locations -elif [ "${shortname}" == "bfv" ]; then - gamedirname="BattlefieldVietnam" - array_configs+=(serversettings.con) - fn_fetch_default_config - fn_default_config_remote - fn_set_config_vars - fn_list_config_locations -elif [ "${shortname}" == "bs" ]; then - gamedirname="BladeSymphony" - array_configs+=(server.cfg) - fn_fetch_default_config - fn_default_config_remote - fn_set_config_vars - fn_list_config_locations -elif [ "${shortname}" == "bb" ]; then - gamedirname="BrainBread" - array_configs+=(server.cfg) - fn_fetch_default_config - fn_default_config_remote - fn_set_config_vars - fn_list_config_locations -elif [ "${shortname}" == "bb2" ]; then - gamedirname="BrainBread2" - array_configs+=(server.cfg) - fn_fetch_default_config - fn_default_config_remote - fn_set_config_vars - fn_list_config_locations -elif [ "${shortname}" == "bmdm" ]; then - gamedirname="BlackMesa" - array_configs+=(server.cfg) - fn_fetch_default_config - fn_default_config_remote - fn_set_config_vars - fn_list_config_locations -elif [ "${shortname}" == "cd" ]; then - gamedirname="CraftingDead" - array_configs+=(properties.json) - fn_fetch_default_config - fn_default_config_remote - fn_set_config_vars - fn_list_config_locations -elif [ "${shortname}" == "ck" ]; then - gamedirname="CoreKeeper" - array_configs+=(ServerConfig.json) - fn_fetch_default_config - fn_default_config_remote - fn_set_config_vars - fn_list_config_locations -elif [ "${shortname}" == "cod" ]; then - gamedirname="CallOfDuty" - array_configs+=(server.cfg) - fn_fetch_default_config - fn_default_config_remote - fn_set_config_vars - fn_list_config_locations -elif [ "${shortname}" == "coduo" ]; then - gamedirname="CallOfDutyUnitedOffensive" - array_configs+=(server.cfg) - fn_fetch_default_config - fn_default_config_remote - fn_set_config_vars - fn_list_config_locations -elif [ "${shortname}" == "cod2" ]; then - gamedirname="CallOfDuty2" - array_configs+=(server.cfg) - fn_fetch_default_config - fn_default_config_remote - fn_set_config_vars - fn_list_config_locations -elif [ "${shortname}" == "cod4" ]; then - gamedirname="CallOfDuty4" - array_configs+=(server.cfg) - fn_fetch_default_config - fn_default_config_remote - fn_set_config_vars - fn_list_config_locations -elif [ "${shortname}" == "codwaw" ]; then - gamedirname="CallOfDutyWorldAtWar" - array_configs+=(server.cfg) - fn_fetch_default_config - fn_default_config_remote - fn_set_config_vars - fn_list_config_locations -elif [ "${shortname}" == "cc" ]; then - gamedirname="CodenameCURE" - array_configs+=(server.cfg) - fn_fetch_default_config - fn_default_config_remote - fn_set_config_vars - fn_list_config_locations -elif [ "${shortname}" == "col" ]; then - gamedirname="ColonySurvival" - array_configs+=(colserver.json) - fn_fetch_default_config - fn_default_config_remote - fn_set_config_vars - fn_list_config_locations -elif [ "${shortname}" == "cs" ]; then - gamedirname="CounterStrike" - array_configs+=(server.cfg) - fn_fetch_default_config - fn_default_config_remote - fn_set_config_vars - fn_list_config_locations -elif [ "${shortname}" == "cscz" ]; then - gamedirname="CounterStrikeConditionZero" - array_configs+=(server.cfg) - fn_fetch_default_config - fn_default_config_remote - fn_set_config_vars - fn_list_config_locations -elif [ "${shortname}" == "csgo" ]; then - gamedirname="CounterStrikeGlobalOffensive" - array_configs+=(server.cfg) - fn_fetch_default_config - fn_default_config_remote - fn_set_config_vars - fn_list_config_locations -elif [ "${shortname}" == "css" ]; then - gamedirname="CounterStrikeSource" - array_configs+=(server.cfg) - fn_fetch_default_config - fn_default_config_remote - fn_set_config_vars - fn_list_config_locations -elif [ "${shortname}" == "dayz" ]; then - gamedirname="DayZ" - fn_check_cfgdir - array_configs+=(server.cfg) - fn_fetch_default_config - fn_default_config_remote - fn_set_config_vars - fn_list_config_locations -elif [ "${shortname}" == "dod" ]; then - gamedirname="DayOfDefeat" - array_configs+=(server.cfg) - fn_fetch_default_config - fn_default_config_remote - fn_set_config_vars - fn_list_config_locations -elif [ "${shortname}" == "dodr" ]; then - gamedirname="DayOfDragons" - array_configs+=(Game.ini) - fn_fetch_default_config - fn_default_config_remote - fn_list_config_locations -elif [ "${shortname}" == "dods" ]; then - gamedirname="DayOfDefeatSource" - array_configs+=(server.cfg) - fn_fetch_default_config - fn_default_config_remote - fn_set_config_vars - fn_list_config_locations -elif [ "${shortname}" == "doi" ]; then - gamedirname="DayOfInfamy" - array_configs+=(server.cfg) - fn_fetch_default_config - fn_default_config_remote - fn_set_config_vars - fn_list_config_locations -elif [ "${shortname}" == "dmc" ]; then - gamedirname="DeathmatchClassic" - array_configs+=(server.cfg) - fn_fetch_default_config - fn_default_config_remote - fn_set_config_vars - fn_list_config_locations -elif [ "${shortname}" == "dst" ]; then - gamedirname="DontStarveTogether" - fn_check_cfgdir - array_configs+=(cluster.ini server.ini) - fn_fetch_default_config - fn_default_config_remote - fn_set_dst_config_vars - fn_list_config_locations -elif [ "${shortname}" == "dab" ]; then - gamedirname="DoubleActionBoogaloo" - array_configs+=(server.cfg) - fn_fetch_default_config - fn_default_config_remote - fn_set_config_vars - fn_list_config_locations -elif [ "${shortname}" == "dys" ]; then - gamedirname="Dystopia" - array_configs+=(server.cfg) - fn_fetch_default_config - fn_default_config_remote - fn_set_config_vars - fn_list_config_locations -elif [ "${shortname}" == "eco" ]; then - gamedirname="Eco" - array_configs+=(Network.eco) - fn_fetch_default_config - fn_default_config_remote - fn_set_config_vars - fn_list_config_locations -elif [ "${shortname}" == "etl" ]; then - gamedirname="ETLegacy" - array_configs+=(server.cfg) - fn_fetch_default_config - fn_default_config_remote - fn_set_config_vars - fn_list_config_locations -elif [ "${shortname}" == "ets2" ]; then - gamedirname="EuroTruckSimulator2" - fn_check_cfgdir - array_configs+=(server_config.sii) - fn_fetch_default_config - fn_default_config_remote - fn_set_config_vars - fn_list_config_locations -elif [ "${shortname}" == "fctr" ]; then - gamedirname="Factorio" - array_configs+=(server-settings.json) - fn_fetch_default_config - fn_default_config_remote - fn_set_config_vars - fn_list_config_locations -elif [ "${shortname}" == "fof" ]; then - gamedirname="FistfulofFrags" - array_configs+=(server.cfg) - fn_fetch_default_config - fn_default_config_remote - fn_set_config_vars - fn_list_config_locations -elif [ "${shortname}" == "gmod" ]; then - gamedirname="GarrysMod" - array_configs+=(server.cfg) - fn_fetch_default_config - fn_default_config_remote - fn_set_config_vars - fn_list_config_locations -elif [ "${shortname}" == "hldm" ]; then - gamedirname="HalfLifeDeathmatch" - array_configs+=(server.cfg) - fn_fetch_default_config - fn_default_config_remote - fn_set_config_vars - fn_list_config_locations -elif [ "${shortname}" == "hldms" ]; then - gamedirname="HalfLifeDeathmatchSource" - array_configs+=(server.cfg) - fn_fetch_default_config - fn_default_config_remote - fn_set_config_vars - fn_list_config_locations -elif [ "${shortname}" == "opfor" ]; then - gamedirname="OpposingForce" - array_configs+=(server.cfg) - fn_fetch_default_config - fn_default_config_remote - fn_set_config_vars - fn_list_config_locations -elif [ "${shortname}" == "hl2dm" ]; then - gamedirname="HalfLife2Deathmatch" - array_configs+=(server.cfg) - fn_fetch_default_config - fn_default_config_remote - fn_set_config_vars - fn_list_config_locations -elif [ "${shortname}" == "ins" ]; then - gamedirname="Insurgency" - array_configs+=(server.cfg) - fn_fetch_default_config - fn_default_config_remote - fn_set_config_vars - fn_list_config_locations -elif [ "${shortname}" == "ios" ]; then - gamedirname="IOSoccer" - array_configs+=(server.cfg) - fn_fetch_default_config - fn_default_config_remote - fn_set_config_vars - fn_list_config_locations -elif [ "${shortname}" == "jc2" ]; then - gamedirname="JustCause2" - array_configs+=(config.lua) - fn_fetch_default_config - fn_default_config_remote - fn_set_config_vars - fn_list_config_locations -elif [ "${shortname}" == "jc3" ]; then - gamedirname="JustCause3" - array_configs+=(config.json) - fn_fetch_default_config - fn_default_config_remote - fn_set_config_vars - fn_list_config_locations -elif [ "${shortname}" == "kf" ]; then - gamedirname="KillingFloor" - array_configs+=(Default.ini) - fn_fetch_default_config - fn_default_config_remote - fn_set_config_vars - fn_list_config_locations -elif [ "${shortname}" == "l4d" ]; then - gamedirname="Left4Dead" - array_configs+=(server.cfg) - fn_fetch_default_config - fn_default_config_remote - fn_set_config_vars - fn_list_config_locations -elif [ "${shortname}" == "l4d2" ]; then - gamedirname="Left4Dead2" - array_configs+=(server.cfg) - fn_fetch_default_config - fn_default_config_remote - fn_set_config_vars - fn_list_config_locations -elif [ "${shortname}" == "mc" ] || [ "${shortname}" == "pmc" ]; then - gamedirname="Minecraft" - array_configs+=(server.properties) - fn_fetch_default_config - fn_default_config_remote - fn_set_config_vars - fn_list_config_locations -elif [ "${shortname}" == "mcb" ]; then - gamedirname="MinecraftBedrock" - array_configs+=(server.properties) - fn_fetch_default_config - fn_default_config_remote - fn_set_config_vars - fn_list_config_locations -elif [ "${shortname}" == "mohaa" ]; then - gamedirname="MedalOfHonorAlliedAssault" - array_configs+=(server.cfg) - fn_fetch_default_config - fn_default_config_remote - fn_set_config_vars - fn_list_config_locations -elif [ "${shortname}" == "mh" ]; then - gamedirname="Mordhau" - fn_check_cfgdir - array_configs+=(Game.ini) - fn_fetch_default_config - fn_default_config_remote - fn_set_config_vars - fn_list_config_locations -elif [ "${shortname}" == "ns" ]; then - gamedirname="NaturalSelection" - array_configs+=(server.cfg) - fn_fetch_default_config - fn_default_config_remote - fn_set_config_vars - fn_list_config_locations -elif [ "${shortname}" == "nmrih" ]; then - gamedirname="NoMoreRoominHell" - array_configs+=(server.cfg) - fn_fetch_default_config - fn_default_config_remote - fn_set_config_vars - fn_list_config_locations -elif [ "${shortname}" == "nd" ]; then - gamedirname="NuclearDawn" - array_configs+=(server.cfg) - fn_fetch_default_config - fn_default_config_remote - fn_set_config_vars - fn_list_config_locations -elif [ "${shortname}" == "mta" ]; then - gamedirname="MultiTheftAuto" - fn_check_cfgdir - array_configs+=(acl.xml mtaserver.conf vehiclecolors.conf) - fn_fetch_default_config - fn_default_config_remote - fn_list_config_locations -elif [ "${shotname}" == "mom" ]; then - gamedirname="MemoriesofMars" - array_configs+=(DedicatedServerConfig.cfg) - fn_fetch_default_config - fn_default_config_remote - fn_set_config_vars - fn_list_config_locations -elif [ "${shortname}" == "pvr" ]; then - gamedirname="PavlovVR" - fn_check_cfgdir - array_configs+=(Game.ini) - fn_fetch_default_config - fn_default_config_remote - fn_set_config_vars -elif [ "${shortname}" == "pvkii" ]; then - gamedirname="PiratesVikingandKnightsII" - array_configs+=(server.cfg) - fn_fetch_default_config - fn_default_config_remote - fn_set_config_vars - fn_list_config_locations -elif [ "${shortname}" == "pz" ]; then - gamedirname="ProjectZomboid" - fn_check_cfgdir - array_configs+=(server.ini) - fn_fetch_default_config - fn_default_config_remote - fn_set_config_vars - fn_list_config_locations -elif [ "${shortname}" == "nec" ]; then - gamedirname="Necesse" - fn_check_cfgdir - array_configs+=(server.cfg) - fn_fetch_default_config - fn_default_config_remote - fn_set_config_vars - fn_list_config_locations -elif [ "${shortname}" == "pc" ]; then - gamedirname="ProjectCars" - array_configs+=(server.cfg) - fn_fetch_default_config - fn_default_config_remote - fn_set_config_vars - fn_list_config_locations -elif [ "${shortname}" == "pc2" ]; then - gamedirname="ProjectCars2" - fn_default_config_local - fn_list_config_locations -elif [ "${shortname}" == "q2" ]; then - gamedirname="Quake2" - array_configs+=(server.cfg) - fn_fetch_default_config - fn_default_config_remote - fn_set_config_vars - fn_list_config_locations -elif [ "${shortname}" == "q3" ]; then - gamedirname="Quake3Arena" - array_configs+=(server.cfg) - fn_fetch_default_config - fn_default_config_remote - fn_set_config_vars - fn_list_config_locations -elif [ "${shortname}" == "ql" ]; then - gamedirname="QuakeLive" - array_configs+=(server.cfg) - fn_fetch_default_config - fn_default_config_remote - fn_set_config_vars - fn_list_config_locations -elif [ "${shortname}" == "jk2" ]; then - gamedirname="JediKnightIIJediOutcast" - array_configs+=(server.cfg) - fn_fetch_default_config - fn_default_config_remote - fn_set_config_vars -elif [ "${shortname}" == "qw" ]; then - gamedirname="QuakeWorld" - array_configs+=(server.cfg) - fn_fetch_default_config - fn_default_config_remote - fn_set_config_vars - fn_list_config_locations -elif [ "${shortname}" == "ricochet" ]; then - gamedirname="Ricochet" - array_configs+=(server.cfg) - fn_fetch_default_config - fn_default_config_remote - fn_set_config_vars - fn_list_config_locations -elif [ "${shortname}" == "rtcw" ]; then - gamedirname="ReturnToCastleWolfenstein" - array_configs+=(server.cfg) - fn_fetch_default_config - fn_default_config_remote - fn_set_config_vars - fn_list_config_locations -elif [ "${shortname}" == "rust" ]; then - gamedirname="Rust" - fn_check_cfgdir - array_configs+=(server.cfg) - fn_fetch_default_config - fn_default_config_remote - fn_list_config_locations -elif [ "${shortname}" == "scpsl" ] || [ "${shortname}" == "scpslsm" ]; then - gamedirname="SCPSecretLaboratory" - array_configs+=(config_gameplay.txt config_localadmin.txt) - fn_fetch_default_config - fn_default_config_remote - fn_set_config_vars - fn_list_config_locations -elif [ "${shortname}" == "sf" ]; then - gamedirname="Satisfactory" - array_configs+=(GameUserSettings.ini) - fn_fetch_default_config - fn_default_config_remote - fn_set_config_vars - fn_list_config_locations -elif [ "${shortname}" == "sol" ]; then - gamedirname="Soldat" - array_configs+=(soldat.ini) - fn_fetch_default_config - fn_default_config_remote - fn_set_config_vars - fn_list_config_locations -elif [ "${shortname}" == "sof2" ]; then - gamedirname="SoldierOfFortune2Gold" - array_configs+=(server.cfg mapcycle.txt) - fn_fetch_default_config - fn_default_config_remote - fn_set_config_vars - fn_list_config_locations -elif [ "${shortname}" == "sfc" ]; then - gamedirname="SourceFortsClassic" - array_configs+=(server.cfg) - fn_fetch_default_config - fn_default_config_remote - fn_set_config_vars - fn_list_config_locations -elif [ "${shortname}" == "squad" ]; then - gamedirname="Squad" - array_configs+=(Admins.cfg Bans.cfg License.cfg Server.cfg Rcon.cfg) - fn_fetch_default_config - fn_default_config_remote - fn_set_config_vars - fn_list_config_locations -elif [ "${shortname}" == "sb" ]; then - gamedirname="Starbound" - array_configs+=(starbound_server.config) - fn_fetch_default_config - fn_default_config_remote - fn_set_config_vars - fn_list_config_locations -elif [ "${shortname}" == "st" ]; then - gamedirname="Stationeers" - array_configs+=(default.ini) - fn_fetch_default_config - fn_default_config_remote - fn_set_config_vars - fn_list_config_locations -elif [ "${shortname}" == "stn" ]; then - gamedirname="SurvivetheNights" - array_configs+=(ServerConfig.txt ServerUsers.txt TpPresets.json UserPermissions.json) - fn_fetch_default_config - fn_default_config_remote - fn_set_config_vars - fn_list_config_locations -elif [ "${shortname}" == "sven" ]; then - gamedirname="SvenCoop" - array_configs+=(server.cfg) - fn_fetch_default_config - fn_default_config_remote - fn_set_config_vars - fn_list_config_locations -elif [ "${shortname}" == "tf2" ]; then - gamedirname="TeamFortress2" - array_configs+=(server.cfg) - fn_fetch_default_config - fn_default_config_remote - fn_set_config_vars - fn_list_config_locations -elif [ "${shortname}" == "tfc" ]; then - gamedirname="TeamFortressClassic" - array_configs+=(server.cfg) - fn_fetch_default_config - fn_default_config_remote - fn_set_config_vars - fn_list_config_locations -elif [ "${shortname}" == "ti" ]; then - gamedirname="TheIsle" - array_configs+=(Game.ini) - fn_fetch_default_config - fn_default_config_remote - fn_set_config_vars - fn_list_config_locations -elif [ "${shortname}" == "ts" ]; then - gamedirname="TheSpecialists" - array_configs+=(server.cfg) - fn_fetch_default_config - fn_default_config_remote - fn_set_config_vars - fn_list_config_locations -elif [ "${shortname}" == "ts3" ]; then - gamedirname="TeamSpeak3" - array_configs+=(ts3server.ini) - fn_fetch_default_config - fn_default_config_remote - fn_list_config_locations -elif [ "${shortname}" == "tw" ]; then - gamedirname="Teeworlds" - array_configs+=(server.cfg ctf.cfg dm.cfg duel.cfg tdm.cfg) - fn_fetch_default_config - fn_default_config_remote - fn_set_config_vars - fn_list_config_locations -elif [ "${shortname}" == "terraria" ]; then - gamedirname="Terraria" - array_configs+=(serverconfig.txt) - fn_fetch_default_config - fn_default_config_remote - fn_set_config_vars - fn_list_config_locations -elif [ "${shortname}" == "tu" ]; then - gamedirname="TowerUnite" - fn_check_cfgdir - array_configs+=(TowerServer.ini) - fn_fetch_default_config - fn_default_config_remote - fn_set_config_vars - fn_list_config_locations -elif [ "${shortname}" == "ut" ]; then - gamedirname="UnrealTournament" - array_configs+=(Game.ini Engine.ini) - fn_fetch_default_config - fn_default_config_remote - fn_set_config_vars - fn_list_config_locations -elif [ "${shortname}" == "ut2k4" ]; then - gamedirname="UnrealTournament2004" - array_configs+=(UT2004.ini) - fn_fetch_default_config - fn_default_config_remote - fn_set_config_vars - fn_list_config_locations -elif [ "${shortname}" == "ut99" ]; then - gamedirname="UnrealTournament99" - array_configs+=(Default.ini) - fn_fetch_default_config - fn_default_config_remote - fn_set_config_vars - fn_list_config_locations -elif [ "${shortname}" == "unt" ]; then - gamedirname="Unturned" - array_configs+=(Config.json) - fn_fetch_default_config - fn_default_config_remote - fn_set_config_vars - fn_list_config_locations -elif [ "${shortname}" == "vints" ]; then - gamedirname="VintageStory" - array_configs+=(serverconfig.json) - fn_fetch_default_config - fn_default_config_remote - fn_set_config_vars - fn_list_config_locations -elif [ "${shortname}" == "vs" ]; then - gamedirname="VampireSlayer" - array_configs+=(server.cfg) - fn_fetch_default_config - fn_default_config_remote - fn_set_config_vars - fn_list_config_locations -elif [ "${shortname}" == "wet" ]; then - gamedirname="WolfensteinEnemyTerritory" - array_configs+=(server.cfg) - fn_fetch_default_config - fn_default_config_remote - fn_set_config_vars - fn_list_config_locations -elif [ "${shortname}" == "wf" ]; then - gamedirname="Warfork" - array_configs+=(server.cfg) - fn_fetch_default_config - fn_default_config_remote - fn_set_config_vars - fn_list_config_locations -elif [ "${shortname}" == "wmc" ]; then - gamedirname="Waterfall" - array_configs+=(config.yml) - fn_fetch_default_config - fn_default_config_remote - fn_set_config_vars -elif [ "${shortname}" == "wurm" ]; then - gamedirname="WurmUnlimited" - array_configs+=(server.cfg) - fn_fetch_default_config - fn_default_config_remote - fn_set_config_vars - fn_list_config_locations -elif [ "${shortname}" == "zmr" ]; then - gamedirname="ZombieMasterReborn" - array_configs+=(server.cfg) - fn_fetch_default_config - fn_default_config_remote - fn_set_config_vars - fn_list_config_locations -elif [ "${shortname}" == "zps" ]; then - gamedirname="ZombiePanicSource" - array_configs+=(server.cfg) - fn_fetch_default_config - fn_default_config_remote - fn_set_config_vars - fn_list_config_locations -fi diff --git a/lgsm/functions/install_dst_token.sh b/lgsm/functions/install_dst_token.sh deleted file mode 100644 index 50bc7ed972..0000000000 --- a/lgsm/functions/install_dst_token.sh +++ /dev/null @@ -1,45 +0,0 @@ -#!/bin/bash -# LinuxGSM install_dst_token.sh module -# Author: Daniel Gibbs -# Contributors: http://linuxgsm.com/contrib -# Website: https://linuxgsm.com -# Description: Configures Don't Starve Together cluster with given token. - -functionselfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")" - -echo -e "" -echo -e "${lightyellow}Enter ${gamename} Cluster Token${default}" -echo -e "=================================" -fn_sleep_time -echo -e "A cluster token is required to run this server!" -echo -e "Follow the instructions in this link to obtain this key:" -echo -e "https://linuxgsm.com/dst-auth-token" -echo -e "" -if [ -z "${autoinstall}" ]; then - overwritetoken="true" - if [ -s "${clustercfgdir}/cluster_token.txt" ]; then - echo -e "The cluster token is already set. Do you want to overwrite it?" - fn_script_log_info "Don't Starve Together cluster token is already set" - if fn_prompt_yn "Continue?" N; then - overwritetoken="true" - else - overwritetoken="false" - fi - fi - if [ "${overwritetoken}" == "true" ]; then - echo -e "Once you have the cluster token, enter it below" - echo -n "Cluster Token: " - read -r token - mkdir -pv "${clustercfgdir}" - echo -e "${token}" > "${clustercfgdir}/cluster_token.txt" - if [ -f "${clustercfgdir}/cluster_token.txt" ]; then - echo -e "Don't Starve Together cluster token created" - fn_script_log_info "Don't Starve Together cluster token created" - fi - unset overwritetoken - fi -else - echo -e "You can add your cluster token using the following command" - echo -e "./${selfname} cluster-token" -fi -echo -e "" diff --git a/lgsm/functions/install_eula.sh b/lgsm/functions/install_eula.sh deleted file mode 100644 index 3e51fac714..0000000000 --- a/lgsm/functions/install_eula.sh +++ /dev/null @@ -1,47 +0,0 @@ -#!/bin/bash -# LinuxGSM install_eula.sh module -# Author: Daniel Gibbs -# Contributors: http://linuxgsm.com/contrib -# Website: https://linuxgsm.com -# Description: Gets user to accept the EULA. - -functionselfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")" - -if [ "${shortname}" == "ts3" ]; then - eulaurl="https://www.teamspeak.com/en/privacy-and-terms" -elif [ "${shortname}" == "mc" ] || [ "${shortname}" == "pmc" ]; then - eulaurl="https://account.mojang.com/documents/minecraft_eula" -elif [ "${shortname}" == "ut" ]; then - eulaurl="https://www.epicgames.com/unrealtournament/unreal-tournament-pre-alpha-test-development-build-eula" -fi - -echo -e "" -echo -e "${lightyellow}Accept ${gamename} EULA${default}" -echo -e "=================================" -fn_sleep_time -echo -e "You are required to accept the EULA:" -echo -e "${eulaurl}" -echo -e "" -if [ -z "${autoinstall}" ]; then - echo -e "By continuing you are indicating your agreement to the EULA." - echo -e "" - if ! fn_prompt_yn "Continue?" Y; then - exitcode=0 - core_exit.sh - fi -elif [ "${commandname}" == "START" ]; then - fn_print_info "By continuing you are indicating your agreement to the EULA." - sleep 5 -else - echo -e "By using auto-install you are indicating your agreement to the EULA." - sleep 5 -fi - -if [ "${shortname}" == "ts3" ]; then - touch "${executabledir}/.ts3server_license_accepted" -elif [ "${shortname}" == "mc" ] || [ "${shortname}" == "pmc" ]; then - touch "${serverfiles}/eula.txt" - echo -e "eula=true" > "${serverfiles}/eula.txt" -elif [ "${shortname}" == "ut" ]; then - : -fi diff --git a/lgsm/functions/install_factorio_save.sh b/lgsm/functions/install_factorio_save.sh deleted file mode 100644 index f5fdb8a041..0000000000 --- a/lgsm/functions/install_factorio_save.sh +++ /dev/null @@ -1,15 +0,0 @@ -#!/bin/bash -# LinuxGSM install_factorio_save.sh module -# Author: Daniel Gibbs -# Contributors: http://linuxgsm.com/contrib -# Website: https://linuxgsm.com -# Description: Creates the initial save file for Factorio. - -functionselfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")" - -echo -e "" -echo -e "${lightyellow}Creating initial Factorio savefile${default}" -echo -e "=================================" -fn_sleep_time -check_glibc.sh -"${executabledir}"/factorio --create "${serverfiles}/save1" diff --git a/lgsm/functions/install_gslt.sh b/lgsm/functions/install_gslt.sh deleted file mode 100644 index 1ae1ef3b01..0000000000 --- a/lgsm/functions/install_gslt.sh +++ /dev/null @@ -1,47 +0,0 @@ -#!/bin/bash -# LinuxGSM install_gslt.sh module -# Author: Daniel Gibbs -# Contributors: http://linuxgsm.com/contrib -# Website: https://linuxgsm.com -# Description: Configures GSLT. - -functionselfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")" - -echo -e "" -echo -e "${lightyellow}Game Server Login Token${default}" -echo -e "=================================" -fn_sleep_time -if [ "${shortname}" == "csgo" ] || [ "${shortname}" == "css" ] || [ "${shortname}" == "nmrih" ] || [ "${shortname}" == "bs" ]; then - echo -e "GSLT is required to run a public ${gamename} server" - fn_script_log_info "GSLT is required to run a public ${gamename} server" -else - echo -e "GSLT is an optional feature for ${gamename} server" - fn_script_log_info "GSLT is an optional feature for ${gamename} server" -fi - -echo -e "Get more info and a token here:" -echo -e "https://docs.linuxgsm.com/steamcmd/gslt" -fn_script_log_info "Get more info and a token here:" -fn_script_log_info "https://docs.linuxgsm.com/steamcmd/gslt" -echo -e "" -if [ -z "${autoinstall}" ]; then - if [ "${shortname}" != "tu" ]; then - echo -e "Enter token below (Can be blank)." - echo -n "GSLT TOKEN: " - read -r token - if ! grep -q "^gslt=" "${configdirserver}/${selfname}.cfg" > /dev/null 2>&1; then - echo -e "\ngslt=\"${token}\"" >> "${configdirserver}/${selfname}.cfg" - else - sed -i -e "s/gslt=\"[^\"]*\"/gslt=\"${token}\"/g" "${configdirserver}/${selfname}.cfg" - fi - fi -fi -fn_sleep_time -if [ "${shortname}" == "tu" ]; then - echo -e "The GSLT can be changed by editing ${servercfgdir}/${servercfg}." - fn_script_log_info "The GSLT can be changed by editing ${servercfgdir}/${servercfg}." -else - echo -e "The GSLT can be changed by editing ${configdirserver}/${selfname}.cfg." - fn_script_log_info "The GSLT can be changed by editing ${configdirserver}/${selfname}.cfg." -fi -echo -e "" diff --git a/lgsm/functions/install_header.sh b/lgsm/functions/install_header.sh deleted file mode 100644 index 4cf067f8f4..0000000000 --- a/lgsm/functions/install_header.sh +++ /dev/null @@ -1,22 +0,0 @@ -#!/bin/bash -# LinuxGSM install_header.sh module -# Author: Daniel Gibbs -# Contributors: http://linuxgsm.com/contrib -# Website: https://linuxgsm.com -# Description: Prints installation header. - -functionselfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")" - -clear -fn_print_ascii_logo -fn_sleep_time -echo -e "=================================" -echo -e "${lightyellow}Linux${default}GSM_" -echo -e "by Daniel Gibbs" -echo -e "${lightblue}Version:${default} ${version}" -echo -e "${lightblue}Game:${default} ${gamename}" -echo -e "${lightblue}Website:${default} https://linuxgsm.com" -echo -e "${lightblue}Contributors:${default} https://linuxgsm.com/contrib" -echo -e "${lightblue}Sponsor:${default} https://linuxgsm.com/sponsor" -echo -e "=================================" -fn_sleep_time diff --git a/lgsm/functions/install_logs.sh b/lgsm/functions/install_logs.sh deleted file mode 100644 index 80a55fb944..0000000000 --- a/lgsm/functions/install_logs.sh +++ /dev/null @@ -1,100 +0,0 @@ -#!/bin/bash -# LinuxGSM install_logs.sh module -# Author: Daniel Gibbs -# Contributors: http://linuxgsm.com/contrib -# Website: https://linuxgsm.com -# Description: Creates log directories. - -functionselfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")" - -if [ "${checklogs}" != "1" ]; then - echo -e "" - echo -e "${lightyellow}Creating log directories${default}" - echo -e "=================================" -fi -fn_sleep_time -# Create LinuxGSM logs. -echo -en "installing log dir: ${logdir}..." -mkdir -p "${logdir}" -if [ $? != 0 ]; then - fn_print_fail_eol_nl - core_exit.sh -else - fn_print_ok_eol_nl -fi - -echo -en "installing LinuxGSM log dir: ${lgsmlogdir}..." -mkdir -p "${lgsmlogdir}" -if [ $? != 0 ]; then - fn_print_fail_eol_nl - core_exit.sh -else - fn_print_ok_eol_nl -fi -echo -en "creating LinuxGSM log: ${lgsmlog}..." -touch "${lgsmlog}" -if [ $? != 0 ]; then - fn_print_fail_eol_nl - core_exit.sh -else - fn_print_ok_eol_nl -fi -# Create Console logs. -if [ "${consolelogdir}" ]; then - echo -en "installing console log dir: ${consolelogdir}..." - mkdir -p "${consolelogdir}" - if [ $? != 0 ]; then - fn_print_fail_eol_nl - core_exit.sh - else - fn_print_ok_eol_nl - fi - echo -en "creating console log: ${consolelog}..." - if ! touch "${consolelog}"; then - fn_print_fail_eol_nl - core_exit.sh - else - fn_print_ok_eol_nl - fi -fi - -# Create Game logs. -if [ "${gamelogdir}" ] && [ ! -d "${gamelogdir}" ]; then - echo -en "installing game log dir: ${gamelogdir}..." - if ! mkdir -p "${gamelogdir}"; then - fn_print_fail_eol_nl - core_exit.sh - else - fn_print_ok_eol_nl - fi -fi - -# Symlink to gamelogdir -# unless gamelogdir is within logdir. -# e.g serverfiles/log is not within log/: symlink created -# log/server is in log/: symlink not created -if [ "${gamelogdir}" ]; then - if [ "${gamelogdir:0:${#logdir}}" != "${logdir}" ]; then - echo -en "creating symlink to game log dir: ${logdir}/server -> ${gamelogdir}..." - if ! ln -nfs "${gamelogdir}" "${logdir}/server"; then - fn_print_fail_eol_nl - core_exit.sh - else - fn_print_ok_eol_nl - fi - fi -fi - -# If server uses SteamCMD create a symbolic link to the Steam logs. -if [ -d "${rootdir}/Steam/logs" ]; then - if [ ! -L "${logdir}/steamcmd" ]; then - echo -en "creating symlink to steam log dir: ${logdir}/steamcmd -> ${rootdir}/Steam/logs..." - if ! ln -nfs "${rootdir}/Steam/logs" "${logdir}/steamcmd"; then - fn_print_fail_eol_nl - core_exit.sh - else - fn_print_ok_eol_nl - fi - fi -fi -fn_script_log_info "Logs installed" diff --git a/lgsm/functions/install_mta_resources.sh b/lgsm/functions/install_mta_resources.sh deleted file mode 100644 index 011ad9b71d..0000000000 --- a/lgsm/functions/install_mta_resources.sh +++ /dev/null @@ -1,12 +0,0 @@ -#!/bin/bash -# LinuxGSM install_mta_resources.sh module -# Author: Daniel Gibbs -# Contributors: http://linuxgsm.com/contrib -# Website: https://linuxgsm.com -# Description: Installs the libmysqlclient for database functions on the server and optionally installs default resources required to run the server. - -functionselfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")" - -fn_print_information_nl "${gamename} will not function without resources!" -echo -e " * install default resources using ./${selfname} install-default-resources" -echo -e " * download resources from https://community.multitheftauto.com" diff --git a/lgsm/functions/install_retry.sh b/lgsm/functions/install_retry.sh deleted file mode 100644 index a36b4fb38d..0000000000 --- a/lgsm/functions/install_retry.sh +++ /dev/null @@ -1,16 +0,0 @@ -#!/bin/bash -# LinuxGSM install_retry.sh module -# Author: Daniel Gibbs -# Contributors: http://linuxgsm.com/contrib -# Website: https://linuxgsm.com -# Description: Asks for installation retry after failure. - -functionselfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")" - -if fn_prompt_yn "Retry install?" Y; then - command_install.sh - core_exit.sh -else - exitcode=0 - core_exit.sh -fi diff --git a/lgsm/functions/install_server_dir.sh b/lgsm/functions/install_server_dir.sh deleted file mode 100644 index 658f4360ca..0000000000 --- a/lgsm/functions/install_server_dir.sh +++ /dev/null @@ -1,26 +0,0 @@ -#!/bin/bash -# LinuxGSM install_server_dir.sh module -# Author: Daniel Gibbs -# Contributors: http://linuxgsm.com/contrib -# Website: https://linuxgsm.com -# Description: Creates the server directory. - -functionselfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")" - -echo -e "" -echo -e "${lightyellow}Server Directory${default}" -echo -e "=================================" -fn_sleep_time -if [ -d "${serverfiles}" ]; then - fn_print_warning_nl "A server is already installed here." -fi -pwd -if [ -z "${autoinstall}" ]; then - if ! fn_prompt_yn "Continue?" Y; then - exitcode=0 - core_exit.sh - fi -fi -if [ ! -d "${serverfiles}" ]; then - mkdir -v "${serverfiles}" -fi diff --git a/lgsm/functions/install_server_files.sh b/lgsm/functions/install_server_files.sh deleted file mode 100644 index e550e14550..0000000000 --- a/lgsm/functions/install_server_files.sh +++ /dev/null @@ -1,255 +0,0 @@ -#!/bin/bash -# LinuxGSM install_server_files.sh module -# Author: Daniel Gibbs -# Contributors: http://linuxgsm.com/contrib -# Website: https://linuxgsm.com -# Description: Installs server files. - -functionselfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")" - -fn_install_server_files() { - if [ "${shortname}" == "ahl" ]; then - remote_fileurl="http://linuxgsm.download/ActionHalfLife/action_halflife-1.0.tar.xz" - local_filedir="${tmpdir}" - local_filename="action_halflife-1.0.tar.xz" - chmodx="nochmodx" run="norun" - force="noforce" - md5="61d7b79fd714888b6d65944fdaafa94a" - elif [ "${shortname}" == "bf1942" ]; then - remote_fileurl="http://linuxgsm.download/BattleField1942/bf1942_lnxded-1.61-hacked-to-1.612.full.tar.xz" - local_filedir="${tmpdir}" - local_filename="bf1942_lnxded-1.61-hacked-to-1.612.full.tar.xz" - chmodx="nochmodx" run="norun" - force="noforce" - md5="4223bf4ed85f5162c24b2cba51249b9e" - elif [ "${shortname}" == "bfv" ]; then - remote_fileurl="http://linuxgsm.download/BattlefieldVietnam/bfv_linded-v1.21-20041207_patch.tar.xz" - local_filedir="${tmpdir}" - local_filename="bfv_linded-v1.21-20041207_patch.tar.xz" - chmodx="nochmodx" run="norun" - force="noforce" - md5="e3b4962cdd9d41e23c6fed65101bccde" - elif [ "${shortname}" == "bb" ]; then - remote_fileurl="http://linuxgsm.download/BrainBread/brainbread-v1.2-linuxserver.tar.xz" - local_filedir="${tmpdir}" - local_filename="brainbread-v1.2-linuxserver.tar.xz" - chmodx="nochmodx" run="norun" - force="noforce" - md5="55f227183b736397806d5b6db6143f15" - elif [ "${shortname}" == "cod" ]; then - remote_fileurl="http://linuxgsm.download/CallOfDuty/cod-lnxded-1.5b-full.tar.xz" - local_filedir="${tmpdir}" - local_filename="cod-lnxded-1.5-large.tar.xz" - chmodx="nochmodx" run="norun" - force="noforce" - md5="ee0ad1ccbfa1fd27fde01a4a431a5c2f" - elif [ "${shortname}" == "coduo" ]; then - remote_fileurl="http://linuxgsm.download/CallOfDutyUnitedOffensive/coduo-lnxded-1.51b-full.tar.xz" - local_filedir="${tmpdir}" - local_filename="coduo-lnxded-1.51b-full.tar.xz" - chmodx="nochmodx" run="norun" - force="noforce" - md5="35cabccd67adcda44aaebc59405915b9" - elif [ "${shortname}" == "cod2" ]; then - remote_fileurl="http://linuxgsm.download/CallOfDuty2/cod2-lnxded-1.3-full.tar.xz" - local_filedir="${tmpdir}" - local_filename="cod2-lnxded-1.3-full.tar.xz" - chmodx="nochmodx" run="norun" - force="noforce" - md5="b8c4c611f01627dd43348e78478a3d41" - elif [ "${shortname}" == "cod4" ]; then - remote_fileurl="http://linuxgsm.download/CallOfDuty4/cod4x18_lnxded.tar.xz" - local_filedir="${tmpdir}" - local_filename="cod4x18_lnxded.tar.xz" - chmodx="nochmodx" run="norun" - force="noforce" - md5="d255b59b9756d7dbead67718208512ee" - elif [ "${shortname}" == "codwaw" ]; then - remote_fileurl="http://linuxgsm.download/CallOfDutyWorldAtWar/codwaw-lnxded-1.7-full.tar.xz" - local_filedir="${tmpdir}" - local_filename="codwaw-lnxded-1.7-full.tar.xz" - chmodx="nochmodx" run="norun" - force="noforce" - md5="2c6be1bb66ea631b9b2e7ae6216c6680" - elif [ "${shortname}" == "etl" ]; then - remote_fileurl="http://linuxgsm.download/WolfensteinEnemyTerritory/etlegacy-v2.78.1-i386-et-260b.tar.xz" - local_filedir="${tmpdir}" - local_filename="etlegacy-v2.78.1-i386-et-260b.tar.xz" - chmodx="nochmodx" run="norun" - force="noforce" - md5="7c08b52cb09b30eadb98ea05ef780fc7" - elif [ "${shortname}" == "mohaa" ]; then - remote_fileurl="http://linuxgsm.download/MedalofHonorAlliedAssault/moh_revival_v1.12_RC3.5.1.tar.xz" - local_filedir="${tmpdir}" - local_filename="moh_revival_v1.12_RC3.5.1.tar.xz" - chmodx="nochmodx" run="norun" - force="noforce" - md5="7c664538999252eeaf2b6d9949416480" - elif [ "${shortname}" == "ns" ]; then - remote_fileurl="http://linuxgsm.download/NaturalSelection/ns_dedicated_server_v32.tar.xz" - local_filedir="${tmpdir}" - local_filename="ns_dedicated_server_v32.tar.xz" - chmodx="nochmodx" run="norun" - force="noforce" - md5="23ec3cadd93d8bb1c475bad5b9cce370" - elif [ "${shortname}" == "q2" ]; then - remote_fileurl="http://linuxgsm.download/Quake2/quake2-3.20-glibc-i386-full-linux2.0.tar.xz" - local_filedir="${tmpdir}" - local_filename="quake2-3.20-glibc-i386-full-linux2.0.tar.xz" - chmodx="nochmodx" run="norun" - force="noforce" - md5="2908164a32d4808bb720f2161f6b0c82" - elif [ "${shortname}" == "q3" ]; then - remote_fileurl="http://linuxgsm.download/Quake3/quake3-1.32c-x86-full-linux.tar.xz" - local_filedir="${tmpdir}" - local_filename="quake3-1.32c-x86-full-linux.tar.xz" - chmodx="nochmodx" run="norun" - force="noforce" - md5="b0e26d8919fe9313fb9d8ded2360f3db" - elif [ "${shortname}" == "qw" ]; then - remote_fileurl="http://linuxgsm.download/QuakeWorld/nquake.server.linux.190506.full.tar.xz" - local_filedir="${tmpdir}" - local_filename="nquake.server.linux.190506.full.tar.xz" - chmodx="nochmodx" run="norun" - force="noforce" - md5="82055b7d973206c13a606db8ba288d03" - elif [ "${shortname}" == "rtcw" ]; then - remote_fileurl="http://linuxgsm.download/ReturnToCastleWolfenstein/iortcw-1.51c-x86_64-server-linux-20190507.tar.xz" - local_filedir="${tmpdir}" - local_filename="iortcw-1.51c-x86_64-server-linux-20190507.tar.xz" - chmodx="nochmodx" run="norun" - force="noforce" - md5="df6ff664d37dd0d22787848bdb3cac5f" - elif [ "${shortname}" == "sfc" ]; then - remote_fileurl="http://linuxgsm.download/SourceFortsClassic/SFClassic-1.0-RC7-fix.tar.xz" - local_filedir="${tmpdir}" - local_filename="SFClassic-1.0-RC7-fix.tar.xz" - chmodx="nochmodx" run="norun" - force="noforce" - md5="70077137185700e28fe6bbb6021d12bc" - elif [ "${shortname}" == "sof2" ]; then - remote_fileurl="http://linuxgsm.download/SoldierOfFortune2/sof2gold-1.03.tar.xz" - local_filedir="${tmpdir}" - local_filename="sof2gold-1.03.tar.xz" - chmodx="nochmodx" run="norun" - force="noforce" - md5="201e23bab04207d00ce813d001c483d9" - elif [ "${shortname}" == "ts" ]; then - remote_fileurl="http://linuxgsm.download/TheSpecialists/ts-3-linux-final.tar.xz" - local_filedir="${tmpdir}" - local_filename="ts-3-linux-final.tar.xz" - chmodx="nochmodx" run="norun" - force="noforce" - md5="3c66ecff6e3644f7ac88015732a0fb93" - elif [ "${shortname}" == "ut2k4" ]; then - remote_fileurl="http://linuxgsm.download/UnrealTournament2004/ut2004-server-3369-3-ultimate-linux.tar.xz" - local_filedir="${tmpdir}" - local_filename="ut2004-server-3369-3-ultimate-linux.tar.xz" - chmodx="nochmodx" run="norun" - force="noforce" - md5="9fceaab68554749f4b45be66613b9a15" - elif [ "${shortname}" == "ut99" ]; then - remote_fileurl="http://linuxgsm.download/UnrealTournament99/ut99-server-469b-ultimate-linux.tar.xz" - local_filedir="${tmpdir}" - local_filename="ut99-server-469b-ultimate-linux.tar.xz" - chmodx="nochmodx" run="norun" - force="noforce" - md5="dba3f1122a5e60ee45ece7422fcf78f5" - elif [ "${shortname}" == "ut" ]; then - remote_fileurl="http://linuxgsm.download/UnrealTournament/UnrealTournament-Server-XAN-3525360-Linux.tar.xz" - local_filedir="${tmpdir}" - local_filename="UnrealTournament-Server-XAN-3525360-Linux.tar.xz" - chmodx="noexecute" run="norun" - force="noforce" - md5="41dd92015713a78211eaccf503b72393" - elif [ "${shortname}" == "ut3" ]; then - remote_fileurl="http://linuxgsm.download/UnrealTournament3/UT3-linux-server-2.1.tar.xz" - local_filedir="${tmpdir}" - local_filename="UT3-linux-server-2.1.tar.xz" - chmodx="nochmodx" run="norun" - force="noforce" - md5="8876cca61e3f83ea08db25208bde6ac6" - elif [ "${shortname}" == "vs" ]; then - remote_fileurl="http://linuxgsm.download/VampireSlayer/vs_l-6.0_full.tar.xz" - local_filedir="${tmpdir}" - local_filename="vs_l-6.0_full.tar.xz" - chmodx="nochmodx" run="norun" - force="noforce" - md5="b322f79e0abd31847493c52acf802667" - elif [ "${shortname}" == "wet" ]; then - remote_fileurl="http://linuxgsm.download/WolfensteinEnemyTerritory/enemy-territory.260b.tar.xz" - local_filedir="${tmpdir}" - local_filename="enemy-territory.260b.tar.xz" - chmodx="nochmodx" run="norun" - force="noforce" - md5="581a333cc7eacda2f56d5a00fe11eafa" - elif [ "${shortname}" == "samp" ]; then - remote_fileurl="https://files.sa-mp.com/samp037svr_R2-1.tar.gz" - local_filedir="${tmpdir}" - local_filename="samp037svr_R2-1.tar.gz" - chmodx="nochmodx" run="norun" - force="noforce" - md5="93705e165550c97484678236749198a4" - elif [ "${shortname}" == "zmr" ]; then - remote_fileurl="http://linuxgsm.download/ZombieMasterReborn/zombie_master_reborn_b6_1.tar.xz" - local_filedir="${tmpdir}" - local_filename="zombie_master_reborn_b6_1.tar.xz" - chmodx="nochmodx" run="norun" - force="noforce" - md5="0188ae86dbc9376f11ae3032dba2d665" - else - fn_print_fail_nl "Installing ${gamename} Server failed, missing default configuration" - fn_script_log_fatal "Installing ${gamename} Server failed, missing default configuration" - fi - fn_fetch_file "${remote_fileurl}" "" "" "" "${local_filedir}" "${local_filename}" "${chmodx}" "${run}" "${forcedl}" "${md5}" - fn_dl_extract "${local_filedir}" "${local_filename}" "${serverfiles}" -} - -echo -e "" -echo -e "${lightyellow}Installing ${gamename} Server${default}" -echo -e "=================================" -fn_sleep_time - -if [ "${appid}" ]; then - remotelocation="SteamCMD" - fn_dl_steamcmd -fi - -if [ "${shortname}" == "ts3" ]; then - update_ts3.sh -elif [ "${shortname}" == "mc" ]; then - install_eula.sh - update_minecraft.sh -elif [ "${shortname}" == "mcb" ]; then - update_minecraft_bedrock.sh -elif [ "${shortname}" == "pmc" ]; then - install_eula.sh - update_papermc.sh -elif [ "${shortname}" == "wmc" ] || [ "${shortname}" == "vpmc" ]; then - update_papermc.sh -elif [ "${shortname}" == "mta" ]; then - update_mta.sh -elif [ "${shortname}" == "fctr" ]; then - update_factorio.sh - install_factorio_save.sh -elif [ "${shortname}" == "jk2" ]; then - update_jediknight2.sh -elif [ "${shortname}" == "vints" ]; then - update_vintagestory.sh -elif [ "${shortname}" == "ut99" ]; then - fn_install_server_files - update_ut99.sh -elif [ -z "${appid}" ] || [ "${shortname}" == "ahl" ] || [ "${shortname}" == "bb" ] || [ "${shortname}" == "ns" ] || [ "${shortname}" == "sfc" ] || [ "${shortname}" == "ts" ] || [ "${shortname}" == "vs" ] || [ "${shortname}" == "zmr" ]; then - if [ "${shortname}" == "ut" ]; then - install_eula.sh - fi - fn_install_server_files -fi - -if [ -z "${autoinstall}" ]; then - echo -e "" - echo -e "=================================" - if ! fn_prompt_yn "Was the install successful?" Y; then - install_retry.sh - fi -fi diff --git a/lgsm/functions/install_squad_license.sh b/lgsm/functions/install_squad_license.sh deleted file mode 100644 index 181646e85b..0000000000 --- a/lgsm/functions/install_squad_license.sh +++ /dev/null @@ -1,25 +0,0 @@ -#!/bin/bash -# LinuxGSM install_squad_license.sh module -# Author: Daniel Gibbs -# Contributors: http://linuxgsm.com/contrib -# Website: https://linuxgsm.com -# Description: Configures the Squad server's license. - -functionselfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")" - -echo -e "" -echo -e "${lightyellow}Squad Server License${default}" -echo -e "=================================" -fn_sleep_time -echo -e "Server license is an optional feature for ${gamename} server" -fn_script_log_info "Server license is an optional feature for ${gamename} server" - -echo -e "Get more info and a server license here:" -echo -e "http://forums.joinsquad.com/topic/16519-server-licensing-general-info/" -fn_script_log_info "Get more info and a server license here:" -fn_script_log_info "http://forums.joinsquad.com/topic/16519-server-licensing-general-info/" -echo -e "" -fn_sleep_time -echo -e "The Squad server license can be changed by editing ${servercfgdir}/License.cfg." -fn_script_log_info "The Squad server license can be changed by editing ${selfname}." -echo -e "" diff --git a/lgsm/functions/install_stats.sh b/lgsm/functions/install_stats.sh deleted file mode 100644 index d3b45b40b8..0000000000 --- a/lgsm/functions/install_stats.sh +++ /dev/null @@ -1,28 +0,0 @@ -#!/bin/bash -# LinuxGSM install_stats.sh module -# Author: Daniel Gibbs -# Contributors: http://linuxgsm.com/contrib -# Website: https://linuxgsm.com -# Description: Enabled LinuxGSM Stats. - -functionselfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")" - -echo -e "" -echo -e "${lightyellow}LinuxGSM Stats${default}" -echo -e "=================================" -fn_sleep_time -echo -e "Assist LinuxGSM development by sending anonymous stats to developers." -echo -e "More info: https://docs.linuxgsm.com/configuration/linuxgsm-stats" -echo -e "The following info will be sent:" -echo -e "* game server" -echo -e "* distro" -echo -e "* game server resource usage" -echo -e "* server hardware info" -if [ -z "${autoinstall}" ]; then - if fn_prompt_yn "Allow anonymous usage statistics?" Y; then - echo "stats=\"on\"" >> "${configdirserver}/common.cfg" - fn_print_information_nl "Stats setting is now enabled in common.cfg." - fi -else - fn_print_information_nl "auto-install leaves stats off by default. Stats can be enabled in common.cfg" -fi diff --git a/lgsm/functions/install_steamcmd.sh b/lgsm/functions/install_steamcmd.sh deleted file mode 100644 index b1e64a42cd..0000000000 --- a/lgsm/functions/install_steamcmd.sh +++ /dev/null @@ -1,14 +0,0 @@ -#!/bin/bash -# LinuxGSM install_steamcmd.sh module -# Author: Daniel Gibbs -# Contributors: http://linuxgsm.com/contrib -# Website: https://linuxgsm.com -# Description: Downloads SteamCMD on install. - -functionselfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")" - -echo -e "" -echo -e "${lightyellow}Installing SteamCMD${default}" -echo -e "=================================" -fn_sleep_time -check_steamcmd.sh diff --git a/lgsm/functions/install_ts3db.sh b/lgsm/functions/install_ts3db.sh deleted file mode 100644 index ed879cd287..0000000000 --- a/lgsm/functions/install_ts3db.sh +++ /dev/null @@ -1,76 +0,0 @@ -#!/bin/bash -# LinuxGSM install_ts3db.sh module -# Author: Daniel Gibbs -# Contributors: http://linuxgsm.com/contrib -# Website: https://linuxgsm.com -# Description: Installs the database server MariaDB for TeamSpeak 3. - -functionselfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")" - -fn_install_ts3db_mariadb() { - if [ ! -f "${serverfiles}/libts3db_mariadb.so" ]; then - echo -e "copying libmariadb.so.2...\c" - cp "${serverfiles}/redist/libmariadb.so.2" "${serverfiles}" - local exitcode=$? - if [ "${exitcode}" != "0" ]; then - fn_print_fail_eol_nl - fn_script_log_fatal "copying libmariadb.so.2" - core_exit.sh - else - fn_print_ok_eol_nl - fn_script_log_pass "copying libmariadb.so.2" - fi - fi - - echo -e "" - echo -e "${lightyellow}Configure ${gamename} Server for MariaDB${default}" - echo -e "=================================" - fn_sleep_time - read -rp "Enter MariaDB hostname: " mariahostname - read -rp "Enter MariaDB port: " mariaport - read -rp "Enter MariaDB username: " mariausername - read -rp "Enter MariaDB password: " mariapassword - read -rp "Enter MariaDB database name: " mariadbname - read -rp "Enter MariaDB socket path: " mariadbsocket - - { - echo -e "[config]" - echo -e "host='${mariahostname}'" - echo -e "port='${mariaport}'" - echo -e "username='${mariausername}'" - echo -e "password='${mariapassword}'" - echo -e "database='${mariadbname}'" - echo -e "socket='${mariadbsocket}'" - } >> "${servercfgdir}/ts3db_mariadb.ini" - sed -i "s/dbplugin=ts3db_sqlite3/dbplugin=ts3db_mariadb/g" "${servercfgfullpath}" - sed -i "s/dbpluginparameter=/dbpluginparameter=ts3db_mariadb.ini/g" "${servercfgfullpath}" - sed -i "s/dbsqlcreatepath=create_sqlite\//dbsqlcreatepath=create_mariadb\//g" "${servercfgfullpath}" - echo -e "updating ts3db_mariadb.ini." - fn_sleep_time -} - -echo -e "" -echo -e "${lightyellow}Select Database${default}" -echo -e "=================================" -fn_sleep_time -if [ -z "${autoinstall}" ]; then - if fn_prompt_yn "Do you want to use MariaDB instead of sqlite? (MariaDB must be pre-configured)" N; then - fn_install_ts3db_mariadb - fi -else - fn_print_information_nl "./${selfname} auto-install is uses sqlite. For MariaDB use ./${selfname} install" -fi - -install_eula.sh - -echo -e "" -echo -e "${lightyellow}Getting Privilege Key${default}" -echo -e "=================================" -fn_sleep_time -fn_print_information_nl "Save these details for later." -fn_print_information_nl "Key also saved in:" -echo -e "${serverfiles}/privilege_key.txt" -cd "${executabledir}" || exit -./ts3server_startscript.sh start inifile=ts3-server.ini 2>&1 | tee "${serverfiles}/privilege_key.txt" -sleep 5 -./ts3server_startscript.sh stop diff --git a/lgsm/functions/install_ut2k4_key.sh b/lgsm/functions/install_ut2k4_key.sh deleted file mode 100644 index 124052d05d..0000000000 --- a/lgsm/functions/install_ut2k4_key.sh +++ /dev/null @@ -1,30 +0,0 @@ -#!/bin/bash -# LinuxGSM install_ut2k4_key.sh module -# Author: Daniel Gibbs -# Contributors: http://linuxgsm.com/contrib -# Website: https://linuxgsm.com -# Description: Activates ut2k4 server with given key. - -functionselfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")" - -echo -e "" -echo -e "${lightyellow}Enter ${gamename} CD Key${default}" -echo -e "=================================" -fn_sleep_time -echo -e "To get your server listed on the Master Server list" -echo -e "you must get a free CD key. Get a key here:" -echo -e "https://www.epicgames.com/unrealtournament/forums/cdkey.php?2004" -echo -e "" -if [ -z "${autoinstall}" ]; then - echo -e "Once you have the key enter it below" - echo -n "KEY: " - read -r CODE - echo -e ""\""CDKey"\""="\""${CODE}"\""" > "${systemdir}/cdkey" - if [ -f "${systemdir}/cdkey" ]; then - fn_script_log_info "UT2K4 Server CD Key created" - fi -else - echo -e "You can add your key using the following command" - echo -e "./${selfname} server-cd-key" -fi -echo -e "" diff --git a/lgsm/functions/mods_core.sh b/lgsm/functions/mods_core.sh deleted file mode 100644 index 8e4ade7716..0000000000 --- a/lgsm/functions/mods_core.sh +++ /dev/null @@ -1,755 +0,0 @@ -#!/bin/bash -# LinuxGSM command_mods_install.sh module -# Author: Daniel Gibbs -# Contributors: http://linuxgsm.com/contrib -# Website: https://linuxgsm.com -# Description: Core functions for mods list/install/update/remove - -functionselfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")" - -# Files and Directories. -modsdir="${lgsmdir}/mods" -modstmpdir="${modsdir}/tmp" -extractdest="${modstmpdir}/extract" -modsinstalledlist="installed-mods.txt" -modsinstalledlistfullpath="${modsdir}/${modsinstalledlist}" - -## Installation. - -# Download management. -fn_mod_install_files() { - fn_fetch_file "${modurl}" "" "" "" "${modstmpdir}" "${modfilename}" - # Check if variable is valid checking if file has been downloaded and exists. - if [ ! -f "${modstmpdir}/${modfilename}" ]; then - fn_print_failure "An issue occurred downloading ${modprettyname}" - fn_script_log_fatal "An issue occurred downloading ${modprettyname}" - core_exit.sh - fi - if [ ! -d "${extractdest}" ]; then - mkdir -p "${extractdest}" - fi - fn_dl_extract "${modstmpdir}" "${modfilename}" "${extractdest}" -} - -# Convert mod files to lowercase if needed. -fn_mod_lowercase() { - # Checking lowercase settings from mods array definition - if [ "${modlowercase}" == "LowercaseOn" ]; then - echo -en "converting ${modprettyname} files to lowercase..." - fn_sleep_time - fn_script_log_info "Converting ${modprettyname} files to lowercase" - # Total files and directories for the mod, to output to the user - fileswc=$(find "${extractdest}" | wc -l) - # Total uppercase files and directories for the mod, to output to the user - filesupperwc=$(find "${extractdest}" -name '*[[:upper:]]*' | wc -l) - fn_script_log_info "Found ${filesupperwc} uppercase files out of ${fileswc}, converting" - echo -en "Found ${filesupperwc} uppercase files out of ${fileswc}, converting..." - # Convert files and directories starting from the deepest to prevent issues (-depth argument) - while read -r src; do - # We have to convert only the last file from the path, otherwise we will fail to convert anything if a parent dir has any uppercase - # therefore, we have to separate the end of the filename to only lowercase it rather than the whole line - # Gather parent dir, filename lowercase filename, and set lowercase destination name - latestparentdir=$(dirname "${src}") - latestfilelc=$(basename "${src}" | tr '[:upper:]' '[:lower:]') - dst="${latestparentdir}/${latestfilelc}" - # Only convert if destination does not already exist for some reason - if [ ! -e "${dst}" ]; then - # Finally we can rename the file - mv "${src}" "${dst}" - # Exit if it fails for any reason - local exitcode=$? - if [ "${exitcode}" != 0 ]; then - fn_print_fail_eol_nl - core_exit.sh - fi - fi - done < <(find "${extractdest}" -depth -name '*[[:upper:]]*') - fn_print_ok_eol_nl - fi -} - -# Create ${modcommand}-files.txt containing the full extracted file/directory list. -fn_mod_create_filelist() { - echo -en "building ${modcommand}-files.txt..." - fn_sleep_time - # ${modsdir}/${modcommand}-files.txt. - find "${extractdest}" -mindepth 1 -printf '%P\n' > "${modsdir}/${modcommand}-files.txt" - local exitcode=$? - if [ "${exitcode}" != 0 ]; then - fn_print_fail_eol_nl - fn_script_log_fatal "Building ${modsdir}/${modcommand}-files.txt" - core_exit.sh - else - fn_print_ok_eol_nl - fn_script_log_pass "Building ${modsdir}/${modcommand}-files.txt" - fi - # Adding removed files if needed. - if [ -f "${modsdir}/.removedfiles.tmp" ]; then - cat "${modsdir}/.removedfiles.tmp" >> "${modsdir}/${modcommand}-files.txt" - fi -} - -# Copy the mod into serverfiles. -fn_mod_copy_destination() { - echo -en "copying ${modprettyname} to ${modinstalldir}..." - fn_sleep_time - cp -Rf "${extractdest}/." "${modinstalldir}/" - local exitcode=$? - if [ "${exitcode}" != 0 ]; then - fn_print_fail_eol_nl - fn_script_log_fatal "Copying ${modprettyname} to ${modinstalldir}" - else - fn_print_ok_eol_nl - fn_script_log_pass "Copying ${modprettyname} to ${modinstalldir}" - fi -} - -# Add the mod to the installed-mods.txt. -fn_mod_add_list() { - if [ -z "$(sed -n "/^${modcommand}$/p" "${modsinstalledlistfullpath}")" ]; then - echo -e "${modcommand}" >> "${modsinstalledlistfullpath}" - fn_script_log_info "${modcommand} added to ${modsinstalledlist}" - fi -} - -# Prevent sensitive directories from being erased upon uninstall by removing them from: ${modcommand}-files.txt. -fn_mod_tidy_files_list() { - # Check file list validity. - fn_check_mod_files_list - # Output to the user - echo -en "tidy up ${modcommand}-files.txt..." - fn_sleep_time - fn_script_log_info "Tidy up ${modcommand}-files.txt" - # Lines/files to remove from file list (end with ";" separator). - removefromlist="cfg;addons;RustDedicated_Data;RustDedicated_Data\/Managed;RustDedicated_Data\/Managed\/x86;RustDedicated_Data\/Managed\/x64;" - # Loop through files to remove from file list, - # generate elements to remove from list. - removefromlistamount=$(echo -e "${removefromlist}" | awk -F ';' '{ print NF }') - # Test all subvalue of "removefromlist" using the ";" separator. - for ((filesindex = 1; filesindex < removefromlistamount; filesindex++)); do - # Put current file into test variable. - removefilevar=$(echo -e "${removefromlist}" | awk -F ';' -v x=${filesindex} '{ print $x }') - # Delete line(s) matching exactly. - sed -i "/^${removefilevar}$/d" "${modsdir}/${modcommand}-files.txt" - # Exit on error. - local exitcode=$? - if [ "${exitcode}" != 0 ]; then - fn_print_fail_eol_nl - fn_script_log_fatal "Error while tidying line: ${removefilevar} from: ${modsdir}/${modcommand}-files.txt" - core_exit.sh - break - fi - done - fn_print_ok_eol_nl - # Sourcemod fix - # Remove metamod from sourcemod fileslist. - if [ "${modcommand}" == "sourcemod" ]; then - # Remove addons/metamod & addons/metamod/sourcemod.vdf from ${modcommand}-files.txt. - sed -i "/^addons\/metamod$/d" "${modsdir}/${modcommand}-files.txt" - sed -i "/^addons\/metamod\/sourcemod.vdf$/d" "${modsdir}/${modcommand}-files.txt" - fi - - # Remove common paths from deletion list (Add your sourcemod mod here) - if [ "${modcommand}" == "gokz" ] || [ "${modcommand}" == "ttt" ] || [ "${modcommand}" == "steamworks" ] || [ "${modcommand}" == "get5" ]; then - sed -i "/^addons\/sourcemod$/d" "${modsdir}/${modcommand}-files.txt" - sed -i "/^addons\/sourcemod\/configs$/d" "${modsdir}/${modcommand}-files.txt" - sed -i "/^addons\/sourcemod\/extensions$/d" "${modsdir}/${modcommand}-files.txt" - sed -i "/^addons\/sourcemod\/logs$/d" "${modsdir}/${modcommand}-files.txt" - sed -i "/^addons\/sourcemod\/plugins$/d" "${modsdir}/${modcommand}-files.txt" - sed -i "/^addons\/sourcemod\/plugins\/disabled$/d" "${modsdir}/${modcommand}-files.txt" - sed -i "/^addons\/sourcemod\/scripting$/d" "${modsdir}/${modcommand}-files.txt" - sed -i "/^addons\/sourcemod\/scripting\/include$/d" "${modsdir}/${modcommand}-files.txt" - sed -i "/^addons\/sourcemod\/translations$/d" "${modsdir}/${modcommand}-files.txt" - # Don't delete directories of translations like 'fr', 'sv', 'de', etc - sed -i "/^addons\/sourcemod\/translations\/[A-Za-z0-9_]*$/d" "${modsdir}/${modcommand}-files.txt" - sed -i "/^cfg\/sourcemod$/d" "${modsdir}/${modcommand}-files.txt" - sed -i "/^maps$/d" "${modsdir}/${modcommand}-files.txt" - sed -i "/^materialss$/d" "${modsdir}/${modcommand}-files.txt" - sed -i "/^materials\/models$/d" "${modsdir}/${modcommand}-files.txt" - sed -i "/^materials\/models\/weapons$/d" "${modsdir}/${modcommand}-files.txt" - sed -i "/^materials\/darkness$/d" "${modsdir}/${modcommand}-files.txt" - sed -i "/^materials\/decals$/d" "${modsdir}/${modcommand}-files.txt" - sed -i "/^materials\/overlays$/d" "${modsdir}/${modcommand}-files.txt" - sed -i "/^models$/d" "${modsdir}/${modcommand}-files.txt" - sed -i "/^models\/weapons$/d" "${modsdir}/${modcommand}-files.txt" - sed -i "/^sound$/d" "${modsdir}/${modcommand}-files.txt" - sed -i "/^sound\/weapons$/d" "${modsdir}/${modcommand}-files.txt" - fi - - # Remove paths of specific mods from deletion list - if [ "${modcommand}" == "gokz" ]; then - sed -i "/^addons\/sourcemod\/scripting\/include\/smjansson.inc$/d" "${modsdir}/${modcommand}-files.txt" - sed -i "/^addons\/sourcemod\/scripting\/include\/GlobalAPI-Core.inc$/d" "${modsdir}/${modcommand}-files.txt" - sed -i "/^addons\/sourcemod\/scripting\/include\/sourcebanspp.inc$/d" "${modsdir}/${modcommand}-files.txt" - sed -i "/^addons\/sourcemod\/scripting\/include\/autoexecconfig.inc$/d" "${modsdir}/${modcommand}-files.txt" - sed -i "/^addons\/sourcemod\/scripting\/include\/colorvariables.inc$/d" "${modsdir}/${modcommand}-files.txt" - sed -i "/^addons\/sourcemod\/scripting\/include\/movementapi.inc$/d" "${modsdir}/${modcommand}-files.txt" - sed -i "/^addons\/sourcemod\/scripting\/include\/movement.inc$/d" "${modsdir}/${modcommand}-files.txt" - sed -i "/^addons\/sourcemod\/scripting\/include\/dhooks.inc$/d" "${modsdir}/${modcommand}-files.txt" - sed -i "/^addons\/sourcemod\/scripting\/include\/updater.inc$/d" "${modsdir}/${modcommand}-files.txt" - fi -} - -## Information Gathering. - -# Get details of a mod any (relevant and unique, such as full mod name or install command) value. -fn_mod_get_info() { - # Variable to know when job is done. - modinfocommand="0" - # Find entry in global array. - for ((index = 0; index <= ${#mods_global_array[@]}; index++)); do - # When entry is found. - if [ "${mods_global_array[index]}" == "${currentmod}" ]; then - # Go back to the previous "MOD" separator. - for ((index = index; index <= ${#mods_global_array[@]}; index--)); do - # When "MOD" is found. - if [ "${mods_global_array[index]}" == "MOD" ]; then - # Get info. - fn_mods_define - modinfocommand="1" - break - fi - done - fi - # Exit the loop if job is done. - if [ "${modinfocommand}" == "1" ]; then - break - fi - done - - # What happens if mod is not found. - if [ "${modinfocommand}" == "0" ]; then - fn_script_log_error "Could not find information for ${currentmod}" - fn_print_error_nl "Could not find information for ${currentmod}" - core_exit.sh - fi -} - -# Define all variables for a mod at once when index is set to a separator. -fn_mods_define() { - if [ -z "$index" ]; then - fn_script_log_fatal "index variable not set. Please report an issue." - fn_print_error "index variable not set. Please report an issue." - echo -e "* https://github.com/GameServerManagers/LinuxGSM/issues" - core_exit.sh - fi - modcommand="${mods_global_array[index + 1]}" - modprettyname="${mods_global_array[index + 2]}" - modurl="${mods_global_array[index + 3]}" - modfilename="${mods_global_array[index + 4]}" - modsubdirs="${mods_global_array[index + 5]}" - modlowercase="${mods_global_array[index + 6]}" - modinstalldir="${mods_global_array[index + 7]}" - modkeepfiles="${mods_global_array[index + 8]}" - modengines="${mods_global_array[index + 9]}" - modgames="${mods_global_array[index + 10]}" - modexcludegames="${mods_global_array[index + 11]}" - modsite="${mods_global_array[index + 12]}" - moddescription="${mods_global_array[index + 13]}" -} - -# Builds list of installed mods. -# using installed-mods.txt grabing mod info from mods_list.sh. -fn_mods_installed_list() { - fn_mods_count_installed - # Set/reset variables. - installedmodsline="1" - installedmodslist=() - modprettynamemaxlength="0" - modsitemaxlength="0" - moddescriptionmaxlength="0" - modcommandmaxlength="0" - # Loop through every line of the installed mods list ${modsinstalledlistfullpath}. - while [ "${installedmodsline}" -le "${installedmodscount}" ]; do - currentmod=$(sed "${installedmodsline}q;d" "${modsinstalledlistfullpath}") - # Get mod info to make sure mod exists. - fn_mod_get_info - # Add the mod to available commands. - installedmodslist+=("${modcommand}") - # Increment line check. - ((installedmodsline++)) - done - if [ "${installedmodscount}" ]; then - fn_script_log_info "${installedmodscount} addons/mods are currently installed" - fi -} - -# Loops through mods_global_array to define available mods & provide available commands for mods installation. -fn_mods_available() { - # First, reset variables. - compatiblemodslist=() - availablemodscommands=() - # Find compatible games. - # Find separators through the global array. - for ((index = "0"; index <= ${#mods_global_array[@]}; index++)); do - # If current value is a separator; then. - if [ "${mods_global_array[index]}" == "${modseparator}" ]; then - # Set mod variables. - fn_mods_define - # Test if game is compatible. - fn_mod_compatible_test - # If game is compatible. - if [ "${modcompatibility}" == "1" ]; then - # Put it into an array to prepare user output. - compatiblemodslist+=("${modprettyname}" "${modcommand}" "${modsite}" "${moddescription}") - # Keep available commands in an array to make life easier. - availablemodscommands+=("${modcommand}") - fi - fi - done -} - -## Mod compatibility check. - -# Find out if a game is compatible with a mod from a modgames (list of games supported by a mod) variable. -fn_compatible_mod_games() { - # Reset test value. - modcompatiblegame="0" - # If value is set to GAMES (ignore). - if [ "${modgames}" != "GAMES" ]; then - # How many games we need to test. - gamesamount=$(echo -e "${modgames}" | awk -F ';' '{ print NF }') - # Test all subvalue of "modgames" using the ";" separator. - for ((gamevarindex = 1; gamevarindex < gamesamount; gamevarindex++)); do - # Put current game name into modtest variable. - gamemodtest=$(echo -e "${modgames}" | awk -F ';' -v x=${gamevarindex} '{ print $x }') - # If game name matches. - if [ "${gamemodtest}" == "${gamename}" ]; then - # Mod is compatible. - modcompatiblegame="1" - fi - done - fi -} - -# Find out if an engine is compatible with a mod from a modengines (list of engines supported by a mod) variable. -fn_compatible_mod_engines() { - # Reset test value. - modcompatibleengine="0" - # If value is set to ENGINES (ignore). - if [ "${modengines}" != "ENGINES" ]; then - # How many engines we need to test. - enginesamount=$(echo -e "${modengines}" | awk -F ';' '{ print NF }') - # Test all subvalue of "modengines" using the ";" separator. - for ((gamevarindex = 1; gamevarindex < ${enginesamount}; gamevarindex++)); do - # Put current engine name into modtest variable. - enginemodtest=$(echo -e "${modengines}" | awk -F ';' -v x=${gamevarindex} '{ print $x }') - # If engine name matches. - if [ "${enginemodtest}" == "${engine}" ]; then - # Mod is compatible. - modcompatibleengine="1" - fi - done - fi -} - -# Find out if a game is not compatible with a mod from a modnotgames (list of games not supported by a mod) variable. -fn_not_compatible_mod_games() { - # Reset test value. - modeincompatiblegame="0" - # If value is set to NOTGAMES (ignore). - if [ "${modexcludegames}" != "NOTGAMES" ]; then - # How many engines we need to test. - excludegamesamount=$(echo -e "${modexcludegames}" | awk -F ';' '{ print NF }') - # Test all subvalue of "modexcludegames" using the ";" separator. - for ((gamevarindex = 1; gamevarindex < excludegamesamount; gamevarindex++)); do - # Put current engine name into modtest variable. - excludegamemodtest=$(echo -e "${modexcludegames}" | awk -F ';' -v x=${gamevarindex} '{ print $x }') - # If engine name matches. - if [ "${excludegamemodtest}" == "${gamename}" ]; then - # Mod is compatible. - modeincompatiblegame="1" - fi - done - fi -} - -# Sums up if a mod is compatible or not with modcompatibility=0/1. -fn_mod_compatible_test() { - # Test game and engine compatibility. - fn_compatible_mod_games - fn_compatible_mod_engines - fn_not_compatible_mod_games - if [ "${modeincompatiblegame}" == "1" ]; then - modcompatibility="0" - elif [ "${modcompatibleengine}" == "1" ] || [ "${modcompatiblegame}" == "1" ]; then - modcompatibility="1" - else - modcompatibility="0" - fi -} - -## Directory management. - -# Create mods files and directories if it doesn't exist. -fn_create_mods_dir() { - # Create lgsm data modsdir. - if [ ! -d "${modsdir}" ]; then - echo -en "creating LinuxGSM mods data directory ${modsdir}..." - mkdir -p "${modsdir}" - exitcode=$? - if [ "${exitcode}" != 0 ]; then - fn_print_fail_eol_nl - fn_script_log_fatal "Creating mod download dir ${modsdir}" - core_exit.sh - else - fn_print_ok_eol_nl - fn_script_log_pass "Creating mod download dir ${modsdir}" - fi - fi - # Create mod install directory. - if [ ! -d "${modinstalldir}" ]; then - echo -en "creating mods install directory ${modinstalldir}..." - mkdir -p "${modinstalldir}" - exitcode=$? - if [ "${exitcode}" != 0 ]; then - fn_print_fail_eol_nl - fn_script_log_fatal "Creating mod install directory ${modinstalldir}" - core_exit.sh - else - fn_print_ok_eol_nl - fn_script_log_pass "Creating mod install directory ${modinstalldir}" - fi - fi - - # Create lgsm/data/${modsinstalledlist}. - if [ ! -f "${modsinstalledlistfullpath}" ]; then - touch "${modsinstalledlistfullpath}" - fn_script_log_info "Created ${modsinstalledlistfullpath}" - fi -} - -# Create tmp download mod directory. -fn_mods_create_tmp_dir() { - if [ ! -d "${modstmpdir}" ]; then - mkdir -p "${modstmpdir}" - exitcode=$? - echo -en "creating mod download directory ${modstmpdir}..." - if [ "${exitcode}" != 0 ]; then - fn_print_fail_eol_nl - fn_script_log_fatal "Creating mod download directory ${modstmpdir}" - core_exit.sh - else - fn_print_ok_eol_nl - fn_script_log_pass "Creating mod download directory ${modstmpdir}" - fi - fi -} - -# Remove the tmp mod download directory when finished. -fn_mods_clear_tmp_dir() { - if [ -d "${modstmpdir}" ]; then - echo -en "clearing mod download directory ${modstmpdir}..." - rm -rf "${modstmpdir:?}" - exitcode=$? - if [ "${exitcode}" != 0 ]; then - fn_print_fail_eol_nl - fn_script_log_fatal "Clearing mod download directory ${modstmpdir}" - core_exit.sh - else - fn_print_ok_eol_nl - fn_script_log_pass "Clearing mod download directory ${modstmpdir}" - fi - - fi - # Clear temp file list as well. - if [ -f "${modsdir}/.removedfiles.tmp" ]; then - rm -f "${modsdir:?}/.removedfiles.tmp" - fi -} - -# Counts how many mods were installed. -fn_mods_count_installed() { - if [ -f "${modsinstalledlistfullpath}" ]; then - installedmodscount=$(wc -l < "${modsinstalledlistfullpath}") - else - installedmodscount=0 - fi -} - -# Exits if no mods were installed. -fn_mods_check_installed() { - # Count installed mods. - fn_mods_count_installed - # If no mods are found. - if [ ${installedmodscount} -eq 0 ]; then - echo -e "" - fn_print_failure_nl "No installed mods or addons were found" - echo -e " * Install mods using LinuxGSM first with: ./${selfname} mods-install" - fn_script_log_error "No installed mods or addons were found." - core_exit.sh - fi -} - -# Checks that mod files list exists and isn't empty. -fn_check_mod_files_list() { - # File list must exist and be valid before any operation on it. - if [ -f "${modsdir}/${modcommand}-files.txt" ]; then - # How many lines is the file list. - modsfilelistsize=$(wc -l < "${modsdir}/${modcommand}-files.txt") - # If file list is empty. - if [ "${modsfilelistsize}" -eq 0 ]; then - fn_print_failure "${modcommand}-files.txt is empty" - echo -e "* Unable to remove ${modprettyname}" - fn_script_log_fatal "${modcommand}-files.txt is empty: Unable to remove ${modprettyname}." - core_exit.sh - fi - else - fn_print_failure "${modsdir}/${modcommand}-files.txt does not exist" - fn_script_log_fatal "${modsdir}/${modcommand}-files.txt does not exist: Unable to remove ${modprettyname}." - core_exit.sh - fi -} - -fn_mod_exist() { - modreq=$1 - # requires one parameter, the mod - if [ -f "${modsdir}/${modreq}-files.txt" ]; then - # how many lines is the file list - modsfilelistsize=$(wc -l < "${modsdir}/${modreq}-files.txt") - # if file list is empty - if [ "${modsfilelistsize}" -eq 0 ]; then - fn_mod_required_fail_exist "${modreq}" - fi - else - fn_mod_required_fail_exist "${modreq}" - fi -} - -fn_mod_required_fail_exist() { - modreq=$1 - # requires one parameter, the mod - fn_script_log_fatal "${modreq}-files.txt is empty: unable to find ${modreq} installed" - echo -en "* Unable to find '${modreq}' which is required prior to installing this mod..." - fn_print_fail_eol_nl - core_exit.sh -} - -fn_mod_liblist_gam_filenames() { - # clear variables just in case - moddll="" - modso="" - moddylib="" - - # default libraries - case ${gamename} in - "Counter-Strike 1.6") - moddll="mp.dll" - modso="cs.so" - moddylib="cs.dylib" - ;; - "Day of Defeat") - moddll="dod.dll" - modso="dod.so" - moddylib="dod.dylib" - ;; - "Team Fortress Classic") - moddll="tfc.dll" - modso="tfc.so" - moddylib="tfc.dylib" - ;; - "Natural Selection") - moddll="ns.dll" - modso="ns_i386.so" - moddylib="" - ;; - "The Specialists") - moddll="mp.dll" - modso="ts_i386.so" - moddylib="" - ;; - "Half-Life: Deathmatch") - moddll="hl.dll" - modso="hl.so" - moddylib="hl.dylib" - ;; - esac -} - -# modifers for liblist.gam to add/remote metamod binaries -fn_mod_install_liblist_gam_file() { - - fn_mod_liblist_gam_filenames - - if [ -f "${modinstalldir}/liblist.gam" ]; then - # modify the liblist.gam file to initialize Metamod - logentry="sed replace (dlls\\${moddll}) ${modinstalldir}/liblist.gam" - echo -en "modifying gamedll in liblist.gam..." - rpldll="s/dlls\\\\${moddll}/addons\/metamod\/dlls\/metamod.dll/g" - sed -i $rpldll "${modinstalldir}/liblist.gam" - grep -q "addons/metamod/dlls/metamod.dll" "${modinstalldir}/liblist.gam" - exitcode=$? - # if replacement back didn't happen, error out. - if [ "${exitcode}" != 0 ]; then - fn_script_log_fatal "${logentry}" - fn_print_fail_eol_nl - else - fn_script_log_pass "${logentry}" - fn_print_ok_eol_nl - fi - - # modify the liblist.gam file to initialize metamod - logentry="sed replace (dlls\\${modso}) ${modinstalldir}/liblist.gam" - echo -en "modifying gamedll_linux in liblist.gam..." - rplso="s/dlls\/${modso}/addons\/metamod\/dlls\/metamod.so/g" - sed -i $rplso "${modinstalldir}/liblist.gam" - grep -q "addons/metamod/dlls/metamod.so" "${modinstalldir}/liblist.gam" - exitcode=$? - # if replacement back didn't happen, error out - if [ "${exitcode}" != 0 ]; then - fn_script_log_fatal "${logentry}" - fn_print_fail_eol_nl - else - fn_script_log_pass "${logentry}" - fn_print_ok_eol_nl - fi - - # mac os needs to be checked not all mods support mac os - if [ -n "${moddylib}" ]; then - # modify the liblist.gam file to initialize metamod - logentry="sed replace (dlls\\${moddylib}) ${modinstalldir}/liblist.gam" - echo -en "modifying gamedll_osx in liblist.gam..." - rpldylib="s/dlls\/${moddylib}/addons\/metamod\/dlls\/metamod.dylib/g" - sed -i $rpldylib "${modinstalldir}/liblist.gam" - grep -q "addons/metamod/dlls/metamod.dylib" "${modinstalldir}/liblist.gam" - exitcode=$? - # if replacement back didn't happen, error out. - if [ "${exitcode}" != 0 ]; then - fn_script_log_fatal "${logentry}" - fn_print_fail_eol_nl - else - fn_script_log_pass ${logentry} - fn_print_ok_eol_nl - fi - fi - fi -} - -fn_mod_remove_liblist_gam_file() { - - fn_mod_liblist_gam_filenames - - if [ -f "${modinstalldir}/liblist.gam" ]; then - # modify the liblist.gam file back to defaults - logentry="sed replace (addons/metamod/dlls/metamod.dll) ${modinstalldir}/liblist.gam" - echo -en "modifying gamedll in liblist.gam..." - rpldll="s/addons\/metamod\/dlls\/metamod.dll/dlls\\\\${moddll}/g" - sed -i $rpldll "${modinstalldir}/liblist.gam" - grep -q "${moddll}" "${modinstalldir}/liblist.gam" - exitcode=$? - # if replacement back didn't happen, error out. - if [ "${exitcode}" != 0 ]; then - fn_script_log_fatal "${logentry}" - fn_print_fail_eol_nl - else - fn_script_log_pass ${logentry} - fn_print_ok_eol_nl - fi - - # modify the liblist.gam file back to defaults - logentry="sed replace (addons/metamod/dlls/metamod.so) ${modinstalldir}/liblist.gam" - echo -en "modifying gamedll_linux in liblist.gam..." - rplso="s/addons\/metamod\/dlls\/metamod.so/dlls\/${modso}/g" - sed -i $rplso "${modinstalldir}/liblist.gam" - grep -q "${modso}" "${modinstalldir}/liblist.gam" - exitcode=$? - # if replacement back didn't happen, error out - if [ "${exitcode}" != 0 ]; then - fn_script_log_fatal "${logentry}" - fn_print_fail_eol_nl - else - fn_script_log_pass ${logentry} - fn_print_ok_eol_nl - fi - - # mac os needs to be checked not all mods support mac os - if [ -n "${moddylib}" ]; then - # modify the liblist.gam file back to defaults - logentry="sed replace (addons/metamod/dlls/metamod.dylib) ${modinstalldir}/liblist.gam" - echo -en "modifying gamedll_osx in liblist.gam..." - rpldylib="s/addons\/metamod\/dlls\/metamod.dylib/dlls\/${moddylib}/g" - sed -i $rpldylib "${modinstalldir}/liblist.gam" - grep -q "${moddylib}" "${modinstalldir}/liblist.gam" - # if replacement back didn't happen, error out. - exitcode=$? - if [ "${exitcode}" != 0 ]; then - fn_script_log_fatal "${logentry}" - fn_print_fail_eol_nl - else - fn_script_log_pass ${logentry} - fn_print_ok_eol_nl - fi - fi - fi -} - -fn_mod_install_amxmodx_file() { - # does plugins.ini exist? - if [ -f "${modinstalldir}/addons/metamod/plugins.ini" ]; then - # since it does exist, is the entry already in plugins.ini - logentry="line (linux addons/amxmodx/dlls/amxmodx_mm_i386.so) inserted into ${modinstalldir}/addons/metamod/plugins.ini" - echo -en "adding amxmodx_mm_i386.so in plugins.ini..." - grep -q "amxmodx_mm_i386.so" "${modinstalldir}/addons/metamod/plugins.ini" - exitcode=$? - if [ "${exitcode}" != 0 ]; then - # file exists but the entry does not, let's add it - echo "linux addons/amxmodx/dlls/amxmodx_mm_i386.so" >> "${modinstalldir}/addons/metamod/plugins.ini" - exitcode=$? - if [ "${exitcode}" != 0 ]; then - fn_script_log_fatal "${logentry}" - fn_print_fail_eol_nl - else - fn_script_log_pass ${logentry} - fn_print_ok_eol_nl - fi - fi - else - # create new file and add the mod to it - echo "linux addons/amxmodx/dlls/amxmodx_mm_i386.so" > "${modinstalldir}/addons/metamod/plugins.ini" - exitcode=$? - if [ "${exitcode}" != 0 ]; then - fn_script_log_fatal "${logentry}" - fn_print_fail_eol_nl - core_exit.sh - else - fn_script_log_pass ${logentry} - fn_print_ok_eol_nl - fi - fi -} - -fn_mod_remove_amxmodx_file() { - if [ -f "${modinstalldir}/addons/metamod/plugins.ini" ]; then - # since it does exist, is the entry already in plugins.ini - logentry="line (linux addons/amxmodx/dlls/amxmodx_mm_i386.so) removed from ${modinstalldir}/addons/metamod/plugins.ini" - echo -en "removing amxmodx_mm_i386.so in plugins.ini..." - grep -q "linux addons/amxmodx/dlls/amxmodx_mm_i386.so" "${modinstalldir}/addons/metamod/plugins.ini" - # iIs it found? If so remove it and clean up - exitcode=$? - if [ "${exitcode}" == 0 ]; then - # delete the line we inserted - sed -i '/linux addons\/amxmodx\/dlls\/amxmodx_mm_i386.so/d' "${modinstalldir}/addons/metamod/plugins.ini" - # remove empty lines - sed -i '/^$/d' "${modinstalldir}/addons/metamod/plugins.ini" - exitcode=$? - if [ "${exitcode}" != 0 ]; then - fn_script_log_fatal "${logentry}" - fn_print_fail_eol_nl - else - fn_script_log_pass ${logentry} - fn_print_ok_eol_nl - fi - - # if file is empty, remove it. - if [ -f "${modinstalldir}/addons/metamod/plugins.ini" ]; then - rm -f "${modinstalldir}/addons/metamod/plugins.ini" - fn_script_log_pass "file removed ${modinstalldir}/addons/metamod/plugins.ini because it was empty" - fi - fi - fi -} - -## Database initialisation. - -mods_list.sh -fn_mods_available diff --git a/lgsm/functions/mods_list.sh b/lgsm/functions/mods_list.sh deleted file mode 100644 index a83b7e3032..0000000000 --- a/lgsm/functions/mods_list.sh +++ /dev/null @@ -1,209 +0,0 @@ -#!/bin/bash -# LinuxGSM mods_list.sh module -# Author: Daniel Gibbs -# Contributors: http://linuxgsm.com/contrib -# Website: https://linuxgsm.com -# Description: Lists and defines available mods for LinuxGSM supported servers; works along with mods_core.sh. -# Usage: To add a mod, you need to add an array variable following the guide to set proper values; -# Usage: Then add this array to the mods_global_array. -# Usage: If needed, you can scrape the download URL first. - -functionselfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")" - -# Get a proper URL for mods that don't provide a good one (optional) -fn_script_log_info "Retrieving latest mods URLs" - -# Metamod (Half-life 1 Classic Engine) -metamodversion="1.21.1-am" -metamodlatestfile="metamod-${metamodversion}.zip" -metamoddownloadurl="https://www.amxmodx.org/release/${metamodlatestfile}" -metamodurl="${metamoddownloadurl}" -# AMX Mod X: Base -amxxbaseversion="1.8.2" -amxxbasemod="base" -amxxbaselatestfile="amxmodx-${amxxbaseversion}-${amxxbasemod}-linux.tar.gz" -amxxbasedownloadurl="https://www.amxmodx.org/release/${amxxbaselatestfile}" -amxxbaseurl="${amxxbasedownloadurl}" -# AMX Mod X: Counter-Strike -amxxcsversion="1.8.2" -amxxcsmod="cstrike" -amxxcslatestfile="amxmodx-${amxxbaseversion}-${amxxcsmod}-linux.tar.gz" -amxxcsdownloadurl="https://www.amxmodx.org/release/${amxxcslatestfile}" -amxxcsurl="${amxxcsdownloadurl}" -# AMX Mod X: Day of Defeat -amxxdodversion="1.8.2" -amxxdodmod="dod" -amxxdodlatestfile="amxmodx-${amxxdodversion}-${amxxdodmod}-linux.tar.gz" -amxxdoddownloadurl="https://www.amxmodx.org/release/${amxxdodlatestfile}" -amxxdodurl="${amxxdoddownloadurl}" -# AMX Mod X: Team Fortress Classic -amxxtfcversion="1.8.2" -amxxtfcmod="tfc" -amxxtfclatestfile="amxmodx-${amxxtfcversion}-${amxxtfcmod}-linux.tar.gz" -amxxtfcdownloadurl="https://www.amxmodx.org/release/${amxxtfclatestfile}" -amxxtfcurl="${amxxtfcdownloadurl}" -# AMX Mod X: Natural Selection -amxxnsversion="1.8.2" -amxxnsmod="ns" -amxxnslatestfile="amxmodx-${amxxnsversion}-${amxxnsmod}-linux.tar.gz" -amxxnsdownloadurl="https://www.amxmodx.org/release/${amxxnslatestfile}" -amxxnsurl="${amxxnsdownloadurl}" -# AMX Mod X: The Specialists -amxxtsversion="1.8.2" -amxxtsmod="ts" -amxxtslatestfile="amxmodx-${amxxtsversion}-${amxxtsmod}-linux.tar.gz" -amxxtsdownloadurl="https://www.amxmodx.org/release/${amxxtslatestfile}" -amxxtsurl="${amxxtsdownloadurl}" -# Metamod:Source -metamodsourceversion="1.11" -metamodsourcescrapeurl="https://mms.alliedmods.net/mmsdrop/${metamodsourceversion}/mmsource-latest-linux" -metamodsourcelatestfile=$(wget "${metamodsourcescrapeurl}" -q -O -) -metamodsourcedownloadurl="https://www.metamodsource.net/latest.php?os=linux&version=${metamodsourceversion}" -metamodsourceurl="${metamodsourcedownloadurl}" -# Sourcemod -sourcemodversion="1.11" -sourcemodscrapeurl="https://sm.alliedmods.net/smdrop/${sourcemodversion}/sourcemod-latest-linux" -sourcemodlatestfile=$(wget "${sourcemodscrapeurl}" -q -O -) -sourcemoddownloadurl="https://www.sourcemod.net/latest.php?os=linux&version=${sourcemodversion}" -sourcemodurl="${sourcemoddownloadurl}" -# Steamworks -steamworksscrapeurl="https://users.alliedmods.net/~kyles/builds/SteamWorks" -steamworkslatestfile=$(curl --connect-timeout 10 -sL ${steamworksscrapeurl} | grep -m 1 linux | cut -d '"' -f 4) -steamworksdownloadurl="${steamworksscrapeurl}/${steamworkslatestfile}" -steamworksurl="${steamworksdownloadurl}" -# CS:GO Mods -get5lastbuild=$(curl --connect-timeout 10 -sL https://api.github.com/repos/splewis/get5/releases/latest | jq '.assets[] |select(.browser_download_url | endswith(".tar.gz"))') -get5latestfile=$(echo -e "${get5lastbuild}" | jq -r '.name') -get5latestfilelink=$(echo -e "${get5lastbuild}" | jq -r '.browser_download_url') -csgopracticelatest=$(curl --connect-timeout 10 -sL https://api.github.com/repos/splewis/csgo-practice-mode/releases/latest | jq '.assets[]') -csgopracticelatestfile=$(echo -e "${csgopracticelatest}" | jq -r '.name') -csgopracticelatestlink=$(echo -e "${csgopracticelatest}" | jq -r '.browser_download_url') -csgopuglatest=$(curl --connect-timeout 10 -sL https://api.github.com/repos/splewis/csgo-pug-setup/releases/latest | jq '.assets[]') -csgopuglatestfile=$(echo -e "${csgopuglatest}" | jq -r '.name') -csgopuglatestlink=$(echo -e "${csgopuglatest}" | jq -r '.browser_download_url') -gokzlatestversion=$(curl --connect-timeout 10 -s https://api.github.com/repos/KZGlobalTeam/gokz/releases/latest | grep "tag_name" | cut -d : -f 2,3 | sed -E 's/.*"([^"]+)".*/\1/') -gokzlatestfile="GOKZ-v${gokzlatestversion}.zip" -gokzlatestlink="https://github.com/KZGlobalTeam/gokz/releases/download/${gokzlatestversion}/${gokzlatestfile}" -movementapilatestversion=$(curl --connect-timeout 10 -s https://api.github.com/repos/danzayau/MovementAPI/releases/latest | grep "tag_name" | cut -d : -f 2,3 | sed -E 's/.*"([^"]+)".*/\1/') -movementapilatestfile="MovementAPI-v${movementapilatestversion}.zip" -movementapilatestlink="https://github.com/danzayau/MovementAPI/releases/download/${movementapilatestversion}/${movementapilatestfile}" - -# Rust -carbonrustapilatestfile="Carbon.Linux.Release.tar.gz" -carbonrustlatestlink=$(curl --connect-timeout 10 -sL https://api.github.com/repos/CarbonCommunity/Carbon.Core/releases/tags/production_build | jq -r '.assets[]|select(.name == "Carbon.Linux.Release.tar.gz") | .browser_download_url') - -# Oxide -oxiderustlatestlink=$(curl --connect-timeout 10 -sL https://api.github.com/repos/OxideMod/Oxide.Rust/releases/latest | jq -r '.assets[]|select(.browser_download_url | contains("linux")) | .browser_download_url') -oxidehurtworldlatestlink=$(curl --connect-timeout 10 -sL https://api.github.com/repos/OxideMod/Oxide.Hurtworld/releases/latest | jq -r '.assets[].browser_download_url') -oxidesdtdlatestlink=$(curl --connect-timeout 10 -sL https://api.github.com/repos/OxideMod/Oxide.SevenDaysToDie/releases/latest | jq -r '.assets[]|select(.browser_download_url | contains("linux")) | .browser_download_url') -# Valheim Plus -valeimpluslatestlink=$(curl --connect-timeout 10 -sL https://api.github.com/repos/valheimPlus/ValheimPlus/releases/latest | jq -r '.assets[]|select(.browser_download_url | contains("UnixServer.tar.gz")) | .browser_download_url') -# Valheim BepInEx -bepinexvhlatestlink=$(curl --connect-timeout 10 -sL "https://valheim.thunderstore.io/api/experimental/package/denikson/BepInExPack_Valheim/" -H "accept: application/json" | jq -r '.latest.download_url') - -# Define mods information (required) - -# Separator name -modseparator="MOD" - -# REQUIRED: mod_info_name=( MOD "modcommand" "Pretty Name" "URL" "filename" "modsubdirs" "LowercaseOn/Off" "/files/to/keep;" "/install/path" "ENGINES" "GAMES" "NOTGAMES" "AUTHOR_URL" "Short Description" ) -# Example 1) Well made mod: mod_info_name=( MOD "awesomemod" "This is an Awesome Mod" "https://awesomemod.com/latest.zip" "awesomemod.zip" "0" "LowercaseOff" "OVERWRITE" "${systemdir}/addons" "source;unity3d;" "GAMES" "NOTGAMES" "https://awesomemod.com/" "This mod knows that 42 is the answer" ) -# Example 2) Poorly made mod: mod_info_name=( MOD "stupidmod" "This is a stupid mod" "${crappymodurl}" "StupidMod.zip" "2" "LowercaseOn" "cfg;data/crappymod;" "${systemdir}" "source;" "GAMES" "Garry's mod;Counter-Strike: Source;" "This mod is dumber than dumb" ) -# None of those values can be empty -# index | Usage -# [0] | MOD: separator, all mods must begin with it -# [1] | "modcommand": the LGSM name and command to install the mod (must be unique and lowercase) -# [2] | "Pretty Name": the common name people use to call the mod that will be displayed to the user -# [3] | "URL": link to the mod archive file; can be a variable previously defined while scraping a URL -# [4] | "filename": the output filename -# [5] | "modsubdirs": in how many subdirectories is the mod (none is 0) (not used at release, but could be in the future) -# [6] | "LowercaseOn/Off": LowercaseOff or LowercaseOn: enable/disable converting extracted files and directories to lowercase (some games require it) -# [7] | "modinstalldir": the directory in which to install the mode (use LGSM dir variables such as ${systemdir}) -# [8] | "/files/to/keep;", files & directories that should not be overwritten upon update, separated and ended with a semicolon; you can also use "OVERWRITE" value to ignore the value or "NOUPDATE" to disallow updating; for files to keep upon uninstall, see fn_mod_tidy_files_list from mods_core.sh -# [9] | "Supported Engines;": list them according to LGSM ${engine} variables, separated and ended with a semicolon, or use ENGINES to ignore the value -# [10] | "Supported Games;": list them according to LGSM ${gamename} variables, separated and ended with a semicolon, or use GAMES to ignore the value -# [11] | "Unsupported Games;": list them according to LGSM ${gamename} variables, separated and ended with a semicolon, or use NOTGAMES to ignore the value (useful to exclude a game when using Supported Engines) -# [12] | "AUTHOR_URL" is the author's website, displayed to the user when chosing mods to install -# [13] | "Short Description" a description showed to the user upon installation/removal - -# Half-life 1 Engine Mods -mod_info_metamod=(MOD "metamod" "Metamod" "${metamodurl}" "${metamodlatestfile}" "0" "LowercaseOff" "${systemdir}" "addons/metamod/plugins.ini;" "ENGINES" "Counter-Strike 1.6;Day of Defeat;Team Fortress Classic;Natural Selection;The Specialists;Half-Life: Deathmatch;" "NOTGAMES" "https://github.com/alliedmodders/metamod-hl1" "Plugins Framework") -mod_info_base_amxx=(MOD "amxmodx" "AMX Mod X: Base" "${amxxbaseurl}" "${amxxbaselatestfile}" "0" "LowercaseOff" "${systemdir}" "addons/amxmodx/configs;" "ENGINES" "Counter-Strike 1.6;Day of Defeat;Team Fortress Classic;Natural Selection;The Specialists;Half-Life: Deathmatch;" "NOTGAMES" "https://www.amxmodx.org" "Admin Features (requires Metamod)") - -# CS 1.6 (HL1) Engine Mods -mod_info_cs_amxx=(MOD "amxmodxcs" "AMX Mod X: Counter-Strike" "${amxxcsurl}" "${amxxcslatestfile}" "0" "LowercaseOff" "${systemdir}" "addons/amxmodx/configs;" "ENGINES" "Counter-Strike 1.6;" "NOTGAMES" "https://www.amxmodx.org" "Admin Features (requires Metamod & AMX Mod X: Base)") - -# DOD (HL1) Engine Mods -mod_info_dod_amxx=(MOD "amxmodxdod" "AMX Mod X: Day of Defeat" "${amxxdodurl}" "${amxxdodlatestfile}" "0" "LowercaseOff" "${systemdir}" "addons/amxmodx/configs;" "ENGINES" "Day of Defeat;" "NOTGAMES" "https://www.amxmodx.org" "Admin Features (requires Metamod & AMX Mod X: Base)") - -# TFC (HL1) Engine Mods -mod_info_tfc_amxx=(MOD "amxmodxtfc" "AMX Mod X: Team Fortress Classic" "${amxxtfcurl}" "${amxxtfclatestfile}" "0" "LowercaseOff" "${systemdir}" "addons/amxmodx/configs;" "ENGINES" "Team Fortress Classic;" "NOTGAMES" "https://www.amxmodx.org" "Admin Features (requires Metamod & AMX Mod X: Base)") - -# NS (Natural Selection) (HL1) Engine Mods -mod_info_ns_amxx=(MOD "amxmodxns" "AMX Mod X: Natural Selection" "${amxxnsurl}" "${amxxnslatestfile}" "0" "LowercaseOff" "${systemdir}" "addons/amxmodx/configs;" "ENGINES" "Natural Selection;" "NOTGAMES" "https://www.amxmodx.org" "Admin Features (requires Metamod & AMX Mod X: Base)") - -# TS (The Specialists) (HL1) Engine Mods -mod_info_ts_amxx=(MOD "amxmodxts" "AMX Mod X: The Specialists" "${amxxtsurl}" "${amxxtslatestfile}" "0" "LowercaseOff" "${systemdir}" "addons/amxmodx/configs;" "ENGINES" "The Specialists;" "NOTGAMES" "https://www.amxmodx.org" "Admin Features (requires Metamod & AMX Mod X: Base)") - -# Source mods -mod_info_metamodsource=(MOD "metamodsource" "Metamod: Source" "${metamodsourceurl}" "${metamodsourcelatestfile}" "0" "LowercaseOff" "${systemdir}" "addons/metamod/metaplugins.ini;" "source;" "GAMES" "NOTGAMES" "https://www.sourcemm.net" "Plugins Framework") -mod_info_sourcemod=(MOD "sourcemod" "SourceMod" "${sourcemodurl}" "${sourcemodlatestfile}" "0" "LowercaseOff" "${systemdir}" "cfg;addons/sourcemod/configs;" "source;" "GAMES" "NOTGAMES" "http://www.sourcemod.net" "Admin Features (requires Metamod: Source)") -mod_info_steamworks=(MOD "steamworks" "SteamWorks" "${steamworksurl}" "${steamworkslatestfile}" "0" "LowercaseOff" "${systemdir}" "OVERWRITE" "ENGINES" "Counter-Strike: Global Offensive;" "NOTGAMES" "https://github.com/KyleSanderson/SteamWorks" "Exposing SteamWorks functions to SourcePawn") -mod_info_stripper=(MOD "stripper" "Stripper Source" "http://www.bailopan.net/stripper/snapshots/1.2/stripper-1.2.2-git129-linux.tar.gz" "stripper-1.2.2-git129-linux.tar.gz" "0" "LowercaseOff" "${systemdir}" "addons/stripper/maps;" "ENGINES" "Counter-Strike: Global Offensive;Counter-Strike: Source;Day of Defeat: Source;Half Life: Deathmatch;Half Life 2: Deathmatch;Insurgency;Left 4 Dead;Left 4 Dead 2;Nuclear Dawn;Team Fortress 2;" "NOTGAMES" "http://www.bailopan.net/stripper/" "Add or remove objects from map (requires MetaMod)") - -# CS:GO Mods -mod_info_gokz=(MOD "gokz" "GOKZ" "${gokzlatestlink}" "${gokzlatestfile}" "0" "LowercaseOff" "${systemdir}" "cfg;addons/sourcemod/configs;" "ENGINES" "Counter-Strike: Global Offensive;" "NOTGAMES" "https://github.com/KZGlobalTeam/gokz" "GOKZ ${gokzlatestversion} - Implements the KZ game mode (requires SourceMod and MetaMod)") -mod_info_ttt=(MOD "ttt" "Trouble in Terrorist Town" "https://csgottt.com/downloads/ttt-latest-dev-${sourcemodversion}.zip" "ttt-latest.zip" "0" "LowercaseOff" "${systemdir}" "cfg;addons/sourcemod/configs;" "ENGINES" "Counter-Strike: Global Offensive;" "NOTGAMES" "https://github.com/Bara/TroubleinTerroristTown" "Implements the TTT game mode (requires SourceMod and MetaMod)") -mod_info_get5=(MOD "get5" "Get 5" "${get5latestfilelink}" "${get5latestfile}" "0" "LowercaseOff" "${systemdir}" "cfg;addons/sourcemod/configs;" "ENGINES" "Counter-Strike: Global Offensive;" "NOTGAMES" "https://github.com/splewis/get5" "Plugin for competitive matches/scrims (requires SourceMod and MetaMod)") -mod_info_prac=(MOD "prac" "csgo practice mode" "${csgopracticelatestlink}" "${csgopracticelatestfile}" "0" "LowercaseOff" "${systemdir}" "cfg;addons/sourcemod/configs;" "ENGINES" "Counter-Strike: Global Offensive;" "NOTGAMES" "https://github.com/splewis/csgo-practice-mode" "Practice Mode is a sourcemod plugin for helping players/teams run practices.") -mod_info_pug=(MOD "pug" "PUG" "${csgopuglatestlink}" "${csgopuglatestfile}" "0" "LowercaseOff" "${systemdir}" "cfg;addons/sourcemod/configs;" "ENGINES" "Counter-Strike: Global Offensive;" "NOTGAMES" "https://github.com/splewis/csgo-pug-setup" "plugin for setting up private pug/10man games") -mod_info_dhook=(MOD "dhook" "dhook" "https://forums.alliedmods.net/attachment.php?attachmentid=190123&d=1625050030" "dhooks-2.2.0d17.zip" "0" "LowercaseOff" "${systemdir}" "cfg;addons/sourcemod/configs;" "ENGINES" "Counter-Strike: Global Offensive;" "NOTGAMES" "https://forums.alliedmods.net/showpost.php?p=2588686&postcount=589" "DHooks 2.2.0 - Required for GOKZ") -mod_info_movement=(MOD "movementapi" "movementapi" "${movementapilatestlink}" "${movementapilatestfile}" "0" "LowercaseOff" "${systemdir}" "cfg;addons/sourcemod/configs;" "ENGINES" "Counter-Strike: Global Offensive;" "NOTGAMES" "https://github.com/danzayau/MovementAPI" "Movement API ${movementapilatestversion} - Required for GOKZ") -mod_info_cleaner=(MOD "cleaner" "cleaner" "https://github.com/e54385991/console-cleaner/archive/refs/heads/master.zip" "console-cleaner.zip" "0" "LowercaseOff" "${systemdir}" "cfg;addons/sourcemod/configs;" "ENGINES" "Counter-Strike: Global Offensive;" "NOTGAMES" "https://github.com/e54385991/console-cleaner" "Console Cleaner - Optional for GOKZ") - -# Garry's Mod Addons -mod_info_ulib=(MOD "ulib" "ULib" "https://codeload.github.com/TeamUlysses/ulib/zip/master" "ulib-master.zip" "0" "LowercaseOff" "${systemdir}/addons" "OVERWRITE" "ENGINES" "Garry's Mod;" "NOTGAMES" "http://ulyssesmod.net" "Complete Framework") -mod_info_ulx=(MOD "ulx" "ULX" "https://codeload.github.com/TeamUlysses/ulx/zip/master" "ulx-master.zip" "0" "LowercaseOff" "${systemdir}/addons" "OVERWRITE" "ENGINES" "Garry's Mod;" "NOTGAMES" "http://ulyssesmod.net" "Admin Panel (requires ULib)") -mod_info_utime=(MOD "utime" "UTime" "https://github.com/TeamUlysses/utime/archive/master.zip" "utime-master.zip" "0" "LowercaseOff" "${systemdir}/addons" "OVERWRITE" "ENGINES" "Garry's Mod;" "NOTGAMES" "http://ulyssesmod.net" "Keep track of players play time") -mod_info_uclip=(MOD "uclip" "UClip" "https://github.com/TeamUlysses/uclip/archive/master.zip" "uclip-master.zip" "0" "LowercaseOff" "${systemdir}/addons" "OVERWRITE" "ENGINES" "Garry's Mod;" "NOTGAMES" "http://ulyssesmod.net" "An alternative to noclip") -mod_info_acf=(MOD "acf" "Armoured Combat Framework" "https://github.com/nrlulz/ACF/archive/master.zip" "acf-master.zip" "0" "LowercaseOn" "${systemdir}/addons" "acf-master/lua/acf/shared/guns;" "ENGINES" "Garry's Mod;" "NOTGAMES" "https://github.com/nrlulz/ACF" "Realistic Wepons & Engines") -mod_info_acf_missiles=(MOD "acfmissiles" "ACF Missiles" "https://github.com/Bubbus/ACF-Missiles/archive/master.zip" "acf-missiles-master.zip" "0" "LowercaseOn" "${systemdir}/addons" "OVERWRITE" "ENGINES" "Garry's Mod;" "NOTGAMES" "https://github.com/Bubbus/ACF-Missiles" "More missiles for ACF") -mod_info_advdupe2=(MOD "advdupe2" "Advanced Duplicator 2" "https://github.com/wiremod/advdupe2/archive/master.zip" "advdupe2-master.zip" "0" "LowercaseOn" "${systemdir}/addons" "OVERWRITE" "ENGINES" "Garry's Mod;" "NOTGAMES" "http://www.wiremod.com" "Save your constructions. Second version") -mod_info_pac3=(MOD "pac3" "PAC3" "https://github.com/CapsAdmin/pac3/archive/master.zip" "pac3-master.zip" "0" "LowercaseOff" "${systemdir}/addons" "OVERWRITE" "ENGINES" "Garry's Mod;" "NOTGAMES" "https://github.com/CapsAdmin/pac3" "Advanced player model customization") -mod_info_wiremod=(MOD "wiremod" "Wiremod" "https://github.com/wiremod/wire/archive/master.zip" "wire-master.zip" "0" "LowercaseOff" "${systemdir}/addons" "OVERWRITE" "ENGINES" "Garry's Mod;" "NOTGAMES" "https://github.com/wiremod/wire" "Base Wiremod Addon") -mod_info_wiremodextras=(MOD "wiremod-extras" "Wiremod Extras" "https://github.com/wiremod/wire-extras/archive/master.zip" "wire-extras-master.zip" "0" "LowercaseOff" "${systemdir}/addons" "OVERWRITE" "ENGINES" "Garry's Mod;" "NOTGAMES" "https://github.com/wiremod/wire-extras/" "Addition to Wiremod, Extra Content") -mod_info_advduplicator=(MOD "advdupe1" "Advanced Duplicator 1" "https://github.com/wiremod/advduplicator/archive/master.zip" "advduplicator-master.zip" "0" "LowercaseOn" "${systemdir}/addons" "OVERWRITE" "ENGINES" "Garry's Mod;" "NOTGAMES" "https://github.com/wiremod/advduplicator" "Save your constructions. First version") -mod_info_trackassemblytool=(MOD "trackassemblytool" "Track Assembly Tool" "https://github.com/dvdvideo1234/trackassemblytool/archive/master.zip" "trackassemblytool-master.zip" "0" "LowercaseOn" "${systemdir}/addons" "OVERWRITE" "ENGINES" "Garry's Mod;" "NOTGAMES" "https://github.com/dvdvideo1234/TrackAssemblyTool" "Assembles segmented track. Supports wire") -mod_info_physpropertiesadv=(MOD "physpropertiesadv" "Phys Properties Adv" "https://github.com/dvdvideo1234/physpropertiesadv/archive/master.zip" "physpropertiesadv-master.zip" "0" "LowercaseOn" "${systemdir}/addons" "OVERWRITE" "ENGINES" "Garry's Mod;" "NOTGAMES" "https://github.com/dvdvideo1234/PhysPropertiesAdv" "Advanced configurable properties") -mod_info_controlsystemse2=(MOD "controlsystemse2" "Control Systems E2" "https://github.com/dvdvideo1234/controlsystemse2/archive/master.zip" "controlsystemse2-master.zip" "0" "LowercaseOn" "${systemdir}/addons" "OVERWRITE" "ENGINES" "Garry's Mod;" "NOTGAMES" "https://github.com/dvdvideo1234/ControlSystemsE2" "PID controllers and fast traces for E2. Minor included in wire-extas") -mod_info_e2pistontiming=(MOD "e2pistontiming" "E2 Piston Timing" "https://github.com/dvdvideo1234/e2pistontiming/archive/master.zip" "e2pistontiming-master.zip" "0" "LowercaseOn" "${systemdir}/addons" "OVERWRITE" "ENGINES" "Garry's Mod;" "NOTGAMES" "https://github.com/dvdvideo1234/E2PistonTiming" "Routine driven piston engine timings for E2") -mod_info_propcannontool=(MOD "propcannontool" "Prop Cannon Tool" "https://github.com/dvdvideo1234/propcannontool/archive/master.zip" "propcannontool-master.zip" "0" "LowercaseOn" "${systemdir}/addons" "OVERWRITE" "ENGINES" "Garry's Mod;" "NOTGAMES" "https://github.com/dvdvideo1234/PropCannonTool" "Cannon entity that can fire props. Supports wire") -mod_info_gearassemblytool=(MOD "gearassemblytool" "Gear Assembly Tool" "https://github.com/dvdvideo1234/gearassemblytool/archive/master.zip" "gearassemblytool-master.zip" "0" "LowercaseOn" "${systemdir}/addons" "OVERWRITE" "ENGINES" "Garry's Mod;" "NOTGAMES" "https://github.com/dvdvideo1234/GearAssemblyTool" "Assembles segmented gearbox") -mod_info_spinnertool=(MOD "spinnertool" "Spinner Tool" "https://github.com/dvdvideo1234/spinnertool/archive/master.zip" "spinnertool-master.zip" "0" "LowercaseOn" "${systemdir}/addons" "OVERWRITE" "ENGINES" "Garry's Mod;" "NOTGAMES" "https://github.com/dvdvideo1234/SpinnerTool" "Torque lever controlled spinner. Supports wire") -mod_info_surfacefrictiontool=(MOD "surfacefrictiontool" "Surface Friction Tool" "https://github.com/dvdvideo1234/surfacefrictiontool/archive/master.zip" "surfacefrictiontool-master.zip" "0" "LowercaseOn" "${systemdir}/addons" "OVERWRITE" "ENGINES" "Garry's Mod;" "NOTGAMES" "https://github.com/dvdvideo1234/SurfaceFrictionTool" "Controls the surface friction of a prop") -mod_info_magneticdipole=(MOD "magneticdipole" "Magnetic Dipole" "https://github.com/dvdvideo1234/magneticdipole/archive/master.zip" "magneticdipole-master.zip" "0" "LowercaseOn" "${systemdir}/addons" "OVERWRITE" "ENGINES" "Garry's Mod;" "NOTGAMES" "https://github.com/dvdvideo1234/MagneticDipole" "Magnet entity that runs forces on its poles. Supports wire") -mod_info_environmentorganizer=(MOD "environmentorganizer" "Environment Organizer" "https://github.com/dvdvideo1234/environmentorganizer/archive/master.zip" "environmentorganizer-master.zip" "0" "LowercaseOn" "${systemdir}/addons" "OVERWRITE" "ENGINES" "Garry's Mod;" "NOTGAMES" "https://github.com/dvdvideo1234/EnvironmentOrganizer" "Installs routines designed for server settings adjustment") -mod_info_precision_alignment=(MOD "precision-alignment" "Precision Alignment" "https://github.com/Mista-Tea/precision-alignment/archive/master.zip" "precision-alignment-master.zip" "0" "LowercaseOn" "${systemdir}/addons" "OVERWRITE" "ENGINES" "Garry's Mod;" "NOTGAMES" "https://github.com/Mista-Tea/precision-alignment" "Creates precise constraints and aligments") -mod_info_improved_stacker=(MOD "improved-stacker" "Improved Stacker" "https://github.com/Mista-Tea/improved-stacker/archive/master.zip" "improved-stacker-master.zip" "0" "LowercaseOn" "${systemdir}/addons" "OVERWRITE" "ENGINES" "Garry's Mod;" "NOTGAMES" "https://github.com/Mista-Tea/improved-stacker" "Stacks entities in the direction chosen") -mod_info_improved_weight=(MOD "improved-weight" "Improved Weight" "https://github.com/Mista-Tea/improved-weight/archive/master.zip" "improved-weight-master.zip" "0" "LowercaseOn" "${systemdir}/addons" "OVERWRITE" "ENGINES" "Garry's Mod;" "NOTGAMES" "https://github.com/Mista-Tea/improved-weight" "Weight tool but with more features") -mod_info_improved_antinoclip=(MOD "improved-antinoclip" "Improved Antinoclip" "https://github.com/Mista-Tea/improved-antinoclip/archive/master.zip" "improved-antinoclip-master.zip" "0" "LowercaseOn" "${systemdir}/addons" "OVERWRITE" "ENGINES" "Garry's Mod;" "NOTGAMES" "https://github.com/Mista-Tea/improved-antinoclip" "Controls clipping trough an object") -mod_info_darkrp=(MOD "darkrp" "DarkRP" "https://github.com/FPtje/DarkRP/archive/master.zip" "darkrp-master.zip" "0" "LowercaseOn" "${systemdir}/gamemodes" "OVERWRITE" "ENGINES" "Garry's Mod;" "NOTGAMES" "http://darkrp.com" "Most popular gamemode") -mod_info_darkrpmodification=(MOD "darkrpmodification" "DarkRP Modification" "https://github.com/FPtje/darkrpmodification/archive/master.zip" "darkrpmodification-master.zip" "0" "LowercaseOff" "${systemdir}/addons" "NOUPDATE" "ENGINES" "Garry's Mod;" "NOTGAMES" "http://darkrp.com" "Customize DarkRP settings") -mod_info_laserstool=(MOD "laserstool" "Laser STool" "https://github.com/dvdvideo1234/laserstool/archive/main.zip" "laserstool-main.zip" "0" "LowercaseOn" "${systemdir}/addons" "OVERWRITE" "ENGINES" "Garry's Mod;" "NOTGAMES" "https://github.com/dvdvideo1234/LaserSTool" "Scripted tool that spawns laser entities, simulates light rays and even kill players") - -# Rust -mod_info_rustcarbon=(MOD "rustcarbon" "Carbon for Rust" "${carbonrustlatestlink}" "Carbon.Linux.Release.tar.gz" "0" "LowercaseOff" "${systemdir}" "OVERWRITE" "ENGINES" "Rust;" "NOTGAMES" "carbonmod.gg" "Allows for the use of both plugins and harmony mods") - -# Oxidemod -mod_info_rustoxide=(MOD "rustoxide" "Oxide for Rust" "${oxiderustlatestlink}" "Oxide.Rust-linux.zip" "0" "LowercaseOff" "${systemdir}" "OVERWRITE" "ENGINES" "Rust;" "NOTGAMES" "https://umod.org/games/rust" "Allows for the use of plugins") -mod_info_hwoxide=(MOD "hwoxide" "Oxide for Hurtworld" "${oxidehurtworldlatestlink}" "Oxide.Hurtworld.zip" "0" "LowercaseOff" "${systemdir}" "OVERWRITE" "ENGINES" "Hurtworld;" "NOTGAMES" "https://umod.org/games/hurtworld" "Allows for the use of plugins") -mod_info_sdtdoxide=(MOD "sdtdoxide" "Oxide for 7 Days To Die" "${oxidesdtdlatestlink}" "Oxide.SevenDaysToDie.zip" "0" "LowercaseOff" "${systemdir}" "OVERWRITE" "ENGINES" "7 Days To Die;" "NOTGAMES" "https://umod.org/games/7-days-to-die" "Allows for the use of plugins") - -# ValheimPlus -mod_info_valheimplus=(MOD "valheimplus" "Valheim PLUS" "${valeimpluslatestlink}" "ValheimPlus.tar.gz" "0" "LowercaseOff" "${systemdir}" "OVERWRITE" "ENGINES" "Valheim;" "NOTGAMES" "https://github.com/valheimPlus/ValheimPlus" "Mod to improve Valheim gameplay") - -# BepInEx Valheim -mod_info_bepinexvh=(MOD "bepinexvh" "BepInEx Valheim" "${bepinexvhlatestlink}" "denikson-BepInExPack_Valheim.zip" "0" "LowercaseOff" "${systemdir}" "OVERWRITE" "ENGINES" "Valheim;" "NOTGAMES" "https://valheim.thunderstore.io/package/denikson/BepInExPack_Valheim/" "Unity / XNA game patcher and plugin framework") - -# REQUIRED: Set all mods info into the global array -mods_global_array=("${mod_info_metamod[@]}" "${mod_info_base_amxx[@]}" "${mod_info_cs_amxx[@]}" "${mod_info_dod_amxx[@]}" "${mod_info_tfc_amxx[@]}" "${mod_info_ns_amxx[@]}" "${mod_info_ts_amxx[@]}" "${mod_info_metamodsource[@]}" "${mod_info_sourcemod[@]}" "${mod_info_steamworks[@]}" "${mod_info_gokz[@]}" "${mod_info_ttt[@]}" "${mod_info_get5[@]}" "${mod_info_prac[@]}" "${mod_info_pug[@]}" "${mod_info_dhook[@]}" "${mod_info_movement[@]}" "${mod_info_cleaner[@]}" "${mod_info_ulib[@]}" "${mod_info_ulx[@]}" "${mod_info_utime[@]}" "${mod_info_uclip[@]}" "${mod_info_acf[@]}" "${mod_info_acf_missiles[@]}" "${mod_info_acf_sweps[@]}" "${mod_info_advdupe2[@]}" "${mod_info_pac3[@]}" "${mod_info_wiremod[@]}" "${mod_info_wiremodextras[@]}" "${mod_info_darkrp[@]}" "${mod_info_darkrpmodification[@]}" "${mod_info_rustcarbon[@]}" "${mod_info_rustoxide[@]}" "${mod_info_hwoxide[@]}" "${mod_info_sdtdoxide[@]}" "${mod_info_advduplicator[@]}" "${mod_info_trackassemblytool[@]}" "${mod_info_physpropertiesadv[@]}" "${mod_info_controlsystemse2[@]}" "${mod_info_e2pistontiming[@]}" "${mod_info_propcannontool[@]}" "${mod_info_gearassemblytool[@]}" "${mod_info_spinnertool[@]}" "${mod_info_surfacefrictiontool[@]}" "${mod_info_magneticdipole[@]}" "${mod_info_environmentorganizer[@]}" "${mod_info_precision_alignment[@]}" "${mod_info_improved_stacker[@]}" "${mod_info_improved_weight[@]}" "${mod_info_improved_antinoclip[@]}" "${mod_info_laserstool[@]}" "${mod_info_valheimplus[@]}" "${mod_info_bepinexvh[@]}") diff --git a/lgsm/functions/query_gamedig.sh b/lgsm/functions/query_gamedig.sh deleted file mode 100644 index 344874011b..0000000000 --- a/lgsm/functions/query_gamedig.sh +++ /dev/null @@ -1,93 +0,0 @@ -#!/bin/bash -# LinuxGSM query_gamedig.sh module -# Author: Daniel Gibbs -# Contributors: http://linuxgsm.com/contrib -# Website: https://linuxgsm.com -# Description: Querys a gameserver using node-gamedig. -# https://github.com/gamedig/node-gamedig - -functionselfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")" -querystatus="2" -# Check if gamedig and jq are installed. -if [ "$(command -v gamedig 2> /dev/null)" ] && [ "$(command -v jq 2> /dev/null)" ]; then - - # will bypass query if server offline. - check_status.sh - if [ "${status}" != "0" ]; then - # GameDig requires you use the voice port when querying. - if [ "${querytype}" == "teamspeak3" ]; then - queryport="${port}" - fi - # checks if query is working null = pass. - gamedigcmd=$(echo -e "gamedig --type \"${querytype}\" --host \"${queryip}\" --query_port \"${queryport}\"|jq") - gamedigraw=$(gamedig --type "${querytype}" --host "${queryip}" --query_port "${queryport}") - querystatus=$(echo "${gamedigraw}" | jq '.error|length') - - if [ "${querystatus}" != "null" ]; then - gamedigcmd=$(echo -e "gamedig --type \"${querytype}\" --host \"${queryip}\" --port \"${queryport}\"|jq") - gamedigraw=$(gamedig --type "${querytype}" --host "${queryip}" --port "${queryport}") - querystatus=$(echo "${gamedigraw}" | jq '.error|length') - fi - - if [ "${querytype}" == "teamspeak3" ]; then - fn_info_game_ts3 - fi - - # server name. - gdname=$(echo "${gamedigraw}" | jq -re '.name') - if [ "${gdname}" == "null" ]; then - unset gdname - fi - - # numplayers. - if [ "${querytype}" == "minecraft" ]; then - gdplayers=$(echo "${gamedigraw}" | jq -re '.players | length-1') - elif [ "${querytype}" == "teamspeak3" ]; then - gdplayers=$(echo "${gamedigraw}" | jq -re '.raw.virtualserver_clientsonline') - else - gdplayers=$(echo "${gamedigraw}" | jq -re '.players | length') - fi - if [ "${gdplayers}" == "null" ]; then - unset gdplayers - elif [ "${gdplayers}" == "[]" ] || [ "${gdplayers}" == "-1" ]; then - gdplayers=0 - fi - - # maxplayers. - gdmaxplayers=$(echo "${gamedigraw}" | jq -re '.maxplayers') - if [ "${gdmaxplayers}" == "null" ]; then - unset gdmaxplayers - elif [ "${gdmaxplayers}" == "[]" ]; then - gdmaxplayers=0 - fi - - # current map. - gdmap=$(echo "${gamedigraw}" | jq -re '.map') - if [ "${gdmap}" == "null" ]; then - unset gdmap - fi - - # current gamemode. - gdgamemode=$(echo "${gamedigraw}" | jq -re '.raw.rules.GameMode_s') - if [ "${gdgamemode}" == "null" ]; then - unset gdgamemode - fi - - # numbots. - gdbots=$(echo "${gamedigraw}" | jq -re '.bots | length') - if [ "${gdbots}" == "null" ] || [ "${gdbots}" == "0" ]; then - unset gdbots - fi - - # server version. - if [ "${querytype}" == "teamspeak3" ]; then - gdversion=$(echo "${gamedigraw}" | jq -re '.raw.virtualserver_version') - else - gdversion=$(echo "${gamedigraw}" | jq -re '.raw.version') - fi - - if [ "${gdversion}" == "null" ] || [ "${gdversion}" == "0" ]; then - unset gdversion - fi - fi -fi diff --git a/lgsm/functions/query_gsquery.py b/lgsm/functions/query_gsquery.py deleted file mode 100644 index 62c92082e4..0000000000 --- a/lgsm/functions/query_gsquery.py +++ /dev/null @@ -1,151 +0,0 @@ -#! /usr/bin/env python3 -# -*- coding: utf-8 -*- -# LinuxGSM query_gsquery.py function -# Author: Daniel Gibbs -# Contributors: http://linuxgsm.com/contrib -# Website: https://linuxgsm.com -# Description: Allows querying of various game servers. - -import argparse -import socket -import sys - -engine_types=('protocol-valve','protocol-quake3','protocol-quake3','protocol-gamespy1','protocol-unreal2','ut3','minecraft','minecraftbe','jc2mp','mumbleping','soldat','teeworlds') - -class gsquery: - server_response_timeout = 5 - default_buffer_length = 1024 - sourcequery=('protocol-valve','avalanche3.0','barotrauma','madness','quakelive','realvirtuality','refractor','source','goldsrc','spark','starbound','unity3d','unreal4','wurm') - idtech2query=('protocol-quake3','idtech2','quake','iw2.0') - idtech3query=('protocol-quake3','iw3.0','ioquake3','qfusion') - minecraftquery=('minecraft','lwjgl2') - minecraftbequery=('minecraftbe',) - jc2mpquery=('jc2mp',) - mumblequery=('mumbleping',) - soldatquery=('soldat',) - twquery=('teeworlds',) - unrealquery=('protocol-gamespy1','unreal') - unreal2query=('protocol-unreal2','unreal2') - unreal3query=('ut3','unreal3') - - def __init__(self, arguments): - self.argument = arguments - # - if self.argument.engine in self.sourcequery: - self.query_prompt_string = b'\xFF\xFF\xFF\xFFTSource Engine Query\0' - elif self.argument.engine in self.idtech2query: - self.query_prompt_string = b'\xff\xff\xff\xffstatus\x00' - elif self.argument.engine in self.idtech3query: - self.query_prompt_string = b'\xff\xff\xff\xffgetstatus' - elif self.argument.engine in self.jc2mpquery: - self.query_prompt_string = b'\xFE\xFD\x09\x10\x20\x30\x40' - elif self.argument.engine in self.minecraftquery: - self.query_prompt_string = b'\xFE\xFD\x09\x3d\x54\x1f\x93' - elif self.argument.engine in self.minecraftbequery: - self.query_prompt_string = b'\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\x00\xfe\xfe\xfe\xfe\xfd\xfd\xfd\xfd\x12\x34\x56\x78\x00\x00\x00\x00\x00\x00\x00\x00' - elif self.argument.engine in self.mumblequery: - self.query_prompt_string = b'\x00\x00\x00\x00\x01\x02\x03\x04\x05\x06\x07\x08' - elif self.argument.engine in self.soldatquery: - self.query_prompt_string = b'\x69\x00' - elif self.argument.engine in self.twquery: - self.query_prompt_string = b'\x04\x00\x00\xff\xff\xff\xff\x05' + bytearray(511) - elif self.argument.engine in self.unrealquery: - self.query_prompt_string = b'\x5C\x69\x6E\x66\x6F\x5C' - elif self.argument.engine in self.unreal2query: - self.query_prompt_string = b'\x79\x00\x00\x00\x00' - elif self.argument.engine in self.unreal3query: - self.query_prompt_string = b'\xFE\xFD\x09\x00\x00\x00\x00' - - self.connected = False - self.response = None - - @staticmethod - def fatal_error(error_message, error_code=1): - sys.stderr.write('ERROR: ' + str(error_message) + '\n') - sys.exit(error_code) - - @staticmethod - def exit_success(success_message=''): - sys.stdout.write('OK: ' + str(success_message) + '\n') - sys.exit(0) - - def responding(self): - # Connect. - connection = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) - connection.settimeout(self.server_response_timeout) - try: - self.connected = connection.connect((self.argument.address, int(self.argument.port))) - except socket.timeout: - self.fatal_error('Request timed out', 1) - except Exception: - self.fatal_error('Unable to connect', 1) - # Send. - connection.send(self.query_prompt_string) - # Receive. - try: - self.response = connection.recv(self.default_buffer_length) - except socket.error: - self.fatal_error('Unable to receive', 2) - connection.close() - # Response. - if self.response is None: - self.fatal_error('No response', 3) - if len(self.response) < 5: - sys.exit('Short response.', 3) - else: - self.exit_success(str(self.response)) - -def parse_args(): - parser = argparse.ArgumentParser( - description='Allows querying of various game servers.', - usage='usage: python3 %(prog)s [options]', - add_help=False - ) - parser.add_argument( - '-a', '--address', - type=str, - required=True, - help='The IPv4 address of the server.' - ) - parser.add_argument( - '-p', '--port', - type=int, - required=True, - help='The IPv4 port of the server.' - ) - parser.add_argument( - '-e', '--engine', - metavar='ENGINE', - choices=engine_types, - help='Engine type: ' + ' '.join(engine_types) - ) - parser.add_argument( - '-v', '--verbose', - action='store_true', - help='Display verbose output.' - ) - parser.add_argument( - '-d', '--debug', - action='store_true', - help='Display debugging output.' - ) - parser.add_argument( - '-V', '--version', - action='version', - version='%(prog)s 0.0.1', - help='Display version and exit.' - ) - parser.add_argument( - '-h', '--help', - action='help', - help='Display help and exit.' - ) - return parser.parse_args() - -def main(): - arguments = parse_args() - server = gsquery(arguments) - server.responding() - -if __name__ == '__main__': - main() diff --git a/lgsm/functions/update_factorio.sh b/lgsm/functions/update_factorio.sh deleted file mode 100644 index 852ab9d87e..0000000000 --- a/lgsm/functions/update_factorio.sh +++ /dev/null @@ -1,168 +0,0 @@ -#!/bin/bash -# LinuxGSM update_factorio.sh module -# Author: Daniel Gibbs -# Contributors: http://linuxgsm.com/contrib -# Website: https://linuxgsm.com -# Description: Handles updating of Factorio servers. - -functionselfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")" - -fn_update_dl() { - # Download and extract files to serverfiles. - fn_fetch_file "${remotebuildurl}" "" "" "" "${tmpdir}" "${remotebuildfilename}" "nochmodx" "norun" "force" "nohash" - fn_dl_extract "${tmpdir}" "factorio_headless_${factorioarch}-${remotebuildversion}.tar.xz" "${serverfiles}" "factorio" - fn_clear_tmp -} - -fn_update_localbuild() { - # Gets local build info. - fn_print_dots "Checking local build: ${remotelocation}" - # Uses executable to get local build. - if [ -d "${executabledir}" ]; then - cd "${executabledir}" || exit - localbuild=$(${executable} --version | grep "Version:" | awk '{print $2}') - fi - if [ -z "${localbuild}" ]; then - fn_print_error "Checking local build: ${remotelocation}: missing local build info" - fn_script_log_error "Missing local build info" - fn_script_log_error "Set localbuild to 0" - localbuild="0" - else - fn_print_ok "Checking local build: ${remotelocation}" - fn_script_log_pass "Checking local build" - fi -} - -fn_update_remotebuild() { - # Get remote build info. - apiurl="https://factorio.com/get-download/${branch}/headless/${factorioarch}" - remotebuildresponse=$(curl -s "${apiurl}") - remotebuildversion=$(echo "${remotebuildresponse}" | grep -o '[0-9]\.[0-9]\{1,\}\.[0-9]\{1,\}' | head -1) - remotebuildurl="https://factorio.com/get-download/${branch}/headless/${factorioarch}" - remotebuildfilename="factorio_headless_${factorioarch}-${remotebuildversion}.tar.xz" - - if [ "${firstcommandname}" != "INSTALL" ]; then - fn_print_dots "Checking remote build: ${remotelocation}" - # Checks if remotebuildversion variable has been set. - if [ -z "${remotebuildversion}" ] || [ "${remotebuildversion}" == "null" ]; then - fn_print_fail "Checking remote build: ${remotelocation}" - fn_script_log_fatal "Checking remote build" - core_exit.sh - else - fn_print_ok "Checking remote build: ${remotelocation}" - fn_script_log_pass "Checking remote build" - fi - else - # Checks if remotebuild variable has been set. - if [ -z "${remotebuildversion}" ] || [ "${remotebuildversion}" == "null" ]; then - fn_print_failure "Unable to get remote build" - fn_script_log_fatal "Unable to get remote build" - core_exit.sh - fi - fi -} - -fn_update_compare() { - fn_print_dots "Checking for update: ${remotelocation}" - if [ "${localbuild}" != "${remotebuildversion}" ] || [ "${forceupdate}" == "1" ]; then - fn_print_ok_nl "Checking for update: ${remotelocation}" - echo -en "\n" - echo -e "Update available" - echo -e "* Local build: ${red}${localbuild} ${factorioarch}${default}" - echo -e "* Remote build: ${green}${remotebuildversion} ${factorioarch}${default}" - if [ -n "${branch}" ]; then - echo -e "* Branch: ${branch}" - fi - if [ -f "${rootdir}/.dev-debug" ]; then - echo -e "Remote build info" - echo -e "* apiurl: ${apiurl}" - echo -e "* remotebuildfilename: ${remotebuildfilename}" - echo -e "* remotebuildurl: ${remotebuildurl}" - echo -e "* remotebuildversion: ${remotebuildversion}" - fi - echo -en "\n" - fn_script_log_info "Update available" - fn_script_log_info "Local build: ${localbuild} ${factorioarch}" - fn_script_log_info "Remote build: ${remotebuildversion} ${factorioarch}" - if [ -n "${branch}" ]; then - fn_script_log_info "Branch: ${branch}" - fi - fn_script_log_info "${localbuild} > ${remotebuildversion}" - - if [ "${commandname}" == "UPDATE" ]; then - unset updateonstart - check_status.sh - # If server stopped. - if [ "${status}" == "0" ]; then - fn_update_dl - if [ "${localbuild}" == "0" ]; then - exitbypass=1 - command_start.sh - fn_firstcommand_reset - exitbypass=1 - sleep 5 - command_stop.sh - fn_firstcommand_reset - fi - # If server started. - else - fn_print_restart_warning - exitbypass=1 - command_stop.sh - fn_firstcommand_reset - exitbypass=1 - fn_update_dl - exitbypass=1 - command_start.sh - fn_firstcommand_reset - fi - unset exitbypass - date +%s > "${lockdir}/lastupdate.lock" - alert="update" - elif [ "${commandname}" == "CHECK-UPDATE" ]; then - alert="check-update" - fi - alert.sh - else - fn_print_ok_nl "Checking for update: ${remotelocation}" - echo -en "\n" - echo -e "No update available" - echo -e "* Local build: ${green}${localbuild} ${factorioarch}${default}" - echo -e "* Remote build: ${green}${remotebuildversion} ${factorioarch}${default}" - if [ -n "${branch}" ]; then - echo -e "* Branch: ${branch}" - fi - echo -en "\n" - fn_script_log_info "No update available" - fn_script_log_info "Local build: ${localbuild} ${factorioarch}" - fn_script_log_info "Remote build: ${remotebuildversion} ${factorioarch}" - if [ -n "${branch}" ]; then - fn_script_log_info "Branch: ${branch}" - fi - if [ -f "${rootdir}/.dev-debug" ]; then - echo -e "Remote build info" - echo -e "* apiurl: ${apiurl}" - echo -e "* remotebuildfilename: ${remotebuildfilename}" - echo -e "* remotebuildurl: ${remotebuildurl}" - echo -e "* remotebuildversion: ${remotebuildversion}" - fi - fi -} - -# Game server architecture. -factorioarch="linux64" - -# The location where the builds are checked and downloaded. -remotelocation="factorio.com" - -if [ "${firstcommandname}" == "INSTALL" ]; then - fn_update_remotebuild - fn_update_dl -else - fn_print_dots "Checking for update" - fn_print_dots "Checking for update: ${remotelocation}" - fn_script_log_info "Checking for update: ${remotelocation}" - fn_update_localbuild - fn_update_remotebuild - fn_update_compare -fi diff --git a/lgsm/functions/update_jediknight2.sh b/lgsm/functions/update_jediknight2.sh deleted file mode 100644 index a88b96f61f..0000000000 --- a/lgsm/functions/update_jediknight2.sh +++ /dev/null @@ -1,163 +0,0 @@ -#!/bin/bash -# LinuxGSM update_jk2.sh module -# Author: Daniel Gibbs -# Contributors: http://linuxgsm.com/contrib -# Website: https://linuxgsm.com -# Description: Handles updating of Jedi Knight 2 servers. - -functionselfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")" - -fn_update_dl() { - # Download and extract files to serverfiles. - fn_fetch_file "${remotebuildurl}" "" "" "" "${tmpdir}" "${remotebuildfilename}" "nochmodx" "norun" "force" "nohash" - fn_dl_extract "${tmpdir}" "${remotebuildfilename}" "${serverfiles}/GameData" "linux-amd64" - fn_clear_tmp -} - -fn_update_localbuild() { - # Gets local build info. - fn_print_dots "Checking local build: ${remotelocation}" - # Uses log file to get local build. - localbuild=$(grep "\"version\"" "${consolelogdir}"/* 2> /dev/null | sed 's/.*://' | awk '{print $1}' | head -n 1 | sed 's/v//') - if [ -z "${localbuild}" ]; then - fn_print_error "Checking local build: ${remotelocation}: missing local build info" - fn_script_log_error "Missing local build info" - fn_script_log_error "Set localbuild to 0" - localbuild="0" - else - fn_print_ok "Checking local build: ${remotelocation}" - fn_script_log_pass "Checking local build" - fi -} - -fn_update_remotebuild() { - # Get remote build info. - apiurl="https://api.github.com/repos/mvdevs/jk2mv/releases/latest" - remotebuildresponse=$(curl -s "${apiurl}") - remotebuildfilename=$(echo "${remotebuildresponse}" | jq -r '.assets[]|select(.browser_download_url | contains("dedicated.zip")) | .name') - remotebuildurl=$(echo "${remotebuildresponse}" | jq -r '.assets[]|select(.browser_download_url | contains("dedicated.zip")) | .browser_download_url') - remotebuildversion=$(echo "${remotebuildresponse}" | jq -r '.tag_name') - - if [ "${firstcommandname}" != "INSTALL" ]; then - fn_print_dots "Checking remote build: ${remotelocation}" - # Checks if remotebuildversion variable has been set. - if [ -z "${remotebuildversion}" ] || [ "${remotebuildversion}" == "null" ]; then - fn_print_fail "Checking remote build: ${remotelocation}" - fn_script_log_fatal "Checking remote build" - core_exit.sh - else - fn_print_ok "Checking remote build: ${remotelocation}" - fn_script_log_pass "Checking remote build" - fi - else - # Checks if remotebuild variable has been set. - if [ -z "${remotebuildversion}" ] || [ "${remotebuildversion}" == "null" ]; then - fn_print_failure "Unable to get remote build" - fn_script_log_fatal "Unable to get remote build" - core_exit.sh - fi - fi -} - -fn_update_compare() { - fn_print_dots "Checking for update: ${remotelocation}" - if [ "${localbuild}" != "${remotebuildversion}" ] || [ "${forceupdate}" == "1" ]; then - fn_print_ok_nl "Checking for update: ${remotelocation}" - echo -en "\n" - echo -e "Update available" - echo -e "* Local build: ${red}${localbuild}${default}" - echo -e "* Remote build: ${green}${remotebuildversion}${default}" - if [ -n "${branch}" ]; then - echo -e "* Branch: ${branch}" - fi - if [ -f "${rootdir}/.dev-debug" ]; then - echo -e "Remote build info" - echo -e "* apiurl: ${apiurl}" - echo -e "* remotebuildfilename: ${remotebuildfilename}" - echo -e "* remotebuildurl: ${remotebuildurl}" - echo -e "* remotebuildversion: ${remotebuildversion}" - fi - echo -en "\n" - fn_script_log_info "Update available" - fn_script_log_info "Local build: ${localbuild}" - fn_script_log_info "Remote build: ${remotebuildversion}" - if [ -n "${branch}" ]; then - fn_script_log_info "Branch: ${branch}" - fi - fn_script_log_info "${localbuild} > ${remotebuildversion}" - - if [ "${commandname}" == "UPDATE" ]; then - unset updateonstart - check_status.sh - # If server stopped. - if [ "${status}" == "0" ]; then - fn_update_dl - if [ "${localbuild}" == "0" ]; then - exitbypass=1 - command_start.sh - fn_firstcommand_reset - exitbypass=1 - sleep 5 - command_stop.sh - fn_firstcommand_reset - fi - # If server started. - else - fn_print_restart_warning - exitbypass=1 - command_stop.sh - fn_firstcommand_reset - exitbypass=1 - fn_update_dl - exitbypass=1 - command_start.sh - fn_firstcommand_reset - fi - unset exitbypass - date +%s > "${lockdir}/lastupdate.lock" - alert="update" - elif [ "${commandname}" == "CHECK-UPDATE" ]; then - alert="check-update" - fi - alert.sh - else - fn_print_ok_nl "Checking for update: ${remotelocation}" - echo -en "\n" - echo -e "No update available" - echo -e "* Local build: ${green}${localbuild}${default}" - echo -e "* Remote build: ${green}${remotebuildversion}${default}" - if [ -n "${branch}" ]; then - echo -e "* Branch: ${branch}" - fi - echo -en "\n" - fn_script_log_info "No update available" - fn_script_log_info "Local build: ${localbuild}" - fn_script_log_info "Remote build: ${remotebuildversion}" - if [ -n "${branch}" ]; then - fn_script_log_info "Branch: ${branch}" - fi - if [ -f "${rootdir}/.dev-debug" ]; then - echo -e "Remote build info" - echo -e "* apiurl: ${apiurl}" - echo -e "* remotebuildfilename: ${remotebuildfilename}" - echo -e "* remotebuildurl: ${remotebuildurl}" - echo -e "* remotebuildversion: ${remotebuildversion}" - fi - fi -} - -# The location where the builds are checked and downloaded. -remotelocation="github.com" - -if [ "${firstcommandname}" == "INSTALL" ]; then - fn_update_remotebuild - fn_update_dl -else - update_steamcmd.sh - fn_print_dots "Checking for update" - fn_print_dots "Checking for update: ${remotelocation}" - fn_script_log_info "Checking for update: ${remotelocation}" - fn_update_localbuild - fn_update_remotebuild - fn_update_compare -fi diff --git a/lgsm/functions/update_minecraft.sh b/lgsm/functions/update_minecraft.sh deleted file mode 100644 index dbef26d341..0000000000 --- a/lgsm/functions/update_minecraft.sh +++ /dev/null @@ -1,176 +0,0 @@ -#!/bin/bash -# LinuxGSM update_minecraft.sh module -# Author: Daniel Gibbs -# Contributors: http://linuxgsm.com/contrib -# Website: https://linuxgsm.com -# Description: Handles updating of Minecraft: Java Edition servers. - -functionselfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")" - -fn_update_dl() { - # Download and extract files to serverfiles. - fn_fetch_file "${remotebuildurl}" "" "" "" "${tmpdir}" "${remotebuildfilename}" "chmodx" "norun" "noforce" "nohash" - cp -f "${tmpdir}/${remotebuildfilename}" "${serverfiles}/${executable#./}" -} - -fn_update_localbuild() { - # Gets local build info. - fn_print_dots "Checking local build: ${remotelocation}" - # Uses executable to get local build. - if [ -d "${executabledir}" ]; then - cd "${executabledir}" || exit - localbuild=$(unzip -p "minecraft_server.jar" version.json | jq -r '.id') - fi - if [ -z "${localbuild}" ]; then - fn_print_error "Checking local build: ${remotelocation}: missing local build info" - fn_script_log_error "Missing local build info" - fn_script_log_error "Set localbuild to 0" - localbuild="0" - else - fn_print_ok "Checking local build: ${remotelocation}" - fn_script_log_pass "Checking local build" - fi -} - -fn_update_remotebuild() { - # Get remote build info. - apiurl="https://launchermeta.mojang.com/mc/game/version_manifest.json" - remotebuildresponse=$(curl -s "${apiurl}") - # Latest release. - if [ "${branch}" == "release" ] && [ "${mcversion}" == "latest" ]; then - remotebuildversion=$(echo "${remotebuildresponse}" | jq -r '.latest.release') - # Latest snapshot. - elif [ "${branch}" == "snapshot" ] && [ "${mcversion}" == "latest" ]; then - remotebuildversion=$(echo "${remotebuildresponse}" | jq -r '.latest.snapshot') - # Specific release/snapshot. - else - remotebuildversion=$(echo "${remotebuildresponse}" | jq -r --arg branch "${branch}" --arg mcversion "${mcversion}" '.versions | .[] | select(.type==$branch and .id==$mcversion) | .id') - fi - remotebuildfilename="minecraft_server.${remotebuildversion}.jar" - # Generate link to version manifest json. - remotebuildmanifest=$(echo "${remotebuildresponse}" | jq -r --arg branch "${branch}" --arg mcversion "${remotebuildversion}" '.versions | .[] | select(.type==$branch and .id==$mcversion) | .url') - # Generate link to server.jar - remotebuildurl=$(curl -s "${remotebuildmanifest}" | jq -r '.downloads.server.url') - - if [ "${firstcommandname}" != "INSTALL" ]; then - fn_print_dots "Checking remote build: ${remotelocation}" - # Checks if remotebuildversion variable has been set. - if [ -z "${remotebuildversion}" ] || [ "${remotebuildversion}" == "null" ]; then - fn_print_fail "Checking remote build: ${remotelocation}" - fn_script_log_fatal "Checking remote build" - core_exit.sh - else - fn_print_ok "Checking remote build: ${remotelocation}" - fn_script_log_pass "Checking remote build" - fi - else - # Checks if remotebuild variable has been set. - if [ -z "${remotebuildversion}" ] || [ "${remotebuildversion}" == "null" ]; then - fn_print_failure "Unable to get remote build" - fn_script_log_fatal "Unable to get remote build" - core_exit.sh - fi - fi -} - -fn_update_compare() { - fn_print_dots "Checking for update: ${remotelocation}" - if [ "${localbuild}" != "${remotebuildversion}" ] || [ "${forceupdate}" == "1" ]; then - fn_print_ok_nl "Checking for update: ${remotelocation}" - echo -en "\n" - echo -e "Update available" - echo -e "* Local build: ${red}${localbuild}${default}" - echo -e "* Remote build: ${green}${remotebuildversion}${default}" - if [ -n "${branch}" ]; then - echo -e "* Branch: ${branch}" - fi - if [ -f "${rootdir}/.dev-debug" ]; then - echo -e "Remote build info" - echo -e "* apiurl: ${apiurl}" - echo -e "* remotebuildfilename: ${remotebuildfilename}" - echo -e "* remotebuildurl: ${remotebuildurl}" - echo -e "* remotebuildversion: ${remotebuildversion}" - fi - echo -en "\n" - fn_script_log_info "Update available" - fn_script_log_info "Local build: ${localbuild}" - fn_script_log_info "Remote build: ${remotebuildversion}" - if [ -n "${branch}" ]; then - fn_script_log_info "Branch: ${branch}" - fi - fn_script_log_info "${localbuild} > ${remotebuildversion}" - - if [ "${commandname}" == "UPDATE" ]; then - unset updateonstart - check_status.sh - # If server stopped. - if [ "${status}" == "0" ]; then - fn_update_dl - if [ "${localbuild}" == "0" ]; then - exitbypass=1 - command_start.sh - fn_firstcommand_reset - exitbypass=1 - sleep 5 - command_stop.sh - fn_firstcommand_reset - fi - # If server started. - else - fn_print_restart_warning - exitbypass=1 - command_stop.sh - fn_firstcommand_reset - exitbypass=1 - fn_update_dl - exitbypass=1 - command_start.sh - fn_firstcommand_reset - fi - unset exitbypass - date +%s > "${lockdir}/lastupdate.lock" - alert="update" - elif [ "${commandname}" == "CHECK-UPDATE" ]; then - alert="check-update" - fi - alert.sh - else - fn_print_ok_nl "Checking for update: ${remotelocation}" - echo -en "\n" - echo -e "No update available" - echo -e "* Local build: ${green}${localbuild}${default}" - echo -e "* Remote build: ${green}${remotebuildversion}${default}" - if [ -n "${branch}" ]; then - echo -e "* Branch: ${branch}" - fi - echo -en "\n" - fn_script_log_info "No update available" - fn_script_log_info "Local build: ${localbuild}" - fn_script_log_info "Remote build: ${remotebuildversion}" - if [ -n "${branch}" ]; then - fn_script_log_info "Branch: ${branch}" - fi - if [ -f "${rootdir}/.dev-debug" ]; then - echo -e "Remote build info" - echo -e "* apiurl: ${apiurl}" - echo -e "* remotebuildfilename: ${remotebuildfilename}" - echo -e "* remotebuildurl: ${remotebuildurl}" - echo -e "* remotebuildversion: ${remotebuildversion}" - fi - fi -} - -# The location where the builds are checked and downloaded. -remotelocation="mojang.com" - -if [ "${firstcommandname}" == "INSTALL" ]; then - fn_update_remotebuild - fn_update_dl -else - fn_print_dots "Checking for update" - fn_print_dots "Checking for update: ${remotelocation}" - fn_script_log_info "Checking for update: ${remotelocation}" - fn_update_localbuild - fn_update_remotebuild - fn_update_compare -fi diff --git a/lgsm/functions/update_minecraft_bedrock.sh b/lgsm/functions/update_minecraft_bedrock.sh deleted file mode 100644 index c17088171a..0000000000 --- a/lgsm/functions/update_minecraft_bedrock.sh +++ /dev/null @@ -1,181 +0,0 @@ -#!/bin/bash -# LinuxGSM update_minecraft_bedrock.sh module -# Author: Daniel Gibbs -# Contributors: http://linuxgsm.com/contrib -# Website: https://linuxgsm.com -# Description: Handles updating of Minecraft Bedrock servers. - -functionselfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")" - -fn_update_dl() { - fn_fetch_file "${remotebuildurl}" "" "" "" "${tmpdir}" "bedrock_server.${remotebuildversion}.zip" "nochmodx" "norun" "noforce" "nohash" - echo -e "Extracting to ${serverfiles}...\c" - if [ "${firstcommandname}" == "INSTALL" ]; then - unzip -oq "${tmpdir}/bedrock_server.${remotebuildversion}.zip" -x "server.properties" -d "${serverfiles}" - else - unzip -oq "${tmpdir}/bedrock_server.${remotebuildversion}.zip" -x "permissions.json" "server.properties" "allowlist.json" -d "${serverfiles}" - fi - local exitcode=$? - if [ "${exitcode}" != 0 ]; then - fn_print_fail_eol_nl - fn_script_log_fatal "Extracting ${local_filename}" - if [ -f "${lgsmlog}" ]; then - echo -e "${extractcmd}" >> "${lgsmlog}" - fi - echo -e "${extractcmd}" - core_exit.sh - else - fn_print_ok_eol_nl - fn_script_log_pass "Extracting ${local_filename}" - fi -} - -fn_update_localbuild() { - # Gets local build info. - fn_print_dots "Checking local build: ${remotelocation}" - # Uses log file to get local build. - localbuild=$(grep Version "${consolelogdir}"/* 2> /dev/null | tail -1 | sed 's/.*Version: //' | tr -d '\000-\011\013-\037') - if [ -z "${localbuild}" ]; then - fn_print_error "Checking local build: ${remotelocation}: missing local build info" - fn_script_log_error "Missing local build info" - fn_script_log_error "Set localbuild to 0" - localbuild="0" - else - fn_print_ok "Checking local build: ${remotelocation}" - fn_script_log_pass "Checking local build" - fi -} - -fn_update_remotebuild() { - # Random number for userAgent - randnum=$((1 + RANDOM % 5000)) - # Get remote build info. - if [ "${mcversion}" == "latest" ]; then - remotebuildversion=$(curl -H "Accept-Encoding: identity" -H "Accept-Language: en" -Ls -A "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/90.0.${randnum}.212 Safari/537.36" "https://www.minecraft.net/en-us/download/server/bedrock/" | grep -o 'https://minecraft.azureedge.net/bin-linux/[^"]*' | sed 's/.*\///' | grep -Eo "[.0-9]+[0-9]") - else - remotebuildversion="${mcversion}" - fi - remotebuildurl="https://minecraft.azureedge.net/bin-linux/bedrock-server-${remotebuildversion}.zip" - - if [ "${firstcommandname}" != "INSTALL" ]; then - fn_print_dots "Checking remote build: ${remotelocation}" - # Checks if remotebuildversion variable has been set. - if [ -z "${remotebuildversion}" ] || [ "${remotebuildversion}" == "null" ]; then - fn_print_fail "Checking remote build: ${remotelocation}" - fn_script_log_fatal "Checking remote build" - core_exit.sh - else - fn_print_ok "Checking remote build: ${remotelocation}" - fn_script_log_pass "Checking remote build" - fi - else - # Checks if remotebuild variable has been set. - if [ -z "${remotebuildversion}" ] || [ "${remotebuildversion}" == "null" ]; then - fn_print_failure "Unable to get remote build" - fn_script_log_fatal "Unable to get remote build" - core_exit.sh - fi - fi -} - -fn_update_compare() { - fn_print_dots "Checking for update: ${remotelocation}" - if [ "${localbuild}" != "${remotebuildversion}" ] || [ "${forceupdate}" == "1" ]; then - fn_print_ok_nl "Checking for update: ${remotelocation}" - echo -en "\n" - echo -e "Update available" - echo -e "* Local build: ${red}${localbuild}${default}" - echo -e "* Remote build: ${green}${remotebuildversion}${default}" - if [ -n "${branch}" ]; then - echo -e "* Branch: ${branch}" - fi - if [ -f "${rootdir}/.dev-debug" ]; then - echo -e "Remote build info" - echo -e "* apiurl: ${apiurl}" - echo -e "* remotebuildfilename: ${remotebuildfilename}" - echo -e "* remotebuildurl: ${remotebuildurl}" - echo -e "* remotebuildversion: ${remotebuildversion}" - fi - echo -en "\n" - fn_script_log_info "Update available" - fn_script_log_info "Local build: ${localbuild}" - fn_script_log_info "Remote build: ${remotebuildversion}" - if [ -n "${branch}" ]; then - fn_script_log_info "Branch: ${branch}" - fi - fn_script_log_info "${localbuild} > ${remotebuildversion}" - - if [ "${commandname}" == "UPDATE" ]; then - unset updateonstart - check_status.sh - # If server stopped. - if [ "${status}" == "0" ]; then - fn_update_dl - if [ "${localbuild}" == "0" ]; then - exitbypass=1 - command_start.sh - fn_firstcommand_reset - exitbypass=1 - sleep 5 - command_stop.sh - fn_firstcommand_reset - fi - # If server started. - else - fn_print_restart_warning - exitbypass=1 - command_stop.sh - fn_firstcommand_reset - exitbypass=1 - fn_update_dl - exitbypass=1 - command_start.sh - fn_firstcommand_reset - fi - unset exitbypass - date +%s > "${lockdir}/lastupdate.lock" - alert="update" - elif [ "${commandname}" == "CHECK-UPDATE" ]; then - alert="check-update" - fi - alert.sh - else - fn_print_ok_nl "Checking for update: ${remotelocation}" - echo -en "\n" - echo -e "No update available" - echo -e "* Local build: ${green}${localbuild}${default}" - echo -e "* Remote build: ${green}${remotebuildversion}${default}" - if [ -n "${branch}" ]; then - echo -e "* Branch: ${branch}" - fi - echo -en "\n" - fn_script_log_info "No update available" - fn_script_log_info "Local build: ${localbuild}" - fn_script_log_info "Remote build: ${remotebuildversion}" - if [ -n "${branch}" ]; then - fn_script_log_info "Branch: ${branch}" - fi - if [ -f "${rootdir}/.dev-debug" ]; then - echo -e "Remote build info" - echo -e "* apiurl: ${apiurl}" - echo -e "* remotebuildfilename: ${remotebuildfilename}" - echo -e "* remotebuildurl: ${remotebuildurl}" - echo -e "* remotebuildversion: ${remotebuildversion}" - fi - fi -} - -# The location where the builds are checked and downloaded. -remotelocation="minecraft.net" - -if [ "${firstcommandname}" == "INSTALL" ]; then - fn_update_remotebuild - fn_update_dl -else - fn_print_dots "Checking for update" - fn_print_dots "Checking for update: ${remotelocation}" - fn_script_log_info "Checking for update: ${remotelocation}" - fn_update_localbuild - fn_update_remotebuild - fn_update_compare -fi diff --git a/lgsm/functions/update_mta.sh b/lgsm/functions/update_mta.sh deleted file mode 100644 index 5252c13280..0000000000 --- a/lgsm/functions/update_mta.sh +++ /dev/null @@ -1,166 +0,0 @@ -#!/bin/bash -# LinuxGSM update_mta.sh module -# Author: Daniel Gibbs -# Contributors: http://linuxgsm.com/contrib -# Website: https://linuxgsm.com -# Description: Handles updating of Multi Theft Auto servers. - -functionselfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")" - -fn_update_dl() { - # Download and extract files to tmpdir. - fn_fetch_file "http://linux.mtasa.com/dl/multitheftauto_linux_x64.tar.gz" "" "" "" "${tmpdir}" "multitheftauto_linux_x64.tar.gz" "nochmodx" "norun" "force" "nohash" - fn_dl_extract "${tmpdir}" "multitheftauto_linux_x64.tar.gz" "${serverfiles}" "multitheftauto_linux_x64" -} - -fn_update_localbuild() { - # Gets local build info. - fn_print_dots "Checking local build: ${remotelocation}" - # Uses log file to get local build. - localbuild=$(grep "= Multi Theft Auto: San Andreas v" "${serverfiles}/mods/deathmatch/logs/server.log" | awk '{ print $7 }' | sed -r 's/^.{1}//' | tail -1) - if [ -z "${localbuild}" ]; then - fn_print_error "Checking local build: ${remotelocation}: missing local build info" - fn_script_log_error "Missing local build info" - fn_script_log_error "Set localbuild to 0" - localbuild="0" - else - fn_print_ok "Checking local build: ${remotelocation}" - fn_script_log_pass "Checking local build" - fi -} - -fn_update_remotebuild() { - # Get remote build info. - apiurl="https://api.github.com/repos/multitheftauto/mtasa-blue/releases/latest" - remotebuildresponse=$(curl -s "${apiurl}") - remotebuildfilename=$(echo "${remotebuildresponse}" | jq -r '.assets[]|select(.browser_download_url | contains("Linux-amd64")) | .name') - remotebuildurl=$(echo "${remotebuildresponse}" | jq -r '.assets[]|select(.browser_download_url | contains("Linux-amd64")) | .browser_download_url') - remotebuildversion=$(echo "${remotebuildresponse}" | jq -r '.tag_name') - if [ "${firstcommandname}" != "INSTALL" ]; then - fn_print_dots "Checking remote build: ${remotelocation}" - # Checks if remotebuildversion variable has been set. - if [ -z "${remotebuildversion}" ] || [ "${remotebuildversion}" == "null" ]; then - fn_print_fail "Checking remote build: ${remotelocation}" - fn_script_log_fatal "Checking remote build" - core_exit.sh - else - fn_print_ok "Checking remote build: ${remotelocation}" - fn_script_log_pass "Checking remote build" - fi - else - # Checks if remotebuild variable has been set. - if [ -z "${remotebuildversion}" ] || [ "${remotebuildversion}" == "null" ]; then - fn_print_failure "Unable to get remote build" - fn_script_log_fatal "Unable to get remote build" - core_exit.sh - fi - fi -} - -fn_update_compare() { - fn_print_dots "Checking for update: ${remotelocation}" - if [ "${localbuild}" != "${remotebuildversion}" ] || [ "${forceupdate}" == "1" ]; then - if [ "${forceupdate}" == "1" ]; then - # forceupdate bypasses checks, useful for small build changes - mtaupdatestatus="forced" - else - mtaupdatestatus="available" - fi - fn_print_ok_nl "Checking for update: ${remotelocation}" - echo -en "\n" - echo -e "Update available" - echo -e "* Local build: ${red}${localbuild}${default}" - echo -e "* Remote build: ${green}${remotebuildversion}${default}" - if [ -n "${branch}" ]; then - echo -e "* Branch: ${branch}" - fi - if [ -f "${rootdir}/.dev-debug" ]; then - echo -e "Remote build info" - echo -e "* apiurl: ${apiurl}" - echo -e "* remotebuildfilename: ${remotebuildfilename}" - echo -e "* remotebuildurl: ${remotebuildurl}" - echo -e "* remotebuildversion: ${remotebuildversion}" - fi - echo -en "\n" - fn_script_log_info "Update available" - fn_script_log_info "Local build: ${localbuild}" - fn_script_log_info "Remote build: ${remotebuildversion}" - if [ -n "${branch}" ]; then - fn_script_log_info "Branch: ${branch}" - fi - fn_script_log_info "${localbuild} > ${remotebuildversion}" - - if [ "${commandname}" == "UPDATE" ]; then - unset updateonstart - check_status.sh - # If server stopped. - if [ "${status}" == "0" ]; then - fn_update_dl - if [ "${localbuild}" == "0" ]; then - exitbypass=1 - command_start.sh - fn_firstcommand_reset - exitbypass=1 - sleep 5 - command_stop.sh - fn_firstcommand_reset - fi - # If server started. - else - fn_print_restart_warning - exitbypass=1 - command_stop.sh - fn_firstcommand_reset - exitbypass=1 - fn_update_dl - exitbypass=1 - command_start.sh - fn_firstcommand_reset - fi - unset exitbypass - date +%s > "${lockdir}/lastupdate.lock" - alert="update" - elif [ "${commandname}" == "CHECK-UPDATE" ]; then - alert="check-update" - fi - alert.sh - else - fn_print_ok_nl "Checking for update: ${remotelocation}" - echo -en "\n" - echo -e "No update available" - echo -e "* Local build: ${green}${localbuild}${default}" - echo -e "* Remote build: ${green}${remotebuildversion}${default}" - if [ -n "${branch}" ]; then - echo -e "* Branch: ${branch}" - fi - echo -en "\n" - fn_script_log_info "No update available" - fn_script_log_info "Local build: ${localbuild}" - fn_script_log_info "Remote build: ${remotebuildversion}" - if [ -n "${branch}" ]; then - fn_script_log_info "Branch: ${branch}" - fi - if [ -f "${rootdir}/.dev-debug" ]; then - echo -e "Remote build info" - echo -e "* apiurl: ${apiurl}" - echo -e "* remotebuildfilename: ${remotebuildfilename}" - echo -e "* remotebuildurl: ${remotebuildurl}" - echo -e "* remotebuildversion: ${remotebuildversion}" - fi - fi -} - -# The location where the builds are checked and downloaded. -remotelocation="linux.mtasa.com" - -if [ "${firstcommandname}" == "INSTALL" ]; then - fn_update_remotebuild - fn_update_dl -else - fn_print_dots "Checking for update" - fn_print_dots "Checking for update: ${remotelocation}" - fn_script_log_info "Checking for update: ${remotelocation}" - fn_update_localbuild - fn_update_remotebuild - fn_update_compare -fi diff --git a/lgsm/functions/update_papermc.sh b/lgsm/functions/update_papermc.sh deleted file mode 100644 index 102ef65701..0000000000 --- a/lgsm/functions/update_papermc.sh +++ /dev/null @@ -1,194 +0,0 @@ -#!/bin/bash -# LinuxGSM update_papermc.sh function -# Author: Daniel Gibbs -# Contributors: http://linuxgsm.com/contrib -# Website: https://linuxgsm.com -# Description: Handles updating of PaperMC and Waterfall servers. - -functionselfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")" - -fn_update_dl() { - # Download and extract files to serverfiles. - fn_fetch_file "${remotebuildurl}" "" "" "" "${tmpdir}" "${remotebuildfilename}" "chmodx" "norun" "force" "${remotebuildhash}" - cp -f "${tmpdir}/${remotebuildfilename}" "${serverfiles}/${executable#./}" - echo "${remotebuildversion}" > "${serverfiles}/build.txt" -} - -fn_update_localbuild() { - # Gets local build info. - fn_print_dots "Checking local build: ${remotelocation}" - # Uses build file to get local build. - localbuild=$(head -n 1 "${serverfiles}/build.txt" 2> /dev/null) - if [ -z "${localbuild}" ]; then - fn_print_error "Checking local build: ${remotelocation}: missing local build info" - fn_script_log_error "Missing local build info" - fn_script_log_error "Set localbuild to 0" - localbuild="0" - else - fn_print_ok "Checking local build: ${remotelocation}" - fn_script_log_pass "Checking local build" - fi -} - -fn_update_remotebuild() { - # Get remote build info. - apiurl="https://papermc.io/api/v2/projects" - # Get list of projects. - remotebuildresponse=$(curl -s "${apiurl}") - # Get list of Minecraft versions for project. - remotebuildresponseproject=$(curl -s "${apiurl}/${paperproject}") - # Get latest Minecraft: Java Edition version or user specified version. - if [ "${mcversion}" == "latest" ]; then - remotebuildmcversion=$(echo "${remotebuildresponseproject}" | jq -r '.versions[-1]') - else - # Checks if user specified version exists. - remotebuildmcversion=$(echo "${remotebuildresponseproject}" | jq -r -e --arg mcversion "${mcversion}" '.versions[]|select(. == $mcversion)') - if [ -z "${remotebuildmcversion}" ]; then - # user passed version does not exist - fn_print_error_nl "Version ${mcversion} not available from ${remotelocation}" - fn_script_log_error "Version ${mcversion} not available from ${remotelocation}" - core_exit.sh - fi - fi - # Get list of paper builds for specific Minecraft: Java Edition version. - remotebuildresponsemcversion=$(curl -s "${apiurl}/paper/versions/${remotebuildmcversion}") - # Get latest paper build for specific Minecraft: Java Edition version. - remotebuildpaperversion=$(echo "${remotebuildresponsemcversion}" | jq -r '.builds[-1]') - # Get various info about the paper build. - remotebuildresponseversion=$(curl -s "${apiurl}/${paperproject}/versions/${remotebuildmcversion}/builds/${remotebuildpaperversion}") - remotebuildfilename=$(echo "${remotebuildresponseversion}" | jq -r '.downloads.application.name') - remotebuildhash=$(echo "${remotebuildresponseversion}" | jq -r '.downloads.application.sha256') - remotebuildurl="${apiurl}/${paperproject}/versions/${remotebuildmcversion}/builds/${remotebuildpaperversion}/downloads/${remotebuildfilename}" - # Combines Minecraft: Java Edition version and paper build. e.g 1.16.5-456 - remotebuildversion="${remotebuildmcversion}-${remotebuildpaperversion}" - - if [ "${firstcommandname}" != "INSTALL" ]; then - fn_print_dots "Checking remote build: ${remotelocation}" - # Checks if remotebuildversion variable has been set. - if [ -z "${remotebuildversion}" ] || [ "${remotebuildversion}" == "null" ]; then - fn_print_fail "Checking remote build: ${remotelocation}" - fn_script_log_fatal "Checking remote build" - core_exit.sh - else - fn_print_ok "Checking remote build: ${remotelocation}" - fn_script_log_pass "Checking remote build" - fi - else - # Checks if remotebuild variable has been set. - if [ -z "${remotebuildversion}" ] || [ "${remotebuildversion}" == "null" ]; then - fn_print_failure "Unable to get remote build" - fn_script_log_fatal "Unable to get remote build" - core_exit.sh - fi - fi -} - -fn_update_compare() { - fn_print_dots "Checking for update: ${remotelocation}" - if [ "${localbuild}" != "${remotebuildversion}" ] || [ "${forceupdate}" == "1" ]; then - fn_print_ok_nl "Checking for update: ${remotelocation}" - echo -en "\n" - echo -e "Update available" - echo -e "* Local build: ${red}${localbuild}${default}" - echo -e "* Remote build: ${green}${remotebuildversion}${default}" - if [ -n "${branch}" ]; then - echo -e "* Branch: ${branch}" - fi - if [ -f "${rootdir}/.dev-debug" ]; then - echo -e "Remote build info" - echo -e "* apiurl: ${apiurl}" - echo -e "* remotebuildfilename: ${remotebuildfilename}" - echo -e "* remotebuildurl: ${remotebuildurl}" - echo -e "* remotebuildversion: ${remotebuildversion}" - fi - echo -en "\n" - fn_script_log_info "Update available" - fn_script_log_info "Local build: ${localbuild}" - fn_script_log_info "Remote build: ${remotebuildversion}" - if [ -n "${branch}" ]; then - fn_script_log_info "Branch: ${branch}" - fi - fn_script_log_info "${localbuild} > ${remotebuildversion}" - - if [ "${commandname}" == "UPDATE" ]; then - unset updateonstart - check_status.sh - # If server stopped. - if [ "${status}" == "0" ]; then - fn_update_dl - if [ "${localbuild}" == "0" ]; then - exitbypass=1 - command_start.sh - fn_firstcommand_reset - exitbypass=1 - sleep 5 - command_stop.sh - fn_firstcommand_reset - fi - # If server started. - else - fn_print_restart_warning - exitbypass=1 - command_stop.sh - fn_firstcommand_reset - exitbypass=1 - fn_update_dl - exitbypass=1 - command_start.sh - fn_firstcommand_reset - fi - unset exitbypass - date +%s > "${lockdir}/lastupdate.lock" - alert="update" - elif [ "${commandname}" == "CHECK-UPDATE" ]; then - alert="check-update" - fi - alert.sh - else - fn_print_ok_nl "Checking for update: ${remotelocation}" - echo -en "\n" - echo -e "No update available" - echo -e "* Local build: ${green}${localbuild}${default}" - echo -e "* Remote build: ${green}${remotebuildversion}${default}" - if [ -n "${branch}" ]; then - echo -e "* Branch: ${branch}" - fi - echo -en "\n" - fn_script_log_info "No update available" - fn_script_log_info "Local build: ${localbuild}" - fn_script_log_info "Remote build: ${remotebuildversion}" - if [ -n "${branch}" ]; then - fn_script_log_info "Branch: ${branch}" - fi - if [ -f "${rootdir}/.dev-debug" ]; then - echo -e "Remote build info" - echo -e "* apiurl: ${apiurl}" - echo -e "* remotebuildfilename: ${remotebuildfilename}" - echo -e "* remotebuildurl: ${remotebuildurl}" - echo -e "* remotebuildversion: ${remotebuildversion}" - fi - fi -} - -# The location where the builds are checked and downloaded. -remotelocation="papermc.io" - -if [ "${shortname}" == "pmc" ]; then - paperproject="paper" -elif [ "${shortname}" == "vpmc" ]; then - paperproject="velocity" -elif [ "${shortname}" == "wmc" ]; then - paperproject="waterfall" -fi - -if [ "${firstcommandname}" == "INSTALL" ]; then - fn_update_remotebuild - fn_update_dl -else - fn_print_dots "Checking for update" - fn_print_dots "Checking for update: ${remotelocation}" - fn_script_log_info "Checking for update: ${remotelocation}" - fn_update_localbuild - fn_update_remotebuild - fn_update_compare -fi diff --git a/lgsm/functions/update_steamcmd.sh b/lgsm/functions/update_steamcmd.sh deleted file mode 100644 index 85bacb8997..0000000000 --- a/lgsm/functions/update_steamcmd.sh +++ /dev/null @@ -1,39 +0,0 @@ -#!/bin/bash -# LinuxGSM update_steamcmd.sh module -# Author: Daniel Gibbs -# Contributors: http://linuxgsm.com/contrib -# Website: https://linuxgsm.com -# Description: Handles updating using SteamCMD. - -functionselfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")" - -# init steamcmd functions -core_steamcmd.sh - -# The location where the builds are checked and downloaded. -remotelocation="SteamCMD" -check.sh - -fn_print_dots "${remotelocation}" - -if [ "${forceupdate}" == "1" ]; then - # forceupdate bypasses update checks. - if [ "${status}" != "0" ]; then - fn_print_restart_warning - exitbypass=1 - command_stop.sh - fn_firstcommand_reset - fn_dl_steamcmd - date +%s > "${lockdir}/lastupdate.lock" - exitbypass=1 - command_start.sh - fn_firstcommand_reset - else - fn_dl_steamcmd - date +%s > "${lockdir}/lastupdate.lock" - fi -else - fn_update_steamcmd_localbuild - fn_update_steamcmd_remotebuild - fn_update_steamcmd_compare -fi diff --git a/lgsm/functions/update_ts3.sh b/lgsm/functions/update_ts3.sh deleted file mode 100644 index 0f5327de28..0000000000 --- a/lgsm/functions/update_ts3.sh +++ /dev/null @@ -1,181 +0,0 @@ -#!/bin/bash -# LinuxGSM command_ts3.sh module -# Author: Daniel Gibbs -# Contributors: http://linuxgsm.com/contrib -# Website: https://linuxgsm.com -# Description: Handles updating of Teamspeak 3 servers. - -functionselfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")" - -fn_update_dl() { - # Download and extract files to serverfiles. - fn_fetch_file "${remotebuildurl}" "" "" "" "${tmpdir}" "${remotebuildfilename}" "nochmodx" "norun" "force" "${remotebuildhash}" - fn_dl_extract "${tmpdir}" "${remotebuildfilename}" "${serverfiles}" "teamspeak3-server_linux_${ts3arch}" - fn_clear_tmp -} - -fn_update_localbuild() { - # Gets local build info. - fn_print_dots "Checking local build: ${remotelocation}" - # Uses log file to get local build. - localbuild=$(grep -Eo "TeamSpeak 3 Server ((\.)?[0-9]{1,3}){1,3}\.[0-9]{1,3}" "$(find ./* -name "ts3server*_0.log" 2> /dev/null | sort | tail -1)" | grep -Eo "((\.)?[0-9]{1,3}){1,3}\.[0-9]{1,3}" | tail -1) - if [ -z "${localbuild}" ]; then - fn_print_error "Checking local build: ${remotelocation}: missing local build info" - fn_script_log_error "Missing local build info" - fn_script_log_error "Set localbuild to 0" - localbuild="0" - else - fn_print_ok "Checking local build: ${remotelocation}" - fn_script_log_pass "Checking local build" - fi -} - -fn_update_remotebuild() { - # Get remote build info. - apiurl="https://www.teamspeak.com/versions/server.json" - remotebuildresponse=$(curl -s "${apiurl}") - - if [ "${ts3arch}" == "amd64" ]; then - remotebuildurl=$(echo -e "${remotebuildresponse}" | jq -r '.linux.x86_64.mirrors."teamspeak.com"') - remotebuildhash=$(echo -e "${remotebuildresponse}" | jq -r '.linux.x86_64.checksum') - elif [ "${ts3arch}" == "x86" ]; then - remotebuildurl=$(echo -e "${remotebuildresponse}" | jq -r '.linux.x86.mirrors."teamspeak.com"') - remotebuildhash=$(echo -e "${remotebuildresponse}" | jq -r '.linux.x86.checksum') - fi - remotebuildfilename=$(basename "${remotebuildurl}") - remotebuildversion=$(echo -e "${remotebuildresponse}" | jq -r '.linux.x86_64.version') - - if [ "${firstcommandname}" != "INSTALL" ]; then - fn_print_dots "Checking remote build: ${remotelocation}" - # Checks if remotebuildversion variable has been set. - if [ -z "${remotebuildversion}" ] || [ "${remotebuildversion}" == "null" ]; then - fn_print_fail "Checking remote build: ${remotelocation}" - fn_script_log_fatal "Checking remote build" - core_exit.sh - else - fn_print_ok "Checking remote build: ${remotelocation}" - fn_script_log_pass "Checking remote build" - fi - else - # Checks if remotebuild variable has been set. - if [ -z "${remotebuildversion}" ] || [ "${remotebuildversion}" == "null" ]; then - fn_print_failure "Unable to get remote build" - fn_script_log_fatal "Unable to get remote build" - core_exit.sh - fi - fi -} - -fn_update_compare() { - fn_print_dots "Checking for update: ${remotelocation}" - if [ "${localbuild}" != "${remotebuildversion}" ] || [ "${forceupdate}" == "1" ]; then - fn_print_ok_nl "Checking for update: ${remotelocation}" - echo -en "\n" - echo -e "Update available" - echo -e "* Local build: ${red}${localbuild}${default}" - echo -e "* Remote build: ${green}${remotebuildversion}${default}" - if [ -n "${branch}" ]; then - echo -e "* Branch: ${branch}" - fi - if [ -f "${rootdir}/.dev-debug" ]; then - echo -e "Remote build info" - echo -e "* apiurl: ${apiurl}" - echo -e "* remotebuildfilename: ${remotebuildfilename}" - echo -e "* remotebuildurl: ${remotebuildurl}" - echo -e "* remotebuildversion: ${remotebuildversion}" - fi - echo -en "\n" - fn_script_log_info "Update available" - fn_script_log_info "Local build: ${localbuild}" - fn_script_log_info "Remote build: ${remotebuildversion}" - if [ -n "${branch}" ]; then - fn_script_log_info "Branch: ${branch}" - fi - fn_script_log_info "${localbuild} > ${remotebuildversion}" - - if [ "${commandname}" == "UPDATE" ]; then - unset updateonstart - check_status.sh - # If server stopped. - if [ "${status}" == "0" ]; then - fn_update_dl - if [ "${localbuild}" == "0" ]; then - exitbypass=1 - command_start.sh - fn_firstcommand_reset - exitbypass=1 - sleep 5 - command_stop.sh - fn_firstcommand_reset - fi - # If server started. - else - fn_print_restart_warning - exitbypass=1 - command_stop.sh - fn_firstcommand_reset - exitbypass=1 - fn_update_dl - exitbypass=1 - command_start.sh - fn_firstcommand_reset - fi - unset exitbypass - date +%s > "${lockdir}/lastupdate.lock" - alert="update" - elif [ "${commandname}" == "CHECK-UPDATE" ]; then - alert="check-update" - fi - alert.sh - else - fn_print_ok_nl "Checking for update: ${remotelocation}" - echo -en "\n" - echo -e "No update available" - echo -e "* Local build: ${green}${localbuild}${default}" - echo -e "* Remote build: ${green}${remotebuildversion}${default}" - if [ -n "${branch}" ]; then - echo -e "* Branch: ${branch}" - fi - echo -en "\n" - fn_script_log_info "No update available" - fn_script_log_info "Local build: ${localbuild}" - fn_script_log_info "Remote build: ${remotebuildversion}" - if [ -n "${branch}" ]; then - fn_script_log_info "Branch: ${branch}" - fi - if [ -f "${rootdir}/.dev-debug" ]; then - echo -e "Remote build info" - echo -e "* apiurl: ${apiurl}" - echo -e "* remotebuildfilename: ${remotebuildfilename}" - echo -e "* remotebuildurl: ${remotebuildurl}" - echo -e "* remotebuildversion: ${remotebuildversion}" - fi - fi -} - -# Game server architecture. -info_distro.sh -if [ "${arch}" == "x86_64" ]; then - ts3arch="amd64" -elif [ "${arch}" == "i386" ] || [ "${arch}" == "i686" ]; then - ts3arch="x86" -else - fn_print_failure "Unknown or unsupported architecture: ${arch}" - fn_script_log_fatal "Unknown or unsupported architecture: ${arch}" - core_exit.sh -fi - -# The location where the builds are checked and downloaded. -remotelocation="teamspeak.com" - -if [ "${firstcommandname}" == "INSTALL" ]; then - fn_update_remotebuild - fn_update_dl -else - fn_print_dots "Checking for update" - fn_print_dots "Checking for update: ${remotelocation}" - fn_script_log_info "Checking for update: ${remotelocation}" - fn_update_localbuild - fn_update_remotebuild - fn_update_compare -fi diff --git a/lgsm/functions/update_ut99.sh b/lgsm/functions/update_ut99.sh deleted file mode 100644 index 045b29dbe1..0000000000 --- a/lgsm/functions/update_ut99.sh +++ /dev/null @@ -1,163 +0,0 @@ -#!/bin/bash -# LinuxGSM command_ut99.sh module -# Author: Daniel Gibbs -# Contributors: http://linuxgsm.com/contrib -# Website: https://linuxgsm.com -# Description: Handles updating of Unreal Tournament 99 servers. - -functionselfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")" - -fn_update_dl() { - # Download and extract files to serverfiles. - fn_fetch_file "${remotebuildurl}" "" "" "" "${tmpdir}" "${remotebuildfilename}" "nochmodx" "norun" "force" "nohash" - fn_dl_extract "${tmpdir}" "${remotebuildfilename}" "${serverfiles}" - echo "${remotebuildversion}" > "${serverfiles}/build.txt" - fn_clear_tmp -} - -fn_update_localbuild() { - # Gets local build info. - fn_print_dots "Checking local build: ${remotelocation}" - # Uses build file to get local build. - localbuild=$(head -n 1 "${serverfiles}/build.txt" 2> /dev/null) - if [ -z "${localbuild}" ]; then - fn_print_error "Checking local build: ${remotelocation}: missing local build info" - fn_script_log_error "Missing local build info" - fn_script_log_error "Set localbuild to 0" - localbuild="0" - else - fn_print_ok "Checking local build: ${remotelocation}" - fn_script_log_pass "Checking local build" - fi -} - -fn_update_remotebuild() { - # Get remote build info. - apiurl="https://api.github.com/repos/OldUnreal/UnrealTournamentPatches/releases/latest" - remotebuildresponse=$(curl -s "${apiurl}") - remotebuildfilename=$(echo "${remotebuildresponse}" | jq -r '.assets[]|select(.browser_download_url | contains("Linux-amd64")) | .name') - remotebuildurl=$(echo "${remotebuildresponse}" | jq -r '.assets[]|select(.browser_download_url | contains("Linux-amd64")) | .browser_download_url') - remotebuildversion=$(echo "${remotebuildresponse}" | jq -r '.tag_name') - - if [ "${firstcommandname}" != "INSTALL" ]; then - fn_print_dots "Checking remote build: ${remotelocation}" - # Checks if remotebuildversion variable has been set. - if [ -z "${remotebuildversion}" ] || [ "${remotebuildversion}" == "null" ]; then - fn_print_fail "Checking remote build: ${remotelocation}" - fn_script_log_fatal "Checking remote build" - core_exit.sh - else - fn_print_ok "Checking remote build: ${remotelocation}" - fn_script_log_pass "Checking remote build" - fi - else - # Checks if remotebuild variable has been set. - if [ -z "${remotebuildversion}" ] || [ "${remotebuildversion}" == "null" ]; then - fn_print_failure "Unable to get remote build" - fn_script_log_fatal "Unable to get remote build" - core_exit.sh - fi - fi -} - -fn_update_compare() { - fn_print_dots "Checking for update: ${remotelocation}" - if [ "${localbuild}" != "${remotebuildversion}" ] || [ "${forceupdate}" == "1" ]; then - fn_print_ok_nl "Checking for update: ${remotelocation}" - echo -en "\n" - echo -e "Update available" - echo -e "* Local build: ${red}${localbuild}${default}" - echo -e "* Remote build: ${green}${remotebuildversion}${default}" - if [ -n "${branch}" ]; then - echo -e "* Branch: ${branch}" - fi - if [ -f "${rootdir}/.dev-debug" ]; then - echo -e "Remote build info" - echo -e "* apiurl: ${apiurl}" - echo -e "* remotebuildfilename: ${remotebuildfilename}" - echo -e "* remotebuildurl: ${remotebuildurl}" - echo -e "* remotebuildversion: ${remotebuildversion}" - fi - echo -en "\n" - fn_script_log_info "Update available" - fn_script_log_info "Local build: ${localbuild}" - fn_script_log_info "Remote build: ${remotebuildversion}" - if [ -n "${branch}" ]; then - fn_script_log_info "Branch: ${branch}" - fi - fn_script_log_info "${localbuild} > ${remotebuildversion}" - - if [ "${commandname}" == "UPDATE" ]; then - unset updateonstart - check_status.sh - # If server stopped. - if [ "${status}" == "0" ]; then - fn_update_dl - if [ "${localbuild}" == "0" ]; then - exitbypass=1 - command_start.sh - fn_firstcommand_reset - exitbypass=1 - sleep 5 - command_stop.sh - fn_firstcommand_reset - fi - # If server started. - else - fn_print_restart_warning - exitbypass=1 - command_stop.sh - fn_firstcommand_reset - exitbypass=1 - fn_update_dl - exitbypass=1 - command_start.sh - fn_firstcommand_reset - fi - unset exitbypass - date +%s > "${lockdir}/lastupdate.lock" - alert="update" - elif [ "${commandname}" == "CHECK-UPDATE" ]; then - alert="check-update" - fi - alert.sh - else - fn_print_ok_nl "Checking for update: ${remotelocation}" - echo -en "\n" - echo -e "No update available" - echo -e "* Local build: ${green}${localbuild}${default}" - echo -e "* Remote build: ${green}${remotebuildversion}${default}" - if [ -n "${branch}" ]; then - echo -e "* Branch: ${branch}" - fi - echo -en "\n" - fn_script_log_info "No update available" - fn_script_log_info "Local build: ${localbuild}" - fn_script_log_info "Remote build: ${remotebuildversion}" - if [ -n "${branch}" ]; then - fn_script_log_info "Branch: ${branch}" - fi - if [ -f "${rootdir}/.dev-debug" ]; then - echo -e "Remote build info" - echo -e "* apiurl: ${apiurl}" - echo -e "* remotebuildfilename: ${remotebuildfilename}" - echo -e "* remotebuildurl: ${remotebuildurl}" - echo -e "* remotebuildversion: ${remotebuildversion}" - fi - fi -} - -# The location where the builds are checked and downloaded. -remotelocation="github.com" - -if [ "${firstcommandname}" == "INSTALL" ]; then - fn_update_remotebuild - fn_update_dl -else - fn_print_dots "Checking for update" - fn_print_dots "Checking for update: ${remotelocation}" - fn_script_log_info "Checking for update: ${remotelocation}" - fn_update_localbuild - fn_update_remotebuild - fn_update_compare -fi diff --git a/lgsm/functions/update_vintagestory.sh b/lgsm/functions/update_vintagestory.sh deleted file mode 100644 index 7307a4b770..0000000000 --- a/lgsm/functions/update_vintagestory.sh +++ /dev/null @@ -1,170 +0,0 @@ -#!/bin/bash -# LinuxGSM update_vintagestory.sh module -# Author: Daniel Gibbs -# Contributors: http://linuxgsm.com/contrib -# Website: https://linuxgsm.com -# Description: Handles updating of Vintage Story servers. - -functionselfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")" - -fn_update_dl() { - # Download and extract files to serverfiles. - fn_fetch_file "${remotebuildurl}" "" "" "" "${tmpdir}" "${remotebuildfilename}" "nochmodx" "norun" "force" "${remotebuildhash}" - fn_dl_extract "${tmpdir}" "${remotebuildfilename}" "${serverfiles}" - fn_clear_tmp -} - -fn_update_localbuild() { - # Gets local build info. - fn_print_dots "Checking local build: ${remotelocation}" - # Uses executable to get local build. - if [ -d "${executabledir}" ]; then - cd "${executabledir}" || exit - localbuild="$(${preexecutable} ${executable} --version | sed '/^[[:space:]]*$/d')" - fi - if [ -z "${localbuild}" ]; then - fn_print_error "Checking local build: ${remotelocation}: missing local build info" - fn_script_log_error "Missing local build info" - fn_script_log_error "Set localbuild to 0" - localbuild="0" - else - fn_print_ok "Checking local build: ${remotelocation}" - fn_script_log_pass "Checking local build" - fi -} - -fn_update_remotebuild() { - # Get remote build info. - apiurl="http://api.vintagestory.at/stable-unstable.json" - remotebuildresponse=$(curl -s "${apiurl}") - if [ "${branch}" == "stable" ]; then - remotebuildversion=$(echo "${remotebuildresponse}" | jq -r '[ to_entries[] ] | .[].key' | grep -Ev "\-rc|\-pre" | sort -r -V | head -1) - else - remotebuildversion=$(echo "${remotebuildresponse}" | jq -r '[ to_entries[] ] | .[].key' | grep -E "\-rc|\-pre" | sort -r -V | head -1) - fi - remotebuildfilename=$(echo "${remotebuildresponse}" | jq --arg remotebuildversion "${remotebuildversion}" -r '.[$remotebuildversion].server.filename') - remotebuildurl=$(echo "${remotebuildresponse}" | jq --arg remotebuildversion "${remotebuildversion}" -r '.[$remotebuildversion].server.urls.cdn') - remotebuildhash=$(echo "${remotebuildresponse}" | jq --arg remotebuildversion "${remotebuildversion}" -r '.[$remotebuildversion].server.md5') - - if [ "${firstcommandname}" != "INSTALL" ]; then - fn_print_dots "Checking remote build: ${remotelocation}" - # Checks if remotebuildversion variable has been set. - if [ -z "${remotebuildversion}" ] || [ "${remotebuildversion}" == "null" ]; then - fn_print_fail "Checking remote build: ${remotelocation}" - fn_script_log_fatal "Checking remote build" - core_exit.sh - else - fn_print_ok "Checking remote build: ${remotelocation}" - fn_script_log_pass "Checking remote build" - fi - else - # Checks if remotebuild variable has been set. - if [ -z "${remotebuildversion}" ] || [ "${remotebuildversion}" == "null" ]; then - fn_print_failure "Unable to get remote build" - fn_script_log_fatal "Unable to get remote build" - core_exit.sh - fi - fi -} - -fn_update_compare() { - fn_print_dots "Checking for update: ${remotelocation}" - if [ "${localbuild}" != "${remotebuildversion}" ] || [ "${forceupdate}" == "1" ]; then - fn_print_ok_nl "Checking for update: ${remotelocation}" - echo -en "\n" - echo -e "Update available" - echo -e "* Local build: ${red}${localbuild}${default}" - echo -e "* Remote build: ${green}${remotebuildversion}${default}" - if [ -n "${branch}" ]; then - echo -e "* Branch: ${branch}" - fi - if [ -f "${rootdir}/.dev-debug" ]; then - echo -e "Remote build info" - echo -e "* apiurl: ${apiurl}" - echo -e "* remotebuildfilename: ${remotebuildfilename}" - echo -e "* remotebuildurl: ${remotebuildurl}" - echo -e "* remotebuildversion: ${remotebuildversion}" - fi - echo -en "\n" - fn_script_log_info "Update available" - fn_script_log_info "Local build: ${localbuild}" - fn_script_log_info "Remote build: ${remotebuildversion}" - if [ -n "${branch}" ]; then - fn_script_log_info "Branch: ${branch}" - fi - fn_script_log_info "${localbuild} > ${remotebuildversion}" - - if [ "${commandname}" == "UPDATE" ]; then - unset updateonstart - check_status.sh - # If server stopped. - if [ "${status}" == "0" ]; then - fn_update_dl - if [ "${localbuild}" == "0" ]; then - exitbypass=1 - command_start.sh - fn_firstcommand_reset - exitbypass=1 - sleep 5 - command_stop.sh - fn_firstcommand_reset - fi - # If server started. - else - fn_print_restart_warning - exitbypass=1 - command_stop.sh - fn_firstcommand_reset - exitbypass=1 - fn_update_dl - exitbypass=1 - command_start.sh - fn_firstcommand_reset - fi - unset exitbypass - date +%s > "${lockdir}/lastupdate.lock" - alert="update" - elif [ "${commandname}" == "CHECK-UPDATE" ]; then - alert="check-update" - fi - alert.sh - else - fn_print_ok_nl "Checking for update: ${remotelocation}" - echo -en "\n" - echo -e "No update available" - echo -e "* Local build: ${green}${localbuild}${default}" - echo -e "* Remote build: ${green}${remotebuildversion}${default}" - if [ -n "${branch}" ]; then - echo -e "* Branch: ${branch}" - fi - echo -en "\n" - fn_script_log_info "No update available" - fn_script_log_info "Local build: ${localbuild}" - fn_script_log_info "Remote build: ${remotebuildversion}" - if [ -n "${branch}" ]; then - fn_script_log_info "Branch: ${branch}" - fi - if [ -f "${rootdir}/.dev-debug" ]; then - echo -e "Remote build info" - echo -e "* apiurl: ${apiurl}" - echo -e "* remotebuildfilename: ${remotebuildfilename}" - echo -e "* remotebuildurl: ${remotebuildurl}" - echo -e "* remotebuildversion: ${remotebuildversion}" - fi - fi -} - -# The location where the builds are checked and downloaded. -remotelocation="vintagestory.at" - -if [ "${firstcommandname}" == "INSTALL" ]; then - fn_update_remotebuild - fn_update_dl -else - fn_print_dots "Checking for update" - fn_print_dots "Checking for update: ${remotelocation}" - fn_script_log_info "Checking for update: ${remotelocation}" - fn_update_localbuild - fn_update_remotebuild - fn_update_compare -fi diff --git a/lgsm/modules/command_send.sh b/lgsm/modules/command_send.sh index e3dafd6930..cf6a9f08a3 100644 --- a/lgsm/modules/command_send.sh +++ b/lgsm/modules/command_send.sh @@ -26,7 +26,7 @@ if [ "${status}" != "0" ]; then fi echo "" fn_print_dots "Sending command to console: \"${commandtosend}\"" - tmux -L "${socketname}" send-keys -t "${servicename}" "${commandtosend}" ENTER + tmux -L "${socketname}" send-keys -t "${sessionname}" "${commandtosend}" ENTER fn_print_ok_nl "Sending command to console: \"${commandtosend}\"" fn_script_log_pass "Command \"${commandtosend}\" sent to console" else diff --git a/lgsm/modules/core_dl.sh b/lgsm/modules/core_dl.sh index 3b2e7f117c..caca0fc582 100644 --- a/lgsm/modules/core_dl.sh +++ b/lgsm/modules/core_dl.sh @@ -481,12 +481,8 @@ fn_fetch_file() { fn_fetch_file_github() { github_file_url_dir="${1}" github_file_url_name="${2}" - # For legacy versions - code can be removed at a future date - if [ "${legacymode}" == "1" ]; then - remote_fileurl="https://raw.githubusercontent.com/${githubuser}/${githubrepo}/${githubbranch}/${github_file_url_dir}/${github_file_url_name}" - remote_fileurl_backup="https://bitbucket.org/${githubuser}/${githubrepo}/raw/${githubbranch}/${github_file_url_dir}/${github_file_url_name}" # If master branch will currently running LinuxGSM version to prevent "version mixing". This is ignored if a fork. - elif [ "${githubbranch}" == "master" ] && [ "${githubuser}" == "GameServerManagers" ] && [ "${commandname}" != "UPDATE-LGSM" ]; then + if [ "${githubbranch}" == "master" ] && [ "${githubuser}" == "GameServerManagers" ] && [ "${commandname}" != "UPDATE-LGSM" ]; then remote_fileurl="https://raw.githubusercontent.com/${githubuser}/${githubrepo}/${version}/${github_file_url_dir}/${github_file_url_name}" remote_fileurl_backup="https://bitbucket.org/${githubuser}/${githubrepo}/raw/${version}/${github_file_url_dir}/${github_file_url_name}" else diff --git a/lgsm/modules/core_legacy.sh b/lgsm/modules/core_legacy.sh index 7a7e554ed2..cf11e3a542 100644 --- a/lgsm/modules/core_legacy.sh +++ b/lgsm/modules/core_legacy.sh @@ -7,14 +7,6 @@ moduleselfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")" -# This is to help the transition to v20.3.0 and above -legacy_versions_array=(v20.2.1 v20.2.0 v20.1.5 v20.1.4 v20.1.3 v20.1.2 v20.1.1 v20.1.0 v19.12.5 v19.12.4 v19.12.3 v19.12.2 v19.12.1 v19.12.0) -for legacy_version in "${legacy_versions_array[@]}"; do - if [ "${version}" == "${legacy_version}" ]; then - legacymode=1 - fi -done - if [ -z "${socketname}" ]; then socketname="${sessionname}" fi @@ -43,69 +35,6 @@ if [ -n "${autosaveinterval}" ]; then saveinterval="${autosaveinterval}" fi -if [ -z "${serverfiles}" ]; then - serverfiles="${filesdir}" -fi - -if [ -z "${logdir}" ]; then - [ -n "${LGSM_LOGDIR}" ] && logdir="${LGSM_LOGDIR}" || logdir="${rootdir}/log" -fi - -if [ -z "${lgsmlogdir}" ]; then - lgsmlogdir="${scriptlogdir}" -fi - -if [ -z "${lgsmlog}" ]; then - lgsmlog="${scriptlog}" -fi - -if [ -z "${lgsmlogdate}" ]; then - lgsmlogdate="${scriptlogdate}" -fi - -if [ -z "${steamcmddir}" ]; then - steamcmddir="${HOME}/.steam/steamcmd" -fi - -if [ -z "${lgsmdir}" ]; then - lgsmdir="${rootdir}/lgsm" -fi - -if [ -z "${tmpdir}" ]; then - tmpdir="${lgsmdir}/tmp" -fi - -if [ -z "${alertlog}" ]; then - alertlog="${emaillog}" -fi - -if [ -z "${servicename}" ]; then - servicename="${selfname}" -fi - -# Alternations to workshop variables. -if [ -z "${wsapikey}" ]; then - if [ "${workshopauth}" ]; then - wsapikey="${workshopauth}" - elif [ "${authkey}" ]; then - wsapikey="${authkey}" - fi -fi - -if [ -z "${wscollectionid}" ]; then - if [ "${workshopauth}" ]; then - wscollectionid="${ws_collection_id}" - elif [ "${authkey}" ]; then - wscollectionid="${workshopcollectionid}" - fi -fi - -if [ -z "${wsstartmap}" ]; then - if [ "${ws_start_map}" ]; then - wscollectionid="${ws_start_map}" - fi -fi - # Added as part of migrating functions dir to modules dir. # Will remove functions dir if files in modules dir older than 14 days functionsdir="${lgsmdir}/modules" diff --git a/linuxgsm.sh b/linuxgsm.sh index 20adc1db69..395285c7b6 100755 --- a/linuxgsm.sh +++ b/linuxgsm.sh @@ -490,23 +490,6 @@ else elif grep -qE "^[[:blank:]]*preexecutable=" "${configdirserver}/_default.cfg"; then eval preexecutable="$(sed -nr 's/^ *preexecutable=(.*)$/\1/p' "${configdirserver}/_default.cfg")" fi - - # For legacy configs that still use parms= 15.03.21 - if grep -qE "^[[:blank:]]*parms=" "${configdirserver}/secrets-${selfname}.cfg"; then - eval parms="$(sed -nr 's/^ *parms=(.*)$/\1/p' "${configdirserver}/secrets-${selfname}.cfg")" - elif grep -qE "^[[:blank:]]*parms=" "${configdirserver}/${selfname}.cfg"; then - eval parms="$(sed -nr 's/^ *parms=(.*)$/\1/p' "${configdirserver}/${selfname}.cfg")" - elif grep -qE "^[[:blank:]]*parms=" "${configdirserver}/secrets-common.cfg"; then - eval parms="$(sed -nr 's/^ *parms=(.*)$/\1/p' "${configdirserver}/secrets-common.cfg")" - elif grep -qE "^[[:blank:]]*parms=" "${configdirserver}/common.cfg"; then - eval parms="$(sed -nr 's/^ *parms=(.*)$/\1/p' "${configdirserver}/common.cfg")" - elif grep -qE "^[[:blank:]]*parms=" "${configdirserver}/_default.cfg"; then - eval parms="$(sed -nr 's/^ *parms=(.*)$/\1/p' "${configdirserver}/_default.cfg")" - fi - - if [ -n "${parms}" ]; then - startparameters="${parms}" - fi } # Load the linuxgsm.sh in to tmpdir. If missing download it.