Neue Funktion: Gilden-Angriffszeit-Check #28
No reviewers
Labels
No labels
bug
documentation
duplicate
enhancement
good first issue
help wanted
invalid
question
wontfix
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
DasAoD/sfguildsv2!28
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "feature-guild-attack-time"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Was
Neue Seite „Angriffszeit" (Hauptnavigation, für alle eingeloggten Nutzer sichtbar), die live beim Spiel abfragt, wann eine beliebige Gilde angegriffen wird — server-, account- und gildenübergreifend, nicht nur für die von sfguildsv2 verwalteten Gilden.
Basiert auf
guild_battle_time.rs, das schon fertig als Konsolen-Tool unter/root/sf-api/examples/guild_battle_time.rsauf dns1 lag. Eingebaut statt separat gehalten, weil sfguildsv2 alles Nötige schon mitbringt: verschlüsselte SSO-Zugangsdaten pro Nutzer (sf_accounts) und das etablierte Muster PHP→Rust-Binary (proc_open+ Env-Vars), dascron_character_sync.php/sf_member_sync.phpschon nutzen. Separates Halten hätte bedeutet, Zugangsdaten ein zweites Mal irgendwo abzulegen — ohne Vorteil.Änderungen
rust_examples/guild_battle_time.rs: Konsolen-println!-Ausgabe durch JSON auf stdout ersetzt (analogcharacter_sync.rs) — bei jedem Fehler trotzdem ein{success:false, error:...}-Objekt statt nacktem Exit-Code, damit PHP immer sauber parsen kann. Gibt bewusst nur das eine Zeitstempel/Namen-Paar aus, das im ursprünglichen Skript tatsächlich angezeigt und getestet wurde ("wird angegriffen von"/Index 367) — ein zweites Paar wurde zwar geparst, aber nie angezeigt, dessen Bedeutung ist ungeklärt und wurde daher nicht geraten/mit ausgegeben.cargo build --release --example guild_battle_time), nach/opt/sf-api/guild_battle_timekopiert,chown root:www-data+chmod 750(wie die anderen PHP-aufgerufenen Binaries). End-to-end gegen den echten Spiele-Server getestet, bevor überhaupt PHP-Code geschrieben wurde.includes/sf_helpers.php: zwei neue Helper nebenfindSfAccountForGuild():findAnySfAccountForServer()— findet irgendeinen nutzbaren Account+Charakter auf einem Server, unabhängig von der Gilde (bevorzugt eigene Accounts, sonst Fallback auf alle — gleiches Vertrauensmodell wie der bestehende$userId=null-Cron-Pfad).listKnownServers()— Liste aller Server mit mindestens einem nutzbaren Charakter, fürs Dropdown.api/guild_attack_time.php: POST-Endpunkt, für jeden eingeloggten Nutzer (checkAuthAPI(), nicht die Moderator/Admin-Schranke anderer sf-api-Endpunkte). 10s Cooldown pro Session, da jeder Aufruf ein echter Login+Request gegen den Spiele-Server ist.public/guild_attack_check.php: neue Seite, Server-Dropdown + Gildenname-Feld, Ergebnis darunter. Folgt bestehenden Konventionen (checkAuth(), Card/Form-Group-Markup,fetchJSON/showAlert/showOverlay).includes/template.phpergänzt.rust_examples/README.mdDeployment-Anleitung umguild_battle_timeergänzt (für künftige Rebuilds nach S&F-Updates).Getestet
sfguilds.sqlite(inkl. Server-Liste, Fallback bei fremdem/nicht-existentem User).php -lauf allen geänderten/neuen PHP-Dateien.Bitte nach dem Deploy (
git pullauf dns1 — die Binary selbst liegt schon unter/opt/sf-api/guild_battle_time, kein extra Build-Schritt nötig) im echten Frontend gegenchecken.🤖 Generated with Claude Code