-
TESM-Lizenzserver 2.0.9 Stable
released this
2026-09-03 16:18:55 +02:00 | 0 commits to main since this releaseEine Datei genügt
upgrade.shundupdate.shholen sich das Release jetzt selbst. Auf einem
System, auf dem noch nichts von dieser Fassung liegt -- und das ist bei einem
Upgrade von 1.2.8 der Regelfall:curl -fsSLO https://gitea.int.eertmoed.net/alientim/tesm-license/raw/branch/main/deploy/upgrade.sh sudo bash upgrade.sh --app tesm-licenseBisher verlangte
upgrade.shein entpacktes Release daneben und brach sonst ab
-- die falsche Voraussetzung für genau den Fall, für den es gedacht ist. Liegt
das Skript doch in einem entpackten Release, wird dieses benutzt statt
eines Downloads: wer ein Paket ausgepackt hat, will nicht, dass ungefragt ein
anderes geladen wird. Mit--tag v2.0.9lässt sich eine Version festlegen.Der Bootstrap steht wortgleich in beiden Skripten; zwei eigenständige Dateien
können sich keine dritte teilen. Drei Tests halten das zusammen: die Blöcke
müssen gleich sein,upgrade.shdarf kein Release daneben verlangen, und mit
leeremPATHmuss der Block das fehlende Werkzeug benennen.update.shruftinstall.shnicht mehr perexecauf -- dadurch lief die
Aufräumfalle nie, und jedes Update liess ein entpacktes Release unter/tmp
liegen.Geprüft, nicht behauptet
Die einzelne
upgrade.shhat eine echte 1.2.8 in dasselbe Verzeichnis auf
diese Fassung gebracht: Release geladen, Clients, Zugangsdaten und die
DHCP-Konfiguration übernommen, Dienst läuft. Die Sicherung enthält die alte
Installation samtsqlite.dbundfernet.key(Verzeichnis 0700, Passphrase
0600),/tmpbleibt leer.Kleinigkeit
opusist aus allen Beispielen verschwunden. Das war der Name einer
Testinstanz; seit die Installationen wie ihre Anwendung heissen, ist er in
einer Hilfe nur ein Rätsel. In der Betriebsdoku stand dabei zweimal/opt
statt/srv.Installation
sudo bash /srv/tesm-license/deploy/update.sh tesm-licenseDownloads
-
TESM-Lizenzserver 2.0.8 Stable
released this
2026-09-03 14:53:39 +02:00 | 1 commits to main since this releaseUpgrade von 1.2.8 (Branch
SONNET5)upgrade.shfindet die alte Fassung jetzt auch dann, wenn sie nicht mehr unter
ihrem Hauptnamen liegt. Nach einemrename.shsteht unter/srv/tesm-licensedie
laufende Installation und die Fassung 1.x unter/srv/tesm-license-sonnet5--
die Vorgabe zeigte danach auf die neue Installation und brach ab (sauber, aber
unbrauchbar). Gesucht wird nun an beiden Orten; erkannt wird eine 1.x an der
sqlite.dbim Wurzelverzeichnis, denn diese Fassung legt ihre Datenbank unter
data/app.dbab.Der Weg selbst ist gegen echte Altdaten geprüft: aus einer 1.2.8 kamen Clients,
Zugangsdaten und die DHCP-Konfiguration in eine Probeinstallation, aus einem
1.2.7-Lizenzserver Kunden, Tickets und neu signierte Lizenzen samt
übernommenem Signaturschlüssel und Anbieterblock.sudo bash deploy/upgrade.sh --app tesm-licenseInstallation
sudo bash /srv/tesm-license/deploy/update.sh tesm-licenseDownloads
-
TESM-Lizenzserver 2.0.7 Stable
released this
2026-09-03 14:44:35 +02:00 | 2 commits to main since this releaseAnmeldeseite
- Die Wortmarke steht jetzt auf beiden Anmeldeseiten -- bisher hing sie an
der Funktionszeile, und die hatte der Lizenzserver nicht. Die Zeile darunter
ist optional: bei TESMÜBERWACHEN · BOOTEN · ANBINDEN, beim Lizenzserver
LIZENZIEREN. - Der Kartenkopf ist weg: eine Kachel mit zwei Buchstaben, die Überschrift
"Anmelden" und der Anwendungsname darunter sagten dasselbe wie die Marke
darüber und der Knopf darunter. - Marke und Karte stehen übereinander im Fluss statt gestapelt -- auf einem
flachen Fenster schnitt die Karte mitten durch den Schriftzug. - Die Marke ist kürzer, symmetrisch um die Mitte aufgebaut und hat volle
Deckkraft (sie ist kein Wasserzeichen hinter der Karte mehr). - Der Farbverlauf im Hintergrund hat wieder Geometrie und Stärke der
Fassung 1.x. - "Bitte melden Sie sich an." ist weg -- auf einer Seite aus Anmeldefeld,
Passwortfeld und einem Knopf "Anmelden" sagte das nichts. Wessen Sitzung
gerade ablief, erfährt jetzt stattdessen, warum er wieder hier ist.
Drei Dinge, die lautlos nichts taten
- Die Versionsnummer in der Fusszeile war falsch.
__version__stand fest
verdrahtet in drei Dateien: angezeigt wurde vier Releases lang 2.0.2. Die
Nummer kommt jetzt aus den Metadaten des installierten Pakets, Quelle ist
pyproject.toml. gap: var(--sp-7)-- die Skala kennt kein--sp-7. Eine undefinierte
CSS-Variable verwirft die ganze Deklaration ohne Meldung.- Ein Test dagegen fand sofort
--surface-0: dreimal benutzt, nie
definiert. Die Schrift auf der Kachel "kritisch" blieb dunkelgrau auf Rot,
die Dateivorschau hatte keinen Grund, und das Feld "Recht nicht vorhanden" in
der Rechtematrix war durchsichtig -- also so hell wie die Karte, obwohl es
dunkler sein sollte.
Installation
sudo bash /srv/tesm-license/deploy/update.sh tesm-licenseDownloads
- Die Wortmarke steht jetzt auf beiden Anmeldeseiten -- bisher hing sie an
-
TESM-Lizenzserver 2.0.6 Stable
released this
2026-09-03 14:12:44 +02:00 | 3 commits to main since this releaseInstallation umbenennen
Neu:
deploy/rename.sh. Aus einer Instanz wird die Hauptinstallation (oder
umgekehrt):sudo bash deploy/rename.sh --app tesm-license --from tesm-license-opus --to tesm-licenseDer Name steckt an mehr Stellen als im Verzeichnisnamen, und drei davon sind
leicht zu übersehen: derSITE_KEYin der Umgebungsdatei (daraus entsteht der
Name des Sitzungscookies), die Zertifikats- und ACME-Pfade in der Datenbank,
und derserver_nameder nginx-Site --install.shschreibt die Site aus
seiner Vorlage neu, sobald sich diealias-Pfade ändern, und ohne den Namen
aus der Datenbank stehen danach zwei Sites mitserver_name _auf Port 80.Das venv wird verworfen und neu gebaut: seine Konsolenskripte tragen den
absoluten Pfad im Shebang, und danach zeigtvenv/bin/gunicornauf einen
Interpreter, den es nicht mehr gibt.Belegt der Zielname noch eine Installation der Fassung 1.x, wandert alles,
was ihn belegt, in ein Archiv/srv/<ziel>-sonnet5-- Verzeichnis, Protokolle,
ACME-Pfad, logrotate-Datei, systemd-Units und nginx-Site. Gelöscht wird nichts.Ports und HTTPS bleiben wie sie waren, ein vorhandenes Zertifikat zieht mit.
Alle angemeldeten Benutzer werden abgemeldet: das Sitzungscookie heisst
danach anders.Installation
sudo bash /srv/tesm-license/deploy/update.sh tesm-licenseDownloads
-
TESM-Lizenzserver 2.0.5 Stable
released this
2026-09-03 12:48:36 +02:00 | 5 commits to main since this releaseAnmeldebanner (MOTD)
Der Zustand der Installation steht wieder im SSH-Login-Banner:
TESM · Lizenzserver 2 Kunden · 2 Lizenzen ausgestelltEine Tagline hat der Lizenzserver bewusst nicht: die Funktionsliste von TESM
wäre dort falsch, und eine erfundene wäre schlimmer als keine.Das Banner der Fassung 1.x hing am alten Quellverzeichnis und importierte
dafür die ganze Anwendung samt venv. Nach einem Umstieg zeigte es damit die
Zahlen einer Datenbank, die niemand mehr füllt -- eingefroren, aber
unverdächtig.Diese Fassung benutzt nur die Standardbibliothek: kein venv, kein Import
der Anwendung, die Datenbank wird nur lesend geöffnet. Ein Lauf dauert
Millisekunden statt eines Flask-Starts, und der Aufruf ist mittimeout 3
abgesichert -- ein Banner darf eine Anmeldung nie blockieren.install.shlegt es an; ein Banner der Vorgängerfassung wird entfernt, aber
nur, wenn es genau auf dessenmotd_banner.pyzeigt. Von Hand prüfen:sudo /usr/local/lib/tesm/tesm-motd --app tesm-license --root /srv/<name>Damit es nicht zwei Wahrheiten über "online" gibt, steht die Zählung der
Statusübersicht jetzt an einer Stelle; das Banner trägt sie wortgleich, und ein
Test vergleicht beide.Installation
sudo bash /opt/tesm-license/deploy/update.sh tesm-license latest --instance <name>Downloads
-
TESM-Lizenzserver 2.0.4 Stable
released this
2026-09-03 12:21:39 +02:00 | 6 commits to main since this releaseAutomatische Abmeldung -- jetzt wirklich
In 2.0.3 war die Ursache nur halb behoben. Zwei Gruende, beide fuer sich
ausreichend:- Eine zweite Schreibstelle. Die Sitzung wird nicht nur beim Lesen einer
Anfrage verlängert, sondern auch beim Speichern -- und das geschieht, sobald
eine Anfrage die Sitzung anfasst. Ein neu erzeugtes CSRF-Token genügt dafür.
Die Prüfung an der ersten Stelle lief damit ins Leere. Sitzungsdaten werden
weiter gespeichert, nur die Fristen bleiben stehen. Dieselbe Stelle benutzte
ausserdem die fest eingebaute Zeit statt der einstellbaren; bei der Vorgabe
von 30 Minuten fiel das nicht auf. - Ein Tab, der noch das alte Skript fährt. Die Kennzeichnung automatischer
Anfragen kam bisher nur vom Browser -- wer seit gestern Abend angemeldet ist,
hat die Seite seit gestern Abend nicht neu geladen und schickt sie deshalb
nicht. Genau dieser Tab ist der Fall, um den es geht. Der Server weiss es
jetzt ohne Zutun des Browsers: die Endpunkte, die eine Kachel oder ein
Protokoll nachlädt, sind als Aktualisierungsausschnitt gekennzeichnet und
gelten damit immer als automatisch.
Dass es auf dem Lizenzserver zuverlässig funktionierte, war der entscheidende
Hinweis: dort pollt keine Kachel.Ein Neuladen des Tabs ist damit nicht mehr nötig -- die Abmeldung greift
auch bei einem Tab, der seit Stunden offen steht.Sichtbares Ende einer abgelaufenen Sitzung
Die Statusübersicht antwortet auch öffentlich. Nach dem Ablauf kam deshalb eine
200 mit den öffentlichen Kacheln zurück, und der offene Tab zeigte weiter eine
Oberfläche, als sei alles in Ordnung. Ein zusätzlicher Kopf sagt es unabhängig
vom Statuscode; der Browser lädt daraufhin neu und zeigt die Anmeldemaske.Installation
sudo bash /opt/tesm-license/deploy/update.sh tesm-license latest --instance <name>Downloads
- Eine zweite Schreibstelle. Die Sitzung wird nicht nur beim Lesen einer
-
TESM-Lizenzserver 2.0.3 Stable
released this
2026-09-03 11:43:05 +02:00 | 7 commits to main since this releaseUpgrade von der Fassung 1.x
Neu:
deploy/upgrade.sh.sudo bash deploy/upgrade.sh --app tesm-licenseSichern -> abschalten -> installieren -> Lizenzbestand übernehmen. Der Lauf
gegen echte Altdaten hat zwei Fehler gezeigt, die jede Übernahme unmöglich
machten:- Der alte Signaturschlüssel ist URL-sicher kodiert (
-und_). Das neue
Protokoll prüft Base64 streng -- richtig so, aber beim Lesen einer alten
Datei brach die Übernahme mit einem Traceback über "kein gültiges Base64" ab.
Umkodiert wird jetzt an der Grenze zum Altformat; der kanonische Decoder
bleibt streng. - Der Anbieterblock wurde aus den Einstellungen der neuen Installation
gebaut, und ohne Endpunkt brach die Übernahme ab -- bei einem Upgrade steht
dort nie etwas. Endpunkt und Anbieterdaten kommen jetzt aus der alten
Installation, aber nur dort, wo neu nichts steht.
Der alte Signaturschlüssel wird übernommen: sonst müsste jeder Kunde einen
Ausstellerwechsel bestätigen (--new-keyerzwingt das Gegenteil). Jede Lizenz
wird neu signiert, und der Bericht nennt namentlich, wer eine neue Lizenzdatei
braucht -- die Bindung an eine Maschine gilt nur für die alte Datei.Automatische Abmeldung -- sie hat nie ausgelöst
Ein offener Tab fragt seine Kacheln alle 15 Sekunden neu ab, und jede
Abfrage verlängerte das Leerlauffenster. Nachweisbar an einer Sitzung, deren
last_seen_ateine Minute alt war, obwohl seit zehn Stunden niemand am Rechner
sass. Der Browser kennzeichnet automatische Anfragen jetzt, der Server
verlängert daraufhin nichts, undlast_seen_atbleibt, was der Name sagt: der
letzte Zeitpunkt, an dem ein Mensch da war.Fällt die Sitzung während des Pollens, antwortet der Server mit 401 statt mit
einer Umleitung: der Tab lädt neu und zeigt die Anmeldemaske, statt stumm mit
beliebig alten Zahlen stehenzubleiben.Ein bereits offener Tab muss einmal neu geladen werden -- bis dahin läuft
dort noch das alte Skript.Audit
Der Name einer Konsolen-Mitschrift ist jetzt ein Verweis auf die Datei. Es ist
derselbe Weg wie zuvor, nur einen Klick weit. Verlinkt wird nur, wenn die Datei
noch existiert und der Betrachter Protokolldateien lesen darf.Installation
tar xzf tesm-license-v2.0.3.tar.gz && cd tesm-license sudo bash deploy/install.sh --app tesm-license --https --domain lizenz.firma.deBestehende Installation:
sudo bash /opt/tesm-license/deploy/update.sh tesm-license latest --instance <name>Downloads
- Der alte Signaturschlüssel ist URL-sicher kodiert (
-
TESM-Lizenzserver 2.0.2 Stable
released this
2026-09-03 00:17:02 +02:00 | 8 commits to main since this releaseOberfläche
- Echte Umlaute in allen Texten -- Seiten und Dokumentation.
- "Änderungen" heisst jetzt Audit; die Ampel dort ist eindeutig: Info grün,
Hinweis orange, Warnung rot. Ein erfolgreicher Heartbeat an den Master wird
nicht mehr protokolliert, ein fehlgeschlagener schon. - Der Knopf im Dateifeld ist im dunklen Thema wieder lesbar.
- In der Rechtematrix ist dunkler jetzt nicht vorhanden -- und nicht mehr
anhakbar. - Fusszeile mit Version und Rechteinhaber an einer Stelle, statt in zwei
Vorlagen getrennt.
Sitzung
- Neu einstellbar: automatische Abmeldung bei Leerlauf, Vorgabe 30 Minuten
(Systemeinstellungen). Aktivität setzt den Zähler zurück; die Zeit greift
ohne Neustart des Dienstes.
Sonstiges
Der Release-Tarball liegt nicht mehr im Repository -- er hängt nur noch am
Release, wo er hingehört.Aktualisierung
update.shfunktioniert jetzt tatsächlich: die Bezugsquelle war auf einen
Platzhalter voreingestellt, das Repository heisst jetzt wie die Anwendung, und
alles nach dem Tag geht unverändert aninstall.shweiter -- nur so lässt sich
eine benannte Instanz aktualisieren:sudo bash /opt/tesm-license-opus/deploy/update.sh tesm-license latest --instance opusOhne
--instanceentstünde daneben eine zweite Installation. Ausserdem bleiben
die Ports einer bestehenden Installation erhalten: eine benannte Instanz
fiel bisher auf 8080/8443 zurück, auch wenn sie auf Port 80 lief -- ein Reverse
Proxy davor hätte danach ins Leere gezeigt.Zwei Prüfungen darin hatten nie zugegriffen: die Suche nach
install.shim
entpackten Paket lief eine Ebene zu flach und meldete den Fehler als
unbrauchbaren Download, und die CRLF-Prüfung rieffileauf -- ein Paket, das
auf einem schlanken Server fehlt, worauf die Prüfung stillschweigend zustimmte.Installation
tar xzf tesm-license-v2.0.2.tar.gz && cd tesm-license sudo bash deploy/install.sh --app tesm-license --https --domain lizenz.firma.de sudo -u tesm-license tesm-license-admin init-key # sofort sichern sudo -u tesm-license tesm-license-admin bootstrap sudo -u tesm-license tesm-license-admin create-adminBestehende Installation:
sudo bash /opt/tesm-license/deploy/update.sh tesm-licenseDownloads
-
TESM-Lizenzserver 2.0.1 Stable
released this
2026-09-02 21:21:09 +02:00 | 16 commits to main since this releaseBehebt: Dateifreigaben wurden nie eingebunden ("mount error(1): Operation not permitted"). Ursache war der eigene Mount-Namensraum des Dienstes; der Mount laeuft jetzt ueber nsenter im Namensraum des Wirts und wird von dort in den Dienst weitergegeben. Die Haertung bleibt vollstaendig erhalten.
SHA-256: 9d6ad33f9317ad3281ddc962360dc2cd36b7900267c4f4d9fda643dd4cc7a5d6
Downloads
-
TESM-Lizenzserver 2.0.0 Stable
released this
2026-09-02 18:37:40 +02:00 | 17 commits to main since this releaseVollstaendiger Neubau. Der vorherige Stand liegt im Zweig SONNET5.
Dieses Archiv enthaelt nur, was zum Installieren und Betreiben des Lizenzservers noetig ist -- inklusive der Serverhaelfte des Lizenzprotokolls, ohne Tests und ohne die Anwendung TESM.
sudo bash deploy/install.sh --app tesm-license --https --domain lizenz.firma.de sudo -u tesm-license tesm-license-admin init-key sudo -u tesm-license tesm-license-admin bootstrap sudo -u tesm-license tesm-license-admin create-adminDen Signaturschluessel aus init-key sofort sichern.
SHA-256: 9c19720ce943c7a7595b3afd95edd64cef236384900ab52d50b0cf7583a9d30b
Downloads