--- projects/cms/source/host/ihost-perl/ihost.pl 2001/02/13 12:28:50 1.16 +++ projects/cms/source/host/ihost-perl/ihost.pl 2001/03/01 18:53:42 1.23 @@ -9,8 +9,8 @@ # methods as you see fit. # - pjm2@ukc.ac.uk # -# $Author: tdb $ -# $Id: ihost.pl,v 1.16 2001/02/13 12:28:50 tdb Exp $ +# $Author: pjm2 $ +# $Id: ihost.pl,v 1.23 2001/03/01 18:53:42 pjm2 Exp $ #------------------------------------------------------------ $| = 1; @@ -32,6 +32,7 @@ use vars qw ( $tcp_port $filter_addr $file_list + $fqdn ); if (@ARGV != 2) { @@ -85,7 +86,7 @@ sub tcp_configure() { PeerAddr => $filter_manager_addr, PeerPort => $filter_manager_port, Proto => 'tcp' - ); + ) or die "Cannot connect!"; if (!defined $sock) { print "IHOST ERROR: Could not connect to $filter_manager_addr:$filter_manager_port.\n"; print "Please check that there is an i-scream server at this address.\n"; @@ -119,6 +120,13 @@ sub tcp_configure() { print "File list obtained: $file_list\n"; + print $sock "FQDN\n"; + $response = <$sock>; + chop $response; + $fqdn = $response; + + print "FQDN returned: $fqdn\n"; + print $sock "UDPUpdateTime\n"; $response = <$sock>; chop $response; @@ -201,26 +209,7 @@ sub send_udp_packet() { } $disk_info .= ""; - my($hostname) = hostname(); - $hostname =~ s/\..*$//g; - my($resolv) = `cat /etc/resolv.conf`; - my($domainname); - my($machine_name); - if($resolv =~ /domain\s+([^\s]+)/) { - # some machines have domain in resolv.conf - $domainname = $1; - $machine_name = "$hostname.$domainname"; - } - elsif($resolv =~ /search\s+([^\s]+)/) { - # some machines have search in resolv.conf - $domainname = $1; - $machine_name = "$hostname.$domainname"; - } - else { - # we can't find out the domain - $machine_name = $hostname; - } - my($ip) = inet_ntoa(scalar(gethostbyname($hostname)) || 'localhost'); + my($ip) = inet_ntoa(scalar(gethostbyname(hostname())) || 'localhost'); # Build the XML packet this way, as we can clearly # see the structure and contents... I like this ;-) @@ -228,7 +217,7 @@ sub send_udp_packet() { # larger than 8196 bytes] my($xml) = < + $packet{"packet.load.load1"} $packet{"packet.load.load5"} @@ -275,12 +264,12 @@ EOF # Make the packet smaller by stripping out newlines and leading spaces. $xml =~ s/\n\s*//g; - + my($sock) = new IO::Socket::INET ( PeerPort => $udp_port, PeerAddr => $filter_addr, Proto => 'udp' - ) or die "Socket: $!\n"; + ) or die "Could not send UDP: $!\n"; print $sock $xml or die "Could not send UDP packet: $!\n"; close($sock); @@ -304,7 +293,7 @@ sub send_tcp_heartbeat() { PeerAddr => $filter_addr, PeerPort => $tcp_port, Proto => 'tcp' - ); + ) or return; if (!defined $sock) { print "IHOST WARNING: Failed to deliver a heartbeat to the i-scream filter.\n"; return; @@ -315,6 +304,7 @@ sub send_tcp_heartbeat() { print $sock "HEARTBEAT\n"; $response = <$sock>; + return if (!defined $response); chop $response; if (!$response eq "OK") { close($sock); @@ -324,6 +314,7 @@ sub send_tcp_heartbeat() { print $sock "CONFIG\n"; $response = <$sock>; + return if (!defined $response); chop $response; if (!$response eq "OK") { close($sock); @@ -333,6 +324,7 @@ sub send_tcp_heartbeat() { print $sock "$file_list\n"; $response = <$sock>; + return if (!defined $response); chop $response; if (!$response eq "OK") { close($sock); @@ -342,6 +334,7 @@ sub send_tcp_heartbeat() { print $sock "$last_modified\n"; $response = <$sock>; + return if (!defined $response); chop $response; if ($response eq "ERROR") { close($sock); @@ -356,6 +349,7 @@ sub send_tcp_heartbeat() { print $sock "ENDHEARTBEAT\n"; $response = <$sock>; + return if (!defined $response); chop $response; if (!$response eq "OK") { close($sock);