File: ftp.pm

package info (click to toggle)
liburi-perl 1.04-2
  • links: PTS
  • area: main
  • in suites: potato
  • size: 464 kB
  • ctags: 184
  • sloc: perl: 2,488; makefile: 53; sh: 17
file content (58 lines) | stat: -rw-r--r-- 1,149 bytes parent folder | download | duplicates (6)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
package URI::ftp;

require URI::_server;
require URI::_userpass;
@ISA=qw(URI::_server URI::_userpass);

use strict;
use vars qw($whoami $fqdn);
use URI::Escape qw(uri_unescape);

sub default_port { 21 }

sub path { shift->path_query(@_) }  # XXX

sub _user     { shift->SUPER::user(@_);     }
sub _password { shift->SUPER::password(@_); }

sub user
{
    my $self = shift;
    my $user = $self->_user(@_);
    $user = "anonymous" unless defined $user;
    $user;
}

sub password
{
    my $self = shift;
    my $pass = $self->_password(@_);
    unless (defined $pass) {
	my $user = $self->user;
	if ($user eq 'anonymous' || $user eq 'ftp') {
	    # anonymous ftp login password
	    unless (defined $fqdn) {
		eval {
		    require Net::Domain;
		    $fqdn = Net::Domain::hostfqdn();
		};
		if ($@) {
		    $fqdn = '';
		}
	    }
	    unless (defined $whoami) {
		$whoami = $ENV{USER} || $ENV{LOGNAME} || $ENV{USERNAME};
		unless ($whoami) {
		    if ($^O eq 'MSWin32') { $whoami = Win32::LoginName() }
		    else {
		        $whoami = getlogin || getpwuid($<) || 'unknown';
		    }
		}
	    }
	    $pass = "$whoami\@$fqdn";
	}
    }
    $pass;
}

1;