Skip to content
This repository has been archived by the owner on Mar 15, 2024. It is now read-only.
RettichLP edited this page Oct 9, 2022 · 2 revisions

Version: v1.5.0

Wozu wird eine API benötigt?

Für manche Funktionen wie zum Beispiel Hausverbote, braucht man einen zentralen Speicher, um diese allen Spielern zur Verfügung zu stellen. Des Weiteren ist durch einen zentralen Speicher auch eine schnellere Anpassung möglich. Wenn zum Beispiel ein neuer Navipunkt gewünscht war, hätte man auf ein Update warten müssen. Ab der v1.5.0 werden Navipunkte von der API zur Verfügung gestellt und können direkt über das Spiel hinzugefügt werden.
Ein weiterer Grund für eine API war, dass es sicherer ist. Wir haben eine Liste von Navipunkten von UnicaCity bekommen unter der Voraussetzung, dass diese nicht veröffentlicht wird. Bis jetzt haben wir das über ein Environment Secret in GitHub gelöst. Durch die API ist es möglich die Liste über einen Endpunkt bereit zu stellen. Den Zugriff auf diese Endpunkte können wir besser schützen und die Liste ist nicht mehr durch Dekompilierung zu finden.

Authorization

Die Autorisierung erfolgt über ein Token, das beim Start des Spiels generiert wird. Diese Token ist mit der UUID des Spielers verknüpft und ermöglicht dadurch ein einfaches Zugriffs-Management. Zum Beispiel bei Hausverboten darf nur der Rettungsdienst sehen, wer das Hausverbot eingetragen hat. Die UUID ermöglicht eine Abfrage, in welcher Fraktion der Spieler ist.

Das von uns generierte Token ist ein Hash aus der UUID des Spielers, einem Secret (Salt) und dem Mojang Session Token. Dieses wird mit dem Mojang Session Token an den Token Endpunkt gesendet. Über das mitgelieferte Mojang Session Token wird das Token validiert und anschließend nur das Token und die UUID des Spielers gespeichert. Das Mojang Session Token wird nicht weiter benutzt oder gespeichert.

Speicherung

Welche Daten speichern wir?

Entries Fields
BlacklistEntry
  • reason Blacklistgrund
  • price Blacklistpreis
  • kills Blacklistkillanzahl
  • issuer UUID des Spielers, der den Blacklistgrund hinzugefügt hat
  • HouseBanEntry
  • uuid UUID des Spielers mit dem hausverbot
  • houseBanReasonList Liste mit Hausverbotgründen des Spielers
  • startTime Beginn des Hausverbots
  • HouseBanReason
  • reason Hausverbotgrund
  • days Anzahl der Tage des Hausverbotgrundes
  • issuer UUID des Spielers, der den Hausverbotgrund hinzugefügt hat
  • NaviPointEntry
  • name Name des Navipunktes
  • x x-Koordinate
  • y y-Koordinate
  • Z z-Koordinate
  • PlayerGroup
  • uuid UUID des Spielers
  • StatisticEntry
  • uuid UUID des Spielers
  • kills Anzahl der Kills
  • deaths Anzahl der Tode
  • revives Anzahl der Revives
  • services Anzahl der Services
  • playTime Anzahl der PayDays (Spielzeit)
  • TokenEntry
  • uuid UUID des Spielers
  • token Token des Spielers
  • version Version des Addons
  • time Zeitpunkt der Registrierung
  • WantedEntry
  • reason Wantedgrund
  • points Wantedpoints
  • issuer UUID des Spielers, der den Wantedgrund hinzugefügt hat
  • Endpunkte

    Welche Endpunkte stellen wir zur Verfügung?

    BlacklistController

    No. Request Permission
    1 GET /blacklistreason/{factionString} NONE
    2 GET /blacklistreason/{factionString}/add
    Parameter:
  • reason: String
  • price: Integer
  • kills: Integer
  • Rettungsdienst[3-6]
    3 GET /blacklistreason/{factionString}/remove
    Parameter:
  • reason: String
  • Rettungsdienst[4-6]

    BroadcastController

    No. Request Permission
    1 GET /broadcast/queue NONE
    2 GET /broadcast/send
    Parameter:
  • message: String
  • ADMIN

    HousebanController

    No. Request Permission
    1 GET /houseban
    Parameter:
  • advanced: Boolean
  • advanced: true - Rettungsdienst
    advanced: false - NONE
    2 GET /houseban/add
    Parameter:
  • name: String
  • reason: String
  • Rettungsdienst[3-6]
    3 GET /houseban/remove
    Parameter:
  • name: String
  • reason: String
  • Rettungsdienst[4-6]

    HousebanReasonController

    No. Request Permission
    1 GET /housebanreason advanced: true - Rettungsdienst
    advanced: false - NONE
    2 GET /housebanreason/add
    Parameter:
  • reason: String
  • days: Integer
  • Rettungsdienst[4-6]
    3 GET /housebanreason/remove
    Parameter:
  • reason: String
  • Rettungsdienst[4-6]

    ManagementController

    No. Request Permission
    1 GET /mgmt/health ADMIN
    2 GET /mgmt/user ADMIN

    NaviPointController

    No. Request Permission
    1 GET /navipoint NONE
    2 GET /navipoint/add
    Parameter:
  • name: String
  • x: Integer
  • y: Integer
  • z: Integer
  • ADMIN
    3 GET /navipoint/remove
    Parameter:
  • name: String
  • ADMIN

    PlayerGroupController

    No. Request Permission
    1 GET /player/ NONE
    2 GET /player/groups NONE
    3 GET /player/add
    Parameter:
  • name: String
  • group: String
  • ADMIN
    4 GET /player/remove
    Parameter:
  • name: String
  • group: String
  • ADMIN

    StatisticController

    No. Request Permission
    1 GET /statistic/ NONE
    2 GET /statistic/addKill NONE
    3 GET /statistic/addDeath NONE
    4 GET /statistic/addRevive NONE
    5 GET /statistic/addService NONE
    6 GET /statistic/addPlayTime v1.6.0 NONE

    TokenController

    No. Request Permission
    1 GET /create
    Parameter:
  • authToken: JWT OAuth Token
  • version: String v1.6.0
  • NONE
    2 GET /revoke NONE

    WantedReasonController

    No. Request Permission
    1 GET /wantedreason NONE
    2 GET /wantedreason/add
    Parameter:
  • reason: String
  • points: Integer
  • Polizei[4-6]
    3 GET /wantedreason/remove
    Parameter:
  • reason: String
  • Polizei[4-6]
    Clone this wiki locally