Class: Pione::Relay::RelayClientDB

Inherits:
Object
  • Object
show all
Defined in:
lib/pione/relay/relay-client-db.rb

Instance Method Summary collapse

Constructor Details

#initialize(path) ⇒ RelayClientDB

Returns a new instance of RelayClientDB.

Raises:

  • (TypeError)


4
5
6
7
8
# File 'lib/pione/relay/relay-client-db.rb', line 4

def initialize(path)
  raise TypeError.new(path) unless path.kind_of?(Pathname)
  @path = path
  @table = read_database
end

Instance Method Details

#add(name, password) ⇒ Object



14
15
16
17
18
19
# File 'lib/pione/relay/relay-client-db.rb', line 14

def add(name, password)
  # stretching x 1000
  @table[name] = (1..1000).inject("") {|hash, _|
    Digest::SHA512.hexdigest("%s:%s:%s" % [hash, name, password])
  }
end

#auth(uuid, name, response) ⇒ Object



10
11
12
# File 'lib/pione/relay/relay-client-db.rb', line 10

def auth(uuid, name, response)
  Digest::SHA512.hexdigest("%s:%s" % [uuid, @table[name]]) == response
end

#delete(name) ⇒ Object



21
22
23
24
# File 'lib/pione/relay/relay-client-db.rb', line 21

def delete(name)
  @table.delete(name)
  save
end

#namesObject



26
27
28
# File 'lib/pione/relay/relay-client-db.rb', line 26

def names
  @table.keys
end

#saveObject



30
31
32
33
34
35
36
# File 'lib/pione/relay/relay-client-db.rb', line 30

def save
  @path.open("w+", 0600) do |f|
    @table.each do |name, digest|
      f.puts "%s:%s" % [name, digest] if name and digest
    end
  end
end