Version 2.1.2: Wurzelinstanz auch an der Lizenz erkennen
This commit is contained in:
1 parent
36d9cb248e
commit
90028d6d9c
6 files changed
+31
-15
No files matched your search
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
|
|||||||
|
|
||||||
[project]
|
[project]
|
||||||
name = "tesm-license"
|
name = "tesm-license"
|
||||||
version = "2.1.1"
|
version = "2.1.2"
|
||||||
description = "TESM-Lizenzserver -- Kunden, Tickets, Lizenzen, Aktivierung"
|
description = "TESM-Lizenzserver -- Kunden, Tickets, Lizenzen, Aktivierung"
|
||||||
requires-python = ">=3.11"
|
requires-python = ">=3.11"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
|
|||||||
+25
-9
@@ -94,13 +94,13 @@ bei_fehler() {
|
|||||||
else
|
else
|
||||||
warn "Abgebrochen (Code $code). Es gab keinen vorherigen Stand dieser Fassung,"
|
warn "Abgebrochen (Code $code). Es gab keinen vorherigen Stand dieser Fassung,"
|
||||||
warn "also wurde nichts wiederhergestellt und nichts geloescht."
|
warn "also wurde nichts wiederhergestellt und nichts geloescht."
|
||||||
fi
|
|
||||||
# Nur sagen, was es wirklich gibt: bei einem Abbruch an der Rueckfrage
|
# Nur sagen, was es wirklich gibt: bei einem Abbruch an der Rueckfrage
|
||||||
# existiert das Verzeichnis noch nicht, und die Zeile log dann.
|
# existiert das Verzeichnis noch nicht.
|
||||||
if [[ -n "${ROOT:-}" && -d "${ROOT:-}" ]]; then
|
if [[ -n "${ROOT:-}" && -d "${ROOT:-}" ]]; then
|
||||||
warn "Angelegt wurde bis hierhin: $ROOT (Daten unter data/ unberuehrt)."
|
warn "Angelegt wurde bis hierhin: $ROOT (Daten unter data/ unberuehrt)."
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
|
fi
|
||||||
return "$code"
|
return "$code"
|
||||||
}
|
}
|
||||||
trap bei_fehler EXIT
|
trap bei_fehler EXIT
|
||||||
@@ -189,6 +189,9 @@ fi
|
|||||||
# beim Secure-Flag weiter unten: eine Aktualisierung nimmt nichts weg, was
|
# beim Secure-Flag weiter unten: eine Aktualisierung nimmt nichts weg, was
|
||||||
# nicht ausdruecklich neu gesetzt wird.
|
# nicht ausdruecklich neu gesetzt wird.
|
||||||
ENV_FILE="$ETC_TESM/$NAME.env"
|
ENV_FILE="$ETC_TESM/$NAME.env"
|
||||||
|
# Wo die Daten liegen, steht in der Umgebungsdatei; ohne sie beim Vorgabeort.
|
||||||
|
DATEN_DIR="$(sed -n "s/^${ENV_PREFIX}DATA_DIR=//p" "$ENV_FILE" 2>/dev/null | tail -1)"
|
||||||
|
DATEN_DIR="${DATEN_DIR:-$ROOT/data}"
|
||||||
if [[ -z "$PORT" && -f "$ENV_FILE" ]]; then
|
if [[ -z "$PORT" && -f "$ENV_FILE" ]]; then
|
||||||
PORT="$(sed -n "s/^${ENV_PREFIX}BIND=127\.0\.0\.1:\([0-9]\{1,5\}\)$/\1/p" "$ENV_FILE" | head -1)"
|
PORT="$(sed -n "s/^${ENV_PREFIX}BIND=127\.0\.0\.1:\([0-9]\{1,5\}\)$/\1/p" "$ENV_FILE" | head -1)"
|
||||||
fi
|
fi
|
||||||
@@ -306,11 +309,28 @@ fi
|
|||||||
# Abgleich unten laeuft mit --delete und wuerde das Teilpaket entfernen. Danach
|
# Abgleich unten laeuft mit --delete und wuerde das Teilpaket entfernen. Danach
|
||||||
# gaebe es auf dem Master keinen Weg mehr, eine Master-Lizenz auszustellen --
|
# gaebe es auf dem Master keinen Weg mehr, eine Master-Lizenz auszustellen --
|
||||||
# und niemand haette es gesagt.
|
# und niemand haette es gesagt.
|
||||||
if [[ "$EDITION" == "sub" && -d "$ROOT/$MASTER_TEILPAKET" ]]; then
|
# Die Rolle steht in der eingespielten Lizenz. Das ist die zuverlaessigere
|
||||||
fail "Hier laeuft die Master-Ausgabe, dieses Paket ist die Ausgabe fuer Sub-Lizenzserver.
|
# Haelfte der Pruefung: eine Master-Installation aus einer aelteren Fassung
|
||||||
|
# kennt das Teilpaket noch nicht, ist aber trotzdem eine Wurzelinstanz.
|
||||||
|
ROLLE_ALT=""
|
||||||
|
if [[ "$EDITION" == "sub" && -s "$DATEN_DIR/license.json" ]]; then
|
||||||
|
ROLLE_ALT="$(python3 -c '
|
||||||
|
import json, sys
|
||||||
|
try:
|
||||||
|
print(json.load(open(sys.argv[1])).get("role", ""))
|
||||||
|
except Exception:
|
||||||
|
pass
|
||||||
|
' "$DATEN_DIR/license.json" 2>/dev/null || true)"
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [[ "$EDITION" == "sub" && ( -d "$ROOT/$MASTER_TEILPAKET" || "$ROLLE_ALT" == "master" ) ]]; then
|
||||||
|
fail "Hier laeuft eine Wurzelinstanz${ROLLE_ALT:+ (Lizenz mit Rolle $ROLLE_ALT)}, dieses Paket
|
||||||
|
ist die Ausgabe fuer Sub-Lizenzserver.
|
||||||
Eine Aktualisierung damit wuerde die Master-Ausgabe entfernen.
|
Eine Aktualisierung damit wuerde die Master-Ausgabe entfernen.
|
||||||
Passendes Paket: Repository tesm-license-master (privat).
|
Passendes Paket: Repository tesm-license-master (privat).
|
||||||
Bewusster Rueckbau: $ROOT/$MASTER_TEILPAKET von Hand entfernen, dann erneut."
|
Bewusster Rueckbau: eine vom Master ausgestellte Lizenz einspielen (Rolle
|
||||||
|
license_server) und $ROOT/$MASTER_TEILPAKET entfernen -- danach ist dies ein
|
||||||
|
Sub-Lizenzserver und dieses Paket das richtige."
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# -- Backup ------------------------------------------------------------------
|
# -- Backup ------------------------------------------------------------------
|
||||||
@@ -676,10 +696,6 @@ fi
|
|||||||
# gleich die eigene Master-Lizenz. Bei einer Aktualisierung nichts davon --
|
# gleich die eigene Master-Lizenz. Bei einer Aktualisierung nichts davon --
|
||||||
# ein bestehender Schluessel darf nie angetastet werden.
|
# ein bestehender Schluessel darf nie angetastet werden.
|
||||||
if [[ "$APP" == "tesm-license" && $IS_UPDATE -eq 0 ]]; then
|
if [[ "$APP" == "tesm-license" && $IS_UPDATE -eq 0 ]]; then
|
||||||
# Das Datenverzeichnis steht in der Umgebungsdatei -- es muss nicht
|
|
||||||
# $ROOT/data sein, wenn jemand es dort umgestellt hat.
|
|
||||||
DATEN_DIR="$(sed -n "s/^${ENV_PREFIX}DATA_DIR=//p" "$ENV_FILE" | tail -1)"
|
|
||||||
DATEN_DIR="${DATEN_DIR:-$ROOT/data}"
|
|
||||||
step "Signaturschluessel"
|
step "Signaturschluessel"
|
||||||
if sudo -u "$SERVICE_USER" "/usr/local/bin/$NAME-admin" init-key; then
|
if sudo -u "$SERVICE_USER" "/usr/local/bin/$NAME-admin" init-key; then
|
||||||
info "Bitte die Datei $DATEN_DIR/master_signing_key.json SOFORT sichern."
|
info "Bitte die Datei $DATEN_DIR/master_signing_key.json SOFORT sichern."
|
||||||
|
|||||||
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
|
|||||||
|
|
||||||
[project]
|
[project]
|
||||||
name = "tesm-core"
|
name = "tesm-core"
|
||||||
version = "2.1.1"
|
version = "2.1.2"
|
||||||
description = "Gemeinsames Anwendungsgeruest (Auth, RBAC, Navigation, Design-System, Migrationen) fuer TESM und TESM-Lizenzserver"
|
description = "Gemeinsames Anwendungsgeruest (Auth, RBAC, Navigation, Design-System, Migrationen) fuer TESM und TESM-Lizenzserver"
|
||||||
requires-python = ">=3.11"
|
requires-python = ">=3.11"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
|
|||||||
@@ -134,7 +134,7 @@ def create_base_app(
|
|||||||
#: Wortmarke, ohne Zeile darunter; die Marke selbst zeigen beide
|
#: Wortmarke, ohne Zeile darunter; die Marke selbst zeigen beide
|
||||||
#: Anwendungen.
|
#: Anwendungen.
|
||||||
auth_tagline: str = "",
|
auth_tagline: str = "",
|
||||||
app_version: str = "2.1.1",
|
app_version: str = "2.1.2",
|
||||||
built_in_trusted_keys: tuple[str, ...] = (),
|
built_in_trusted_keys: tuple[str, ...] = (),
|
||||||
enable_license: bool = True,
|
enable_license: bool = True,
|
||||||
template_folder: str | None = None,
|
template_folder: str | None = None,
|
||||||
|
|||||||
@@ -4,10 +4,10 @@ build-backend = "setuptools.build_meta"
|
|||||||
|
|
||||||
[project]
|
[project]
|
||||||
name = "tesm-licensing-server"
|
name = "tesm-licensing-server"
|
||||||
version = "2.1.1"
|
version = "2.1.2"
|
||||||
description = "Serverhaelfte des TESM-Lizenzprotokolls: ausstellen, erneuern, antworten"
|
description = "Serverhaelfte des TESM-Lizenzprotokolls: ausstellen, erneuern, antworten"
|
||||||
requires-python = ">=3.11"
|
requires-python = ">=3.11"
|
||||||
dependencies = ["tesm-licensing==2.1.1", "cryptography>=41"]
|
dependencies = ["tesm-licensing==2.1.2", "cryptography>=41"]
|
||||||
|
|
||||||
[tool.setuptools.packages.find]
|
[tool.setuptools.packages.find]
|
||||||
where = ["src"]
|
where = ["src"]
|
||||||
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
|
|||||||
|
|
||||||
[project]
|
[project]
|
||||||
name = "tesm-licensing"
|
name = "tesm-licensing"
|
||||||
version = "2.1.1"
|
version = "2.1.2"
|
||||||
description = "Ed25519-basiertes Lizenz- und Aktivierungsprotokoll fuer TESM und TESM-Lizenzserver"
|
description = "Ed25519-basiertes Lizenz- und Aktivierungsprotokoll fuer TESM und TESM-Lizenzserver"
|
||||||
requires-python = ">=3.11"
|
requires-python = ">=3.11"
|
||||||
dependencies = ["cryptography>=42"]
|
dependencies = ["cryptography>=42"]
|
||||||
|
|||||||
Reference in new issue
Block a user