This commit is contained in:
hhftechnologies 2024-11-27 16:03:39 +05:30
commit b36658a0ee
2 changed files with 0 additions and 457 deletions

View file

@ -1,174 +0,0 @@
#!/bin/bash
#-----------------------------------#
# VARIABLES #
#-----------------------------------#
this_script_url="https://git.hhf.technology/hhf/script-management-cloudpanel/raw/branch/main/Testing/test.sh"
this_script_name="Test Script"
formatter_url="https://git.hhf.technology/hhf/TaskFormatter/raw/branch/main/bash_task_formatter/task_formatter.sh"
scriptname=$0
# Initialize success flag
success=0
# Determine the user (use the first argument if provided, otherwise fallback)
USER_TO_RUN_AS="${1:-$SUDO_USER}"
USER_HOME=$(eval echo ~$USER_TO_RUN_AS)
#-----------------------------------#
# FORMATTER #
#-----------------------------------#
# Download and source the formatter with error handling
download_formatter() {
if [ ! -f "task_formatter.sh" ]; then
if ! wget "$formatter_url" --no-check-certificate -O task_formatter.sh > /dev/null 2>&1; then
echo "Error: Failed to download task_formatter.sh"
exit 1
fi
fi
if [ ! -f "task_formatter.sh" ]; then
echo "Error: task_formatter.sh not found after download attempt"
exit 1
fi
# Make the formatter executable
chmod +x task_formatter.sh
# Source the formatter with error checking
source ./task_formatter.sh || { echo "Error: Failed to source task_formatter.sh"; exit 1; }
# Check if print_header is available after sourcing
if ! declare -f print_header > /dev/null; then
echo "Error: print_header function not found after sourcing."
exit 1
fi
}
# Call the download_formatter function
download_formatter
#-----------------------------------#
# FUNCTIONS #
#-----------------------------------#
# Function to update packages
update_upgrade_packages() {
sudo apt-get update > /dev/null 2>&1
echo -e "Packages Updated $CHECK_MARK"
sudo apt-get upgrade -y > /dev/null 2>&1
echo -e "Packaged Upgraded $CHECK_MARK"
sudo apt-get autoremove -y > /dev/null 2>&1
echo -e "Packages Cleaned $CHECK_MARK"
}
example_function_1() {
echo -e "This is example function 1. $CHECK_MARK"
sleep 2
return 0
}
# Example function 2
example_function_2() {
echo "This is example function 2."
sleep 2
echo -e "Done $CHECK_MARK"
sleep 2
return 0
}
# Example function 3 with an error
example_function_3() {
echo -e "This is example function 3 and it will fail. $CROSS_MARK"
sleep 3
return 1
}
ask_reconfigure() {
read -p "Question? (y/n): " choice
case "$choice" in
y|Y ) return 0;;
n|N ) return 1;;
* ) echo "Invalid choice."; ask_reconfigure;;
esac
}
# remove artifacts
remove_script() {
if [ -f "$0" ]; then
echo "Deleted master script..."
rm -- "$0"
fi
if [ -f "task_formatter.sh" ]; then
rm task_formatter.sh
fi
echo -e "Cleaned up $CHECK_MARK"
return 0
}
# Remove created files on Failure
cleanup_files() {
echo -e "Cleaned up $CHECK_MARK"
return 0
}
#-----------------------------------#
# MAIN LOGIC #
#-----------------------------------#
# Check if print_header function exists
if ! command -v print_header >/dev/null 2>&1; then
echo "Error: print_header function not found. Formatter may not be properly sourced."
exit 1
fi
# Print header
print_header "$this_script_name" "$this_script_url"
echo -e "Running as User: $USER_TO_RUN_AS\nUser Home: $USER_HOME\n"
# Run the functions with formatted output
if ! format_output example_function_1 "Example Function 1"; then
cleanup_files
success=1
fi
if ! format_output example_function_2 "Example Function 2"; then
cleanup_files
success=1
fi
if ! format_output example_function_3 "Example Function 3"; then
cleanup_files
success=1
fi
if ! format_output_with_input ask_reconfigure "Test Reconfiguring"; then
cleanup_files
success=1
fi
format_output remove_script "Cleaning up"
# Check if final_message function exists
if ! command -v final_message >/dev/null 2>&1; then
echo "Error: final_message function not found. Formatter may not be properly sourced."
exit 1
fi
# Print final message
final_message() {
local script_name=$1
local success=$2
if [[ $success -eq 0 ]]; then
log "${CHECK_MARK} $script_name completed successfully."
else
log "${CROSS_MARK} $script_name encountered errors."
fi
}
# Exit with appropriate status
exit $success

View file

@ -1,283 +0,0 @@
#!/bin/bash
#-----------------------------------#
# VARIABLES #
#-----------------------------------#
this_script_url="https://git.hhf.technology/hhf/script-management-cloudpanel/raw/branch/main/backup/wp_backup.sh"
this_script_name="WordPress Backup Script"
formatter_url="https://git.hhf.technology/hhf/TaskFormatter/raw/branch/main/bash_task_formatter/task_formatter.sh"
scriptname=$0
# Initialize success flag
success=0
# Determine the user (use the first argument if provided, otherwise fallback)
USER_TO_RUN_AS="${1:-$SUDO_USER}"
USER_HOME=$(eval echo ~$USER_TO_RUN_AS)
#-----------------------------------#
# FORMATTER #
#-----------------------------------#
# Download and source the formatter with error handling
download_formatter() {
if [ ! -f "task_formatter.sh" ]; then
if ! wget "$formatter_url" --no-check-certificate -O task_formatter.sh > /dev/null 2>&1; then
echo "Error: Failed to download task_formatter.sh"
exit 1
fi
fi
if [ ! -f "task_formatter.sh" ]; then
echo "Error: task_formatter.sh not found after download attempt"
exit 1
fi
chmod +x task_formatter.sh
source ./task_formatter.sh || { echo "Error: Failed to source task_formatter.sh"; exit 1; }
if ! declare -f print_header > /dev/null; then
echo "Error: print_header function not found after sourcing."
exit 1
fi
}
# Call the download_formatter function
download_formatter
#-----------------------------------#
# FUNCTIONS #
#-----------------------------------#
# Function to collect WordPress and backup variables
collect_variables() {
# Clear any existing values
unset DATABASE WP_DIR SCRIPTS_DIR S3_BUCKET_NAME S3_FOLDER_NAME
echo "Please provide the following information:"
echo "----------------------------------------"
# Database name
echo -n "Enter database name: "
read -r DATABASE
echo "Received database name: $DATABASE"
# WordPress directory
echo -n "Enter WordPress installation path (e.g., /home/username/htdocs/domain.com): "
read -r WP_DIR
echo "Received WordPress path: $WP_DIR"
# Derive WordPress content directories
UPLOADS_DIR="${WP_DIR}/wp-content/uploads"
THEMES_DIR="${WP_DIR}/wp-content/themes"
PLUGINS_DIR="${WP_DIR}/wp-content/plugins"
WPCONTENT_DIR="${WP_DIR}/wp-content"
echo -e "\nBackup Locations:"
echo -n "Enter scripts directory path (e.g., /home/username/scripts): "
read -r SCRIPTS_DIR
echo "Received scripts path: $SCRIPTS_DIR"
# Backup directory
BACKUP_DIR="${SCRIPTS_DIR}/backups"
echo "Backup directory will be: ${BACKUP_DIR}"
echo -e "\nS3 Configuration:"
# S3cmd path
S3_CMD="/usr/local/bin/s3cmd"
if [ ! -f "$S3_CMD" ]; then
echo -n "s3cmd not found at default location. Enter s3cmd path: "
read -r S3_CMD
echo "Received s3cmd path: $S3_CMD"
fi
# S3 bucket information
echo -n "Enter S3 bucket name (e.g., my-bucket): "
read -r S3_BUCKET_NAME
echo "Received bucket name: $S3_BUCKET_NAME"
echo -n "Enter S3 folder name (e.g., backups): "
read -r S3_FOLDER_NAME
echo "Received folder name: $S3_FOLDER_NAME"
S3_BUCKET="s3://${S3_BUCKET_NAME}/${S3_FOLDER_NAME}/"
# Current date for backup naming
CURRENT_DATE=$(date +"%Y-%m-%d")
# Display collected information
echo -e "\nSummary of collected information:"
echo "----------------------------------------"
echo "Database Name: $DATABASE"
echo "WordPress Directory: $WP_DIR"
echo "Scripts Directory: $SCRIPTS_DIR"
echo "Backup Directory: $BACKUP_DIR"
echo "S3 Bucket Path: $S3_BUCKET"
# Confirm information
echo -n "Is this information correct? (y/n): "
read -r confirm
if [[ $confirm != [Yy]* ]]; then
echo "Please run the script again with correct information."
return 1
fi
# Export variables so they're available to other functions
export DATABASE WP_DIR UPLOADS_DIR THEMES_DIR PLUGINS_DIR WPCONTENT_DIR
export BACKUP_DIR SCRIPTS_DIR CURRENT_DATE S3_CMD S3_BUCKET
return 0
}
# Current date for backup naming
CURRENT_DATE=$(date +"%Y-%m-%d")
# Display collected information
echo -e "\nSummary of collected information:"
echo "----------------------------------------"
echo "Database Name: $DATABASE"
echo "WordPress Directory: $WP_DIR"
echo "Scripts Directory: $SCRIPTS_DIR"
echo "Backup Directory: $BACKUP_DIR"
echo "S3 Bucket Path: $S3_BUCKET"
# Confirm information
read -p "Is this information correct? (y/n): " confirm
if [[ $confirm != [Yy]* ]]; then
echo "Please run the script again with correct information."
return 1
fi
return 0
}
# Function to check WordPress installation
check_wordpress() {
if [ ! -d "${WP_DIR}" ]; then
echo "Directory ${WP_DIR} does not exist"
return 1
fi
if [ ! -f "${WP_DIR}/wp-config.php" ]; then
echo "No wp-config.php in ${WP_DIR}"
return 1
fi
echo "Found wp-config.php in ${WP_DIR}"
return 0
}
# Function to prepare backup directory
prepare_backup_dir() {
mkdir -p "$BACKUP_DIR"
rm -rf "${BACKUP_DIR:?}/*"
echo "Created and cleaned ${BACKUP_DIR}"
return 0
}
# Function to backup database
backup_database() {
echo "Creating Database dump..."
if ! clpctl db:export --databaseName="${DATABASE}" --file="$BACKUP_DIR/${DATABASE}.sql.gz"; then
echo "Database backup failed"
return 1
fi
echo "Database dump created at ${BACKUP_DIR}/${DATABASE}.sql.gz"
return 0
}
# Function to backup WordPress files
backup_wordpress_files() {
echo "Creating WordPress file backups..."
# Backup WordPress core files
tar -cjf "${BACKUP_DIR}/wp_files.tar.bz2" --exclude='wp-content' "${WP_DIR}"
# Backup wp-content excluding specific directories
tar -cjf "${BACKUP_DIR}/others.tar.bz2" \
--exclude='themes' --exclude='plugins' --exclude='uploads' \
--exclude='cache' --exclude='updraft' --exclude='backups-dup-pro' \
--exclude='backups-dup' --exclude='ai1wm-backups' "${WPCONTENT_DIR}"
# Backup specific directories
tar -cjf "${BACKUP_DIR}/uploads.tar.bz2" "${UPLOADS_DIR}"
tar -cjf "${BACKUP_DIR}/themes.tar.bz2" "${THEMES_DIR}"
tar -cjf "${BACKUP_DIR}/plugins.tar.bz2" "${PLUGINS_DIR}"
return 0
}
# Function to upload to S3
upload_to_s3() {
mv "${BACKUP_DIR}" "${SCRIPTS_DIR}/${CURRENT_DATE}"
echo "Uploading backup to S3..."
if ! $S3_CMD sync "${SCRIPTS_DIR}/${CURRENT_DATE}" "${S3_BUCKET}"; then
echo "S3 upload failed"
return 1
fi
return 0
}
# Function to clean up
cleanup() {
echo "Removing local files..."
rm -rf "${SCRIPTS_DIR:?}/${CURRENT_DATE}"
return 0
}
#-----------------------------------#
# MAIN LOGIC #
#-----------------------------------#
# Check if print_header function exists
if ! command -v print_header >/dev/null 2>&1; then
echo "Error: print_header function not found. Formatter may not be properly sourced."
exit 1
fi
# Print header
print_header "$this_script_name" "$this_script_url"
echo -e "Running as User: $USER_TO_RUN_AS\nUser Home: $USER_HOME\n"
# Collect variables from user
if ! format_output collect_variables "Collecting Configuration Information"; then
success=1
exit $success
fi
# Run the backup functions with formatted output
if ! format_output check_wordpress "Checking WordPress Installation"; then
success=1
exit $success
fi
if ! format_output prepare_backup_dir "Preparing Backup Directory"; then
success=1
exit $success
fi
if ! format_output backup_database "Backing up Database"; then
success=1
exit $success
fi
if ! format_output backup_wordpress_files "Backing up WordPress Files"; then
success=1
exit $success
fi
if ! format_output upload_to_s3 "Uploading to S3"; then
success=1
exit $success
fi
if ! format_output cleanup "Cleaning up temporary files"; then
success=1
exit $success
fi
# Print final message
final_message "$this_script_name" "$success"
# Exit with appropriate status
exit $success