podemos criptografar qualquer campo em offlineimaprc?

1

Se você estiver usando o offlineimap para sincronizar, por exemplo, com o gmail, pode-se criptografar a senha e usar um script python para descriptografá-lo em tempo de execução. Isso é feito através da configuração

remotepass = passwd ('gmail.gpg')

no arquivo offlineimaprc, onde passwd é uma função python. O uso de tal função python é restrita a certas chaves, como remotepass no exemplo acima ou eu poderia teoricamente usar a função python no lado direito para cada chave? A razão pela qual estou perguntando é o seguinte: Estou tentando também criptografar outros valores para outras chaves. No entanto, recebo um erro como:

ERROR: While attempting to sync account 'gmail'
  ('http error', 401, 'Unauthorized', <httplib.HTTPMessage instance at 0x7f8ca13541b8>) (configuration is: {'client_secret': "passwd('gmail_client_secret.gpg')", 'grant_type': 'refresh_token', 'refresh_token': "passwd('gmail_rf_token.gpg')", 'client_id': "passwd('gmail_client_id.gpg')"})

e não tenho certeza se a função passwd é realmente executada. Executar a função python em um interpretador python fornece os resultados corretos.

    
por math 02.10.2017 / 08:42

1 resposta

2

Pelo que entendi, apenas algumas chaves têm o privilégio de serem evaled como código python. Alguns deles são explicitados no arquivo de configuração por uma chave que termina com a string "eval", como remotepasseval , mas outros só têm isso observado nos comentários, como nametrans , que claramente tem que ser uma função .

Como offlineimap está em python, você provavelmente encontrará as origens em sua distribuição. No meu caso, o arquivo /usr/lib/python2.7/site-packages/offlineimap/repository/IMAP.py tem código para manipular remotepasseval , o que é bastante fácil de entender:

    passwd = self.getconf('remotepasseval', None)
    if passwd != None:
        return self.localeval.eval(passwd)

Você pode procurar outros usos de localeval para ver quais chaves são processadas dessa maneira. E se você quiser que outras chaves sejam avaliadas, pode não ser muito difícil criar sua própria versão deste programa com chamadas semelhantes.

    
por 03.10.2017 / 19:17