Pandabot/bot.sh
2024-12-15 23:45:12 +00:00

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