Class: WEBrick::HTTPAuth::Htdigest
- Inherits:
-
Object
- Object
- WEBrick::HTTPAuth::Htdigest
- Includes:
- UserDB
- Defined in:
- lib/webrick/httpauth/htdigest.rb
Instance Attribute Summary
Attributes included from UserDB
Instance Method Summary collapse
- #delete_passwd(realm, user) ⇒ Object
- #each ⇒ Object
- #flush(output = nil) ⇒ Object
- #get_passwd(realm, user, reload_db) ⇒ Object
-
#initialize(path) ⇒ Htdigest
constructor
A new instance of Htdigest.
- #reload ⇒ Object
- #set_passwd(realm, user, pass) ⇒ Object
Methods included from UserDB
Constructor Details
#initialize(path) ⇒ Htdigest
Returns a new instance of Htdigest.
19 20 21 22 23 24 25 26 27 |
# File 'lib/webrick/httpauth/htdigest.rb', line 19 def initialize(path) @path = path @mtime = Time.at(0) @digest = Hash.new @mutex = Mutex::new @auth_type = DigestAuth open(@path,"a").close unless File::exist?(@path) reload end |
Instance Method Details
#delete_passwd(realm, user) ⇒ Object
75 76 77 78 79 |
# File 'lib/webrick/httpauth/htdigest.rb', line 75 def delete_passwd(realm, user) if hash = @digest[realm] hash.delete(user) end end |
#each ⇒ Object
81 82 83 84 85 86 87 88 |
# File 'lib/webrick/httpauth/htdigest.rb', line 81 def each @digest.keys.sort.each{|realm| hash = @digest[realm] hash.keys.sort.each{|user| yield([user, realm, hash[user]]) } } end |
#flush(output = nil) ⇒ Object
47 48 49 50 51 52 53 54 55 56 57 |
# File 'lib/webrick/httpauth/htdigest.rb', line 47 def flush(output=nil) output ||= @path tmp = Tempfile.new("htpasswd", File::dirname(output)) begin each{|item| tmp.puts(item.join(":")) } tmp.close File::rename(tmp.path, output) rescue tmp.close(true) end end |
#get_passwd(realm, user, reload_db) ⇒ Object
59 60 61 62 63 64 |
# File 'lib/webrick/httpauth/htdigest.rb', line 59 def get_passwd(realm, user, reload_db) reload() if reload_db if hash = @digest[realm] hash[user] end end |
#reload ⇒ Object
29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 |
# File 'lib/webrick/httpauth/htdigest.rb', line 29 def reload mtime = File::mtime(@path) if mtime > @mtime @digest.clear open(@path){|io| while line = io.gets line.chomp! user, realm, pass = line.split(/:/, 3) unless @digest[realm] @digest[realm] = Hash.new end @digest[realm][user] = pass end } @mtime = mtime end end |
#set_passwd(realm, user, pass) ⇒ Object
66 67 68 69 70 71 72 73 |
# File 'lib/webrick/httpauth/htdigest.rb', line 66 def set_passwd(realm, user, pass) @mutex.synchronize{ unless @digest[realm] @digest[realm] = Hash.new end @digest[realm][user] = make_passwd(realm, user, pass) } end |