FEATURE SPOTLIGHT: Dateibasierte Regelersetzungen¶
In diesem Dokument wird beschrieben, wie vertrauliche Werte (Passwörter, API-Schlüssel, Token) aufbewahrt werden. aus dem Quellcode „FUZZY_MAP_pre“ / „FUZZY_MAP“ und dem Git-Verlauf durch Laden der „Ersatz“-Text zur Laufzeit aus einer separaten Datei, anstatt ihn fest zu codieren.
Dies ist besonders nützlich bei Livestreams oder Bildschirmfreigaben, bei denen die Karte angezeigt wird Der Quellcode selbst ist möglicherweise sichtbar, die referenzierte Datei jedoch nicht.
1. Das Konzept¶
Normalerweise ist das „Ersatz“-Feld einer Regel der wörtliche Ausgabetext:
('my-secret-value', r'^(trigger)$', 85, {'command_flags': re.IGNORECASE})
Wenn die dateibasierte Ersetzung aktiviert ist, wird ein „Ersetzungswert“ angezeigt, der mit a beginnt Das konfigurierte Präfix (standardmäßig „-“ oder „.“) wird stattdessen als Dateiname behandelt. Aura löst diesen Dateinamen relativ zum eigenen Verzeichnis des Plugins auf und liest ihn Inhalt und verwendet diesen Inhalt als Ersatztext.
('-api_key.txt', r'^(show api key)$', 85, {'command_flags': re.IGNORECASE})
Wenn „api_key.txt“ neben „FUZZY_MAP_pre.py“ des Plugins vorhanden ist, ist es (entfernt) Der Inhalt wird als Ersatz verwendet. Wenn die Datei nicht vorhanden ist, das Literal Stattdessen wird die Zeichenfolge „-api_key.txt“ zurückgegeben (ausfallsicher: kein versehentliches Auslaufen von „Datei nicht gefunden“ als verwendbarer Text und kein Absturz).
2. Einstellungen¶
Konfiguriert in „config/settings.py“ (oder „config/settings_local.py“ für lokal überschreibt):
Einstellung |
Geben Sie |
ein Standard |
Beschreibung |
|---|---|---|---|
|
|
„Wahr“ |
Hauptschalter für die gesamte Funktion. Bei „Falsch“ wird „Ersatz“ immer wörtlich verwendet. |
|
|
|
„Ersatz“-Werte müssen mit einem dieser Präfixe beginnen, um eine Dateisuche auszulösen. Empty/ |
|
|
„Falsch“ |
Wenn „True“, erlaubt es das Auflösen von Dateien außerhalb des eigenen Verzeichnisses des Plugins (z. B. absolute Pfade oder „../“-Sequenzen). Siehe Abschnitt „Sicherheit“ weiter unten. |
|
|
z.B. |
Aufgelöste absolute Pfade, die mit einem dieser Pfade beginnen, werden immer abgelehnt, unabhängig von „FILE4REPLACEMENT_ALLOW_PATH_TRAVERSAL“. Harte Sicherheitsgrenze für Systemverzeichnisse. |
3. Pfadauflösung¶
Die Datei wird wie folgt aufgelöst:
Der „source_path“ des Plugins (automatisch vom Kartenlader aufgezeichnet) ist verbunden gegen „SL5NET_AURA_PROJECT_ROOT“ (gelesen aus „SL5NET_AURA_PROJECT_ROOT“) Umgebungsvariable), um das Verzeichnis des Plugins abzurufen.
Der „Ersatz“-Wert wird diesem Verzeichnis hinzugefügt.
Sofern „FILE4REPLACEMENT_ALLOW_PATH_TRAVERSAL“ nicht „True“ ist, der aufgelöste Pfad muss im Verzeichnis des Plugins bleiben, sonst wird die Suche abgelehnt.
Unabhängig vom oben Gesagten gilt jeder gelöste Pfad, der mit einem Eintrag in beginnt „FILE4REPLACEMENT_DENY_PREFIXES“ wird immer abgelehnt.
Wenn die Datei vorhanden ist, wird ihr entfernter Inhalt zurückgegeben. Ansonsten ist das Die ursprüngliche Ersatzzeichenfolge wird unverändert zurückgegeben.
4. Sicherheitshinweise¶
Aktivieren Sie „FILE4REPLACEMENT_ALLOW_PATH_TRAVERSAL“ nur, wenn Sie das verstehen Auswirkungen: Es ermöglicht jedem Benutzer, der eine „FUZZY_MAP_pre“-Datei bearbeiten kann (z. B. über einen Online-Karteneditor), um beliebige Dateien zu lesen, die der Aura-Prozess verarbeiten kann Zugriff haben und deren Inhalt als Live-Ausgabetext angezeigt wird.
„FILE4REPLACEMENT_DENY_PREFIXES“ bietet einen Basisschutz gegen gemeinsame Systemverzeichnisse, auch wenn Pfaddurchquerung erlaubt ist, aber das ist der Fall ist kein Ersatz für die Einschränkung, wer Kartendateien überhaupt bearbeiten darf.
Referenzierte Dateien sind reine Textdateien auf der Festplatte. Kombinieren Sie es mit der Datei Ihres Betriebssystems Berechtigungen, wenn der Inhalt vertraulich ist.
5. Beispiel¶
Ein funktionierendes Beispiel-Plugin finden Sie unter „config/maps/plugins/TEST_FILE4REPLACEMENT/“. und „tools/tests/TEST_FILE4REPLACEMENT.sh“ für ein Testskript, das Übungen durchführt Sowohl eine Suche im Verzeichnis als auch eine Suche außerhalb des Plugin-Verzeichnisses.
# config/maps/plugins/TEST_FILE4REPLACEMENT/de-DE/FUZZY_MAP_pre.py
FUZZY_MAP_pre = [
('.Zebra.txt', r'^(Zebra)$', 85, {'command_flags': re.IGNORECASE}),
]
Erstellen Sie dann neben dieser Datei „.Zebra.txt“ mit dem gewünschten Ersetzungstext Sagen Sie „s Zebra“ (oder geben Sie es über die Konsole ein), um es auszulösen.