From 57e4ae72d74bb1524d49cc1fcdfb3b076a6083db Mon Sep 17 00:00:00 2001 From: "Jason A. Donenfeld" Date: Sun, 2 Dec 2012 22:01:37 +0100 Subject: =?UTF-8?q?Ked=20Password=20Manager=20import=20script=20from=20Ant?= =?UTF-8?q?oine=20Beaupr=C3=A9.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- contrib/kedpm2pass.py | 52 ++++++++++++++++++++++++++++++++++++++++++++++++ contrib/keepassx2pass.py | 2 +- 2 files changed, 53 insertions(+), 1 deletion(-) create mode 100755 contrib/kedpm2pass.py (limited to 'contrib') diff --git a/contrib/kedpm2pass.py b/contrib/kedpm2pass.py new file mode 100755 index 0000000..b79cc8b --- /dev/null +++ b/contrib/kedpm2pass.py @@ -0,0 +1,52 @@ +#!/usr/bin/env python +# -*- coding: utf-8 -*- +# +# Copyright (C) 2012 Antoine Beaupré . All Rights Reserved. +# This file is licensed under the GPLv2+. Please see COPYING for more information. +# +# To double-check your import worked: +# grep Path passwords | sed 's#^Path: ##;s/$/.gpg/' | sort > listpaths +# (cd ~/.password-store/ ; find -type f ) | sort | diff -u - listpaths + +import re +import fileinput + +import sys # for exit + +import subprocess + +def insert(d): + path = d['Path'] + del d['Path'] + print "inserting " + path + content = d['Password'] + "\n" + del d['Password'] + for k, v in d.iteritems(): + content += "%s: %s\n" % (k, v) + del d + cmd = ["pass", "insert", "--force", "--multiline", path] + process = subprocess.Popen(cmd, stdin=subprocess.PIPE, stdout=subprocess.PIPE, stderr=subprocess.PIPE) + stdout, stderr = process.communicate(content) + retcode = process.wait() + if retcode: + print 'command "%s" failed with exit code %d: %s' % (" ".join(cmd), retcode, stdout + stderr) + sys.exit(1); + +d = None +for line in fileinput.input(): + if line == "\n": + continue + match = re.match("(\w+): (.*)$", line) + if match: + if match.group(1) == 'Path': + if d is not None: + insert(d) + else: + d = {} + d[match.group(1)] = match.group(2) + #print "found field: %s => %s" % (match.group(1), match.group(2)) + else: + print "warning: no match found on line: *%s*" % line + +if d is not None: + insert(d) diff --git a/contrib/keepassx2pass.py b/contrib/keepassx2pass.py index 538c157..6043690 100755 --- a/contrib/keepassx2pass.py +++ b/contrib/keepassx2pass.py @@ -1,4 +1,4 @@ -#! /usr/bin/env python +#!/usr/bin/env python # -*- coding: utf-8 -*- # # Copyright (C) 2012 Juhamatti Niemelä . All Rights Reserved. -- cgit v1.2.3