亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? base.pm

?? 雷傲極酷超級論壇LeoBBSX 040408 簡體正式版
?? PM
?? 第 1 頁 / 共 2 頁
字號:
					print ';; answer from ',
					      $ready->peerhost, ':',
					      $ready->peerport, ' : ',
					      length($buf), " bytes\n"
						if $self->{'debug'};
				
					my ($ans, $err) = Net::DNS::Packet->new(\$buf, $self->{'debug'});
				
					if (defined $ans) {
						next unless $ans->header->qr;
						next unless $ans->header->id == $packet->header->id;
						$self->errorstring($ans->header->rcode);
						$ans->answerfrom($self->answerfrom);
						$ans->answersize($self->answersize);
					} elsif (defined $err) {
						$self->errorstring($err);
					}
					
					return $ans;
				} else {
					$self->errorstring($!);
					
					print ';; recv ERROR(',
					      $ready->peerhost, ':',
					      $ready->peerport, '): ',
					      $self->errorstring, "\n"
						if $self->{'debug'};

					@ns = grep { $_->[0] ne $ready->peerhost } @ns;
					
					return unless @ns;
				}
			}
		}
	}

	if ($sel->handles) {
		$self->errorstring('query timed out');
	}
	else {
		$self->errorstring('all nameservers failed');
	}
	return;
}


sub bgsend {
	my $self = shift;

	unless (@{$self->{'nameservers'}}) {
		$self->errorstring('no nameservers');
		return;
	}

	$self->_reset_errorstring;

	my $packet = $self->make_query_packet(@_);
	my $packet_data = $packet->data;

	my $srcaddr = $self->{'srcaddr'};
	my $srcport = $self->{'srcport'};

	my $dstaddr = $self->{'nameservers'}->[0];
	my $dstport = $self->{'port'};

	my $sock = IO::Socket::INET->new(
		Proto => 'udp',
		LocalAddr => $srcaddr,
		LocalPort => ($srcport || undef),
	);

	unless ($sock) {
		$self->errorstring(q|couldn't get socket|);   #'
		return;
	}
	
	my $dst_sockaddr = sockaddr_in($dstport, inet_aton($dstaddr));

	print ";; bgsend($dstaddr:$dstport)\n" if $self->{'debug'};

	unless ($sock->send($packet_data, 0, $dst_sockaddr)) {
		my $err = $!;
		print ";; send ERROR($dstaddr): $err\n" if $self->{'debug'};
		$self->errorstring($err);
		return;
	}

	return $sock;
}


sub bgread {
	my ($self, $sock) = @_;

	my $buf = '';

	my $peeraddr = $sock->recv($buf, $self->_packetsz);
	
	if ($peeraddr) {
		print ';; answer from ', $sock->peerhost, ':',
		      $sock->peerport, ' : ', length($buf), " bytes\n"
			if $self->{'debug'};

		my ($ans, $err) = Net::DNS::Packet->new(\$buf, $self->{'debug'});
		
		if (defined $ans) {
			$self->errorstring($ans->header->rcode);
		} elsif (defined $err) {
			$self->errorstring($err);
		}
		
		return $ans;
	} else {
		$self->errorstring($!);
		return;
	}
}

sub bgisready {
	my $self = shift;
	my $sel = Net::DNS::Select->new(@_);
	my @ready = $sel->can_read(0.0);
	return @ready > 0;
}

sub make_query_packet {
	my $self = shift;
	my $packet;

	if (ref($_[0]) and $_[0]->isa('Net::DNS::Packet')) {
		$packet = shift;
	} else {
		my ($name, $type, $class) = @_;

		$name  ||= '';
		$type  ||= 'A';
		$class ||= 'IN';

		# If the name looks like an IP address then do an appropriate
		# PTR query.
		if ($name =~ /^(\d+)\.(\d+)\.(\d+)\.(\d+)$/) {
			$name = "$4.$3.$2.$1.in-addr.arpa.";
			$type = 'PTR';
		}

		$packet = Net::DNS::Packet->new($name, $type, $class);
	}

	if ($packet->header->opcode eq 'QUERY') {
		$packet->header->rd($self->{'recurse'});
	}

    if ($self->{'dnssec'}) {
	    # RFC 3225
    	print ";; Adding EDNS extention with UDP packetsize $self->{'udppacketsize'} and DNS OK bit set\n" 
    		if $self->{'debug'};
    	
    	my $optrr = Net::DNS::RR->new(
						Type         => 'OPT',
						Name         => '',
						Class        => $self->{'udppacketsize'},  # Decimal UDPpayload
						ednsflags    => 0x8000, # first bit set see RFC 3225 
				   );
				 
	    $packet->push('additional', $optrr);
	    
	} elsif ($self->{'udppacketsize'} > &Net::DNS::PACKETSZ) {
	    print ";; Adding EDNS extention with UDP packetsize  $self->{'udppacketsize'}.\n" if $self->{'debug'};
	    # RFC 3225
	    my $optrr = Net::DNS::RR->new( 
						Type         => 'OPT',
						Name         => '',
						Class        => $self->{'udppacketsize'},  # Decimal UDPpayload
						TTL          => 0x0000 # RCODE 32bit Hex
				    );
				    
	    $packet->push('additional', $optrr);
	}
	

	if ($self->{'tsig_rr'}) {
		if (!grep { $_->type eq 'TSIG' } $packet->additional) {
			$packet->push('additional', $self->{'tsig_rr'});
		}
	}

	return $packet;
}

sub axfr {
	my $self = shift;
	my @zone;

	if ($self->axfr_start(@_)) {
		my ($rr, $err);
		while (($rr, $err) = $self->axfr_next, $rr && !$err) {
			push @zone, $rr;
		}
		@zone = () if $err && $err ne 'no zone transfer in progress';
	}

	return @zone;
}

sub axfr_old {
	warn "Use of " . __PACKAGE__ . "::axfr_old() is deprecated.  Use axfr() or axfr_start().\n";
	
	my $self = shift;
	my ($dname, $class) = @_;
	$dname ||= $self->{'searchlist'}->[0];
	$class ||= 'IN';

	unless ($dname) {
		print ";; ERROR: axfr: no zone specified\n" if $self->{'debug'};
		$self->errorstring('no zone');
		return;
	}

	print ";; axfr($dname, $class)\n" if $self->{'debug'};

	unless (@{$self->{'nameservers'}}) {
		$self->errorstring('no nameservers');
		print ";; ERROR: no nameservers\n" if $self->{'debug'};
		return;
	}

	my $packet = $self->make_query_packet($dname, 'AXFR', $class);
	my $packet_data = $packet->data;

	my $ns = $self->{'nameservers'}->[0];

	print ";; axfr nameserver = $ns\n" if $self->{'debug'};

	my $srcport = $self->{'srcport'};

	my $sock;
	my $sock_key = "$ns:$self->{'port'}";

	if ($self->{'persistent_tcp'} && $self->{'sockets'}{$sock_key}) {
		$sock = $self->{'sockets'}{$sock_key};
		print ";; using persistent socket\n" if $self->{'debug'};
	}
	else {

		# IO::Socket carps on errors if Perl's -w flag is turned on.
		# Uncomment the next two lines and the line following the "new"
		# call to turn off these messages.

		my $old_wflag = $^W;
		$^W = 0;

		$sock = IO::Socket::INET->new(
		    PeerAddr  => $ns,
		    PeerPort  => $self->{'port'},
		    LocalAddr => $self->{'srcaddr'},
		    LocalPort => ($srcport || undef),
		    Proto     => 'tcp',
		    Timeout   => $self->{'tcp_timeout'}
		);

		$^W = $old_wflag;

		unless ($sock) {
			$self->errorstring(q|couldn't connect|);
			return;
		}

		$self->{'sockets'}{$sock_key} = $sock;
	}

	my $lenmsg = pack('n', length($packet_data));

	unless ($sock->send($lenmsg)) {
		$self->errorstring($!);
		return;
	}

	unless ($sock->send($packet_data)) {
		$self->errorstring($!);
		return;
	}

	my $sel = Net::DNS::Select->new($sock);

	my @zone;
	my $soa_count = 0;
	my $timeout = $self->{'tcp_timeout'};

	while (1) {
		my @ready = $sel->can_read($timeout);
		unless (@ready) {
			$self->errorstring('timeout');
			return;
		}

		my $buf = read_tcp($sock, &Net::DNS::INT16SZ, $self->{'debug'});
		last unless length($buf);
		my ($len) = unpack('n', $buf);
		last unless $len;

		@ready = $sel->can_read($timeout);
		unless (@ready) {
			$self->errorstring('timeout');
			return;
		}

		$buf = read_tcp($sock, $len, $self->{'debug'});

		print ';; received ', length($buf), " bytes\n"
			if $self->{'debug'};

		unless (length($buf) == $len) {
			$self->errorstring("expected $len bytes, received " . length($buf));
			return;
		}

		my ($ans, $err) = Net::DNS::Packet->new(\$buf, $self->{'debug'});

		if (defined $ans) {
			if ($ans->header->ancount < 1) {
				$self->errorstring($ans->header->rcode);
				last;
			}
		}
		elsif (defined $err) {
			$self->errorstring($err);
			last;
		}

		foreach ($ans->answer) {
			# $_->print if $self->{'debug'};
			if ($_->type eq 'SOA') {
				++$soa_count;
				push @zone, $_ unless $soa_count >= 2;
			}
			else {
				push @zone, $_;
			}
		}

		last if $soa_count >= 2;
	}

	return @zone;
}


sub axfr_start {
	my $self = shift;
	my ($dname, $class) = @_;
	$dname ||= $self->{'searchlist'}->[0];
	$class ||= 'IN';

	unless ($dname) {
		print ";; ERROR: axfr: no zone specified\n" if $self->{'debug'};
		$self->errorstring('no zone');
		return;
	}

	print ";; axfr_start($dname, $class)\n" if $self->{'debug'};

	unless (@{$self->{'nameservers'}}) {
		$self->errorstring('no nameservers');
		print ";; ERROR: no nameservers\n" if $self->{'debug'};
		return;
	}

	my $packet = $self->make_query_packet($dname, 'AXFR', $class);
	my $packet_data = $packet->data;

	my $ns = $self->{'nameservers'}->[0];

	print ";; axfr_start nameserver = $ns\n" if $self->{'debug'};

	my $srcport = $self->{'srcport'};

	my $sock;
	my $sock_key = "$ns:$self->{'port'}";

	if ($self->{'persistent_tcp'} && $self->{'sockets'}->{$sock_key}) {
	    $sock = $self->{'sockets'}->{$sock_key};
	    print ";; using persistent socket\n" if $self->{'debug'};
	    
	} else {

		# IO::Socket carps on errors if Perl's -w flag is turned on.
		# Uncomment the next two lines and the line following the "new"
		# call to turn off these messages.

		#my $old_wflag = $^W;
		#$^W = 0;

		$sock = IO::Socket::INET->new(
		    PeerAddr  => $ns,
		    PeerPort  => $self->{'port'},
		    LocalAddr => $self->{'srcaddr'},
		    LocalPort => ($srcport || undef),
		    Proto     => 'tcp',
		    Timeout   => $self->{'tcp_timeout'}
		 );

		#$^W = $old_wflag;

		unless ($sock) {
			$self->errorstring(q|couldn't connect|);
			return;
		}

		$self->{'sockets'}->{$sock_key} = $sock;
	}

	my $lenmsg = pack('n', length($packet_data));

	unless ($sock->send($lenmsg)) {
		$self->errorstring($!);
		return;
	}

	unless ($sock->send($packet_data)) {
		$self->errorstring($!);
		return;
	}

	my $sel = Net::DNS::Select->new($sock);

	$self->{'axfr_sel'}       = $sel;
	$self->{'axfr_rr'}        = [];
	$self->{'axfr_soa_count'} = 0;

	return $sock;
}


sub axfr_next {
	my $self = shift;
	my $err  = '';

	unless (@{$self->{'axfr_rr'}}) {
		unless ($self->{'axfr_sel'}) {
			$err = 'no zone transfer in progress';
			$self->errorstring($err);
			return wantarray ? (undef, $err) : undef;
		}

		my $sel = $self->{'axfr_sel'};
		my $timeout = $self->{'tcp_timeout'};

		#--------------------------------------------------------------
		# Read the length of the response packet.
		#--------------------------------------------------------------

		my @ready = $sel->can_read($timeout);
		unless (@ready) {
			$err = 'timeout';
			$self->errorstring($err);
			return wantarray ? (undef, $err) : undef;
		}

		my $buf = read_tcp($ready[0], &Net::DNS::INT16SZ, $self->{'debug'});
		unless (length $buf) {
			$err = 'truncated zone transfer';
			$self->errorstring($err);
			return wantarray ? (undef, $err) : undef;
		}

		my ($len) = unpack('n', $buf);
		unless ($len) {
			$err = 'truncated zone transfer';
			$self->errorstring($err);
			return wantarray ? (undef, $err) : undef;
		}

		#--------------------------------------------------------------
		# Read the response packet.
		#--------------------------------------------------------------

		@ready = $sel->can_read($timeout);
		unless (@ready) {
			$err = 'timeout';
			$self->errorstring($err);
			return wantarray ? (undef, $err) : undef;
		}

		$buf = read_tcp($ready[0], $len, $self->{'debug'});

		print ';; received ', length($buf), " bytes\n"
			if $self->{'debug'};

		unless (length($buf) == $len) {
			$err = "expected $len bytes, received " . length($buf);
			$self->errorstring($err);
			print ";; $err\n" if $self->{'debug'};
			return wantarray ? (undef, $err) : undef;
		}

		my $ans;
		($ans, $err) = Net::DNS::Packet->new(\$buf, $self->{'debug'});

		if ($ans) {
			if ($ans->header->rcode ne 'NOERROR') {	
				$self->errorstring('Response code from server: ' . $ans->header->rcode);
				print ';; Response code from server: ' . $ans->header->rcode . "\n" if $self->{'debug'};
				return wantarray ? (undef, $err) : undef;
			}
			if ($ans->header->ancount < 1) {
				$err = 'truncated zone transfer';
				$self->errorstring($err);
				print ";; $err\n" if $self->{'debug'};
				return wantarray ? (undef, $err) : undef;
			}
		}
		else {
			$err ||= 'unknown error during packet parsing';
			$self->errorstring($err);
			print ";; $err\n" if $self->{'debug'};
			return wantarray ? (undef, $err) : undef;
		}

		foreach my $rr ($ans->answer) {
			if ($rr->type eq 'SOA') {
				if (++$self->{'axfr_soa_count'} < 2) {
					push @{$self->{'axfr_rr'}}, $rr;
				}
			}
			else {
				push @{$self->{'axfr_rr'}}, $rr;
			}
		}

		if ($self->{'axfr_soa_count'} >= 2) {
			$self->{'axfr_sel'} = undef;
		}
	}

	my $rr = shift @{$self->{'axfr_rr'}};

	return wantarray ? ($rr, undef) : $rr;
}


sub tsig {
	my $self = shift;

	if (@_ == 1) {
		if ($_[0] && ref($_[0])) {
			$self->{'tsig_rr'} = $_[0];
		}
		else {
			$self->{'tsig_rr'} = undef;
		}
	}
	elsif (@_ == 2) {
		my ($key_name, $key) = @_;
		$self->{'tsig_rr'} = Net::DNS::RR->new("$key_name TSIG $key");
	}

	return $self->{'tsig_rr'};
}

#
# Usage:  $data = read_tcp($socket, $nbytes, $debug);
#
sub read_tcp {
	my ($sock, $nbytes, $debug) = @_;
	my $buf = '';

	while (length($buf) < $nbytes) {
		my $nread = $nbytes - length($buf);
		my $read_buf = '';

		print ";; read_tcp: expecting $nread bytes\n" if $debug;

		# During some of my tests recv() returned undef even
		# though there wasn't an error.  Checking for the amount
		# of data read appears to work around that problem.

		unless ($sock->recv($read_buf, $nread)) {
			if (length($read_buf) < 1) {
				my $errstr = $!;

				print ";; ERROR: read_tcp: recv failed: $!\n"
					if $debug;

				if ($errstr eq 'Resource temporarily unavailable') {
					warn "ERROR: read_tcp: recv failed: $errstr\n";
					warn "ERROR: try setting \$res->timeout(undef)\n";
				}

				last;
			}
		}

		print ';; read_tcp: received ', length($read_buf), " bytes\n"
			if $debug;

		last unless length($read_buf);
		$buf .= $read_buf;
	}

	return $buf;
}

sub AUTOLOAD {
	my ($self) = @_;

	my $name = $AUTOLOAD;
	$name =~ s/.*://;

	Carp::croak "$name: no such method" unless exists $self->{$name};
	
	no strict q/refs/;
	
	
	*{$AUTOLOAD} = sub {
		my ($self, $new_val) = @_;
		
		if (defined $new_val) {
			$self->{"$name"} = $new_val;
		}
		
		return $self->{"$name"};
	};

	
	goto &{$AUTOLOAD};	
}



1;

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美精品v日韩精品v韩国精品v| 国产乱淫av一区二区三区 | 色综合久久99| 成人综合激情网| 成人91在线观看| av电影天堂一区二区在线观看| 国产a视频精品免费观看| 激情综合亚洲精品| 国产制服丝袜一区| 国产综合久久久久久鬼色| 精品一区二区在线播放| 久久成人久久爱| 国产毛片精品国产一区二区三区| 狠狠色丁香婷综合久久| 国产成人欧美日韩在线电影| 成人免费视频视频在线观看免费 | 一区二区久久久久久| 亚洲另类春色校园小说| 五月婷婷欧美视频| 免费在线观看一区二区三区| 狠狠狠色丁香婷婷综合久久五月| 国产精品中文有码| 色婷婷综合五月| 在线播放一区二区三区| 欧美一区二区三区公司| 精品国产免费久久| 中文字幕制服丝袜成人av| 一区二区三区不卡视频| 免费一区二区视频| 成人国产在线观看| 欧美一区二区三区啪啪| 欧美激情中文不卡| 午夜精品久久久久影视| 精品在线亚洲视频| 91麻豆国产香蕉久久精品| 欧美日韩日日摸| 中文字幕不卡在线观看| 亚洲成人激情自拍| 国产成人精品三级| 欧美疯狂性受xxxxx喷水图片| 久久久久久久久久久久久夜| 亚洲精品一二三区| 国产一区二区网址| 在线成人av网站| 亚洲精品成人在线| 国产91精品一区二区麻豆网站| 欧美色区777第一页| 国产精品久久福利| 国产美女精品一区二区三区| 欧美日韩一区中文字幕| 亚洲人吸女人奶水| 国产凹凸在线观看一区二区| 日韩精品一区二区三区四区| 亚洲影院理伦片| 成人动漫一区二区| 久久久99精品久久| 麻豆精品国产91久久久久久| 欧美日韩亚洲综合在线 欧美亚洲特黄一级| 日韩欧美亚洲一区二区| 亚洲不卡一区二区三区| 成人aa视频在线观看| 精品国产一区二区亚洲人成毛片| 亚洲成人777| 欧美日韩国产在线观看| 亚洲美女电影在线| 一本大道av伊人久久综合| 日本一区二区三区国色天香| 国产原创一区二区三区| 9191国产精品| 亚洲一区二区三区免费视频| 色婷婷激情综合| 亚洲免费观看高清在线观看| 成人国产精品免费观看| 国产日韩精品视频一区| 国产高清不卡一区二区| 国产亚洲欧美色| 国产黄色精品网站| 亚洲国产精品激情在线观看| 国产91色综合久久免费分享| 国产农村妇女毛片精品久久麻豆| 精品一区二区免费视频| 久久在线免费观看| 国产精品综合一区二区| 国产精品天美传媒沈樵| 国产成人自拍高清视频在线免费播放| 久久综合色鬼综合色| 狠狠色狠狠色综合| 国产精品女人毛片| 色天天综合久久久久综合片| 亚洲综合视频在线观看| 在线观看av一区| 日韩一区精品视频| 欧美xfplay| 国产福利不卡视频| 亚洲精品中文在线| 欧美精品v日韩精品v韩国精品v| 精品一区精品二区高清| 国产日韩在线不卡| 一本大道av伊人久久综合| 亚洲国产综合色| 欧美成人三级在线| 成人免费高清在线| 亚洲一二三四在线观看| 91精品国产高清一区二区三区 | 337p日本欧洲亚洲大胆精品 | 亚洲va欧美va天堂v国产综合| 91麻豆精品国产自产在线| 久久av老司机精品网站导航| 国产精品色眯眯| 欧美揉bbbbb揉bbbbb| 国产一区在线观看视频| 亚洲精选在线视频| 欧美成人一区二区三区片免费| 国产超碰在线一区| 午夜电影一区二区| 欧美国产日韩在线观看| 欧美疯狂做受xxxx富婆| 成人av免费在线| 精品综合久久久久久8888| 中文字幕一区二区在线播放| 7777精品伊人久久久大香线蕉完整版 | 精品一区精品二区高清| 综合欧美一区二区三区| 日韩精品一区二| 91麻豆swag| 国产精品一区免费在线观看| 天涯成人国产亚洲精品一区av| 国产日韩高清在线| 久久综合给合久久狠狠狠97色69| 一本色道久久综合狠狠躁的推荐| 久久69国产一区二区蜜臀| 亚洲狠狠丁香婷婷综合久久久| 国产日韩欧美电影| 欧美成va人片在线观看| 欧美日韩免费在线视频| 91免费在线视频观看| 国产盗摄视频一区二区三区| 午夜亚洲国产au精品一区二区| 国产精品国模大尺度视频| 欧美精品一区二区三区视频| 欧美精品久久久久久久多人混战 | 色综合久久精品| 成人av免费在线观看| 国产成人综合自拍| 精品中文字幕一区二区小辣椒| 日日摸夜夜添夜夜添精品视频| 亚洲免费三区一区二区| 亚洲日本电影在线| 国产精品久久久久久福利一牛影视 | 91精品办公室少妇高潮对白| 99麻豆久久久国产精品免费 | 韩国v欧美v亚洲v日本v| 日韩影院免费视频| 亚洲成av人片一区二区三区| 亚洲精品久久久蜜桃| 亚洲情趣在线观看| 亚洲你懂的在线视频| 亚洲人成网站影音先锋播放| 亚洲欧美国产77777| 亚洲男同性恋视频| 一区二区三区免费在线观看| 亚洲综合视频网| 亚洲图片自拍偷拍| 日韩不卡一区二区三区 | 99re视频精品| 色系网站成人免费| 欧美日韩中文国产| 欧美一区二区三区四区久久 | 成人免费av资源| 91蝌蚪国产九色| 欧美日韩一区二区不卡| 91精品免费在线| 久久久久久久一区| 国产精品的网站| 首页综合国产亚洲丝袜| 另类小说视频一区二区| 国产传媒一区在线| 一本久久精品一区二区| 欧美精品欧美精品系列| 日韩免费视频线观看| 国产欧美一区二区精品秋霞影院| 亚洲欧洲www| 无码av免费一区二区三区试看| 精品一区二区av| 91农村精品一区二区在线| 91精品国产一区二区三区香蕉| 2024国产精品视频| 亚洲男人的天堂在线观看| 爽爽淫人综合网网站| 成人综合婷婷国产精品久久| 欧美精品一级二级三级| 久久九九全国免费| 香蕉加勒比综合久久| 风流少妇一区二区| 欧美视频在线观看一区| 久久久久国产精品免费免费搜索| 亚洲另类在线制服丝袜| 国产一区二区三区四区五区美女 | 中文字幕乱码久久午夜不卡| 亚洲一区二区在线观看视频 |