source: extensions/gsdl-video/trunk/installed/cmdline/lib/ruby/1.8/webrick/httpauth/htgroup.rb@ 18425

Last change on this file since 18425 was 18425, checked in by davidb, 15 years ago

Video extension to Greenstone

File size: 1.4 KB
Line 
1#
2# httpauth/htgroup.rb -- Apache compatible htgroup file
3#
4# Author: IPR -- Internet Programming with Ruby -- writers
5# Copyright (c) 2003 Internet Programming with Ruby writers. All rights
6# reserved.
7#
8# $IPR: htgroup.rb,v 1.1 2003/02/16 22:22:56 gotoyuzo Exp $
9
10require 'tempfile'
11
12module WEBrick
13 module HTTPAuth
14 class Htgroup
15 def initialize(path)
16 @path = path
17 @mtime = Time.at(0)
18 @group = Hash.new
19 open(@path,"a").close unless File::exist?(@path)
20 reload
21 end
22
23 def reload
24 if (mtime = File::mtime(@path)) > @mtime
25 @group.clear
26 open(@path){|io|
27 while line = io.gets
28 line.chomp!
29 group, members = line.split(/:\s*/)
30 @group[group] = members.split(/\s+/)
31 end
32 }
33 @mtime = mtime
34 end
35 end
36
37 def flush(output=nil)
38 output ||= @path
39 tmp = Tempfile.new("htgroup", File::dirname(output))
40 begin
41 @group.keys.sort.each{|group|
42 tmp.puts(format("%s: %s", group, self.members(group).join(" ")))
43 }
44 tmp.close
45 File::rename(tmp.path, output)
46 rescue
47 tmp.close(true)
48 end
49 end
50
51 def members(group)
52 reload
53 @group[group] || []
54 end
55
56 def add(group, members)
57 @group[group] = members(group) | members
58 end
59 end
60 end
61end
Note: See TracBrowser for help on using the repository browser.