home *** CD-ROM | disk | FTP | other *** search
/ ftp.madoka.org / 2014.12.ftp.madoka.org.tar / ftp.madoka.org / pub / plum / 2.x / plum2_32_1.lzh / module / channel / join / kick.plm < prev   
Text File  |  1999-02-20  |  3KB  |  117 lines

  1. <!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN"><!-- $_ if 0; # -*- perl -*-
  2. # $Id: kick.plm,v 2.15 1999/01/28 12:18:51 hasegawa Exp $
  3. # copyright (c)1997-1999 Yoshinori Hasegawa <hasegawa@madoka.org>
  4.  
  5. package channel_join_kick;
  6.  
  7. $_ = 'channel_join_kick';
  8.  
  9. sub server_close {
  10.   local($serverno) = @_;
  11.   local($no, $chan);
  12.   foreach $key (keys(%keyword)) {
  13.     ($no, $chan) = split(/$;/, $key, 2);
  14.     next unless $no == $serverno;
  15.     delete $keyword{$key};
  16.   }
  17. }
  18.  
  19. sub sp_join {
  20.   local($serverno, $prefix, $cmd, @params) = @_;
  21.   local(@chan, @key, $i);
  22.   if ($params[1]) {
  23.     if (!&'exist($'channellist{$serverno}, $params[0])) {
  24.       @chan = split(/\,/, $params[0]);
  25.       @key = split(/\,/, $params[1]);
  26.       for ($i = 0; $i < @chan; $i++) {
  27.         $keyword{$serverno, $chan[$i]} = $key[$i];
  28.       }
  29.     }
  30.   }
  31.   return ($prefix, $cmd, @params);
  32. }            
  33.  
  34. sub ss_kick {
  35.   local($serverno, $prefix, $cmd, @params) = @_;
  36.   local($userno, $regex);
  37.   $userno = $'userno[$serverno];
  38.   if ($params[1] eq $'nick[$serverno]) {
  39.     if (&check_mask($userno, $prefix, $params[0])) {
  40.       &'s_print($serverno, '', 'JOIN', $params[0], $'channelmode{$serverno, $params[0], 'k'} || $keyword{$serverno, $params[0]} || '');
  41.     }
  42.   }
  43.   return ($prefix, $cmd, @params);
  44. }
  45.  
  46. sub check_mask {
  47.   local($userno, $prefix, $chan) = @_;
  48.   local($user, $chlist, $list);
  49.   foreach $mask (&'property($userno, 'mask')) {
  50.     ($user, $chlist) = split(/\s+/, $mask);
  51.     $list = '';
  52.     foreach $vchan (split(/\,/, $chlist || '')) {
  53.       $list = &'add($list, &'real($vchan));
  54.     }
  55.     if (&'channel($chan)) {
  56.       next unless (!$list || &'exist($list, $chan));
  57.     } else {
  58.       next unless (!$list || &'exist($list, '*'));
  59.     }
  60.     if ($user =~ /^\-/) {
  61.       $regex = &'regex(substr($user, 1));
  62.       return 0 if $prefix =~ /$regex/i;
  63.     }
  64.     if ($user =~ /^\+/) {
  65.       $regex = &'regex(substr($user, 1));
  66.     } else {
  67.       $regex = &'regex($user);
  68.     }
  69.     return 1 if $prefix =~ /$regex/i;
  70.   }
  71.   return 0;
  72. }
  73.  
  74. __END__
  75. --><HTML><HEAD>
  76. <META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=ISO-2022-JP">
  77. <LINK REV="made" HREF="mailto:hasegawa@madoka.org">
  78. <TITLE>channel/join/kick.plm</TITLE></HEAD><BODY>
  79.  
  80. $B%*%s%i%$%s%I%-%e%a%s%H(B
  81.  
  82.  
  83. <HR><H3>$BL>A0(B</H3>
  84.  
  85. channel/join/kick.plm - $B%A%c%s%M%k$+$i%-%C%/$5$l$F$bF~$jD>$9(B
  86.  
  87.  
  88. <HR><H3>$B@bL@(B</H3>
  89.  
  90. $B%A%c%s%M%k$+$i%-%C%/$5$l$?$H$-$K!":F$S$=$N%A%c%s%M%k$KF~$j$^$9!#(B
  91.  
  92.  
  93. <HR><H3>$B%W%m%Q%F%#(B</H3>
  94.  
  95. <DL>
  96. <DT>  channel.join.kick.mask* $B%f!<%6%^%9%/(B [($B%A%c%s%M%kL>(B)]
  97. </DT>
  98. <DD>    $B%-%C%/$7$??M$,$3$3$G;XDj$7$?$b$N$K%^%C%A$7$?$i!"(B
  99.         $B%-%C%/$5$l$?%A%c%s%M%k$K:F$SF~$j$^$9!#(B
  100. </DD>
  101. </DL>
  102.  
  103.  
  104. <HR><H3>$B@_DjNc(B</H3>
  105.  
  106. <PRE>
  107. + channel/join/kick.plm
  108. channel.join.kick.mask: -*!*@* #$B$^$I$+(B:*.jp
  109. channel.join.kick.mask: *!*@*
  110. </PRE>
  111.  
  112. $B!V(B#$B$^$I$+(B:*.jp$B!W$+$i%-%C%/$5$l$?$H$-$O2?$b$7$^$;$s$,!"(B
  113. $B$=$l0J30$N%A%c%s%M%k$+$i%-%C%/$5$l$?$H$-$O$=$N%A%c%s%M%k$K(B
  114. $B:F$SF~$j$^$9!#(B
  115.  
  116. </BODY></HTML>
  117.