RECURSO EM DESTAQUE: Substituições de regras baseadas em arquivo¶
Este documento descreve como manter valores confidenciais (senhas, chaves de API, tokens)
do código-fonte FUZZY_MAP_pre / FUZZY_MAP e do histórico do Git carregando o
texto replacement de um arquivo separado em tempo de execução, em vez de codificá-lo.
Isto é especialmente útil durante transmissões ao vivo ou compartilhamentos de tela, onde o mapa o próprio código-fonte pode estar visível, mas o arquivo referenciado não.
1. O conceito¶
Normalmente, o campo replacement de uma regra é o texto literal de saída:
('my-secret-value', r'^(trigger)$', 85, {'command_flags': re.IGNORECASE})
Com a substituição baseada em arquivo habilitada, um valor replacement que começa com um
O prefixo configurado (por padrão - ou .) é tratado como um nome de arquivo.
Aura resolve esse nome de arquivo em relação ao próprio diretório do plugin, lê seu
conteúdo e usa esse conteúdo como texto de substituição.
('-api_key.txt', r'^(show api key)$', 85, {'command_flags': re.IGNORECASE})
Se api_key.txt existir próximo ao FUZZY_MAP_pre.py do plugin, seu (removido)
o conteúdo é usado como substituto. Se o arquivo não existir, o literal
em vez disso, a string -api_key.txt é retornada (à prova de falhas: nenhum vazamento acidental de
“arquivo não encontrado” como texto utilizável e sem travamento).
2. Configurações¶
Configurado em config/settings.py (ou config/settings_local.py para local
substituições):
Configuração |
Tipo |
Padrão |
Descrição |
|---|---|---|---|
|
|
|
Chave mestre para todo o recurso. Se |
|
|
|
Os valores |
|
|
|
Se |
|
|
por exemplo |
Caminhos absolutos resolvidos começando com qualquer um deles são sempre rejeitados, independentemente de |
3. Resolução de caminho¶
O arquivo é resolvido da seguinte forma:
O
source_pathdo plugin (gravado automaticamente pelo carregador de mapas) é juntou-se aSL5NET_AURA_PROJECT_ROOT(lido emSL5NET_AURA_PROJECT_ROOTvariável de ambiente) para obter o diretório do plugin.O valor
replacementé adicionado a esse diretório.A menos que
FILE4REPLACEMENT_ALLOW_PATH_TRAVERSALsejaTrue, o caminho resolvido deve permanecer dentro do diretório do plugin, ou a pesquisa será rejeitada.Independentemente do acima exposto, qualquer caminho resolvido começando com uma entrada em
FILE4REPLACEMENT_DENY_PREFIXESé sempre rejeitado.Se o arquivo existir, seu conteúdo removido será retornado. Caso contrário, o a string
substitutaoriginal é retornada inalterada.
4. Notas de segurança¶
Habilite
FILE4REPLACEMENT_ALLOW_PATH_TRAVERSALapenas se você entender o implicações: permite que qualquer usuário possa editar um arquivoFUZZY_MAP_pre(por exemplo através de um editor de mapas on-line) para ler arquivos arbitrários que o processo Aura pode acesso e ter seu conteúdo exibido como texto de saída ao vivo.FILE4REPLACEMENT_DENY_PREFIXESfornece uma proteção básica contra diretórios comuns do sistema, mesmo quando a passagem de caminho é permitida, mas é não substitui a restrição de quem pode editar arquivos de mapas.Os arquivos referenciados são texto simples no disco. Combine com o arquivo do seu sistema operacional permissões se o conteúdo for confidencial.
5. Exemplo¶
Veja config/maps/plugins/TEST_FILE4REPLACEMENT/ para um exemplo de plugin funcional,
e tools/tests/TEST_FILE4REPLACEMENT.sh para um script de teste que exercita
tanto uma pesquisa no diretório quanto uma pesquisa fora do diretório do plugin.
# config/maps/plugins/TEST_FILE4REPLACEMENT/de-DE/FUZZY_MAP_pre.py
FUZZY_MAP_pre = [
('.Zebra.txt', r'^(Zebra)$', 85, {'command_flags': re.IGNORECASE}),
]
Crie .Zebra.txt próximo a este arquivo com o texto de substituição desejado e, em seguida,
diga (ou digite através do console) s Zebra para ativá-lo.