From e65dbf59bf3aaa0b4bde29ca49ca67f7ad17b5a9 Mon Sep 17 00:00:00 2001 From: Zapata Date: Sat, 29 Jan 2011 22:13:05 +0100 Subject: added preliminary recipient management functionality --- lib/backend/recipients_store.rb | 79 +++++++++++++++++++++++++++++++++++++++++ lib/keyring/recipients.rb | 26 ++++++++++++++ lib/keyringer/recipients.rb | 24 +++++++++++++ 3 files changed, 129 insertions(+) create mode 100644 lib/backend/recipients_store.rb create mode 100644 lib/keyring/recipients.rb create mode 100644 lib/keyringer/recipients.rb diff --git a/lib/backend/recipients_store.rb b/lib/backend/recipients_store.rb new file mode 100644 index 0000000..158aabf --- /dev/null +++ b/lib/backend/recipients_store.rb @@ -0,0 +1,79 @@ +module Backend + # a store for the recipients configuration + class RecipientsStore + # Instantiates and stores password + def initialize(aBaseDir = "") + @baseDir = aBaseDir + end + + def addRecipient(aRecipientAddress, aRecipientKey) + @recipients.push(Recipient.new(aRecipientAddress, aRecipientKey)) + end + + def removeRecipient(aRecipientKey) +# read() +# @recipients.push(Recipient.new(aRecipientAddress, aRecipientKey)) +# write() + end + + def getRecipients() + return @recipients + end + + def load() + read() + end + + def save() + write() + end + + private + + def read() + fileName = File.join(@baseDir, "config", "recipients") + file = File.new(fileName, "r") + begin + recipients = [] + + while (line = file.gets) + parts = line.split() + if (parts.length == 2) + recipients.push(Recipient.new(parts[1], parts[0])) + end + end + + @recipients = recipients + rescue => err + throw err + ensure + file.close + end + end + + def write() + fileName = File.join(@baseDir, "config", "recipients") + file = File.new(fileName, "w") + begin + @recipients.each do |recipient| + file.puts("#{recipient.email} #{recipient.keySignature}") + end + rescue => err + throw err + ensure + file.close + end + end + + end + + class Recipient + def initialize(aKeySignature, anEmail) + @keySignature = aKeySignature + @email = anEmail + end + + attr_reader :keySignature + attr_reader :email + end +end diff --git a/lib/keyring/recipients.rb b/lib/keyring/recipients.rb new file mode 100644 index 0000000..4cd9a48 --- /dev/null +++ b/lib/keyring/recipients.rb @@ -0,0 +1,26 @@ +module Keyring + class Recipients + def initialize(aBaseDirectory = '..') + @recipientsStore = Backend::RecipientsStore.new(aBaseDirectory) + + end + def addRecipient(anEmail, aKeySignature) + + @recipientsStore.load() + @recipientsStore.addRecipient(anEmail, aKeySignature) + @recipientsStore.save() + end + + def removeRecipient(aKeySignature) + @recipientsStore.load() + @recipientsStore.removeRecipient(aKeySignature) + @recipientsStore.save() + end + + def listRecipients() + @recipientsStore.load() + + return @recipientsStore.getRecipients() + end + end +end diff --git a/lib/keyringer/recipients.rb b/lib/keyringer/recipients.rb new file mode 100644 index 0000000..16b5a88 --- /dev/null +++ b/lib/keyringer/recipients.rb @@ -0,0 +1,24 @@ +module Keyringer + class Recipients + def execute + subCommand = ARGV[2] + parameters = ARGV[3..-1] + + recipients = Keyring::Recipients.new + + if subCommand == "add" + recipients.addRecipient(ARGV[3], ARGV[4]) + elsif subCommand == "remove" + recipients.removeRecipient(ARGV[3]) + elsif subCommand == "list" + recipients.listRecipients().each() do |recipient| + puts("#{recipient.email} #{recipient.keySignature}") + end + else + throw "Invalid recipients command: #{subCommand} " + end + + return "" + end + end +end -- cgit v1.2.3 From 5196fb316c1afc2b6b0d11132e105c7f1fb841fe Mon Sep 17 00:00:00 2001 From: Zapata Date: Sat, 29 Jan 2011 22:14:19 +0100 Subject: preliminary support for recipient management 2 --- bin/keyringer | 20 +++++++++++--------- lib/backend.rb | 1 + lib/keyring.rb | 1 + lib/keyringer.rb | 1 + 4 files changed, 14 insertions(+), 9 deletions(-) diff --git a/bin/keyringer b/bin/keyringer index 74dfcb1..d6ab3d4 100755 --- a/bin/keyringer +++ b/bin/keyringer @@ -12,16 +12,18 @@ end $:.unshift File.dirname(__FILE__) + '/../lib' require 'keyringer' begin - action = Keyringer.const_get(ARGV[1].capitalize) - - if action.is_a?(Class) - instance = action.new - output = instance.execute - puts output + begin + action = Keyringer.const_get(ARGV[1].capitalize) + rescue NameError + wrapper = Keyringer::BashWrapper.new + wrapper.execute + else + if action.is_a?(Class) + instance = action.new + output = instance.execute + puts output + end end -rescue NameError - wrapper = Keyringer::BashWrapper.new - wrapper.execute rescue SystemExit => e exit e.status rescue Exception => e diff --git a/lib/backend.rb b/lib/backend.rb index 18f220c..6be9016 100644 --- a/lib/backend.rb +++ b/lib/backend.rb @@ -1,3 +1,4 @@ # internal requires $:.unshift File.dirname(__FILE__) require 'backend/crypt' +require 'backend/recipients_store' diff --git a/lib/keyring.rb b/lib/keyring.rb index 7bfdb86..d3e9260 100644 --- a/lib/keyring.rb +++ b/lib/keyring.rb @@ -3,3 +3,4 @@ $:.unshift File.dirname(__FILE__) require 'backend' require 'keyring/crypt' require 'keyring/fs' +require 'keyring/recipients' diff --git a/lib/keyringer.rb b/lib/keyringer.rb index 9d455d1..cd9c68a 100644 --- a/lib/keyringer.rb +++ b/lib/keyringer.rb @@ -3,6 +3,7 @@ $:.unshift File.dirname(__FILE__) require 'keyring' require 'keyringer/decrypt' require 'keyringer/bash_wrapper' +require 'keyringer/recipients' module Keyring VERSION = '2.0-alpha' -- cgit v1.2.3 From ce02d9f01ca366be945caf286c0b77f8eaab24d1 Mon Sep 17 00:00:00 2001 From: Zapata Date: Sat, 29 Jan 2011 22:32:13 +0100 Subject: more merging --- lib/keyringer/actions/recipients.rb | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/lib/keyringer/actions/recipients.rb b/lib/keyringer/actions/recipients.rb index 16b5a88..c5f30ed 100644 --- a/lib/keyringer/actions/recipients.rb +++ b/lib/keyringer/actions/recipients.rb @@ -1,15 +1,15 @@ module Keyringer + module Actions class Recipients def execute - subCommand = ARGV[2] - parameters = ARGV[3..-1] + subCommand = $args[0] recipients = Keyring::Recipients.new if subCommand == "add" - recipients.addRecipient(ARGV[3], ARGV[4]) + recipients.addRecipient($args[1], $args[2]) elsif subCommand == "remove" - recipients.removeRecipient(ARGV[3]) + recipients.removeRecipient($args[1]) elsif subCommand == "list" recipients.listRecipients().each() do |recipient| puts("#{recipient.email} #{recipient.keySignature}") @@ -21,4 +21,5 @@ module Keyringer return "" end end + end end -- cgit v1.2.3