@umutbayraktar;
Hocam, kaynak kodu inceleyip Türk Telekom altyapısı üzerinde test ettim. Bulduklarım ve önerilerim, önem sırasına göre:
1. Sertifika hatasının sebebi: DNS koruması varsayılan olarak kapalı
Türk Telekom DNS'i discord.com, discord.gg, roblox.com, wattpad.com ve pastebin.com için engelleme sunucusu olan 195.175.254.2'yi döndürüyor. ERR_CERT_AUTHORITY_INVALID hatası oradan geliyor. Bu hatta SNI engeli yok: gerçek IP'ye motor olmadan bağlanınca discord.com 200 dönüyor. Yani Türkiye'de asıl gereken DNS koruması. Ama electron/engine-manager.js'de
useDoh: s.dnsProtection === true yazıyor ve arayüzde de varsayılan değer false. Varsayılan olarak açık gelmeli.
2. "DoH" aslında şifresiz DNS
core/src/doh.c, 1.1.1.1 ve 8.8.8.8 gibi sunuculara düz UDP/53 ile soruyor. doh.h'deki "TLS üzerinden DoH" açıklaması kodla uyuşmuyor. Operatör UDP/53'ü ele geçirirse koruma çöker (2014'te 8.8.8.8 için yapılmıştı). Önerim: Electron ana sürecinde 127.0.0.1 üzerinde çalışan küçük bir UDP→DoH yönlendirici (RFC 8484,
https://1.1.1.1/dns-query ve
https://8.8.8.8/dns-query). Sunuculara IP ile bağlanınca SNI gönderilmiyor. Sertifikalar bu IP'leri içerdiği için doğrulama da eksiksiz yapılıyor. Motor önce bu yönlendiriciye sorar, cevap gelmezse mevcut UDP çözücülere düşer. Denedim, çalışıyor.
3. Engelleme sayfası filtresi yok
CAPABILITIES.md "bilinen engelleme sayfası adreslerini eliyoruz" diyor, ama doh.c sadece özel ve ayrılmış IP'leri eliyor. 195.175.254.2 listeye eklenmeli. Ayrıca en sondaki getaddrinfo yedeği bu adresi döndürürse reddedilmeli, yoksa yine sertifika hatası çıkıyor.
4. Bütün trafik proxy'den geçiyor; e-Devlet ve banka sitelerinde sorun çıkabiliyor
PAC her şeyi SOCKS'a gönderiyor, ayrıca ProxyServer=socks=... da ayarlanıyor. Önerim "sadece listedeki siteler" modunun varsayılan olması: PAC'teki alan adı listesi (alt alan adları dahil) SOCKS'a, geri kalan her şey DIRECT. Bu modda ProxyServer ve ProxyEnable'a hiç dokunmadan sadece AutoConfigURL ayarlanır. Liste kullanıcı tarafından düzenlenebilmeli, "tüm trafik" de seçenek olarak kalabilir.
5. Sesli sohbet: önceki EDİT'teki "UDP desteği" yorumumu düzeltiyorum
SOCKS5'e UDP ASSOCIATE eklemek işe yaramaz. Discord (Chromium/WebRTC) ses UDP'sini proxy'den geçirmiyor, Shroudly açık da olsa kapalı da olsa doğrudan gönderiyor. discord.media bu hatta DNS'te engelli değil ve doğrudan açılıyor. Arada çıkan "RTC Bağlanıyor" ve "Rota Yok" sorununun sebebi henüz belli değil, araştırılması gerekiyor. Ayırt etmek için şöyle denenebilir: Shroudly kapalıyken Windows'un kendi DNS şifrelemesini açıp (Ayarlar → Ağ → DNS over HTTPS, 1.1.1.1) Discord'da sesi denemek. Orada da oluyorsa sorun operatörün UDP tarafındadır. Olmuyorsa Shroudly tarafındadır, örneğin ses sunucusunun WebSocket bağlantısı motordan geçerken.
6. Otomatik güncelleme imzasız exe'yi kendiliğinden kuruyor
updater.js güncellemeyi indirip 60 saniye sonra kendisi kuruyor. Kod imzası olmadığı için electron-updater Windows'ta imza doğrulaması yapamıyor. Elinde sadece latest.yml'deki SHA-512 var, o da güncellemeyle aynı yerden geliyor. GitHub hesabı ele geçirilirse bütün kullanıcıların bilgisayarında otomatik olarak kod çalıştırılabilir. Önerim: varsayılan olarak "sadece bildir" (yeni sürümün kod değişikliklerine giden linkle birlikte) ya da kod imzalama. SignPath Foundation açık kaynak projelere ücretsiz imza veriyor, SmartScreen uyarısını da çözüyor.
7. Electron 33 artık güvenlik güncellemesi almıyor
Electron 43.7.5 ve electron-builder 26.15.3 ile denedim. Pencere, proxy, bildirim ve kurulum sorunsuz çalıştı. Ayrıca electron-store → ajv → fast-uri zincirinde yüksek seviyeli bir açık var,
npm audit fix ile kapanıyor.
8. Site testi DNS engelini görmüyor
DNS koruması açıkken test, adı DoH ile çözdüğü için DNS ile engellenen sitelere "burada engelli değil" diyor. Test, sistem DNS'inin cevabını şifreli cevapla karşılaştırmalı (ya da engelleme sayfası IP'sine bakmalı) ve "DNS ile engelli" diye ayrı bir sonuç vermeli.
9. Küçük öneriler- İlk açılışta kısa bir açıklama ve "Discord'u test et" butonu, kullanıcıların sorularının çoğunu çözer. Buton sistem proxy ayarıyla gerçek bir istek atıp sonucu göstermeli.
- Portable sürüm eklenirse: electron-builder'ın varsayılan unpackDirName ayarıyla, ikinci açılış çalışan kopyanın klasörünü silmeye çalışıyor. portable.unpackDirName: true gerekli. Otomatik başlatma ve RunOnce yolu için de process.env.PORTABLE_EXECUTABLE_FILE kullanılmalı.