ctcp/dcc/gate.plm
- ここんとこ PORT範囲値に変更するとNAT対応になる
$listenno = &'listen( PORT, MAXCONN );
module\ctcp\dcc\gate.plm(328): $lno = &'listen(0, 1) || return @params; module\ctcp\dcc\gate.plm(397): $lno = &'listen(0, 1) || return @params; module\ctcp\dcc\gate.plm(412): $lno = &'listen(0, 1) || return @params;
$lno = &listen_hoge() || return @params;
sub listen_hoge { $swap = &'property($userno, 'swap')); ($addr, $list) = split(/\:/, $swap); @port = split(/\,/, $list || ''); return &'listen($port[rand(@port)] || 0, 1 ); }
swapの書式変更となるため
sub get_plumaddr { local($clientno) = @_; local($addr, $sno ); $sno = $'server[$clientno]; $addr = &'property($userno, 'swap'); ($addr, $list) = split(/\:/, $swap); return unpack('N', gethostbyname($addr)) if($addr); return (&'sockname($sno))[1]; }
ctcp.dcc.gate.swap: nanoha.com:4096,4097,4098,4099
-
- module/ctcp/dcc/nat.plm
sub parse_ip { local($ip) = @_; local(@addr); if ($ip =~ /^\d+$/) { return $ip; } elsif ($ip =~ /^[\d\.]+$/) { @addr = split(/\./, $ip); return unpack('N', pack('C4', @addr, 0, 0, 0)); } else { return unpack('N', (gethostbyname($ip))[4] || "\0\0\0\0"); } return 0 unless $ip; }
を流用して
sub get_plumaddr { local($clientno) = @_; local($addr, $sno ); $sno = $'server[$clientno]; $addr = &'property($userno, 'swap'); ($addr, $list) = split(/\:/, $swap); return &parse_ip($addr) if($addr); return (&'sockname($sno))[1]; }
のほうがスマート
-
- GPL2なのか