From 98ae33e0377522cb093508a8c1be861848bd9164 Mon Sep 17 00:00:00 2001 From: Juhamatti Niemelä Date: Tue, 18 Sep 2012 19:50:10 +0300 Subject: 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 --- contrib/keepassx2pass.py | 18 +++++++++++++++--- 1 file changed, 15 insertions(+), 3 deletions(-) (limited to 'contrib/keepassx2pass.py') 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ä . 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=''): -- cgit v1.2.3-59-g8ed1b