home *** CD-ROM | disk | FTP | other *** search
/ ftp.madoka.org / 2014.12.ftp.madoka.org.tar / ftp.madoka.org / pub / plum / 2.x / plum2_28_2.lzh / module / auto / oper.plm < prev    next >
Text File  |  1998-10-15  |  6KB  |  191 lines

  1. <!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN"><!-- $_ if 0; # -*- perl -*-
  2. # $Id: oper.plm,v 2.13 1998/07/31 09:47:34 hasegawa Exp $
  3. # copyright (c)1997-1998 pupu_j <hasegawa@agusa.nuie.nagoya-u.ac.jp>
  4.  
  5. package auto_oper;
  6.  
  7. $_ = 'auto_oper';
  8.  
  9. sub ss_privmsg {
  10.   local($serverno, $prefix, $cmd, @params) = @_;
  11.   local($userno, $nick, $reply);
  12.   $userno = $'userno[$serverno];
  13.   $nick = &'prefix($prefix);
  14.   foreach $req (&'property($userno, 'request')) {
  15.     next unless $params[1] eq $req;
  16.     if (!($params[0] =~ /^[\#\&\+]/)) {
  17.       $reply = &'property($userno, 'private');
  18.       &privmsg($serverno, $nick, $reply);
  19.     } elsif (!&'exist($'nameslist{$serverno, $params[0]}, "\@$'nick[$serverno]")) {
  20.       $reply = &'property($userno, 'notoper');
  21.       &privmsg($serverno, $params[0], $reply);
  22.     } elsif (&'exist($'nameslist{$serverno, $params[0]}, "\@$nick")) {
  23.       $reply = &'property($userno, 'oper');
  24.       &privmsg($serverno, $params[0], $reply);
  25.     } elsif (&'exist($'nameslist{$serverno, $params[0]}, $nick, "\+$nick")) {
  26.       if (&checkmask($userno, $prefix, $params[0])) {
  27.         $reply = &'property($userno, 'message');
  28.         &privmsg($serverno, $params[0], $reply);
  29.         &'s_print($serverno, '', 'MODE', $params[0], '+o', $nick);
  30.       } else {
  31.         $reply = &'property($userno, 'deny');
  32.         &privmsg($serverno, $params[0], $reply);
  33.       }
  34.     } else {
  35.       $reply = &'property($userno, 'out');
  36.       &privmsg($serverno, $nick, $reply);
  37.     }
  38.     last;
  39.   }
  40.   return ($prefix, $cmd, @params);
  41. }
  42.  
  43. sub privmsg {
  44.   local($serverno, $to, $msg) = @_;
  45.   if ($msg) {
  46.     &'s_print($serverno, '', 'PRIVMSG', $to, $msg);
  47.     foreach $cno (&'array($'clientlist)) {
  48.       next unless $'avail[$cno];
  49.       next unless $'server[$cno] == $serverno;
  50.       &'c_print($cno, &'user($cno), 'PRIVMSG', $to, $msg);
  51.     }
  52.   }
  53. }
  54.  
  55. sub checkmask {
  56.   local($userno, $prefix, $chan) = @_;
  57.   local($user, $chlist, $list);
  58.   foreach $mask (&'property($userno, 'mask')) {
  59.     ($user, $chlist) = split(/\s+/, $mask);
  60.     $list = '';
  61.     foreach $vchan (split(/\,/, $chlist || '')) {
  62.       $list = &'add($list, &'real($vchan));
  63.     }
  64.     if ($chan =~ /^[\#\&\+]/) {
  65.       next unless (!$list || &'exist($list, $chan));
  66.     } else {
  67.       next unless (!$list || &'exist($list, '*'));
  68.     }
  69.     if ($user =~ /^\-/) {
  70.       $regex = &'regex(substr($user, 1));
  71.       return 0 if $prefix =~ /$regex/i;
  72.     }
  73.     if ($user =~ /^\+/) {
  74.       $regex = &'regex(substr($user, 1));
  75.     } else {
  76.       $regex = &'regex($user);
  77.     }
  78.     return 1 if $prefix =~ /$regex/i;
  79.   }
  80.   return 0;
  81. }
  82.  
  83. __END__
  84. --><HTML><HEAD>
  85. <META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=ISO-2022-JP">
  86. <LINK REV="made" HREF="mailto:hasegawa@agusa.nuie.nagoya-u.ac.jp">
  87. <TITLE>auto/oper.plm</TITLE></HEAD><BODY>
  88.  
  89. $B%*%s%i%$%s%I%-%e%a%s%H(B
  90.  
  91.  
  92. <HR><H3>$BL>A0(B</H3>
  93.  
  94. auto/oper.plm - $BFCDj$NH/8@$r$7$??M$r%A%c%s%M%k%*%Z%l!<%?$K$9$k(B
  95.  
  96.  
  97. <HR><H3>$B@bL@(B</H3>
  98.  
  99. $BFCDj$N%a%C%;!<%8$rH/8@$7$??M$r%A%c%s%M%k%*%Z%l!<%?$K$7$^$9!#(B
  100.  
  101.  
  102. <HR><H3>$B%W%m%Q%F%#(B</H3>
  103.  
  104. <DL>
  105. <DT>  auto.oper.request* $B%a%C%;!<%8(B
  106. </DT>
  107. <DD>    $B%A%c%s%M%k%*%Z%l!<%?$rMW5a$9$k%a%C%;!<%8$r;XDj$7$^$9!#(B
  108.         $B$3$3$G;XDj$7$?%a%C%;!<%8$rH/8@$7$??M$r(B
  109.         $B%A%c%s%M%k%*%Z%l!<%?$K$7$^$9!#(B
  110. </DD>
  111. <DT>  auto.oper.mask* $B%f!<%6%^%9%/(B
  112. </DT>
  113. <DD>    $B%A%c%s%M%k%*%Z%l!<%?$rMW5a$7$??M$,$3$3$G;XDj$7$?$b$N$K%^%C%A$7$?$i!"(B
  114.         $B$=$N?M$r%A%c%s%M%k%*%Z%l!<%?$K$7$^$9!#(B
  115. </DD>
  116. <DT>  auto.oper.message $B%a%C%;!<%8(B
  117. </DT>
  118. <DD>    $B%A%c%s%M%k%*%Z%l!<%?$rMW5a$7$??M$r<B:]$K%A%c%s%M%k%*%Z%l!<%?(B
  119.         $B$K$9$k$H$-!"$3$3$G;XDj$7$?%a%C%;!<%8$rH/8@$7$^$9!#(B
  120. </DD>
  121. <DT>  auto.oper.deny $B%a%C%;!<%8(B
  122. </DT>
  123. <DD>    $B%A%c%s%M%k%*%Z%l!<%?$rMW5a$7$??M$,(Bauto.oper.mask$B$G;XDj$7$?$b$N$K(B
  124.         $B%^%C%A$7$J$+$C$?$i!"$3$3$G;XDj$7$?%a%C%;!<%8$rH/8@$7$^$9!#(B
  125. </DD>
  126. <DT>  auto.oper.oper $B%a%C%;!<%8(B
  127. </DT>
  128. <DD>    $B%A%c%s%M%k%*%Z%l!<%?$rMW5a$7$??M$,$9$G$K%A%c%s%M%k%*%Z%l!<%?(B
  129.         $B$@$C$?>l9g!"$3$3$G;XDj$7$?%a%C%;!<%8$rH/8@$7$^$9!#(B
  130. </DD>
  131. <DT>  auto.oper.notoper $B%a%C%;!<%8(B
  132. </DT>
  133. <DD>    $B<+J,$,%A%c%s%M%k%*%Z%l!<%?$G$J$$$?$a$K(B
  134.         $BB>$N?M$r%A%c%s%M%k%*%Z%l!<%?$K$G$-$J$$$H$-!"(B
  135.         $B$3$3$G;XDj$7$?%a%C%;!<%8$rH/8@$7$^$9!#(B
  136. </DD>
  137. <DT>  auto.oper.private $B%a%C%;!<%8(B
  138. </DT>
  139. <DD>    $B%A%c%s%M%k%*%Z%l!<%?$NMW5a$,%A%c%s%M%k$KBP$7$F$G$O$J$/!"(B
  140.         $B<+J,$KBP$7$F$5$l$?$H$-!"$3$3$G;XDj$7$?%a%C%;!<%8$rH/8@$7$^$9!#(B
  141. </DD>
  142. <DT>  auto.oper.out $B%a%C%;!<%8(B
  143. </DT>
  144. <DD>    $B%A%c%s%M%k%*%Z%l!<%?$NMW5a$,%A%c%s%M%k$N30$+$iH/8@$5$l$?$H$-!"(B
  145.         $B$3$3$G;XDj$7$?%a%C%;!<%8$rH/8@$7$^$9!#(B
  146. </DD>
  147. </DL>
  148.  
  149.  
  150. <HR><H3>$B@_DjNc(B</H3>
  151.  
  152. <PRE>
  153. + auto/oper.plm
  154. auto.oper.request: $B$W$i$`$J$k$H(B
  155. auto.oper.message: $B$O!A$$!y(B
  156. auto.oper.deny: $B$J$k$H$O$"$2$i$l$^$;$s$o!#(B
  157. auto.oper.oper: $B$b$&$J$k$H;}$C$F$^$9$h!#(B
  158. auto.oper.notoper: $B$4$a$s$J$5$$!#$J$k$H;}$C$F$J$$$s$G$9!#(B
  159. auto.oper.private: $B$J$k$H$,$[$7$$%A%c%s%M%k$G8@$C$F$/$@$5$$$M!#(B
  160. auto.oper.out: $B$($C!"$I$3$K$$$k$s$G$9$+(B?
  161. auto.oper.mask: +*!*@*
  162. </PRE>
  163.  
  164. $B!V$W$i$`$J$k$H!W$HH/8@$7$??M$r%A%c%s%M%k%*%Z%l!<%?$K$7$^$9!#(B
  165. $B$9$Y$F$N%f!<%6$r%A%c%s%M%k%*%Z%l!<%?$K$9$k$3$H$r5v2D$7$F$$$k$N$G!"(B
  166. $BC/$,$I$N%A%c%s%M%k$GMW5a$7$F$-$F$b!"$=$N?M$r%A%c%s%M%k%*%Z%l!<%?$K$7$^$9!#(B
  167. $B2?$i$+$NM}M3$G%A%c%s%M%k%*%Z%l!<%?$K$G$-$J$$$H$-$O!"(B
  168. $B$=$l$>$l$NM}M3$K1~$8$?%a%C%;!<%8$rH/8@$7$^$9!#(B
  169.  
  170. <PRE>
  171. + auto/oper.plm
  172. auto.oper.request: $B$J$k$H(B
  173. auto.oper.request: $B$J$k$H$/$l(B
  174. auto.oper.request: $B$J$k$H$/$@$5$$(B
  175. auto.oper.request: $B$J$k$H$A$g$&$@$$(B
  176. auto.oper.mask: -*!*@*.com
  177. auto.oper.mask: +*!*@* #$B$^$I$+(B:*.jp
  178. auto.oper.mask: +*!*@*.jp
  179. </PRE>
  180.  
  181. $B%A%c%s%M%k%*%Z%l!<%?$NMW5a$,(B4$B<oN`$"$kNc$G$9!#(B
  182. $B$3$N$&$A$N$I$l$+$rH/8@$7$??M$r%A%c%s%M%k%*%Z%l!<%?$K$7$^$9!#(B
  183. $B$^$?!"%A%c%s%M%k%*%Z%l!<%?$rMW5a$7$F$-$?%f!<%6$r3NG'$7!"(B
  184. $B!V(B*!*@*.com$B!W$K%^%C%A$9$k?M$O%*%Z%l!<%?$K$O$7$^$;$s!#(B
  185. $B$^$?!"!V(B#$B$^$I$+(B:*.jp$B!W$G$O$=$l0J30$N$9$Y$F$N?M$r%A%c%s%M%k%*%Z%l!<%?$K$7$^$9!#(B
  186. $B$=$NB>$N%A%c%s%M%k$G$O!V(B*!*@*.jp$B!W$K%^%C%A$9$k?M$@$1$r(B
  187. $B%A%c%s%M%k%*%Z%l!<%?$K$7$^$9!#(B
  188. $B2?$i$+$NM}M3$G%A%c%s%M%k%*%Z%l!<%?$K$G$-$J$$$H$7$F$b2?$bH/8@$7$^$;$s!#(B
  189.  
  190. </BODY></HTML>
  191.