summaryrefslogtreecommitdiff
path: root/contrib/importers/keepassx2pass.py
diff options
context:
space:
mode:
authorLukas Zapletal <lzap+git@redhat.com>2014-04-15 13:29:45 +0200
committerJason A. Donenfeld <Jason@zx2c4.com>2014-04-15 13:42:16 +0200
commite242e97e8162f5539fcd3175f496e27c6efd7460 (patch)
tree97ffc3d764cfc9024a7ae1b7b9ee6ad2f9181192 /contrib/importers/keepassx2pass.py
parent7ed0a70aa6d1fd502ff5443bced462d6dedd8511 (diff)
downloadpass-e242e97e8162f5539fcd3175f496e27c6efd7460.tar.gz
pass-e242e97e8162f5539fcd3175f496e27c6efd7460.tar.bz2
pass-e242e97e8162f5539fcd3175f496e27c6efd7460.zip
Multiline comment support for keepassx importer
Diffstat (limited to 'contrib/importers/keepassx2pass.py')
-rwxr-xr-xcontrib/importers/keepassx2pass.py14
1 files changed, 9 insertions, 5 deletions
diff --git a/contrib/importers/keepassx2pass.py b/contrib/importers/keepassx2pass.py
index dc4b1e5..1505edc 100755
--- a/contrib/importers/keepassx2pass.py
+++ b/contrib/importers/keepassx2pass.py
@@ -44,13 +44,18 @@ def password_data(element):
ret = passwd + "\n" if passwd else "\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)
+ children = [str(e.text or '') + str(e.tail or '') for e in list(fel)]
+ if len(children) > 0:
+ children.insert(0, '')
+ text = (fel.text or '') + "\n".join(children)
+ if len(text) > 0:
+ ret = "%s%s: %s\n" % (ret, fel.tag, text)
return ret
def import_entry(element, path=''):
""" Import new password entry to password-store using pass insert
command """
+ print "Importing " + path_for(element, path)
proc = Popen(['pass', 'insert', '--multiline', '--force',
path_for(element, path)],
stdin=PIPE, stdout=PIPE)
@@ -68,9 +73,8 @@ def import_group(element, path=''):
def main(xml_file):
""" Parse given KeepassX XML file and import password groups from it """
- with open(xml_file) as xml:
- for group in ElementTree.XML(xml.read()).findall('group'):
- import_group(group)
+ for group in ElementTree.parse(xml_file).findall('group'):
+ import_group(group)
if __name__ == '__main__':
main(sys.argv[1])