#!/bin/bash # eBesucher Addon Installer for macOS/Linux # Laedt Firefox ESR Addon herunter und startet Firefox mit vorkonfiguriertem Profil # # Ausfuehrung: # curl -sL https://ebesucher.de/addon/install.sh | bash # Oder lokal: # chmod +x install-addon-macos.sh && ./install-addon-macos.sh set -e # Farben fuer Output RED='\033[0;31m' GREEN='\033[0;32m' CYAN='\033[0;36m' YELLOW='\033[1;33m' NC='\033[0m' # No Color # Konfiguration EBESUCHER_DIR="$HOME/.ebesucher" PROFILE_DIR="$EBESUCHER_DIR/firefox-profile" ADDON_PATH="$EBESUCHER_DIR/ebesucher-addon.xpi" ADDON_URL="https://ebesucher.de/addon/download" ETAG_FILE="$EBESUCHER_DIR/.addon-etag" # Betriebssystem erkennen OS="$(uname -s)" status() { echo -e "${CYAN}[eBesucher]${NC} $1" } success() { echo -e "${GREEN}[OK]${NC} $1" } error() { echo -e "${RED}[FEHLER]${NC} $1" } # 1. Verzeichnisse erstellen status "Pruefe eBesucher Verzeichnis..." mkdir -p "$EBESUCHER_DIR" mkdir -p "$PROFILE_DIR" success "Verzeichnis: $EBESUCHER_DIR" # 2. Firefox ESR finden oder installieren status "Suche Firefox..." FIREFOX_PATH="" if [ "$OS" = "Darwin" ]; then # macOS FIREFOX_CANDIDATES=( "/Applications/Firefox.app/Contents/MacOS/firefox" "/Applications/Firefox ESR.app/Contents/MacOS/firefox" "$HOME/Applications/Firefox.app/Contents/MacOS/firefox" "$HOME/Applications/Firefox ESR.app/Contents/MacOS/firefox" ) else # Linux FIREFOX_CANDIDATES=( "/usr/bin/firefox" "/usr/bin/firefox-esr" "/usr/local/bin/firefox" "/snap/bin/firefox" "$HOME/.local/bin/firefox" ) fi for path in "${FIREFOX_CANDIDATES[@]}"; do if [ -x "$path" ]; then FIREFOX_PATH="$path" break fi done # Falls Firefox nicht gefunden, versuche automatische Installation if [ -z "$FIREFOX_PATH" ]; then status "Firefox nicht gefunden - versuche automatische Installation..." if [ "$OS" = "Darwin" ]; then # macOS: Versuche Homebrew if command -v brew &> /dev/null; then status "Installiere Firefox via Homebrew..." brew install --cask firefox # Suche erneut for path in "${FIREFOX_CANDIDATES[@]}"; do if [ -x "$path" ]; then FIREFOX_PATH="$path" break fi done if [ -n "$FIREFOX_PATH" ]; then success "Firefox erfolgreich installiert!" fi fi else # Linux: Versuche apt oder snap if command -v apt-get &> /dev/null; then status "Installiere Firefox ESR via apt..." sudo apt-get update && sudo apt-get install -y firefox-esr if [ -x "/usr/bin/firefox-esr" ]; then FIREFOX_PATH="/usr/bin/firefox-esr" success "Firefox ESR erfolgreich installiert!" fi elif command -v snap &> /dev/null; then status "Installiere Firefox via snap..." sudo snap install firefox if [ -x "/snap/bin/firefox" ]; then FIREFOX_PATH="/snap/bin/firefox" success "Firefox erfolgreich installiert!" fi fi fi # Falls immer noch nicht gefunden if [ -z "$FIREFOX_PATH" ]; then echo "" echo -e "${YELLOW}Firefox konnte nicht automatisch installiert werden.${NC}" echo -e "${YELLOW}Bitte installiere Firefox manuell:${NC}" echo "" if [ "$OS" = "Darwin" ]; then echo -e "${CYAN}brew install --cask firefox${NC}" echo "oder von: https://www.mozilla.org/de/firefox/enterprise/" else echo -e "${CYAN}sudo apt install firefox-esr${NC}" echo "oder von: https://www.mozilla.org/de/firefox/enterprise/" fi echo "" echo "Nach der Installation, fuehre dieses Script erneut aus." exit 1 fi fi success "Firefox gefunden: $FIREFOX_PATH" # 3. Addon herunterladen (nur wenn noetig) status "Pruefe Addon-Version..." NEEDS_DOWNLOAD=true SERVER_VERSION="" # Pruefe Server-Version (ETag oder Last-Modified) if command -v curl &> /dev/null; then HEADERS=$(curl -sI "$ADDON_URL" 2>/dev/null) SERVER_ETAG=$(echo "$HEADERS" | grep -i "^etag:" | awk '{print $2}' | tr -d '\r\n"') SERVER_LASTMOD=$(echo "$HEADERS" | grep -i "^last-modified:" | cut -d: -f2- | tr -d '\r\n') # Verwende ETag wenn verfuegbar, sonst Last-Modified if [ -n "$SERVER_ETAG" ]; then SERVER_VERSION="$SERVER_ETAG" elif [ -n "$SERVER_LASTMOD" ]; then SERVER_VERSION="$SERVER_LASTMOD" fi fi # Vergleiche mit lokaler Version if [ -f "$ADDON_PATH" ] && [ -f "$ETAG_FILE" ]; then LOCAL_VERSION=$(cat "$ETAG_FILE" 2>/dev/null | tr -d '\r\n') if [ -n "$SERVER_VERSION" ] && [ "$LOCAL_VERSION" = "$SERVER_VERSION" ]; then NEEDS_DOWNLOAD=false success "Addon ist aktuell" else status "Neue Version verfuegbar" fi fi if [ "$NEEDS_DOWNLOAD" = true ]; then status "Lade Addon herunter..." if command -v curl &> /dev/null; then curl -sL "$ADDON_URL" -o "$ADDON_PATH" elif command -v wget &> /dev/null; then wget -q "$ADDON_URL" -O "$ADDON_PATH" else error "Weder curl noch wget gefunden!" exit 1 fi # Speichere Version (ETag oder Last-Modified) fuer zukuenftige Pruefung if [ -n "$SERVER_VERSION" ]; then echo -n "$SERVER_VERSION" > "$ETAG_FILE" fi success "Addon heruntergeladen" fi # 4. Firefox-Profil konfigurieren status "Konfiguriere Firefox-Profil..." cat > "$PROFILE_DIR/user.js" << 'EOF' // ============================================================ // eBesucher Firefox ESR Profil Konfiguration // Optimiert fuer Surfbar: Werbung, Videos, Drittanbieter-Content // Automatisch generiert - nicht manuell bearbeiten // ============================================================ // === UNSIGNED ADDONS (nur Firefox ESR) === user_pref("xpinstall.signatures.required", false); user_pref("extensions.autoDisableScopes", 0); user_pref("extensions.enabledScopes", 15); // === COOKIES: Alle Drittanbieter-Cookies erlauben === user_pref("network.cookie.cookieBehavior", 0); // 0 = Alle Cookies erlauben user_pref("network.cookie.thirdparty.sessionOnly", false); user_pref("network.cookie.thirdparty.nonsecureSessionOnly", false); user_pref("privacy.firstparty.isolate", false); // Keine Cookie-Isolation // === AUTOPLAY: Videos und Audio automatisch abspielen === user_pref("media.autoplay.default", 0); // 0 = Alles erlauben user_pref("media.autoplay.blocking_policy", 0); // Erlauben nach Interaktion user_pref("media.autoplay.allow-extension-background-pages", true); user_pref("media.autoplay.block-event.enabled", false); // === TRACKING PROTECTION: Komplett deaktiviert === user_pref("privacy.trackingprotection.enabled", false); user_pref("privacy.trackingprotection.pbmode.enabled", false); user_pref("privacy.trackingprotection.socialtracking.enabled", false); user_pref("privacy.trackingprotection.cryptomining.enabled", false); user_pref("privacy.trackingprotection.fingerprinting.enabled", false); user_pref("browser.contentblocking.category", "custom"); user_pref("privacy.annotate_channels.strict_list.enabled", false); // === ENHANCED TRACKING PROTECTION: Deaktiviert === user_pref("browser.contentblocking.enabled", false); user_pref("privacy.socialtracking.block_cookies.enabled", false); user_pref("privacy.partition.network_state.ocsp_cache", false); // === POPUPS: Fuer Werbung erlauben === user_pref("dom.disable_open_during_load", false); user_pref("dom.popup_allowed_events", "change click dblclick auxclick mousedown mouseup pointerdown pointerup notificationclick reset submit touchend contextmenu"); // === MIXED CONTENT: HTTP in HTTPS erlauben (aeltere Werbeseiten) === user_pref("security.mixed_content.block_active_content", false); user_pref("security.mixed_content.block_display_content", false); // === REFERRER: Nicht senden (Privatsphaere) === user_pref("network.http.referer.XOriginPolicy", 2); // 2 = Nur same-origin (kein cross-site Referrer) user_pref("network.http.referer.XOriginTrimmingPolicy", 2); // 2 = Nur Origin senden user_pref("network.http.sendRefererHeader", 0); // 0 = Nie senden // === CACHE & PERFORMANCE === user_pref("browser.cache.disk.enable", true); user_pref("browser.cache.memory.enable", true); // === DIVERSES: Keine Warnungen/Popups === user_pref("browser.shell.checkDefaultBrowser", false); user_pref("datareporting.policy.dataSubmissionEnabled", false); user_pref("browser.tabs.warnOnClose", false); user_pref("browser.tabs.warnOnCloseOtherTabs", false); user_pref("browser.warnOnQuit", false); user_pref("toolkit.telemetry.enabled", false); user_pref("toolkit.telemetry.unified", false); // === SAFE BROWSING: Deaktiviert (Performance) === user_pref("browser.safebrowsing.malware.enabled", false); user_pref("browser.safebrowsing.phishing.enabled", false); user_pref("browser.safebrowsing.downloads.enabled", false); EOF success "Profil konfiguriert" # 5. Addon in Extensions-Ordner kopieren status "Installiere Addon im Profil..." mkdir -p "$PROFILE_DIR/extensions" # Addon-ID aus manifest.json: {583c5e82-fece-4d52-a1bc-8d633c5ae130} cp "$ADDON_PATH" "$PROFILE_DIR/extensions/{583c5e82-fece-4d52-a1bc-8d633c5ae130}.xpi" success "Addon installiert" # 6. Firefox starten echo "" echo -e "${CYAN}========================================${NC}" echo -e "${GREEN} eBesucher Addon erfolgreich eingerichtet!${NC}" echo -e "${CYAN}========================================${NC}" echo "" status "Starte Firefox ESR..." echo "" # Starte Firefox mit dem eBesucher-Profil und oeffne Guide-Seite "$FIREFOX_PATH" -profile "$PROFILE_DIR" "https://www.ebesucher.de/geld-verdienen-guide" & echo -e "${GREEN}Firefox wurde gestartet.${NC}" echo "" echo -e "${YELLOW}WICHTIG: Beim ersten Start musst du das Addon${NC}" echo -e "${YELLOW}moeglicherweise noch manuell aktivieren:${NC}" echo " 1. Gehe zu about:addons" echo " 2. Klicke auf 'eBesucher Addon'" echo " 3. Aktiviere das Addon" echo ""