Class: WEBrick::HTTPAuth::Htgroup (Ruby 2.3.2)
Description: Class : WEBrick::HTTPAuth::Htgroup - Ruby 2.3.2

- Home
- Core 2.3.2
- Std-lib 2.3.2
- Downloads

Support for the Ruby 2.3 series has ended. See here for reference.

### Home Classes Methods

### In Files

- webrick/httpauth/htgroup.rb

### Parent

Object

### Methods

- ::new
- #add
- #flush
- #members
- #reload

### Class/Module Index

Quicksearch

- Dir
- Errno
- Errno::ECONNABORTED
- Errno::ECONNRESET
- Errno::EPROTO
- File
- Object
- WEBrick
- WEBrick::AccessLog
- WEBrick::AccessLog::AccessLogError
- WEBrick::BasicLog
- WEBrick::CGI
- WEBrick::Config
- WEBrick::Config::OpenSSL
- WEBrick::Cookie
- WEBrick::Daemon
- WEBrick::GenericServer
- WEBrick::HTMLUtils
- WEBrick::HTTPAuth
- WEBrick::HTTPAuth::Authenticator
- WEBrick::HTTPAuth::BasicAuth
- WEBrick::HTTPAuth::DigestAuth
- WEBrick::HTTPAuth::Htdigest
- WEBrick::HTTPAuth::Htgroup
- WEBrick::HTTPAuth::Htpasswd
- WEBrick::HTTPAuth::ProxyAuthenticator
- WEBrick::HTTPAuth::ProxyBasicAuth
- WEBrick::HTTPAuth::ProxyDigestAuth
- WEBrick::HTTPAuth::UserDB
- WEBrick::HTTPProxyServer
- WEBrick::HTTPRequest
- WEBrick::HTTPResponse
- WEBrick::HTTPServer
- WEBrick::HTTPServerError
- WEBrick::HTTPServlet
- WEBrick::HTTPServlet::AbstractServlet
- WEBrick::HTTPServlet::CGIHandler
- WEBrick::HTTPServlet::DefaultFileHandler
- WEBrick::HTTPServlet::ERBHandler
- WEBrick::HTTPServlet::FileHandler
- WEBrick::HTTPServlet::HTTPServletError
- WEBrick::HTTPServlet::ProcHandler
- WEBrick::HTTPStatus
- WEBrick::HTTPStatus::ClientError
- WEBrick::HTTPStatus::EOFError
- WEBrick::HTTPStatus::Error
- WEBrick::HTTPStatus::Info
- WEBrick::HTTPStatus::Redirect
- WEBrick::HTTPStatus::ServerError
- WEBrick::HTTPStatus::Status
- WEBrick::HTTPStatus::Success
- WEBrick::HTTPUtils
- WEBrick::HTTPUtils::FormData
- WEBrick::HTTPVersion
- WEBrick::Log
- WEBrick::ServerError
- WEBrick::SimpleServer
- WEBrick::Utils
- WEBrick::Utils::TimeoutHandler
- WEBrick::Utils::TimeoutHandler::Thread

No matching classes.

# WEBrick::HTTPAuth::Htgroup

Htgroup accesses apache-compatible group files. Htgroup can be used to provide group-based authentication for users. Currently Htgroup is not directly integrated with any authenticators in WEBrick. For security, the path for a digest password database should be stored outside of the paths available to the HTTP server.

Example:

    htgroup = WEBrick::HTTPAuth::Htgroup.new 'my_group_file'
    htgroup.add 'superheroes', %w[spiderman batman]

    htgroup.members('superheroes').include? 'magneto' # => false

### Public Class Methods

new(path) click to toggle source

Open a group database at `path`

                   # File webrick/httpauth/htgroup.rb, line 34
    def initialize(path)
      @path = path
      @mtime = Time.at(0)
      @group = Hash.new
      open(@path,"a").close unless File::exist?(@path)
      reload
    end

### Public Instance Methods

add(group, members) click to toggle source

Add an Array of `members` to `group`

                   # File webrick/httpauth/htgroup.rb, line 88
    def add(group, members)
      @group[group] = members(group) | members
    end

flush(output=nil) click to toggle source

Flush the group database. If `output` is given the database will be written there instead of to the original path.

                   # File webrick/httpauth/htgroup.rb, line 63
    def flush(output=nil)
      output ||= @path
      tmp = Tempfile.new("htgroup", File::dirname(output))
      begin
        @group.keys.sort.each{|group|
          tmp.puts(format("%s: %s", group, self.members(group).join(" ")))
        }
        tmp.close
        File::rename(tmp.path, output)
      rescue
        tmp.close(true)
      end
    end

members(group) click to toggle source

Retrieve the list of members from `group`

                   # File webrick/httpauth/htgroup.rb, line 80
    def members(group)
      reload
      @group[group] || []
    end

reload() click to toggle source

Reload groups from the database

                   # File webrick/httpauth/htgroup.rb, line 45
    def reload
      if (mtime = File::mtime(@path)) > @mtime
        @group.clear
        open(@path){|io|
          while line = io.gets
            line.chomp!
            group, members = line.split(/:\s*/)
            @group[group] = members.split(/\s+/)
          end
        }
        @mtime = mtime
      end
    end