\n");
# } else {
# this is a recursive search
# foreach (@result)
# {
# if (/Registrar:\s(.*)/) { $registrar = $1 }
# if (/Whois Server:\s(.*)/) { $newserver = $1 }
# }
# $VALUES{">WHOIS<"} = "$newserver ($registrar)";
# @result=get_whois($fqdn,$newserver,$port,$hostip);
# print("
\n");
# print @result;
# print("
\n");
# }
}
sub ext_list {
foreach $item (@exts) {
print("$item \n");
}
}
sub display_file {
local($file) = @_;
$VALUES{">TITLE_BAR<"} = $MSG{"$file"};
($TEMPLATES{"header"}) && &do_file("header");
do_file($file);
($TEMPLATES{"footer"}) && &do_file("footer");
}
sub do_file {
local($mode) = @_;
local(@FILE,$FILE);
@supported = (">CDOMAIN<",
">REFERER<",
">TLD_LIST<",
">TLD_LIST_TABLE<",
">TLD<",
">RAW_WHOIS<",
">WHOIS<",
">FQDN<",
">2LD<",
">EXT<",
">EXT_LIST<",
">ERRMSG<",
">WIZARD_URL<",
">WIZARD_OUT<",
">GLOBAL_URL<",
">GLOBAL_OUT<",
">SCRIPT_ROOT",
">SCRIPT<",
">SCRIPT_TLD<",
">TITLE_BAR<",
">ORDER_FORM<" );
SWITCH: {
($mode =~ /tld_table/) && do {
@supported = (">CDOMAIN<",'>TLD_LIST<',
'>TLD_LIST_TABLE<',">TITLE_BAR<",
">REFERER<",">SCRIPT<");
last SWITCH;
};
($mode =~ /uerror/) && do {
@supported = (">CDOMAIN<",
">TITLE_BAR<",
">ERRMSG<",
">FQDN<",
">2LD<",
">EXT<",
">TLD<",
">REFERER<");
last SWITCH;
};
}
if (defined($TEMPLATES{$mode})) {
$FILE = $TEMPLATES{$mode};
} else {
script_error("Call to display $mode but $mode not defined in cfg");
}
@FILE = cdopenfile($FILE);
foreach (@FILE) {
foreach $exp (@supported) {
if (/\[$exp\]/i) {
if (defined($FUNCTIONS{"\U$exp"})) {
s/\[$exp\]//g;
$function = $FUNCTIONS{"\U$exp"};
&$function;
} else {
s/\[$exp\]/$VALUES{"\U$exp"}/g;
}
}
}
if (/\[>include\s+(\S+)<\]/i) {
$INCLUDE_FILE = $1;
s/\[>[iI].+\]//g;
@INCLUDE = cdopenfile($INCLUDE_FILE);
foreach $line (@INCLUDE) {
print $line;
}
}
print;
}
}
sub cdopenfile {
local($file) = @_;
local(@FILE);
$tfile = $ROOT_DIR . $file;
open(FILE,"<$tfile") or script_error("Cant open $file\n $!");
@FILE = ;
close(FILE);
return (@FILE);
}
sub Get_ENV {
# The following code snippet was taken from cgi-lib.pl and is
# Copyright (c) 1995 Steven E. Brenner
local ($i, $key, $val, $arglist);
if ($ENV{'REQUEST_METHOD'} eq "GET") {
$in = $ENV{'QUERY_STRING'};
} else {
read(STDIN,$in,$ENV{'CONTENT_LENGTH'});
}
@in = split(/[&;]/,$in);
foreach $i (0 .. $#in) {
$in[$i] =~ s/\+/ /g;
($key, $val) = split(/=/,$in[$i],2); # splits on the first =.
$key =~ s/%(..)/pack("c",hex($1))/ge;
$val =~ s/%(..)/pack("c",hex($1))/ge;
$in{$key} .= "\0" if (defined($in{$key}));
$in{$key} .= $val;
}
return scalar(@in);
}
sub read_config {
#DEFAULTS:
if ( ( defined( $ENV{'SERVER_NAME'} ) )
&& ( defined( $ENV{'REQUEST_URI'} )) ) {
$SCRIPT_URL = "http://" . $ENV{'SERVER_NAME'} . $ENV{'REQUEST_URI'};
}
if ( ( defined( $ENV{'HTTP_REFERER'} ) )) {
$REFERER = $ENV{'HTTP_REFERER'};
}
$FUNCTIONS{">TLD_LIST<"} = "tld_list";
$FUNCTIONS{">TLD_LIST_TABLE<"} = "tld_list_table";
$FUNCTIONS{">EXT_LIST<"} = "ext_list";
$FUNCTIONS{">RAW_WHOIS<"} = "raw_whois";
$FUNCTIONS{">WIZARD_OUT<"} = "wizard_out";
$FUNCTIONS{">GLOBAL_OUT<"} = "global_out";
open(CONFIG,") {
next if /^#/;
next if /^\s+/;
SWITCH: {
/root_dir\s+(\S+)/i && do {
$ROOT_DIR = $1;
last SWITCH;
};
/script_url\s+(\S+)/i && do {
$SCRIPT_URL = $1;
last SWITCH;
};
/log_file\s+(\S+)/i && do {
$LOG_FILE = $1;
last SWITCH;
};
/tld_database\s+(\S+)/i && do {
$TLD_DATABASE = $1;
last SWITCH;
};
/order_url\s+(\S+)/i && do {
$ORDER_FORM = $1;
$VALUES{">ORDER_FORM<"} = $ORDER_FORM;
last SWITCH;
};
/template\s+(\S+)\s+(\S+)/i && do {
$tname = lc($1);
$tfile = $2;
$TEMPLATES{$tname} = $tfile;
last SWITCH;
};
/font\s+(\S+)\s+(".+")/i && do {
$ftype = lc($1);
$fname = $2;
$fname =~ s/\"//g;
$FONTS{$ftype} = $fname;
last SWITCH;
};
/color\s+(\S+)\s+(\S+)/i && do {
$tname = lc($1);
$tcolor = $2;
$COLORS{$tname} = $tcolor;
last SWITCH;
};
/msg\s+(\S+)\s+(".+")/i && do {
$mname = lc($1);
$mval = $2;
$mval =~ s/\"//g;
$MSG{$mname} = $mval;
last SWITCH;
};
/([\s\S]+)/ && do {
$error = $1;
chomp ($error);
print "Unknown keyword or syntax error: $error\n";
last SWITCH;
};
}
}
if ($SCRIPT_URL) {
$VALUES{">SCRIPT<"} = $SCRIPT_URL;
}
if ($VALUES{">SCRIPT<"} =~ /\?/) {
$VALUES{">SCRIPT_ROOT<"} = $SCRIPT_URL . "&root_allowed=1";
$VALUES{">SCRIPT_TLD<"} = $SCRIPT_URL . "&print_tlds=1";
$VALUES{">WIZARD_URL<"} = $SCRIPT_URL . "&show_wizard=1";
$VALUES{">GLOBAL_URL<"} = $SCRIPT_URL . "&show_global=1";
} else {
$VALUES{">SCRIPT_ROOT<"} = $SCRIPT_URL . "?root_allowed=1";
$VALUES{">SCRIPT_TLD<"} = $SCRIPT_URL . "?print_tlds=1";
$VALUES{">WIZARD_URL<"} = $SCRIPT_URL . "?show_wizard=1";
$VALUES{">GLOBAL_URL<"} = $SCRIPT_URL . "?show_global=1";
}
$VALUES{">SCRIPT<"} =~ s/\?print_tlds=1//g;
$VALUES{">SCRIPT<"} =~ s/\&print_tlds=1//g;
$VALUES{">SCRIPT<"} =~ s/\?show_wizard=1//g;
$VALUES{">SCRIPT<"} =~ s/\&show_wizard=1//g;
$VALUES{">SCRIPT<"} =~ s/\?show_global=1//g;
$VALUES{">SCRIPT<"} =~ s/\&show_global=1//g;
if ($REFERER) {
$VALUES{">REFERER<"} = $REFERER;
} else {
$VALUES{">REFERER<"} = $VALUES{">SCRIPT_URL<"};
}
$VALUES{">CDOMAIN<"} =
"CdomainPro 4.1";
}
# Check that we have what we need. This could probably be done with stat()
sub check_required {
$tfile = $ROOT_DIR . $TLD_DATABASE;
open(TEST,"<$tfile") or
script_error("Cannot open file $tfile.\nCheck root_dir in config");
close(TEST);
if($LOG_FILE) {
$tfile = $ROOT_DIR . $LOG_FILE;
open(TEST,"<$tfile") or
script_error("Cannot open file $tfile.\nCheck root_dir in config");
close(TEST);
}
foreach $file (keys %TEMPLATES) {
$tfile = $ROOT_DIR . $TEMPLATES{$file};
open(TEST,"<$tfile") or
script_error("Cannot open file $tfile.\nCheck root_dir in config");
close(TEST);
}
}
#----------------------------------------------------------------
# print_html_header
#
# prints initial HTML header -- required
#----------------------------------------------------------------
sub print_html_header {
print ("Content-Type:text/html\n\n");
}
sub tld_list {
print ("\n");
}
sub tld_list_table {
local($TEXT_FONT) = $FONTS{"text"} ? $FONTS{"text"} : "Arial";
local($TEXT_FONT_SIZE) = $FONTS{"size"} ? $FONTS{"size"} : "-1";
local($BGCOLOR) = $COLORS{"tld_bgcolor"} ?
$FONTS{"tld_bgcolor"} : "#80FFFF";
print <
EOM
$count = 2;
foreach $record (@TLDs) {
next if ($record =~ /^sp\|/);
chomp($record);
@rfields = split('\|',$record);
if ($count % 2 == 0) {
print("
\n");
} else {
print("
\n");
}
++$count;
print("
\n");
print("\t\n");
print("\t.$rfields[0]\n\t
\n");
print("
\n");
print("\t\n");
print("\t$rfields[3]\n
\n");
print("
\n");
}
print <
EOM
}
sub script_error {
local ($error) = @_;
print("
");
print("An error ocurred: $error");
die("$error");
}
#########################################################################
sub internic_down {
#########################################################################
local($fqdn) = @_;
local($TEXT_FONT) = $FONTS{"text"} ? $FONTS{"text"} : "Arial";
local($TEXT_FONT_SIZE) = $FONTS{"size"} ? $FONTS{"size"} : "-1";
print <
I have tried to look up the domain $fqdn several times, but
the InterNIC is reporting that its database is down. Please wait a few
seconds and click on the button below to retry your search,
EOM
if($REFERER) {
print <here to return to the whois Lookup.
EOM
} else {
print <