@EXPORT = qw(%NetConfig);
@ISA = qw(Net::LocalCfg Exporter);
-$VERSION = "1.05"; # $Id: //depot/libnet/Net/Config.pm#9 $
+$VERSION = "1.09"; # $Id: //depot/libnet/Net/Config.pm#16 $
eval { local $SIG{__DIE__}; require Net::LocalCfg };
test_exist => 1,
);
+#
+# Try to get as much configuration info as possible from InternetConfig
+#
+$^O eq 'MacOS' and eval <<'TRY_INTERNET_CONFIG';
+use Mac::InternetConfig;
+
+{
+my %nc = (
+ nntp_hosts => [ $InternetConfig{ kICNNTPHost()} ],
+ pop3_hosts => [ $InternetConfig{ kICMailAccount()} =~ /@(.*)/ ],
+ smtp_hosts => [ $InternetConfig{ kICSMTPHost()} ],
+ ftp_testhost => [ $InternetConfig{ kICFTPHost()} ],
+ ph_hosts => [ $InternetConfig{ kICPhHost()} ],
+ ftp_ext_passive => $InternetConfig{"646F676F€UsePassiveMode"} || 0,
+ ftp_int_passive => $InternetConfig{"646F676F€UsePassiveMode"} || 0,
+ socks_hosts =>
+ $InternetConfig{kICUseSocks()} ? [ $InternetConfig{kICSocksHost()} ] : [],
+ ftp_firewall =>
+ $InternetConfig{kICUseFTPProxy()} ? [ $InternetConfig{kICFTPProxyHost()} ] : [],
+);
+@NetConfig{keys %nc} = values %nc;
+}
+TRY_INTERNET_CONFIG
+
my $file = __FILE__;
my $ref;
$file =~ s/Config.pm/libnet.cfg/;
if ( -f $file ) {
- $ref = eval { do $file };
+ $ref = eval { local $SIG{__DIE__}; do $file };
if (ref($ref) eq 'HASH') {
%NetConfig = (%NetConfig, %{ $ref });
$LIBNET_CFG = $file;
}
}
if ($< == $> and !$CONFIGURE) {
- my $home = eval { (getpwuid($>))[7] } || $ENV{HOME};
+ my $home = eval { local $SIG{__DIE__}; (getpwuid($>))[7] } || $ENV{HOME};
+ $home ||= $ENV{HOMEDRIVE} . ($ENV{HOMEPATH}||'') if defined $ENV{HOMEDRIVE};
if (defined $home) {
$file = $home . "/.libnetrc";
- $ref = eval { do $file } if -f $file;
+ $ref = eval { local $SIG{__DIE__}; do $file } if -f $file;
%NetConfig = (%NetConfig, %{ $ref })
if ref($ref) eq 'HASH';
}
}
my ($k,$v);
while(($k,$v) = each %NetConfig) {
- $v = [ $v ]
- if($k =~ /_hosts$/ && !ref($v));
+ $NetConfig{$k} = [ $v ]
+ if($k =~ /_hosts$/ and $k ne "test_hosts" and defined($v) and !ref($v));
}
-# Take a hostname and determine if it is inside te firewall
+# Take a hostname and determine if it is inside the firewall
sub requires_firewall {
shift; # ignore package
=item ftp_firewall
-If you have an FTP proxy firewall (B<NOT> a HTTP or SOCKS firewall)
+If you have an FTP proxy firewall (B<NOT> an HTTP or SOCKS firewall)
then this value should be set to the firewall hostname. If your firewall
does not listen to port 21, then this value should be set to
C<"hostname:port"> (eg C<"hostname:99">)
=for html <hr>
-I<$Id: //depot/libnet/Net/Config.pm#9 $>
+I<$Id: //depot/libnet/Net/Config.pm#16 $>
=cut