Blame Configure

Packit bd23c0
#!perl
Packit bd23c0
#
Packit bd23c0
# $Id: Configure,v 1.8 1997/03/04 09:22:32 gbarr Exp $
Packit bd23c0
Packit bd23c0
use 5.008001;
Packit bd23c0
Packit bd23c0
use strict;
Packit bd23c0
use warnings;
Packit bd23c0
Packit bd23c0
use ExtUtils::MakeMaker qw(prompt);
Packit bd23c0
use Getopt::Std;
Packit bd23c0
use IO::File;
Packit bd23c0
Packit bd23c0
## no critic (Subroutines::ProhibitSubroutinePrototypes)
Packit bd23c0
Packit bd23c0
our($opt_d, $opt_o);
Packit bd23c0
Packit bd23c0
##
Packit bd23c0
##
Packit bd23c0
##
Packit bd23c0
Packit bd23c0
my %cfg = ();
Packit bd23c0
my @cfg = ();
Packit bd23c0
Packit bd23c0
my($libnet_cfg,$msg,$ans,$def,$have_old);
Packit bd23c0
Packit bd23c0
##
Packit bd23c0
##
Packit bd23c0
##
Packit bd23c0
Packit bd23c0
sub valid_host
Packit bd23c0
{
Packit bd23c0
 my $h = shift;
Packit bd23c0
Packit bd23c0
 defined($h) && (($cfg{'test_exist'} == 0) || gethostbyname($h));
Packit bd23c0
}
Packit bd23c0
Packit bd23c0
##
Packit bd23c0
##
Packit bd23c0
##
Packit bd23c0
Packit bd23c0
sub test_hostnames (\@)
Packit bd23c0
{
Packit bd23c0
 my $hlist = shift;
Packit bd23c0
 my @h = ();
Packit bd23c0
 my $err = 0;
Packit bd23c0
Packit bd23c0
 foreach my $host (@$hlist)
Packit bd23c0
  {
Packit bd23c0
   if(valid_host($host))
Packit bd23c0
    {
Packit bd23c0
     push(@h, $host);
Packit bd23c0
     next;
Packit bd23c0
    }
Packit bd23c0
   warn "Bad hostname: '$host'\n";
Packit bd23c0
   $err++;
Packit bd23c0
  }
Packit bd23c0
 @$hlist = @h;
Packit bd23c0
 $err ? join(" ",@h) : undef;
Packit bd23c0
}
Packit bd23c0
Packit bd23c0
##
Packit bd23c0
##
Packit bd23c0
##
Packit bd23c0
Packit bd23c0
sub Prompt
Packit bd23c0
{
Packit bd23c0
 my($prompt,$def) = @_;
Packit bd23c0
Packit bd23c0
 $def = "" unless defined $def;
Packit bd23c0
Packit bd23c0
 chomp($prompt);
Packit bd23c0
Packit bd23c0
 if($opt_d)
Packit bd23c0
  {
Packit bd23c0
   print $prompt,," [",$def,"]\n";
Packit bd23c0
   return $def;
Packit bd23c0
  }
Packit bd23c0
 prompt($prompt,$def);
Packit bd23c0
}
Packit bd23c0
Packit bd23c0
##
Packit bd23c0
##
Packit bd23c0
##
Packit bd23c0
Packit bd23c0
sub get_host_list
Packit bd23c0
{
Packit bd23c0
 my($prompt,$def) = @_;
Packit bd23c0
Packit bd23c0
 $def = join(" ",@$def) if ref($def);
Packit bd23c0
Packit bd23c0
 my @hosts;
Packit bd23c0
Packit bd23c0
 do
Packit bd23c0
  {
Packit bd23c0
   my $ans = Prompt($prompt,$def);
Packit bd23c0
Packit bd23c0
   $ans =~ s/(\A\s+|\s+\Z)//g;
Packit bd23c0
Packit bd23c0
   @hosts = split(/\s+/, $ans);
Packit bd23c0
  }
Packit bd23c0
 while(@hosts && defined($def = test_hostnames(@hosts)));
Packit bd23c0
Packit bd23c0
 \@hosts;
Packit bd23c0
}
Packit bd23c0
Packit bd23c0
##
Packit bd23c0
##
Packit bd23c0
##
Packit bd23c0
Packit bd23c0
sub get_hostname
Packit bd23c0
{
Packit bd23c0
 my($prompt,$def) = @_;
Packit bd23c0
Packit bd23c0
 my $host;
Packit bd23c0
Packit bd23c0
 while(1)
Packit bd23c0
  {
Packit bd23c0
   my $ans = Prompt($prompt,$def);
Packit bd23c0
   $host = ($ans =~ /(\S*)/)[0];
Packit bd23c0
   last
Packit bd23c0
        if(!length($host) || valid_host($host));
Packit bd23c0
Packit bd23c0
   $def =""
Packit bd23c0
        if $def eq $host;
Packit bd23c0
Packit bd23c0
   print <<"EDQ";
Packit bd23c0
Packit bd23c0
*** ERROR:
Packit bd23c0
    Hostname `$host' does not seem to exist, please enter again
Packit bd23c0
    or a single space to clear any default
Packit bd23c0
Packit bd23c0
EDQ
Packit bd23c0
  }
Packit bd23c0
Packit bd23c0
 length $host
Packit bd23c0
        ? $host
Packit bd23c0
        : undef;
Packit bd23c0
}
Packit bd23c0
Packit bd23c0
##
Packit bd23c0
##
Packit bd23c0
##
Packit bd23c0
Packit bd23c0
sub get_bool ($$)
Packit bd23c0
{
Packit bd23c0
 my($prompt,$def) = @_;
Packit bd23c0
Packit bd23c0
 chomp($prompt);
Packit bd23c0
Packit bd23c0
 my $val = Prompt($prompt,$def ? "yes" : "no");
Packit bd23c0
Packit bd23c0
 $val =~ /^y/i ? 1 : 0;
Packit bd23c0
}
Packit bd23c0
Packit bd23c0
##
Packit bd23c0
##
Packit bd23c0
##
Packit bd23c0
Packit bd23c0
sub get_netmask ($$)
Packit bd23c0
{
Packit bd23c0
 my($prompt,$def) = @_;
Packit bd23c0
Packit bd23c0
 chomp($prompt);
Packit bd23c0
Packit bd23c0
 my %list;
Packit bd23c0
 @list{@$def} = ();
Packit bd23c0
Packit bd23c0
MASK:
Packit bd23c0
 while(1) {
Packit bd23c0
   my $bad = 0;
Packit bd23c0
   my $ans = Prompt($prompt) or last;
Packit bd23c0
Packit bd23c0
   if($ans eq '*') {
Packit bd23c0
     %list = ();
Packit bd23c0
     next;
Packit bd23c0
   }
Packit bd23c0
Packit bd23c0
   if($ans eq '=') {
Packit bd23c0
     print "\n",( %list ? join("\n", sort keys %list) : 'none'),"\n\n";
Packit bd23c0
     next;
Packit bd23c0
   }
Packit bd23c0
Packit bd23c0
   unless ($ans =~ m{^\s*(?:(-?\s*)(\d+(?:\.\d+){0,3})/(\d+))}) {
Packit bd23c0
     warn "Bad netmask '$ans'\n";
Packit bd23c0
     next;
Packit bd23c0
   }
Packit bd23c0
Packit bd23c0
   my($remove,$bits,@ip) = ($1,$3,split(/\./, $2),0,0,0);
Packit bd23c0
   if ( $ip[0] < 1 || $bits < 1 || $bits > 32) {
Packit bd23c0
     warn "Bad netmask '$ans'\n";
Packit bd23c0
     next MASK;
Packit bd23c0
   }
Packit bd23c0
   foreach my $byte (@ip) {
Packit bd23c0
     if ( $byte > 255 ) {
Packit bd23c0
       warn "Bad netmask '$ans'\n";
Packit bd23c0
       next MASK;
Packit bd23c0
     }
Packit bd23c0
   } 
Packit bd23c0
Packit bd23c0
   my $mask = sprintf("%d.%d.%d.%d/%d",@ip[0..3],$bits); 
Packit bd23c0
Packit bd23c0
   if ($remove) {
Packit bd23c0
     delete $list{$mask};
Packit bd23c0
   }
Packit bd23c0
   else {
Packit bd23c0
     $list{$mask} = 1;
Packit bd23c0
   }
Packit bd23c0
Packit bd23c0
  }
Packit bd23c0
Packit bd23c0
 [ keys %list ];
Packit bd23c0
}
Packit bd23c0
Packit bd23c0
##
Packit bd23c0
##
Packit bd23c0
##
Packit bd23c0
Packit bd23c0
sub default_hostname
Packit bd23c0
{
Packit bd23c0
 my @host;
Packit bd23c0
Packit bd23c0
 foreach my $host (@_)
Packit bd23c0
  {
Packit bd23c0
   if(defined($host) && valid_host($host))
Packit bd23c0
    {
Packit bd23c0
     return $host
Packit bd23c0
        unless wantarray;
Packit bd23c0
     push(@host,$host);
Packit bd23c0
    }
Packit bd23c0
  }
Packit bd23c0
Packit bd23c0
 return wantarray ? @host : undef;
Packit bd23c0
}
Packit bd23c0
Packit bd23c0
##
Packit bd23c0
##
Packit bd23c0
##
Packit bd23c0
Packit bd23c0
getopts('do:');
Packit bd23c0
Packit bd23c0
$libnet_cfg = "libnet.cfg"
Packit bd23c0
        unless(defined($libnet_cfg = $opt_o));
Packit bd23c0
Packit bd23c0
my %oldcfg = ();
Packit bd23c0
Packit bd23c0
{
Packit bd23c0
no warnings 'once';
Packit bd23c0
$Net::Config::CONFIGURE = 1; # Suppress load of user overrides
Packit bd23c0
}
Packit bd23c0
if( -f $libnet_cfg )
Packit bd23c0
 {
Packit bd23c0
  %oldcfg = ( %{ do $libnet_cfg } );
Packit bd23c0
 }
Packit bd23c0
elsif (eval { require Net::Config }) 
Packit bd23c0
 {
Packit bd23c0
  $have_old = 1;
Packit bd23c0
  no warnings 'once';
Packit bd23c0
  %oldcfg = %Net::Config::NetConfig;
Packit bd23c0
 }
Packit bd23c0
Packit bd23c0
map { $cfg{lc $_} = $cfg{$_}; delete $cfg{$_} if /[A-Z]/ } keys %cfg;
Packit bd23c0
Packit bd23c0
$oldcfg{'test_exist'} = 1 unless exists $oldcfg{'test_exist'};
Packit bd23c0
$oldcfg{'test_hosts'} = 1 unless exists $oldcfg{'test_hosts'};
Packit bd23c0
Packit bd23c0
#---------------------------------------------------------------------------
Packit bd23c0
Packit bd23c0
if($have_old && !$opt_d)
Packit bd23c0
 {
Packit bd23c0
  $msg = <
Packit bd23c0
Packit bd23c0
Ah, I see you already have installed libnet before.
Packit bd23c0
Packit bd23c0
Do you want to modify/update your configuration (y|n) ?
Packit bd23c0
EDQ
Packit bd23c0
Packit bd23c0
 $opt_d = 1
Packit bd23c0
        unless get_bool($msg,0);
Packit bd23c0
 }
Packit bd23c0
Packit bd23c0
#---------------------------------------------------------------------------
Packit bd23c0
Packit bd23c0
$msg = <
Packit bd23c0
Packit bd23c0
This script will prompt you to enter hostnames that can be used as
Packit bd23c0
defaults for some of the modules in the libnet distribution.
Packit bd23c0
Packit bd23c0
To ensure that you do not enter an invalid hostname, I can perform a
Packit bd23c0
lookup on each hostname you enter. If your internet connection is via
Packit bd23c0
a dialup line then you may not want me to perform these lookups, as
Packit bd23c0
it will require you to be on-line.
Packit bd23c0
Packit bd23c0
Do you want me to perform hostname lookups (y|n) ?
Packit bd23c0
EDQ
Packit bd23c0
Packit bd23c0
$cfg{'test_exist'} = get_bool($msg, $oldcfg{'test_exist'});
Packit bd23c0
Packit bd23c0
print <
Packit bd23c0
Packit bd23c0
*** WARNING *** WARNING *** WARNING *** WARNING *** WARNING ***
Packit bd23c0
Packit bd23c0
OK I will not check if the hostnames you give are valid
Packit bd23c0
so be very cafeful
Packit bd23c0
Packit bd23c0
*** WARNING *** WARNING *** WARNING *** WARNING *** WARNING ***
Packit bd23c0
EDQ
Packit bd23c0
Packit bd23c0
Packit bd23c0
#---------------------------------------------------------------------------
Packit bd23c0
Packit bd23c0
print <
Packit bd23c0
Packit bd23c0
The following questions all require a list of host names, separated
Packit bd23c0
with spaces. If you do not have a host available for any of the
Packit bd23c0
services, then enter a single space, followed by <CR>. To accept the
Packit bd23c0
default, hit <CR>
Packit bd23c0
Packit bd23c0
EDQ
Packit bd23c0
Packit bd23c0
$msg = 'Enter a list of available NNTP hosts :';
Packit bd23c0
Packit bd23c0
$def = $oldcfg{'nntp_hosts'} ||
Packit bd23c0
        [ default_hostname($ENV{NNTPSERVER},$ENV{NEWSHOST},'news') ];
Packit bd23c0
Packit bd23c0
$cfg{'nntp_hosts'} = get_host_list($msg,$def);
Packit bd23c0
Packit bd23c0
#---------------------------------------------------------------------------
Packit bd23c0
Packit bd23c0
$msg = 'Enter a list of available SMTP hosts :';
Packit bd23c0
Packit bd23c0
$def = $oldcfg{'smtp_hosts'} ||
Packit bd23c0
        [ default_hostname(split(/:/,$ENV{SMTPHOSTS} || ""), 'mailhost') ];
Packit bd23c0
Packit bd23c0
$cfg{'smtp_hosts'} = get_host_list($msg,$def);
Packit bd23c0
Packit bd23c0
#---------------------------------------------------------------------------
Packit bd23c0
Packit bd23c0
$msg = 'Enter a list of available POP3 hosts :';
Packit bd23c0
Packit bd23c0
$def = $oldcfg{'pop3_hosts'} || [];
Packit bd23c0
Packit bd23c0
$cfg{'pop3_hosts'} = get_host_list($msg,$def);
Packit bd23c0
Packit bd23c0
#---------------------------------------------------------------------------
Packit bd23c0
Packit bd23c0
$msg = 'Enter a list of available SNPP hosts :';
Packit bd23c0
Packit bd23c0
$def = $oldcfg{'snpp_hosts'} || [];
Packit bd23c0
Packit bd23c0
$cfg{'snpp_hosts'} = get_host_list($msg,$def);
Packit bd23c0
Packit bd23c0
#---------------------------------------------------------------------------
Packit bd23c0
Packit bd23c0
$msg = 'Enter a list of available PH Hosts   :'  ;
Packit bd23c0
Packit bd23c0
$def = $oldcfg{'ph_hosts'} ||
Packit bd23c0
        [ default_hostname('dirserv') ];
Packit bd23c0
Packit bd23c0
$cfg{'ph_hosts'}   =  get_host_list($msg,$def);
Packit bd23c0
Packit bd23c0
#---------------------------------------------------------------------------
Packit bd23c0
Packit bd23c0
$msg = 'Enter a list of available TIME Hosts   :'  ;
Packit bd23c0
Packit bd23c0
$def = $oldcfg{'time_hosts'} || [];
Packit bd23c0
Packit bd23c0
$cfg{'time_hosts'} = get_host_list($msg,$def);
Packit bd23c0
Packit bd23c0
#---------------------------------------------------------------------------
Packit bd23c0
Packit bd23c0
$msg = 'Enter a list of available DAYTIME Hosts   :'  ;
Packit bd23c0
Packit bd23c0
$def = $oldcfg{'daytime_hosts'} || $oldcfg{'time_hosts'};
Packit bd23c0
Packit bd23c0
$cfg{'daytime_hosts'} = get_host_list($msg,$def);
Packit bd23c0
Packit bd23c0
#---------------------------------------------------------------------------
Packit bd23c0
Packit bd23c0
$msg = <
Packit bd23c0
Packit bd23c0
Do you have a firewall/ftp proxy  between your machine and the internet 
Packit bd23c0
Packit bd23c0
If you use a SOCKS firewall answer no
Packit bd23c0
Packit bd23c0
(y|n) ?
Packit bd23c0
EDQ
Packit bd23c0
Packit bd23c0
if(get_bool($msg,0)) {
Packit bd23c0
Packit bd23c0
  $msg = <<'EDQ';
Packit bd23c0
What series of FTP commands do you need to send to your
Packit bd23c0
firewall to connect to an external host.
Packit bd23c0
Packit bd23c0
user/pass     => external user & password
Packit bd23c0
fwuser/fwpass => firewall user & password
Packit bd23c0
Packit bd23c0
0) None
Packit bd23c0
1) -----------------------
Packit bd23c0
     USER user@remote.host
Packit bd23c0
     PASS pass
Packit bd23c0
2) -----------------------
Packit bd23c0
     USER fwuser
Packit bd23c0
     PASS fwpass
Packit bd23c0
     USER user@remote.host
Packit bd23c0
     PASS pass
Packit bd23c0
3) -----------------------
Packit bd23c0
     USER fwuser
Packit bd23c0
     PASS fwpass
Packit bd23c0
     SITE remote.site
Packit bd23c0
     USER user
Packit bd23c0
     PASS pass
Packit bd23c0
4) -----------------------
Packit bd23c0
     USER fwuser
Packit bd23c0
     PASS fwpass
Packit bd23c0
     OPEN remote.site
Packit bd23c0
     USER user
Packit bd23c0
     PASS pass
Packit bd23c0
5) -----------------------
Packit bd23c0
     USER user@fwuser@remote.site
Packit bd23c0
     PASS pass@fwpass
Packit bd23c0
6) -----------------------
Packit bd23c0
     USER fwuser@remote.site
Packit bd23c0
     PASS fwpass
Packit bd23c0
     USER user
Packit bd23c0
     PASS pass
Packit bd23c0
7) -----------------------
Packit bd23c0
     USER user@remote.host
Packit bd23c0
     PASS pass
Packit bd23c0
     AUTH fwuser
Packit bd23c0
     RESP fwpass
Packit bd23c0
Packit bd23c0
Choice:
Packit bd23c0
EDQ
Packit bd23c0
 $def = exists $oldcfg{'ftp_firewall_type'}  ? $oldcfg{'ftp_firewall_type'} : 1;
Packit bd23c0
 $ans = Prompt($msg,$def);
Packit bd23c0
 $cfg{'ftp_firewall_type'} = 0+$ans;
Packit bd23c0
 $def = $oldcfg{'ftp_firewall'} || $ENV{FTP_FIREWALL};
Packit bd23c0
Packit bd23c0
 $cfg{'ftp_firewall'} = get_hostname("FTP proxy hostname :", $def);
Packit bd23c0
}
Packit bd23c0
else {
Packit bd23c0
 delete $cfg{'ftp_firewall'};
Packit bd23c0
}
Packit bd23c0
Packit bd23c0
Packit bd23c0
#---------------------------------------------------------------------------
Packit bd23c0
Packit bd23c0
if (defined $cfg{'ftp_firewall'})
Packit bd23c0
 {
Packit bd23c0
  print <
Packit bd23c0
Packit bd23c0
By default Net::FTP assumes that it only needs to use a firewall if it
Packit bd23c0
cannot resolve the name of the host given. This only works if your DNS
Packit bd23c0
system is setup to only resolve internal hostnames. If this is not the
Packit bd23c0
case and your DNS will resolve external hostnames, then another method
Packit bd23c0
is needed. Net::Config can do this if you provide the netmasks that
Packit bd23c0
describe your internal network. Each netmask should be entered in the
Packit bd23c0
form x.x.x.x/y, for example 127.0.0.0/8 or 214.8.16.32/24
Packit bd23c0
Packit bd23c0
EDQ
Packit bd23c0
$def = [];
Packit bd23c0
if(ref($oldcfg{'local_netmask'}))
Packit bd23c0
 {
Packit bd23c0
  $def = $oldcfg{'local_netmask'};
Packit bd23c0
   print "Your current netmasks are :\n\n\t",
Packit bd23c0
        join("\n\t",@{$def}),"\n\n";
Packit bd23c0
 }
Packit bd23c0
Packit bd23c0
print "
Packit bd23c0
Enter one netmask at each prompt, prefix with a - to remove a netmask
Packit bd23c0
from the list, enter a '*' to clear the whole list, an '=' to show the
Packit bd23c0
current list and an empty line to continue with Configure.
Packit bd23c0
Packit bd23c0
";
Packit bd23c0
Packit bd23c0
  my $mask = get_netmask("netmask :",$def);
Packit bd23c0
  $cfg{'local_netmask'} = $mask if ref($mask) && @$mask;
Packit bd23c0
 }
Packit bd23c0
Packit bd23c0
#---------------------------------------------------------------------------
Packit bd23c0
Packit bd23c0
###$msg =<
Packit bd23c0
###
Packit bd23c0
###SOCKS is a commonly used firewall protocol. If you use SOCKS firewalls
Packit bd23c0
###then enter a list of hostames
Packit bd23c0
###
Packit bd23c0
###Enter a list of available SOCKS hosts :
Packit bd23c0
###EDQ
Packit bd23c0
###
Packit bd23c0
###$def = $cfg{'socks_hosts'} ||
Packit bd23c0
###     [ default_hostname($ENV{SOCKS5_SERVER},
Packit bd23c0
###                        $ENV{SOCKS_SERVER},
Packit bd23c0
###                        $ENV{SOCKS4_SERVER}) ];
Packit bd23c0
###
Packit bd23c0
###$cfg{'socks_hosts'}   =  get_host_list($msg,$def);
Packit bd23c0
Packit bd23c0
#---------------------------------------------------------------------------
Packit bd23c0
Packit bd23c0
print <
Packit bd23c0
Packit bd23c0
Normally when FTP needs a data connection the client tells the server
Packit bd23c0
a port to connect to, and the server initiates a connection to the client.
Packit bd23c0
Packit bd23c0
Some setups, in particular firewall setups, can/do not work using this
Packit bd23c0
protocol. In these situations the client must make the connection to the
Packit bd23c0
server, this is called a passive transfer.
Packit bd23c0
EDQ
Packit bd23c0
Packit bd23c0
if (defined $cfg{'ftp_firewall'}) {
Packit bd23c0
  $msg = "\nShould all FTP connections via a firewall/proxy be passive (y|n) ?";
Packit bd23c0
Packit bd23c0
  $def = $oldcfg{'ftp_ext_passive'} || 0;
Packit bd23c0
Packit bd23c0
  $cfg{'ftp_ext_passive'} = get_bool($msg,$def);
Packit bd23c0
Packit bd23c0
  $msg = "\nShould all other FTP connections be passive (y|n) ?";
Packit bd23c0
Packit bd23c0
}
Packit bd23c0
else {
Packit bd23c0
  $msg = "\nShould all FTP connections be passive (y|n) ?";
Packit bd23c0
}
Packit bd23c0
Packit bd23c0
$def = $oldcfg{'ftp_int_passive'} || 0;
Packit bd23c0
Packit bd23c0
$cfg{'ftp_int_passive'} = get_bool($msg,$def);
Packit bd23c0
Packit bd23c0
Packit bd23c0
#---------------------------------------------------------------------------
Packit bd23c0
Packit bd23c0
$def = $oldcfg{'inet_domain'} || $ENV{LOCALDOMAIN};
Packit bd23c0
Packit bd23c0
$ans = Prompt("\nWhat is your local internet domain name :",$def);
Packit bd23c0
Packit bd23c0
$cfg{'inet_domain'} = ($ans =~ /(\S+)/)[0];
Packit bd23c0
Packit bd23c0
#---------------------------------------------------------------------------
Packit bd23c0
Packit bd23c0
$msg = <
Packit bd23c0
Packit bd23c0
If you specified some default hosts above, it is possible for me to
Packit bd23c0
do some basic tests when you run `make test'
Packit bd23c0
Packit bd23c0
This will cause `make test' to be quite a bit slower and, if your
Packit bd23c0
internet connection is via dialup, will require you to be on-line
Packit bd23c0
unless the hosts are local.
Packit bd23c0
Packit bd23c0
Do you want me to run these tests (y|n) ?
Packit bd23c0
EDQ
Packit bd23c0
Packit bd23c0
$cfg{'test_hosts'} = get_bool($msg,$oldcfg{'test_hosts'});
Packit bd23c0
Packit bd23c0
#---------------------------------------------------------------------------
Packit bd23c0
Packit bd23c0
$msg = <
Packit bd23c0
Packit bd23c0
To allow Net::FTP to be tested I will need a hostname. This host
Packit bd23c0
should allow anonymous access and have a /pub directory
Packit bd23c0
Packit bd23c0
What host can I use :
Packit bd23c0
EDQ
Packit bd23c0
Packit bd23c0
$cfg{'ftp_testhost'} = get_hostname($msg,$oldcfg{'ftp_testhost'})
Packit bd23c0
        if $cfg{'test_hosts'};
Packit bd23c0
Packit bd23c0
Packit bd23c0
print "\n";
Packit bd23c0
Packit bd23c0
#---------------------------------------------------------------------------
Packit bd23c0
Packit bd23c0
my $fh = IO::File->new($libnet_cfg, "w") or
Packit bd23c0
        die "Cannot create `$libnet_cfg': $!";
Packit bd23c0
Packit bd23c0
print "Writing $libnet_cfg\n";
Packit bd23c0
Packit bd23c0
print $fh "{\n";
Packit bd23c0
Packit bd23c0
foreach my $key (keys %cfg) {
Packit bd23c0
    my $val = $cfg{$key};
Packit bd23c0
    if(!defined($val)) {
Packit bd23c0
        $val = "undef";
Packit bd23c0
    }
Packit bd23c0
    elsif(ref($val)) {
Packit bd23c0
        $val = '[' . join(",",
Packit bd23c0
            map {
Packit bd23c0
                my $v = "undef";
Packit bd23c0
                if(defined $_) {
Packit bd23c0
                    ($v = $_) =~ s/'/\'/sog;
Packit bd23c0
                    $v = "'" . $v . "'";
Packit bd23c0
                }
Packit bd23c0
                $v;
Packit bd23c0
            } @$val ) . ']';
Packit bd23c0
    }
Packit bd23c0
    else {
Packit bd23c0
        $val =~ s/'/\'/sog;
Packit bd23c0
        $val = "'" . $val . "'" if $val =~ /\D/;
Packit bd23c0
    }
Packit bd23c0
    print $fh "\t'",$key,"' => ",$val,",\n";
Packit bd23c0
}
Packit bd23c0
Packit bd23c0
print $fh "}\n";
Packit bd23c0
Packit bd23c0
$fh->close;
Packit bd23c0
Packit bd23c0
############################################################################
Packit bd23c0
############################################################################
Packit bd23c0
Packit bd23c0
exit 0;