home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 10 Tools / 10-Tools.zip / perl_ste.zip / auto / Net / FTP / new.al < prev    next >
Text File  |  1997-11-28  |  1KB  |  65 lines

  1. # NOTE: Derived from ./blib/lib/Net/FTP.pm.  Changes made here will be lost.
  2. package Net::FTP;
  3.  
  4. sub new
  5. {
  6.  my $pkg  = shift;
  7.  my $peer = shift;
  8.  my %arg  = @_; 
  9.  
  10.  my $host = $peer;
  11.  my $fire = undef;
  12.  
  13.  # Should I use Net::Ping here ?? --GMB
  14.  if(exists($arg{Firewall}) || !defined(inet_aton($peer)))
  15.   {
  16.    $fire = $arg{Firewall}
  17.     || $ENV{FTP_FIREWALL}
  18.     || $NetConfig{ftp_firewall}
  19.     || undef;
  20.  
  21.    if(defined $fire)
  22.     {
  23.      $peer = $fire;
  24.      delete $arg{Port};
  25.     }
  26.   }
  27.  
  28.  my $ftp = $pkg->SUPER::new(PeerAddr => $peer, 
  29.                 PeerPort => $arg{Port} || 'ftp(21)',
  30.                 Proto    => 'tcp',
  31.                 Timeout  => defined $arg{Timeout}
  32.                         ? $arg{Timeout}
  33.                         : 120
  34.                ) or return undef;
  35.  
  36.  ${*$ftp}{'net_ftp_host'}     = $host;        # Remote hostname
  37.  ${*$ftp}{'net_ftp_type'}     = 'A';        # ASCII/binary/etc mode
  38.  
  39.  ${*$ftp}{'net_ftp_firewall'} = $fire
  40.     if(defined $fire);
  41.  
  42.  ${*$ftp}{'net_ftp_passive'} = int
  43.     exists $arg{Passive}
  44.         ? $arg{Passive}
  45.         : exists $ENV{FTP_PASSIVE}
  46.         ? $ENV{FTP_PASSIVE}
  47.         : defined $fire
  48.             ? $NetConfig{ftp_ext_passive}
  49.             : $NetConfig{ftp_int_passive};    # Whew! :-)
  50.  
  51.  $ftp->autoflush(1);
  52.  
  53.  $ftp->debug(exists $arg{Debug} ? $arg{Debug} : undef);
  54.  
  55.  unless ($ftp->response() == CMD_OK)
  56.   {
  57.    $ftp->close();
  58.    undef $ftp;
  59.   }
  60.  
  61.  $ftp;
  62. }
  63.  
  64. 1;
  65.