Launcher Web API - Garados007/IlarosLauncher GitHub Wiki

Inhalt

  1. GET /web/...
  2. GET /ready/
  3. GET /news/
  4. GET /settings/
  5. POST /settings/
  6. GET /dir/...
  7. GET /bg/
  8. GET /bg/<file>
  9. GET /run-wow/
  10. GET /run-url/

Launcher Web API

Der Launcher wird auf dem Port 45789 gestartet, also ist die URL für den Zugriff: http://localhost:45789/. Eine verschlüsselte Verbindung über SSH wird nicht bereitgestellt, da es nur für den lokalen Computer gedacht ist. Eine Verbindung nach außen zu anderen Computern über diese Schnittstelle wird nicht unterstützt oder erlaubt. Theoretisch können aber mehrere Web-Clients eine Verbindung zu dieser API aufnehmen.

GET /web/...

Hier werden 1:1 alle Einträge aus Asset.dat/csf übertragen. Diese Inhalte können nur durch den Serverbetreiber über Updates bespielt werden.

GET /ready/

Sobald der Webserver bereit ist, wird eine kurze Meldung "1" komplett unformatiert ausgegeben. Ist er noch nicht bereit, so schlägt allein der Zugriff auf diese URL fehl. Diese Funktion wird nur von der Ladeanzeige beim Start des Launchers genutzt.

GET /news/

Hier wird ein JSON Dokument zurückgegeben, der alle Änderungen am Zustand des Servers seit dem letzten Aufruf von /news/ zurückgibt. Hier wird explizit entschieden welcher Client genau diese Funktion aufruft, damit auch wirklich alle von dieser Funktion profitieren können.

Der Aufbau des JSONs folgt nach folgendem Muster:

{
  "token": "2380023892389ae2",
  "events": [
    {
      "id": 71,
      "type": "update",
      "key": null,
      "date": "2011-10-10T14:48:00",
      "value": true
    }
  ]
}

Hierbei wird die ID von Eintrag zu Eintrag immer um 1 inkrementiert. Sollte ein Eintrag eintreffen mit dem gleichem Typ und Key wie ein bestehender Eintrag, so wird der Alte gelöscht. So hat man immer nur die neusten Events zu jeder Kategorie und nicht den kompletten Verlauf.

Zusätzlich wird ein Token mitgeliefert. Beim nächsten Aufruf muss man den Token wie folgt mitgeben: /news/?token=tokencode (tokencode entspricht hier dem Wert des Tokens). Dann bekommt man nur noch die Liste an Einträgen, die sich seit dem letzten Aufruf geändert haben. Der Token wird dann wieder unverändert mitgeschickt. Sollte man einen ungültigen Token verwenden, so wird dieser einfach erstellt und man erhält die komplette Liste. Wird ein Token seit 30 Sekunden nicht mehr abgefragt, so wird dieser gelöscht.

Für den Type der Einträge gilt folgende Liste:

type key value Beschreibung
update null false, version Es gibt eine Rückmeldung, ob neue Updates verfügbar sind. Falls ein Update verfügbar ist, so wird auch dessen Versionsnummer zurückgegeben.
ip null false, ip Die aktuelle IP des Spielservers wurde gefunden. Falls der Server online ist, so wird dessen IP angegeben, falls nicht, so steht da einfach false.
vote plattform-id false, true Ein Vote wurde über das jeweilige System abgegeben. Falls es Fehler gab, so steht dort false.
bgup null int Es wurden neue Hintergründe auf dem Server gefunden. Zudem wird mitgeliefert, wie viele neue es gibt.
bgdl id false, true Ein Hintergrund wurde heruntergeladen. Die ID gibt an, welcher Hintergrund das genau ist. Wenn es bei dem Download Probleme gab, so wird einfach false angegeben.
uset ["Gruppe", "Schlüssel"] int, float, bool, string Eine Benutzereinstellung hat sich geändert.

GET /settings/

Hierüber werden alle vom Benutzer festgelegten Einstellungen abgerufen. Diese werden als JSON formatiert übergeben. Grob ist diese Datei so aufgebaut:

{
  "Gruppe": {
    "Einstellung": "Wert"
  }
}

Der Wert kann hierbei Int, Float, String oder Bool sein. Bei den Einstellungen selbst ist nur folgendes vorgegeben. Es können jederzeit weitere hinzugefügt werden:

Gruppe Einstellung Wertetyp Standartwert Bescheibung
update download-backgrounds bool true Downloadet automatisch neue Hintergrundbilder
update search-updates bool true Sucht automatisch nach neuen Updates
update download-updates bool true Downloadet automatisch neue Updates
user username string null Der aktuelle Nutzername, der für das Autovoting genutzt wird
wow path string null Der Pfad der aktuellen WoW Installation

POST /settings/

Hier können Einstellungen gespeichert werde. Jedoch immer nur eine Einstellung auf einmal. Folgendes muss immer in den Post-Daten vorhanden sein:

group=Gruppenname
setting=Einstellungsname
value=Neuer Wert
type=Der Typ des neuen Werts (nur int, float, bool, string, null)

Der Typ null löscht den einzelnen Eintrag und der Wert von value wird dabei ignoriert.

GET /dir/...

Diese Methode ruft allgemeine Informationen zum lokalen Dateisystem ab. Der absolute Pfad im Dateisystem wird einfach an das /dir/ angehangen. Zusätzliche Parameter sind als GET-Parameter definierbar. Die Rückgabe erfolgt im JSON-Format wie z.B. hier:

{
  "url": "/dir/c/wow/client",
  "path": "C:\\wow\\client",
  "name": "client",
  "created": "2017-03-11T18:05:00",
  "modified": "2017-04-03T16:00:14",  
  "parent": "/dir/c/wow",
  "dirs": [
    {
      "url": "/dir/c/wow/client/data",
      "path": "C:\\wow\\client\\data",
      "name": "data",
      "created": "2017-03-11T18:05:00",
      "modified": "2017-03-11T18:05:00"
    }
  ],
  "files": [
    {
      "path": "C:\\wow\\client\\wow.exe",
      "name": "wow.exe",
      "created": "2017-03-11T18:05:00",
      "modified": "2017-03-11T18:05:00",
      "size": 18800000,
      "sizet": "18,8 MB",
      "types": [ "wow", "app", ".exe" ]
    }
  ]

Diese Schnittstelle kann einem einige Informationen zu den lokalen Dateien und Ordnern liefern. Ist ein Ordner oder Datei durch Sicherheitsebenen nicht lesbar oder versteckt, so werden diese ignoriert. Folgende Übersicht gilt bei den optionalen Parametern:

Parameter Werte Default Beschreibung
files true, false true Bestimmt, ob in der Ausgabe auch Dateien aufgelistet werden
dir true, false true Bestimmt, ob in der Ausgabe auch Ordner aufgelistet werden
filter siehe unten all Die Angabe der Typen von Dateien, die nur in der Ausgabe sichtbar sind
strict true, false false Aktiviert den strengen Filter
details true, false true Zusätzliche Daten wie Datumsstempel oder Dateigrößen werden mitgeliefert
emptydirs true, false true Leere Ordner sind in der Ausgabe mit enthalten

Folgende Filter sind für die Typen erlaubt. Will man mehrere Filter auswählen, so werden diese mit einem Komma getrennt aufgeschrieben. So ein Filter ausgeschlossen werden, so muss ein ! vor dem Filter selbst notiert werden.

Filter Dateien Beschreibung
all Alle Dateien Alle Dateien werden ausgewählt und passen auf diesen Filter
wow WoW-Anwendung Nur die WoW-Anwendung können mit diesen Filter gefunden werden
app Anwendungen Beliebige Anwendungen (*.exe, *.jar, *.jad)
img Bilder Bilddateien (*.png, *.pneg, *.jpg, *.jpeg *.gif, *.tiff, *.ico)
.Endung Dateien nach Endung Mit dem Präfix . kann nach einer bestimmten Dateiendung gesucht werden

Bei dem Filter der Dateien wird jede Datei nach ihrer Filtergruppe eingeordnet und dann wird mit dem aktuellen Filter eine Schnittmenge gebildet. Dann erfolgt eine Einordnung nach folgendem Schema:

Strenger Filter Schnittmenge Status
inaktiv min. ein Negativfilter oder kein Positivfilter ignoriert
inaktiv kein Negativfilter und mindestens ein Positivfilter Ausgabe
aktiv min. ein Negativfilter oder deckungsgleiche Positivfilter ignoriert
aktiv kein Negativfilter und alle Positivfilter deckungsgleich Ausgabe

Beispiel:

strict inaktiv:
Filter=app,.exe,!img  ignoriert: [img], [app,img], [.txt]
                      Ausgabe:   [app], [app,.jar], [app,.exe]
strict aktiv:
Filter=app,.exe,!img  ignoriert: [img], [app], [.exe], [.txt],
                      Ausgabe:   [app,.exe], [app,.exe,wow]

Achtung: Bei Verwendung von all passt jede Datei (abhängig vom strict). Bei Verwendung von !all passt keine Datei mehr.

GET /bg/

Liefert einem eine Liste aller vorhandenen Hintergrundbilder als JSON Liste zurück. Das immer verfügbare Standardbild wird nicht mit aufgelistet.

Beispiel:

[
  "image-01.jpg",
  "image-02.jpg"
]

GET /bg/<file>

Liefert einem direkt die angegebene Bilddatei aus dem Hintergrundbilderordner. Es ist nur der Name angebbar, der von /bg/ zurückgegeben wurde.

GET /run-wow/

Die zuvor eingestellte Wow.exe wird gestartet. Ist die nicht verhanden oder nicht eingestellt, dann geschieht nichts. Es gibt keine Rückgabe, da dies nur ein Steuerbefehl ist.

GET /run-url/

Öffnet eine URL, die als url GET Parameter übermittelt wurde mit dem Standardbrowser. Es werden nur URLs geöffnet, die den Präfix http:// oder https:// haben. Alle anderen Eingaben werden ignoriert.

⚠️ **GitHub.com Fallback** ⚠️