Class | WEBrick::HTTPAuth::Htdigest
In: | webrick/httpauth/htdigest.rb
Parent: | Object

### Methods

delete_passwd each flush get_passwd new reload set_passwd

### Included Modules

UserDB

### Public Class methods

new(path)

[Source]

    # File webrick/httpauth/htdigest.rb, line 19
          def initialize(path)
            @path = path
            @mtime = Time.at(0)
            @digest = Hash.new
            @mutex = Mutex::new
            @auth_type = DigestAuth
            open(@path,"a").close unless File::exist?(@path)
            reload
          end

### Public Instance methods

delete_passwd(realm, user)

[Source]

    # File webrick/httpauth/htdigest.rb, line 75
          def delete_passwd(realm, user)
            if hash = @digest[realm]
              hash.delete(user)
            end
          end

each() {|[user, realm, hash[user]]| ...}

[Source]

    # File webrick/httpauth/htdigest.rb, line 81
          def each
            @digest.keys.sort.each{|realm|
              hash = @digest[realm]
              hash.keys.sort.each{|user|
                yield([user, realm, hash[user]])
              }
            }
          end

flush(output=nil)

[Source]

    # File webrick/httpauth/htdigest.rb, line 47
          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)

[Source]

    # File webrick/httpauth/htdigest.rb, line 59
          def get_passwd(realm, user, reload_db)
            reload() if reload_db
            if hash = @digest[realm]
              hash[user]
            end
          end

reload()

[Source]

    # File webrick/httpauth/htdigest.rb, line 29
          def reload
            mtime = File::mtime(@path)
            if mtime > @mtime
              @digest.clear
              open(@path){|io|
                while line = io.gets
                  line.chomp!
                  user, realm, pass = line.split(/:/, 3)
                  unless @digest[realm]
                    @digest[realm] = Hash.new
                  end
                  @digest[realm][user] = pass
                end
              }
              @mtime = mtime
            end
          end

set_passwd(realm, user, pass)

[Source]

    # File webrick/httpauth/htdigest.rb, line 66
          def set_passwd(realm, user, pass)
            @mutex.synchronize{
              unless @digest[realm]
                @digest[realm] = Hash.new
              end
              @digest[realm][user] = make_passwd(realm, user, pass)
            }
          end

[Validate]