diff --git a/apps/tesm-license/pyproject.toml b/apps/tesm-license/pyproject.toml index 88eff7e..a6cd590 100644 --- a/apps/tesm-license/pyproject.toml +++ b/apps/tesm-license/pyproject.toml @@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta" [project] name = "tesm-license" -version = "2.0.7" +version = "2.0.8" description = "TESM-Lizenzserver -- Kunden, Tickets, Lizenzen, Aktivierung" requires-python = ">=3.11" dependencies = [ diff --git a/deploy/upgrade.sh b/deploy/upgrade.sh index 2feca0b..531eed3 100644 --- a/deploy/upgrade.sh +++ b/deploy/upgrade.sh @@ -44,6 +44,13 @@ DRY_RUN=0 WITH_DATA=1 STOP_OLD=1 ADOPT_KEY=1 +#: Namenszusatz, unter dem ``rename.sh`` eine verdraengte Installation der +#: Fassung 1.x ablegt. Beide Skripte muessen denselben Wert benutzen; ein +#: Hygienetest vergleicht sie. +ARCHIV_SUFFIX="sonnet5" + +#: Nur fuer die Ausgabe: wurde die Quelle selbst gefunden oder angegeben? +info_quelle="" EXTRA=() SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" @@ -110,9 +117,30 @@ done [[ "$(id -u)" -eq 0 ]] || fail "bitte mit sudo ausfuehren" [[ -f "$SCRIPT_DIR/install.sh" ]] || fail "install.sh fehlt neben diesem Skript" -[[ -n "$SOURCE" ]] || SOURCE="/srv/$APP" +# -- Wo liegt die alte Fassung? ---------------------------------------------- # +# Zwei Orte kommen in Frage, und der zweite ist der Grund fuer diesen Block: +# ``rename.sh`` schiebt eine Installation der Fassung 1.x nach +# ``/srv/-sonnet5``, sobald der Hauptname fuer die neue gebraucht wird. +# Danach liegt unter ``/srv/`` die **laufende** Installation, und die +# Vorgabe zeigte ins Leere. Erkannt wird an ``sqlite.db`` im Wurzelverzeichnis +# -- die neue Fassung legt ihre Datenbank unter ``data/app.db`` ab. +ist_alte_fassung() { [[ -f "$1/sqlite.db" ]]; } + +if [[ -z "$SOURCE" ]]; then + for kandidat in "/srv/$APP" "/srv/$APP-$ARCHIV_SUFFIX"; do + if ist_alte_fassung "$kandidat"; then SOURCE="$kandidat"; break; fi + done + if [[ -z "$SOURCE" ]]; then + warn "Keine Installation der Fassung 1.x gefunden. Gesucht wurde in:" + warn " /srv/$APP" + warn " /srv/$APP-$ARCHIV_SUFFIX (dorthin verschiebt rename.sh sie)" + [[ -f "/srv/$APP/data/app.db" ]] && warn "Unter /srv/$APP liegt die laufende Installation dieser Fassung." + fail "Bitte --source setzen." + fi + info_quelle="gefunden: $SOURCE" +fi [[ -d "$SOURCE" ]] || fail "Die alte Installation $SOURCE gibt es nicht (--source setzen)" -[[ -f "$SOURCE/sqlite.db" ]] || fail "In $SOURCE liegt keine sqlite.db -- das ist keine Installation der Vorgaengerfassung" +ist_alte_fassung "$SOURCE" || fail "In $SOURCE liegt keine sqlite.db -- das ist keine Installation der Vorgaengerfassung" NAME="$APP" [[ -n "$INSTANCE" ]] && NAME="$APP-$INSTANCE" @@ -138,7 +166,7 @@ fi step "Vorhaben" info "Anwendung : $APP${INSTANCE:+ (Instanz $INSTANCE)}" -info "Alt : $SOURCE" +info "Alt : $SOURCE${info_quelle:+ (automatisch gefunden)}" info "Neu : $NEW_ROOT$([[ $IN_PLACE -eq 1 ]] && echo ' << dasselbe Verzeichnis')" info "Sicherung : $ALT_KOPIE" info "Datenuebernahme: $([[ $WITH_DATA -eq 1 ]] && echo ja || echo nein)" diff --git a/docs/BETRIEB.md b/docs/BETRIEB.md index 1b60cec..5af5553 100644 --- a/docs/BETRIEB.md +++ b/docs/BETRIEB.md @@ -152,6 +152,13 @@ sudo bash deploy/upgrade.sh --app tesm sudo bash deploy/upgrade.sh --app tesm-license ``` +Ohne `--source` wird die alte Fassung an zwei Stellen gesucht: unter +`/srv/` und unter `/srv/-sonnet5`. Der zweite Ort ist der, an den +`rename.sh` sie verschiebt, sobald der Hauptname für die neue Installation +gebraucht wird -- danach liegt unter `/srv/` die **laufende** Installation. +Erkannt wird eine 1.x an der `sqlite.db` im Wurzelverzeichnis; die neue Fassung +legt ihre Datenbank unter `data/app.db` ab. + Der Ablauf ist die Vorgabe und braucht keine Schalter: | | | diff --git a/packages/tesm-core/pyproject.toml b/packages/tesm-core/pyproject.toml index 7d7b69c..2fc263f 100644 --- a/packages/tesm-core/pyproject.toml +++ b/packages/tesm-core/pyproject.toml @@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta" [project] name = "tesm-core" -version = "2.0.7" +version = "2.0.8" description = "Gemeinsames Anwendungsgeruest (Auth, RBAC, Navigation, Design-System, Migrationen) fuer TESM und TESM-Lizenzserver" requires-python = ">=3.11" dependencies = [ diff --git a/packages/tesm-core/src/tesm_core/app_factory.py b/packages/tesm-core/src/tesm_core/app_factory.py index 286054d..a240aae 100644 --- a/packages/tesm-core/src/tesm_core/app_factory.py +++ b/packages/tesm-core/src/tesm_core/app_factory.py @@ -134,7 +134,7 @@ def create_base_app( #: Wortmarke, ohne Zeile darunter; die Marke selbst zeigen beide #: Anwendungen. auth_tagline: str = "", - app_version: str = "2.0.7", + app_version: str = "2.0.8", built_in_trusted_keys: tuple[str, ...] = (), enable_license: bool = True, template_folder: str | None = None, diff --git a/packages/tesm-licensing-server/pyproject.toml b/packages/tesm-licensing-server/pyproject.toml index 325daad..864ab87 100644 --- a/packages/tesm-licensing-server/pyproject.toml +++ b/packages/tesm-licensing-server/pyproject.toml @@ -4,10 +4,10 @@ build-backend = "setuptools.build_meta" [project] name = "tesm-licensing-server" -version = "2.0.7" +version = "2.0.8" description = "Serverhaelfte des TESM-Lizenzprotokolls: ausstellen, erneuern, antworten" requires-python = ">=3.11" -dependencies = ["tesm-licensing==2.0.7", "cryptography>=41"] +dependencies = ["tesm-licensing==2.0.8", "cryptography>=41"] [tool.setuptools.packages.find] where = ["src"] diff --git a/packages/tesm-licensing/pyproject.toml b/packages/tesm-licensing/pyproject.toml index 84ed4fd..1f70433 100644 --- a/packages/tesm-licensing/pyproject.toml +++ b/packages/tesm-licensing/pyproject.toml @@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta" [project] name = "tesm-licensing" -version = "2.0.7" +version = "2.0.8" description = "Ed25519-basiertes Lizenz- und Aktivierungsprotokoll fuer TESM und TESM-Lizenzserver" requires-python = ">=3.11" dependencies = ["cryptography>=42"]