61 Commits
Author SHA1 Message Date
alientim 1a13ce4c2a Version 2.8.44 / Lizenzserver 2.8.22: Client-Konfiguration am richtigen Ort, Fusszeile bleibt stehen 2026-09-17 11:24:18 +02:00
alientim 7f8f4f9de8 Version 2.8.42: sichtbare Pfeile an allem Aufklappbaren 2026-09-17 10:42:02 +02:00
alientim 68bda48d72 Version 2.8.38: eine Rechnung fuer die Resttage, Module benannt 2026-09-17 09:26:34 +02:00
alientim 0117489b5a Version 2.8.36: Lizenzabfrage fuer ein RMM auf der Maschine 2026-09-17 08:49:27 +02:00
alientim 7fd5ba8b54 Version 2.8.31: Protokollverlauf verlangt keine Bestaetigung mehr 2026-09-16 18:07:33 +02:00
alientim 0c9e346b66 Version 2.8.29 / Lizenzserver 2.8.5: Release-Upgrade von Ubuntu bricht den venv nicht mehr 2026-09-16 17:44:35 +02:00
alientim cf5cf8622b Version 2.8.27: Live-Protokoll mit Stufen, Auftraege fallen nicht mehr heraus 2026-09-16 11:33:13 +02:00
alientim 4c1d6387c0 Version 2.8.24: Massenbefehl, Mitlesen, F5 2026-09-13 15:11:23 +02:00
alientim 91711a51fc Version 2.8.23: nicht das teure Verfahren zuerst 2026-09-13 14:52:12 +02:00
alientim 1c90251b0f Version 2.8.22: Alt+F4, Sitzung im Fenster, bewaehrtes Verfahren zuerst 2026-09-13 14:30:39 +02:00
alientim 4c9ed20da4 Version 2.8.21: die Seite wartet nicht mehr stumm 2026-09-13 14:14:39 +02:00
alientim b266bac055 Version 2.8.20: einstellbares Leerlauflimit, Stille beim Aufbau benannt 2026-09-13 14:05:23 +02:00
alientim 051d3bc649 Version 2.8.18: Versionspruefung im Update, zweiter Anlauf beim Bildschirm 2026-09-13 13:23:41 +02:00
alientim 4041156a19 Version 2.8.17: keine Vorauswahl, keine Messung im Seitenaufbau 2026-09-13 13:07:06 +02:00
alientim ec5cbb2e17 Version 2.8.15: Probe der Strecke, Grund aus _fail, RFB 3.3 2026-09-13 12:04:51 +02:00
alientim f551ce0ee6 Version 2.8.14: Diagnose in der Bildschirmsitzung, Vorauswahl ohne Passwort 2026-09-13 11:31:42 +02:00
alientim 0c47e1d645 Version 2.8.13: Bildschirmsitzung im Browser (noVNC) 2026-09-13 10:35:14 +02:00
alientim 9d819aaa3a Version 2.8.11: die Kachel oeffnet den Bildschirm 2026-09-13 10:09:55 +02:00
alientim 48ce56fe7d Version 2.8.7: drei Standardgruppen, Module abschaltbar 2026-09-13 00:19:55 +02:00
alientim 294d47684b Verzeichnisanmeldung: Wiederholversuch, weniger Runden, Zeiten 2026-09-12 23:46:53 +02:00
alientim e589b4aadb Verzeichniskonfiguration aus 1.2.8 uebernehmen; Sicherungen setzten Schalter falsch 2026-09-12 19:26:43 +02:00
alientim f6b0bbaad1 Version 2.8.0: Rechtekonzept -- eine Zeile je Funktion, Administrator heisst Verwaltung 2026-09-12 13:27:46 +02:00
alientim c3c6eae72d Version 2.7.7: Schriftgroesse der Vorschau wird gerechnet 2026-09-12 01:34:04 +02:00
alientim a1987aeb93 Version 2.7.6: die Vorschau der Unterschrift zeigt das Ergebnis 2026-09-12 01:12:06 +02:00
alientim 1d67c36ed2 Version 2.7.5: jede Aenderung nennt alt und neu 2026-09-12 00:43:10 +02:00
alientim e68f22fd88 Version 2.7.5: die Ordnerzeile sagt, was im Ordner liegt 2026-09-12 00:30:36 +02:00
alientim 2d234571d2 Version 2.7.4: Unterschriften in der Sicherung, unterschrieben ist abgeschlossen 2026-09-12 00:26:24 +02:00
alientim fafda84bc7 Version 2.7.3: Zeugenvermerk einmal und in den Dokumenteigenschaften 2026-09-11 23:45:19 +02:00
alientim 35247c895b Version 2.7.2: Umlaute in der Oberflaeche, Einbindungen an der Sitzung 2026-09-11 23:24:29 +02:00
alientim e5ae10814f Version 2.7.1: Signaturverzeichnis ueberlebt die Archivierung 2026-09-11 21:36:25 +02:00
alientim 37a200e983 Version 2.7.0: Pruefung beim Oeffnen, Unterschrift in menschlichem Mass 2026-09-11 21:23:12 +02:00
alientim de9c0d4fbd Version 2.6.1: die Speichernzeile fuehrt zur Entscheidung 2026-09-11 21:03:25 +02:00
alientim 724052ae28 Version 2.6.0: Unterschreiben mit dem Finger, Ablage in eine andere Freigabe 2026-09-11 20:41:48 +02:00
alientim e16236fa65 Version 2.5.2: Wartung ist auch in der Rechtematrix ein eigener Bereich 2026-09-11 20:16:38 +02:00
alientim c52b3626b2 Version 2.5.1: Sitzungsdauer im Lizenzserver, Umlaute, Umleitung alter Adressen 2026-09-11 19:16:27 +02:00
alientim 1ac5dc1637 Version 2.5.0: englische Adressen entlang der Navigation, sparsameres Protokoll 2026-09-11 18:57:23 +02:00
alientim f2d5324449 Version 2.4.1: die Wiederanmeldung kommt aus dem Rechtemodell 2026-09-10 02:00:28 +02:00
alientim 342abb0206 Version 2.4.0: eigene Rechtezeile fuer PDF-Formulare, Download ist Export 2026-09-10 00:08:23 +02:00
alientim 8dd8df9e9f Version 2.3.3: weiter ausfuellbar oder abgeschlossen 2026-09-09 23:43:47 +02:00
alientim 0de90ab6d4 Version 2.3.2: Namen ohne Endung, lesbare Haken, hochkant mehr Hoehe 2026-09-09 23:35:43 +02:00
alientim e60a93120c Version 2.3.1: Formularfelder sitzen richtig, Bildfeld nutzbar 2026-09-09 23:11:50 +02:00
alientim e7ad00a5e5 Version 2.3.0: Speichern mit Ordner und Namen 2026-09-09 22:41:08 +02:00
alientim e70c6e27c1 Version 2.2.1: pdf.js unter .js -- .mjs kennt kein Webserver 2026-09-09 22:06:17 +02:00
alientim e96e4837f1 Version 2.2.0: Vorschau mit Zoom und PDF-Formularen, eine Uploadgrenze 2026-09-09 21:48:07 +02:00
alientim 119293e5e3 Version 2.1.2: Wurzelinstanz auch an der Lizenz erkennen 2026-09-09 00:27:01 +02:00
alientim 36d9cb248e Version 2.1.1: update.sh mit --yes, ohne Terminal kein stiller Ausstieg 2026-09-09 00:20:32 +02:00
alientim ed84e8343e Version 2.1.0 2026-09-09 00:10:40 +02:00
alientimandClaude Opus 5 fd333f60ff sudoers ohne requiretty, und ein Rueckweg fuer fehlgeschlagene Upgrades
Auf einem frisch aufgesetzten Server brach das Upgrade mitten drin ab:

    /tmp/tmp.XXXX:8:24: syntax error: unknown setting: 'requiretty'
    visudo: invalid sudoers file
     !! sudoers-Datei ist fehlerhaft

"Defaults:<user> !requiretty" stand in beiden sudoers-Dateien. Auf Debian und
Ubuntu ist requiretty nie gesetzt -- die Zeile war von Anfang an wirkungslos --
und ab sudo 1.9.16 kennt visudo die Einstellung nicht mehr und lehnt die ganze
Datei ab. Sie ist entfernt; ein Hygienetest haelt fest, dass sie nicht
zurueckkommt, und prueft gleich mit, dass in diesen Dateien genau eine Regel
steht und die auf den Helfer zeigt.

Schlimmer als der Fehler war die Folge: der alte Dienst war zu diesem Zeitpunkt
gestoppt und deaktiviert, das Verzeichnis teils ersetzt, der neue Dienst nicht
vorhanden. upgbrade.sh faengt den Fehlschlag jetzt ab und dreht den Lauf
zurueck -- und mit "--rollback" auch spaeter noch, aus einer vorhandenen
Sicherung.

Dafuer muss die Sicherung mehr enthalten als das Verzeichnis. Bei einem Upgrade
in dasselbe Verzeichnis schreibt install.sh auch systemd-Unit, nginx-Site,
logrotate und Banner neu und ersetzt das venv; ohne Kopie davon liesse sich der
alte Stand nicht herstellen. Ein Manifest haelt Quelle und Art des Umzugs fest,
damit ein spaeterer Rueckweg nicht raten muss.

Beim Nachstellen des Fehlschlags fiel ein zweiter Fund auf, gefaehrlicher als
der erste: die Liste der "alten Units" war fest verdrahtet -- fuer --app tesm
immer tesm.service. Nach einem rename.sh heisst so aber die *laufende*
Installation. Wer die archivierte 1.x in eine eigene Instanz hochzieht und
--keep-old-running vergisst, haette damit den Produktionsdienst gestoppt und
deaktiviert. Die Units werden jetzt daran erkannt, dass sie in genau das
Quellverzeichnis zeigen; Timer und Hilfsdienste kommen ueber den Namen der so
gefundenen Unit mit.

Am System geprueft, nicht behauptet: Fehlschlag nachgestellt (1.2.8 mit eigener
Unit, eigener Site und erkennbarem venv), Rueckweg lief -- VERSION 1.2.8, das
alte venv und die alte Unit wieder da, die neue Struktur weg, die laufende
Produktion unberuehrt. Danach derselbe Lauf mit heiler sudoers-Datei bis zum
Ende (4 Clients, 2 Zugangsdaten, DHCP), und zuletzt "--rollback" als eigener
Aufruf auf dieselbe Installation.

Version 2.0.10.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-08 23:13:45 +02:00
alientimandClaude Opus 5 b9342d384c upgrade.sh und update.sh genuegen als einzelne Datei
Auf einer 1.2.8 liegt nichts von dieser Fassung -- upgrade.sh verlangte aber
ein install.sh daneben und brach sonst ab. Das war die falsche Voraussetzung
fuer genau den Fall, fuer den das Skript gedacht ist. Beide Skripte holen sich
das Release jetzt selbst:

    curl -fsSLO .../raw/branch/main/deploy/upgrade.sh
    sudo bash upgrade.sh --app tesm

Liegt das Skript in einem entpackten Release, wird dessen install.sh benutzt
statt eines Downloads: wer ein Paket ausgepackt hat, will nicht, dass ungefragt
ein anderes geladen wird. Mit --tag laesst sich eine Version festlegen.

Der Bootstrap steht wortgleich in beiden Dateien -- zwei eigenstaendige
Skripte koennen sich keine Datei teilen, und beide sollen allein genuegen. Ein
Hygienetest vergleicht die Bloecke, ein zweiter prueft, dass upgrade.sh kein
entpacktes Release mehr verlangt, ein dritter fuehrt den Block mit leerem PATH
aus und erwartet, dass er das fehlende Werkzeug benennt.

update.sh ruft install.sh nicht mehr per exec auf: dadurch lief die
Aufraeumfalle nie, und jedes Update liess ein entpacktes Release unter /tmp
liegen.

Ausserdem "opus" aus allen Beispielen genommen. Das war der Name der
Testinstanz neben der Fassung 1.x; seit dem Umbenennen heissen die
Installationen wie ihre Anwendung, und in einer Hilfe, die jemand anders liest,
ist "opus" ein Raetsel. In BETRIEB.md stand dabei zweimal /opt statt /srv.

Geprueft am System, nicht behauptet: die einzelne upgrade.sh hat eine echte
1.2.8 (Kopie des Archivs) **in dasselbe Verzeichnis** auf 2.0.8 gebracht --
Release geladen, 4 Clients, 2 Zugangsdaten und die DHCP-Konfiguration
uebernommen, Dienst laeuft, /login 200. Die Sicherung enthaelt die 1.2.8 samt
sqlite.db und fernet.key (Verzeichnis 0700, Passphrase 0600), und /tmp bleibt
leer. Danach dieselbe Probe mit der einzelnen update.sh.

Version 2.0.9.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-03 16:18:54 +02:00
alientimandClaude Opus 5 f062314a0a upgrade.sh findet die Fassung 1.x auch im Archiv
Nach einem Umbenennen liegt unter /srv/<app> die laufende Installation und die
Fassung 1.x unter /srv/<app>-sonnet5 -- dorthin verschiebt rename.sh sie. Die
Vorgabe von upgrade.sh zeigte danach auf die neue Installation und brach ab
(sauber, aber unbrauchbar). Gesucht wird jetzt an beiden Orten; erkannt wird
eine 1.x an der sqlite.db im Wurzelverzeichnis.

Den Weg selbst habe ich gegen die echten Altdaten geprueft, nicht behauptet:
aus /srv/tesm-sonnet5 (Version 1.2.8) kamen 4 Clients, 2 Zugangsdaten und die
DHCP-Konfiguration in eine Probeinstanz, aus /srv/tesm-license-sonnet5
(Version 1.2.7) 2 Kunden, 2 Tickets und 2 neu signierte Lizenzen samt
uebernommenem Signaturschluessel und Anbieterblock. Die laufenden
Installationen blieben unberuehrt, die Probeinstanzen sind abgeraeumt.

Zwei Tests halten die beiden Skripte zusammen: derselbe Namenszusatz, und die
Suche laeuft ueber die echten Zeilen aus upgrade.sh.

Version 2.0.8.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-03 14:53:38 +02:00