class Pione::Relay::RelayAccountDB
Constants
- Account
Public Class Methods
new(path)
click to toggle source
# File lib/pione/relay/relay-account-db.rb, line 10 def initialize(path) raise TypeError.new(path) unless path.kind_of?(Pathname) @path = path @table = read_database end
Public Instance Methods
add(realm, name, password)
click to toggle source
# File lib/pione/relay/relay-account-db.rb, line 16 def add(realm, name, password) # stretching x 1000 digest = (1..1000).inject("") {|hash, _| Digest::SHA512.hexdigest("%s:%s:%s" % [hash, name, password]) } @table[realm] = Account.new(name, digest) end
delete(realm)
click to toggle source
# File lib/pione/relay/relay-account-db.rb, line 24 def delete(realm) @table.delete(realm) save end
realms()
click to toggle source
# File lib/pione/relay/relay-account-db.rb, line 29 def realms @table.keys end
save()
click to toggle source
# File lib/pione/relay/relay-account-db.rb, line 33 def save @path.open("w+", 0600) do |f| @table.each do |realm, account| f.puts "%s:%s:%s" % [realm, account.name, account.digest] if realm and account end end end
Private Instance Methods
read_database()
click to toggle source
# File lib/pione/relay/relay-account-db.rb, line 43 def read_database if @path.exist? @path.readlines.inject({}) do |tbl, line| realm, name, digest = line.chomp.split(":") tbl.tap{ tbl.store(realm, Account.new(name, digest)) } end else {} end end