password-store

Simple password manager using gpg and ordinary unix directories
git clone https://git.zx2c4.com/password-store
Log | Files | Refs | README | LICENSE

commit 7bb83e129b3a1ced4dc3cd3947d9e0abd59df390
parent 5afc207d28f290936dca8fcdcab3157d3056379a
Author: Jason A. Donenfeld <Jason@zx2c4.com>
Date:   Wed, 27 Mar 2013 15:06:45 +0100

Add david skylar's gorilla import script.

Diffstat:
Acontrib/gorilla2pass.rb | 76++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
1 file changed, 76 insertions(+), 0 deletions(-)

diff --git a/contrib/gorilla2pass.rb b/contrib/gorilla2pass.rb @@ -0,0 +1,76 @@ +#!/usr/bin/env ruby + +# Copyright (C) 2013 David Sklar <david.sklar@gmail.com>. All Rights Reserved. +# This file is licensed under the GPLv2+. Please see COPYING for more information. + +entries = {} + +class HashCounter + + def initialize + @h = Hash.new {|h,k| h[k] = 2 } + end + + def get(k) + v = @h[k] + @h[k] = v + 1 + v + end +end + +hc = HashCounter.new + +$stdin.each do |line| + uuid, group, title, url, user, password, notes = line.strip.split(',') + next if uuid == "uuid" + + # check for missing group + # check for missing title + + prefix = "#{group}/#{title}".gsub(/[\s\'\"()!]/,'') + + + if user && user.length > 0 + entries["#{prefix}/user"] = user + end + if url && url.length > 0 + entries["#{prefix}/url"] = url + end + if password && password.length > 0 + entries["#{prefix}/password"] = password + end + if notes && notes.length > 0 + entries["#{prefix}/notes"] = notes.gsub('\n',"\n").strip + end +end + +entries.keys.each do |k| + if k =~ /^(.+?)-merged\d{4}-\d\d-\d\d\d\d:\d\d:\d\d(\/.+)$/ + other = $1 + $2 + if entries.has_key?(other) + if entries[k] == entries[other] + entries.delete(k) + else + i = hc.get(other) + entries["#{other}#{i}"] = entries[k] + entries.delete(k) + end + else + entries[other] = entries[k] + entries.delete(k) + end + end +end + +pass_top_level = "Gorilla" +entries.keys.each do |k| + print "#{k}...(#{entries[k]})..." + IO.popen("pass insert -e -f '#{pass_top_level}/#{k}' > /dev/null", 'w') do |io| + io.puts entries[k] + "\n" + end + if $? == 0 + puts " done!" + else + puts " error!" + end +end