#!/bin/bash runReinstall() { isHeader "Reinstalling LibrePortal" # Check if this is a local installation if [[ "$CFG_INSTALL_MODE" == "local" ]]; then echo "NOTICE: Local installation detected - cannot reinstall from Git." echo "To update a local installation, please update the files manually and rerun the init script." echo "" echo "Alternatively, you can switch to Git installation by:" echo "1. Updating CFG_INSTALL_MODE to 'git' in config" echo "2. Setting Git credentials" echo "3. Running reinstall again" else gitCheckGitDetails; # Reset git local result=$(runAsManager rm -rf $script_dir) checkSuccess "Deleting all Git files" local result=$(createFolders "loud" $sudo_user_name "$script_dir") checkSuccess "Create the directory if it doesn't exist" # Validate non-empty input validate_input() { local input="$1" local prompt="$2" local error_message="${3:-Please enter a valid input.}" while [[ -z "$input" ]]; do read -p "$prompt" input if [[ -z "$input" ]]; then echo "$error_message" fi done echo "$input" } # Git User if [[ -z "$CFG_GIT_USER" ]] || [[ "$CFG_GIT_USER" == "changeme" ]]; then CFG_GIT_USER=$(validate_input "" "Enter the Git username: " "Git username cannot be empty.") updateConfigOption "CFG_GIT_USER" "$CFG_GIT_USER" fi # Git Token if [[ -z "$CFG_GIT_KEY" ]] || [[ "$CFG_GIT_KEY" == "changeme" ]]; then CFG_GIT_KEY=$(validate_input "" "Enter your Git token: " "Git token cannot be empty.") updateConfigOption "CFG_GIT_KEY" "$CFG_GIT_KEY" fi # Git URL if [[ -z "$CFG_GIT_URL" ]] || [[ "$CFG_GIT_URL" == "changeme" ]]; then CFG_GIT_URL=$(validate_input "" "Enter the Git repository URL: " "Git URL cannot be empty.") updateConfigOption "CFG_GIT_URL" "$CFG_GIT_URL" fi # Strip http:// or https:// and .git from GIT_URL. CLEAN_GIT_URL=$(echo "$CFG_GIT_URL" | sed -E 's~^(https?://)?(.+?)\.git?$~\2~') # Create authenticated URLs AUTH_HTTPS_REPO_URL="https://${CFG_GIT_USER}:${CFG_GIT_KEY}@${CLEAN_GIT_URL}.git" AUTH_HTTP_REPO_URL="http://${CFG_GIT_USER}:${CFG_GIT_KEY}@${CLEAN_GIT_URL}.git" # Try HTTPS first if runAsManager git clone -q "$AUTH_HTTPS_REPO_URL" "/docker/install" 2>/dev/null; then runSystem cp -f /docker/install/init.sh /root/ echo "SUCCESS: Git repository cloned via HTTPS into /docker/install." echo "" echo "SUCCESS: Reinstallation complete, you can now run the "libreportal run" command." echo "" else # If HTTPS fails, try HTTP if runAsManager git clone -q "$AUTH_HTTP_REPO_URL" "/docker/install" 2>/dev/null; then runSystem cp -f /docker/install/init.sh /root/ echo "SUCCESS: Git repository cloned via HTTP into /docker/install." echo "" echo "SUCCESS: Reinstallation complete, you can now run the "libreportal run" command." echo "" else isError " Authentication failed. Please check your credentials." exit 1; fi fi fi }