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
Class Methods
2.7
View on GitHub
# File tmp/rubies/ruby-2.7.6/lib/webrick/httpauth/htgroup.rb, line 35
def initialize(path)
@path = path
@mtime = Time.at(0)
@group = Hash.new
File.open(@path,"a").close unless File.exist?(@path)
reload
end
Open a group database at path
Instance Methods
2.7
View on GitHub
# File tmp/rubies/ruby-2.7.6/lib/webrick/httpauth/htgroup.rb, line 92
def add(group, members)
@group[group] = members(group) | members
end
Add an Array of members to group
2.7
View on GitHub
# File tmp/rubies/ruby-2.7.6/lib/webrick/httpauth/htgroup.rb, line 64
def flush(output=nil)
output ||= @path
tmp = Tempfile.create("htgroup", File::dirname(output))
begin
@group.keys.sort.each{|group|
tmp.puts(format("%s: %s", group, self.members(group).join(" ")))
}
ensure
tmp.close
if $!
File.unlink(tmp.path)
else
return File.rename(tmp.path, output)
end
end
end
Flush the group database. If output is given the database will be written there instead of to the original path.
2.7
View on GitHub
# File tmp/rubies/ruby-2.7.6/lib/webrick/httpauth/htgroup.rb, line 84
def members(group)
reload
@group[group] || []
end
Retrieve the list of members from group
#
2.7
View on GitHub
# File tmp/rubies/ruby-2.7.6/lib/webrick/httpauth/htgroup.rb, line 46
def reload
if (mtime = File::mtime(@path)) > @mtime
@group.clear
File.open(@path){|io|
while line = io.gets
line.chomp!
group, members = line.split(/:\s*/)
@group[group] = members.split(/\s+/)
end
}
@mtime = mtime
end
end
Reload groups from the database