version 1.868, 2007/04/11 21:37:20
|
version 1.869, 2007/04/11 22:52:03
|
Line 182 sub subreply {
|
Line 182 sub subreply {
|
$client=IO::Socket::UNIX->new(Peer =>"$peerfile", |
$client=IO::Socket::UNIX->new(Peer =>"$peerfile", |
Type => SOCK_STREAM, |
Type => SOCK_STREAM, |
Timeout => 10); |
Timeout => 10); |
if($client) { |
if ($client) { |
last; # Connected! |
last; # Connected! |
} else { |
} else { |
&create_connection(&hostname($server),$server); |
&create_connection(&hostname($server),$server); |
Line 7682 sub goodbye {
|
Line 7682 sub goodbye {
|
} |
} |
|
|
sub get_dns { |
sub get_dns { |
my ($url,$func) = @_; |
my ($url,$func,$ignore_cache) = @_; |
|
if (!$ignore_cache) { |
|
my ($content,$cached)= |
|
&Apache::lonnet::is_cached_new('dns',$url); |
|
if ($cached) { |
|
&$func($content); |
|
return; |
|
} |
|
} |
|
|
|
my %alldns; |
open(my $config,"<$perlvar{'lonTabDir'}/hosts.tab"); |
open(my $config,"<$perlvar{'lonTabDir'}/hosts.tab"); |
foreach my $dns (<$config>) { |
foreach my $dns (<$config>) { |
next if ($dns !~ /^\^(\S*)/x); |
next if ($dns !~ /^\^(\S*)/x); |
$dns = $1; |
$alldns{$1} = 1; |
|
} |
|
while (%alldns) { |
|
my ($dns) = keys(%alldns); |
|
delete($alldns{$dns}); |
my $ua=new LWP::UserAgent; |
my $ua=new LWP::UserAgent; |
my $request=new HTTP::Request('GET',"http://$dns$url"); |
my $request=new HTTP::Request('GET',"http://$dns$url"); |
my $response=$ua->request($request); |
my $response=$ua->request($request); |
next if ($response->is_error()); |
next if ($response->is_error()); |
my @content = split("\n",$response->content); |
my @content = split("\n",$response->content); |
|
&Apache::lonnet::do_cache_new('dns',$url,\@content,30*24*60*60); |
&$func(\@content); |
&$func(\@content); |
|
return; |
} |
} |
close($config); |
close($config); |
|
&logthis("unable to contact DNS defaulting to on disk file\n"); |
|
open($config,"<$perlvar{'lonTabDir'}/dns_hosts.tab"); |
|
my @content = <$config>; |
|
&$func(\@content); |
|
return; |
} |
} |
# ------------------------------------------------------------ Read domain file |
# ------------------------------------------------------------ Read domain file |
{ |
{ |
Line 7724 sub get_dns {
|
Line 7745 sub get_dns {
|
} |
} |
|
|
sub load_domain_tab { |
sub load_domain_tab { |
&get_dns('/adm/dns/domain',\&parse_domain_tab); |
my ($ignore_cache) = @_; |
|
&get_dns('/adm/dns/domain',\&parse_domain_tab,$ignore_cache); |
my $fh; |
my $fh; |
if (open($fh,"<".$perlvar{'lonTabDir'}.'/domain.tab')) { |
if (open($fh,"<".$perlvar{'lonTabDir'}.'/domain.tab')) { |
my @lines = <$fh>; |
my @lines = <$fh>; |
Line 7781 sub get_dns {
|
Line 7803 sub get_dns {
|
} |
} |
|
|
sub load_hosts_tab { |
sub load_hosts_tab { |
&get_dns('/adm/dns/hosts',\&parse_hosts_tab); |
my ($ignore_cache) = @_; |
|
&get_dns('/adm/dns/hosts',\&parse_hosts_tab,$ignore_cache); |
open(my $config,"<$perlvar{'lonTabDir'}/hosts.tab"); |
open(my $config,"<$perlvar{'lonTabDir'}/hosts.tab"); |
my @config = <$config>; |
my @config = <$config>; |
&parse_hosts_tab(\@config); |
&parse_hosts_tab(\@config); |
Line 7857 sub get_dns {
|
Line 7880 sub get_dns {
|
my %iphost; |
my %iphost; |
my %name_to_ip; |
my %name_to_ip; |
my %lonid_to_ip; |
my %lonid_to_ip; |
|
|
|
my %valid_ip; |
|
sub valid_ip { |
|
my ($ip) = @_; |
|
if (exists($iphost{$ip}) || exists($valid_ip{$ip})) { |
|
return 1; |
|
} |
|
my $name = gethostbyip($ip); |
|
my $lonid = &hostname($name); |
|
if (defined($lonid)) { |
|
$valid_ip{$ip} = $lonid; |
|
return 1; |
|
} |
|
my %iphosts = &get_iphost(); |
|
if (ref($iphost{$ip})) { |
|
return 1; |
|
} |
|
} |
|
|
sub get_hosts_from_ip { |
sub get_hosts_from_ip { |
my ($ip) = @_; |
my ($ip) = @_; |
my %iphosts = &get_iphost(); |
my %iphosts = &get_iphost(); |
Line 7887 sub get_dns {
|
Line 7929 sub get_dns {
|
} |
} |
|
|
sub get_iphost { |
sub get_iphost { |
if (%iphost) { return %iphost; } |
my ($ignore_cache) = @_; |
|
if (!$ignore_cache) { |
|
if (%iphost) { |
|
return %iphost; |
|
} |
|
my ($ip_info,$cached)= |
|
&Apache::lonnet::is_cached_new('iphost','iphost'); |
|
if ($cached) { |
|
%iphost = %{$ip_info->[0]}; |
|
%name_to_ip = %{$ip_info->[1]}; |
|
%lonid_to_ip = %{$ip_info->[2]}; |
|
return %iphost; |
|
} |
|
} |
my %hostname = &all_hostnames(); |
my %hostname = &all_hostnames(); |
foreach my $id (keys(%hostname)) { |
foreach my $id (keys(%hostname)) { |
my $name=&hostname($id); |
my $name=&hostname($id); |
Line 7906 sub get_dns {
|
Line 7961 sub get_dns {
|
$lonid_to_ip{$id} = $ip; |
$lonid_to_ip{$id} = $ip; |
push(@{$iphost{$ip}},$id); |
push(@{$iphost{$ip}},$id); |
} |
} |
|
&Apache::lonnet::do_cache_new('iphost','iphost', |
|
[\%iphost,\%name_to_ip,\%lonid_to_ip], |
|
24*60*60); |
|
|
return %iphost; |
return %iphost; |
} |
} |
} |
} |