Class WEBrick::HTTPAuth::Htpasswd
In: webrick/httpauth/htpasswd.rb
Parent: Object

Methods

delete_passwd   each   flush   get_passwd   new   reload   set_passwd  

Included Modules

UserDB

Public Class methods

[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

[Source]

# File webrick/httpauth/htpasswd.rb, line 72
      def delete_passwd(realm, user)
        @passwd.delete(user)
      end

[Source]

# File webrick/httpauth/htpasswd.rb, line 76
      def each
        @passwd.keys.sort.each{|user|
          yield([user, @passwd[user]])
        }
      end

[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

[Source]

# File webrick/httpauth/htpasswd.rb, line 63
      def get_passwd(realm, user, reload_db)
        reload() if reload_db
        @passwd[user]
      end

[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

[Source]

# File webrick/httpauth/htpasswd.rb, line 68
      def set_passwd(realm, user, pass)
        @passwd[user] = make_passwd(realm, user, pass)
      end

[Validate]