Class: WEBrick::HTTPAuth::Htpasswd
- Inherits:
-
Object
- Object
- WEBrick::HTTPAuth::Htpasswd
- Includes:
- UserDB
- Defined in:
- lib/webrick/httpauth/htpasswd.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) ⇒ Htpasswd
constructor
A new instance of Htpasswd.
- #reload ⇒ Object
- #set_passwd(realm, user, pass) ⇒ Object
Methods included from UserDB
Constructor Details
Instance Method Details
#delete_passwd(realm, user) ⇒ Object
72 73 74 |
# File 'lib/webrick/httpauth/htpasswd.rb', line 72 def delete_passwd(realm, user) @passwd.delete(user) end |
#each ⇒ Object
76 77 78 79 80 |
# File 'lib/webrick/httpauth/htpasswd.rb', line 76 def each @passwd.keys.sort.each{|user| yield([user, @passwd[user]]) } end |
#flush(output = nil) ⇒ Object
51 52 53 54 55 56 57 58 59 60 61 |
# File 'lib/webrick/httpauth/htpasswd.rb', line 51 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
63 64 65 66 |
# File 'lib/webrick/httpauth/htpasswd.rb', line 63 def get_passwd(realm, user, reload_db) reload() if reload_db @passwd[user] end |
#reload ⇒ Object
28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 |
# File 'lib/webrick/httpauth/htpasswd.rb', line 28 def reload mtime = File::mtime(@path) if mtime > @mtime @passwd.clear open(@path){|io| while line = io.gets line.chomp! case line when %r!\A[^:]+:[a-zA-Z0-9./]{13}\z! user, pass = line.split(":") when /:\$/, /:\{SHA\}/ raise NotImplementedError, 'MD5, SHA1 .htpasswd file not supported' else raise StandardError, 'bad .htpasswd file' end @passwd[user] = pass end } @mtime = mtime end end |
#set_passwd(realm, user, pass) ⇒ Object
68 69 70 |
# File 'lib/webrick/httpauth/htpasswd.rb', line 68 def set_passwd(realm, user, pass) @passwd[user] = make_passwd(realm, user, pass) end |