Skip to content

About

Bu uygulama, GSB yurtlarında kullanılan internete otomatik giriş yapılmasını sağlar. Login ekranının yüklenmesini beklemenize gerek kalmaz. Kod yerel olarak çalışmakta olup herhangi bir şekilde verilerinizi dışarıya aktarmaz.

Topics

Resources

Stars

8 stars

Watchers

0 watching

Forks

Latest commit

 

History

87 Commits

Folders and files

Repository files navigation

🛜 GSB WiFi AutoLogin

FOSSA Status FOSSA Status

Version License: GPLv3 Platform Rust

KYK yurtlarında kullanılan GSB WiFi ağına otomatik giriş yapan modern masaüstü uygulaması.
Rust + Tauri v2 ile geliştirilmiştir.


Preview

GSB WiFi AutoLogin — giriş, bağlantı tanılama ve bağlantı aktif ekranları

✨ Özellikler

  • ⚡ Otomatik Giriş: Uygulama açılışında kayıtlı profille kendiliğinden bağlanma; tek tıkla manuel giriş her zaman mümkün.
  • 🖥️ Sistem Tepsisi: Pencere kapatılınca tepsiye küçülme; tepsi menüsünden Bağlan / Çıkış Yap / Pencereyi Göster; bağlantı durumu tepsi ipucunda.
  • 🚀 Başlangıçta Çalışma: Windows açılışında sessizce (pencere açmadan, tepsiden) başlama seçeneği.
  • 🔁 Otomatik Yeniden Bağlanma: Wi-Fi bağlandığı an olay tabanlı oturum kontrolü (Windows ağ değişikliği bildirimi); oturum düştüyse son kimlik bilgileriyle kendiliğinden yeniden giriş. 12 saatlik periyodik kontrol güvenlik ağı olarak kalır.
  • 📡 GSB Ağı Algılama: GSB ağında değilken uyarı; gereksiz giriş denemeleri yapılmaz.
  • 🆕 Otomatik Güncelleme: Açılışta arka planda sürüm kontrolü; güncelleme varsa pencerenin üstünde yeşil bir bar belirir, tek tıkla imzalı güncelleme indirilip kurulur ve uygulama yeniden başlar (installer sürümünde; portable'da indirme sayfası açılır).
  • 🔔 Kota Bildirimleri: Kota %20'nin altına düşünce veya dolunca Windows bildirimi; bağlantı koptuğunda da haber verir.
  • 📊 Kota Takibi: Kalan kota, yüzde göstergesi, kullanılan kota ve yenilenme tarihi.
  • 📈 Kota Geçmişi & Tahmin: Günlük kota kayıtlarından mini grafik (inline SVG) ve günlük tüketime göre "bu hızla ~N gün sonra biter" tükenme tahmini.
  • ♻️ Bilgileri Yenile: Bağlı ekranda tek tıkla, yeniden giriş yapmadan kota ve kullanıcı bilgilerini güncelleme.
  • 👥 Çoklu Profil: Birden fazla hesabı yerelde kaydetme, takma ad verme, seçme ve silme.
  • ⚙️ Ayarlar Paneli: Otomatik giriş, tepsiye küçülme, başlangıçta çalışma, yeniden bağlanma ve bildirimler için kalıcı anahtarlar.
  • 📜 Sistem Günlüğü: Tüm adımlar log panelinde ve logs/uygulama.log dosyasında (otomatik rotasyonlu); "Klasörü Aç" ile erişim.
  • 🩺 Bağlantı Tanılama: Tek tıkla aşamalı self-test (GSB ağı, DNS, TCP :443, internet/captive durumu, portal erişimi, kayıtlı oturum); sessiz giriş hatalarını somut teşhise çevirir. Kontroller paralel çalışır ve DNS tanı başına bir kez çözülür.
  • ⏱️ Aşama Süresi Ölçümü: DNS, TCP bağlantısı, giriş denemesi, gövde okuma ve parse süreleri yerel log dosyasına yazılır (anahtar=deger). Veri yalnızca cihazda kalır, telemetri gönderilmez.
  • 🧭 Dayanıklı Ayrıştırma: Portal sayfaları semantik olarak sınıflandırılır ve JSF ID'leri değişse bile kota/cihaz/buton alanları yedek seçici zinciriyle okunur.
  • 🔒 Şifreleme: Kullanıcı bilgilerini cihaza bağlı olarak şifreli saklama: Windows DPAPI (oturum açan kullanıcı hesabına bağlı) önceliklidir, kullanılamazsa AES-GCM'e düşülür. Eski AES kayıtları okunur ve ilk girişte DPAPI'ye taşınır.
  • 🚪 Oturum Yönetimi: Aktif oturumu sonlandırma ve maksimum cihaz durumunda önceki oturumu düşürme.
  • 🔄 Güvenli Yeniden Deneme: Ağ hatalarında exponential backoff ile kontrollü tekrar; deneme sonucu belirsizse (timeout) giriş kör tekrar edilmez, önce oturum doğrulanır. Tüm giriş akışı 25 saniyelik global bütçeye bağlıdır.
  • 🎨 Modern Arayüz: Koyu tema, kompakt giriş ekranı ve akıcı ekran geçişleri.

📥 İndirme

En güncel sürümü Releases sayfasından indirebilirsiniz.

v1.10.0 ile birlikte Windows, Linux ve macOS için paket yayınlanıyor. İşletim sisteminize uygun dosyayı seçin:

İşletim sistemi İndirilecek dosya Notlar
🪟 Windows ..._setup.exe (kurulum) veya ..._portable.exe En kapsamlı desteklenen platform.
🐧 Linux (Debian/Ubuntu) ..._amd64.deb sudo apt install ./dosya.deb
🐧 Linux (Fedora/RHEL) ..._x86_64.rpm sudo dnf install ./dosya.rpm
🐧 Linux (diğer) ..._amd64.AppImage Çalıştırma izni verip doğrudan çalıştırın.
🍎 macOS (Apple Silicon) ..._aarch64.dmg M1 ve sonrası.
🍎 macOS (Intel) ..._x86_64.dmg 2020 öncesi Intel işlemciler.

Her sürümde yayınlanan SHA256SUMS.txt ile indirdiğiniz dosyanın bütünlüğünü doğrulayabilirsiniz.

⚠️ Platform farkları: Uygulama Windows için geliştirildi ve bazı özellikler yalnızca orada çalışır: kimlik bilgilerinin DPAPI ile şifrelenmesi (diğer platformlarda AES-GCM'e düşer), ağ değişikliğinde olay tabanlı yeniden bağlanma (diğer platformlarda periyodik kontrol devrede kalır) ve Windows bildirimleri. Giriş, kota takibi ve otomatik yeniden bağlanma üç platformda da çalışır.

🍎 macOS paketleri imzalı değildir. İlk açılışta sistem uyarı verir; uygulamaya sağ tıklayıp "Aç" demeniz gerekir.

Uygulama açılışta yeni sürümü arka planda kontrol eder. Güncelleme varsa pencerenin üstünde yeşil bir bar belirir: installer (NSIS) kurulumunda tek tıkla imzalı güncelleme indirilir, kurulur ve uygulama yeniden başlar; portable sürümde bar GitHub release sayfasını açar.

ℹ️ Otomatik güncelleme v1.8.0 ile geldi: v1.8.0'ı bir kez elle kurmanız gerekir, sonraki sürümler uygulama içinden güncellenir.

Uygulama içi güncelleme Windows (installer) ve Linux (AppImage) üzerinde çalışır. .deb ve .rpm paketleri paket yöneticisiyle güncellenir; macOS'ta yeni .dmg indirilip kurulur.

📦 Installer vs 🚀 Portable

Özellik 📦 Installer (.exe setup) 🚀 Portable (.exe)
Kurulum Klasik kurulum sihirbazı ile sisteminize kurulur. Kurulum gerektirmez, indirip doğrudan çalıştırın.
Konum AppData\Local dizini altına yerleşir. Herhangi bir klasörden veya USB bellekten çalışır.
Başlat Menüsü Kısayol oluşturur, kolay erişim sağlar. Kısayol oluşturmaz, bağımsızdır.
Kaldırma Windows "Program Ekle/Kaldır" menüsünden kaldırılır. Sadece dosyayı silmek yeterlidir.
Güncelleme Uygulama içinden otomatik (yeşil güncelleme barı). Eski dosya silinip yenisi ile değiştirilir.
Başlangıçta çalışma Desteklenir. Desteklenir (exe taşınırsa kayıt yeniden yapılmalı).

💡 Not: Her iki sürüm de aynı uygulama mantığını kullanır. Kullanım alışkanlığınıza göre tercih yapabilirsiniz.


⚠️ Güvenlik Uyarısı

Bu uygulama yalnızca GSB/KYK captive portali için tasarlanmıştır.

Kimlik bilgileriniz sadece kendi bilgisayarınızda saklanır. Kayıtlı profiller user_config.json içinde şifrelenir: öncelikle Windows DPAPI (şifre çözme, oturum açan Windows kullanıcı hesabına bağlıdır) kullanılır; DPAPI kullanılamazsa makine adı + işletim sistemi kullanıcı adından türetilen anahtarla AES-GCM'e düşülür. Daha önce AES ile kaydedilmiş profiller okunmaya devam eder ve ilk girişte DPAPI'ye taşınır. Bilgiler hiçbir dış sunucuya gönderilmez. GitHub sürüm kontrolü yalnızca release bilgisi almak için GitHub API'ye istek atar; kullanıcı adı, şifre veya profil bilgisi bu isteğe eklenmez.

Giriş istekleri backend tarafında doğrulanır ve yalnızca wifi.gsb.gov.tr adresine gönderilebilir; kimlik bilgilerinin başka bir adrese iletilmesi mümkün değildir.

TLS sertifika doğrulaması v1.10.0 ile portal istemcisinde de açıldı; wifi.gsb.gov.tr normal sertifika doğrulamasından geçer, doğrulanmamış bir TLS oturumu üzerinden kimlik bilgisi gönderilmez. GitHub sürüm kontrolü ayrı bir istemciyle ve yine TLS doğrulamalı yapılır.

Yanıt gövdeleri boyut sınırıyla okunur (portal 256 KiB, bağlantı kontrolü 1 KiB), böylece bozuk veya kötü niyetli bir yanıt belleği dolduramaz. İnternet erişim kontrolü tam eşleşmeyle doğrulanır; captive portalın beklenen metni sayfasına gömerek "internet var" sonucu ürettirmesi mümkün değildir.

Otomatik güncellemeler kriptografik olarak imzalıdır (minisign): uygulama yalnızca gömülü genel anahtarla doğrulanan güncellemeleri kurar; imzasız veya değiştirilmiş bir paket kurulmaz.


🛠️ Geliştirme

Projeyi kendi bilgisayarınızda derlemek veya geliştirmek için:

Gereksinimler

  • Rust stable sürüm
  • Node.js opsiyonel, frontend sözdizimi kontrolleri için
  • Windows, Linux veya macOS. Üç platform da CI'da derlenir, test edilir ve paketlenir. Platforma özgü kollar (Windows'ta DPAPI ve ağ olayı bildirimi gibi) yalnızca ilgili platformda derlenir.
  • Linux'ta paketleme için sistem bağımlılıkları: libwebkit2gtk-4.1-dev, libgtk-3-dev, libayatana-appindicator3-dev, librsvg2-dev, patchelf (RPM için ek olarak rpm).
  • Tauri CLI (cargo install tauri-cli --version "^2" veya mevcut eşdeğer kurulum)

Derleme Adımları

# Depoyu klonlayın
git clone https://github.com/Toxpox/GSB-WiFi-AutoLogin.git

# Proje dizinine geçin
cd GSB-WiFi-AutoLogin/src-tauri

# Uygulamayı derleyin
cargo tauri build

📂 Çıktı Yolları:

  • Windows installer: src-tauri/target/release/bundle/nsis/
  • Portable exe: src-tauri/target/release/
  • Linux paketleri: src-tauri/target/release/bundle/{deb,rpm,appimage}/
  • macOS paketleri: src-tauri/target/release/bundle/{dmg,macos}/

ℹ️ Yalnızca belirli paketleri üretmek için: cargo tauri build --bundles deb,appimage

⚠️ Güncel Linux dağıtımlarında AppImage: glibc 2.36+ ile derlenen sistem kütüphaneleri .relr.dyn bölümü içerir ve linuxdeploy içindeki eski strip bunu ayrıştıramaz, paketleme failed to run linuxdeploy ile düşer. Yerelde NO_STRIP=true cargo tauri build --bundles appimage ile aşılır (çıktı sembolleri koruduğu için belirgin şekilde büyür). CI ubuntu-22.04 üzerinde derlediğinden bu sorun oluşmaz; bu yüzden CI'da NO_STRIP kullanılmaz.

Kontrol Komutları

cd src-tauri
cargo fmt --check
cargo test
cargo clippy --all-targets -- -D warnings

ℹ️ cargo test gerçek kullanıcı veri dizinine yazmaz; test derlemesinde veri dizini geçici dizine yönlendirilir. Üretimde veri dizini GSB_VERI_DIZINI ortam değişkeniyle değiştirilebilir.

Frontend sözdizimi için:

node --check frontend/js/app.js
node --check frontend/js/giris.js
node --check frontend/js/log.js
node --check frontend/js/hosgeldin.js

💻 Teknolojiler

Teknoloji Kullanım Alanı
Rust Backend mantığı, ağ akışı, profil yönetimi ve şifreleme
Tauri v2 Çapraz platform masaüstü uygulama çerçevesi (Windows, Linux, macOS)
HTML/CSS/JS Etkileşimli frontend arayüzü
AES-GCM Yerel kullanıcı bilgisi şifreleme (DPAPI kullanılamadığında)
reqwest + rustls Captive portal, çıkış işlemi ve GitHub Releases API istekleri; TLS doğrulamalı, HTTP/1.1 sabitli, gzip ve bağlantı havuzu açık
scraper Portal sayfalarının semantik sınıflandırılması ve alan ayıklama
GitHub Releases API Yeni sürüm kontrolü ve otomatik güncelleme dağıtımı
tauri-plugin-updater İmzalı uygulama içi otomatik güncelleme
windows (windows-rs) Yalnızca Windows: DPAPI ile kimlik şifreleme ve olay tabanlı yeniden bağlanma (IP arayüz değişikliği bildirimi)

📝 Sürüm Geçmişi

Tüm değişiklikler için CHANGELOG.md dosyasına bakabilirsiniz.


📄 Lisans

Copyright © 2025 Toxpox.
Bu proje GNU General Public License v3.0 (GPLv3) ile lisanslanmıştır. Detaylar için LICENSE dosyasına göz atabilirsiniz.

About

Bu uygulama, GSB yurtlarında kullanılan internete otomatik giriş yapılmasını sağlar. Login ekranının yüklenmesini beklemenize gerek kalmaz. Kod yerel olarak çalışmakta olup herhangi bir şekilde verilerinizi dışarıya aktarmaz.

Topics

Resources

Stars

8 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages