diff options
author | Lukas Zapletal <lzap+git@redhat.com> | 2014-04-15 13:29:45 +0200 |
---|---|---|
committer | Jason A. Donenfeld <Jason@zx2c4.com> | 2014-04-15 13:42:16 +0200 |
commit | e242e97e8162f5539fcd3175f496e27c6efd7460 (patch) | |
tree | 97ffc3d764cfc9024a7ae1b7b9ee6ad2f9181192 /contrib | |
parent | 7ed0a70aa6d1fd502ff5443bced462d6dedd8511 (diff) |
Multiline comment support for keepassx importer
Diffstat (limited to 'contrib')
-rwxr-xr-x | contrib/importers/keepassx2pass.py | 14 |
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]) |