FUNCIÓN DESTACADA: Reemplazos de reglas basadas en archivos¶
Este documento describe cómo mantener valores confidenciales (contraseñas, claves API, tokens)
fuera del código fuente FUZZY_MAP_pre / FUZZY_MAP y del historial de Git cargando el
Texto de “reemplazo” de un archivo separado en tiempo de ejecución en lugar de codificarlo.
Esto es especialmente útil durante transmisiones en vivo o pantallas compartidas, donde el mapa El código fuente en sí puede ser visible, pero el archivo al que se hace referencia no.
1. El concepto¶
Normalmente, el campo “reemplazo” de una regla es el texto de salida literal:
('my-secret-value', r'^(trigger)$', 85, {'command_flags': re.IGNORECASE})
Con el reemplazo basado en archivos habilitado, un valor de “reemplazo” que comienza con un
El prefijo configurado (por defecto - o .) se trata como un nombre de archivo.
Aura resuelve ese nombre de archivo en relación con el propio directorio del complemento, lee su
contenido y utiliza ese contenido como texto de reemplazo.
('-api_key.txt', r'^(show api key)$', 85, {'command_flags': re.IGNORECASE})
Si api_key.txt existe junto a FUZZY_MAP_pre.py del complemento, está (eliminado)
El contenido se utiliza como reemplazo. Si el archivo no existe, el literal
en su lugar se devuelve la cadena -api_key.txt (a prueba de fallos: no hay fugas accidentales de
“archivo no encontrado” como texto utilizable y sin fallas).
2. Configuración¶
Configurado en config/settings.py (o config/settings_local.py para local
anula):
Configuración |
Tipo |
Predeterminado |
Descripción |
|---|---|---|---|
|
|
|
Interruptor maestro para toda la función. Si es “Falso”, “reemplazo” siempre se usa literalmente. |
|
|
|
Los valores de “reemplazo” deben comenzar con uno de estos prefijos para activar una búsqueda de archivos. Vacío/ |
|
|
|
Si es |
|
|
p.ej. |
Las rutas absolutas resueltas que comienzan con cualquiera de estas siempre se rechazan, independientemente de |
3. Resolución de ruta¶
El expediente se resuelve de la siguiente manera:
La
ruta_fuentedel complemento (grabada automáticamente por el cargador de mapas) es unido contraSL5NET_AURA_PROJECT_ROOT(leído delSL5NET_AURA_PROJECT_ROOTvariable de entorno) para obtener el directorio del complemento.El valor de “reemplazo” se une a ese directorio.
A menos que
FILE4REPLACEMENT_ALLOW_PATH_TRAVERSALseaTrue, la ruta resuelta debe permanecer dentro del directorio del complemento, o la búsqueda será rechazada.Independientemente de lo anterior, cualquier ruta resuelta que comience con una entrada en
FILE4REPLACEMENT_DENY_PREFIXESsiempre se rechaza.Si el archivo existe, se devuelve su contenido eliminado. De lo contrario, el La cadena de “reemplazo” original se devuelve sin cambios.
4. Notas de seguridad¶
Solo habilite
FILE4REPLACEMENT_ALLOW_PATH_TRAVERSALsi comprende el Implicaciones: permite a cualquier usuario que pueda editar un archivoFUZZY_MAP_pre(p. ej. a través de un editor de mapas en línea) para leer archivos arbitrarios que el proceso Aura puede acceder y hacer que su contenido aparezca como texto de salida en vivo.FILE4REPLACEMENT_DENY_PREFIXESproporciona una protección básica contra directorios comunes del sistema incluso cuando se permite el recorrido de ruta, pero es no sustituye a restringir quién puede editar archivos de mapas en primer lugar.Los archivos referenciados son texto sin formato en el disco. Combina con el archivo de tu sistema operativo permisos si el contenido es confidencial.
5. Ejemplo¶
Consulte config/maps/plugins/TEST_FILE4REPLACEMENT/ para ver un complemento de ejemplo funcional.
y tools/tests/TEST_FILE4REPLACEMENT.sh para un script de prueba que ejercita
tanto una búsqueda en el directorio como una búsqueda fuera del directorio del complemento.
# config/maps/plugins/TEST_FILE4REPLACEMENT/de-DE/FUZZY_MAP_pre.py
FUZZY_MAP_pre = [
('.Zebra.txt', r'^(Zebra)$', 85, {'command_flags': re.IGNORECASE}),
]
Cree .Zebra.txt junto a este archivo con el texto de reemplazo deseado, luego
diga (o escriba a través de la consola) s Zebra para activarlo.