Files
Barış Keser 83be058d23 feat: Athena v2 — Discord auth, AthenaCore mod, cross-platform launcher, CI
Backend (PHP+SQLite): Discord OAuth2 + JWT, coklu hesap (1 Discord = 3-5),
tek-kullanimlik join token (/api/join/prepare+verify), custom skin yukleme/sunma,
hesap/Discord/HWID ban, admin paneli kartlari; deterministik offline UUID (PHP<->C#
paritesi dogrulandi). 25 entegrasyon testi gecti.

AthenaCore (Forge 1.12.2): tek client+server mod — join token dogrulama + kick,
grace-gate, custom skin uygulama. Sunucu offline-mode kalir (UUID/dunya verisi korunur).

Masaustu: WPF -> Avalonia (Windows+Linux), Discord giris/hesap/skin/oyna; WMI/DPAPI
yerine cross-platform (machine-id HWID, AES-GCM secret store). Derlenir + calisir.

CI: athenacore-mod.yml (JDK8), desktop-release.yml (Win+Linux self-contained).
Deploy: deploy.sh (.env uretimi, php-gd, nginx Authorization gecisi) + HANDOFF.md.
Android: backend hazir; entegrasyon spec'i ANDROID_INTEGRATION.md.
2026-06-13 23:45:21 +03:00

2.2 KiB
Raw Permalink Blame History

AthenaCore (Forge 1.12.2)

Tek mod ile Athena sunucusunun istemci+sunucu tarafını backend'e bağlar:

  • Giriş doğrulama: İstemci, launcher'ın yazdığı config/athena_session.json içindeki tek-kullanımlık join_token'ı login sırasında sunucuya gönderir; sunucu bunu POST /api/join/verify ile backend'e doğrular. Geçerli değilse (veya banlıysa) oyuncu atılır. Token sunmayan (vanilla / launcher dışı) istemciler graceSeconds içinde atılır. Sunucu offline-mode kalır → UUID/dünya verisi bozulmaz.
  • Custom skin: İstemci her oyuncu için GET /api/skin/{uuid}.png|.json çekip skini uygular (vanilla doku boru hattına enjekte). Backend skini yoksa vanilla varsayılanı kullanılır.
  • Ban: /api/join/verify banlı hesap/discord için ok:false döner → giriş engellenir.

Yapı / Toolchain

  • JDK 8, ForgeGradle 2.3, Gradle 4.10.3, Forge 14.23.5.2860, mappings stable_39.
  • CI: .github/workflows/athenacore-mod.yml jar'ı derler. Çıktı: build/libs/athenacore-1.0.0.jar.

Kurulum (sunucu + modpack)

  1. Derlenen athenacore-1.0.0.jar'ı hem backend WebBackend/files/mods/ (required olarak sınıflandır → tüm istemcilere kilitli iner) hem de oyun sunucusunun mods/ klasörüne koy.
  2. Oyun sunucusunda ATHENA_SERVER_KEY ortam değişkenini backend .env ile aynı değere ayarla (veya config/athenacore.cfg içinde serverKey). Bu anahtar yoksa sunucu giriş doğrulamasını uygulamaz.
  3. Sunucu server.properties: online-mode=false (offline kalır; güvenlik AthenaCore + join_token ile sağlanır).

Config (config/athenacore.cfg)

  • backendUrl (vars: https://oyna.athenastudios.com.tr)
  • serverKey — yalnız dedicated sunucuda; gizli tut (env ATHENA_SERVER_KEY önceliklidir)
  • graceSeconds — token sunulması için tanınan süre (vars: 12)

⚠️ Doğrulama notu

Skin enjeksiyonu NetworkPlayerInfo alanlarını tip bazlı reflection ile bulur (obfuscation'a dayanıklı) ve tüm hatalar yutulur (skin uygulanmazsa vanilla varsayılan, çökme yok). Auth/ban kritik yolu kararlı API'lerle yazıldı. İlk kurulumda bir test dünyasında skin render'ı ve clientless-kick davranışı doğrulanmalıdır.