changeset 42:07ef43ac4f15 draft

Some ruby-1.9 workarounds and enhancement to logging and messaging.
author HIROSE Yuuji <yuuji@gentei.org>
date Tue, 08 May 2012 00:04:52 +0900
parents c4e517ccfd99
children 7874392b872d
files after5.rb
diffstat 1 files changed, 54 insertions(+), 24 deletions(-) [+]
line wrap: on
line diff
--- a/after5.rb	Mon May 07 01:19:32 2012 +0900
+++ b/after5.rb	Tue May 08 00:04:52 2012 +0900
@@ -4,7 +4,7 @@
 # Associative Scheduling Table - after5
 # (C)2003, 2004, 2006, 2008, 2012 by HIROSE Yuuji [yuuji<at>gentei.org]
 # $Id: after5.rb,v 1.19 2012/04/01 11:52:25 yuuji Exp yuuji $
-# Last modified Mon May  7 01:18:59 2012 on firestorm
+# Last modified Mon May  7 23:58:40 2012 on firestorm
 # See http://www.gentei.org/~yuuji/software/after5/
 # このスクリプトはEUCで保存してください。
 $hgid = <<_HGID_.split[1..-2].join(" ")
@@ -255,7 +255,7 @@
     }.join('')
   end
   def users()
-    @pdb.keys
+    @pdb.keys.collect{|u| u.toeuc} # toeuc is for 1.9 :(
   end
   private :newpasswd
   def setnewpasswd(user, length=8)
@@ -513,7 +513,7 @@
 	p.untaint
 	system "/bin/rm -rf \"#{p}\""
       end
-      cleanup_files(list[0])
+      cleanup_files(list)
     end
   end
   def account_exists(instance)
@@ -614,6 +614,7 @@
     #   those paths which contains `../'
     # for the sake of security reason
     return false if %r,\.\./|^/, =~ path
+    path = path.untaint
     p = 0
     i=0
     while p=path.index("/", p)
@@ -1233,6 +1234,19 @@
 	'newgroup'	=> ['新規グループ作成', 'Create new group'],
 	'adminop'	=> ['管理<br>操作', "Administrative<br>operation"],
 	'sendall'	=> ['一斉送信', "write to members"],
+        'sendall_err'	=> ["%s ファイルで mailprefix と maildomain を定義しとかないと送れまへん。
+例: mailprefix=yuuji-after5
+    maildomain=gentei.org
+
+さらに、.qmail-$mailprefix-default も以下のように用意しておこね。
+| ./#{@myname} -list",
+"You should define `mailprefix' and `maildomain' in %s file before
+sending message to all.
+(ex.) mailprefix=yuuji-after5
+      maildomain=gentei.org
+
+And then prepare .qmail-$mailprefix-default file as below.
+| ./#{@myname} -list"],
         'sendall_head'	=> ['「%s」宛のメイル送信', "Send message to `%s'"],
         'sendall_note'	=> ['メンバーへの連絡だけでなく、グループ非加入者がこれから加入する旨の通知などにも有用。',
                             "Send this message to all of group."],
@@ -1501,6 +1515,7 @@
     open(@opt["logfile"], "a+") {|lp|
       lp.print Time.now.to_s + " " + msg
     }
+    msg
   end
 
   def sendnotify(whom, subj, body)
@@ -1555,7 +1570,7 @@
         end
 	exit 0;
       end
-      putLog("Sent '#{subject}' to #{to}\n")
+      putLog("Sent '#{subject.toeuc}' to #{to}\n")
       return true
     rescue
       putLog("FAILED! - Sent '#{subject}' to #{to}\n")
@@ -2515,6 +2530,7 @@
   end
   # ML functions
   def tagify_subj(body, tag)
+    # This method should be generic for other headers than `Subject'?
     hold = []
     ret = []
     skip = false
@@ -2533,8 +2549,8 @@
       else
         if skip then
           sj = hold.join.toeuc.sub("Subject: ", "").gsub(tag, "").strip
-          sj = sj.sub(/^(re: *)+/i, "Re: ").gsub("\n", "").squeeze
-          ret << "Subject: "+NKF.nkf('-jM', tag+" "+sj)+"\n"
+          sj = sj.sub(/^(re: *)+/i, "Re: ").gsub("\n", "")
+          ret << "Subject: "+NKF.nkf('-jM', tag+" "+sj).strip+"\n"
         else
           ret += hold
         end
@@ -2551,10 +2567,13 @@
     viamail = ENV['LOCAL'] && ENV['DEFAULT'] # called via mail
     from = nil
     unless @opt['mailprefix'] && @opt['maildomain']
-      STDERR.printf("Set mailprefix and maildomain in %s\n", @opt['conf'])
-      STDERR.print "(ex.)  mailprefix=yuuji-after5\n"
-      STDERR.print "       maildomain=gentei.org\n"
-      exit 0
+      if viamail
+        STDERR.print msg('sendall_err') % [@opt['conf']]
+        exit 0
+      else
+        @O.print @H.elementln("pre"){msg('sendall_err') % [@opt['conf']]}
+        return true
+      end
     end
     if viamail then
       prohibitviahttp()
@@ -2605,6 +2624,11 @@
   def listdraft(name)
     return nil unless checkauth
     return nil unless name
+    unless @opt['mailprefix'] && @opt['maildomain']
+      @O.print @H.elementln("pre"){msg('sendall_err') % [@opt['conf']]}
+      return true
+    end
+    
     user=@params['user']
     nickname = @sc.nickname(user)
     @O.print @H.elementln("h1") {
@@ -3101,7 +3125,9 @@
     @O.print @H.elementln("h1"){
       msg('group')+" #{group} "+msg('deletion')
     }
-    @O.print @H.p(@sc.destroygroup(group) ? msg("done") : msg("failure"))
+    resmsg = @sc.destroygroup(group) ? msg("done") : msg("failure")
+    @O.print @H.p(resmsg)
+    putLog("Delete group '#{group}' #{resmsg}\n")
 
     @O.print footer()
   end
@@ -3139,7 +3165,9 @@
     @O.print @H.elementln("h1"){
       msg('user')+" #{user} "+msg('deletion')
     }
-    @O.print @H.p(deleteuser(user) ? msg("done") : msg("failure"))
+    resmsg = deleteuser(user) ? msg("done") : msg("failure")
+    @O.print @H.p(resmsg)
+    putLog("Delete user '#{user}' #{resmsg}\n")
 
     @O.print @H.p(@H.a(@myname, msg('login')))
   end
@@ -3188,9 +3216,9 @@
 	    somethingdone = true
 	    @sc.addgroup(group, [u], !joinp, kind[0])
 	    @O.print @H.elementln("p"){
-	      sprintf "%s [%s](%s) %s %s", msg('user'), u,
-		msg(kind[1]),
-		joinp ?  msg('addedtogroup'): msg('removedfromgp'), group
+	      putLog(sprintf "%s [%s](%s) %s %s", msg('user'), u,
+                     msg(kind[1]),
+                     joinp ?  msg('addedtogroup'): msg('removedfromgp'), group)
 	    }
 	  end
 	end
@@ -3208,9 +3236,12 @@
 	  somethingdone = true
 	  @sc.addgroup(group, [g], !joinp)
 	  @O.print @H.elementln("p"){
-	    sprintf "%s [%s] %s %s", msg('group'), g,
-	      joinp ?  msg('addedtogroup'): msg('removedfromgp'), group
-	  }
+	    putLog(sprintf("%s [%s] %s %s",
+                           msg('group'), g,
+                           joinp ? 
+                           msg('addedtogroup')
+                           : msg('removedfromgp'), group))
+          }
 	end
       end
     end # groups
@@ -3221,9 +3252,7 @@
     link2home
   end
   def newgroupsub()
-    if !checkauth
-      nil
-    end
+    return nil unless checkauth
     user = @params['user']
     newgroup = @params['group']
     newgname = @params['gname']
@@ -3238,7 +3267,8 @@
       @O.print groupnamesString()
       return nil
     end
-    @sc.creategroup(newgroup, newgname, [user])
+    @sc.creategroup(newgroup, newgname, [user]) &&
+      putLog("New group '#{newgroup}'(#{newgname}) created\n")
     admgroup(newgroup)
   end
 
@@ -3553,7 +3583,7 @@
 	@job = 'list'	# + exit
       when "-newgroup"
 	@job = 'newgroup'
-      when /^-(admgroup|listdraft)/
+      when /^-(admgroup|listdraft)$/
 	ARGV.shift
 	gr = safecopy(grepgroup(ARGV[0]))
 	##gr.untaint
@@ -3568,7 +3598,7 @@
 	@job = 'delusersub "'+usr+'"'
       when "-delgroupsub"
 	ARGV.shift
-	gr = grepgroup(ARGV[0])
+	gr = safecopy(grepgroup(ARGV[0]))
 	@job = 'delgroupsub "'+gr+'"'
       when /-(setpasswd|deluser|adduser)$/
 	ARGV.shift

yatex.org