diff options
author | Juhamatti Niemelä <iiska@iki.fi> | 2012-09-18 19:50:10 +0300 |
---|---|---|
committer | Juhamatti Niemelä <iiska@iki.fi> | 2012-09-18 19:50:10 +0300 |
commit | 98ae33e0377522cb093508a8c1be861848bd9164 (patch) | |
tree | dd19fd9fb63733d950966e5a7883adb469b11b0f | |
parent | 88a50af793b6d8386750459f4cf88c350778484e (diff) |
Add additional information from KeepassX xml
Import passwords as multiline entries with password in the first
line. Rest contains following data if they exist in the entry element
of the xml file:
- username
- url
- comment
-rwxr-xr-x | contrib/keepassx2pass.py | 18 |
1 files changed, 15 insertions, 3 deletions
diff --git a/contrib/keepassx2pass.py b/contrib/keepassx2pass.py index d8357be..cc75938 100755 --- a/contrib/keepassx2pass.py +++ b/contrib/keepassx2pass.py @@ -1,5 +1,6 @@ #! /usr/bin/env python - +# -*- coding: utf-8 -*- +# # (C) Copyright 2012 Juhamatti Niemelä <iiska@iki.fi>. All Rights # Reserved. This file is licensed under the GPLv2+. Please see COPYING # for more information. @@ -14,12 +15,23 @@ def path_for(element, path=''): title = element.find('title').text return '/'.join([path, title]) +def password_data(element): + """ Return password data and additional info if available from + password entry element. """ + ret = element.find('password').text + "\n" + for field in ['username', 'url', 'comment']: + fel = element.find(field) + if fel.text is not None: + ret = "%s%s: %s\n" % (ret, fel.tag, fel.text) + return ret + def import_entry(element, path=''): """ Import new password entry to password-store using pass insert command """ - proc = Popen(['pass', 'insert', '--force', path_for(element, path)], + proc = Popen(['pass', 'insert', '--multiline', '--force', + path_for(element, path)], stdin=PIPE, stdout=PIPE) - proc.communicate(element.find('password').text + "\n") + proc.communicate(password_data(element).encode('utf8')) proc.wait() def import_group(element, path=''): |