gate.plm.diff続けてみた
gate.plm.diff (gate.plm,v 2.39 - gate.plm,v 2.39.1)
4d3 < # 2.39.1 05.10.25 Magical.H Adding Resume 11c10 < local( @lname, @lhost, @lport ); --- > 215c214 < @msg = &client_gate($clientno, $user, $params[0], split(/\s+/, $params[1])); --- > @msg = &client_gate($clientno, $user, split(/\s+/, $params[1])); 218,219d216 < # DCCしたことを全クライアントへ案内する < &infomation("*** DCC Gate ($params[1]) to $params[0]"); 276,277c273 < # ACCEPTによるポート変更に対応 < if ($sno = &'connect($lhost[$listenno], $lport[$listenno])) { --- > if ($sno = &'connect($params[2], $params[3])) { 294,295c290 < # delete 'SEND' < if ("\L$params[0]\E" eq 'chat') { --- > if ("\L$params[0]\E" eq 'send' || "\L$params[0]\E" eq 'chat') { 305,314c300 < # test < return @params; < } < } elsif ("\L$params[0]\E" eq 'resume') { < foreach $lno (&'array($dcclistenlist)) { < $port = (&'sockname($lno))[0]; < next unless $port == $params[2]; < &infomation("*** DCC Gate \L$params[0]\E WAN $params[2] <-> LAN $lport[$lno] $lname[$lno]"); < $params[2] = $lport[$lno]; < return @params; --- > &'c_print($cno, $prefix, 'PRIVMSG', $'nick[$cno], "\cA" . join(' ', 'DCC', @params) . "\cA"); 315a302 > return (); 333,334c320,321 < local($clientno, $prefix, $target, @params) = @_; < local($lno, $host, $port, $sno, $cno ); --- > local($clientno, $prefix, @params) = @_; > local($lno, $host, $port, $sno); 336,338c323 < < if ("\L$params[0]\E" eq 'chat') { < --- > if ("\L$params[0]\E" eq 'send' || "\L$params[0]\E" eq 'chat') { 342d326 < $lport[$lno] = $params[3]; 344c328 < $params[2] = &get_plumaddr($clientno); --- > $params[2] = (&'sockname($sno))[1]; 346,377d329 < } elsif ("\L$params[0]\E" eq 'send') { < $lno = &'listen(0, 1) || return @params; < $userno[$lno] = $'userno[$clientno]; < $request[$lno] = &'list(@params); < < # ListenNoとClientSocketを関連づける < $lname[$lno] = $params[1]; < $lhost[$lno] = $params[2]; < $lport[$lno] = $params[3]; < < $lhostname[$lno] = (&'peername($clientno))[2]; < < $dcclistenlist = &'add($dcclistenlist, $lno); < < $params[2] = &get_plumaddr($clientno); < $params[3] = (&'sockname($lno))[0]; < < &infomation("*** DCC Gate \L$params[0]\E $params[1] -> $target"); < < } elsif ("\L$params[0]\E" eq 'accept') { < local( $ollno , $nwlno ); < < # 認知済クライアントリストよりポートが同一の物であれば、ACCEPT応答をバイパス < foreach $ollno (&'array($dcclistenlist)) { < next unless $lport[$ollno] == $params[2]; < $params[2] = (&'sockname($ollno))[0]; < &infomation("*** DCC Gate \L$params[0]\E (@params) -> $target"); < return @params; < } < return (); # 認知済リストより一致する物が無ければキャンセル < < 396,416d347 < < sub infomation { < local($message) = @_; < local($cno); < < foreach $cno (&'array($'clientlist)) { < next unless $'avail[$cno]; < &'c_print($cno, '', 'NOTICE', $'nick[$cno], $message ); < } < } < < sub get_plumaddr { < local($clientno) = @_; < local($addr, $sno ); < $sno = $'server[$clientno]; < < $addr = &'property($userno, 'swap'); < return unpack('N', gethostbyname($addr)) if($addr); < < return (&'sockname($sno))[1]; < } 481,485d411 < <DT> ctcp.dcc.gate.swap グローバルアドレス < </DT> < <DD> 静的NATでプライベートアドレスのサーバの場合、 < swapに記述されたグローバルアドレスに置換することができます。 < </DD> 497d422 < ctcp.dcc.gate.swap: nanoha.com 507c432 < 送りもとアドレスはnanoha.com --- >