Selam. Linux'ta sadece Discord icin WARP'i devreye sokan bash betigini paylasiyorum, yapay zekaya yazdirildi.
Yaptigi seyler:
Detayli bilgi icin videoya veya makaleye goz atin.
Yaptigi seyler:
- DNS'i systemd-resolved kurarark DoT ile ayarliyor.
- warp-cli paketini kurup proxy olarak aktif ediyor.
- ProxyChains'i kurup Discord'u ProxyChains ile baslayacak sekilde ayarliyor.
Detayli bilgi icin videoya veya makaleye goz atin.
Bash:
#!/bin/bash
# Hata durumunda çıkış yap
set -e
# Hata kontrol fonksiyonu
check_error() {
if [ $? -ne 0 ]; then
echo "Hata: $1"
exit 1
fi
}
# Sudo yetkisi kontrol fonksiyonu
check_sudo() {
if ! sudo -n true 2>/dev/null; then
echo "Bu işlem root yetkileri gerektiriyor. Lütfen sudo şifrenizi girin."
sudo -v
check_error "Sudo kimlik doğrulama başarısız"
fi
}
# İnternet bağlantısı kontrolü
echo "İnternet bağlantısı kontrol ediliyor..."
if ! ping -c 1 8.8.8.8 &> /dev/null; then
echo "Hata: İnternet bağlantısı tespit edilemedi. Lütfen ağınızı kontrol edin."
exit 1
fi
# Paket yöneticisi tespiti
PACKAGE_MANAGER=""
if command -v apt-get &> /dev/null; then
PACKAGE_MANAGER="apt-get"
elif command -v pacman &> /dev/null; then
PACKAGE_MANAGER="pacman"
else
echo "Hata: Desteklenen bir paket yöneticisi (apt-get, pacman) bulunamadı."
echo "Lütfen Cloudflare Warp'u manuel olarak yükleyin: https://developers.cloudflare.com/cloudflare-one/connections/connect-devices/warp/installation/"
exit 1
fi
echo "Tespit edilen paket yöneticisi: $PACKAGE_MANAGER"
# curl kontrolü ve kurulumu
if ! command -v curl &> /dev/null; then
echo "curl yüklü değil. Kuruluyor..."
check_sudo
if [ "$PACKAGE_MANAGER" = "apt-get" ]; then
sudo apt-get update
check_error "Paket listesi güncellenemedi"
sudo apt-get install -y curl
check_error "curl yüklenemedi"
elif [ "$PACKAGE_MANAGER" = "pacman" ]; then
sudo pacman -Syu --noconfirm curl
check_error "curl yüklenemedi"
fi
fi
# systemd-resolved kurulumu ve yapılandırması (sadece apt-get sistemleri için)
if [ "$PACKAGE_MANAGER" = "apt-get" ]; then
echo "systemd-resolved kurulumu kontrol ediliyor..."
check_sudo
if ! command -v systemd-resolve &> /dev/null; then
echo "systemd-resolved yüklü değil. Kuruluyor..."
sudo apt-get install -y systemd-resolved
check_error "systemd-resolved yüklenemedi"
sudo systemctl enable --now systemd-resolved
check_error "systemd-resolved başlatılamadı veya etkinleştirilemedi"
else
echo "systemd-resolved zaten yüklü. Devam ediliyor..."
fi
echo "/etc/systemd/resolved.conf düzenleniyor..."
RESOLVED_CONF="/etc/systemd/resolved.conf"
check_sudo
# Her bir yapılandırma girdisini kontrol et ve eksikse ekle
if ! grep -Fx "DNS=1.1.1.1 1.0.0.1" "$RESOLVED_CONF" > /dev/null; then
echo "DNS=1.1.1.1 1.0.0.1" | sudo tee -a "$RESOLVED_CONF"
check_error "DNS yapılandırması eklenemedi"
else
echo "DNS=1.1.1.1 1.0.0.1 zaten mevcut. Atlanıyor..."
fi
if ! grep -Fx "FallbackDNS=8.8.8.8 8.8.4.4" "$RESOLVED_CONF" > /dev/null; then
echo "FallbackDNS=8.8.8.8 8.8.4.4" | sudo tee -a "$RESOLVED_CONF"
check_error "FallbackDNS yapılandırması eklenemedi"
else
echo "FallbackDNS=8.8.8.8 8.8.4.4 zaten mevcut. Atlanıyor..."
fi
if ! grep -Fx "DNSOverTLS=yes" "$RESOLVED_CONF" > /dev/null; then
echo "DNSOverTLS=yes" | sudo tee -a "$RESOLVED_CONF"
check_error "DNSOverTLS yapılandırması eklenemedi"
else
echo "DNSOverTLS=yes zaten mevcut. Atlanıyor..."
fi
if ! grep -Fx "Domains=~." "$RESOLVED_CONF" > /dev/null; then
echo "Domains=~." | sudo tee -a "$RESOLVED_CONF"
check_error "Domains yapılandırması eklenemedi"
else
echo "Domains=~. zaten mevcut. Atlanıyor..."
fi
if ! grep -Fx "DNSSEC=yes" "$RESOLVED_CONF" > /dev/null; then
echo "DNSSEC=yes" | sudo tee -a "$RESOLVED_CONF"
check_error "DNSSEC yapılandırması eklenemedi"
else
echo "DNSSEC=yes zaten mevcut. Atlanıyor..."
fi
if ! grep -Fx "Cache=yes" "$RESOLVED_CONF" > /dev/null; then
echo "Cache=yes" | sudo tee -a "$RESOLVED_CONF"
check_error "Cache yapılandırması eklenemedi"
else
echo "Cache=yes zaten mevcut. Atlanıyor..."
fi
echo "/etc/resolv.conf dosyası düzenleniyor..."
if [ -f /etc/resolv.conf ]; then
sudo rm -f /etc/resolv.conf
check_error "/etc/resolv.conf silinemedi"
fi
if [ ! -L /etc/resolv.conf ]; then
sudo ln -s /run/systemd/resolve/stub-resolv.conf /etc/resolv.conf
check_error "/etc/resolv.conf bağlantısı oluşturulamadı"
else
echo "/etc/resolv.conf zaten doğru bağlantıya sahip. Atlanıyor..."
fi
sudo systemctl restart systemd-resolved
check_error "systemd-resolved yeniden başlatılamadı"
fi
# apt-get update için tekrar deneme fonksiyonu
try_apt_update() {
local max_attempts=3
local attempt=1
echo "Paket listesi güncelleniyor..."
check_sudo
while [ attempt−leattempt−lemax_attempts ]; do
echo "Deneme attempt/attempt/max_attempts..."
if sudo apt-get update; then
return 0
else
echo "apt-get update başarısız. Tekrar deneniyor..."
sleep 2
((attempt++))
fi
if [ attempt−gtattempt−gtmax_attempts ]; then
echo "Hata: Paket listesi $max_attempts denemede güncellenemedi."
return 1
fi
done
}
# Cloudflare Warp kurulumu
install_warp() {
if [ "$PACKAGE_MANAGER" = "apt-get" ]; then
echo "Cloudflare Warp GPG anahtarı ekleniyor..."
check_sudo
curl -fsSL https://pkg.cloudflareclient.com/pubkey.gpg | sudo gpg --yes --dearmor --output /usr/share/keyrings/cloudflare-warp-archive-keyring.gpg
check_error "Cloudflare Warp GPG anahtarı eklenemedi"
disable_cdrom_repos
disable_i386_architecture
try_add_repository() {
local codename=$1
echo "Cloudflare Warp deposu $codename ile ekleniyor..."
check_sudo
echo "deb [signed-by=/usr/share/keyrings/cloudflare-warp-archive-keyring.gpg] https://pkg.cloudflareclient.com/ $codename main" | sudo tee /etc/apt/sources.list.d/cloudflare-client.list
check_error "Cloudflare Warp deposu $codename için eklenemedi"
if [ ! -f /etc/apt/sources.list.d/cloudflare-client.list ]; then
echo "Hata: Depo dosyası /etc/apt/sources.list.d/cloudflare-client.list oluşturulmadı"
return 1
fi
if ! grep -q "$codename main" /etc/apt/sources.list.d/cloudflare-client.list; then
echo "Hata: Depo dosyasında beklenen $codename bulunamadı"
return 1
fi
return 0
}
for codename in "jammy" "noble" "focal" "bookworm" "bullseye"; do
try_add_repository "$codename" && break
echo "$codename kod adıyla depo eklenemedi. Bir sonraki kod adı deneniyor..."
if [ "$codename" == "bullseye" ]; then
echo "Hata: Cloudflare Warp deposu tüm desteklenen kod adlarıyla (jammy, noble, focal, bookworm, bullseye) eklenemedi"
return 1
fi
done
if ! try_apt_update; then
echo "Hata: apt-get update başarısız. Lütfen depolarınızı kontrol edin ve tekrar deneyin."
return 1
fi
echo "Cloudflare Warp kuruluyor..."
check_sudo
if sudo apt-get install -y cloudflare-warp 2>&1 | grep -q "already the newest version"; then
echo "Cloudflare Warp zaten yüklü. Devam ediliyor..."
else
sudo apt-get install -y cloudflare-warp
check_error "Cloudflare Warp yüklenemedi"
fi
elif [ "$PACKAGE_MANAGER" = "pacman" ]; then
if ! command -v yay &> /dev/null; then
echo "yay AUR yardımcısı yüklü değil. Yüklemeye çalışıyor..."
check_sudo
sudo pacman -Syu --noconfirm git base-devel
check_error "git veya base-devel yüklenemedi"
git clone https://aur.archlinux.org/yay.git
check_error "yay deposu klonlanamadı"
cd yay
makepkg -si --noconfirm
check_error "Yay yüklenemedi"
cd -
fi
echo "Cloudflare Warp AUR'dan kuruluyor..."
if yay -Qs cloudflare-warp-bin &> /dev/null; then
echo "Cloudflare Warp zaten yüklü. Devam ediliyor..."
else
yay -S --noconfirm cloudflare-warp-bin
check_error "Cloudflare Warp yüklenemedi"
fi
fi
}
# Warp kurulumunu dene
echo "Cloudflare Warp kuruluyor..."
if ! install_warp; then
echo "Hata: Cloudflare Warp otomatik olarak yüklenemedi."
echo "Lütfen Cloudflare Warp'u manuel olarak yükleyin: https://developers.cloudflare.com/cloudflare-one/connections/connect-devices/warp/installation/"
echo "Warp yüklendikten sonra bu betiği tekrar çalıştırın."
exit 1
fi
# warp-cli kontrolü
if ! command -v warp-cli &> /dev/null; then
echo "Hata: warp-cli yüklü değil. Lütfen Cloudflare Warp'u manuel olarak yükleyin: https://developers.cloudflare.com/cloudflare-one/connections/connect-devices/warp/installation/"
exit 1
fi
# Yeni Warp istemcisi kaydet
try_warp_registration() {
local max_attempts=3
local attempt=1
echo "Yeni Warp istemcisi kaydediliyor..."
while [ attempt−leattempt−lemax_attempts ]; do
echo "Deneme attempt/attempt/max_attempts..."
if warp-cli registration new; then
return 0
else
if warp-cli registration new 2>&1 | grep -q "Old registration is still around"; then
echo "Eski kayıt tespit edildi. Temizleniyor..."
warp-cli registration delete
check_error "Eski Warp kaydı silinemedi"
else
echo "Kayıt işlemi başarısız. Tekrar deneniyor..."
fi
sleep 2
((attempt++))
fi
if [ attempt−gtattempt−gtmax_attempts ]; then
echo "Hata: Warp kaydı $max_attempts denemede tamamlanamadı."
return 1
fi
done
}
# Warp kaydını dene
if ! try_warp_registration; then
echo "Hata: Warp kaydı otomatik olarak tamamlanamadı."
echo "Lütfen şu adımları manuel olarak uygulayın:"
echo "1. 'warp-cli registration delete' komutunu çalıştırın."
echo "2. 'warp-cli registration new' komutunu çalıştırın."
echo "Daha fazla bilgi için: https://developers.cloudflare.com/cloudflare-one/connections/connect-devices/warp/installation/"
exit 1
fi
# Warp modunu proxy olarak ayarla
echo "Warp modu proxy olarak ayarlanıyor..."
warp-cli mode proxy
check_error "Warp modu proxy olarak ayarlanamadı"
# Warp'a bağlan
echo "Warp'a bağlanılıyor..."
warp-cli connect
check_error "Warp'a bağlanılamadı"
# proxychains kurulumu
echo "proxychains kuruluyor..."
check_sudo
if [ "$PACKAGE_MANAGER" = "apt-get" ]; then
sudo apt-get install -y proxychains
check_error "proxychains yüklenemedi"
elif [ "$PACKAGE_MANAGER" = "pacman" ]; then
sudo pacman -Syu --noconfirm proxychains-ng
check_error "proxychains-ng yüklenemedi"
fi
# proxychains yapılandırmasını değiştir
PROXYCHAINS_CONF="/etc/proxychains.conf"
if [ "$PACKAGE_MANAGER" = "pacman" ]; then
PROXYCHAINS_CONF="/etc/proxychains-ng.conf"
fi
echo "$PROXYCHAINS_CONF düzenleniyor..."
check_sudo
if [ -f "$PROXYCHAINS_CONF" ]; then
sudo sed -i '/^proxy_dns/s/^/#/' "$PROXYCHAINS_CONF"
check_error "proxy_dns satırı yorum satırına çevrilemedi"
sudo sed -i '/^socks4/s/^/#/' "$PROXYCHAINS_CONF"
check_error "socks4 satırı yorum satırına çevrilemedi"
if ! grep -Fx "socks5 127.0.0.1 40000" "$PROXYCHAINS_CONF" > /dev/null; then
echo "socks5 127.0.0.1 40000" | sudo tee -a "$PROXYCHAINS_CONF"
check_error "socks5 yapılandırması eklenemedi"
else
echo "socks5 127.0.0.1 40000 zaten mevcut. Atlanıyor..."
fi
else
echo "Hata: $PROXYCHAINS_CONF bulunamadı"
exit 1
fi
# Discord kurulum kontrolü
if ! command -v discord &> /dev/null && [ ! -f "/usr/share/applications/discord.desktop" ]; then
echo "Hata: Discord yüklü değil veya discord.desktop dosyası bulunamadı. Lütfen önce Discord'u yükleyin."
exit 1
fi
# Discord-WARP .desktop dosyası oluştur
DISCORD_DESKTOP="/usr/share/applications/discord.desktop"
DISCORD_WARP_DESKTOP="/usr/share/applications/discord-warp.desktop"
echo "$DISCORD_WARP_DESKTOP oluşturuluyor..."
check_sudo
if [ -f "$DISCORD_DESKTOP" ]; then
sudo cp "DISCORDDESKTOP""DISCORDDESKTOP""DISCORD_WARP_DESKTOP"
check_error "discord.desktop kopyalanamadı"
sudo sed -i 's/^Exec=.*/Exec=proxychains discord/' "$DISCORD_WARP_DESKTOP"
check_error "$DISCORD_WARP_DESKTOP düzenlenemedi"
sudo sed -i 's/^Name=.*/Name=Discord-WARP/' "$DISCORD_WARP_DESKTOP"
check_error "Discord-WARP adı ayarlanamadı"
if ! grep -q "Exec=proxychains discord" "DISCORDWARPDESKTOP"∣∣!grep−q"Name=Discord−WARP""DISCORDWARPDESKTOP"∣∣!grep−q"Name=Discord−WARP""DISCORD_WARP_DESKTOP"; then
echo "Hata: $DISCORD_WARP_DESKTOP dosyasında değişiklikler doğrulanamadı"
exit 1
fi
else
echo "Hata: $DISCORD_DESKTOP bulunamadı"
exit 1
fi
# Masaüstü veritabanlarını güncelle
echo "Masaüstü veritabanları güncelleniyor..."
check_sudo
sudo update-desktop-database /usr/share/applications/
check_error "/usr/share/applications veritabanı güncellenemedi"
sudo update-desktop-database ~/.local/share/applications/
check_error "~/.local/share/applications veritabanı güncellenemedi"
echo "Kurulum başarıyla tamamlandı! Artık Discord-WARP seçeneğini kullanabilirsiniz."
Son düzenleyen: Moderatör: