たとえばGmailと同期するためにofflineimapを使用している場合は、パスワードを暗号化し、pythonスクリプトを使用して実行時に復号化できます。これは、設定によって行われます。
remotepass = passwd( 'gmail.gpg')
passwdがpython関数であるofflineimaprcファイル内。このようなpython関数の使用は、remotepass
のような特定のキーに制限されていますか。上記の例、または理論的にはすべてのキーの右側にあるpython関数を使用できますか?私が尋ねる理由は次のとおりです:他のキーの他の値を暗号化しようとしていますただし、次のようなエラーが発生します。
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')"})
関数passwd
が実際に実行されているかどうかはわかりません。 python関数をpythonインタープリターで実行すると、正しい結果が得られます。
私が理解しているように、evaled as python code。これらのいくつかは、で終わるキーによって構成ファイルで明示的にされます。 remotepasseval
などの文字列「eval」ですが、nametrans
などのコメントにのみ記載されているものもありますが、これは明らかに関数である必要があります。
offlineimap
はPythonであるため、おそらくディストリビューションでソースを見つけることができます。私の場合、ファイル/usr/lib/python2.7/site-packages/offlineimap/repository/IMAP.py
にはremotepasseval
を処理するコードがあり、これはかなり理解しやすいものです。
passwd = self.getconf('remotepasseval', None)
if passwd != None:
return self.localeval.eval(passwd)
localeval
の他の使用法を探して、この方法で処理されるキーを確認できます。また、他のキーを評価したい場合は、同様の呼び出しでこのプログラムの独自のバージョンを作成することはそれほど難しくないかもしれません。