summaryrefslogtreecommitdiff
path: root/contrib/keepassx2pass.py
diff options
context:
space:
mode:
authorJuhamatti Niemelä <iiska@iki.fi>2012-09-18 19:50:10 +0300
committerJuhamatti Niemelä <iiska@iki.fi>2012-09-18 19:50:10 +0300
commit98ae33e0377522cb093508a8c1be861848bd9164 (patch)
treedd19fd9fb63733d950966e5a7883adb469b11b0f /contrib/keepassx2pass.py
parent88a50af793b6d8386750459f4cf88c350778484e (diff)
downloadpass-98ae33e0377522cb093508a8c1be861848bd9164.tar.gz
pass-98ae33e0377522cb093508a8c1be861848bd9164.tar.bz2
pass-98ae33e0377522cb093508a8c1be861848bd9164.zip
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
Diffstat (limited to '')
-rwxr-xr-xcontrib/keepassx2pass.py18
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=''):