Clients und Server-Stubs mittels Swagger Codegen erzeugen

Mit Swagger gibt es seit einigen Jahren eine Möglichkeit REST-API sinnvoll zu dokumentieren und zu generieren. Aus einer YAML-Datei, welche die Beschreibung der API enthält kann mit dem Swagger Code Generator (kurz Swagger Codegen) eine entsprechende Client-Bibliothek oder ein Server-Stub erzeugt werden. Eine solche minimale YAML-Datei könnte wie folgt aussehen:

swagger: '2.0'
info:
  description: "API"
  version: "2018.04"
  title: "API"
host: "api.example.com"
basePath: "/v1"
schemes: 
- "https"
paths:
  /tree:
    get:
      produces: 
      - "application/json"
      summary: Returns the document tree
      tags:
      - "Document tree"
      description: Lorem Ipsum dolor sit amet
      responses:
        200:
          description: OK

In dieser Datei wird eine Ressource mit dem Namen tree und für diese eine Get-Methode definiert. Um daraus nun die Client-Bibliotheken bzw. Server-Stubs zu generieren muss der Swagger Codegen über Git bezogen, anschließend kompiliert und paketiert werden:

https://github.com/swagger-api/swagger-codegen.git
cd swagger-codegen
mvn clean package

Zur Erzeugung eines PHP-Server-Stubs mit dem Slim-Framework kann der Swagger Codegen anschließend wie folgt genutzt werden:

java -jar modules/swagger-codegen-cli/target/swagger-codegen-cli.jar generate -i api.yaml   -l slim -o folder/slim

Eine Client-Bibliothek wird auf dem gleichen Weg erzeugt:

java -jar modules/swagger-codegen-cli/target/swagger-codegen-cli.jar generate -i api.yaml   -l javascript -o folder/javascript

In diesem Fall wird eine JavaScript-Client-Bibliothek erzeugt. Die verfügbaren Sprachen bzw. Frameworks für die Clients und Server-Stubs erzeugt werden können, können mit dem Befehl:

java -jar modules/swagger-codegen-cli/target/swagger-codegen-cli.jar langs

angezeigt werden. Die Ausgabe spezifiziert alle vorhandenen Generatoren:

Available languages: [ada, ada-server, akka-scala, android, apache2, apex, aspnetcore, bash, csharp, clojure, cwiki, cpprest, csharp-dotnet2, dart, elixir, elm, eiffel, erlang-client, erlang-server, finch, flash, python-flask, go, go-server, groovy, haskell-http-client, haskell, jmeter, jaxrs-cxf-client, jaxrs-cxf, java, inflector, jaxrs-cxf-cdi, jaxrs-spec, jaxrs, msf4j, java-pkmst, java-play-framework, jaxrs-resteasy-eap, jaxrs-resteasy, javascript, javascript-closure-angular, java-vertx, kotlin, lua, lumen, nancyfx, nodejs-server, objc, perl, php, powershell, pistache-server, python, qt5cpp, r, rails5, restbed, ruby, rust, rust-server, scala, scala-gatling, scala-lagom-server, scalatra, scalaz, php-silex, sinatra, slim, spring, dynamic-html, html2, html, swagger, swagger-yaml, swift4, swift3, swift, php-symfony, tizen, typescript-aurelia, typescript-angular, typescript-inversify, typescript-angularjs, typescript-fetch, typescript-jquery, typescript-node, undertow, ze-ph, kotlin-server]

Lizenziert ist der Swagger Codegen unter der Apache Licence in der Version 2 und somit freie Software.

Wiki für Smart Home Hardware

FHEM ist ein freies Projekt welches sich mit einer Server-Lösung auf Perl-Basis zur Verwaltung und Steuerung eines Smart Home beschäftigt. Ich persönlich bevorzuge für diesen Zweck die Lösung Home Assistant. Trotzdem ist neben dem eigentlichen Projekt die FHEM Wiki sehr interessant.

Die FHEM Wiki

Dort findet man neben den eigentlichen Informationen über FHEM, viele Informationen rund um Smart Home Hardware, wie z.B. verschiedenen Aktoren und Sensoren. Die Inhalte der Wiki sind unter der GNU Free Documentation License lizenziert. Entdeckt werden kann die Wiki unter wiki.fhem.de, das zugrundeliegende Projekt ist auf fhem.de zu finden.

Server gebraucht kaufen

Ab und an baue ich mir einen Server für den Heimgebrauch zusammen. Dieser muss dabei nicht frisch vom Band kommen, sondern kann durchaus gebraucht sein. Natürlich hat man beim privaten Gebrauchtkauf dass Problem das man nicht ganz genau weiß was man bekommt.

Einer der Server der Serverschmiede

Die Vorteile des Gebrauchtkaufes, ohne die meisten der Nachteile bietet der Händler Serverschmiede.com GmbH, dessen Webseite unter der gleichnamigen Domain serverschmiede.com zu finden ist. Dort werden aufgearbeitete Server und deren Komponenten angeboten und kann sich so schnell einen Server zusammenstellen, der preislich wesentlich unter dem Neupreis liegt. Daneben erhält man auf Wunsch eine bis zu 36-monatige Garantie. Für den Hausgebrauch und die eine oder andere Firma ist dies sicherlich eine gangbare Alternative zu einem Neukauf.

SSH mit mehreren Schlüsseln nutzen

Normalerweise erzeugt man einen privaten und einen öffentlichen Teil seines SSH-Schlüssels, hinterlegt den öffentlichen Teil auf den entsprechenden Servern und loggt sich mit diesen dort ein. Nun kann es aber durchaus vorkommen, dass man mit unterschiedlichen Schlüsselpaaren arbeiten muss um sich auf verschiedenen Servern einzuloggen. Zur Lösung dieses Problems existieren zwei Herangehensweisen, welche beide mit der SSH-Konfigurationsdatei arbeiten. Die Konfigurationsdatei ist im Home-Verzeichnis der Nutzers unter .ssh/config zu finden ist. Bei der ersten Möglichkeit werden die entsprechenden Schlüssel in der Konfigurationsdatei hinterlegt:

IdentityFile ~/.ssh/id_rsa
IdentityFile ~/.ssh/id_rsa_production
IdentityFile ~/.ssh/id_rsa_test
IdentityFile ~/.ssh/id_rsa_integration

Damit werden bei einem Login auf einem Server die Schlüssel der Reihe nach durchprobiert. Bei der zweiten Möglichkeit wird ein Host pro Server konfiguriert:

Host production production.example.com
    HostName production.example.com
    User root
    IdentityFile ~/.ssh/id_rsa_production
    

Host test test.example.com
    HostName test.example.com
    User root
    IdentityFile ~/.ssh/id_rsa_test

Host integration integration.example.com
    HostName integration.example.com
    User root
    IdentityFile ~/.ssh/id_rsa_integration

In der Konfiguration des Hosts befinden sich neben dem Host auch die zu nutzende Schlüsseldatei. Als weiteren Vorteil kann man die SSH-Verbindung nun über den definierten Kurznamen aufrufen:

ssh production

Dabei wird die Verbindung mit der definierten Schlüsseldatei aufgebaut, so dass ein durchprobieren der unterschiedlichen Schlüssel vermieden wird.

Nethack-Server im Browser

Nethack, einer der Klassiker des Roguelike, spielt man normalerweise im Terminal. Doch das muss nicht so sein, wenn man sich eines Nethack-Servers bedient. Einer der bekannteren Nethack-Server ist der alt.org Server. Der Server bietet unterschiedliche Nethack-Versionen und die Terminal-Emulation läuft komplett im Browser. Nach der Registrierung, kann man nicht nur auf dem Server spielen, sondern auch anderen Spielern beim Spiel zuschauen.

Nethack auf alt.org/nethack/

Neben dem Spiel im Browser bietet der Server noch einen anderen Vorteil – die sogenannten Bones files. Stirbt ein Spieler, so kann es passieren das die aktuelle Ebene, mitsamt seines Skelettes und seines Inventars in einem Bone file gespeichert wird. Wenn man nun spielt, betritt man ab und an ein solches Bone file und findet die Hinterlassenschaften eines anderen Spielers. So kommt ein wenig Multiplayer-Gefühl im Singleplayer-Nethack auf.