Class | WEBrick::HTTPAuth::Htpasswd |
In: |
lib/webrick/httpauth/htpasswd.rb
|
Parent: | Object |
# File lib/webrick/httpauth/htpasswd.rb, line 19 19: def initialize(path) 20: @path = path 21: @mtime = Time.at(0) 22: @passwd = Hash.new 23: @auth_type = BasicAuth 24: open(@path,"a").close unless File::exist?(@path) 25: reload 26: end
# File lib/webrick/httpauth/htpasswd.rb, line 72 72: def delete_passwd(realm, user) 73: @passwd.delete(user) 74: end
# File lib/webrick/httpauth/htpasswd.rb, line 76 76: def each 77: @passwd.keys.sort.each{|user| 78: yield([user, @passwd[user]]) 79: } 80: end
# File lib/webrick/httpauth/htpasswd.rb, line 51 51: def flush(output=nil) 52: output ||= @path 53: tmp = Tempfile.new("htpasswd", File::dirname(output)) 54: begin 55: each{|item| tmp.puts(item.join(":")) } 56: tmp.close 57: File::rename(tmp.path, output) 58: rescue 59: tmp.close(true) 60: end 61: end
# File lib/webrick/httpauth/htpasswd.rb, line 63 63: def get_passwd(realm, user, reload_db) 64: reload() if reload_db 65: @passwd[user] 66: end
# File lib/webrick/httpauth/htpasswd.rb, line 28 28: def reload 29: mtime = File::mtime(@path) 30: if mtime > @mtime 31: @passwd.clear 32: open(@path){|io| 33: while line = io.gets 34: line.chomp! 35: case line 36: when %r!\A[^:]+:[a-zA-Z0-9./]{13}\z! 37: user, pass = line.split(":") 38: when /:\$/, /:\{SHA\}/ 39: raise NotImplementedError, 40: 'MD5, SHA1 .htpasswd file not supported' 41: else 42: raise StandardError, 'bad .htpasswd file' 43: end 44: @passwd[user] = pass 45: end 46: } 47: @mtime = mtime 48: end 49: end