Changeset 11130
- Timestamp:
- 05/05/08 02:20:34 (5 years ago)
- Files:
-
- 1 modified
Legend:
- Unmodified
- Added
- Removed
-
lang/perl/tiarra/trunk/module/CTCP/DCC/RewriteAddress.pm
r11121 r11130 14 14 use Tools::HTTPClient; 15 15 16 17 sub new { 18 my $this = shift->SUPER::new(@_); 19 20 $this->{permit_types} = [map uc, split /\s+/, 21 ($this->config->type || 'CHAT SEND')]; 22 $this->{resolvers} = [map lc, split /\s+/, $this->config->resolver]; 23 24 return $this; 25 } 26 16 27 sub message_arrived { 17 28 my ($this,$msg,$sender) = @_; … … 21 32 !defined $msg->nick) { 22 33 23 my @permit_types = split /\s+/, (uc($this->config->type));24 34 my $text = $msg->param(1); 25 35 foreach my $ctcp (CTCP->extract_from_text("$text")) { 26 36 if ($ctcp =~ m|^DCC (\S*) (.*)$|) { 27 37 my ($type, $params) = (uc($1), $2); 28 next unless !@permit_types or grep { $type eq $_ } @permit_types;38 next unless grep { $type eq $_ } @{$this->{permit_types}}; 29 39 my $result = $this->rewrite_dcc( 30 40 $msg->clone, $type, $params, $sender); … … 210 220 sub rewrite_dcc { 211 221 my ($this, $msg, $type, $param, $sender) = @_; 212 if ($param !~ /^(\S *) (\S*) (\S*)(.*)$/) {222 if ($param !~ /^(\S+) ([\d.]+) (\S+)(.*)$/) { 213 223 return undef; 214 224 } 215 225 216 226 my ($arg, $addr, $port, $trail) = ($1, $2, $3, $4); 227 217 228 $addr = intaddr_to_octet($addr); 218 229 my $send_dcc = sub { … … 223 234 1; 224 235 }; 225 my @resolvers = split /\s+/, $this->config->resolver;226 236 227 237 my $closure = sub { … … 233 243 }; 234 244 $this->get_dcc_address_port( 235 $msg, $sender, $addr, $port, $closure, @ resolvers);245 $msg, $sender, $addr, $port, $closure, @{$this->{resolvers}}); 236 246 237 247 } … … 250 260 # 別のクライアントには送信されません。 251 261 252 # 変換する DCC タイプ。 省略すると全てのDCCを処理する。253 type: send chat262 # 変換する DCC タイプ。 [デフォルト値: CHAT SEND] 263 type: CHAT SEND 254 264 255 265 # 変換用アドレスの取得方法を選択する。デフォルト値はありません。 256 resolver: client-socket server-socket 257 266 # 以下の取得方法(server-socket client-socket dns http)から 267 # 必要なもの(複数可)を指定してください。 268 resolver: client-socket server-socket dns http 269 270 # 取得方法と設定 271 # なにも設定がないときはブロック自体を省略することもできます。 258 272 server-socket { 259 273 # サーバソケットのローカルアドレスを取ります。
![(please configure the [header_logo] section in trac.ini)](/share/chrome/site/your_project_logo.png)