home *** CD-ROM | disk | FTP | other *** search
/ CLIX - Fazer Clix Custa Nix / CLIX-CD.cdr / mac / lib / URI / URL / ftp.pm < prev    next >
Text File  |  1997-08-18  |  1KB  |  75 lines

  1. package URI::URL::ftp;
  2. require URI::URL::_generic;
  3. @ISA = qw(URI::URL::_generic);
  4.  
  5. sub default_port { 21 }
  6.  
  7. sub _parse {
  8.     my($self, $init) = @_;
  9.     # The ftp URLs can't have any query string
  10.     $self->URI::URL::_generic::_parse($init, qw(netloc path params frag));
  11.     1;
  12. }
  13.  
  14.  
  15. sub user
  16. {
  17.     my($self, @val) = @_;
  18.     my $old = $self->SUPER::user(@val);
  19.     defined $old ? $old : "anonymous";
  20. }
  21.  
  22. BEGIN {
  23.     $whoami = undef;
  24.     $fqdn   = undef;
  25. }
  26.  
  27. sub password
  28. {
  29.     my($self, @val) = @_;
  30.     my $old = $self->SUPER::password(@val);
  31.     unless (defined $old) {
  32.     my $user = $self->user;
  33.     if ($user eq 'anonymous' || $user eq 'ftp') {
  34.         # anonymous ftp login password
  35.         unless (defined $fqdn) {
  36.         eval {
  37.             require Net::Domain;
  38.             $fqdn = Net::Domain::hostfqdn();
  39.         };
  40.         if ($@) {
  41.             $fqdn = '';
  42.         }
  43.         }
  44.         unless (defined $whoami) {
  45.         $whoami = $ENV{USER} || $ENV{LOGNAME} || $ENV{USERNAME};
  46.         unless ($whoami) {
  47.             if ($^O eq 'MSWin32') { $whoami = Win32::LoginName() }
  48.             else                  { chomp($whoami = `whoami`) }
  49.         }
  50.         }
  51.         $old = "$whoami\@$fqdn";
  52.     } else {
  53.         $old = "";
  54.     }
  55.     }
  56.     $old;
  57. }
  58.  
  59. sub crack
  60. {
  61.     my $self = shift;
  62.     my @c = $self->SUPER::crack;
  63.     if ($c[3] && !$c[1]) {
  64.     # hostname defined, but user is undefined
  65.     $c[1] = $self->user;
  66.     $c[2] = $self->password;
  67.     }
  68.     @c;
  69. }
  70.  
  71. *query  = \&URI::URL::bad_method;
  72. *equery = \&URI::URL::bad_method;
  73.  
  74. 1;
  75.