annotate after5.rb @ 3:354e09bb8ce1 draft

RCS-revision 1.4 date: 2004/01/02 14:30:58; author: yuuji; state: Exp; lines: +64 -46 The amount of chedule text in monthly calendar is now selectable.
author HIROSE Yuuji <yuuji@gentei.org>
date Fri, 02 Jan 2004 14:30:58 +0859
parents 1110baebe9a9
children b7e65c9caa23
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1 #!/usr/local/bin/ruby
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2 #
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
3 # Associative Scheduling Table - after5
2
1110baebe9a9 RCS-revision 1.3
HIROSE Yuuji <yuuji@gentei.org>
parents: 1
diff changeset
4 # (C)2003, 2004 by HIROSE Yuuji [yuuji@gentei.org]
3
354e09bb8ce1 RCS-revision 1.4
HIROSE Yuuji <yuuji@gentei.org>
parents: 2
diff changeset
5 # $Id: after5.rb,v 1.4 2004/01/02 14:30:58 yuuji Exp $
354e09bb8ce1 RCS-revision 1.4
HIROSE Yuuji <yuuji@gentei.org>
parents: 2
diff changeset
6 # Last modified Fri Jan 2 23:25:50 2004 on firestorm
0
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
7 # See http://www.gentei.org/~yuuji/software/after5/
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
8 # このスクリプトはEUCで保存してください。
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
9
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
10 require 'kconv'
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
11
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
12 $charset = 'EUC-JP'
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
13
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
14 class HTMLout
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
15 def contenttype(type = "text/html", charset = $charset)
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
16 sprintf "Content-type: %s; charset=%s\n\n", type, charset
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
17 end
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
18 def initialize(title = "Document")
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
19 @title = title
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
20 @eltstack = []
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
21 end
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
22 def resetstack()
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
23 @eltstack = []
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
24 end
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
25 def head(title = @title, css = "style.css")
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
26 sprintf <<__EOS__, title, css
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
27 <html>
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
28 <head>
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
29 <title>%s</title>
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
30 <link rel="stylesheet" type="text/css" href="%s">
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
31 </head>
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
32 __EOS__
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
33 end
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
34
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
35 def startelement(elt, attrs = {}, nl = true)
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
36 attr = ""
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
37 if attrs.is_a?(Hash)
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
38 for k in attrs.keys
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
39 attr += " %s=\"%s\"" % [k, attrs[k]]
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
40 end
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
41 end
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
42 @eltstack.push(elt)
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
43 sprintf "<%s%s>%s", elt, attr, nl ? "\n" : ""
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
44 end
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
45 def endelement(elt = nil, nl = true)
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
46 if elt
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
47 x = elt
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
48 @eltstack.pop
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
49 else
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
50 x = @eltstack.pop
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
51 end
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
52 sprintf "</%s>%s", x, nl ? "\n" : ""
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
53 end
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
54 def element(elt, attrs = nil, nl = nil)
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
55 attr = ""
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
56 lf = nl ? "\n" : ""
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
57 if attrs.is_a?(Hash)
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
58 for k in attrs.keys
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
59 attr += " %s=\"%s\"" % [k, attrs[k]]
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
60 end
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
61 end
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
62 body = yield
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
63 sprintf "<%s%s>%s%s%s</%s>%s", elt, attr, lf, body, lf, elt, lf
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
64 end
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
65 def elementln(elt, attr=nil)
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
66 body = yield
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
67 element(elt, attr, true){body}
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
68 end
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
69 def a(href, anchor = nil, attrs = {})
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
70 attr = attrs
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
71 attr['href'] = href
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
72 element("a", attr){
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
73 anchor or href
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
74 }
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
75 end
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
76 def p(msg, attrs=nil)
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
77 element("p", attrs){msg}
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
78 end
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
79 def text(name, value='', size=nil, maxlength=nil)
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
80 sprintf "<input type=\"text\" name=\"%s\" value=\"%s\"%s%s>",
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
81 name, value,
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
82 size ? " size=\"%s\""%size.to_s : '',
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
83 maxlength ? " maxlength=\"%s\""%maxlength.to_s : ''
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
84 end
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
85 def hidden(name, value='')
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
86 sprintf "<input type=\"hidden\" name=\"%s\" value=\"%s\">", name, value
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
87 end
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
88 def radio(name, value, text='', checked=nil)
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
89 sprintf "<input type=\"radio\" name=\"%s\" value=\"%s\"%s>%s",
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
90 name, value, checked ? " checked" : "", text
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
91 end
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
92 def checkbox(name, value, text='', checked=nil)
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
93 sprintf "<input type=\"checkbox\" name=\"%s\" value=\"%s\"%s>%s",
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
94 name, value, checked ? " checked" : "", text
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
95 end
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
96 def submit(name, value, text='')
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
97 sprintf "<input type=\"submit\" name=\"%s\" value=\"%s\">%s\n",
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
98 name, value, text
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
99 end
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
100 def reset(name, value, text='')
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
101 sprintf "<input type=\"reset\" name=\"%s\" value=\"%s\">\n",
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
102 name, value, text
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
103 end
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
104 def submit_reset(name)
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
105 submit(name, "GO")+reset(name, "Reset")
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
106 end
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
107
2
1110baebe9a9 RCS-revision 1.3
HIROSE Yuuji <yuuji@gentei.org>
parents: 1
diff changeset
108 def select(name, range, selected=nil)
1110baebe9a9 RCS-revision 1.3
HIROSE Yuuji <yuuji@gentei.org>
parents: 1
diff changeset
109 #start = (b<e ? b : e)
1110baebe9a9 RCS-revision 1.3
HIROSE Yuuji <yuuji@gentei.org>
parents: 1
diff changeset
110 #last = (b>e ? b : e)
1110baebe9a9 RCS-revision 1.3
HIROSE Yuuji <yuuji@gentei.org>
parents: 1
diff changeset
111 c=0
0
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
112 "<select name=\"#{name}\">\n" + \
2
1110baebe9a9 RCS-revision 1.3
HIROSE Yuuji <yuuji@gentei.org>
parents: 1
diff changeset
113 range.collect{|i|
3
354e09bb8ce1 RCS-revision 1.4
HIROSE Yuuji <yuuji@gentei.org>
parents: 2
diff changeset
114 value = (i.is_a?(Array) ? i[1] : i).to_s
354e09bb8ce1 RCS-revision 1.4
HIROSE Yuuji <yuuji@gentei.org>
parents: 2
diff changeset
115 sprintf "<option%s%s>%s%s</option>",
354e09bb8ce1 RCS-revision 1.4
HIROSE Yuuji <yuuji@gentei.org>
parents: 2
diff changeset
116 (selected.to_s==value.to_s) ? " selected" : "",
354e09bb8ce1 RCS-revision 1.4
HIROSE Yuuji <yuuji@gentei.org>
parents: 2
diff changeset
117 i.is_a?(Array) ? " value=\"%s\"" % value : '',
354e09bb8ce1 RCS-revision 1.4
HIROSE Yuuji <yuuji@gentei.org>
parents: 2
diff changeset
118 i.is_a?(Array) ? i[0] : i.to_s,
2
1110baebe9a9 RCS-revision 1.3
HIROSE Yuuji <yuuji@gentei.org>
parents: 1
diff changeset
119 (c+=1)%6==0 ? "\n" : ''
0
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
120 }.join + \
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
121 "\n</select>\n"
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
122 end
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
123 end
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
124
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
125 class PasswdMgr
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
126 def initialize(name, mode=0640)
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
127 require 'dbm'
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
128 @pdb = DBM.open(name, mode)
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
129 end
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
130 def checkpasswd(user, passwd)
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
131 if @pdb[user] then
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
132 @pdb[user] == passwd.crypt(@pdb[user])
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
133 end
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
134 end
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
135 def setpasswd(user, passwd)
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
136 salt = [rand(64),rand(64)].pack("C*").tr("\x00-\x3f","A-Za-z0-9./")
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
137 @pdb[user] = passwd.crypt(salt)
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
138 end
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
139 def userexist?(user)
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
140 @pdb[user] ? true : false
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
141 end
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
142 def getpasswd(user)
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
143 @pdb[user]
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
144 end
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
145 def delete(user)
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
146 @pdb.delete(user)
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
147 end
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
148 def close()
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
149 @pdb.close()
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
150 end
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
151 def newpasswd(length)
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
152 srand(Time.now.to_i)
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
153 left = "qazxswedcvfrtgb12345"
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
154 right = "yhnmjuik.lop;/67890-"
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
155 array = [left, right]
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
156 (1..length).collect{|i|
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
157 a = array[i%array.length]
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
158 a[rand(a.length), 1]
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
159 }.join('')
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
160 end
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
161 def users()
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
162 @pdb.keys
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
163 end
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
164 private :newpasswd
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
165 def setnewpasswd(user, length=8)
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
166 newp = newpasswd(length)
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
167 setpasswd(user, newp)
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
168 newp
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
169 end
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
170 end
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
171
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
172 class ScheduleDir
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
173 def initialize(dir = "s")
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
174 @dir = dir
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
175 @schedulefile = "sched"
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
176 @usermapdir = File.join(@dir, "usermap")
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
177 @usermap = mkusermap()
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
178 @groupmapdir = File.join(@dir, "groupmap")
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
179 @groupmap = mkgroupmap()
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
180 @crondir = File.join(@dir, "crondir")
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
181
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
182 end
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
183 def mkusermap()
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
184 map = {}
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
185 unless test(?d, @usermapdir)
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
186 mkdir_p(@usermapdir)
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
187 end
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
188 Dir.foreach(@usermapdir){|u|
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
189 next if /^\./ =~ u
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
190 newu = ''
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
191 u.split('').each{|c| # for security wrapping
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
192 newu << c[0].chr if /[-A-Z_.@]/i =~ c
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
193 }
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
194 u = newu
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
195 map[u] = {}
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
196 d = File.join(@usermapdir, u)
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
197 next unless test(?d, d)
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
198 Dir.foreach(d){|attr|
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
199 next if /^\./ =~ attr
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
200 attr.untaint if /^[A-Za-z]+$/ =~ attr
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
201 file = File.join(@usermapdir, u, attr)
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
202 next unless test(?s, file) && test(?r, file)
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
203 map[u][attr] = IO.readlines(file).join().strip
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
204 }
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
205 }
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
206 map
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
207 end
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
208 def putuserattr(user, attr, text)
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
209 # if text==nil, remove it
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
210 d = File.join(@usermapdir, user)
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
211 Dir.mkdir(d) unless test(?d, d)
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
212 file = File.join(d, attr)
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
213 begin
2
1110baebe9a9 RCS-revision 1.3
HIROSE Yuuji <yuuji@gentei.org>
parents: 1
diff changeset
214 unless @usermap[user]
1110baebe9a9 RCS-revision 1.3
HIROSE Yuuji <yuuji@gentei.org>
parents: 1
diff changeset
215 @usermap[user] = {}
1110baebe9a9 RCS-revision 1.3
HIROSE Yuuji <yuuji@gentei.org>
parents: 1
diff changeset
216 mkdir_p(d) unless test(?d, d)
1110baebe9a9 RCS-revision 1.3
HIROSE Yuuji <yuuji@gentei.org>
parents: 1
diff changeset
217 end
0
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
218 @usermap[user][attr] = text
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
219 if text==nil
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
220 File.unlink(file)
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
221 else
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
222 open(file, "w"){|w| w.puts @usermap[user][attr]}
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
223 end
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
224 rescue
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
225 return nil
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
226 end
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
227 return {attr => text}
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
228 end
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
229 def getuserattr(user, attr)
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
230 # Should we distinguish between attribute is nil and "" ?
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
231 if @usermap.has_key?(user) && @usermap[user][attr].is_a?(String) &&
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
232 @usermap[user][attr] > ''
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
233 return @usermap[user][attr]
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
234 else
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
235 return nil
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
236 end
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
237 end
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
238
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
239 def nickname(user)
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
240 if @usermap.has_key?(user) && @usermap[user]['name'].is_a?(String) &&
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
241 @usermap[user]['name'] > ''
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
242 return @usermap[user]['name']
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
243 else
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
244 return user.sub(/@.*/, '')
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
245 end
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
246 end
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
247 def setnickname(user, nickname)
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
248 putuserattr(user, 'name', nickname)
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
249 end
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
250
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
251 #
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
252 # make group map
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
253 def collectmembers(gname)
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
254 @visitedgroup=[] unless @visitedgroup
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
255 return [] unless @visitedgroup.grep(gname).empty?
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
256 @visitedgroup.push(gname)
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
257 mdir = File.join(@groupmapdir, gname, 'members')
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
258 return [] unless test(?d, mdir)
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
259 members = []
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
260 Dir.foreach(mdir){|item|
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
261 next if /^\./ =~ item
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
262 item.untaint
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
263 next unless test(?f, File.join(mdir, item))
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
264 if /.+@.+/ =~ item
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
265 members << item
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
266 else
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
267 members += collectmembers(item)
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
268 end
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
269 }
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
270 @visitedgroup.pop
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
271 members
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
272 end
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
273 def mkgroupmap()
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
274 map = {}
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
275 return map unless test(?d, @groupmapdir)
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
276 @visitedgroup = []
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
277 Dir.foreach(@groupmapdir){|g|
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
278 next if /^\./ =~ g
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
279 newg = ''
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
280 next unless /^[-a-z0-9_.]+$/i =~ g
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
281 #g.untaint ## untaintじゃだめだ。map{g} のkeyがtaintedになっちゃうよ
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
282 gg = '' # for security wrapping
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
283 g.split('').each{|c| gg << c[0].chr if c != '`'}
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
284 g = gg
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
285 map[gg] = {}
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
286 d = File.join(@groupmapdir, g)
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
287 next unless test(?d, d)
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
288 # get group name
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
289 gnf = File.join(d, 'name')
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
290 if test(?r, gnf) && test(?s, gnf)
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
291 n = IO.readlines(gnf)[0].to_s.strip
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
292 map[g]['name'] = if n > '' then n else g end
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
293 else
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
294 map[g]['name'] = g
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
295 end
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
296 # get administrators
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
297 #
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
298 gad = File.join(d, 'admin')
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
299 map[g]['admin'] = []
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
300 if test(?d, gad)
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
301 Dir.foreach(gad){|a|
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
302 # administrator should be a person (not group)
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
303 next unless /@/ =~ a
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
304 map[g]['admin'] << a
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
305 }
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
306 end
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
307 # collect members
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
308 #map[g]['members'] = collectmembers(g)
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
309 memd = File.join(d, 'members')
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
310 map[g]['members'] = []
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
311 if test(?d, memd)
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
312 Dir.foreach(memd){|a|
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
313 next if /^\./ =~ a
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
314 map[g]['members'] << a
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
315 }
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
316 end
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
317 }
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
318 map
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
319 end
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
320 def groupmap()
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
321 @groupmap
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
322 end
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
323 def groups()
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
324 @groupmap.keys
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
325 end
2
1110baebe9a9 RCS-revision 1.3
HIROSE Yuuji <yuuji@gentei.org>
parents: 1
diff changeset
326 def addgroup(group, users, remove=nil, role='members')
1110baebe9a9 RCS-revision 1.3
HIROSE Yuuji <yuuji@gentei.org>
parents: 1
diff changeset
327 grp = groups.grep(group)[0] # group may be tainted, using kept name
1110baebe9a9 RCS-revision 1.3
HIROSE Yuuji <yuuji@gentei.org>
parents: 1
diff changeset
328 return nil unless grp
0
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
329 for u in users
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
330 next unless account_exists(u)
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
331 mdir = File.join(@groupmapdir, grp, role)
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
332 file = File.join(mdir, u)
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
333 if remove
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
334 @groupmap[grp][role].delete(u)
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
335 File.unlink(file) if test(?e, file)
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
336 else
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
337 @groupmap[grp][role] << u
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
338 @groupmap[grp][role].uniq
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
339 Dir.mkdir(file) unless test(?d, mdir)
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
340 open(file, "w"){|x|} # Touch it
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
341 end
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
342 end
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
343 grp
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
344 end
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
345 def setgroupname(grp, name)
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
346 return nil unless @groupmap[grp]
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
347 mdir = File.join(@groupmapdir, grp)
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
348 nfile = File.join(mdir, 'name')
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
349 @groupmap[grp]['name'] = name
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
350 if grp == name
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
351 # remove the name file because it is default name
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
352 File.unlink(nfile) if test(?e, nfile)
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
353 else
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
354 Dir.mkdir(mdir) unless test(?d, mdir)
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
355 open(nfile, "w"){|n| n.puts name.to_s.strip}
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
356 end
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
357 name
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
358 end
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
359 def creategroup(grp, grpname="", admin=[])
2
1110baebe9a9 RCS-revision 1.3
HIROSE Yuuji <yuuji@gentei.org>
parents: 1
diff changeset
360 grpptnOK = /^[-A-Z0-9._:!$%,]+$/i
1110baebe9a9 RCS-revision 1.3
HIROSE Yuuji <yuuji@gentei.org>
parents: 1
diff changeset
361 return nil unless grpptnOK =~ grp
1110baebe9a9 RCS-revision 1.3
HIROSE Yuuji <yuuji@gentei.org>
parents: 1
diff changeset
362 gg = ''
1110baebe9a9 RCS-revision 1.3
HIROSE Yuuji <yuuji@gentei.org>
parents: 1
diff changeset
363 grp.split('').each{|c| gg << c[0].chr if c =~ grpptnOK}
1110baebe9a9 RCS-revision 1.3
HIROSE Yuuji <yuuji@gentei.org>
parents: 1
diff changeset
364 grp = gg
0
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
365 gdir = File.join(@groupmapdir, grp)
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
366 mkdir_p(gdir) # Should not care errors here
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
367 Dir.mkdir(File.join(gdir, "admin"))
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
368 Dir.mkdir(File.join(gdir, "members"))
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
369 @groupmap[grp] = {}
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
370 if grpname == ''
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
371 @groupmap[grp]['name'] = grp
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
372 else
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
373 setgroupname(grp, grpname)
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
374 end
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
375 @groupmap[grp]['members'] = []
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
376 @groupmap[grp]['admin'] = []
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
377 addgroup(grp, admin)
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
378 addgroup(grp, admin, nil, 'admin')
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
379 return @groupmap[grp]
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
380 end
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
381 def createuser(user, email = nil)
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
382 return nil unless /@/ =~ user
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
383 return nil if %r@[\/()\;|,$\%^!\#&\'\"]@ =~ user
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
384 email = email || user
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
385 @usermap[user] = {}
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
386 Dir.mkdir(File.join(@usermapdir, user))
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
387 putuserattr(user, 'email', email)
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
388 end
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
389 def deleteuser(user)
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
390 return nil unless @usermap[user]
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
391 begin
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
392 @usermap[user] # return value
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
393 ensure
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
394 @usermap.delete(user)
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
395 rm_rf(File.join(@usermapdir, user))
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
396 rm_rf(File.join(@groupmapdir, "*/members/#{user}"))
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
397 rm_rf(File.join(@crondir, "[1-9]*-*-*/#{user}"))
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
398 rm_rf(File.join(@dir, "[1-9]*/[0-9][0-9]/[0-9][0-9]/[0-9]???/#{user}"))
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
399 end
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
400 end
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
401 def destroygroup(grp)
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
402 return nil unless @groupmap[grp]
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
403 begin
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
404 @groupmap[grp] # return value
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
405 ensure
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
406 @groupmap.delete(grp)
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
407 rm_rf(File.join(@groupmapdir, grp))
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
408 rm_rf(File.join(@groupmapdir, "*/members/#{grp}"))
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
409 rm_rf(File.join(@crondir, "[1-9]*-*-*/#{grp}"))
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
410 rm_rf(File.join(@dir, "[1-9]*/[0-9][0-9]/[0-9][0-9]/[0-9]???/#{grp}"))
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
411 end
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
412 end
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
413 def rm_rf(path)
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
414 if (list = Dir.glob(path))[0]
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
415 for p in list
2
1110baebe9a9 RCS-revision 1.3
HIROSE Yuuji <yuuji@gentei.org>
parents: 1
diff changeset
416 p.untaint
0
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
417 system "/bin/rm -rf \"#{p}\""
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
418 end
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
419 cleanup_files(list[0])
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
420 end
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
421 end
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
422 def account_exists(instance)
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
423 if /@/ =~ instance
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
424 true
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
425 else
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
426 ! @groupmap.select{|k, v| k==instance}.empty?
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
427 end
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
428 end
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
429 def ismember(user, grouporuser)
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
430 return true if user==grouporuser
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
431 if @groupmap[grouporuser]
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
432 @groupmap[grouporuser]['members'].grep(user)[0]
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
433 end
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
434 end
2
1110baebe9a9 RCS-revision 1.3
HIROSE Yuuji <yuuji@gentei.org>
parents: 1
diff changeset
435 def isuser(user)
1110baebe9a9 RCS-revision 1.3
HIROSE Yuuji <yuuji@gentei.org>
parents: 1
diff changeset
436 @usermap[user] && @usermap.keys.grep(user)[0]
1110baebe9a9 RCS-revision 1.3
HIROSE Yuuji <yuuji@gentei.org>
parents: 1
diff changeset
437 end
0
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
438 def isgroup(grp)
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
439 @groupmap[grp]
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
440 end
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
441 def isadmin(user, group)
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
442 @groupmap[group] and @groupmap[group]['admin'].grep(user)[0]
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
443 end
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
444 def members(grp)
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
445 @groupmap[grp] and ####################@groupmap[grp]['members']
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
446 collectmembers(grp)
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
447 end
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
448 def admins(grp)
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
449 @groupmap[grp] and @groupmap[grp]['admin']
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
450 end
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
451 def groupname(grp)
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
452 @groupmap[grp] && @groupmap[grp]['name']
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
453 end
2
1110baebe9a9 RCS-revision 1.3
HIROSE Yuuji <yuuji@gentei.org>
parents: 1
diff changeset
454 def name2group(name)
1110baebe9a9 RCS-revision 1.3
HIROSE Yuuji <yuuji@gentei.org>
parents: 1
diff changeset
455 @groupmap.find{|g, v| v.is_a?(Hash) && v['name']==name}
1110baebe9a9 RCS-revision 1.3
HIROSE Yuuji <yuuji@gentei.org>
parents: 1
diff changeset
456 end
1110baebe9a9 RCS-revision 1.3
HIROSE Yuuji <yuuji@gentei.org>
parents: 1
diff changeset
457 def day_all(d, user=nil, personalonly = nil)
0
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
458 y, m, d = d.scan(%r,(\d\d\d\d+)/(\d+)/(\d+),)[0]
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
459 #daydir = File.join(@dir, "%04d"%y.to_i, "%02d"%m.to_i, "%02d"%d.to_i)
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
460 daydir = File.join("s", "%04d"%y.to_i, "%02d"%m.to_i, "%02d"%d.to_i)
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
461 sched = {}
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
462 return sched unless test(?d, daydir)
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
463 Dir.foreach(daydir) {|time|
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
464 next if /^\./ =~ time
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
465 next unless /^\d\d\d\d$/ =~ time
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
466 time.untaint
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
467 t = File.join(daydir, time)
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
468 next unless test(?d, t)
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
469 sched[time] = {}
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
470 Dir.foreach(t){|who|
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
471 next if /^\./ =~ who
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
472
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
473 visible = false
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
474 #next unless /@/ =~ who # user must be as user@do.ma.in
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
475 next unless account_exists(who)
2
1110baebe9a9 RCS-revision 1.3
HIROSE Yuuji <yuuji@gentei.org>
parents: 1
diff changeset
476 next if personalonly && who != user
0
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
477 who.untaint
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
478 dir = File.join(t, who)
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
479 next unless test(?d, dir) && test(?x, dir)
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
480 pub = File.join(dir, 'pub')
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
481 if test(?f, pub) && test(?r, pub) && test(?s, pub)
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
482 if IO.readlines(pub)[0].to_i > 0
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
483 visible = true
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
484 end
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
485 end
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
486
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
487
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
488 if ismember(user, who) || visible
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
489 sched[time][who] = {}
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
490 file = File.join(dir, @schedulefile)
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
491 if test(?s, file) && test(?r, file) && test(?s, file)
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
492 sched[time][who]['sched'] = IO.readlines(file).join().chomp!
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
493 end
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
494 sched[time][who]['pub'] = visible
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
495 end
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
496 } #|who|
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
497 sched.delete(time) if sched[time].empty?
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
498 }
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
499 sched
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
500 end
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
501
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
502 def scheduledir(user, y, m, d, time)
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
503 sprintf("%s/%04d/%02d/%02d/%04d/%s",
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
504 @dir, y.to_i, m.to_i, d.to_i, time.to_i, user)
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
505 end
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
506 def schedulefile(user, y, m, d, time)
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
507 File.join(scheduledir(user, y, m, d, time), @schedulefile)
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
508 end
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
509 def mkdir_p(path, mode=0777)
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
510 # Do not mkdir `path' for
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
511 # absolute paths
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
512 # those paths which contains `../'
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
513 # for the sake of security reason
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
514 return false if %r,\.\./|^/, =~ path
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
515 p = 0
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
516 i=0
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
517 while p=path.index("/", p)
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
518 dir = path[0..p].chop
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
519 p += 1
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
520 break if i > 10 # overprotecting
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
521 next if test(?d, dir)
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
522 Dir.mkdir(dir, mode)
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
523 i += 1
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
524 end
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
525 Dir.mkdir(path, mode) unless test(?d, path)
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
526 end
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
527
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
528 #
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
529 # register schedule for user
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
530 #
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
531 def register(user, year, month, day, time, text, replace=nil)
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
532 # return code: 0 = succesfull new registration
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
533 # 1 = succesfull appending registration
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
534 dir = scheduledir(user, year, month, day, time)
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
535 file = schedulefile(user, year, month, day, time)
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
536 ret = 0
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
537 um = File.umask(027)
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
538 begin
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
539 if !replace && test(?s, file)
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
540 ret = 1
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
541 else
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
542 mkdir_p(dir, 0777)
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
543 end
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
544 ensure
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
545 File.umask(um)
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
546 end
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
547 open(file, replace ? "w" : "a"){|out|out.print text}
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
548 return ret
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
549 end
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
550 def getschedule(user, year, month, day, time)
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
551 file = schedulefile(user, year, month, day, time)
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
552 if test(?r, file) && test(?s, file)
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
553 return IO.readlines(file).join
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
554 end
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
555 return nil
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
556 end
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
557 def remove(user, year, month, day, time)
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
558 file = schedulefile(user, year, month, day, time)
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
559 dir = File.dirname(file)
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
560 if test(?r, file) && test(?s, file)
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
561 File.unlink(file)
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
562 end
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
563 for f in Dir.glob(File.join(dir, "*"))
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
564 f.untaint
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
565 File.unlink(f)
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
566 end
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
567 Dir.rmdir(dir) if test(?d, dir)
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
568 begin
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
569 Dir.rmdir(File.dirname(dir))
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
570 rescue
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
571 end
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
572 end
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
573 #
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
574 # register file
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
575 #
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
576 def putfile(user, year, month, day, time, file, contents)
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
577 scback = @schedulefile
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
578 begin
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
579 @schedulefile = File.basename(file)
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
580 register(user, year, month, day, time, contents, true)
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
581 ensure
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
582 @schedulefile = scback
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
583 end
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
584 end
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
585 def getfile(user, year, month, day, time, file)
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
586 scback = @schedulefile
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
587 begin
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
588 @schedulefile = File.basename(file)
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
589 getschedule(user, year, month, day, time)
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
590 ensure
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
591 @schedulefile = scback
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
592 end
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
593 end
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
594 def removefile(user, year, month, day, time, file)
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
595 dir = scheduledir(user, year, month, day, time)
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
596 file = File.join(dir, file)
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
597 if test(?e, file)
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
598 File.unlink(file)
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
599 end
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
600 end
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
601 #
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
602 # registration to crondir
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
603 #
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
604 def cronlink_file(nt_time, user, y, m, d, time)
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
605 subdir = nt_time.strftime("%Y-%m-%d-%H%M/#{user}")
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
606 cdir = File.join(@crondir, subdir)
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
607 File.join(cdir, sprintf("%04d-%02d-%02d-%04d", y, m, d, time))
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
608 end
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
609 def register_crondir(nt_time, user, y, m, d, time)
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
610 linkfile = cronlink_file(nt_time, user, y, m, d, time)
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
611 mkdir_p(File.dirname(linkfile))
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
612 scfile = schedulefile(user, y, m, d, time)
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
613 if test(?s, scfile)
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
614 sclink = File.join("../../..", scfile.sub!(Regexp.quote(@dir+'/'), ''))
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
615 File.symlink(sclink, linkfile) unless test(?e, linkfile)
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
616 return linkfile
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
617 end
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
618 return false
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
619 end
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
620 def remove_crondir(nt_time, user, y, m, d, time)
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
621 linkfile = cronlink_file(nt_time, user, y, m, d, time)
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
622 scfile = schedulefile(user, y, m, d, time)
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
623 if test(?e, linkfile)
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
624 File.unlink(linkfile)
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
625 begin
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
626 dir = linkfile
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
627 2.times {|x|
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
628 dir = File.dirname(dir)
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
629 if Dir.open(dir).collect.length <= 2 # is empty dir
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
630 Dir.rmdir(dir)
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
631 else
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
632 break
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
633 end
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
634 }
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
635 rescue
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
636 end
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
637 return linkfile
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
638 end
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
639 return false
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
640 end
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
641
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
642 #
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
643 # return the Hash of crondir {user => files}
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
644 def notify_list(asof)
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
645 slack = 5*60
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
646 gomifiles = []
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
647 ntl = {}
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
648 return ntl unless test(?d, @crondir)
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
649 Dir.foreach(@crondir){|datedir|
2
1110baebe9a9 RCS-revision 1.3
HIROSE Yuuji <yuuji@gentei.org>
parents: 1
diff changeset
650 next unless /(\d\d\d\d+)-(\d+)-(\d+)-(\d\d\d\d)/ =~ datedir
1110baebe9a9 RCS-revision 1.3
HIROSE Yuuji <yuuji@gentei.org>
parents: 1
diff changeset
651 datedir = sprintf("%04d-%02d-%02d-%04d",
1110baebe9a9 RCS-revision 1.3
HIROSE Yuuji <yuuji@gentei.org>
parents: 1
diff changeset
652 $1.to_i, $2.to_i, $3.to_i, $4.to_i)
0
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
653 dd = File.join(@crondir, datedir)
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
654 next unless test(?d, dd)
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
655 y, m, d, hm = $1.to_i, $2.to_i, $3.to_i, $4.to_i
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
656 hh = hm/100 % 60
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
657 mm = (hm%100) % 60
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
658 t = Time.mktime(y, m, d, hh, mm)
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
659 next if t-slack > asof
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
660 #
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
661 # collect them
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
662 Dir.foreach(dd){|user|
2
1110baebe9a9 RCS-revision 1.3
HIROSE Yuuji <yuuji@gentei.org>
parents: 1
diff changeset
663 # next unless /@/ =~ user || isgroup(user)
1110baebe9a9 RCS-revision 1.3
HIROSE Yuuji <yuuji@gentei.org>
parents: 1
diff changeset
664 next if /^\./ =~ user
1110baebe9a9 RCS-revision 1.3
HIROSE Yuuji <yuuji@gentei.org>
parents: 1
diff changeset
665 if isgroup(user)
1110baebe9a9 RCS-revision 1.3
HIROSE Yuuji <yuuji@gentei.org>
parents: 1
diff changeset
666 user = @groupmap.keys.grep(user)[0]
1110baebe9a9 RCS-revision 1.3
HIROSE Yuuji <yuuji@gentei.org>
parents: 1
diff changeset
667 else
1110baebe9a9 RCS-revision 1.3
HIROSE Yuuji <yuuji@gentei.org>
parents: 1
diff changeset
668 user = @usermap.keys.grep(user)[0]
1110baebe9a9 RCS-revision 1.3
HIROSE Yuuji <yuuji@gentei.org>
parents: 1
diff changeset
669 end
1110baebe9a9 RCS-revision 1.3
HIROSE Yuuji <yuuji@gentei.org>
parents: 1
diff changeset
670 next unless user
0
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
671 ud = File.join(dd, user)
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
672 next unless test(?d, ud)
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
673 ntl[user] = {}
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
674 Dir.foreach(ud){|date|
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
675 next if /^\./ =~ date
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
676 unless /(\d\d\d\d+)-(\d+)-(\d+)-(\d\d\d\d)/ =~ date
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
677 gomifiles << File.join(ud, date)
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
678 next
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
679 end
2
1110baebe9a9 RCS-revision 1.3
HIROSE Yuuji <yuuji@gentei.org>
parents: 1
diff changeset
680 date = sprintf("%04d-%02d-%02d-%04d",
1110baebe9a9 RCS-revision 1.3
HIROSE Yuuji <yuuji@gentei.org>
parents: 1
diff changeset
681 $1.to_i, $2.to_i, $3.to_i, $4.to_i)
0
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
682 f = File.join(ud, date)
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
683 if test(?s, f)
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
684 ntl[user][date] = {}
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
685 ntl[user][date]['file'] = f
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
686 ntl[user][date]['text'] = IO.readlines(f)
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
687 else
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
688 File.unlink(f) # symlink points to nonexistent file
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
689 end
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
690 }
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
691 if ntl[user].empty?
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
692 # if ud does not contain valid cron symlinks,
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
693 # ud had been left badly. Remove it.
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
694 ntl.delete(user)
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
695 cleanup_files(gomifiles)
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
696 end
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
697 }
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
698 }
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
699 ntl
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
700 end
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
701 #
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
702 # cleanup file and directories
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
703 def cleanup_crondir(time)
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
704 Dir.foreach(@crnondir){|datedir|
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
705 dd = File.join(@crondir, datedir)
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
706 next unless test(?d, dd)
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
707 next unless /(\d\d\d\d+)-(\d+)-(\d+)-(\d\d\d\d)/ =~ dd
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
708 y, m, d, hm = $1.to_i, $2.to_i, $3.to_i, $4.to_i
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
709 hh = hm/100 % 60
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
710 mm = (hm%100) % 60
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
711 t = Time.mktime(y, m, d, hh, mm)
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
712 if t < time
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
713 system "rm -rf #{dd}"
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
714 end
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
715 }
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
716 end
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
717 #
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
718 # remove files in FILES, and remove parent directory if possible
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
719 def cleanup_files(files)
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
720 sentinel = File.stat(@dir).ino
2
1110baebe9a9 RCS-revision 1.3
HIROSE Yuuji <yuuji@gentei.org>
parents: 1
diff changeset
721 $0.untaint
1110baebe9a9 RCS-revision 1.3
HIROSE Yuuji <yuuji@gentei.org>
parents: 1
diff changeset
722 scriptsuid = File.stat($0).uid
0
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
723 for f in files
2
1110baebe9a9 RCS-revision 1.3
HIROSE Yuuji <yuuji@gentei.org>
parents: 1
diff changeset
724 if $SAFE > 0
1110baebe9a9 RCS-revision 1.3
HIROSE Yuuji <yuuji@gentei.org>
parents: 1
diff changeset
725 f.untaint
1110baebe9a9 RCS-revision 1.3
HIROSE Yuuji <yuuji@gentei.org>
parents: 1
diff changeset
726 if test(?e, f) && File.stat(f).uid != scriptsuid
1110baebe9a9 RCS-revision 1.3
HIROSE Yuuji <yuuji@gentei.org>
parents: 1
diff changeset
727 f.taint
1110baebe9a9 RCS-revision 1.3
HIROSE Yuuji <yuuji@gentei.org>
parents: 1
diff changeset
728 end
1110baebe9a9 RCS-revision 1.3
HIROSE Yuuji <yuuji@gentei.org>
parents: 1
diff changeset
729 end
1110baebe9a9 RCS-revision 1.3
HIROSE Yuuji <yuuji@gentei.org>
parents: 1
diff changeset
730 printf "Removing %s\n", f if $DEBUG
0
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
731 File.unlink(f) if test(?e, f)
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
732 d = f
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
733 loop {
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
734 d = File.dirname(d)
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
735 break if d.length < 2
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
736 break if File.stat(d).ino == sentinel
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
737 begin
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
738 puts "rmdir #{d}" if $DEBUG
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
739 Dir.rmdir(d)
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
740 rescue
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
741 break
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
742 end
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
743 }
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
744 end
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
745 end
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
746 end
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
747
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
748 class StringIO<IO
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
749 def initialize()
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
750 @str=""
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
751 end
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
752 def foo=(str)
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
753 @str = str
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
754 end
2
1110baebe9a9 RCS-revision 1.3
HIROSE Yuuji <yuuji@gentei.org>
parents: 1
diff changeset
755 def append(str)
1110baebe9a9 RCS-revision 1.3
HIROSE Yuuji <yuuji@gentei.org>
parents: 1
diff changeset
756 @str = str+@str
1110baebe9a9 RCS-revision 1.3
HIROSE Yuuji <yuuji@gentei.org>
parents: 1
diff changeset
757 end
0
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
758 def print(str)
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
759 @str << str
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
760 end
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
761 def puts(str)
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
762 @str << str+"\n"
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
763 end
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
764 def printf(*args)
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
765 @str << sprintf(*args)
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
766 end
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
767 def write(bytes)
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
768 print(bytes)
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
769 end
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
770 def gets()
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
771 return nil if @str == ''
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
772 p = @str.index(?\n)
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
773 if p
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
774 r = @str[0..p]
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
775 @str=@str[p+1..-1]
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
776 else
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
777 r = @str
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
778 end
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
779 return r
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
780 end
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
781 def readline()
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
782 this.gets()
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
783 end
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
784 def readlines()
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
785 r = @str
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
786 @str=''
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
787 r
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
788 end
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
789
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
790 def p(*obj)
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
791 STDOUT.p(*obj)
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
792 end
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
793 end
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
794
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
795 class CMDTimeout < Exception
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
796 def initialize()
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
797 @pw = IO.pipe
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
798 @pr = IO.pipe
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
799 @pe = IO.pipe
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
800 @timeout = false
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
801 end
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
802 def start(cmd, timeout, mixstderr=false)
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
803 if @pid=fork
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
804 @pw[0].close
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
805 @pr[1].close
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
806 @pe[1].close
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
807 # puts "parent!"
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
808 if @tk=fork
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
809 # main
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
810 else
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
811 @pw[1].close
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
812 @pr[0].close
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
813 @pe[0].close
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
814 trap(:INT){exit 0}
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
815 sleep timeout
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
816 begin
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
817 @timeout = true
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
818 STDERR.puts "TIMEOUT"
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
819 Process.kill :INT, @pid
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
820 rescue
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
821 #puts "Already done"
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
822 end
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
823 exit 0
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
824 end
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
825 else
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
826 # Running this block with pid=@pid
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
827 trap(:INT){@timeout = true; exit 0}
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
828 @pw[1].close
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
829 STDIN.reopen(@pw[0])
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
830 @pw[0].close
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
831
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
832 @pr[0].close
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
833 STDOUT.reopen(@pr[1])
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
834 if mixstderr
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
835 STDERR.reopen(@pr[1])
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
836 else
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
837 STDERR.reopen(@pe[1])
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
838 end
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
839 @pr[1].close
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
840 @pe[0].close
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
841 @pe[1].close
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
842
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
843 exec *cmd
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
844 exit 0
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
845 end
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
846 return [@pw[1], @pr[0], @pe[0]]
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
847 end
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
848 def wait()
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
849 Process.waitpid(@pid, nil)
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
850 end
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
851 def close()
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
852 @pr.each{|p| p.close unless p.closed?}
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
853 @pw.each{|p| p.close unless p.closed?}
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
854 @pe.each{|p| p.close unless p.closed?}
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
855 begin
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
856 Process.kill :INT, @tk
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
857 rescue
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
858 end
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
859 end
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
860 def timeout()
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
861 @timeout
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
862 end
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
863 end
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
864
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
865 class Holiday
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
866 def initialize(dir = ".")
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
867 @@dir = dir
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
868 defined?(@@holiday) || setupHoliday
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
869 end
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
870 def setupHoliday(file = "holiday")
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
871 @@holiday = {}
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
872 return unless test(?f, file) && test(?s, file)
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
873 IO.foreach(file){|line|
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
874 line.strip
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
875 next if /^#/ =~ line
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
876 date, what = line.scan(/(\S+)\s+(.*)/)[0]
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
877 if %r,(\d+)/(\d+)/(\d+), =~ date
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
878 cdate = sprintf("%d/%d/%d", $1.to_i, $2.to_i, $3.to_i)
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
879 @@holiday[cdate] || @@holiday[cdate] = []
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
880 @@holiday[cdate] << what
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
881 elsif %r,(\d+)/(\d+), =~ date
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
882 cdate = sprintf("%d/%d", $1.to_i, $2.to_i)
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
883 @@holiday[cdate] || @@holiday[cdate] = []
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
884 @@holiday[cdate] << what
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
885 elsif %r,(\d+)/(\w+), =~ date
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
886 cdate = sprintf("%d/%s", $1.to_i, $2.downcase)
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
887 @@holiday[cdate] || @@holiday[cdate] = []
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
888 @@holiday[cdate] << what
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
889 end
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
890 }
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
891 end
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
892 def isHoliday(y, m, d, wday=nil)
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
893 y, m, d = y.to_i, m.to_i, d.to_i
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
894 wname = %w[sun mon tue wed thu fri sat]
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
895 holiday = @@holiday[sprintf("%d/%d/%d", y, m, d)] ||
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
896 @@holiday[sprintf("%d/%d", m, d)]
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
897 unless holiday
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
898 wday = wname[wday || Time.mktime(y, m, d).wday]
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
899 nthweek = (d-1)/7+1
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
900 holiday = @@holiday[sprintf("%d/w%d%s", m, nthweek, wday)]
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
901 end
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
902 holiday
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
903 end
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
904 def holidays()
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
905 @@holiday
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
906 end
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
907 end
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
908
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
909 class After5
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
910 def initialize()
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
911 @me = File.expand_path($0)
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
912 @mydir, @myname = File.dirname(@me), File.basename(@me)
1
8145b15d3d6f RCS-revision 1.2
HIROSE Yuuji <yuuji@gentei.org>
parents: 0
diff changeset
913 @mybase = @myname.sub(/\.\w+$/, '')
0
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
914 @mydir.untaint
1
8145b15d3d6f RCS-revision 1.2
HIROSE Yuuji <yuuji@gentei.org>
parents: 0
diff changeset
915 @mybase.untaint
0
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
916 Dir.chdir @mydir
1
8145b15d3d6f RCS-revision 1.2
HIROSE Yuuji <yuuji@gentei.org>
parents: 0
diff changeset
917 @myname='a5.cgi' if test(?f, "a5.cgi")
0
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
918 @conf = nil
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
919 @schedulearea = {'rows'=>'4', 'cols'=>'60', 'name'=>'schedule'}
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
920 @oldagent = (%r,Mozilla/4, =~ ENV['HTTP_USER_AGENT'])
2
1110baebe9a9 RCS-revision 1.3
HIROSE Yuuji <yuuji@gentei.org>
parents: 1
diff changeset
921 @lang = 0
3
354e09bb8ce1 RCS-revision 1.4
HIROSE Yuuji <yuuji@gentei.org>
parents: 2
diff changeset
922 @savecookieregexp = /^(user$|passwd$|display(mode|days)$|nt|headline)/
0
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
923 @opt = {
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
924 'conf' => @mybase+".cf",
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
925 'css' => @mybase+".css",
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
926 'logfile' => @mybase+".log",
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
927 "sendmail" => "/usr/sbin/sendmail",
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
928 'hostcmd' => '/usr/bin/host',
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
929 'nslookup' => '/usr/sbin/nsookup',
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
930 'bg' => 'ivory',
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
931 'at_bsd' => '%H:%M %b %d %Y',
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
932 'at_solaris' => '%H:%M %b %d,%Y',
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
933 'schedir' => 's',
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
934 'tdskip' => '<br>',
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
935 'forgot' => 'wasureta',
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
936 'size' => @oldagent ? '15' : '40',
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
937 'morning' => '6',
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
938 'night' => '22',
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
939 'alldaydir' => '3000',
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
940 'pswdlen' => 4,
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
941 'pswddb' => 'a5pswd',
2
1110baebe9a9 RCS-revision 1.3
HIROSE Yuuji <yuuji@gentei.org>
parents: 1
diff changeset
942 'lang' => 'j',
0
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
943 }
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
944 @ntlist = [
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
945 ['nt10m', "10"+msg('minutes', 'before')],
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
946 ['nt30m', "30"+msg('minutes', 'before')],
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
947 ['nt60m', "60"+msg('minutes', 'before')],
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
948 ['nttoday', msg('theday')],
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
949 ['nt1d', "1"+msg('days', 'before')],
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
950 ['nt2d', "2"+msg('days', 'before')],
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
951 ['nt3d', "3"+msg('days', 'before')],
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
952 ['nt7d', "7"+msg('days', 'before')],
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
953 ['nt30d', "30"+msg('days', 'before')],
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
954 ]
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
955 ##@job = "today"
3
354e09bb8ce1 RCS-revision 1.4
HIROSE Yuuji <yuuji@gentei.org>
parents: 2
diff changeset
956 @wnames = %w[sun mon tue wed thu fri sat]
0
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
957 @job = "login"
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
958 @sc = ScheduleDir.new
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
959 @O = StringIO.new
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
960 @H = HTMLout.new()
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
961 @umback = File.umask
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
962 @author = 'yuuji@gentei.org'
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
963 @after5url = 'http://www.gentei.org/~yuuji/software/after5/'
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
964 File.umask(007)
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
965 end
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
966 def doit()
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
967 @params = getarg()
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
968 @cookie = getcookie()
3
354e09bb8ce1 RCS-revision 1.4
HIROSE Yuuji <yuuji@gentei.org>
parents: 2
diff changeset
969 importcookie()
2
1110baebe9a9 RCS-revision 1.3
HIROSE Yuuji <yuuji@gentei.org>
parents: 1
diff changeset
970 @lang = (/^j/i =~ @opt['lang'] ? 0 : 1)
0
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
971 p @cookie if $DEBUG
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
972 p @params if $DEBUG
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
973
3
354e09bb8ce1 RCS-revision 1.4
HIROSE Yuuji <yuuji@gentei.org>
parents: 2
diff changeset
974 ### @params['displaymode'] = @params['displaymode'] || @cookie['displaymode']
2
1110baebe9a9 RCS-revision 1.3
HIROSE Yuuji <yuuji@gentei.org>
parents: 1
diff changeset
975 personal = /personal/i =~ @params['displaymode']
1110baebe9a9 RCS-revision 1.3
HIROSE Yuuji <yuuji@gentei.org>
parents: 1
diff changeset
976 bodyclass = if personal then {'class'=>'personal'} end
0
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
977
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
978 ## x = {"align"=>'center'}
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
979 ## @H.element("p", x, "hoge", nil)
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
980 ## @H.element("p", nil, "buha", nil)
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
981
3
354e09bb8ce1 RCS-revision 1.4
HIROSE Yuuji <yuuji@gentei.org>
parents: 2
diff changeset
982 if nil
0
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
983 if !@params['passwd'] && @cookie['passwd']
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
984 @params['passwd'] = @cookie['passwd']
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
985 end
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
986 if !@params['user'] && @cookie['user']
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
987 @params['user'] = @cookie['user']
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
988 end
3
354e09bb8ce1 RCS-revision 1.4
HIROSE Yuuji <yuuji@gentei.org>
parents: 2
diff changeset
989 end
0
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
990 @params['user'] = safecopy(@params['user'])
2
1110baebe9a9 RCS-revision 1.3
HIROSE Yuuji <yuuji@gentei.org>
parents: 1
diff changeset
991
0
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
992 eval @job
2
1110baebe9a9 RCS-revision 1.3
HIROSE Yuuji <yuuji@gentei.org>
parents: 1
diff changeset
993 @O.append(@H.contenttype() +
1110baebe9a9 RCS-revision 1.3
HIROSE Yuuji <yuuji@gentei.org>
parents: 1
diff changeset
994 @H.head("After 5"+@job.sub(/\s*/, ' '), @opt['css']))
1110baebe9a9 RCS-revision 1.3
HIROSE Yuuji <yuuji@gentei.org>
parents: 1
diff changeset
995 # @job is here
1110baebe9a9 RCS-revision 1.3
HIROSE Yuuji <yuuji@gentei.org>
parents: 1
diff changeset
996 @O.print @H.startelement("body", bodyclass, true)
0
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
997 @O.print @H.endelement(nil, true) # body
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
998 @O.print "</html>\n" # html
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
999 setcookie()
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1000
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1001 print @O.readlines
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1002 end
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1003 def msg(*keyword)
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1004 unless defined?(@msg)
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1005 @msg = {
3
354e09bb8ce1 RCS-revision 1.4
HIROSE Yuuji <yuuji@gentei.org>
parents: 2
diff changeset
1006 'title' => ['みんなの予定表 <img src="after5.png" alt="「アフター5」">', 'Schedule table for us all <img src="after5.png" alt="After 5">'],
0
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1007 'login' => ['ログイン', 'Login'],
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1008 'loginfirst' => ['最初にログインすべし', 'Login first'],
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1009 'autherror' => ['認証エラーがあったと管理者に伝えてくれっす',
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1010 'Unexpected authentication error. Please tell this to the administrator'],
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1011 'yourmail' => ['あなたのメイルアドレス', 'Your email address'],
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1012 'passwd' => ['パスワード<br>(初回時は空欄)',
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1013 'Passowrd<br>Left blank, first time'],
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1014 'error' => ['エラー:', 'Error: '],
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1015 'mailerror' => ['メイルアドレスが違います', 'Invalid email address'],
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1016 'pswderror' => ['パスワードが違います', 'Password incorrect'],
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1017 'fmtdaysschedule'=> ['%sの予定', 'Schedule on %s'],
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1018 'noplan' => ['登録されている予定はありません', 'No plans'],
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1019 'allday' => ['全日', 'whole day'],
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1020 'addsched' => ['新規予定項目の登録', 'Register new schedule'],
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1021 'defthisday' => ['デフォルトの日付はこの日になってま', ''],
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1022 '24hour' => ['24時間制4桁でね<br>(0000〜2359)<br>%sは時刻指定なし', 'in 24-hour<br>(0000-2359)<br>%s for whole day'],
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1023 'reqnotify' => ['通知メイルいるけ?', 'Previous notification'],
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1024 'rightnow' => ['登録時にすぐ', 'Right now on registration'],
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1025 'immediatenote' => ['に以下の予定を登録しました',
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1026 ", Your schedule has been registered as follows;"],
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1027 'registerer_is' => ['登録名義: ', 'Register as '],
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1028 'registerer' => ['登録者: ', 'registerer: '],
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1029 'about' => ['約', 'about'],
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1030 'minutes' => ['分', 'minutes'],
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1031 'hours' => ['時間', 'hour(s)'],
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1032 'days' => ['日', 'day(s)'],
2
1110baebe9a9 RCS-revision 1.3
HIROSE Yuuji <yuuji@gentei.org>
parents: 1
diff changeset
1033 'daystodisplay' => ['日分表示', 'days to display'],
0
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1034 'before' => ['前', 'before'],
2
1110baebe9a9 RCS-revision 1.3
HIROSE Yuuji <yuuji@gentei.org>
parents: 1
diff changeset
1035 'precedingday' => ['前日', 'Preceding day'],
0
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1036 'theday' => ['当日朝', "the day's morning"],
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1037 'night' => ['(夜)', '(night)'],
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1038 'publicok' => ['メンバーに<br>見せてもええね?',
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1039 'visible from other members?'],
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1040 'public' => ['公', 'pub'],
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1041 'nonpublic' => ['非', 'sec'],
2
1110baebe9a9 RCS-revision 1.3
HIROSE Yuuji <yuuji@gentei.org>
parents: 1
diff changeset
1042 'through' => ['〜', '=&gt;'],
0
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1043 'yes' => ['はいな', 'yes'],
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1044 'no' => ['やだ', 'nope'],
2
1110baebe9a9 RCS-revision 1.3
HIROSE Yuuji <yuuji@gentei.org>
parents: 1
diff changeset
1045 'wnames' => [%w[日 月 火 水 木 金 土],
1110baebe9a9 RCS-revision 1.3
HIROSE Yuuji <yuuji@gentei.org>
parents: 1
diff changeset
1046 %w[sun mon tue wed thu fri sat]],
1110baebe9a9 RCS-revision 1.3
HIROSE Yuuji <yuuji@gentei.org>
parents: 1
diff changeset
1047 'whichday' => ['<small>(まとめ登録の場合)</small><br>期間中のどの日に?',
1110baebe9a9 RCS-revision 1.3
HIROSE Yuuji <yuuji@gentei.org>
parents: 1
diff changeset
1048 '<small>(On multiple registration)</small><br>Which days in the term?'],
1110baebe9a9 RCS-revision 1.3
HIROSE Yuuji <yuuji@gentei.org>
parents: 1
diff changeset
1049 'singleday' => ['一日分だけ登録', '1day regist'],
1110baebe9a9 RCS-revision 1.3
HIROSE Yuuji <yuuji@gentei.org>
parents: 1
diff changeset
1050 'everyday' => ['毎日', 'everyday'],
0
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1051 'invaliddate' => ['日付指定が変みたい', 'Invalid time string'],
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1052 'past' => ['それはもう過去の話ね', 'It had Pasted'],
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1053 'putsomething' => ['何か書こうや', 'Write some message please'],
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1054 'appended' => ['既存の予定に追加しました', 'Appended'],
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1055 'append' => ['追加', 'append'],
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1056 'join' => ['参加', 'join'],
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1057 'regist' => ['登録', 'register'],
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1058 'remove' => ['削除', 'remove'],
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1059 'deletion' => ['完全消去', 'deletion'],
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1060 'deletionwarn' => ['OK押したら即消去。確認とらないぞ',
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1061 'Hitting OK immediately delets this group, be carefully!'],
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1062 'deluser' => ['%s ユーザ消してええかの?', "Delete the user `%s'"],
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1063 'delgroup' => ['%s グループ消してええかの?', "Delete the group `%s'"],
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1064 'really?' => ['ほんまにええけ?', 'Really?'],
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1065 'chicken' => ['ふっ、腰抜けめ', 'Hey, chicken boy'],
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1066 'modify' => ['修正', 'modify'],
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1067 'done' => ['完了', 'done'],
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1068 'success' => ['成功', 'success'],
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1069 'failure' => ['失敗', 'failure'],
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1070 'tomonthlist' => ['%s の一覧', 'all %s table'],
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1071 'notifysubj' => @mybase+"'s reminder for your plan",
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1072 'introduce' => ['はいこんにちは、'+@mybase+'ですよ〜。',
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1073 "Hi, this is #{@mybase}'s notification."],
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1074 'notifymail' => ['こんな予定がありまっせ。',
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1075 "You have some eschedule below;"],
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1076 'notification' => ['の通知', 'notification'],
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1077 'newaccount' => ["新しいアカウントを作りました。\n"+
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1078 "パスワードは %s さん宛に送信しておきました。\n",
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1079 "You got new account for #{@mybase}\n" +
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1080 "Password was sent to %s.\nThank you.\n"],
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1081 'accessfrom' => ["%s からのアクセスによる送信\n",
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1082 "This mail was sent by the access from %s\n"],
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1083 'newpassword' => ["%s さんのパスワードは %s です。\n",
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1084 "The password of %s is %s\n"],
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1085 'mischief' => ["身に覚えのない場合はいたずらです。どうしましょ。",
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1086 'If you have no idea for getting this message, '+
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1087 'it is mischief by someone else'],
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1088 'user' => ['ユーザ', 'user'],
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1089 'group' => ['グループ', 'group'],
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1090 'personal' => ['個人で', 'personal'],
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1091 'registas' => ['グループ予定として登録', 'Register as group'],
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1092 'joinquit' => ['入退', 'joining/quiting'],
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1093 'of' => ['の', "'s"],
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1094 'id' => ['ID(ローマ字1単語空白なしで)', 'ID(without spaces)'],
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1095 'name' => ['名前', 'name'],
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1096 'anystring' => ['(日本語OK)', '(any length, any characters)'],
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1097 'setto' => ['を設定 → ', 'set to '],
2
1110baebe9a9 RCS-revision 1.3
HIROSE Yuuji <yuuji@gentei.org>
parents: 1
diff changeset
1098 'dupname' => ['あー、%sってグループ名は既にあるん素。別のにして.',
1110baebe9a9 RCS-revision 1.3
HIROSE Yuuji <yuuji@gentei.org>
parents: 1
diff changeset
1099 "Group name `%s' already exists, choose another name."],
0
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1100 'management' => ['管理', 'management'],
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1101 'administrator' => ['管理者', 'Administrator'],
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1102 'newgroup' => ['新規グループ作成', 'Create new group'],
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1103 'adminop' => ['管理<br>操作', "Administrative<br>operation"],
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1104 'member' => ['メンバー', 'Member'],
2
1110baebe9a9 RCS-revision 1.3
HIROSE Yuuji <yuuji@gentei.org>
parents: 1
diff changeset
1105 'personalmode' => ['自分のだけ表示モード', 'Display Personal Only'],
1110baebe9a9 RCS-revision 1.3
HIROSE Yuuji <yuuji@gentei.org>
parents: 1
diff changeset
1106 'normalmode' => ['全員分表示モード', "Display Everyone's"],
3
354e09bb8ce1 RCS-revision 1.4
HIROSE Yuuji <yuuji@gentei.org>
parents: 2
diff changeset
1107 'display' => ['予定表示行: ', 'Display schedule of: '],
354e09bb8ce1 RCS-revision 1.4
HIROSE Yuuji <yuuji@gentei.org>
parents: 2
diff changeset
1108 'nameonly' => ['名前のみ', 'Name Only'],
354e09bb8ce1 RCS-revision 1.4
HIROSE Yuuji <yuuji@gentei.org>
parents: 2
diff changeset
1109 'head5char' => ['先頭5文字', 'Head 5 chars'],
354e09bb8ce1 RCS-revision 1.4
HIROSE Yuuji <yuuji@gentei.org>
parents: 2
diff changeset
1110 'headline' => ['先頭1行', 'Headline only'],
354e09bb8ce1 RCS-revision 1.4
HIROSE Yuuji <yuuji@gentei.org>
parents: 2
diff changeset
1111 'whole' => ['長くても全部', 'Whole text'],
0
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1112 'addedtogroup' => ['をグループに追加 →', 'added to the group:'],
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1113 'removedfromgp' => ['をグループから削除:', 'removed from the group:'],
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1114 'soleadmin' => ['%s は %s の唯一の管理者なのでやめられないのだ',
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1115 "%s is sole administrator of %s. Cannot retire."],
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1116 'recursewarn' => ['個人では加入してないが、別の加入グループがこのグループに入っているので実質参加していることになっている。',
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1117 'Though this member does not join to this group, it is assumed to be joining this group because other group where one joins is joined to this group.'],
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1118 'regaddress' => ['登録アカウント名', 'Account id'],
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1119 'existent' => ['既にあるんすよ → ', 'Already exists: '],
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1120 'mailaddress' => ['通知送付先アドレス', 'Notification email address'],
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1121 'weburl' => ['ゲストブックとかURL<br><small>(予定への反応を書いて欲しい場所)</small>', 'Your guest book URL'],
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1122 'usermodwarn' => ['いちいち yes/no とか確認取らないから押したら最後、気いつけて。',
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1123 'This is the final decision. Make sure and sure.'],
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1124 'joinmyself' => ['自分自身が既存のグループに対して入る(IN)か出る(OUT)かを決めるのがここ。自分管理のグループに誰かを足すなら「管理操作」、新たにグループを作るなら',
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1125 'In this page, you can decide put yourself IN or OUT of the existing groups. If you want to manage the member of your own group, go to'],
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1126 'groupwarn' => ['自分が参加してないグループAに、自分が参加しているグループBが含まれている場合、グループAにも加入していると見なされるので気をつけよう。管理者はグループのニックネームを変えられるよ。',
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1127 'Though you are not member of group A, you are treated as a member of A, if you join to the group B, which is a member of A. Think the nesting of groups carefully, please. Group administrator can change the group nickname.'],
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1128 'wholemembers' => ['グループ内グループを考慮した上で、現在グループ %s への通知は以下のメンバーに送られる。',
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1129 "Consiering the groups registered in another group, notification to the group `%s' is send to members as follows."],
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1130 'noadmingroup' => ['管理できるグループはないっす',
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1131 "'There's no groups under your administration."],
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1132 'multiplemail' => ['複数の宛先に通知したいなら..',
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1133 'Wanna send notify to multiple address...'],
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1134 'nickname' => ['ニックネーム', 'nickname'],
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1135 'shortnameplz' => ['表が崩れるほど長すぎるニックネームは嫌われるよ。短めにね。',
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1136 'Because nickname is displayed many times in table, shorter name is prefered.'],
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1137 'nicknamenote' => ['ニックネームを消去するとデフォルト名になりんす.',
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1138 'Default name is displayed if you remove nickname.'],
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1139 'nothingtodo' => ['って何もやることあらへんかったで',
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1140 'Nothing to do for this transaction.']
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1141 }
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1142 end
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1143 keyword.collect{|k|
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1144 if @msg[k].is_a?(Array)
2
1110baebe9a9 RCS-revision 1.3
HIROSE Yuuji <yuuji@gentei.org>
parents: 1
diff changeset
1145 @msg[k][@lang]
0
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1146 elsif @msg[k].is_a?(String)
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1147 @msg[k]
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1148 else
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1149 ''
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1150 end
2
1110baebe9a9 RCS-revision 1.3
HIROSE Yuuji <yuuji@gentei.org>
parents: 1
diff changeset
1151 }.join(['', ' '][@lang])
0
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1152 end
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1153
3
354e09bb8ce1 RCS-revision 1.4
HIROSE Yuuji <yuuji@gentei.org>
parents: 2
diff changeset
1154 def importcookie()
354e09bb8ce1 RCS-revision 1.4
HIROSE Yuuji <yuuji@gentei.org>
parents: 2
diff changeset
1155 @cookie.keys.grep(@savecookieregexp){|v|
354e09bb8ce1 RCS-revision 1.4
HIROSE Yuuji <yuuji@gentei.org>
parents: 2
diff changeset
1156 @params[v] = @params[v] || @cookie[v]
354e09bb8ce1 RCS-revision 1.4
HIROSE Yuuji <yuuji@gentei.org>
parents: 2
diff changeset
1157 }
354e09bb8ce1 RCS-revision 1.4
HIROSE Yuuji <yuuji@gentei.org>
parents: 2
diff changeset
1158 end
0
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1159 def setcookie()
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1160 p = {}
3
354e09bb8ce1 RCS-revision 1.4
HIROSE Yuuji <yuuji@gentei.org>
parents: 2
diff changeset
1161 @params.keys.grep(@savecookieregexp){|v|
0
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1162 p[v] = @params[v].to_s.strip
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1163 }
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1164 c = gencookie(p, 3600*6*1)
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1165 printf "Set-Cookie: %s\n", c if c
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1166 end
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1167
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1168 def encode(string) # borrowed from cgi.rb
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1169 string.gsub(/([^ a-zA-Z0-9_.-]+)/n) do
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1170 '%' + $1.unpack('H2' * $1.size).join('%').upcase
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1171 end.tr(' ', '+')
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1172 end
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1173 def decode!(string)
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1174 string.gsub!(/\+/, ' ')
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1175 string.gsub!(/%(..)/){[$1.hex].pack("c")}
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1176 end
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1177
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1178 def gencookie(a, expire)
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1179 x = a.collect{|k, v|
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1180 sprintf("%s=%s", k, encode(v)) if v
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1181 }
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1182 x.delete(nil)
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1183 return nil if x.empty?
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1184 str = x.join('&')
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1185 ex = (Time.new+expire).to_s
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1186 sprintf "value=%s; expires=%s", encode(str), ex
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1187 end
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1188
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1189 def login()
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1190 @O.print @H.elementln("h1", nil){msg('title')}
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1191 @O.print @H.elementln("h2", nil){msg('login')}
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1192 format = {'method'=>'POST', 'action'=>@myname+"?-today"}
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1193 @O.print @H.elementln("form", format){
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1194 @H.elementln("table", nil){
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1195 @H.elementln("tr", nil){
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1196 @H.element("td", nil){msg('yourmail')} + \
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1197 @H.element("td", nil){
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1198 sprintf '<input type="text" size="%s" name="user">', @opt['size']
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1199 }
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1200 } + \
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1201 @H.elementln("tr", nil){
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1202 @H.element("td", nil){msg('passwd')} + \
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1203 @H.element("td", nil){
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1204 sprintf '<input type="password" size="%s" name="passwd">', @opt['size']
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1205 }
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1206 }
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1207 } + '<input type="submit" value="LOGIN">'
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1208 }
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1209 @O.print footer2()
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1210 end
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1211 def open_pm()
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1212 begin
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1213 PasswdMgr.new(@opt['pswddb'])
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1214 rescue
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1215 STDERR.printf "Cannot open pswd file [%s]\n", @opt['pswddb']
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1216 STDERR.printf "euid=#{Process.euid}, uid=#{Process.uid}\n", @opt['pswddb']
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1217 nil
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1218 end
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1219 end
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1220 def outputError(*msg)
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1221 @O.print @H.p(msg('error')+sprintf(*msg))
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1222 end
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1223 def mailaddress(user)
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1224 email = @sc.getuserattr(user, "email")
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1225 email || user
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1226 end
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1227 def webpage(user)
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1228 @sc.getuserattr(user, "webpage")
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1229 end
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1230 def checkauth()
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1231 auth = catch (:auth) {
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1232 unless @params['user']
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1233 outputError(@H.a(@myname, msg('loginfirst')))
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1234 throw :auth, nil
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1235 end
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1236 unless pm=open_pm()
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1237 outputError(msg('autherror'))
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1238 throw :auth, nil
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1239 end
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1240 user, passwd = @params['user'], @params['passwd']
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1241 email = mailaddress(user)
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1242 if !checkmail(user)
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1243 outputError(msg('mailerror'))
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1244 throw :auth, nil
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1245 end
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1246 if pm.userexist?(user)
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1247 if pm.checkpasswd(user, passwd)
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1248 throw :auth, true
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1249 elsif passwd == @opt['forgot']
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1250 newp = pm.setnewpasswd(user, @opt['pswdlen'])
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1251 sendMail(email, "#{@mybase} password",
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1252 "(#{ENV['REMOTE_ADDR']} からのアクセスによる送信)\n" +
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1253 "#{@mybase} 用の #{user} さんのパスワードは\n" +
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1254 (newp || "未定義") + "\nです。\n")
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1255 @O.print @H.p("#{email} 宛に送信しておきました")
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1256 throw :auth, nil
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1257 else
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1258 outputError(msg('pswderror'))
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1259 throw :auth, nil
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1260 end
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1261 else
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1262 newp = pm.setnewpasswd(user, @opt['pswdlen'])
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1263 @sc.createuser(user, user)
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1264 sendMail(email, "#{@mybase} new account",
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1265 sprintf(msg('accessfrom'), ENV['REMOTE_ADDR']) +
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1266 sprintf(msg('newpassword'), user, newp) +
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1267 sprintf(msg('mischief')))
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1268 @O.print @H.p(sprintf(msg('newaccount'), user))
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1269 @O.print @H.p(@H.a(@myname, msg('login')))
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1270 throw :auth, nil
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1271 end
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1272 }
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1273 if auth
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1274 return true
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1275 else
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1276 return false
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1277 end
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1278 end
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1279 def safecopy(string)
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1280 return nil unless string
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1281 if $SAFE > 0
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1282 cpy=''
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1283 string.split('').each{|c|
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1284 cpy << c[0].chr if c[0] != ?` # `
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1285 }
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1286 cpy
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1287 else
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1288 string
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1289 end
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1290 end
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1291 def checkmail(mail)
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1292 account, domain = mail.scan(/(.*)@(.*)/)[0]
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1293 return false unless account != nil && domain != nil
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1294 return false unless /^[-0-9a-z_.]+$/oi =~ domain
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1295 domain = safecopy(domain)
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1296 require 'socket'
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1297 begin
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1298 TCPSocket.gethostbyname(domain)
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1299 return true
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1300 rescue
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1301 if test(?x, @opt["hostcmd"])
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1302 open("| #{@opt['hostcmd']} -t mx #{domain}.", "r") {|ns|
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1303 #p ns.readlines.grep(/\d,\s*mail exchanger/)
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1304 return ! ns.readlines.grep(/is handled .*(by |=)\d+/).empty?
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1305 }
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1306 elsif test(?x, @opt["nslookup"])
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1307 open("| #{@opt['nslookup']} -type=mx #{domain}.", "r") {|ns|
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1308 #p ns.readlines.grep(/\d,\s*mail exchanger/)
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1309 return ! ns.readlines.grep(/\d,\s*mail exchanger/).empty?
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1310 }
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1311 end
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1312 return false
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1313 end
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1314 end # checkmail
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1315
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1316 # Logging
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1317 #
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1318 def putLog(msg)
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1319 msg += "\n" unless /\n/ =~ msg
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1320 open(@opt["logfile"], "a+") {|lp|
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1321 lp.print Time.now.to_s + " " + msg
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1322 }
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1323 end
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1324
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1325 def sendnotify(whom, subj, body)
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1326 users = users()
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1327 if grepgroup(whom)
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1328 recipients = @sc.members(whom)
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1329 else
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1330 recipients=[whom]
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1331 end
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1332 for u in recipients
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1333 if users.grep(u)[0]
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1334 sendMail(mailaddress(u), subj, body)
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1335 end
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1336 end
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1337 end
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1338
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1339 def sendMail(to, subject, body)
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1340 body = Kconv::tojis(body)
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1341 subject = Kconv.tojis(subject)
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1342 to = safecopy(to) # cleanup tainted address
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1343 if /\e/ =~ subject # If contains JIS chars...
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1344 subject = subject.split(//,1).pack('m')
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1345 subject = "=?iso-2022-jp?B?#{subject}?="
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1346 end
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1347 subject.gsub!(/\n/, '')
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1348 begin
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1349 if (m=open("|-", "w"))
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1350 m.print "To: #{to}\n"
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1351 m.print "Subject: #{subject}\n"
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1352 m.print "Mime-Version: 1.0
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1353 Content-Transfer-Encoding: 7bit
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1354 Content-Type: Text/Plain; charset=iso-2022-jp
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1355
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1356 "
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1357 m.print body, "\n"
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1358 m.close
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1359 else
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1360 # exec(@attr['mail'], "-s", subject, to)
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1361 exec(@opt['sendmail'], to)
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1362 exit 0;
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1363 end
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1364 putLog("Sent '#{subject}' to #{to}\n")
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1365 return true
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1366 rescue
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1367 putLog("FAILED! - Sent '#{subject}' to #{to}\n")
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1368 return nil
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1369 end
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1370 end # sendMail
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1371
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1372 def today()
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1373 today = Time.now
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1374 showtable(today)
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1375 end
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1376 def isleap?(y)
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1377 if y%400 == 0
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1378 true
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1379 elsif y%100 == 0 || y%4 != 0
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1380 false
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1381 else
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1382 true
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1383 end
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1384 end
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1385 def daysofmonth(year, month)
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1386 dl = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1387 if month != 2 || !isleap?(year)
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1388 dl[month-1]
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1389 else
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1390 29
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1391 end
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1392 end
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1393 #
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1394 # Return the Time object at the last day of last month
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1395 def lastmonth(today)
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1396 Time.at(Time.mktime(today.year, today.month)-3600*24)
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1397 end
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1398 #
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1399 # Return the Time object at the first day of next month
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1400 def nextmonth(today)
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1401 y, m = today.year, today.month
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1402 Time.at(Time.mktime(y, m, daysofmonth(y, m))+3600*24)
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1403 end
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1404
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1405 def month(month)
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1406 y, m = month.scan(%r,(\d\d\d\d+)/(\d+),)[0]
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1407 if y && m
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1408 showtable(Time.mktime(y, m, 1))
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1409 else
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1410 outputError "%s %s", msg('invaliddate'), month
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1411 return nil
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1412 end
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1413 end
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1414 def footer1()
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1415 "<br>" + \
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1416 @H.element("p"){
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1417 me = @myname+"?-"; delim = " / "
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1418 @H.a(me+'userman', msg('user', 'management')) + delim + \
2
1110baebe9a9 RCS-revision 1.3
HIROSE Yuuji <yuuji@gentei.org>
parents: 1
diff changeset
1419 @H.a(me+'groupman', msg('group', 'management')) + delim + \
1110baebe9a9 RCS-revision 1.3
HIROSE Yuuji <yuuji@gentei.org>
parents: 1
diff changeset
1420 if /personal/i =~ @params['displaymode']
1110baebe9a9 RCS-revision 1.3
HIROSE Yuuji <yuuji@gentei.org>
parents: 1
diff changeset
1421 @H.a(me+'today_n', msg('normalmode'))
1110baebe9a9 RCS-revision 1.3
HIROSE Yuuji <yuuji@gentei.org>
parents: 1
diff changeset
1422 else
1110baebe9a9 RCS-revision 1.3
HIROSE Yuuji <yuuji@gentei.org>
parents: 1
diff changeset
1423 @H.a(me+'today_p', msg('personalmode'))
1110baebe9a9 RCS-revision 1.3
HIROSE Yuuji <yuuji@gentei.org>
parents: 1
diff changeset
1424 end
0
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1425 }
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1426 end
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1427
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1428 def footer2()
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1429 "<hr>" + \
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1430 @H.element("code") {
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1431 "This " + \
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1432 @H.a(@after5url, "After5") + \
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1433 " board is maintained by " + \
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1434 @opt['maintainer'].sub('@', "&#x40;") + "."
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1435 }
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1436 end
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1437 def footer()
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1438 footer1+footer2
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1439 end
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1440 def nickname(userORgroup)
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1441 if grepgroup(userORgroup)
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1442 @sc.groupname(userORgroup)
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1443 else
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1444 @sc.nickname(userORgroup)
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1445 end
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1446 end
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1447 #
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1448 # show specified month's calendar
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1449 def showtable(day)
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1450 if !checkauth
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1451 return nil
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1452 end
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1453
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1454 month = day.month.to_s
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1455 first = Time.mktime(day.year, day.month, 1)
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1456 last = daysofmonth(day.year, day.month)
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1457 wday1 = first.wday
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1458 start = 1-wday1
3
354e09bb8ce1 RCS-revision 1.4
HIROSE Yuuji <yuuji@gentei.org>
parents: 2
diff changeset
1459 wname = @wnames
0
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1460 today = Time.now
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1461 todaym = today.month
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1462 todayd = today.day
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1463 tdclass = {}
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1464 tdclass["width"] = "64px" if @oldagent # workaround for NN4
2
1110baebe9a9 RCS-revision 1.3
HIROSE Yuuji <yuuji@gentei.org>
parents: 1
diff changeset
1465 personal = /personal/ =~ @params['displaymode']
3
354e09bb8ce1 RCS-revision 1.4
HIROSE Yuuji <yuuji@gentei.org>
parents: 2
diff changeset
1466 headline = @params['headline']
354e09bb8ce1 RCS-revision 1.4
HIROSE Yuuji <yuuji@gentei.org>
parents: 2
diff changeset
1467 monthstr = sprintf "%d/%d", day.year, day.month
354e09bb8ce1 RCS-revision 1.4
HIROSE Yuuji <yuuji@gentei.org>
parents: 2
diff changeset
1468
0
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1469 holiday = Holiday.new
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1470 # create dayofweek header
3
354e09bb8ce1 RCS-revision 1.4
HIROSE Yuuji <yuuji@gentei.org>
parents: 2
diff changeset
1471 @O.print @H.elementln("h1", nil){monthstr}
2
1110baebe9a9 RCS-revision 1.3
HIROSE Yuuji <yuuji@gentei.org>
parents: 1
diff changeset
1472 # which mode?
1110baebe9a9 RCS-revision 1.3
HIROSE Yuuji <yuuji@gentei.org>
parents: 1
diff changeset
1473 @O.print @H.p(msg(personal ? 'personalmode' : 'normalmode'))
1110baebe9a9 RCS-revision 1.3
HIROSE Yuuji <yuuji@gentei.org>
parents: 1
diff changeset
1474 #
1110baebe9a9 RCS-revision 1.3
HIROSE Yuuji <yuuji@gentei.org>
parents: 1
diff changeset
1475 # display table
0
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1476 @O.print @H.startelement("table", {'border'=>"1", 'class'=>'main'})
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1477
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1478 # day of week
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1479 @O.print @H.startelement("tr")
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1480 for w in wname
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1481 @O.print @H.element("th", {'class'=>w}){w.capitalize}
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1482 end
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1483 @O.print "\n"+@H.endelement(nil, true)
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1484
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1485 # create day table
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1486 column = start
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1487 ## p day, last
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1488 while column <= last
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1489 @O.print @H.elementln("tr", nil){
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1490 (column..column+6).collect{|d|
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1491 todayp = (day.month==todaym && d==todayd)
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1492 wd=d-column
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1493 hd = holiday.isHoliday(day.year, day.month, d, wd)
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1494 tdclass['class'] = (hd ? 'holiday' : wname[wd])
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1495 @H.element("td", tdclass){
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1496 if d>0 && d <= last
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1497 date = "%d/%d/%d"%[day.year, day.month, d]
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1498 @H.element("p", {'class'=>todayp ? 'todayline' : 'dayline'}){
2
1110baebe9a9 RCS-revision 1.3
HIROSE Yuuji <yuuji@gentei.org>
parents: 1
diff changeset
1499 @H.a(@myname+"?-show+"+date, "%4d"%d)
0
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1500 } + \
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1501 # isHoliday?
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1502 if hd
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1503 @H.element("small"){hd.join("<br>")}
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1504 end.to_s + \
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1505 @H.element("p", {'class'=>'topic'}){
2
1110baebe9a9 RCS-revision 1.3
HIROSE Yuuji <yuuji@gentei.org>
parents: 1
diff changeset
1506 s = @sc.day_all(date, @params['user'], personal)
0
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1507 if !s.empty?
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1508 s.keys.sort.collect{|time|
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1509 s[time].keys.sort.collect{|who|
3
354e09bb8ce1 RCS-revision 1.4
HIROSE Yuuji <yuuji@gentei.org>
parents: 2
diff changeset
1510 text = s[time][who]['sched'].gsub(/\n/, '')
354e09bb8ce1 RCS-revision 1.4
HIROSE Yuuji <yuuji@gentei.org>
parents: 2
diff changeset
1511 sprintf "%s%s",
354e09bb8ce1 RCS-revision 1.4
HIROSE Yuuji <yuuji@gentei.org>
parents: 2
diff changeset
1512 time == @opt['alldaydir'] ? '' : time+":",
2
1110baebe9a9 RCS-revision 1.3
HIROSE Yuuji <yuuji@gentei.org>
parents: 1
diff changeset
1513 if personal
3
354e09bb8ce1 RCS-revision 1.4
HIROSE Yuuji <yuuji@gentei.org>
parents: 2
diff changeset
1514 text.split("\n") ##[0]
2
1110baebe9a9 RCS-revision 1.3
HIROSE Yuuji <yuuji@gentei.org>
parents: 1
diff changeset
1515 else
3
354e09bb8ce1 RCS-revision 1.4
HIROSE Yuuji <yuuji@gentei.org>
parents: 2
diff changeset
1516 nickname(who) + '=' + \
354e09bb8ce1 RCS-revision 1.4
HIROSE Yuuji <yuuji@gentei.org>
parents: 2
diff changeset
1517 if headline == 'whole'
354e09bb8ce1 RCS-revision 1.4
HIROSE Yuuji <yuuji@gentei.org>
parents: 2
diff changeset
1518 text
354e09bb8ce1 RCS-revision 1.4
HIROSE Yuuji <yuuji@gentei.org>
parents: 2
diff changeset
1519 elsif headline == 'head5char'
354e09bb8ce1 RCS-revision 1.4
HIROSE Yuuji <yuuji@gentei.org>
parents: 2
diff changeset
1520 text.sub(/(.{5}).*/, '\1')
354e09bb8ce1 RCS-revision 1.4
HIROSE Yuuji <yuuji@gentei.org>
parents: 2
diff changeset
1521 elsif headline == 'headline'
354e09bb8ce1 RCS-revision 1.4
HIROSE Yuuji <yuuji@gentei.org>
parents: 2
diff changeset
1522 text.split("\n")[0]
354e09bb8ce1 RCS-revision 1.4
HIROSE Yuuji <yuuji@gentei.org>
parents: 2
diff changeset
1523 end.to_s
2
1110baebe9a9 RCS-revision 1.3
HIROSE Yuuji <yuuji@gentei.org>
parents: 1
diff changeset
1524 end
3
354e09bb8ce1 RCS-revision 1.4
HIROSE Yuuji <yuuji@gentei.org>
parents: 2
diff changeset
1525 }.join("<br>")
354e09bb8ce1 RCS-revision 1.4
HIROSE Yuuji <yuuji@gentei.org>
parents: 2
diff changeset
1526 }.join("<br>\n")
0
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1527 else
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1528 @opt['tdskip']
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1529 end
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1530 }
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1531 else
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1532 @opt['tdskip']
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1533 end
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1534 }
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1535 }.join
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1536 }
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1537 column += 7
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1538 end
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1539
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1540 # month-link
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1541 @O.print @H.elementln("tr", {'class'=>'monthlink'}){
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1542 lm1 = lastmonth(day)
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1543 lm2 = lastmonth(lm1)
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1544 lm3 = lastmonth(lm2)
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1545 nm1 = nextmonth(day)
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1546 nm2 = nextmonth(nm1)
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1547 nm3 = nextmonth(nm2)
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1548 [lm3, lm2, lm1, nil, nm1, nm2, nm3].collect{|t|
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1549 @H.element("td"){
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1550 if t.is_a?(Time)
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1551 ym = sprintf("%d/%d", t.year, t.month)
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1552 @H.a(sprintf("%s?-month+%s", @myname, ym), ym)
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1553 else
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1554 sprintf "%d/%d", day.year, day.month
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1555 end
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1556 }
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1557 }.join("\n")
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1558 }
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1559 @O.print "\n"+@H.endelement(nil, true)
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1560
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1561 @O.print "showtable" if @params['user'] == @author
3
354e09bb8ce1 RCS-revision 1.4
HIROSE Yuuji <yuuji@gentei.org>
parents: 2
diff changeset
1562 @O.print @H.elementln("form", {'action'=>@myname+"?-month+#{monthstr}", 'method'=>'POST'}){
354e09bb8ce1 RCS-revision 1.4
HIROSE Yuuji <yuuji@gentei.org>
parents: 2
diff changeset
1563 choice = [
354e09bb8ce1 RCS-revision 1.4
HIROSE Yuuji <yuuji@gentei.org>
parents: 2
diff changeset
1564 [msg('nameonly'), 'name'],
354e09bb8ce1 RCS-revision 1.4
HIROSE Yuuji <yuuji@gentei.org>
parents: 2
diff changeset
1565 [msg('head5char'), 'head5char'],
354e09bb8ce1 RCS-revision 1.4
HIROSE Yuuji <yuuji@gentei.org>
parents: 2
diff changeset
1566 [msg('headline'), 'headline'],
354e09bb8ce1 RCS-revision 1.4
HIROSE Yuuji <yuuji@gentei.org>
parents: 2
diff changeset
1567 [msg('whole'), 'whole']]
354e09bb8ce1 RCS-revision 1.4
HIROSE Yuuji <yuuji@gentei.org>
parents: 2
diff changeset
1568 msg('display') + \
354e09bb8ce1 RCS-revision 1.4
HIROSE Yuuji <yuuji@gentei.org>
parents: 2
diff changeset
1569 @H.select('headline', choice, headline) + \
354e09bb8ce1 RCS-revision 1.4
HIROSE Yuuji <yuuji@gentei.org>
parents: 2
diff changeset
1570 @H.submit("GO", "GO")
354e09bb8ce1 RCS-revision 1.4
HIROSE Yuuji <yuuji@gentei.org>
parents: 2
diff changeset
1571 }
0
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1572 @O.print footer
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1573 ##schedule.day_all("2003/12/22")
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1574 # @O.print @H.endelement()
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1575 end
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1576
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1577 #
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1578 # Put carrying values
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1579 def hiddenvalues()
2
1110baebe9a9 RCS-revision 1.3
HIROSE Yuuji <yuuji@gentei.org>
parents: 1
diff changeset
1580 h = %w[user displaymode].collect{|v|
0
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1581 if @params[v]
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1582 sprintf "<input type=\"hidden\" name=\"%s\" value=\"%s\">\n",
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1583 v, @params[v]
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1584 end
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1585 }
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1586 h.delete(nil)
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1587 h.join
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1588 end
2
1110baebe9a9 RCS-revision 1.3
HIROSE Yuuji <yuuji@gentei.org>
parents: 1
diff changeset
1589 def date2ymd(date)
1110baebe9a9 RCS-revision 1.3
HIROSE Yuuji <yuuji@gentei.org>
parents: 1
diff changeset
1590 %r,(\d\d\d\d+)/(\d\d?)/(\d\d?), =~ date and
1110baebe9a9 RCS-revision 1.3
HIROSE Yuuji <yuuji@gentei.org>
parents: 1
diff changeset
1591 [$1.to_i, $2.to_i, $3.to_i]
1110baebe9a9 RCS-revision 1.3
HIROSE Yuuji <yuuji@gentei.org>
parents: 1
diff changeset
1592 end
0
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1593 #
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1594 # Return the string of table
2
1110baebe9a9 RCS-revision 1.3
HIROSE Yuuji <yuuji@gentei.org>
parents: 1
diff changeset
1595 def dayTableString(user, datestr, range, personal = nil)
1110baebe9a9 RCS-revision 1.3
HIROSE Yuuji <yuuji@gentei.org>
parents: 1
diff changeset
1596 #s = @sc.day_all(date, user, personal)
1110baebe9a9 RCS-revision 1.3
HIROSE Yuuji <yuuji@gentei.org>
parents: 1
diff changeset
1597 #return '' if s.empty?
0
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1598 r = ''
2
1110baebe9a9 RCS-revision 1.3
HIROSE Yuuji <yuuji@gentei.org>
parents: 1
diff changeset
1599 header = @H.startelement("table", {'border'=>'1'}, true)
1110baebe9a9 RCS-revision 1.3
HIROSE Yuuji <yuuji@gentei.org>
parents: 1
diff changeset
1600
1110baebe9a9 RCS-revision 1.3
HIROSE Yuuji <yuuji@gentei.org>
parents: 1
diff changeset
1601 day = Time.mktime(*date2ymd(datestr))
1110baebe9a9 RCS-revision 1.3
HIROSE Yuuji <yuuji@gentei.org>
parents: 1
diff changeset
1602 i = -1
1110baebe9a9 RCS-revision 1.3
HIROSE Yuuji <yuuji@gentei.org>
parents: 1
diff changeset
1603 while (i+=1) < range
1110baebe9a9 RCS-revision 1.3
HIROSE Yuuji <yuuji@gentei.org>
parents: 1
diff changeset
1604 d = Time.at(day+i*3600*24)
1110baebe9a9 RCS-revision 1.3
HIROSE Yuuji <yuuji@gentei.org>
parents: 1
diff changeset
1605 date = sprintf("%04d/%02d/%02d", d.year, d.month, d.day)
3
354e09bb8ce1 RCS-revision 1.4
HIROSE Yuuji <yuuji@gentei.org>
parents: 2
diff changeset
1606 datewn = @H.element("span", {'class'=>@wnames[d.wday]}){
354e09bb8ce1 RCS-revision 1.4
HIROSE Yuuji <yuuji@gentei.org>
parents: 2
diff changeset
1607 sprintf("%s(%s)", date, @msg['wnames'][@lang][d.wday])
354e09bb8ce1 RCS-revision 1.4
HIROSE Yuuji <yuuji@gentei.org>
parents: 2
diff changeset
1608 }
2
1110baebe9a9 RCS-revision 1.3
HIROSE Yuuji <yuuji@gentei.org>
parents: 1
diff changeset
1609 s = @sc.day_all(date, user, personal)
1110baebe9a9 RCS-revision 1.3
HIROSE Yuuji <yuuji@gentei.org>
parents: 1
diff changeset
1610 next if s.empty?
1110baebe9a9 RCS-revision 1.3
HIROSE Yuuji <yuuji@gentei.org>
parents: 1
diff changeset
1611
1110baebe9a9 RCS-revision 1.3
HIROSE Yuuji <yuuji@gentei.org>
parents: 1
diff changeset
1612 r << @H.element("tr", nil){
1110baebe9a9 RCS-revision 1.3
HIROSE Yuuji <yuuji@gentei.org>
parents: 1
diff changeset
1613 @H.element("th", {'class'=>'time'}){'TIME'} + \
3
354e09bb8ce1 RCS-revision 1.4
HIROSE Yuuji <yuuji@gentei.org>
parents: 2
diff changeset
1614 @H.element("th", nil){'Who - '+datewn+' - What'}
2
1110baebe9a9 RCS-revision 1.3
HIROSE Yuuji <yuuji@gentei.org>
parents: 1
diff changeset
1615 }
1110baebe9a9 RCS-revision 1.3
HIROSE Yuuji <yuuji@gentei.org>
parents: 1
diff changeset
1616 for time in s.keys
1110baebe9a9 RCS-revision 1.3
HIROSE Yuuji <yuuji@gentei.org>
parents: 1
diff changeset
1617 tstr = case time
1110baebe9a9 RCS-revision 1.3
HIROSE Yuuji <yuuji@gentei.org>
parents: 1
diff changeset
1618 when @opt['alldaydir']
1110baebe9a9 RCS-revision 1.3
HIROSE Yuuji <yuuji@gentei.org>
parents: 1
diff changeset
1619 msg('allday')
1110baebe9a9 RCS-revision 1.3
HIROSE Yuuji <yuuji@gentei.org>
parents: 1
diff changeset
1620 else
1110baebe9a9 RCS-revision 1.3
HIROSE Yuuji <yuuji@gentei.org>
parents: 1
diff changeset
1621 sprintf "%02d:%02d", time.to_i/100, time.to_i%100
1110baebe9a9 RCS-revision 1.3
HIROSE Yuuji <yuuji@gentei.org>
parents: 1
diff changeset
1622 end
1110baebe9a9 RCS-revision 1.3
HIROSE Yuuji <yuuji@gentei.org>
parents: 1
diff changeset
1623 r << @H.startelement("tr", nil, true)
1110baebe9a9 RCS-revision 1.3
HIROSE Yuuji <yuuji@gentei.org>
parents: 1
diff changeset
1624 r << @H.element("th", {'class'=>'time'}){tstr}
1110baebe9a9 RCS-revision 1.3
HIROSE Yuuji <yuuji@gentei.org>
parents: 1
diff changeset
1625 r << @H.element("td"){
1110baebe9a9 RCS-revision 1.3
HIROSE Yuuji <yuuji@gentei.org>
parents: 1
diff changeset
1626 @H.elementln("table"){
1110baebe9a9 RCS-revision 1.3
HIROSE Yuuji <yuuji@gentei.org>
parents: 1
diff changeset
1627 s[time].keys.collect{|who|
1110baebe9a9 RCS-revision 1.3
HIROSE Yuuji <yuuji@gentei.org>
parents: 1
diff changeset
1628 editable = (user==who || @sc.ismember(user, who))
1110baebe9a9 RCS-revision 1.3
HIROSE Yuuji <yuuji@gentei.org>
parents: 1
diff changeset
1629 groupp = grepgroup(who)
1110baebe9a9 RCS-revision 1.3
HIROSE Yuuji <yuuji@gentei.org>
parents: 1
diff changeset
1630 @H.element("tr"){
1110baebe9a9 RCS-revision 1.3
HIROSE Yuuji <yuuji@gentei.org>
parents: 1
diff changeset
1631 @H.element("td", {'class'=>groupp ? 'group' : 'who'}){
1110baebe9a9 RCS-revision 1.3
HIROSE Yuuji <yuuji@gentei.org>
parents: 1
diff changeset
1632 if !groupp && webpage(who)
1110baebe9a9 RCS-revision 1.3
HIROSE Yuuji <yuuji@gentei.org>
parents: 1
diff changeset
1633 @H.a(webpage(who), nickname(who))
1110baebe9a9 RCS-revision 1.3
HIROSE Yuuji <yuuji@gentei.org>
parents: 1
diff changeset
1634 else
1110baebe9a9 RCS-revision 1.3
HIROSE Yuuji <yuuji@gentei.org>
parents: 1
diff changeset
1635 nickname(who)
1110baebe9a9 RCS-revision 1.3
HIROSE Yuuji <yuuji@gentei.org>
parents: 1
diff changeset
1636 end
1110baebe9a9 RCS-revision 1.3
HIROSE Yuuji <yuuji@gentei.org>
parents: 1
diff changeset
1637 } + \
1110baebe9a9 RCS-revision 1.3
HIROSE Yuuji <yuuji@gentei.org>
parents: 1
diff changeset
1638 @H.element("td"){
1110baebe9a9 RCS-revision 1.3
HIROSE Yuuji <yuuji@gentei.org>
parents: 1
diff changeset
1639 if editable
1110baebe9a9 RCS-revision 1.3
HIROSE Yuuji <yuuji@gentei.org>
parents: 1
diff changeset
1640 s[time][who]['pub'] ? msg('public') :
1110baebe9a9 RCS-revision 1.3
HIROSE Yuuji <yuuji@gentei.org>
parents: 1
diff changeset
1641 msg('nonpublic')
1110baebe9a9 RCS-revision 1.3
HIROSE Yuuji <yuuji@gentei.org>
parents: 1
diff changeset
1642 else
1110baebe9a9 RCS-revision 1.3
HIROSE Yuuji <yuuji@gentei.org>
parents: 1
diff changeset
1643 @opt['tdskip']
1110baebe9a9 RCS-revision 1.3
HIROSE Yuuji <yuuji@gentei.org>
parents: 1
diff changeset
1644 end
1110baebe9a9 RCS-revision 1.3
HIROSE Yuuji <yuuji@gentei.org>
parents: 1
diff changeset
1645 } + \
1110baebe9a9 RCS-revision 1.3
HIROSE Yuuji <yuuji@gentei.org>
parents: 1
diff changeset
1646 @H.element("td"){
1110baebe9a9 RCS-revision 1.3
HIROSE Yuuji <yuuji@gentei.org>
parents: 1
diff changeset
1647 if editable
1110baebe9a9 RCS-revision 1.3
HIROSE Yuuji <yuuji@gentei.org>
parents: 1
diff changeset
1648 @H.a(@myname+"?-modify+#{date}/#{time}/#{who}",
1110baebe9a9 RCS-revision 1.3
HIROSE Yuuji <yuuji@gentei.org>
parents: 1
diff changeset
1649 msg('modify'))
1110baebe9a9 RCS-revision 1.3
HIROSE Yuuji <yuuji@gentei.org>
parents: 1
diff changeset
1650 else
1110baebe9a9 RCS-revision 1.3
HIROSE Yuuji <yuuji@gentei.org>
parents: 1
diff changeset
1651 @opt['tdskip']
1110baebe9a9 RCS-revision 1.3
HIROSE Yuuji <yuuji@gentei.org>
parents: 1
diff changeset
1652 end
1110baebe9a9 RCS-revision 1.3
HIROSE Yuuji <yuuji@gentei.org>
parents: 1
diff changeset
1653 } + \
1110baebe9a9 RCS-revision 1.3
HIROSE Yuuji <yuuji@gentei.org>
parents: 1
diff changeset
1654 @H.element("td"){
1110baebe9a9 RCS-revision 1.3
HIROSE Yuuji <yuuji@gentei.org>
parents: 1
diff changeset
1655 if editable
1110baebe9a9 RCS-revision 1.3
HIROSE Yuuji <yuuji@gentei.org>
parents: 1
diff changeset
1656 @H.a(@myname+"?-remove+#{date}/#{time}/#{who}",
1110baebe9a9 RCS-revision 1.3
HIROSE Yuuji <yuuji@gentei.org>
parents: 1
diff changeset
1657 msg('remove'))
1110baebe9a9 RCS-revision 1.3
HIROSE Yuuji <yuuji@gentei.org>
parents: 1
diff changeset
1658 else
1110baebe9a9 RCS-revision 1.3
HIROSE Yuuji <yuuji@gentei.org>
parents: 1
diff changeset
1659 @opt['tdskip']
1110baebe9a9 RCS-revision 1.3
HIROSE Yuuji <yuuji@gentei.org>
parents: 1
diff changeset
1660 end
1110baebe9a9 RCS-revision 1.3
HIROSE Yuuji <yuuji@gentei.org>
parents: 1
diff changeset
1661 } + \
1110baebe9a9 RCS-revision 1.3
HIROSE Yuuji <yuuji@gentei.org>
parents: 1
diff changeset
1662 @H.element("td"){s[time][who]['sched']}
1110baebe9a9 RCS-revision 1.3
HIROSE Yuuji <yuuji@gentei.org>
parents: 1
diff changeset
1663 }
1110baebe9a9 RCS-revision 1.3
HIROSE Yuuji <yuuji@gentei.org>
parents: 1
diff changeset
1664 }.join("\n")
1110baebe9a9 RCS-revision 1.3
HIROSE Yuuji <yuuji@gentei.org>
parents: 1
diff changeset
1665 }
0
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1666 }
2
1110baebe9a9 RCS-revision 1.3
HIROSE Yuuji <yuuji@gentei.org>
parents: 1
diff changeset
1667 r << @H.endelement()
1110baebe9a9 RCS-revision 1.3
HIROSE Yuuji <yuuji@gentei.org>
parents: 1
diff changeset
1668 end
0
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1669 end
2
1110baebe9a9 RCS-revision 1.3
HIROSE Yuuji <yuuji@gentei.org>
parents: 1
diff changeset
1670 footer = @H.endelement()
1110baebe9a9 RCS-revision 1.3
HIROSE Yuuji <yuuji@gentei.org>
parents: 1
diff changeset
1671 if r > ''
1110baebe9a9 RCS-revision 1.3
HIROSE Yuuji <yuuji@gentei.org>
parents: 1
diff changeset
1672 header + r + footer
1110baebe9a9 RCS-revision 1.3
HIROSE Yuuji <yuuji@gentei.org>
parents: 1
diff changeset
1673 else
1110baebe9a9 RCS-revision 1.3
HIROSE Yuuji <yuuji@gentei.org>
parents: 1
diff changeset
1674 ''
1110baebe9a9 RCS-revision 1.3
HIROSE Yuuji <yuuji@gentei.org>
parents: 1
diff changeset
1675 end
0
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1676 end
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1677 #
2
1110baebe9a9 RCS-revision 1.3
HIROSE Yuuji <yuuji@gentei.org>
parents: 1
diff changeset
1678 # new form
1110baebe9a9 RCS-revision 1.3
HIROSE Yuuji <yuuji@gentei.org>
parents: 1
diff changeset
1679 def displayRegistForm(date, multiple = true)
0
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1680 #
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1681 # Link button to add new plan
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1682 #now = Time.now+3600*24
2
1110baebe9a9 RCS-revision 1.3
HIROSE Yuuji <yuuji@gentei.org>
parents: 1
diff changeset
1683 thisyear, thismonth, thisday = date.scan(%r,(\d\d\d\d+)/(\d+)/(\d+),)[0]
1110baebe9a9 RCS-revision 1.3
HIROSE Yuuji <yuuji@gentei.org>
parents: 1
diff changeset
1684 user = @params['user']
0
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1685 now = Time.mktime(thisyear, thismonth, thisday.to_i, Time.now.hour)
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1686 y, m, d, h, min = now.year, now.month, now.day, now.hour, now.min
2
1110baebe9a9 RCS-revision 1.3
HIROSE Yuuji <yuuji@gentei.org>
parents: 1
diff changeset
1687 nextweek = Time.at(now+3600*24*7)
1110baebe9a9 RCS-revision 1.3
HIROSE Yuuji <yuuji@gentei.org>
parents: 1
diff changeset
1688 ey, em, ed = nextweek.year, nextweek.month, nextweek.day
1110baebe9a9 RCS-revision 1.3
HIROSE Yuuji <yuuji@gentei.org>
parents: 1
diff changeset
1689 rcsp = (multiple ? {'colspan'=>'2'} : nil)
1110baebe9a9 RCS-revision 1.3
HIROSE Yuuji <yuuji@gentei.org>
parents: 1
diff changeset
1690 wnames = @msg['wnames'][@lang]
1110baebe9a9 RCS-revision 1.3
HIROSE Yuuji <yuuji@gentei.org>
parents: 1
diff changeset
1691 wnames << @msg['everyday'][@lang]
1110baebe9a9 RCS-revision 1.3
HIROSE Yuuji <yuuji@gentei.org>
parents: 1
diff changeset
1692
0
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1693 @O.print @H.element('h2', nil, true){msg('addsched')}
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1694 @O.print @H.element('p', nil){msg('defthisday')}
2
1110baebe9a9 RCS-revision 1.3
HIROSE Yuuji <yuuji@gentei.org>
parents: 1
diff changeset
1695
0
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1696 @O.print @H.element("form", {'action'=>@myname+"?-addsched", 'method'=>'POST'}){
2
1110baebe9a9 RCS-revision 1.3
HIROSE Yuuji <yuuji@gentei.org>
parents: 1
diff changeset
1697 border1 = {'border'=>'1'}
1110baebe9a9 RCS-revision 1.3
HIROSE Yuuji <yuuji@gentei.org>
parents: 1
diff changeset
1698 border1c = {'border'=>'1', 'class'=>'c'}
1110baebe9a9 RCS-revision 1.3
HIROSE Yuuji <yuuji@gentei.org>
parents: 1
diff changeset
1699 mygroup = @sc.groups().select{|g|@sc.ismember(user, g)}
0
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1700 @H.elementln('table', border1){
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1701 @H.elementln('tr'){
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1702 @H.element('th'){'Name'} + \
2
1110baebe9a9 RCS-revision 1.3
HIROSE Yuuji <yuuji@gentei.org>
parents: 1
diff changeset
1703 @H.element('td', rcsp){
0
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1704 hiddenvalues() + @sc.nickname(user)
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1705 }
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1706 } + \
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1707 @H.elementln('tr'){
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1708 @H.element('th'){'Year'} + \
2
1110baebe9a9 RCS-revision 1.3
HIROSE Yuuji <yuuji@gentei.org>
parents: 1
diff changeset
1709 @H.element('td'){@H.select("year", y..y+5, y)} + \
1110baebe9a9 RCS-revision 1.3
HIROSE Yuuji <yuuji@gentei.org>
parents: 1
diff changeset
1710 if multiple
1110baebe9a9 RCS-revision 1.3
HIROSE Yuuji <yuuji@gentei.org>
parents: 1
diff changeset
1711 @H.element('td'){
1110baebe9a9 RCS-revision 1.3
HIROSE Yuuji <yuuji@gentei.org>
parents: 1
diff changeset
1712 d1 = msg('singleday')
1110baebe9a9 RCS-revision 1.3
HIROSE Yuuji <yuuji@gentei.org>
parents: 1
diff changeset
1713 msg('through')+@H.select("endyear", [d1]+(y..y+5).to_a, d1)
1110baebe9a9 RCS-revision 1.3
HIROSE Yuuji <yuuji@gentei.org>
parents: 1
diff changeset
1714 }
1110baebe9a9 RCS-revision 1.3
HIROSE Yuuji <yuuji@gentei.org>
parents: 1
diff changeset
1715 end
0
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1716 } + \
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1717 @H.elementln('tr'){
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1718 @H.element('th'){'Month'} + \
2
1110baebe9a9 RCS-revision 1.3
HIROSE Yuuji <yuuji@gentei.org>
parents: 1
diff changeset
1719 @H.element('td'){@H.select("month", 1..12, m)} + \
1110baebe9a9 RCS-revision 1.3
HIROSE Yuuji <yuuji@gentei.org>
parents: 1
diff changeset
1720 if multiple
1110baebe9a9 RCS-revision 1.3
HIROSE Yuuji <yuuji@gentei.org>
parents: 1
diff changeset
1721 @H.element('td'){
1110baebe9a9 RCS-revision 1.3
HIROSE Yuuji <yuuji@gentei.org>
parents: 1
diff changeset
1722 msg('through')+@H.select("endmonth", 1..12, em)
1110baebe9a9 RCS-revision 1.3
HIROSE Yuuji <yuuji@gentei.org>
parents: 1
diff changeset
1723 }
1110baebe9a9 RCS-revision 1.3
HIROSE Yuuji <yuuji@gentei.org>
parents: 1
diff changeset
1724 end
0
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1725 } + \
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1726 @H.elementln('tr'){
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1727 @H.element('th'){'Day'} + \
2
1110baebe9a9 RCS-revision 1.3
HIROSE Yuuji <yuuji@gentei.org>
parents: 1
diff changeset
1728 @H.element('td'){@H.select("day", 1..31, d)} + \
1110baebe9a9 RCS-revision 1.3
HIROSE Yuuji <yuuji@gentei.org>
parents: 1
diff changeset
1729 if multiple
1110baebe9a9 RCS-revision 1.3
HIROSE Yuuji <yuuji@gentei.org>
parents: 1
diff changeset
1730 @H.element('td'){
1110baebe9a9 RCS-revision 1.3
HIROSE Yuuji <yuuji@gentei.org>
parents: 1
diff changeset
1731 msg('through')+@H.select("endday", 1..31, ed)
1110baebe9a9 RCS-revision 1.3
HIROSE Yuuji <yuuji@gentei.org>
parents: 1
diff changeset
1732 }
1110baebe9a9 RCS-revision 1.3
HIROSE Yuuji <yuuji@gentei.org>
parents: 1
diff changeset
1733 end
0
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1734 } + \
2
1110baebe9a9 RCS-revision 1.3
HIROSE Yuuji <yuuji@gentei.org>
parents: 1
diff changeset
1735 if multiple
1110baebe9a9 RCS-revision 1.3
HIROSE Yuuji <yuuji@gentei.org>
parents: 1
diff changeset
1736 @H.elementln('tr'){
1110baebe9a9 RCS-revision 1.3
HIROSE Yuuji <yuuji@gentei.org>
parents: 1
diff changeset
1737 @H.element('th'){
1110baebe9a9 RCS-revision 1.3
HIROSE Yuuji <yuuji@gentei.org>
parents: 1
diff changeset
1738 msg('whichday')
1110baebe9a9 RCS-revision 1.3
HIROSE Yuuji <yuuji@gentei.org>
parents: 1
diff changeset
1739 } + \
1110baebe9a9 RCS-revision 1.3
HIROSE Yuuji <yuuji@gentei.org>
parents: 1
diff changeset
1740 @H.element('td', rcsp){
1110baebe9a9 RCS-revision 1.3
HIROSE Yuuji <yuuji@gentei.org>
parents: 1
diff changeset
1741 @H.elementln('table', border1c){
1110baebe9a9 RCS-revision 1.3
HIROSE Yuuji <yuuji@gentei.org>
parents: 1
diff changeset
1742 @H.element('tr'){
1110baebe9a9 RCS-revision 1.3
HIROSE Yuuji <yuuji@gentei.org>
parents: 1
diff changeset
1743 i=-1
1110baebe9a9 RCS-revision 1.3
HIROSE Yuuji <yuuji@gentei.org>
parents: 1
diff changeset
1744 wnames.collect{|w|
1110baebe9a9 RCS-revision 1.3
HIROSE Yuuji <yuuji@gentei.org>
parents: 1
diff changeset
1745 @H.element('td'){
1110baebe9a9 RCS-revision 1.3
HIROSE Yuuji <yuuji@gentei.org>
parents: 1
diff changeset
1746 i+=1
1110baebe9a9 RCS-revision 1.3
HIROSE Yuuji <yuuji@gentei.org>
parents: 1
diff changeset
1747 @H.radio('whichday', i.to_s, '', i==wnames.length-1)
1110baebe9a9 RCS-revision 1.3
HIROSE Yuuji <yuuji@gentei.org>
parents: 1
diff changeset
1748 }
1110baebe9a9 RCS-revision 1.3
HIROSE Yuuji <yuuji@gentei.org>
parents: 1
diff changeset
1749 }.join("\n")
1110baebe9a9 RCS-revision 1.3
HIROSE Yuuji <yuuji@gentei.org>
parents: 1
diff changeset
1750 } + \
1110baebe9a9 RCS-revision 1.3
HIROSE Yuuji <yuuji@gentei.org>
parents: 1
diff changeset
1751 @H.element('tr'){
1110baebe9a9 RCS-revision 1.3
HIROSE Yuuji <yuuji@gentei.org>
parents: 1
diff changeset
1752 i=-1
1110baebe9a9 RCS-revision 1.3
HIROSE Yuuji <yuuji@gentei.org>
parents: 1
diff changeset
1753 wnames.collect{|w|
1110baebe9a9 RCS-revision 1.3
HIROSE Yuuji <yuuji@gentei.org>
parents: 1
diff changeset
1754 @H.element('td'){w}
1110baebe9a9 RCS-revision 1.3
HIROSE Yuuji <yuuji@gentei.org>
parents: 1
diff changeset
1755 }.join
1110baebe9a9 RCS-revision 1.3
HIROSE Yuuji <yuuji@gentei.org>
parents: 1
diff changeset
1756 }
1110baebe9a9 RCS-revision 1.3
HIROSE Yuuji <yuuji@gentei.org>
parents: 1
diff changeset
1757 }
1110baebe9a9 RCS-revision 1.3
HIROSE Yuuji <yuuji@gentei.org>
parents: 1
diff changeset
1758 }
1110baebe9a9 RCS-revision 1.3
HIROSE Yuuji <yuuji@gentei.org>
parents: 1
diff changeset
1759 }
1110baebe9a9 RCS-revision 1.3
HIROSE Yuuji <yuuji@gentei.org>
parents: 1
diff changeset
1760 end + \
0
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1761 @H.elementln('tr'){
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1762 @H.element('th'){'Time<br>'+ \
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1763 sprintf(msg('24hour'), @opt['alldaydir'])} + \
2
1110baebe9a9 RCS-revision 1.3
HIROSE Yuuji <yuuji@gentei.org>
parents: 1
diff changeset
1764 @H.element('td', rcsp){
0
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1765 '<input type=text name="time" value="3000" size=8 maxlength="4">'
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1766 }
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1767 } + \
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1768 @H.elementln('tr'){
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1769 @H.element('th'){msg('publicok')} + \
2
1110baebe9a9 RCS-revision 1.3
HIROSE Yuuji <yuuji@gentei.org>
parents: 1
diff changeset
1770 @H.element('td', rcsp){
0
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1771 @H.radio('pub', 'yes', msg('yes')+'<br>', true) + \
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1772 @H.radio('pub', 'no', msg('no'))
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1773 }
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1774 }
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1775 ## table
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1776 } + \
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1777 @H.elementln("p"){ # put notify mail checkbox
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1778 msg('reqnotify') + '<br>' + \
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1779 @ntlist.collect{|n, v|
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1780 @H.checkbox(n, 'yes', v, @params[n])
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1781 }.join("\n") + \
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1782 " " + @H.checkbox('rightnow', 'yes', msg('rightnow'), true) + \
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1783 "\n"
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1784 } + \
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1785 if mygroup[0]
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1786 @H.elementln("p"){ # put "register as"
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1787 msg('registas') + "<br>\n" + \
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1788 mygroup.collect{|g|
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1789 @H.radio('registas', g, @sc.groupname(g))
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1790 }.join(' ') + "\n/ " + \
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1791 @H.radio('registas', 'no', msg('personal'))
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1792 }
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1793 end.to_s + "\n" + \
2
1110baebe9a9 RCS-revision 1.3
HIROSE Yuuji <yuuji@gentei.org>
parents: 1
diff changeset
1794 @H.radio('editmode', 'remove', 'Delete?') + " / " + \
1110baebe9a9 RCS-revision 1.3
HIROSE Yuuji <yuuji@gentei.org>
parents: 1
diff changeset
1795 @H.radio('editmode', 'modify', 'Overwrite?') + " / " + \
1110baebe9a9 RCS-revision 1.3
HIROSE Yuuji <yuuji@gentei.org>
parents: 1
diff changeset
1796 @H.radio('editmode', 'append', 'Append?', true) + "<br>\n" + \
0
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1797 @H.element("textarea", @schedulearea){} + "<br>\n" + \
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1798 @H.submit_reset("GO")
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1799 } #form
2
1110baebe9a9 RCS-revision 1.3
HIROSE Yuuji <yuuji@gentei.org>
parents: 1
diff changeset
1800 end
1110baebe9a9 RCS-revision 1.3
HIROSE Yuuji <yuuji@gentei.org>
parents: 1
diff changeset
1801 #
1110baebe9a9 RCS-revision 1.3
HIROSE Yuuji <yuuji@gentei.org>
parents: 1
diff changeset
1802 # show the schedule list of specified date
1110baebe9a9 RCS-revision 1.3
HIROSE Yuuji <yuuji@gentei.org>
parents: 1
diff changeset
1803 #
1110baebe9a9 RCS-revision 1.3
HIROSE Yuuji <yuuji@gentei.org>
parents: 1
diff changeset
1804 def show(date)
1110baebe9a9 RCS-revision 1.3
HIROSE Yuuji <yuuji@gentei.org>
parents: 1
diff changeset
1805 if !checkauth
1110baebe9a9 RCS-revision 1.3
HIROSE Yuuji <yuuji@gentei.org>
parents: 1
diff changeset
1806 return nil
1110baebe9a9 RCS-revision 1.3
HIROSE Yuuji <yuuji@gentei.org>
parents: 1
diff changeset
1807 end
1110baebe9a9 RCS-revision 1.3
HIROSE Yuuji <yuuji@gentei.org>
parents: 1
diff changeset
1808 user = safecopy(@params['user'])
1110baebe9a9 RCS-revision 1.3
HIROSE Yuuji <yuuji@gentei.org>
parents: 1
diff changeset
1809 personal = (/personal/i =~ @params['displaymode'])
1110baebe9a9 RCS-revision 1.3
HIROSE Yuuji <yuuji@gentei.org>
parents: 1
diff changeset
1810 @params['displaydays'] = @params['displaydays'] || @cookie['displaydays']
3
354e09bb8ce1 RCS-revision 1.4
HIROSE Yuuji <yuuji@gentei.org>
parents: 2
diff changeset
1811 days = @params['displaydays'].to_i
354e09bb8ce1 RCS-revision 1.4
HIROSE Yuuji <yuuji@gentei.org>
parents: 2
diff changeset
1812 days = (days > 0 ? days : 1)
2
1110baebe9a9 RCS-revision 1.3
HIROSE Yuuji <yuuji@gentei.org>
parents: 1
diff changeset
1813
1110baebe9a9 RCS-revision 1.3
HIROSE Yuuji <yuuji@gentei.org>
parents: 1
diff changeset
1814 # str = @sc.day_all(date, user, personal)
1110baebe9a9 RCS-revision 1.3
HIROSE Yuuji <yuuji@gentei.org>
parents: 1
diff changeset
1815 outstr = dayTableString(user, date, days, personal)
1110baebe9a9 RCS-revision 1.3
HIROSE Yuuji <yuuji@gentei.org>
parents: 1
diff changeset
1816
1110baebe9a9 RCS-revision 1.3
HIROSE Yuuji <yuuji@gentei.org>
parents: 1
diff changeset
1817 @O.print @H.element("h1", nil){
1110baebe9a9 RCS-revision 1.3
HIROSE Yuuji <yuuji@gentei.org>
parents: 1
diff changeset
1818 sprintf msg('fmtdaysschedule'), date
1110baebe9a9 RCS-revision 1.3
HIROSE Yuuji <yuuji@gentei.org>
parents: 1
diff changeset
1819 }
1110baebe9a9 RCS-revision 1.3
HIROSE Yuuji <yuuji@gentei.org>
parents: 1
diff changeset
1820 ## @O.print @H.p()
1110baebe9a9 RCS-revision 1.3
HIROSE Yuuji <yuuji@gentei.org>
parents: 1
diff changeset
1821 @O.print @H.elementln("form", {'action'=>@myname+"?-show+#{date}", 'method'=>'POST'}){
1110baebe9a9 RCS-revision 1.3
HIROSE Yuuji <yuuji@gentei.org>
parents: 1
diff changeset
1822 @H.elementln("p"){
1110baebe9a9 RCS-revision 1.3
HIROSE Yuuji <yuuji@gentei.org>
parents: 1
diff changeset
1823 msg(personal ? 'personalmode' : 'normalmode') + " " + \
1110baebe9a9 RCS-revision 1.3
HIROSE Yuuji <yuuji@gentei.org>
parents: 1
diff changeset
1824 @H.select("displaydays", 1..30, days) + msg('daystodisplay') + \
1110baebe9a9 RCS-revision 1.3
HIROSE Yuuji <yuuji@gentei.org>
parents: 1
diff changeset
1825 @H.submit("GO", "GO")
1110baebe9a9 RCS-revision 1.3
HIROSE Yuuji <yuuji@gentei.org>
parents: 1
diff changeset
1826 }
1110baebe9a9 RCS-revision 1.3
HIROSE Yuuji <yuuji@gentei.org>
parents: 1
diff changeset
1827 }
1110baebe9a9 RCS-revision 1.3
HIROSE Yuuji <yuuji@gentei.org>
parents: 1
diff changeset
1828 if outstr > ''
1110baebe9a9 RCS-revision 1.3
HIROSE Yuuji <yuuji@gentei.org>
parents: 1
diff changeset
1829 @O.print outstr
1110baebe9a9 RCS-revision 1.3
HIROSE Yuuji <yuuji@gentei.org>
parents: 1
diff changeset
1830 else
1110baebe9a9 RCS-revision 1.3
HIROSE Yuuji <yuuji@gentei.org>
parents: 1
diff changeset
1831 @O.print @H.p(msg('noplan'))
1110baebe9a9 RCS-revision 1.3
HIROSE Yuuji <yuuji@gentei.org>
parents: 1
diff changeset
1832 end #is_empty?
1110baebe9a9 RCS-revision 1.3
HIROSE Yuuji <yuuji@gentei.org>
parents: 1
diff changeset
1833 thisyear, thismonth, thisday = date.scan(%r,(\d\d\d\d+)/(\d+)/(\d+),)[0]
1110baebe9a9 RCS-revision 1.3
HIROSE Yuuji <yuuji@gentei.org>
parents: 1
diff changeset
1834 mstr = sprintf "%04d/%02d", thisyear.to_i, thismonth.to_i
1110baebe9a9 RCS-revision 1.3
HIROSE Yuuji <yuuji@gentei.org>
parents: 1
diff changeset
1835 @O.print @H.a(@myname+"?-month+"+mstr,
1110baebe9a9 RCS-revision 1.3
HIROSE Yuuji <yuuji@gentei.org>
parents: 1
diff changeset
1836 sprintf(msg('tomonthlist'), mstr))
1110baebe9a9 RCS-revision 1.3
HIROSE Yuuji <yuuji@gentei.org>
parents: 1
diff changeset
1837
1110baebe9a9 RCS-revision 1.3
HIROSE Yuuji <yuuji@gentei.org>
parents: 1
diff changeset
1838
1110baebe9a9 RCS-revision 1.3
HIROSE Yuuji <yuuji@gentei.org>
parents: 1
diff changeset
1839 #
1110baebe9a9 RCS-revision 1.3
HIROSE Yuuji <yuuji@gentei.org>
parents: 1
diff changeset
1840 # Display registration form
1110baebe9a9 RCS-revision 1.3
HIROSE Yuuji <yuuji@gentei.org>
parents: 1
diff changeset
1841 displayRegistForm(date)
0
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1842 @O.print "show" if user == @author
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1843 end
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1844
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1845 #
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1846 # call process
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1847 def call_process(cmd, input=nil, timeout=10)
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1848 prc = CMDTimeout.new
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1849 fds = prc.start(cmd, timeout, true)
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1850 if input
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1851 Thread.start {
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1852 fds[0].sync = true
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1853 fds[0].print.input
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1854 fds[0]
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1855 }
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1856 end
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1857 begin
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1858 fds[1].readlines
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1859 ensure
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1860 prc.close()
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1861 end
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1862 end
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1863 #
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1864 # notification registerer
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1865 def notify_time(year, month, day, time, symbol)
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1866 if (t = time.to_i) > 2359
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1867 hh = mm = 0
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1868 else
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1869 hh, mm = t/100, t%100
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1870 end
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1871 base = Time.mktime(year.to_i, month.to_i, day.to_i, hh, mm)
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1872 if /nt(\d+)([mh])$/ =~ symbol
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1873 return nil if t > 2359
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1874 num, unit = $1.to_i, $2.downcase
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1875 rate = {'h'=>3600, 'm'=>60}[unit] || 3600
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1876 return Time.at(base-rate*num)
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1877 elsif /nt(\d+)d/ =~ symbol
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1878 seconds = $1.to_i*3600*24
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1879 targetday= Time.at(base-seconds).to_a
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1880 targetnight =
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1881 Time.mktime(*(targetday.indexes(5,4,3)+[@opt['night'].to_i]))
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1882 elsif "nttoday" == symbol
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1883 Time.mktime(year.to_i, month.to_i, day.to_i, @opt['morning'])
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1884 end
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1885 end
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1886 def reg_notify(user, year, month, day, time, text, cancelall = nil)
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1887 threshold = 5*60 # Omit notifycation within 30min future
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1888
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1889 y, m, d, t, = year.to_i, month.to_i, day.to_i, time.to_i
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1890 if t > 2359
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1891 hh = mm = 0
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1892 else
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1893 hh = t/100
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1894 mm = t%100
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1895 end
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1896 now = Time.now
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1897
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1898 filearg = [user, year, month, day, t]
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1899 @ntlist.each{|k, v|
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1900 nt_time = notify_time(year, month, day, t, k)
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1901 if !nt_time
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1902 # do nothing for allday schedule's notification before some minutes
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1903 elsif cancelall || nt_time < now+threshold ||
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1904 /yes|on|true|1/ !~ @params[k] || !@params[k]
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1905 # cancel
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1906 uf = @sc.remove_crondir(nt_time, user, year, month, day, t)
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1907 @sc.removefile(*(filearg+[k]))
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1908 else
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1909 # register
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1910 lf = @sc.register_crondir(nt_time, user, year, month, day, t)
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1911 @sc.putfile(*(filearg+[k, lf]))
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1912 end
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1913 }
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1914 end
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1915 def cancel_notify(user, year, month, day, time)
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1916 reg_notify(user, year, month, day, time, 'dummy', true)
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1917 end
2
1110baebe9a9 RCS-revision 1.3
HIROSE Yuuji <yuuji@gentei.org>
parents: 1
diff changeset
1918
1110baebe9a9 RCS-revision 1.3
HIROSE Yuuji <yuuji@gentei.org>
parents: 1
diff changeset
1919 def commit_schedule(who, y, m, d, timedir, text, repl, pub)
1110baebe9a9 RCS-revision 1.3
HIROSE Yuuji <yuuji@gentei.org>
parents: 1
diff changeset
1920
1110baebe9a9 RCS-revision 1.3
HIROSE Yuuji <yuuji@gentei.org>
parents: 1
diff changeset
1921 end
1110baebe9a9 RCS-revision 1.3
HIROSE Yuuji <yuuji@gentei.org>
parents: 1
diff changeset
1922
0
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1923 #
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1924 # add or remove a schedule
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1925 #
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1926 def add_remove(remove = nil)
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1927 if !checkauth
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1928 return nil
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1929 end
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1930 user = registerer = @params['user']
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1931 as = @params['registas']
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1932 if as && as > '' && /^no$/ !~ as && @sc.ismember(user, as)
3
354e09bb8ce1 RCS-revision 1.4
HIROSE Yuuji <yuuji@gentei.org>
parents: 2
diff changeset
1933 if (gr=grepgroup(as))
354e09bb8ce1 RCS-revision 1.4
HIROSE Yuuji <yuuji@gentei.org>
parents: 2
diff changeset
1934 registerer = gr
354e09bb8ce1 RCS-revision 1.4
HIROSE Yuuji <yuuji@gentei.org>
parents: 2
diff changeset
1935 end
0
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1936 end
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1937 now = Time.now
2
1110baebe9a9 RCS-revision 1.3
HIROSE Yuuji <yuuji@gentei.org>
parents: 1
diff changeset
1938 #y, m, d, h, min = now.year, now.month, now.day, now.hour, now.min
0
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1939
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1940 $KCODE='e' if $DEBUG
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1941 @O.print @params.inspect if $DEBUG
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1942 #
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1943 # Check the validity of specified time
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1944 sy = @params['year'].to_i
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1945 sm = @params['month'].to_i
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1946 sd = @params['day'].to_i
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1947 tm = @params['time'].to_i
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1948 if tm > 2399
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1949 timedir=@opt['alldaydir']
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1950 sh, smin = 23, 59
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1951 tmstr = msg('allday')
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1952 else
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1953 sh = (tm/100).to_i
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1954 smin = (tm%100).to_i
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1955 timedir = sprintf("%04d", tm)
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1956 tmstr = sprintf("%d:%02d", sh, smin)
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1957 end
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1958 time = nil
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1959 begin
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1960 time = Time.mktime(sy, sm, sd, sh, smin)
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1961 rescue
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1962 outputError "%s<br>\nyear=%s<br>month=%s<br>day=%s<br>time=%s\n",
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1963 msg('invaliddate'),
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1964 @params['year'], @params['month'], @params['day'], @params['time']
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1965 return nil
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1966 end
2
1110baebe9a9 RCS-revision 1.3
HIROSE Yuuji <yuuji@gentei.org>
parents: 1
diff changeset
1967
1110baebe9a9 RCS-revision 1.3
HIROSE Yuuji <yuuji@gentei.org>
parents: 1
diff changeset
1968 #
1110baebe9a9 RCS-revision 1.3
HIROSE Yuuji <yuuji@gentei.org>
parents: 1
diff changeset
1969 # Check continuous schedule registration
1110baebe9a9 RCS-revision 1.3
HIROSE Yuuji <yuuji@gentei.org>
parents: 1
diff changeset
1970 wwday = @params['whichday'].to_i
1110baebe9a9 RCS-revision 1.3
HIROSE Yuuji <yuuji@gentei.org>
parents: 1
diff changeset
1971 if @params['endyear'] && @params['endmonth'] && @params['endday'] &&
1110baebe9a9 RCS-revision 1.3
HIROSE Yuuji <yuuji@gentei.org>
parents: 1
diff changeset
1972 (ey=@params['endyear'].to_i) > 0 &&
1110baebe9a9 RCS-revision 1.3
HIROSE Yuuji <yuuji@gentei.org>
parents: 1
diff changeset
1973 (em=@params['endmonth'].to_i) > 0 &&
1110baebe9a9 RCS-revision 1.3
HIROSE Yuuji <yuuji@gentei.org>
parents: 1
diff changeset
1974 (ed=@params['endday'].to_i) > 0
1110baebe9a9 RCS-revision 1.3
HIROSE Yuuji <yuuji@gentei.org>
parents: 1
diff changeset
1975 daylist = []
1110baebe9a9 RCS-revision 1.3
HIROSE Yuuji <yuuji@gentei.org>
parents: 1
diff changeset
1976 endtime = Time.mktime(ey, em, ed, 23, 59)
1110baebe9a9 RCS-revision 1.3
HIROSE Yuuji <yuuji@gentei.org>
parents: 1
diff changeset
1977 ti = time
1110baebe9a9 RCS-revision 1.3
HIROSE Yuuji <yuuji@gentei.org>
parents: 1
diff changeset
1978 begin
1110baebe9a9 RCS-revision 1.3
HIROSE Yuuji <yuuji@gentei.org>
parents: 1
diff changeset
1979 if wwday==7 || wwday==ti.wday
1110baebe9a9 RCS-revision 1.3
HIROSE Yuuji <yuuji@gentei.org>
parents: 1
diff changeset
1980 daylist << [ti.year, ti.month, ti.day]
1110baebe9a9 RCS-revision 1.3
HIROSE Yuuji <yuuji@gentei.org>
parents: 1
diff changeset
1981 end
1110baebe9a9 RCS-revision 1.3
HIROSE Yuuji <yuuji@gentei.org>
parents: 1
diff changeset
1982 end while (ti=Time.at(ti+3600*24)) < endtime
1110baebe9a9 RCS-revision 1.3
HIROSE Yuuji <yuuji@gentei.org>
parents: 1
diff changeset
1983 else
1110baebe9a9 RCS-revision 1.3
HIROSE Yuuji <yuuji@gentei.org>
parents: 1
diff changeset
1984 daylist = [[sy, sm, sd]]
1110baebe9a9 RCS-revision 1.3
HIROSE Yuuji <yuuji@gentei.org>
parents: 1
diff changeset
1985 end
1110baebe9a9 RCS-revision 1.3
HIROSE Yuuji <yuuji@gentei.org>
parents: 1
diff changeset
1986
1110baebe9a9 RCS-revision 1.3
HIROSE Yuuji <yuuji@gentei.org>
parents: 1
diff changeset
1987 if !remove && !(@params['schedule'] && @params['schedule'].strip > '')
0
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1988 outputError msg('putsomething')
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1989 return nil
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1990 end
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1991
2
1110baebe9a9 RCS-revision 1.3
HIROSE Yuuji <yuuji@gentei.org>
parents: 1
diff changeset
1992
1110baebe9a9 RCS-revision 1.3
HIROSE Yuuji <yuuji@gentei.org>
parents: 1
diff changeset
1993 for y, m, d in daylist
1110baebe9a9 RCS-revision 1.3
HIROSE Yuuji <yuuji@gentei.org>
parents: 1
diff changeset
1994 # do remove or addition
1110baebe9a9 RCS-revision 1.3
HIROSE Yuuji <yuuji@gentei.org>
parents: 1
diff changeset
1995 if remove
1110baebe9a9 RCS-revision 1.3
HIROSE Yuuji <yuuji@gentei.org>
parents: 1
diff changeset
1996 cancel_notify(registerer, y, m, d, timedir)
1110baebe9a9 RCS-revision 1.3
HIROSE Yuuji <yuuji@gentei.org>
parents: 1
diff changeset
1997 begin
1110baebe9a9 RCS-revision 1.3
HIROSE Yuuji <yuuji@gentei.org>
parents: 1
diff changeset
1998 @sc.remove(registerer, y, m, d, timedir)
1110baebe9a9 RCS-revision 1.3
HIROSE Yuuji <yuuji@gentei.org>
parents: 1
diff changeset
1999 #########@O.print @H.p(msg('remove')+msg('done'))
1110baebe9a9 RCS-revision 1.3
HIROSE Yuuji <yuuji@gentei.org>
parents: 1
diff changeset
2000 rescue
1110baebe9a9 RCS-revision 1.3
HIROSE Yuuji <yuuji@gentei.org>
parents: 1
diff changeset
2001 outputError("Failed"+$!)
1110baebe9a9 RCS-revision 1.3
HIROSE Yuuji <yuuji@gentei.org>
parents: 1
diff changeset
2002 end
1110baebe9a9 RCS-revision 1.3
HIROSE Yuuji <yuuji@gentei.org>
parents: 1
diff changeset
2003 else
1110baebe9a9 RCS-revision 1.3
HIROSE Yuuji <yuuji@gentei.org>
parents: 1
diff changeset
2004 if time < now
1110baebe9a9 RCS-revision 1.3
HIROSE Yuuji <yuuji@gentei.org>
parents: 1
diff changeset
2005 outputError(msg('past'))
1110baebe9a9 RCS-revision 1.3
HIROSE Yuuji <yuuji@gentei.org>
parents: 1
diff changeset
2006 return nil
1110baebe9a9 RCS-revision 1.3
HIROSE Yuuji <yuuji@gentei.org>
parents: 1
diff changeset
2007 end
1110baebe9a9 RCS-revision 1.3
HIROSE Yuuji <yuuji@gentei.org>
parents: 1
diff changeset
2008 begin
1110baebe9a9 RCS-revision 1.3
HIROSE Yuuji <yuuji@gentei.org>
parents: 1
diff changeset
2009 (text = @params['schedule'].strip.gsub(/\r+\n/, $/)) << "\n"
1110baebe9a9 RCS-revision 1.3
HIROSE Yuuji <yuuji@gentei.org>
parents: 1
diff changeset
2010 replace = (/modify/i =~ @params['editmode'])
1110baebe9a9 RCS-revision 1.3
HIROSE Yuuji <yuuji@gentei.org>
parents: 1
diff changeset
2011 rc = @sc.register(registerer, y, m, d, timedir, text, replace)
1110baebe9a9 RCS-revision 1.3
HIROSE Yuuji <yuuji@gentei.org>
parents: 1
diff changeset
2012 if @params['pub'] && /yes/ =~ @params['pub']
1110baebe9a9 RCS-revision 1.3
HIROSE Yuuji <yuuji@gentei.org>
parents: 1
diff changeset
2013 @sc.putfile(registerer, y, m, d, timedir, 'pub', "1\n")
1110baebe9a9 RCS-revision 1.3
HIROSE Yuuji <yuuji@gentei.org>
parents: 1
diff changeset
2014 else
1110baebe9a9 RCS-revision 1.3
HIROSE Yuuji <yuuji@gentei.org>
parents: 1
diff changeset
2015 @sc.removefile(registerer, y, m, d, timedir, 'pub')
1110baebe9a9 RCS-revision 1.3
HIROSE Yuuji <yuuji@gentei.org>
parents: 1
diff changeset
2016 end
1110baebe9a9 RCS-revision 1.3
HIROSE Yuuji <yuuji@gentei.org>
parents: 1
diff changeset
2017 ######## @O.print @H.p(msg('appended')) if rc == 1
1110baebe9a9 RCS-revision 1.3
HIROSE Yuuji <yuuji@gentei.org>
parents: 1
diff changeset
2018 rescue
1110baebe9a9 RCS-revision 1.3
HIROSE Yuuji <yuuji@gentei.org>
parents: 1
diff changeset
2019 outputError("Failed"+$!)
1110baebe9a9 RCS-revision 1.3
HIROSE Yuuji <yuuji@gentei.org>
parents: 1
diff changeset
2020 end
1110baebe9a9 RCS-revision 1.3
HIROSE Yuuji <yuuji@gentei.org>
parents: 1
diff changeset
2021 text = @sc.getschedule(registerer, y, m, d, timedir)
1110baebe9a9 RCS-revision 1.3
HIROSE Yuuji <yuuji@gentei.org>
parents: 1
diff changeset
2022 reg_notify(registerer, y, m, d, timedir, text)
1110baebe9a9 RCS-revision 1.3
HIROSE Yuuji <yuuji@gentei.org>
parents: 1
diff changeset
2023
0
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2024 end
2
1110baebe9a9 RCS-revision 1.3
HIROSE Yuuji <yuuji@gentei.org>
parents: 1
diff changeset
2025
1110baebe9a9 RCS-revision 1.3
HIROSE Yuuji <yuuji@gentei.org>
parents: 1
diff changeset
2026 end
1110baebe9a9 RCS-revision 1.3
HIROSE Yuuji <yuuji@gentei.org>
parents: 1
diff changeset
2027
1110baebe9a9 RCS-revision 1.3
HIROSE Yuuji <yuuji@gentei.org>
parents: 1
diff changeset
2028 if !remove && @params['rightnow'] && /yes/i =~ @params['rightnow']
1110baebe9a9 RCS-revision 1.3
HIROSE Yuuji <yuuji@gentei.org>
parents: 1
diff changeset
2029 header = sprintf("%s\n%s/%s/%s%s %s %s\n%s%s%s\n%s\n",
1110baebe9a9 RCS-revision 1.3
HIROSE Yuuji <yuuji@gentei.org>
parents: 1
diff changeset
2030 @opt['url'],
1110baebe9a9 RCS-revision 1.3
HIROSE Yuuji <yuuji@gentei.org>
parents: 1
diff changeset
2031 sy, sm, sd,
1110baebe9a9 RCS-revision 1.3
HIROSE Yuuji <yuuji@gentei.org>
parents: 1
diff changeset
2032 if daylist.length > 1
1110baebe9a9 RCS-revision 1.3
HIROSE Yuuji <yuuji@gentei.org>
parents: 1
diff changeset
2033 "-%s/%s/%s" % daylist[-1]
1110baebe9a9 RCS-revision 1.3
HIROSE Yuuji <yuuji@gentei.org>
parents: 1
diff changeset
2034 end,
1110baebe9a9 RCS-revision 1.3
HIROSE Yuuji <yuuji@gentei.org>
parents: 1
diff changeset
2035 tmstr, msg('immediatenote'),
1110baebe9a9 RCS-revision 1.3
HIROSE Yuuji <yuuji@gentei.org>
parents: 1
diff changeset
2036 msg('registerer_is'), nickname(registerer),
1110baebe9a9 RCS-revision 1.3
HIROSE Yuuji <yuuji@gentei.org>
parents: 1
diff changeset
2037 if user!=registerer
1110baebe9a9 RCS-revision 1.3
HIROSE Yuuji <yuuji@gentei.org>
parents: 1
diff changeset
2038 sprintf(" (%s%s)",
1110baebe9a9 RCS-revision 1.3
HIROSE Yuuji <yuuji@gentei.org>
parents: 1
diff changeset
2039 msg('registerer'), nickname(user))
1110baebe9a9 RCS-revision 1.3
HIROSE Yuuji <yuuji@gentei.org>
parents: 1
diff changeset
2040 else
1110baebe9a9 RCS-revision 1.3
HIROSE Yuuji <yuuji@gentei.org>
parents: 1
diff changeset
2041 ""
1110baebe9a9 RCS-revision 1.3
HIROSE Yuuji <yuuji@gentei.org>
parents: 1
diff changeset
2042 end,
1110baebe9a9 RCS-revision 1.3
HIROSE Yuuji <yuuji@gentei.org>
parents: 1
diff changeset
2043 "-"*70)
1110baebe9a9 RCS-revision 1.3
HIROSE Yuuji <yuuji@gentei.org>
parents: 1
diff changeset
2044 sendnotify(registerer, "Registration completed", header+text)
0
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2045 end
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2046 show(sprintf("%04d/%02d/%02d", sy, sm, sd))
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2047 @O.print "add_remove" if user == @author
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2048 end
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2049
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2050 # add
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2051 def addsched()
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2052 add_remove(/remove/i =~ @params['editmode'])
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2053 end
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2054
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2055 #
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2056 # Display remove or modify screen
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2057 def remove_modify(datetime, remove)
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2058 if !checkauth
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2059 return nil
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2060 end
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2061
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2062 user = @params['user']
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2063 y, m, d, time, dummy, as =
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2064 datetime.scan(%r,(\d\d\d\d+)/(\d+)/(\d+)/(\d+)(/(.+))?,)[0]
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2065 # datetime always contains trailing slash generated by parsedate
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2066 # but if the trailing part is a user(not a group), it is removed
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2067 # because it filtered out by grepgroup() function
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2068 if ! (y && m && d && time)
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2069 outputError "Invalid time specification"
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2070 return nil
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2071 elsif as && as > ''
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2072 unless @sc.ismember(user, as)
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2073 outputError "You have no permission to edit group %s's schedule", as
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2074 return nil
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2075 end
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2076 user = as
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2077 end
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2078 unless text=@sc.getschedule(user, y, m, d, time)
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2079 outputError "%s %s", datetime, msg('noplan')
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2080 return nil
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2081 end
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2082 @O.print @H.elementln("h1"){
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2083 sprintf "%s %s", datetime, remove ? msg('remove') : msg('modify')
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2084 }
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2085 @O.print @H.elementln("form", {'action'=>@myname+"?-addsched", 'method'=>'POST'}){
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2086 pubp=(@sc.getfile(user, y, m, d, time, 'pub').to_i > 0)
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2087 if as
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2088 @H.hidden("registas", as)
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2089 end.to_s + \
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2090 "<input type=\"hidden\" name=\"year\" value=\"%04d\">\n" % y.to_i + \
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2091 "<input type=\"hidden\" name=\"month\" value=\"%02d\">\n" % m.to_i + \
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2092 "<input type=\"hidden\" name=\"day\" value=\"%02d\">\n" % d.to_i + \
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2093 "<input type=\"hidden\" name=\"time\" value=\"%04d\">\n" % time.to_i + \
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2094 msg('reqnotify') + "<br>\n" + \
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2095 @ntlist.collect{|nt, v|
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2096 cronp = @sc.getfile(user, y, m, d, time, nt)
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2097 sprintf "<input type=\"checkbox\" name=\"%s\"%s>%s \n",
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2098 nt, (cronp ? " checked" : ""), v
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2099 }.join + "<br>" + \
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2100 @H.element("textarea", @schedulearea) {text} + "<br>" + \
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2101 @H.radio("editmode", "append", msg('append')) + ' / ' + \
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2102 @H.radio("editmode", "modify", msg('modify'), !remove) + ' / ' + \
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2103 @H.radio("editmode", "remove", msg('remove'), remove) + ' / ' + \
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2104 "<br>\n" + \
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2105 msg('publicok') + \
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2106 @H.radio("pub", "yes", msg('yes'), pubp) + \
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2107 @H.radio("pub", "no", msg('no'), !pubp) + \
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2108 '<br>' + \
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2109 @H.submit_reset("GO")
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2110 }
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2111 @O.print "remove_modify" if user == @author
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2112 end
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2113 def remove(datetime)
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2114 remove_modify(datetime, true)
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2115 end
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2116 def modify(datetime)
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2117 remove_modify(datetime, false)
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2118 end
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2119
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2120 def prohibitviahttp()
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2121 %w[REMOTE_ADDR REMOTE_HOST SERVER_NAME].each{|v|
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2122 if ENV[v]
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2123 print "Content-type: text/plain\n\n"
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2124 print "Do not call this via CGI"
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2125 exit 0
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2126 end
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2127 }
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2128 end
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2129 #
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2130 # notify: call via cron
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2131 def notify()
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2132 prohibitviahttp()
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2133 unless @opt['maintainer']
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2134 STDERR.printf "Set maintainer(email-address) in %s\n", @opt['conf']
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2135 STDERR.print "(ex) maintainer=yuuji@gentei.org\n"
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2136 exit 0
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2137 end
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2138 Dir.chdir @mydir
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2139 line = "-"*25
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2140 indent = " "
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2141 now = Time.now
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2142 p "notifylist", @sc.notify_list(now) if $DEBUG
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2143 @sc.notify_list(now).each{|u, datehash|
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2144 dellist = []
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2145 content = datehash.sort.collect{|date, filehash|
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2146 next unless /(\d\d\d\d+)-(\d+)-(\d+)-(\d\d\d\d)/ =~ date
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2147 y, m, d, t = $1.to_i, $2.to_i, $3.to_i, $4.to_i
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2148 if t > 2359
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2149 hhmm = msg('allday')
2
1110baebe9a9 RCS-revision 1.3
HIROSE Yuuji <yuuji@gentei.org>
parents: 1
diff changeset
2150 comment = msg(now.hour > 18 ? 'precedingday' : 'theday')
0
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2151 else
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2152 hhmm = sprintf "%02d:%02d", t/100, t%100
2
1110baebe9a9 RCS-revision 1.3
HIROSE Yuuji <yuuji@gentei.org>
parents: 1
diff changeset
2153 diff = Time.mktime(y, m, d, t/100, t%100) - now
0
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2154 if diff < 7200
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2155 comment = "%d%s" % [diff/60, msg('minutes', 'before')]
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2156 elsif (ddiff=(Time.mktime(y, m, d)-Time.mktime(now.year, now.month, now.day))/3600/24) == 0
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2157 comment = "%s%d%s" %
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2158 [msg('about'), diff/3600, msg('hours', 'before')]
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2159 else
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2160 comment = "%d%s" % [ddiff, msg('days', 'before')]
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2161 end
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2162 end
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2163 dellist << filehash['file']
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2164 sprintf("%s[[[%d/%d/%d %s]]]%s\n", line, y, m, d, hhmm, line) + \
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2165 sprintf("(%s %s)\n", comment, msg('notification')) + \
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2166 indent+filehash['text'].join(indent) + "\n\n"
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2167 }
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2168 # content.delete(nil)
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2169 if content
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2170 if $DEBUG
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2171 print content
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2172 else
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2173 content.unshift(msg('introduce')+"\n"+msg('notifymail')+"\n")
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2174 content.unshift(@opt['url'].to_s+"\n")
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2175 if sendnotify(u, msg('notifysubj'), content.join)
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2176 # send mail completed
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2177 begin
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2178 @sc.cleanup_files(dellist)
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2179 rescue
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2180 end
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2181 end
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2182 end
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2183 end
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2184 }
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2185 if !(list=@sc.notify_list(now)).empty?
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2186 subj = @mybase+": Undeleted old cron files detected"
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2187 files = list.collect{|who, whash|
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2188 whash.sort.collect{|date, fhash| fhash['file']}.join("\n")
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2189 }.join("\n")
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2190 sendMail(@opt['maintainer'], subj,
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2191 "This is `#{@mybase}' in #{@mydir}\n" +
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2192 "You'd better check and remove these files.\n\n"+files)
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2193 end
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2194
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2195 exit 0
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2196 end
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2197
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2198 #
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2199 # user management
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2200 def userman()
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2201 if !checkauth
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2202 return nil
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2203 end
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2204 user=@params['user']
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2205 nickname = @sc.nickname(user)
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2206 tdclass = {}
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2207 tdclass["width"] = "80px" if @oldagent # workaround for NN4
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2208
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2209 @O.print @H.elementln("h1"){
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2210 @mybase+' '+msg('user', 'management')
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2211 }
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2212 @O.print @H.p(@sc.mkusermap.inspect) if $DEBUG
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2213 @O.print @H.p(msg('usermodwarn'))
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2214 @O.print \
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2215 @H.elementln("form", {'action'=>@myname+"?-usermod", 'method'=>'POST'}){
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2216 @H.elementln("table"){
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2217 @H.elementln("tr"){
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2218 @H.element("td", tdclass) {msg('regaddress')} + \
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2219 @H.element("td") {
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2220 @H.element("code"){user}
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2221 }
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2222 } + \
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2223 @H.elementln("tr"){
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2224 @H.element("td", tdclass) {msg('mailaddress')} + \
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2225 @H.element("td") {
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2226 @H.text("newmail", mailaddress(user), @opt['size'], 80)
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2227 }
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2228 } + \
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2229 @H.elementln("tr"){
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2230 @H.element("td", tdclass) {msg('weburl')} + \
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2231 @H.element("td") {
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2232 @H.text("webpage", webpage(user), @opt['size'], 80)
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2233 }
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2234 } + \
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2235 @H.elementln("tr"){
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2236 @H.element("td") {msg('nickname')} + \
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2237 @H.element("td") {
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2238 @H.text("nickname", nickname, @opt['size'], 10)
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2239 }
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2240 }
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2241 } + \
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2242 @H.elementln("p"){
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2243 msg('shortnameplz') + "<br>\n" + \
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2244 @H.a(@after5url+"multiplenotify.html", msg('multiplemail'))
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2245 } + \
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2246 '<br>' + \
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2247 @H.submit_reset("GO")
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2248 } # form
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2249
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2250 #
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2251 # Next section, REMOVE USER!
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2252 @O.print @H.elementln("h2"){
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2253 sprintf "%s %s %s", msg('user'), user, msg('deletion')
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2254 }
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2255 @O.print @H.p(msg('deletionwarn'))+"\n"
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2256 @O.print @H.elementln("form", {'action'=>@myname+"?-delusersub+#{user}", 'method'=>'POST'}){
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2257 @H.hidden("user", user) + "\n" + \
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2258 @H.elementln("table"){
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2259 @H.elementln("tr"){
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2260 @H.elementln("td"){
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2261 sprintf msg('deluser'), user
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2262 } + \
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2263 @H.elementln("td"){
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2264 @H.radio("delete", "yes", msg('yes')) + ' ' + \
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2265 @H.radio("delete", "no", msg('no'), true)
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2266 }
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2267 } + \
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2268 @H.elementln("tr"){
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2269 @H.elementln("td"){
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2270 sprintf msg('really?'), user
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2271 } + \
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2272 @H.elementln("td"){
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2273 @H.radio("delete2", "yes", msg('yes')) + ' ' + \
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2274 @H.radio("delete2", "no", msg('no'), true)
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2275 }
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2276 }
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2277 } + \
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2278 "<br>\n" + @H.submit_reset("GO")
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2279 }
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2280
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2281
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2282 end
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2283 def usermod()
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2284 if !checkauth
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2285 return nil
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2286 end
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2287 @O.print @H.elementln("h1"){
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2288 msg('user', 'management')+" "+msg('done')
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2289 }
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2290 user=@params['user']
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2291 email = mailaddress(user)
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2292 newmail = @params['newmail']
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2293 nickname = @sc.nickname(user)
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2294 newnn = @params['nickname'].to_s.strip
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2295 webpage = webpage(user)
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2296 newweb = @params['webpage']
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2297 if email != newmail
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2298 # change user's address
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2299 if newmail == user
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2300 newvalue = nil
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2301 elsif checkmail(newmail)
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2302 newvalue = newmail
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2303 else
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2304 @O.print @H.elementln("pre"){"Invalid mail address"}
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2305 end
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2306 @O.print @H.elementln("pre"){
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2307 if @sc.putuserattr(user, 'email', newvalue)
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2308 sprintf "new mail address=\"%s\"", mailaddress(user)
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2309 else
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2310 sprintf "Setting new mail address to \"%s\" failed", newvalue
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2311 end
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2312 }
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2313 end
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2314 if nickname != newnn
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2315 if @sc.setnickname(user, newnn)
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2316 @O.print @H.p(msg('success'))
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2317 @O.print @H.elementln("pre"){
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2318 sprintf "user=\"%s\"\nnickname=\"%s\"", user, @sc.nickname(user)
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2319 }
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2320 @O.print @H.p(msg('nicknamenote')) if newnn == ''
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2321 else
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2322 @O.print @H.p(msg('failure'))
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2323 end
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2324 end
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2325 if newweb > '' && webpage != newweb
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2326 if @sc.putuserattr(user, "webpage", newweb)
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2327 @O.print @H.p(msg('success'))
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2328 @O.print @H.elementln("pre"){
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2329 sprintf "user=\"%s\"\nwebpage=\"%s\"", user, webpage(user)
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2330 }
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2331 else
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2332 @O.print @H.p("Update webpage"+msg('failure'))
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2333 end
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2334 end
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2335 end
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2336 #
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2337 # Display form of group management
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2338 def groupman()
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2339 if !checkauth
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2340 return nil
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2341 end
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2342 user=@params['user']
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2343 nickname = @sc.nickname(user)
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2344 tdclass = {}
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2345 tdclass["width"] = "80px" if @oldagent # workaround for NN4
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2346 admclass = {'class'=>'admin'}
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2347 grmap = @sc.groupmap
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2348
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2349 @O.print @H.elementln("h1"){
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2350 @mybase+' '+msg('group', 'management')
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2351 }
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2352 $KCODE='e' if $DEBUG
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2353 @O.print grmap.inspect if $DEBUG
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2354 @O.print @H.p(msg('joinmyself')+
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2355 @H.a(@myname+"?-newgroup", msg('newgroup')))
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2356 @O.print @H.p(msg('usermodwarn'))
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2357 @O.print \
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2358 @H.elementln("form", {'action'=>@myname+"?-groupmod", 'method'=>'POST'}){
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2359 @H.elementln("table", {'border'=>'1', 'vertical-align'=>'top'}){
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2360 grmap.collect{|g, ghash|
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2361 @H.elementln("tr"){
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2362 @H.element("td", @sc.isadmin(user, g) ? admclass : nil){
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2363 g
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2364 } + \
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2365 @H.element("td"){
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2366 @H.element("div", {'class'=>'c'}) {
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2367 if @sc.isadmin(user, g)
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2368 @H.a(@myname+"?-admgroup+#{g}", msg('adminop'))
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2369 else
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2370 '--'
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2371 end
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2372 }
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2373 } + \
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2374 @H.element("td"){
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2375 memberp = @sc.ismember(user, g)
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2376 if ghash['admin'].grep(user)[0]
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2377 @H.text("groupname-#{g}", ghash['name'], nil, 20)
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2378 else
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2379 ghash['name']
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2380 end + '<br>' + \
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2381 @H.radio("groupadd-#{g}", "yes", "IN", memberp) + " / " + \
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2382 @H.radio("groupadd-#{g}", "no", "OUT", !memberp)
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2383 } + \
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2384 @H.element("td"){
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2385 ghash['members'].collect{|u|
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2386 @sc.nickname(u)
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2387 }.join(", ")
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2388 }
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2389 }
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2390 }
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2391 } + \
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2392 '' + \
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2393 @H.p(msg('groupwarn', 'shortnameplz')) + \
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2394 @H.submit_reset("GO")
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2395 } # form
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2396 end
2
1110baebe9a9 RCS-revision 1.3
HIROSE Yuuji <yuuji@gentei.org>
parents: 1
diff changeset
2397 def groupnamesString()
1110baebe9a9 RCS-revision 1.3
HIROSE Yuuji <yuuji@gentei.org>
parents: 1
diff changeset
2398 @H.elementln("p", {'class'=>'listup'}){
1110baebe9a9 RCS-revision 1.3
HIROSE Yuuji <yuuji@gentei.org>
parents: 1
diff changeset
2399 @sc.groups().collect{|g|@sc.groupname(g)}.join(", ")
1110baebe9a9 RCS-revision 1.3
HIROSE Yuuji <yuuji@gentei.org>
parents: 1
diff changeset
2400 }
1110baebe9a9 RCS-revision 1.3
HIROSE Yuuji <yuuji@gentei.org>
parents: 1
diff changeset
2401 end
0
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2402 def groupmod()
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2403 if !checkauth
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2404 return nil
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2405 end
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2406 @O.print @H.elementln("h1"){
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2407 msg('group', 'management')+" "+msg('done')
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2408 }
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2409 user=@params['user']
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2410 @O.print @params.inspect if $DEBUG
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2411
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2412 for grp in @sc.groups()
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2413 #
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2414 # as a member, participate or retire
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2415 key = "groupadd-#{grp}"
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2416 removep = (/no/i =~ @params[key])
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2417 memberp = @sc.ismember(user, grp)
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2418 if @params[key]
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2419 if (!removep) ^ memberp
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2420 @sc.addgroup(grp, [user], removep)
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2421 @O.print @H.elementln("p"){
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2422 sprintf "%s [%s] %s %s", msg('user'), user,
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2423 removep ? msg('removedfromgp') : msg('addedtogroup'), grp
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2424 }
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2425 end
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2426 end
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2427 #
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2428 # as a owner, change the name of group
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2429 if @sc.isadmin(user, grp) &&
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2430 (newname = @params["groupname-#{grp}"]) &&
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2431 @sc.groupname(grp) != newname
2
1110baebe9a9 RCS-revision 1.3
HIROSE Yuuji <yuuji@gentei.org>
parents: 1
diff changeset
2432 @O.printf "@sc.name2group=%s<br>\n", @sc.name2group(newname)
1110baebe9a9 RCS-revision 1.3
HIROSE Yuuji <yuuji@gentei.org>
parents: 1
diff changeset
2433 if dupl=@sc.name2group(newname)
1110baebe9a9 RCS-revision 1.3
HIROSE Yuuji <yuuji@gentei.org>
parents: 1
diff changeset
2434 @O.print @H.p(sprintf(msg('dupname'), newname))
1110baebe9a9 RCS-revision 1.3
HIROSE Yuuji <yuuji@gentei.org>
parents: 1
diff changeset
2435 @O.print groupnamesString()
1110baebe9a9 RCS-revision 1.3
HIROSE Yuuji <yuuji@gentei.org>
parents: 1
diff changeset
2436
1110baebe9a9 RCS-revision 1.3
HIROSE Yuuji <yuuji@gentei.org>
parents: 1
diff changeset
2437 else
1110baebe9a9 RCS-revision 1.3
HIROSE Yuuji <yuuji@gentei.org>
parents: 1
diff changeset
2438 @sc.setgroupname(grp, newname)
1110baebe9a9 RCS-revision 1.3
HIROSE Yuuji <yuuji@gentei.org>
parents: 1
diff changeset
2439 @O.print @H.elementln("p"){
1110baebe9a9 RCS-revision 1.3
HIROSE Yuuji <yuuji@gentei.org>
parents: 1
diff changeset
2440 sprintf "%s %s%s %s",
1110baebe9a9 RCS-revision 1.3
HIROSE Yuuji <yuuji@gentei.org>
parents: 1
diff changeset
2441 msg('group'), grp, msg('of', 'name', 'setto'), newname
1110baebe9a9 RCS-revision 1.3
HIROSE Yuuji <yuuji@gentei.org>
parents: 1
diff changeset
2442 }
1110baebe9a9 RCS-revision 1.3
HIROSE Yuuji <yuuji@gentei.org>
parents: 1
diff changeset
2443 end
0
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2444 end
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2445 end
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2446 end
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2447 def users()
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2448 unless pm=open_pm()
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2449 outputError(msg('autherror'))
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2450 return nil
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2451 end
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2452 pm.users
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2453 end
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2454 def grepgroup(gname)
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2455 gr = @sc.groups.grep(gname)[0]
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2456 end
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2457 def admgroup(group = nil)
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2458 # if group==nil, create new
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2459 if !checkauth
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2460 return nil
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2461 end
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2462 @O.print @H.elementln("h1"){
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2463 msg('group', 'management')
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2464 }
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2465 user=@params['user']
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2466
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2467 # Check the existent group's validity
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2468 if group
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2469 unless (gr=grepgroup(group))
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2470 @O.print @H.p("No such group #{group}")
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2471 return nil
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2472 end
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2473 group = gr
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2474 unless @sc.isadmin(user, group)
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2475 @O.print @H.p("You are not administrator of #{group}.")
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2476 return nil
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2477 end
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2478 @O.print @H.elementln("h2"){
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2479 msg('group')+" #{group}" +
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2480 if group != @sc.groupname(group)
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2481 " (#{@sc.groupname(group)})"
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2482 end.to_s
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2483 }
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2484 actionmethod={'action'=>@myname+"?-admgroupsub", 'method'=>'POST'}
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2485 else
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2486 # New group creation
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2487 @O.print @H.elementln("h2"){
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2488 msg('newgroup')
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2489 }
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2490 actionmethod={'action'=>@myname+"?-newgroupsub", 'method'=>'POST'}
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2491 end
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2492
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2493 userlist = ([user] + users()).uniq
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2494 myselfclass = {'class'=>'admin'}
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2495 colspan2 = {'colspan'=>'2'}
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2496 warnclass = {'class'=>'warn'}
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2497 warnp = nil
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2498
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2499 @O.print @H.elementln("form", actionmethod){
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2500 @H.hidden('group', group) + "\n" + \
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2501 if group
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2502 ""
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2503 else
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2504 # new group creation
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2505 grps = @sc.groups()
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2506 i=1
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2507 defname = "group%03d"%i
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2508 while grps.grep(defname)[0]
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2509 defname = "group%03d"%(i+=1)
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2510 end
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2511 @H.element("pre"){
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2512 msg('group', 'of', 'id')+"\n"+@H.text("group", defname) + "\n" + \
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2513 msg('group', 'of', 'name', 'anystring')+"\n"+ \
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2514 @H.text("gname", '') + "\n"
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2515 }
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2516 end + \
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2517 @H.elementln("table", {'border'=>'1'}){
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2518 @H.elementln("tr"){
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2519 @H.element("th"){msg('join')} + \
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2520 @H.element("th"){msg('administrator')} + \
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2521 @H.element("th"){msg('member')}
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2522 } + \
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2523 userlist.collect{|u|
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2524 recursememp = nil
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2525 if group
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2526 memberp = (@sc.ismember(u, group) && true)
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2527 adminp = (@sc.isadmin(u, group) && true)
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2528 if !memberp && @sc.members(group).grep(u)[0]
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2529 recursememp = true
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2530 end
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2531 else
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2532 memberp = adminp = (u == user)
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2533 end
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2534 @H.elementln("tr", (u==user ? myselfclass : nil)){
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2535 @H.element("td"){
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2536 @H.radio('mem-'+u, 'yes', 'YES / ', memberp) + \
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2537 @H.radio('mem-'+u, 'no', 'NO', !memberp)
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2538 } + \
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2539 @H.element("td"){
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2540 @H.radio('adm-'+u, 'yes', 'YES / ', adminp) + \
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2541 @H.radio('adm-'+u, 'no', 'NO', !adminp)
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2542 } + \
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2543 @H.element("td"){
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2544 @sc.nickname(u) + \
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2545 if recursememp
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2546 warnp = true
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2547 @H.element("span", warnclass){"(*)"}
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2548 end.to_s
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2549 }
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2550 }
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2551 }.join + \
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2552 # group names
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2553 @H.elementln("tr"){
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2554 @H.element("th", colspan2){msg('join')} + \
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2555 @H.element("th"){msg('group')}
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2556 } + \
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2557 @sc.groups().collect{|g|
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2558 next if group == g
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2559 memberp = @sc.ismember(g, group)
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2560 @H.element("tr"){
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2561 @H.element("td", colspan2){
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2562 @H.radio('mem-'+g, 'yes', 'YES / ', memberp) + \
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2563 @H.radio('mem-'+g, 'no', 'NO', !memberp)
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2564 } + \
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2565 @H.element("td"){
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2566 if @sc.isadmin(user, g)
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2567 @H.a(@myname+"?-admgroup+#{g}", @sc.groupname(g))
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2568 else
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2569 @sc.groupname(g)
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2570 end
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2571 }
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2572 }
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2573 }.join
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2574 } + "<br>\n" + \
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2575 @H.submit_reset("GO")
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2576 } # form
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2577 @O.print @H.p(@H.element("span", warnclass){"(*)"}+
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2578 msg('recursewarn')) if warnp
2
1110baebe9a9 RCS-revision 1.3
HIROSE Yuuji <yuuji@gentei.org>
parents: 1
diff changeset
2579 if group && (members = @sc.members(group))[0]
0
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2580 @O.print @H.p(sprintf(msg('wholemembers'), group))
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2581 @O.print @H.elementln("p", {'class'=>'listup'}){
2
1110baebe9a9 RCS-revision 1.3
HIROSE Yuuji <yuuji@gentei.org>
parents: 1
diff changeset
2582 members.collect{|u|@sc.nickname(u)}.join(", ")}
0
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2583 end
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2584
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2585 #
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2586 # Next section, REMOVE GROUP!
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2587 return nil unless group
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2588 @O.print @H.elementln("h2"){
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2589 sprintf "%s %s %s", msg('group'), group, msg('deletion')
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2590 }
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2591 @O.print @H.p(msg('deletionwarn'))+"\n"
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2592 @O.print @H.elementln("form", {'action'=>@myname+"?-delgroupsub+#{group}", 'method'=>'POST'}){
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2593 @H.hidden("group", group) + "\n" + \
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2594 @H.elementln("table"){
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2595 @H.elementln("tr"){
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2596 @H.elementln("td"){
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2597 sprintf msg('delgroup'), group
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2598 } + \
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2599 @H.elementln("td"){
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2600 @H.radio("delete", "yes", msg('yes')) + ' ' + \
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2601 @H.radio("delete", "no", msg('no'), true)
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2602 }
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2603 } + \
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2604 @H.elementln("tr"){
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2605 @H.elementln("td"){
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2606 sprintf msg('really?'), group
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2607 } + \
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2608 @H.elementln("td"){
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2609 @H.radio("delete2", "yes", msg('yes')) + ' ' + \
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2610 @H.radio("delete2", "no", msg('no'), true)
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2611 }
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2612 }
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2613 } + \
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2614 "<br>\n" + @H.submit_reset("GO")
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2615 }
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2616
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2617 @O.print footer()
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2618 end
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2619 def newgroup()
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2620 admgroup(nil)
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2621 end
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2622
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2623 def delgroupsub(group)
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2624 if !checkauth
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2625 return nil
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2626 end
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2627 user = @params['user']
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2628 if group != @params['group']
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2629 @O.print @H.p("Group mismatch")
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2630 return nil
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2631 end
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2632 unless (gr=grepgroup(group))
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2633 @O.print @H.p("No such group #{group}")
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2634 return nil
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2635 end
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2636 group = gr
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2637 unless @sc.isadmin(user, group)
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2638 @O.print @H.p("You are not administrator of #{group}.")
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2639 return nil
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2640 end
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2641 unless @params['delete'] && /yes/i =~ @params['delete'] \
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2642 && @params['delete2'] && /yes/i =~ @params['delete2']
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2643 @O.print @H.p(msg('chicken'))
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2644 return nil
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2645 end
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2646 @O.print @H.elementln("h1"){
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2647 msg('group')+" #{group} "+msg('deletion')
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2648 }
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2649 @O.print @H.p(@sc.destroygroup(group) ? msg("done") : msg("failure"))
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2650
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2651 @O.print footer()
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2652 end
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2653
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2654 def deleteuser(user)
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2655 @sc.deleteuser(user) &&
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2656 begin
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2657 pm = open_pm
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2658 pm.delete(user)
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2659 pm.close()
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2660 true
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2661 rescue
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2662 nil
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2663 end
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2664 end
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2665 def delusersub(user)
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2666 if !checkauth
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2667 return nil
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2668 end
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2669 user = @params['user']
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2670 if user != @params['user']
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2671 @O.print @H.p("User mismatch")
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2672 return nil
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2673 end
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2674 unless (us=users().grep(user)[0])
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2675 @O.print @H.p("No such user #{user}")
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2676 return nil
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2677 end
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2678 user = us
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2679 unless @params['delete'] && /yes/i =~ @params['delete'] \
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2680 && @params['delete2'] && /yes/i =~ @params['delete2']
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2681 @O.print @H.p(msg('chicken'))
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2682 return nil
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2683 end
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2684 @O.print @H.elementln("h1"){
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2685 msg('user')+" #{user} "+msg('deletion')
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2686 }
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2687 @O.print @H.p(deleteuser(user) ? msg("done") : msg("failure"))
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2688
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2689 @O.print footer()
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2690 end
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2691
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2692 def admgroupsub()
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2693 if !checkauth
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2694 return nil
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2695 end
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2696 user = @params['user']
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2697 group = @params['group']
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2698 unless (gr=grepgroup(group))
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2699 @O.print @H.element("pre"){"No such group #{group.inspect}"}
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2700 return nil
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2701 end
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2702 unless @sc.isadmin(user, group)
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2703 @O.print @H.p("You are not administrator of #{group}.")
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2704 return nil
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2705 end
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2706 gorup = gr
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2707 @O.print @H.elementln("h1"){
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2708 msg('group', 'management', 'done')
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2709 }
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2710 @O.print @H.elementln("h2"){
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2711 msg('group')+" #{group}" +
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2712 if group != @sc.groupname(group)
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2713 " (#{@sc.groupname(group)})"
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2714 end.to_s
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2715 }
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2716 somethingdone = nil
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2717 for u in users()
2
1110baebe9a9 RCS-revision 1.3
HIROSE Yuuji <yuuji@gentei.org>
parents: 1
diff changeset
2718 u = @sc.isuser(u) # users() value is considered tainted.
1110baebe9a9 RCS-revision 1.3
HIROSE Yuuji <yuuji@gentei.org>
parents: 1
diff changeset
2719 next unless u # Use registered value in @sc.
0
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2720 for var, kind in {
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2721 "mem"=>['members', 'member'], 'adm'=>['admin', 'administrator']}
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2722 memv = "#{var}-#{u}"
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2723 if @params[memv]
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2724 joinp = ((/^yes/i =~ @params[memv]) && true)
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2725 membp = if var=='mem'
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2726 @sc.ismember(u, group)
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2727 else # admin
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2728 @sc.isadmin(u, group)
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2729 end && true
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2730 if var=='adm' && @sc.admins(group).length == 1 && membp && !joinp
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2731 @O.print @H.p(sprintf(msg('soleadmin'), u, group))
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2732 elsif joinp ^ membp
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2733 somethingdone = true
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2734 @sc.addgroup(group, [u], !joinp, kind[0])
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2735 @O.print @H.elementln("p"){
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2736 sprintf "%s [%s](%s) %s %s", msg('user'), u,
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2737 msg(kind[1]),
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2738 joinp ? msg('addedtogroup'): msg('removedfromgp'), group
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2739 }
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2740 end
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2741 end
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2742 end
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2743 end # users()
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2744
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2745 # add or remove for group in groups
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2746 for g in @sc.groups()
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2747 next if g == group
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2748 memv = "mem-#{g}"
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2749 if @params[memv]
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2750 joinp = ((/^yes/i =~ @params[memv]) && true)
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2751 membp = (@sc.ismember(g, group) && true)
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2752 if joinp ^ membp
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2753 somethingdone = true
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2754 @sc.addgroup(group, [g], !joinp)
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2755 @O.print @H.elementln("p"){
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2756 sprintf "%s [%s] %s %s", msg('group'), g,
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2757 joinp ? msg('addedtogroup'): msg('removedfromgp'), group
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2758 }
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2759 end
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2760 end
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2761 end # groups
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2762 unless somethingdone
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2763 # @O.print @H.p(msg('nothingtodo'))
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2764 end
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2765 @O.print footer()
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2766 end
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2767 def newgroupsub()
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2768 if !checkauth
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2769 nil
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2770 end
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2771 user = @params['user']
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2772 newgroup = @params['group']
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2773 newgname = @params['gname']
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2774
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2775
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2776 if @sc.groups.grep(newgroup)[0]
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2777 @O.print @H.p(msg('existent')+newgroup)
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2778 return nil
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2779 end
2
1110baebe9a9 RCS-revision 1.3
HIROSE Yuuji <yuuji@gentei.org>
parents: 1
diff changeset
2780 if dupl=@sc.name2group(newgname)
1110baebe9a9 RCS-revision 1.3
HIROSE Yuuji <yuuji@gentei.org>
parents: 1
diff changeset
2781 @O.print @H.p(sprintf(msg('dupname'), newgname))
1110baebe9a9 RCS-revision 1.3
HIROSE Yuuji <yuuji@gentei.org>
parents: 1
diff changeset
2782 @O.print groupnamesString()
1110baebe9a9 RCS-revision 1.3
HIROSE Yuuji <yuuji@gentei.org>
parents: 1
diff changeset
2783 return nil
1110baebe9a9 RCS-revision 1.3
HIROSE Yuuji <yuuji@gentei.org>
parents: 1
diff changeset
2784 end
0
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2785 @sc.creategroup(newgroup, newgname, [user])
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2786 admgroup(newgroup)
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2787 end
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2788
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2789 def setpasswd(user)
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2790 prohibitviahttp()
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2791 pm = open_pm()
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2792 exit 1 unless pm
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2793 if pm.userexist?(user) then
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2794 begin
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2795 system "stty -echo"
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2796 STDERR.print "New passwd: "
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2797 p1 = STDIN.gets
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2798 STDERR.print "\nAgain: "
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2799 p2 = STDIN.gets
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2800 ensure
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2801 system "stty echo"
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2802 end
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2803 if (p1 == p2) then
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2804 pm.setpasswd(user, p1.chop!)
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2805 end
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2806 STDERR.print "New password for #{user} set successfully\n"
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2807 else
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2808 STDERR.print "User #{user} not found\n"
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2809 end
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2810 pm.close()
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2811 exit 0
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2812 end
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2813 def adduser(user)
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2814 prohibitviahttp()
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2815 pm = open_pm()
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2816 exit 1 unless pm
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2817 newpwd = pm.setnewpasswd(user, 4)
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2818 print "#{user}'s password is #{newpwd}\n"
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2819 pm.close()
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2820 exit 0
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2821 end
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2822 def deluser(user)
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2823 prohibitviahttp()
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2824 pm = open_pm()
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2825 exit 1 unless pm
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2826 pm.delete(user)
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2827 pm.close()
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2828 exit 0
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2829 end
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2830
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2831 # read configuratoin file
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2832 def readconf(conf)
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2833 cf = "after5.cf" #conf # || @opt['conf']
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2834 cf = File.join(@mydir, cf) unless test(?s, cf)
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2835 cf = File.join(ENV["HOME"], cf) unless test(?s, cf)
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2836 return unless test(?s, cf)
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2837 begin
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2838 IO.foreach(cf){|line|
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2839 next if /^\s *#/ =~ line
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2840 line.chop!
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2841 line.sub!(/^\s*#.*/, '')
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2842 next if /^$/ =~ line
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2843 case line
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2844 # title, type = line.split(/\t+/)
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2845 when /^([a-z]+)=(.*)/oi
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2846 key, value = $1, $2
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2847 case value
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2848 when /^(no|none|null|nil)$/io
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2849 @opt[key] = nil
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2850 else
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2851 @opt[key] = value
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2852 end
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2853 print "#{key} set to #{value}\n" if $DEBUG
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2854 end
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2855 }
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2856 rescue
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2857 STDERR.print "Configuration file %s not readable\n", cf
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2858 end
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2859 end
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2860
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2861 def parsedate(string)
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2862 if %r,^(\d\d\d\d+)/(\d+)/(\d+)/(\d+)/([^/]+)$, =~ string
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2863 sprintf "%04d/%02d/%02d/%04d/%s", $1.to_i, $2.to_i, $3.to_i, $4.to_i,
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2864 grepgroup($5)
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2865 elsif %r,^(\d\d\d\d+)/(\d+)/(\d+)/(\d+), =~ string
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2866 sprintf "%04d/%02d/%02d/%04d", $1.to_i, $2.to_i, $3.to_i, $4.to_i
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2867 elsif %r,^(\d\d\d\d+)/(\d+)/(\d+), =~ string
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2868 sprintf "%04d/%02d/%02d", $1.to_i, $2.to_i, $3.to_i
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2869 elsif %r,^(\d\d\d\d+)/(\d+), =~ string
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2870 sprintf "%04d/%02d", $1.to_i, $2.to_i
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2871 elsif %r,^(\d\d\d\d+)/(\d+), =~ string
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2872 sprintf "%04d", $1.to_i
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2873 end
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2874 end
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2875
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2876 def getarg()
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2877 argument = {}
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2878
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2879 while /^-/ =~ ARGV[0]
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2880 case ARGV[0]
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2881 when '-f'
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2882 conf = ARGV[1]
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2883 ARGV.shift
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2884 when "-d"
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2885 $DEBUG = true
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2886 when "-install"
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2887 when "-addsched"
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2888 @job = "addsched"
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2889 when "-today"
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2890 @job = "today"
2
1110baebe9a9 RCS-revision 1.3
HIROSE Yuuji <yuuji@gentei.org>
parents: 1
diff changeset
2891 when "-today_p"
1110baebe9a9 RCS-revision 1.3
HIROSE Yuuji <yuuji@gentei.org>
parents: 1
diff changeset
2892 argument['displaymode'] = 'personal'
1110baebe9a9 RCS-revision 1.3
HIROSE Yuuji <yuuji@gentei.org>
parents: 1
diff changeset
2893 @job = "today"
1110baebe9a9 RCS-revision 1.3
HIROSE Yuuji <yuuji@gentei.org>
parents: 1
diff changeset
2894 when "-today_n"
1110baebe9a9 RCS-revision 1.3
HIROSE Yuuji <yuuji@gentei.org>
parents: 1
diff changeset
2895 argument['displaymode'] = 'normal'
1110baebe9a9 RCS-revision 1.3
HIROSE Yuuji <yuuji@gentei.org>
parents: 1
diff changeset
2896 @job = "today"
0
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2897 when "-remove"
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2898 ARGV.shift
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2899 @job = 'remove "'+parsedate(ARGV[0])+'"'
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2900 when "-modify"
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2901 ARGV.shift
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2902 @job = 'modify "'+parsedate(ARGV[0])+'"'
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2903 when "-month"
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2904 ARGV.shift
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2905 @job = 'month "'+parsedate(ARGV[0])+'"'
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2906 when "-show"
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2907 ARGV.shift
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2908 # @job = "show '"+ARGV[0]+"'"
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2909 @job = "show '"+parsedate(ARGV[0])+"'"
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2910 when "-login"
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2911 @job = "login"
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2912 when "-userman"
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2913 @job = "userman"
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2914 when "-usermod"
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2915 @job = "usermod"
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2916 when "-groupinout"
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2917 @job = "groupinout"
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2918 when "-groupsubmit"
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2919 @job = "groupsubmit"
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2920 when "-groupman"
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2921 @job = "groupman"
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2922 when "-groupmod"
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2923 @job = "groupmod"
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2924 when "-notify"
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2925 @job = 'notify' # + exit
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2926 when "-newgroup"
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2927 @job = 'newgroup'
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2928 when "-admgroup"
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2929 ARGV.shift
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2930 gr = safecopy(grepgroup(ARGV[0]))
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2931 ##gr.untaint
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2932 @job = 'admgroup "'+gr+'"'
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2933 when "-admgroupsub"
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2934 @job = 'admgroupsub'
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2935 when "-newgroupsub"
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2936 @job = 'newgroupsub'
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2937 when "-delusersub"
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2938 ARGV.shift
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2939 usr = users().grep(ARGV[0])[0]
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2940 @job = 'delusersub "'+usr+'"'
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2941 when "-delgroupsub"
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2942 ARGV.shift
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2943 gr = grepgroup(ARGV[0])
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2944 @job = 'delgroupsub "'+gr+'"'
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2945 when /-(setpasswd|deluser|adduser)$/
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2946 ARGV.shift
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2947 @job = $1+ " '#{ARGV[0]}'" # + exit
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2948 when ""
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2949 end
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2950 ARGV.shift
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2951 end
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2952
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2953 readconf(@conf)
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2954
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2955 query = ''
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2956 method = ENV["REQUEST_METHOD"]
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2957 if /POST/i =~ method then
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2958 length = ENV["CONTENT_LENGTH"].to_i
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2959 query = STDIN.read(length)
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2960 elsif /GET/i =~ method then
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2961 query = ENV["QUERY_STRING"]
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2962 else # executed from command line
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2963 query = ARGV.join("&")
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2964 end
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2965
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2966 for unit in query.split(/\&/)
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2967 if /^([a-z][-_0-9@%a-z.]*)=(.*)/i =~ unit
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2968 key, value = $1, $2
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2969 #value.gsub!(/%(..)/){[$1.hex].pack("c")} # これでURLデコードが一発
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2970 decode!(value)
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2971 decode!(key)
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2972 value = Kconv::toeuc(value) # EUCに変換
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2973 printf "[%s] = %s\n", key, value if $DEBUG
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2974 argument[key] = value
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2975 end
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2976 end
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2977 argument
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2978 end
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2979 def getcookie()
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2980 cookie = {}
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2981 if /value=(.*)/ =~ ENV['HTTP_COOKIE']
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2982 # value=$1.gsub!(/%(..)/){[$1.hex].pack("c")}
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2983 value=decode!($1)
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2984 for line in value.split("&")
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2985 if /(\w+)=(.*)/ =~ line
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2986 key, value = $1, $2
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2987 #value.gsub!(/%(..)/){[$1.hex].pack("c")} # これでURLデコードが一発
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2988 decode!(value)
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2989 value = Kconv::toeuc(value) # EUCに変換
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2990 printf "cookie[%s] = %s\n", key, value if $DEBUG
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2991 cookie[key] = value
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2992 end
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2993 end
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2994 end
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2995 cookie
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2996 end
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2997 end
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2998
3
354e09bb8ce1 RCS-revision 1.4
HIROSE Yuuji <yuuji@gentei.org>
parents: 2
diff changeset
2999 $KCODE='e'
0
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
3000 After5.new.doit
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
3001
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
3002 if __FILE__ == $0
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
3003 end
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
3004
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
3005
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
3006 # Local variables:
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
3007 # buffer-file-coding-system: euc-jp
8f811f47ac60 RCS-revision 1.1
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
3008 # End:

yatex.org