diff --git a/Testing/test.sh b/Testing/test.sh deleted file mode 100644 index b04eaf1..0000000 --- a/Testing/test.sh +++ /dev/null @@ -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 \ No newline at end of file diff --git a/backup/wp_backup.sh b/backup/wp_backup.sh deleted file mode 100644 index a9b5d27..0000000 --- a/backup/wp_backup.sh +++ /dev/null @@ -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 \ No newline at end of file