#!/usr/local/bin/perl # Autogenerated block to include site configuration # generated on Tue Mar 21 19:42:47 PST 2000 BEGIN { %::RIPEConfig = ( VERSION => q#3.0.0b2#, LIBDIR => q#/home/david/db/src//lib#, DEFCONFIG => q#/home/david/db/src//etc/ripedb.config#, WHOISHOST => q#whois.6bone.net#, ); # Add library path unless running from source directory use FindBin; if ($FindBin::Bin =~ m#/src$#) { unshift @INC, $FindBin::Bin; $::RIPEConfig{DEFCONFIG}=$FindBin::Bin."/../etc/ripedb.config"; } else { unshift @INC, $::RIPEConfig{LIBDIR}; } # Select DBM package other then the default one use Fcntl; use DB_File; $DBMPACKAGE="DB_File"; } # End of autogenerated block #line 1 #line 0 networkupdate.pl # $RCSfile: networkupdate.pl,v $ # $Revision: 1.1.1.1 $ # $Author: eddy $ # $Date: 1997/10/27 20:13:45 $ # Original code is written by David Kessens # Copyright (c) 1993, 1994, 1995, 1996, 1997 The TERENA Association # Copyright (c) 1998 RIPE NCC # # All Rights Reserved # # Permission to use, copy, modify, and distribute this software and its # documentation for any purpose and without fee is hereby granted, # provided that the above copyright notice appear in all copies and that # both that copyright notice and this permission notice appear in # supporting documentation, and that the name of the author not be # used in advertising or publicity pertaining to distribution of the # software without specific, written prior permission. # # THE AUTHOR DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING # ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS; IN NO EVENT SHALL # AUTHOR BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY # DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN # AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF # OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. # Copyright (c) 1997,1998 by the University of Southern California # All rights reserved. # # Permission to use, copy, modify, and distribute this software and its # documentation in source and binary forms for lawful non-commercial # purposes and without fee is hereby granted, provided that the above # copyright notice appear in all copies and that both the copyright # notice and this permission notice appear in supporting documentation, # and that any documentation, advertising materials, and other materials # related to such distribution and use acknowledge that the software was # developed by the University of Southern California, Information # Sciences Institute. The name of the USC may not be used to endorse or # promote products derived from this software without specific prior # written permission. # # THE UNIVERSITY OF SOUTHERN CALIFORNIA DOES NOT MAKE ANY # REPRESENTATIONS ABOUT THE SUITABILITY OF THIS SOFTWARE FOR ANY # PURPOSE. THIS SOFTWARE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR # IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED # WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, # TITLE, AND NON-INFRINGEMENT. # # IN NO EVENT SHALL USC, OR ANY OTHER CONTRIBUTOR BE LIABLE FOR ANY # SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES, WHETHER IN CONTRACT, TORT, # OR OTHER FORM OF ACTION, ARISING OUT OF OR IN CONNECTION WITH, THE USE # OR PERFORMANCE OF THIS SOFTWARE. # # Author(s): David Kessens # This is a very simple whois client, but it knows the new server arguments # No support yet, use if you wish require "getopts.pl"; # # The file 'whoisqry.pl' is included here # #line 0 whoisqry.pl # $RCSfile: whoisqry.pl,v $ # $Revision: 1.1.1.1 $ # $Author: eddy $ # $Date: 1997/10/27 20:13:49 $ # Original code is written by David Kessens # Copyright (c) 1993, 1994, 1995, 1996, 1997 The TERENA Association # Copyright (c) 1998 RIPE NCC # # All Rights Reserved # # Permission to use, copy, modify, and distribute this software and its # documentation for any purpose and without fee is hereby granted, # provided that the above copyright notice appear in all copies and that # both that copyright notice and this permission notice appear in # supporting documentation, and that the name of the author not be # used in advertising or publicity pertaining to distribution of the # software without specific, written prior permission. # # THE AUTHOR DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING # ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS; IN NO EVENT SHALL # AUTHOR BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY # DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN # AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF # OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. # Copyright (c) 1997,1998 by the University of Southern California # All rights reserved. # # Permission to use, copy, modify, and distribute this software and its # documentation in source and binary forms for lawful non-commercial # purposes and without fee is hereby granted, provided that the above # copyright notice appear in all copies and that both the copyright # notice and this permission notice appear in supporting documentation, # and that any documentation, advertising materials, and other materials # related to such distribution and use acknowledge that the software was # developed by the University of Southern California, Information # Sciences Institute. The name of the USC may not be used to endorse or # promote products derived from this software without specific prior # written permission. # # THE UNIVERSITY OF SOUTHERN CALIFORNIA DOES NOT MAKE ANY # REPRESENTATIONS ABOUT THE SUITABILITY OF THIS SOFTWARE FOR ANY # PURPOSE. THIS SOFTWARE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR # IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED # WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, # TITLE, AND NON-INFRINGEMENT. # # IN NO EVENT SHALL USC, OR ANY OTHER CONTRIBUTOR BE LIABLE FOR ANY # SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES, WHETHER IN CONTRACT, TORT, # OR OTHER FORM OF ACTION, ARISING OUT OF OR IN CONNECTION WITH, THE USE # OR PERFORMANCE OF THIS SOFTWARE. # # Copyright (c) 1998, 1999 by Qwest Communications International # All rights reserved. # # Permission to use, copy, modify, and distribute this software and its # documentation in source and binary forms for lawful non-commercial # purposes and without fee is hereby granted, provided that the above # copyright notice appear in all copies and that both the copyright # notice and this permission notice appear in supporting documentation, # and that any documentation, advertising materials, and other materials # related to such distribution and use acknowledge that the software was # developed by Qwest Communications International. The name of Qwest # Communications International may not be used to endorse or # promote products derived from this software without specific prior # written permission. # # Qwest Communications International DOES NOT MAKE ANY # REPRESENTATIONS ABOUT THE SUITABILITY OF THIS SOFTWARE FOR ANY # PURPOSE. THIS SOFTWARE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR # IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED # WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, # TITLE, AND NON-INFRINGEMENT. # # IN NO EVENT SHALL Qwest Communications International OR ANY OTHER # CONTRIBUTOR BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL # DAMAGES, WHETHER IN CONTRACT, TORT, OR OTHER FORM OF ACTION, ARISING # OUT OF OR IN CONNECTION WITH, THE USE OR PERFORMANCE OF THIS SOFTWARE. # # Author(s): David Kessens # This is a very simple whois client module use sigtrap; use Socket; sub getwhoisportandproto { local($port)=@_; local($name,$aliases,$proto); if ($port=~ /^\d+$/) { $proto=getprotobyname('tcp'); } else { ($name,$aliases,$port,$proto)=getservbyname("whois", "tcp"); die "cannot find portnumber for \'whois\' service" if (!$port); #print STDERR "-$port-$proto-"; } ($name,$aliases,$proto)=getprotobyname($proto); return ($port,$proto); } sub initwhoisqry { local($host, $port, $string)=@_; local($proto,$address); local($socket)="WHOIS_S"; if ($host=~ /^\s*\d+\.\d+\.\d+\.\d+\s*$/) { $address=pack("C4",split(/\./,$host)); } else { $address=(gethostbyname($host))[4]; } # find valid port and protocol number for whois service #print "*$port*\n"; ($port,$proto)=&getwhoisportandproto($port); # # connect socket($socket, PF_INET, SOCK_STREAM, $proto) || return("", "socket creation failed"); if (connect($socket, sockaddr_in ($port, $address))) { # # no buffering local($oldhandle)=select($socket); $| = 1; select($oldhandle); # # print options print $socket $string, "\n"; } else { return ("", "Connect to host: $host port: $port failed"); } return ($socket, ""); } 1; # # End of included 'whoisqry.pl' data is here # #line 64 networkupdate.pl &Getopts('h:p:M'); if (@ARGV) { print <<"EOF"; Usage: networkupdate [-h hostname] [-p port] where: -h hostname which server do we want to update Default - $::RIPEConfig{WHOISHOST} -p port which port to connect to -M treat input as a mail Please note that most of these flags are NOT understood by non RIPE whois servers EOF exit(0); } # try to construct something that looks like an E-mail address # for logging purposes... # find the log name of the user local($logname)=""; if ($ENV{'USERNAME'}) { $logname=$ENV{'USERNAME'}; } elsif ($ENV{'LOGNAME'}) { $logname=$ENV{'LOGNAME'}; } elsif ($ENV{'USER'}) { $logname=$ENV{'USER'}; } elsif ($ENV{'WHOAMI'}) { $logname=$ENV{'WHOAMI'}; } else { local(@others); ($logname,@others)=getpwuid($<); } # try find the domain name of the current host local($domainname)=""; if ($ENV{'LOCALDOMAIN'}) { $domainname=$ENV{'LOCALDOMAIN'}; } elsif ($ENV{'DOMAIN'}) { $domainname=$ENV{'DOMAIN'}; } elsif ($ENV{'HOST'}) { $domainname=$ENV{'HOST'}; } elsif ($ENV{'HOSTNAME'}) { $domainname=$ENV{'HOSTNAME'}; } $logname="nobody" if ($logname=~ /^\s*$/); $domainname="localhost" if ($domainname=~ /^\s*$/); # print STDERR $logname, "@", $domainname, "\n"; # and now we are ready to connect local($socket,$msg)=&initwhoisqry($opt_h?$opt_h:$::RIPEConfig{WHOISHOST}, $opt_p?$opt_p:"", "-V np3.0 -U ".$logname." ".$domainname.($opt_M?" -M":"")."\n"); if (!$socket) { print STDERR $msg, "\n\n"; exit 1; } sub quitconnection { close($socket); print "\nConnection closed.\n"; exit; } local($child,$towhois); if ((!$opt_M) && (($child = fork()) == 0)) { while (defined($towhois=)) { # print STDERR "To whois: ", $towhois, "\n"; print $socket $towhois; last if ($towhois=~ /^\s*\.\s*$/); } exit 0; } local($fromwhois); if ($opt_M) { # # get all data local(@towhois)=(); while (defined($towhois=)) { # print $towhois; push(@towhois, $towhois); } push(@towhois, "\n") if ($towhois[$#towhois]!~ /\n$/); # # send all data to whoisd $towhois=join("", @towhois); #print length($towhois), "\n", $towhois; print $socket length($towhois), "\n", $towhois; # # check if data is accepted $fromwhois=<$socket>; # print "*$fromwhois*\n"; if ($fromwhois!~ /^DONE\n$/) { # print STDOUT $fromwhois; while (defined($fromwhois=<$socket>)) { print STDOUT $fromwhois; } exit 1; } } else { $SIG{'HUP'}='quitconnection'; $SIG{'INT'}='quitconnection'; $SIG{'KILL'}='quitconnection'; $SIG{'TERM'}='quitconnection'; while (defined($fromwhois=<$socket>)) { # print STDERR "From whois: ", $fromwhois, "\n"; print STDOUT $fromwhois; } } exit 0 # end of program