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

25 lines
2.2 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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.