Katılım
15 Aralık 2023
Mesajlar
2.046
Makaleler
11
Çözümler
24
Beğeniler
2.642
Yer
Slytherin
Selam. Linux'ta sadece Discord icin WARP'i devreye sokan bash betigini paylasiyorum, yapay zekaya yazdirildi.

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.
Sadece Debian ve Ubuntu tabaninda test edildi ama Arch icin de calisabilir, geri donuslerinize gore guncelleriz.
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:
Proxychains'e gerek yok ki. Linux'ta discord komutunun arkasına direkt kullanacağı proxy adresi yazılabiliyor. Böyle yazsanız da açılır.

discord --proxy-server=socks5://127.0.0.1:40000
 
Proxychains'e gerek yok ki. Linux'ta discord komutunun arkasına direkt kullanacağı proxy adresi yazılabiliyor. Böyle yazsanız da açılır.

discord --proxy-server=socks5://127.0.0.1:40000
Tesekkurler ama bende ise yaramiyor. Bir de uygulama Proxy destekliyorsa ise yariyor bu. Baska uygulamalarda destek yoksa calismiyor.
 
İlginç bir sürü dağıtımda bu şekilde denedim açılıyor. Mint için videom da var hatta flatpak olsun normal olsun proxy adresine yönlendirilebiliyor.
 

Merhaba scriptin readme dosyasini biraz duzenledim ve pull request attim. Degerlendirirseniz sevinirim. Kullanicilar icin daha okunabilir olacaktir.

Ayrica scripti otomatik olarak GitHub'dan cekip calistiran ufak bir bash scripti yazilabilir. Ayni zamanda sistemde Python yuklu mu degil mi kontrol de edilebilir bu sayede. Musait oldugum vakit ben eklemeyi dusunuyorum. (bkz. https://github.com/elrondforwin/pack/blob/master/install-pack.sh )
 
Kod:
socks5 127.0.0.1 40000 zaten mevcut. Atlanıyor...
/usr/share/applications/discord-warp.desktop oluşturuluyor...
cp: missing destination file operand after 'DISCORDDESKTOPDISCORDDESKTOPDISCORD_WARP_DESKTOP'
Try 'cp --help' for more information.
 
Kod:
socks5 127.0.0.1 40000 zaten mevcut. Atlanıyor...
/usr/share/applications/discord-warp.desktop oluşturuluyor...
cp: missing destination file operand after 'DISCORDDESKTOPDISCORDDESKTOPDISCORD_WARP_DESKTOP'
Try 'cp --help' for more information.
Şu bölümü komple silip tekrar çalıştırır mısın?

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
Sonra videodaki gibi ayrı bir .desktop dosyası oluşturabilirsin Discord için.
Müsait zamanda güncelleyeceğim betiği.
 
Son düzenleyen: Moderatör:
Şu bölümü komple silip tekrar çalıştırır mısın?

Sonra videodaki gibi ayrı bir. Desktop dosyası oluşturabilirsin Discord için.
Müsait zamanda güncelleyeceğim betiği.

Yine de baglanamiyorum garip bir sekilde. Sonradan bu videodaki gibi elle yaptim fakat yine baglanamadim. WARP ile alakali bir sorunum var gibi gorunuyor.