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