From 243a76ed087fee102ec54614519a50be277dd8b4 Mon Sep 17 00:00:00 2001 From: ibrahinsql Date: Mon, 21 Apr 2025 11:02:44 +0300 Subject: [PATCH] =?UTF-8?q?=20IPv6=20adreslerini=20belirtilen=20a=C4=9F=20?= =?UTF-8?q?aray=C3=BCz=C3=BCne=20atar,=203proxy=20servisini=20yeniden=20ba?= =?UTF-8?q?=C5=9Flat=C4=B1r=20ve=20kullan=C4=B1c=C4=B1ya=20proxy=20eri?= =?UTF-8?q?=C5=9Fim=20bilgilerini=20(kullan=C4=B1c=C4=B1=20ad=C4=B1/=C5=9F?= =?UTF-8?q?ifre=20veya=20izinli=20IP)=20ile=20birlikte=20t=C3=BCm=20proxy?= =?UTF-8?q?=20listesini=20=C3=A7=C4=B1kt=C4=B1=20olarak=20sunar.=20Kurulum?= =?UTF-8?q?un=20ba=C5=9Far=C4=B1yla=20tamamland=C4=B1=C4=9F=C4=B1n=C4=B1?= =?UTF-8?q?=20bildirir.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Her bir rastgele üretilmiş IPv6 adresi, seçilen ağ arayüzüne atanır. Atama sırasında hata oluşursa, ilgili IP atlanır ve kullanıcıya bildirilir. 3proxy servisi yeniden başlatılarak yapılandırmanın etkin olması sağlanır. Proxy erişimi için gerekli bilgiler (kullanıcı adı/şifre veya izinli IP) ekrana yazdırılır. Her bir IPv6 adresi için benzersiz bir port atanarak, tüm proxy listesi kullanıcıya sunulur. Kurulum tamamlandığında, kullanıcıya başarılı bir şekilde tamamlandığı bilgisi verilir ve script sonlandırılır. --- README.md | 13 ++++++++ install.sh | 94 ++++++++++++++++++++++++++++++++++++++++++++++++------ 2 files changed, 97 insertions(+), 10 deletions(-) diff --git a/README.md b/README.md index 50b3951..f5832fb 100644 --- a/README.md +++ b/README.md @@ -19,6 +19,19 @@ curl https://raw.githubusercontent.com/layerweb/Auto-ipv6Proxy/refs/heads/main/i - ✅ Universal Linux Desteği - ✅ Proxy IP listesi otomatik oluşturulur + +## 🛠️ Sorun Giderme + +- Kurulum sırasında bir hata ile karşılaşırsanız, detaylı bilgi için `install.log` dosyasını inceleyin. +- Sıkça karşılaşılan sorunlar ve çözümler için [Issues](https://github.com/layerweb/Auto-ipv6Proxy/issues) sayfasını ziyaret edebilirsiniz. +- Destek almak için topluluğumuza veya geliştiricilere ulaşabilirsiniz. + +## 📝 Katkıda Bulunun + +- Hata bildirmek, yeni özellik önermek veya geliştirmeye katkı sağlamak için lütfen bir [Issue](https://github.com/layerweb/Auto-ipv6Proxy/issues) oluşturun. +- Pull request’leriniz memnuniyetle karşılanır! Kod katkısı, dökümantasyon iyileştirmesi veya önerileriniz için katkıda bulunmaktan çekinmeyin. +- Projeye katkı sağlamak isteyen herkes için açık ve şeffaf bir geliştirme süreci yürütülmektedir. + # Gereksinimler - 🖥️ IPv6 destekli bir X86-64 VDS (KVM önerilir) diff --git a/install.sh b/install.sh index f5a52cd..9cbb5b7 100644 --- a/install.sh +++ b/install.sh @@ -6,8 +6,43 @@ GREEN="\e[32m" BOLD="\e[1m" RESET="\e[0m" +# Log dosyası tanımı ve log fonksiyonları +LOG_FILE="/var/log/ipv6proxy_install.log" + log() { + # Hem ekrana hem log dosyasına yaz echo -e "${GREEN}${BOLD}$1${RESET}" + echo "[$(date +'%Y-%m-%d %H:%M:%S')] $1" >> "$LOG_FILE" +} + +error_exit() { + # Hata durumunda hem ekrana hem log dosyasına yazıp çık + echo -e "${BOLD}\e[31m$1${RESET}" >&2 + echo "[$(date +'%Y-%m-%d %H:%M:%S')] ERROR: $1" >> "$LOG_FILE" + exit 1 +} + +# 3proxy konfigürasyonu ve IPv6 atamalarını yedekle +backup_configs() { + log "3proxy konfigürasyonu ve IPv6 atamalarının yedeği alınıyor..." + cp /etc/3proxy/3proxy.cfg /etc/3proxy/3proxy.cfg.bak 2>>"$LOG_FILE" || log "/etc/3proxy/3proxy.cfg yedeklenemedi." + ip -6 addr show | grep inet6 | awk '{print $2, $NF}' > /root/ipv6-assigned.bak 2>>"$LOG_FILE" || log "IPv6 atamaları yedeklenemedi." + log "Yedekleme tamamlandı." +} + +# Yedekten geri yükleme işlemi +restore_configs() { + log "Yedekler geri yükleniyor..." + if [ -f /etc/3proxy/3proxy.cfg.bak ]; then + cp /etc/3proxy/3proxy.cfg.bak /etc/3proxy/3proxy.cfg + log "3proxy.cfg geri yüklendi." + fi + if [ -f /root/ipv6-assigned.bak ]; then + while read -r addr iface; do + ip -6 addr add "$addr" dev "$iface" 2>>"$LOG_FILE" || log "$addr $iface atanamadı." + done < /root/ipv6-assigned.bak + log "IPv6 adresleri geri yüklendi." + fi } whiptail_prompt() { @@ -18,18 +53,27 @@ whiptail_prompt() { install_packages() { if command -v apt >/dev/null 2>&1; then - apt-get update - apt-get install -y wget whiptail iproute2 - wget https://github.com/3proxy/3proxy/releases/download/0.9.5/3proxy-0.9.5.x86_64.deb - dpkg -i 3proxy-0.9.5.x86_64.deb || apt-get install -f -y + apt-get update >>"$LOG_FILE" 2>&1 || error_exit "apt-get update başarısız." + apt-get install -y wget whiptail iproute2 >>"$LOG_FILE" 2>&1 || error_exit "Gerekli paketler kurulamadı (apt)." + wget https://github.com/3proxy/3proxy/releases/download/0.9.5/3proxy-0.9.5.x86_64.deb >>"$LOG_FILE" 2>&1 || error_exit "3proxy deb indirilemedi." + dpkg -i 3proxy-0.9.5.x86_64.deb >>"$LOG_FILE" 2>&1 || apt-get install -f -y >>"$LOG_FILE" 2>&1 || error_exit "3proxy kurulumu başarısız (apt)." elif command -v dnf >/dev/null 2>&1; then - dnf update -y - dnf install -y wget dialog iproute - wget https://github.com/3proxy/3proxy/releases/download/0.9.5/3proxy-0.9.5.x86_64.rpm - rpm -ivh 3proxy-0.9.5.x86_64.rpm + dnf update -y >>"$LOG_FILE" 2>&1 || error_exit "dnf update başarısız." + dnf install -y wget dialog iproute >>"$LOG_FILE" 2>&1 || error_exit "Gerekli paketler kurulamadı (dnf)." + wget https://github.com/3proxy/3proxy/releases/download/0.9.5/3proxy-0.9.5.x86_64.rpm >>"$LOG_FILE" 2>&1 || error_exit "3proxy rpm indirilemedi." + rpm -ivh 3proxy-0.9.5.x86_64.rpm >>"$LOG_FILE" 2>&1 || error_exit "3proxy kurulumu başarısız (dnf)." + elif command -v yum >/dev/null 2>&1; then + yum update -y >>"$LOG_FILE" 2>&1 || error_exit "yum update başarısız." + yum install -y wget dialog iproute >>"$LOG_FILE" 2>&1 || error_exit "Gerekli paketler kurulamadı (yum)." + wget https://github.com/3proxy/3proxy/releases/download/0.9.5/3proxy-0.9.5.x86_64.rpm >>"$LOG_FILE" 2>&1 || error_exit "3proxy rpm indirilemedi." + rpm -ivh 3proxy-0.9.5.x86_64.rpm >>"$LOG_FILE" 2>&1 || error_exit "3proxy kurulumu başarısız (yum)." + elif command -v zypper >/dev/null 2>&1; then + zypper refresh >>"$LOG_FILE" 2>&1 || error_exit "zypper refresh başarısız." + zypper install -y wget dialog iproute2 >>"$LOG_FILE" 2>&1 || error_exit "Gerekli paketler kurulamadı (zypper)." + wget https://github.com/3proxy/3proxy/releases/download/0.9.5/3proxy-0.9.5.x86_64.rpm >>"$LOG_FILE" 2>&1 || error_exit "3proxy rpm indirilemedi." + rpm -ivh 3proxy-0.9.5.x86_64.rpm >>"$LOG_FILE" 2>&1 || error_exit "3proxy kurulumu başarısız (zypper)." else - echo "❌ Desteklenmeyen sistem. APT ya da DNF bulunamadı." - exit 1 + error_exit "❌ Desteklenmeyen sistem. APT, DNF, YUM, ZYPPER bulunamadı." fi } @@ -42,6 +86,33 @@ if [ ! -f /ipv6lw ]; then log "Kurulum tamamlandı." fi +# Script başında kullanıcıya işlem seçtiren menü +CHOICE=$(whiptail --title "İşlem Seçin" --menu "Ne yapmak istersiniz?" 15 60 4 \ +"INSTALL" "Kurulum / Güncelleme" \ +"BACKUP" "Yedek Al" \ +"RESTORE" "Yedekten Geri Yükle (config + IPv6)" \ +"EXIT" "Çıkış" 3>&1 1>&2 2>&3) + +case $CHOICE in + INSTALL) + log "Kurulum veya güncelleme başlatılıyor..." + ;; + BACKUP) + backup_configs + log "Yedekleme işlemi tamamlandı. Script sonlandırılıyor." + exit 0 + ;; + RESTORE) + restore_configs + log "Geri yükleme işlemi tamamlandı. Script sonlandırılıyor." + exit 0 + ;; + EXIT) + log "Kullanıcı tarafından çıkış seçildi. Script sonlandırılıyor." + exit 0 + ;; +esac + AuthType=$(whiptail --title "Kimlik Doğrulama Türü" --menu "Bir kimlik doğrulama yöntemi seçin:" 15 60 2 \ "PASS" "Kullanıcı adı / şifre ile" \ "IP" "IP Whitelist (şifresiz)" 3>&1 1>&2 2>&3) @@ -134,3 +205,6 @@ for ip in "${IPv6_Array[@]}"; do ((Port++)) echo "TCP/$Port IPv6: $ip" done + +log "Kurulum tamamlandı." +exit 0