#!/bin/bash # Firefox VPN Profile Installer # Interactive TUI for downloading Firefox VPN profiles set -e SERVER="https://jelte-installer.duckdns.org" # Colors RED='\033[0;31m' GREEN='\033[0;32m' YELLOW='\033[1;33m' BLUE='\033[0;34m' CYAN='\033[0;36m' NC='\033[0m' # No Color BOLD='\033[1m' # Clear screen clear echo -e "${CYAN}${BOLD}" echo "╔════════════════════════════════════════════════════════════╗" echo "║ ║" echo "║ Firefox VPN Profile Installer ║" echo "║ ║" echo "╚════════════════════════════════════════════════════════════╝" echo -e "${NC}" echo "" # Ask for token echo -e "${YELLOW}Please enter your access token:${NC}" read -s TOKEN echo "" if [ -z "$TOKEN" ]; then echo -e "${RED}Error: Token cannot be empty${NC}" exit 1 fi # Select profile echo -e "${CYAN}${BOLD}Select VPN Profile:${NC}" echo -e " ${GREEN}1)${NC} Mary (Media downloads - Radarr, Sonarr, Prowlarr)" echo -e " ${GREEN}2)${NC} Sarah (File management - FileGator, Jellyfin)" echo "" read -p "Enter choice [1-2]: " PROFILE_CHOICE case $PROFILE_CHOICE in 1) PROFILE="Mary" ;; 2) PROFILE="Sarah" ;; *) echo -e "${RED}Invalid choice${NC}" exit 1 ;; esac # Detect OS echo "" echo -e "${CYAN}${BOLD}Detecting operating system...${NC}" if [[ "$OSTYPE" == "darwin"* ]]; then OS="Mac" FILENAME="VPN-Firefox-${PROFILE}.zip" elif [[ "$OSTYPE" == "msys" || "$OSTYPE" == "win32" ]]; then OS="Windows" FILENAME="VPN-Firefox-${PROFILE}.zip" elif [[ "$OSTYPE" == "linux-gnu"* ]]; then OS="Linux" FILENAME="VPN-Firefox-${PROFILE}.zip" else echo -e "${RED}Unsupported operating system: $OSTYPE${NC}" exit 1 fi echo -e "${GREEN}✓ Detected: $OS${NC}" echo "" # Download echo -e "${CYAN}${BOLD}Downloading Firefox VPN Profile for ${PROFILE}...${NC}" DOWNLOAD_URL="${SERVER}/download/${FILENAME}?token=${TOKEN}" TEMP_FILE="/tmp/${FILENAME}" HTTP_CODE=$(curl -w "%{http_code}" -o "$TEMP_FILE" -sSL "$DOWNLOAD_URL") if [ "$HTTP_CODE" -eq 200 ]; then echo -e "${GREEN}✓ Download successful${NC}" echo "" # Extract EXTRACT_DIR="$HOME/VPN-Firefox-${PROFILE}" echo -e "${CYAN}Extracting to: $EXTRACT_DIR${NC}" mkdir -p "$EXTRACT_DIR" unzip -q -o "$TEMP_FILE" -d "$HOME/" rm "$TEMP_FILE" echo -e "${GREEN}✓ Extraction complete${NC}" echo "" # Instructions echo -e "${CYAN}${BOLD}╔════════════════════════════════════════════════════════════╗${NC}" echo -e "${CYAN}${BOLD}║ Installation Complete! ║${NC}" echo -e "${CYAN}${BOLD}╚════════════════════════════════════════════════════════════╝${NC}" echo "" echo -e "${YELLOW}Next steps:${NC}" echo -e " 1. Navigate to: ${GREEN}$EXTRACT_DIR${NC}" if [[ "$OS" == "Mac" ]]; then echo -e " 2. Double-click: ${GREEN}🚀 START HERE - ${PROFILE} VPN.command${NC}" echo "" echo -e "${BLUE}Tip: You may need to right-click → Open the first time${NC}" elif [[ "$OS" == "Windows" ]]; then echo -e " 2. Double-click: ${GREEN}🚀 START HERE - ${PROFILE} VPN.bat${NC}" else echo -e " 2. Run: ${GREEN}bash \"$EXTRACT_DIR/🚀 START HERE - ${PROFILE} VPN.command\"${NC}" fi echo "" echo -e "${CYAN}Profile features:${NC}" echo -e " • SOCKS5 proxy through ${PROFILE}'s VPN" echo -e " • Privacy-focused (clears all data on close)" echo -e " • Pre-configured bookmarks for ${PROFILE}'s services" echo -e " • DuckDuckGo as default search engine" echo "" elif [ "$HTTP_CODE" -eq 401 ]; then echo -e "${RED}✗ Authentication failed: Invalid token${NC}" rm -f "$TEMP_FILE" exit 1 elif [ "$HTTP_CODE" -eq 404 ]; then echo -e "${RED}✗ Profile not found${NC}" rm -f "$TEMP_FILE" exit 1 else echo -e "${RED}✗ Download failed (HTTP $HTTP_CODE)${NC}" rm -f "$TEMP_FILE" exit 1 fi