• v1.2.7 c130c85b17

    alientim released this 2026-08-23 22:45:27 +02:00 | 19 commits to main since this release

    Ein Sub-Lizenzserver meldet jetzt seinen kompletten eigenen Kunden-/Ticket-/Lizenzstand an den Master (huckepack auf dem 6h-Heartbeat + sofort nach jeder Aenderung). Neue Kunden-Detailseite zeigt unter dem Sub-Lizenzserver-Kunden dessen eigene Kunden mit Tickets/Lizenzen.

    Downloads
  • v1.2.6 ed2ed00a4e

    alientim released this 2026-08-23 22:08:33 +02:00 | 20 commits to main since this release

    Der Master kann jetzt Lizenzen ausstellen, die eine ANDERE Lizenzserver-Instanz voll funktionsfaehig machen -- ausser selbst weitere Lizenzserver-Lizenzen auszustellen (strukturelle Sperre, nicht ueber Gruppenrechte aufhebbar). Nur echte Admins auf der tatsaechlichen Wurzel-Instanz koennen das. Die eigene Lizenz des Masters bleibt exklusiv per create_master_license.py erzeugbar.

    Downloads
  • v1.2.5 286a3464f1

    alientim released this 2026-08-23 21:33:42 +02:00 | 21 commits to main since this release

    Tickets liefen im Rechtebaum komplett ueber licenses.view/.create/.edit mit, obwohl Tickets ein eigener, gleichberechtigter Navigationspunkt neben Kunden und Lizenzen ist. Neu: eigenes Rechtepaar tickets.view/.create/.edit, mit automatischer Migration. Ausstellen einer Lizenz aus einem Ticket bleibt bewusst an licenses.edit gebunden.

    Downloads
  • v1.2.4 619673ac76

    alientim released this 2026-08-23 21:11:14 +02:00 | 22 commits to main since this release

    Die Lizenzseite (Einstellungen -> Lizenz) hatte im Rechtebaum keinen eigenen Eintrag und lief komplett ueber settings_system.view/.edit mit. Neu: eigenes Rechtepaar settings_license.view/.edit, mit automatischer Migration (bestehende Gruppen mit settings_system.* behalten ihren bisherigen Zugriff auf die Lizenzseite).

    Downloads
  • v1.2.3 20abadb0e7

    alientim released this 2026-08-23 17:34:51 +02:00 | 23 commits to main since this release

    Dashboard nur noch intern

    / verlangt jetzt Login -- ein anonymer Besuch landet zuerst auf der Login-Seite statt auf einem 'bitte anmelden'-Platzhalter innerhalb der Dashboard-Huelle.

    Magic-Links zeigen den konfigurierten Endpunkt, nicht die IP

    Self-Service-Link, Kundenportal-Anfrage/-Zugang und der in 'Lizenz per E-Mail senden' eingebettete Link nutzen jetzt den unter Einstellungen -> Lizenz -> Anbieter & Lizenzserver gepflegten oeffentlichen Endpunkt, statt den Host-Header der gerade laufenden Admin-Anfrage (der z.B. die interne IP zeigen kann).

    Installation/Update wie gewohnt per sudo ./update.sh.

    Downloads
  • v1.2.2 2d920f581f

    alientim released this 2026-08-23 17:04:29 +02:00 | 24 commits to main since this release

    Kunde -> Ticket -> Lizenz als drei eigene, gleichberechtigte Seiten

    Statt Lizenzen nur ueber eine grosse eingebettete Historie-Tabelle in der Ticket-Detailseite zu erreichen, gibt es jetzt eine eigene, direkt ueber die Navigation erreichbare Lizenzen-Seite (/licenses, optional gefiltert nach ?customer_id=/?ticket_id=). Die Ticket-Detailseite zeigt dadurch nur noch eine kompakte Zusammenfassung der aktuellen Lizenz mit Link auf die volle Historie.

    Kundenportal: kein dauerhafter Link mehr, sondern zeitlich begrenzter Magic-Link

    Der bisherige dauerhafte, unbefristete Portal-Link (v1.2.0) wurde komplett entfernt. Neuer Ablauf:

    1. /portal/request -- Kunde gibt seine E-Mail ein (oeffentlich erreichbar, kein Login).
    2. Bei bekannter Adresse: ein frischer, einmalig nutzbarer Zugangs-Link wird per E-Mail verschickt, 30 Minuten gueltig.
    3. Nach Anklicken: eine Session, die nach 60 Minuten automatisch ablaeuft -- danach muss ein neuer Link angefordert werden.

    Zeigt IMMER dieselbe generische Erfolgsmeldung (auch bei unbekannter E-Mail-Adresse), um kein Enumerieren hinterlegter Adressen zu ermoeglichen.

    Installation/Update wie gewohnt per sudo ./update.sh.

    Downloads
  • v1.2.0 cee5311b1d

    alientim released this 2026-08-23 15:53:33 +02:00 | 26 commits to main since this release

    Bugfixes

    • Logs: behob einen Absturz auf /logs (global_check_interval war undefiniert) UND die eigentliche Ursache dahinter -- auf diesem Server schrieb bislang ueberhaupt nichts in live.log (unadaptiertes TESM-Fork-Leftover). Live-Log zeigt jetzt echte Ticket-/Lizenzaktionen.
    • Lizenz-Loeschung ist jetzt zusaetzlich inline in der Lizenzhistorie jedes Tickets erreichbar (vorher nur ueber die Lizenz-Detailseite).

    Neu: volle Ticketverwaltung (/tickets)

    • Liste mit Suche, Bearbeiten (Typ/Module/Laufzeit/Lifetime), Loeschen (nur ohne offene Lizenz, inkl. Historie).
    • Dashboard (/) ist jetzt eine rein informative Kachel-Uebersicht der aktiven Lizenzen (Ampelfarben: gruen >90 Tage, orange 30-90, rot <30/abgelaufen), im selben Kachel-Stil wie TESMs eigenes Geraete-Dashboard. Zeigt Firma + Hostname der Kundeninstanz (neu vom TESM-Client gemeldet, abwaerts-kompatibel).

    Neu: Kundenstammdaten

    Strasse/Hausnummer/PLZ/Ort/Ansprechpartner, E-Mail beim Anlegen jetzt Pflichtfeld.

    Neu: Kundenportal per Magic-Link (/portal/<token>)

    Kein Login noetig -- Kunde sieht ALLE eigenen Tickets/Lizenzen auf einen Blick und kann eigene Kontakt-/Anschriftdaten selbst pflegen. Ergaenzt den bestehenden Pro-Ticket-Link.

    Neu: Lifetime-Lizenzen

    Ticket-Flag "Lifetime" fuer nie ablaufende reguläre Lizenzen; eine zusaetzliche Trial-Ausstellung bleibt immer die normale 30-Tage-Variante.

    Nach Adversarial-Review zusaetzlich abgesichert

    • DB-seitiger Unique-Index verhindert doppelte offene Lizenzen aus einem Ticket bei nahezu gleichzeitigen Anfragen (z.B. Doppelklick im Self-Service).
    • Unique-Index auf Kundenportal-Token als Backstop.
    • Farbschwellen fuer Ablauf-Warnungen zwischen Dashboard und Ticketliste vereinheitlicht.

    SCHEMA_VERSION 2 -> 3 (automatische Migration inkl. Backup+Health-Check ueber install.sh). Installation/Update wie gewohnt per sudo ./update.sh.

    Downloads
  • v1.1.0 7e39320c87

    alientim released this 2026-08-23 11:45:45 +02:00 | 27 commits to main since this release

    Neu: Ticket-basiertes Lizenzmodell

    Konzept: Kunde kauft eine Lizenz -> Admin legt einen Kunden an (oder nutzt einen bestehenden) und weist ihm ein Ticket fuer eine Lizenz mit festen Eckdaten (Typ/Module/Laufzeit) zu. Das Ticket ist die dauerhafte, dem Kunden gehoerende Berechtigung -- unabhaengig von der konkreten signierten Lizenzdatei darunter. Admin ODER Kunde (per Self-Service-Link, kein Login noetig) koennen aus einem offenen Ticket jederzeit eine Lizenz erstellen, widerrufen und erneut erstellen. Ein Kunde kann mehrere Tickets haben (z.B. mehrere Systeme).

    Neue Funktionen

    • Tickets (/tickets/new, /tickets/<id>): Admin erstellt Tickets, kann daraus regulaere oder Trial-Lizenzen ausstellen, Ticket sperren/entsperren.
    • Self-Service (/self-service/<ticket_id>): oeffentlich per unerratbarem Magic-Link erreichbar (kein Kundenlogin) -- Kunde kann eigene Lizenz herunterladen, widerrufen und mit den Ticket-Eckdaten neu erstellen. Link steht auf der Ticket-Seite und wird in die 'Lizenz per E-Mail senden'-Nachricht aufgenommen.
    • Lizenz loeschen (Admin): widerrufene oder nie aktivierte (ausgestellte) Lizenzen koennen aufgeraeumt werden, ohne das Ticket anzutasten -- ueber das Ticket kann jederzeit eine neue mit denselben Eckdaten erzeugt werden.
    • Trial-Override: aus jedem Ticket kann zusaetzlich zu seinem eigentlichen Typ jederzeit eine 30-Tage-Trial-Lizenz mit vollem Modulumfang erstellt werden.

    Bugfix

    • Wird fuer einen Fingerprint eine neue Lizenz aktiviert (z.B. Trial durch Enterprise ersetzt), werden jetzt automatisch alle anderen fuer denselben Fingerprint noch als 'active' vermerkten Lizenzen auf 'deactivated' gesetzt. Vorher blieben beide faelschlich gleichzeitig als aktiv in der Uebersicht stehen.

    Migration

    SCHEMA_VERSION 1 -> 2. Bestehende, bereits direkt ausgestellte Lizenzen erhalten beim ersten Start automatisch ein passendes Ticket (rueckwirkende Migration, ueber das install.sh-Sicherheitsnetz mit Backup + Health-Check abgesichert) -- keine Lizenz wird durch das Update unerreichbar.

    Installation/Update wie gewohnt per sudo ./update.sh (Standard: neuester Release).

    Downloads
  • v1.0.1 b280cbf121

    v1.0.1 Stable

    alientim released this 2026-08-23 10:51:03 +02:00 | 28 commits to main since this release

    Reiner Tooling-Fix, kein App-Code geaendert: identischer update.sh-Fix wie TESM v1.2.1 (siehe dort fuer Details) -- 'latest' wird jetzt zuverlaessig ueber die Gitea-API aufgeloest.

    Downloads
  • v1.0.0 a9fc56ff47

    v1.0.0 Stable

    alientim released this 2026-08-23 10:38:45 +02:00 | 30 commits to main since this release

    Master-Lizenzserver fuer TESM (aus dem TESM-Hauptrepo ausgelagert)

    Kunden-/Lizenzverwaltung: Kunden anlegen, Lizenzen ausstellen (Trial/Standard/Custom/Enterprise), per E-Mail (Microsoft Graph) versenden oder herunterladen. Online-Aktivierungs-/Heartbeat-API (/api/activate, /api/deactivate, /api/heartbeat) sowie eine manuelle Offline-Code-Seite fuer Kunden ohne Netzwerkzugriff -- ein Protokoll, zwei Transportwege, siehe srv/tesm-license/licensing.py.

    Bereits produktiv im Einsatz (Testsystem 192.168.82.51, umbenannt zu TESM-Lizenzserver) und end-to-end gegen eine echte TESM-Instanz (online-aktiviert/deaktiviert) verifiziert, bevor die Auslagerung in dieses eigene Repo erfolgte -- siehe Commit-Historie.

    Downloads