184 lines
4.6 KiB
Bash
Executable file
184 lines
4.6 KiB
Bash
Executable file
#!/bin#!/bin/bash
|
|
|
|
# Get the current timestamp for logging or unique identifier
|
|
startDate=$(date "+%Y%m%d%H%M%S")
|
|
|
|
# Log file for all actions
|
|
log_file="/var/log/pandabot.log"
|
|
|
|
# Function to log messages to both console and log file with timestamp
|
|
log_message() {
|
|
local message=$1
|
|
local timestamp=$(date '+%Y-%m-%d %H:%M:%S')
|
|
|
|
# Log to console
|
|
echo "$timestamp - $message"
|
|
|
|
# Log to file
|
|
echo "$timestamp - $message" >> "$log_file"
|
|
}
|
|
|
|
# Source external bot configuration and utility functions
|
|
. inc/sh/inc.bot.sh
|
|
|
|
# Define various bot service paths and session files
|
|
bot_root=$(pwd)
|
|
bot_pid="${bot_root}/log/tmp/pandabot.pid"
|
|
madeline_session="${bot_root}/session.madeline"
|
|
madeline_pid=$(ps -ef | grep "${madeline_session}" | grep -v grep | awk '{print $2}')
|
|
apache_pid="${bot_root}/log/tmp/httpd.pid"
|
|
fpm_pid="${bot_root}/log/tmp/php-fpm.pid"
|
|
|
|
# Configuration file for bot and services
|
|
pandabotconf="${bot_root}/conf/pandabot.conf"
|
|
services="bot|web|apache|fpm|madeline|"
|
|
|
|
# Check if pandabot.conf exists before attempting to read
|
|
if [ ! -f "$pandabotconf" ]; then
|
|
log_message "ERROR: pandabot.conf not found at $pandabotconf"
|
|
exit 2
|
|
fi
|
|
|
|
# Get the wait timer from the configuration file
|
|
waittimer=$(getpandabotconf "${pandabotconf}" "botsh_restart_wait_timer")
|
|
if [ $? -ne 0 ]; then
|
|
log_message "ERROR: botsh_restart_wait_timer not configured @ ${pandabotconf}"
|
|
exit 2
|
|
fi
|
|
|
|
# Check if madeline session file exists before trying to use it
|
|
if [ ! -f "$madeline_session" ]; then
|
|
log_message "ERROR: Madeline session file not found at $madeline_session"
|
|
exit 2
|
|
fi
|
|
|
|
# Ensure that at least one argument is provided
|
|
if [ $# -eq 0 ]; then
|
|
bot_sh_usage
|
|
exit 1
|
|
fi
|
|
|
|
# Process command line arguments and options
|
|
OPTIND=2
|
|
while getopts "s:" arg; do
|
|
case "${arg}" in
|
|
s) service=${OPTARG} ;; # Set the service if -s option is used
|
|
esac
|
|
done
|
|
|
|
# Check if the specified service is valid
|
|
if [ ! -z "${service}" ]; then
|
|
out=$(checkservice "${service}" "${services}")
|
|
if [ $? -ne 0 ]; then
|
|
log_message "ERROR: Service '${service}' not found in the list: ${services}"
|
|
bot_sh_usage
|
|
exit 4
|
|
fi
|
|
else
|
|
service="all" # Default to all services if no specific service is given
|
|
fi
|
|
|
|
# Main logic for managing services based on the command
|
|
case "$1" in
|
|
"start")
|
|
start_service "${service}"
|
|
log_message "Started service: ${service}"
|
|
;;
|
|
|
|
"stop")
|
|
stop_service "${service}"
|
|
log_message "Stopped service: ${service}"
|
|
;;
|
|
|
|
"restart")
|
|
stop_service "${service}"
|
|
log_message "Stopped service: ${service}"
|
|
echo "Wait ${waittimer} seconds"
|
|
|
|
# Validate waittimer (ensure it's a positive integer)
|
|
if ! [[ "${waittimer}" =~ ^[0-9]+$ ]] || [ "${waittimer}" -le 0 ]; then
|
|
log_message "ERROR: Invalid waittimer value in ${pandabotconf}. Must be a positive integer."
|
|
exit 3
|
|
fi
|
|
sleep "${waittimer}"
|
|
start_service "${service}"
|
|
log_message "Restarted service: ${service}"
|
|
;;
|
|
|
|
"setuptg")
|
|
echo "Setting up TG for service: ${service}"
|
|
log_message "Setting up TG for service: ${service}"
|
|
bin/setuptg.php
|
|
;;
|
|
|
|
"status")
|
|
status_service "${service}"
|
|
log_message "Checked status of service: ${service}"
|
|
;;
|
|
|
|
*)
|
|
# Default case: show usage if no valid argument is given
|
|
bot_sh_usage
|
|
log_message "ERROR: Invalid argument provided"
|
|
;;
|
|
esac
|
|
|
|
/bash
|
|
startDate=`date "+%Y%m%d%H%M%S"`;
|
|
|
|
. inc/sh/inc.bot.sh
|
|
|
|
bot_root=`pwd`
|
|
bot_pid=${bot_root}/log/tmp/pandabot.pid
|
|
madeline_session=${bot_root}/session.madeline
|
|
madeline_pid=`ps -ef | grep ${madeline_session} | grep -v grep | awk '{print $2}'`
|
|
apache_pid=${bot_root}/log/tmp/httpd.pid
|
|
fpm_pid=${bot_root}/log/tmp/php-fpm.pid
|
|
|
|
pandabotconf=${bot_root}/conf/pandabot.conf
|
|
services="bot|web|apache|fpm|madeline|";
|
|
|
|
waittimer=`getpandabotconf "${pandabotconf}" "botsh_restart_wait_timer"`
|
|
[ $? -ne 0 ] && echo "ERR: botsh_restart_wait_timer not configured @ ${pandabotconf}" && exit 1
|
|
|
|
[ $# -eq 0 ] && bot_sh_usage && exit 1
|
|
|
|
OPTIND=2;
|
|
while getopts "s:" arg; do
|
|
case "${arg}" in
|
|
s) service=${OPTARG} ;;
|
|
esac
|
|
done
|
|
|
|
if [ ! -z "${service}" ]; then
|
|
out=`checkservice "${service}" "${services}"`
|
|
[ $? -ne 0 ] && echo "service: ${out} not found" && bot_sh_usage && exit 1
|
|
else
|
|
service="all"
|
|
fi
|
|
|
|
case "$1" in
|
|
"start")
|
|
start_service "${service}"
|
|
;;
|
|
"stop")
|
|
stop_service "${service}"
|
|
;;
|
|
"restart")
|
|
stop_service "${service}"
|
|
echo "wait ${waittimer} seconds"
|
|
sleep ${waittimer}
|
|
start_service "${service}"
|
|
;;
|
|
"setuptg")
|
|
echo "${service}"
|
|
bin/setuptg.php
|
|
;;
|
|
"status")
|
|
status_service "${service}"
|
|
;;
|
|
*)
|
|
bot_sh_usage
|
|
;;
|
|
esac
|
|
|