Skip to content
Merged

Zurg #961

Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
27 changes: 19 additions & 8 deletions mods/scripts/menu.sh
Original file line number Diff line number Diff line change
Expand Up @@ -50,14 +50,18 @@ echo "Security check passed. Proceeding with the script..."
# Configuration file path
CONFIG_FILE="/pg/config/config.cfg"

# Additional ANSI color codes
ORANGE="\033[0;33m"
YELLOW="\033[1;33m"
GREEN="\033[0;32m"
CYAN="\033[0;36m"
BLUE="\033[0;34m"
PURPLE="\033[0;35m"
BOLD="\033[1m"
# ANSI color codes for styling output
CYAN='\033[0;36m'
GREEN='\033[0;32m'
RED='\033[0;31m'
YELLOW='\033[1;33m'
BLUE='\033[0;34m'
ORANGE='\033[0;33m'
PURPLE='\033[0;35m'
HOTPINK='\033[38;5;205m'
NC='\033[0m' # No color
BOLD='\033[1m'
UNDERLINE='\033[4m'

# Clear the screen at the start
clear
Expand Down Expand Up @@ -128,6 +132,11 @@ server_cloud_deployments() {
bash /pg/scripts/cloud_server.sh
}

# Function for Server Cloud Deployments
zurg_interface() {
bash /pg/scripts/zurg/menu.sh
}

# Function for Options Menu
options_menu() {
bash /pg/scripts/options.sh
Expand All @@ -147,6 +156,7 @@ main_menu() {

# Display menu options with bold colored letters
echo -e "[${YELLOW}${BOLD}A${NC}] Apps Management"
echo -e "[${HOTPINK}${BOLD}D${NC}] Debrid/Zurg Deployment (Beta)"
echo -e "[${CYAN}${BOLD}C${NC}] CloudFlare Tunnel & Traefik"
echo -e "[${GREEN}${BOLD}S${NC}] Server: Cloud Deployments"
echo -e "[${PURPLE}${BOLD}U${NC}] PG: Update Interface"
Expand All @@ -160,6 +170,7 @@ main_menu() {
# Process user input
case ${choice,,} in
a) apps_management ;;
d) zurg_interface ;;
s) server_cloud_deployments ;;
c) domain_interface ;;
u) update_pg_interface ;;
Expand Down
206 changes: 206 additions & 0 deletions mods/scripts/zurg/menu.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,206 @@
#!/bin/bash

# ANSI color codes for styling output
CYAN='\033[0;36m'
GREEN='\033[0;32m'
RED='\033[0;31m'
YELLOW='\033[0;33m'
BLUE='\033[0;34m'
NC='\033[0m' # No color
BOLD='\033[1m'
UNDERLINE='\033[4m'

# Function to check if the repository is cloned
check_repo_status() {
if [ -d "/pg/zurg" ]; then
repo_status="${GREEN}[Cloned]${NC}"
return 0 # Repository is cloned
else
repo_status="${RED}[Not Cloned]${NC}"
return 1 # Repository is not cloned
fi
}

# Function to check if token is set in /pg/config/debrid.cfg
check_token_status() {
if [ -f "/pg/config/debrid.cfg" ]; then
token_line=$(grep '^token:' /pg/config/debrid.cfg)
if [ -n "$token_line" ]; then
token_value=$(echo $token_line | cut -d' ' -f2-)
if [ -n "$token_value" ] && [ ${#token_value} -ge 10 ]; then
token_status="${GREEN}[Set]${NC}"
return 0 # Token is set
fi
fi
fi
token_status="${RED}[Not Set]${NC}"
return 1 # Token is not set
}

# Function to check if docker containers are running
check_docker_status() {
if docker ps --filter "name=zurg" --format '{{.Names}}' | grep -q 'zurg'; then
docker_status="${GREEN}[Running]${NC}"
else
docker_status="${RED}[Not Running]${NC}"
fi
}

# Main function to display menu and handle user choices
main_menu() {
while true; do
clear
check_repo_status
check_token_status
check_docker_status

echo -e "${CYAN}${BOLD}PG Zurg Interface${NC}"
echo -e "${BLUE}-------------------------------${NC}"
echo -e "[C] Clone repository to /pg/zurg ${repo_status}"
if check_repo_status; then
echo -e "[T] Real Debrid API Token ${token_status}"
fi
if check_token_status; then
echo -e "[R] Run docker compose up -d ${docker_status}"
fi
echo -e "[D] Destroy & Remove All Data"
echo -e "[Z] Exit"
echo -e "${BLUE}-------------------------------${NC}"
read -p "Select an Option > " choice
case $choice in
[Cc])
clone_repository
;;
[Tt])
if check_repo_status; then
enter_token
else
echo -e "${RED}Please clone the repository first.${NC}"
read -p "Press [ENTER] to continue..."
fi
;;
[Rr])
if check_token_status; then
run_docker_compose
else
echo -e "${RED}Please set a valid token first.${NC}"
read -p "Press [ENTER] to continue..."
fi
;;
[Dd])
destroy_and_remove
;;
[Zz])
exit 0
;;
*)
echo -e "${RED}Invalid option. Please try again.${NC}"
read -p "Press [ENTER] to continue..."
;;
esac
done
}

# Function to clone repository to /pg/zurg
clone_repository() {
echo -e "${YELLOW}Cloning repository to /pg/zurg...${NC}"
sudo mkdir -p /pg
if [ -d "/pg/zurg" ]; then
echo -e "${GREEN}Repository already cloned.${NC}"
else
git clone https://github.com/debridmediamanager/zurg-testing.git /pg/zurg
if [ $? -eq 0 ]; then
echo -e "${GREEN}Repository cloned successfully.${NC}"
automate_setup # Call to automate the setup after cloning
else
echo -e "${RED}Failed to clone repository.${NC}"
fi
fi
read -p "Press [ENTER] to continue..."
}

# Function to enter token and update config files
enter_token() {
echo -e "${YELLOW}Updating config files with your Real Debrid API Token...${NC}"

# Ensure both config files exist
sudo mkdir -p /pg/config
touch /pg/config/debrid.cfg

if [ ! -f "/pg/zurg/config.yml" ]; then
echo -e "${RED}config.yml not found in /pg/zurg. Please clone the repository first.${NC}"
read -p "Press [ENTER] to continue..."
return
fi

read -p "Please enter your Real Debrid API Token (at least 10 characters): " USER_TOKEN

if [ ${#USER_TOKEN} -ge 10 ]; then
# Update both files
sed -i "s/^token:.*/token: $USER_TOKEN/" /pg/zurg/config.yml
echo "token: $USER_TOKEN" | sudo tee /pg/config/debrid.cfg > /dev/null
echo -e "${GREEN}Token updated in config.yml and debrid.cfg.${NC}"
else
echo -e "${RED}Token must be at least 10 characters long. Please try again.${NC}"
fi
read -p "Press [ENTER] to continue..."
}

# Function to run docker compose up -d
run_docker_compose() {
echo -e "${YELLOW}Running docker compose up -d...${NC}"
if [ -f "/pg/zurg/docker-compose.yml" ]; then
cd /pg/zurg
docker compose up -d
if [ $? -eq 0 ]; then
echo -e "${GREEN}Docker containers started successfully.${NC}"
echo ""
echo -e "${YELLOW}Access Debrid Drive via /mnt/zurg${NC}"
else
echo -e "${RED}Failed to start docker containers.${NC}"
fi
else
echo -e "${RED}docker-compose.yml not found in /pg/zurg.${NC}"
fi
echo -e "Press [ENTER] to continue..."
read
}

# Function to destroy and remove all data
destroy_and_remove() {
echo -e "${RED}${BOLD}WARNING: This will destroy and remove all Zurg data.${NC}"
read -p "Are you sure you want to continue? (y/N) " confirm
if [[ $confirm =~ ^[Yy]$ ]]; then
echo -e "${YELLOW}Stopping and removing Docker containers...${NC}"
docker stop zurg rclone
docker rm zurg rclone
echo -e "${YELLOW}Removing all data from /pg/zurg/...${NC}"
sudo rm -rf /pg/zurg/
echo -e "${YELLOW}Removing token from /pg/config/debrid.cfg...${NC}"
sudo rm -f /pg/config/debrid.cfg
echo -e "${GREEN}All Zurg data has been destroyed and removed.${NC}"
else
echo -e "${YELLOW}Operation cancelled.${NC}"
fi
read -p "Press [ENTER] to continue..."
}

# Automated setup: Create /mnt/zurg, set ownership and permissions
automate_setup() {
echo -e "${YELLOW}Setting up directories, ownership, and permissions...${NC}"

# Create /mnt/zurg directory if it doesn't exist
if [ ! -d "/mnt/zurg" ]; then
sudo mkdir -p /mnt/zurg
echo -e "${GREEN}/mnt/zurg created.${NC}"
fi

# Set ownership to 1000:1000 and chmod +x for /pg/zurg and /mnt/zurg
sudo chown -R 1000:1000 /pg/zurg
sudo chown -R 1000:1000 /mnt/zurg
sudo chmod -R +x /pg/zurg
echo -e "${GREEN}Ownership and permissions set for /pg/zurg and /mnt/zurg.${NC}"
}

# Start the script
main_menu