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)
- - (Object) delete_passwd(realm, user)
- - (Object) each
- - (Object) flush(output = nil)
- - (Object) get_passwd(realm, user, reload_db)
-
- (Htpasswd) initialize(path)
constructor
A new instance of Htpasswd.
- - (Object) reload
- - (Object) set_passwd(realm, user, pass)
Methods included from UserDB
Constructor Details
- (Htpasswd) initialize(path)
A new instance of Htpasswd
19 20 21 22 23 24 25 26 |
# File 'lib/webrick/httpauth/htpasswd.rb', line 19 def initialize(path) @path = path @mtime = Time.at(0) @passwd = Hash.new @auth_type = BasicAuth open(@path,"a").close unless File::exist?(@path) reload end |
Instance Method Details
- (Object) delete_passwd(realm, user)
73 74 75 |
# File 'lib/webrick/httpauth/htpasswd.rb', line 73 def delete_passwd(realm, user) @passwd.delete(user) end |
- (Object) each
77 78 79 80 81 |
# File 'lib/webrick/httpauth/htpasswd.rb', line 77 def each @passwd.keys.sort.each{|user| yield([user, @passwd[user]]) } end |
- (Object) flush(output = nil)
52 53 54 55 56 57 58 59 60 61 62 |
# File 'lib/webrick/httpauth/htpasswd.rb', line 52 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 |
- (Object) get_passwd(realm, user, reload_db)
64 65 66 67 |
# File 'lib/webrick/httpauth/htpasswd.rb', line 64 def get_passwd(realm, user, reload_db) reload() if reload_db @passwd[user] end |
- (Object) reload
28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 |
# 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(":") # XXX MacRuby needs the curly braces to be escaped 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 |
- (Object) set_passwd(realm, user, pass)
69 70 71 |
# File 'lib/webrick/httpauth/htpasswd.rb', line 69 def set_passwd(realm, user, pass) @passwd[user] = make_passwd(realm, user, pass) end |