proxyhunter

 view release on metacpan or  search on metacpan

lib/App/ProxyHunter.pm  view on Meta::CPAN

		}
		
		Proc::Daemon::Init({
			work_dir => '.',
			length($daemon)>0 ? (pid_file => $daemon) : ()
		});
	}
	
	$model->update('proxy', {in_progress => 0}); # clean
	
	my @coros;
	if ($config->checker->enabled) {
		push @coros, $class->_start_checkers($config, $model);
	}
	if ($config->rechecker->enabled) {
		push @coros, $class->_start_recheckers($config, $model);
	}
	if ($config->speed_checker->enabled) {
		push @coros, $class->_start_speed_checkers($config, $model);
	}
	if ($config->searcher->enabled) {
		push @coros, $class->_start_searcher($config, $model);
	}
	
	$_->join() for @coros;
}

sub _start_checkers {
	my ($class, $config, $model) = @_;
	
	my @coros;
	my @queue;
	my $delay;
	
	for (1..$config->checker->workers) {
		push @coros, async {
			my $type_checker = Net::Proxy::Type->new(
				strict        => $config->checker->strict,
				noauth        => 1,
				url           => $config->checker->http_url,
				keyword       => $config->checker->http_keyword,
				https_url     => $config->checker->https_url,
				https_keyword => $config->checker->https_keyword,
			);
			$type_checker->http_strict(1);
			my $speed_checker = $config->checker->speed_check ?

lib/App/ProxyHunter.pm  view on Meta::CPAN

				
				$proxy->set('checked', 1);
				$proxy->set('checkdate', DateTime->now(time_zone => TZ));
				$proxy->set('in_progress', \0); # force update
				$proxy->set('success_total', 1);
				$proxy->update();
			}
		}
	}
	
	return @coros;
}

sub _start_recheckers {
	my ($class, $config, $model) = @_;
	
	my @coros;
	my @queue;
	my $delay;
	
	for (1..$config->rechecker->workers) {
		push @coros, async {
			my $type_checker = Net::Proxy::Type->new(
				strict        => $config->rechecker->strict,
				noauth        => 1,
				url           => $config->checker->http_url,
				keyword       => $config->checker->http_keyword,
				https_url     => $config->checker->https_url,
				https_keyword => $config->checker->https_keyword,
			);
			$type_checker->http_strict(1);
			my $speed_checker = $config->rechecker->speed_check ?

lib/App/ProxyHunter.pm  view on Meta::CPAN

					$proxy->set('success_total', $proxy->success_total+1);
				}
				
				$proxy->set('checkdate', DateTime->now(time_zone => TZ));
				$proxy->set('in_progress', \0); # force update
				$proxy->update();
			}
		}
	}
	
	return @coros;
}

sub _start_speed_checkers {
	my ($class, $config, $model) = @_;
	
	my @coros;
	my @queue;
	my $delay;
	
	for (1..$config->speed_checker->workers) {
		push @coros, async {
			my $speed_checker = LWP::UserAgent->new(agent => 'Mozilla 5.0', timeout => 10, parse_head => 0);
			
			while (1) {
				if ($delay) {
					Coro::Timer::sleep $delay;
					next;
				}
				
				unless (@queue) {
					unless (@queue = $class->_get_queue(



( run in 0.334 second using v1.01-cache-2.11-cpan-3cd7ad12f66 )