mirror of
https://github.com/RoyalnetworkTR/simple-launcher.git
synced 2026-09-25 00:59:49 +03:00
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.
2.2 KiB
2.2 KiB
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.jsoniçindeki tek-kullanımlıkjoin_token'ı login sırasında sunucuya gönderir; sunucu bunuPOST /api/join/verifyile backend'e doğrular. Geçerli değilse (veya banlıysa) oyuncu atılır. Token sunmayan (vanilla / launcher dışı) istemcilergraceSecondsiç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/verifybanlı hesap/discord içinok:falsedö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.ymljar'ı derler. Çıktı:build/libs/athenacore-1.0.0.jar.
Kurulum (sunucu + modpack)
- Derlenen
athenacore-1.0.0.jar'ı hem backendWebBackend/files/mods/(required olarak sınıflandır → tüm istemcilere kilitli iner) hem de oyun sunucusununmods/klasörüne koy. - Oyun sunucusunda
ATHENA_SERVER_KEYortam değişkenini backend.envile aynı değere ayarla (veyaconfig/athenacore.cfgiçindeserverKey). Bu anahtar yoksa sunucu giriş doğrulamasını uygulamaz. - 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 (envATHENA_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.