diff options
author | Jason A. Donenfeld <Jason@zx2c4.com> | 2012-12-02 22:01:37 +0100 |
---|---|---|
committer | Jason A. Donenfeld <Jason@zx2c4.com> | 2012-12-02 22:01:37 +0100 |
commit | 57e4ae72d74bb1524d49cc1fcdfb3b076a6083db (patch) | |
tree | a2a49c2b430fd0d649a1acc9e59368de2cb76a89 /contrib | |
parent | 542cf6e9382d2fc6ac608e2c07d9a1ba9c88e52a (diff) |
Ked Password Manager import script from Antoine Beaupré.
Diffstat (limited to 'contrib')
-rwxr-xr-x | contrib/kedpm2pass.py | 52 | ||||
-rwxr-xr-x | contrib/keepassx2pass.py | 2 |
2 files changed, 53 insertions, 1 deletions
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é <anarcat@orangeseeds.org>. 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ä <iiska@iki.fi>. All Rights Reserved. |