Skip to content

Releases: KEYDALTR/kAuth

kAuth v1.0.4 - Güvenlik + Code Review

Choose a tag to compare

@KEYDALTR KEYDALTR released this 09 Apr 12:27

kAuth v1.0.4 - Güvenlik Denetimi + Kapsamlı Code Review

Bu sürüm 35 sorun içeren kapsamlı bir güvenlik denetimi ve code review sonucudur.

🔴 Kritik Güvenlik Düzeltmeleri

  • DataAccessException: DB hataları artık "kayıtlı değil" veya "yanlış şifre" gibi business fact'lere sessizce dönüştürülmüyor. MySQL hiccup'ında legitim kullanıcılar yanlışlıkla banlanmıyor.
  • Brute force bypass race: VerificationEntry.attempts artık AtomicInteger + ConcurrentHashMap.compute ile atomik check-and-update. İki paralel /dogrula denemesi artık race etmiyor.
  • Unified password validation: ChangePasswordCommand, PasswordResetCommand, admin /kauth sifredegistir artık AuthService.validatePassword() helper'ını kullanıyor. Weak password listesini (90+ entry) bypass edemiyor.
  • SQLite thread safety: Tüm metodlar synchronized(lock) içinde, WAL mode + busy_timeout aktif.
  • getIp null bucket: Null address'li oyuncular artık "unknown" bucket'ına eklenmiyor (cross-user session/ban collision önlendi).

🟠 Performans & Concurrency

  • setAuthenticated async-safe: Bukkit API çağrıları (sendPluginMessage, updateLastLogin) async thread'den çağrıldığında main thread'e trampoline ediliyor.
  • Admin komutları async: LogoutCommand, VerifyCommand, ChangePasswordCommand, KAuthCommand (kayitsil/sifredegistir/cikis) DB yazımları async.
  • Settings atomic snapshot: AtomicReference<Snapshot> pattern, cross-field invariant garantili. /kauth reload artık atomik.
  • ipAttempts decay: 5 dakikada bir tamamen silinmek yerine TTL bazlı decay.
  • ResultSet try-with-resources: Tüm DB query'lerinde explicit close.

🟡 Hata Yönetimi & UX

  • AsyncChatEvent: Deprecated AsyncPlayerChatEvent → Paper native AsyncChatEvent (1.21.11'de chat engeli aslında çalışmıyordu).
  • Dialog exception fallback: DialogProvider exception'ları log'luyor ve chat fallback'e düşüyor (stuck player önlendi).
  • Command blocked feedback: Giriş yapmamış oyuncular artık "giriş yapmadan kullanamazsınız" mesajı görüyor.
  • EmailService future tracking: .whenComplete callback ile SMTP fail → user'a "kod gönderilemedi" mesajı, pending code iptal.
  • LOGOUT → beginAuthFlow: Velocity remote logout sonrası oyuncu stuck kalmıyor, tam auth flow yeniden başlıyor.
  • onDisable teardown: Tüm session task'ları kapatılıyor, stale bossbar yok.
  • LoginCommand logAction %attempts%: Unlimited attempts case'i düzgün handle ediliyor.

Ayrıca

  • auth.max-login-attempts=0 uyarısı (güvenlik riski)
  • email.verification.code-length 4-9 arası clamp (int overflow önlendi)
  • Velocity config read fail → severe log + secret=empty (güvenli fallback)
  • sessionsByName secondary index → offline user için de clearSession çalışıyor
  • AuthMessage compact constructor validation (null/empty reject)
  • Task self-cancel handler throw ederse temizlenir
  • Duplicate root src/ dizini silindi

Test Sonuçları

  • 46/46 unit test geçti (PasswordUtil, AuthMessage, SQLiteDatabase)
  • 15/15 entegrasyon testi (Paper 1.21.11 + mineflayer bot)

Kurulum

Dosya Nereye
kAuth-1.0.4.jar Paper sunucusu plugins/
kAuth-Velocity-1.0.4.jar Velocity proxy plugins/

Velocity secret'ı ilk başlatmada otomatik oluşur, konsola basılır. Paper config.yml'de velocity.secret olarak yapıştırın.

kAuth v1.0.3 - Bossbar, Countdown, Optimize

Choose a tag to compare

@KEYDALTR KEYDALTR released this 09 Apr 11:12

kAuth v1.0.3

Yeni Özellikler

Görsel Bekleme Ekranı

  • Bossbar countdown (effects.waiting.bossbar) - kalan süre progress bar ile
  • Title/subtitle countdown (effects.waiting.title-countdown) - dialog açıkken de görünür, her saniye güncellenir
  • Arka plan ses döngüsü (effects.waiting.sound-loop) - oyuncu sıkılmasın diye
  • Actionbar/bossbar/title mesajlarında %time% placeholder (kalan saniye)

Yapılandırma

  • Şifre tekrarı aç/kapa (auth.require-password-confirmation)
    • true → /kayit <şifre> <tekrar> (varsayılan)
    • false → /kayit <şifre> (tek şifre, dialog'da ikinci alan gizlenir)
  • Max login attempts varsayılan 5 → 3 (configurable)
  • IP temp ban prelogin kontrolü (auth.ip-ban-on-prelogin)
    • Bloklanan IP AsyncPlayerPreLoginEvent'te kick edilir
    • Sunucu kaynağı harcamadan engellenir
    • Kick mesajında kalan süre gösterilir

Düzeltmeler

  • /cikis sonrası countdown/bossbar/title task'ları yeniden başlamıyordu → beginAuthFlow tam akış yeniden başlatır
  • Auth başarılı olunca title ekrandan temizlenmiyordu → clearTitle() + boş actionbar
  • Manuel logout sonrası session cache temizlenmiyor, reconnect'te auto-login oluyordu → session temizliği eklendi
  • Admin kayitsil/sifredegistir sonrası hedef oyuncu için tam auth flow yeniden başlatılıyor

Optimizasyonlar

  • Global Settings cache (config/Settings.java) - 20+ hot-path config değeri volatile field'larda, /kauth reload'da yenilenir
  • PlayerProtectionListener tamamen Settings kullanıyor, her event'te config okuma yok
  • Allowed commands O(1) Set lookup (önceden List traverse)
  • PlayerMoveEvent event.hasChangedBlock() shortcut + ignoreCancelled=true
  • Session state tek Map<UUID, SessionEntry> (önceden 2 ayrı map)
  • JoinListener unified update task - actionbar + bossbar + title countdown tek timer'a birleşti (6 task → 3 task)
  • Per-join AuthSession config cache - her tick config lookup yok
  • DB + PBKDF2 async - LoginCommand, RegisterCommand, ChangePasswordCommand, dialog callback'leri async thread'de

Performans Sonuçları (Spark Profiler)

60 saniye profil, 3 bot sürekli login/logout/wrong-password yük altında:

  • Main thread kAuth CPU: %1.7
  • Server genel: %94 idle
  • DB toplam: 24ms / 60s (query başına ~0.4ms)
  • PBKDF2 main thread'de sıfır (async çalışıyor)

Test Sonuçları

  • 38/38 unit test (PasswordUtil, AuthMessage, SQLiteDatabase)
  • 15/15 entegrasyon testi (Paper 1.21.11 sunucusunda mineflayer bot)

Kurulum

Dosya Nereye
kAuth-1.0.3.jar Paper sunucusu plugins/
kAuth-Velocity-1.0.3.jar Velocity proxy plugins/

Config otomatik oluşturulur. Velocity plugin kullanıyorsan plugins/kauth/config.properties'te ignored-servers=limbo,filter ayarını yapabilirsin (LimboFilter uyumluluğu).

kAuth v1.0.2 - LimboFilter Uyumluluğu

Choose a tag to compare

@KEYDALTR KEYDALTR released this 08 Apr 20:38

kAuth v1.0.2 - LimboFilter Uyumluluğu

Düzeltmeler

LimboFilter / Limbo Sunucu Desteği

  • Velocity plugin artık limbo/filtre sunucularını tanır ve bu sunuculara auth mesajı göndermez
  • plugins/kauth/config.properties dosyası ile yoksayılacak sunucular ayarlanabilir:
    ignored-servers=limbo,filter
  • ServerConnectedEvent → limbo sunucusu ise LOGIN gönderilmez
  • Broadcast mesajları limbo sunucularını atlar
  • Sunucu değişimi gecikmesi 500ms → 1s (LimboFilter sonrası stabilite)
  • Gecikme sonrası oyuncunun hala hedef sunucuda olduğu doğrulanır

Shadow JAR Düzeltmesi

  • Duplicate META-INF dosyaları (LICENSE.md, NOTICE.md) sorunu giderildi
  • Paper 1.21.11 plugin remap hatası düzeltildi

Kurulum

Dosya Nereye
kAuth-1.0.2.jar Paper plugins/
kAuth-Velocity-1.0.2.jar Velocity plugins/

LimboFilter Kullanıcıları İçin

  1. kAuth-Velocity-1.0.2.jar dosyasını Velocity proxy'ye yükleyin
  2. Sunucuyu başlatın → plugins/kauth/config.properties otomatik oluşur
  3. ignored-servers satırına limbo sunucunuzun adını yazın
  4. Velocity'yi yeniden başlatın

Test Sonuçları

  • 38 unit test ✓
  • 15 entegrasyon testi (Paper 1.21.11 + mineflayer bot) ✓

kAuth v1.0.1

Choose a tag to compare

@KEYDALTR KEYDALTR released this 08 Apr 19:45

kAuth v1.0.1 - Velocity + E-posta/SMTP Desteği

Yeni Özellikler

Velocity Proxy Senkronizasyonu

  • Sunucular arası auth durumu paylaşımı (plugin messaging kauth:sync)
  • Bir sunucuda giriş yapan oyuncu, diğer sunuculara geçtiğinde tekrar şifre sormaz
  • kAuth-Velocity-1.0.1.jar → Velocity proxy'ye yüklenir
  • Disconnect/server-switch olaylarında otomatik LOGIN/LOGOUT broadcast

MySQL/MariaDB Desteği

  • Config'den seçilebilir: database.type: sqlite | mysql
  • HikariCP connection pool ile yüksek performans
  • Mevcut SQLite veritabanları geriye uyumlu çalışmaya devam eder

E-posta Doğrulama (Kayıt)

  • SMTP ile doğrulama kodu gönderimi
  • Dialog GUI'de doğrulama kodu girişi
  • Chat fallback: /dogrula <kod> komutu
  • Configurable: kod uzunluğu, geçerlilik süresi, SMTP ayarları

Şifre Sıfırlama

  • /sifresifirla <kullanıcı> → e-posta adresine sıfırlama kodu gönderir
  • /sifresifirla onayla <kod> <yenişifre> → kodu doğrulayıp şifreyi değiştirir
  • Doğrulanmış e-posta adresi zorunlu

Kurulum

Dosya Nereye Yüklenir
kAuth-1.0.1.jar Paper sunucusu plugins/ dizini
kAuth-Velocity-1.0.1.jar Velocity proxy plugins/ dizini

Yapılandırma

config.yml içinde yeni bölümler:

  • database: - SQLite/MySQL seçimi
  • velocity: - Velocity sync aktif/pasif
  • email: - SMTP ayarları, doğrulama kodu ayarları

Test Sonuçları

  • 38 unit test: PasswordUtil (10), AuthMessage (6), SQLiteDatabase (22)
  • Tümü başarılı ✓

kAuth v1.0.0

Choose a tag to compare

@KEYDALTR KEYDALTR released this 07 Apr 20:48

kAuth v1.0.0

First public release of kAuth - Modern authentication plugin for Minecraft servers.

Features

  • Dialog GUI (1.21.5+ clients) + Chat fallback (older clients)
  • PBKDF2-SHA256 encryption (65,536 iterations)
  • IP brute-force protection & account limits
  • Weak password blocking
  • Session management & rule agreement system
  • ViaVersion/ViaBackwards support
  • Full effect system (title, sound, particles)

Requirements

  • Paper 1.20+ (1.21.5+ recommended)
  • Java 21+

Screenshots

Rules
Register
Login

Developed by KEYDAL Projects