| Class | WEBrick::HTTPAuth::Htdigest |
| In: |
lib/webrick/httpauth/htdigest.rb
|
| Parent: | Object |
# File lib/webrick/httpauth/htdigest.rb, line 19
19: def initialize(path)
20: @path = path
21: @mtime = Time.at(0)
22: @digest = Hash.new
23: @mutex = Mutex::new
24: @auth_type = DigestAuth
25: open(@path,"a").close unless File::exist?(@path)
26: reload
27: end
# File lib/webrick/httpauth/htdigest.rb, line 75
75: def delete_passwd(realm, user)
76: if hash = @digest[realm]
77: hash.delete(user)
78: end
79: end
# File lib/webrick/httpauth/htdigest.rb, line 81
81: def each
82: @digest.keys.sort.each{|realm|
83: hash = @digest[realm]
84: hash.keys.sort.each{|user|
85: yield([user, realm, hash[user]])
86: }
87: }
88: end
# File lib/webrick/httpauth/htdigest.rb, line 47
47: def flush(output=nil)
48: output ||= @path
49: tmp = Tempfile.new("htpasswd", File::dirname(output))
50: begin
51: each{|item| tmp.puts(item.join(":")) }
52: tmp.close
53: File::rename(tmp.path, output)
54: rescue
55: tmp.close(true)
56: end
57: end
# File lib/webrick/httpauth/htdigest.rb, line 59
59: def get_passwd(realm, user, reload_db)
60: reload() if reload_db
61: if hash = @digest[realm]
62: hash[user]
63: end
64: end
# File lib/webrick/httpauth/htdigest.rb, line 29
29: def reload
30: mtime = File::mtime(@path)
31: if mtime > @mtime
32: @digest.clear
33: open(@path){|io|
34: while line = io.gets
35: line.chomp!
36: user, realm, pass = line.split(/:/, 3)
37: unless @digest[realm]
38: @digest[realm] = Hash.new
39: end
40: @digest[realm][user] = pass
41: end
42: }
43: @mtime = mtime
44: end
45: end