Merge branch 'main' into feat/11-typen-je-gruppe
This commit is contained in:
@@ -122,6 +122,40 @@ Liste steht dort „statisch“ und ein Strich.
|
||||
Wer nach dem Ablegen den Inhalt ändert, bekommt das Ablegen erneut angeboten —
|
||||
der vorherige Eintrag bleibt als eigener Schnappschuss bestehen.
|
||||
|
||||
**Dublettenprüfung.** Liegt in derselben Gruppe schon ein statischer Code mit
|
||||
identischem Inhalt, hält das Ablegen an und zeigt, welcher Eintrag das ist und
|
||||
wann er entstand. Der Knopf heißt dann **Trotzdem ablegen** — eine Warnung,
|
||||
keine Sperre: Zwei Fassungen desselben Codes können gewollt sein.
|
||||
|
||||
Verglichen wird nur der Inhalt, nicht die Gestaltung. Derselbe Code in
|
||||
Schwarz-Weiß und in Hausfarben gilt also als Dublette — was er streng
|
||||
genommen auch ist, denn gescannt wird beides Mal dasselbe. Dynamische Codes
|
||||
bleiben außen vor: Zwei Kurz-Links auf dasselbe Ziel sind der Normalfall,
|
||||
sobald zwei Kampagnen getrennt gezählt werden sollen.
|
||||
|
||||
### Ein Logo in der Mitte
|
||||
|
||||
Ein Bild in die Mitte des Codes setzen, wie man es von Firmen-Codes kennt.
|
||||
Zur Wahl stehen zwei Quellen:
|
||||
|
||||
- das **Logo dieser Installation** aus dem Erscheinungsbild — ein Haken
|
||||
genügt, kein Upload je Code;
|
||||
- ein **eigenes Logo** je Code, für Kundenprojekte mit fremdem Zeichen.
|
||||
|
||||
Die Größe ist zwischen 10 und 25 % der Kantenlänge einstellbar; voreingestellt
|
||||
sind 20 %, das entspricht rund 4 % der Fläche. Hinter dem Bild liegt eine
|
||||
Fläche in der Hintergrundfarbe, damit es sich absetzt.
|
||||
|
||||
**Die Fehlerkorrektur wird dabei auf H erzwungen** — was das Bild verdeckt,
|
||||
muss sie ausgleichen. Die Auswahl steht dann fest auf H und sagt auch warum;
|
||||
heimlich geschieht das nicht. Ab 22 % erscheint eine Warnung: Die
|
||||
Fehlerkorrektur trägt das zwar, aber manche Scanner-Apps suchen in der Mitte
|
||||
nach Ausrichtungsmustern.
|
||||
|
||||
Jeder erzeugte Code wird in der Prüfung wieder eingelesen — über mehrere
|
||||
Größen, Prozentsätze und Inhaltslängen. Das ersetzt trotzdem nicht den einen
|
||||
Scan mit dem eigenen Handy, bevor etwas in den Druck geht.
|
||||
|
||||
### Der Kurz-Link
|
||||
|
||||
Ohne eigene Angabe entsteht er aus acht Zeichen eines Alphabets ohne
|
||||
|
||||
@@ -191,6 +191,29 @@ Konto nur bei **bestätigter** E-Mail-Adresse.
|
||||
|
||||
---
|
||||
|
||||
## Der Domain-Check und seine Grenzen
|
||||
|
||||
Auf der Domain-Seite ruft der Knopf **Prüfen** die eingetragene Domain vom
|
||||
Server aus auf. Drei Dinge grenzen das ein:
|
||||
|
||||
- Geprüft wird ausschließlich ein Hostname **aus der Datenbank**, nie einer
|
||||
aus der Anfrage. Sonst wäre die Route ein Werkzeug, mit dem sich vom Server
|
||||
aus beliebige Adressen abklopfen ließen.
|
||||
- Auslösen darf sie nur, wer `instance:manage` hat — dieselbe Berechtigung,
|
||||
die auch Domains anlegt.
|
||||
- Die Route, die den Beweis liefert (`/api/domain-check`), ist **ohne
|
||||
Anmeldung** erreichbar; der Aufruf kommt ja von außen. Sie gibt nichts
|
||||
preis: Die Antwort ist ein HMAC über die mitgeschickte Zufallszahl. Ohne
|
||||
das Geheimnis lässt er sich nicht bilden, und aus ihm folgt nichts über das
|
||||
Geheimnis. Es entsteht beim ersten Check und verlässt den Server nie.
|
||||
|
||||
Beim Zertifikat läuft die Verbindung bewusst mit `rejectUnauthorized: false`.
|
||||
Nur so lässt sich ein schlechtes Zertifikat **beschreiben** — abgelaufen,
|
||||
selbst ausgestellt, falscher Name — statt bloß daran zu scheitern.
|
||||
Übertragen wird über diese Verbindung nichts.
|
||||
|
||||
---
|
||||
|
||||
## Offen
|
||||
|
||||
Bewusst nicht umgesetzt, mit Begründung.
|
||||
|
||||
Reference in New Issue
Block a user