In Files

  • webrick/httpauth/htpasswd.rb

Class/Module Index [+]

Quicksearch

WEBrick::HTTPAuth::Htpasswd

Public Class Methods

new(path) click to toggle source
 
               # File 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
            

Public Instance Methods

delete_passwd(realm, user) click to toggle source
 
               # File webrick/httpauth/htpasswd.rb, line 72
def delete_passwd(realm, user)
  @passwd.delete(user)
end
            
each() click to toggle source
 
               # File webrick/httpauth/htpasswd.rb, line 76
def each
  @passwd.keys.sort.each{|user|
    yield([user, @passwd[user]])
  }
end
            
flush(output=nil) click to toggle source
 
               # File 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) click to toggle source
 
               # File webrick/httpauth/htpasswd.rb, line 63
def get_passwd(realm, user, reload_db)
  reload() if reload_db
  @passwd[user]
end
            
reload() click to toggle source
 
               # File 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) click to toggle source
 
               # File webrick/httpauth/htpasswd.rb, line 68
def set_passwd(realm, user, pass)
  @passwd[user] = make_passwd(realm, user, pass)
end