-#!/usr/bin/perl -w
-
# Part of this code was borrowed from Richard Jones's Net::FTPServer
# http://www.annexia.org/freeware/netftpserver
package FTPServer;
use strict;
+use warnings;
use Cwd;
use Socket;
{
my %_attr_data = ( # DEFAULT
_localAddr => 'localhost',
- _localPort => 8021,
+ _localPort => undef,
_reuseAddr => 1,
_rootDir => Cwd::getcwd(),
);
$self->{$attrname} = $self->_default_for($attrname);
}
}
+ # create server socket
+ "0" =~ /(0)/; # Perl 5.7 / IO::Socket::INET bug workaround.
+ $self->{_server_sock}
+ = IO::Socket::INET->new (LocalHost => $self->{_localAddr},
+ LocalPort => $self->{_localPort},
+ Listen => 1,
+ Reuse => $self->{_reuseAddr},
+ Proto => 'tcp',
+ Type => SOCK_STREAM)
+ or die "bind: $!";
return $self;
}
my $old_ils = $/;
$/ = "\r\n";
- # create server socket
- "0" =~ /(0)/; # Perl 5.7 / IO::Socket::INET bug workaround.
- my $server_sock = IO::Socket::INET->new (LocalHost => $self->{_localAddr},
- LocalPort => $self->{_localPort},
- Listen => 1,
- Reuse => $self->{_reuseAddr},
- Proto => 'tcp',
- Type => SOCK_STREAM) or die "bind: $!";
-
if (!$initialized) {
$synch_callback->();
$initialized = 1;
}
$SIG{CHLD} = sub { wait };
+ my $server_sock = $self->{_server_sock};
# the accept loop
while (my $client_addr = accept (my $socket, $server_sock))
$/ = $old_ils;
}
+sub sockport {
+ my $self = shift;
+ return $self->{_server_sock}->sockport;
+}
+
1;
# vim: et ts=4 sw=4