aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorZapata <zapata@xs4all.nl>2011-01-29 22:13:05 +0100
committerZapata <zapata@xs4all.nl>2011-01-29 22:13:05 +0100
commite65dbf59bf3aaa0b4bde29ca49ca67f7ad17b5a9 (patch)
treecd914b8c588ea35f732abdbd7336d3c459804b70
parent7382be9d83bc5f95ad8d184b95c379ca5b9d1725 (diff)
downloadkeyringer-e65dbf59bf3aaa0b4bde29ca49ca67f7ad17b5a9.tar.gz
keyringer-e65dbf59bf3aaa0b4bde29ca49ca67f7ad17b5a9.tar.bz2
added preliminary recipient management functionality
-rw-r--r--lib/backend/recipients_store.rb79
-rw-r--r--lib/keyring/recipients.rb26
-rw-r--r--lib/keyringer/recipients.rb24
3 files changed, 129 insertions, 0 deletions
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