mirror of
https://github.com/archlinuxarm/PKGBUILDs.git
synced 2024-11-28 22:57:37 +00:00
121 lines
3.2 KiB
Perl
121 lines
3.2 KiB
Perl
#! /usr/bin/perl
|
|
|
|
# (C) 2001-2004 Aristotle Pagaltzis
|
|
# derived from code (C) 2001-2002 Frank Denis and Matthias Andree
|
|
|
|
use strict;
|
|
|
|
my ($conffile, @flg) = @ARGV;
|
|
|
|
my $PUREFTPD;
|
|
-x && ($PUREFTPD=$_, last) for qw(
|
|
${exec_prefix}/sbin/pure-ftpd
|
|
/usr/local/pure-ftpd/sbin/pure-ftpd
|
|
/usr/local/pureftpd/sbin/pure-ftpd
|
|
/usr/local/sbin/pure-ftpd
|
|
/usr/sbin/pure-ftpd
|
|
);
|
|
|
|
my %simple_switch_for = (
|
|
IPV4Only => "-4",
|
|
IPV6Only => "-6",
|
|
ChrootEveryone => "-A",
|
|
BrokenClientsCompatibility => "-b",
|
|
Daemonize => "-B",
|
|
VerboseLog => "-d",
|
|
DisplayDotFiles => "-D",
|
|
AnonymousOnly => "-e",
|
|
NoAnonymous => "-E",
|
|
DontResolve => "-H",
|
|
AnonymousCanCreateDirs => "-M",
|
|
NATmode => "-N",
|
|
CallUploadScript => "-o",
|
|
AntiWarez => "-s",
|
|
AllowUserFXP => "-w",
|
|
AllowAnonymousFXP => "-W",
|
|
ProhibitDotFilesWrite => "-x",
|
|
ProhibitDotFilesRead => "-X",
|
|
AllowDotFiles => "-z",
|
|
AutoRename => "-r",
|
|
AnonymousCantUpload => "-i",
|
|
LogPID => "-1",
|
|
NoChmod => "-R",
|
|
KeepAllFiles => "-K",
|
|
CreateHomeDir => "-j",
|
|
NoRename => "-G",
|
|
CustomerProof => "-Z",
|
|
NoTruncate => "-0",
|
|
);
|
|
|
|
my %string_switch_for = (
|
|
SyslogFacility => "-f",
|
|
FortunesFile => "-F",
|
|
ForcePassiveIP => "-P",
|
|
Bind => "-S",
|
|
AnonymousBandwidth => "-t",
|
|
UserBandwidth => "-T",
|
|
TrustedIP => "-V",
|
|
AltLog => "-O",
|
|
PIDFile => "-g",
|
|
);
|
|
|
|
my %numeric_switch_for = (
|
|
MaxIdleTime => "-I",
|
|
MaxDiskUsage => "-k",
|
|
TrustedGID => "-a",
|
|
MaxClientsNumber => "-c",
|
|
MaxClientsPerIP => "-C",
|
|
MaxLoad => "-m",
|
|
MinUID => "-u",
|
|
TLS => "-Y",
|
|
);
|
|
|
|
my %numpairb_switch_for = (
|
|
LimitRecursion => "-L",
|
|
PassivePortRange => "-p",
|
|
AnonymousRatio => "-q",
|
|
UserRatio => "-Q",
|
|
);
|
|
|
|
my %numpairc_switch_for = (
|
|
Umask => "-U",
|
|
Quota => "-n",
|
|
PerUserLimits => "-y",
|
|
);
|
|
|
|
my %auth_method_for = (
|
|
LDAPConfigFile => "ldap",
|
|
MySQLConfigFile => "mysql",
|
|
PGSQLConfigFile => "pgsql",
|
|
PureDB => "puredb",
|
|
ExtAuth => "extauth",
|
|
);
|
|
|
|
my $simple_switch = qr/(@{[join "|", keys %simple_switch_for ]})\s+yes/i;
|
|
my $string_switch = qr/(@{[join "|", keys %string_switch_for ]})\s+(\S+)/i;
|
|
my $numeric_switch = qr/(@{[join "|", keys %numeric_switch_for ]})\s+(\d+)/i;
|
|
my $numpairb_switch = qr/(@{[join "|", keys %numpairb_switch_for ]})\s+(\d+)\s+(\d+)/i;
|
|
my $numpairc_switch = qr/(@{[join "|", keys %numpairc_switch_for ]})\s+(\d+):(\d+)/i;
|
|
my $auth_method = qr/(@{[join "|", keys %auth_method_for ]})\s+(\S+)/i;
|
|
|
|
die "Usage: pure-config.pl <configuration file> [extra options]\n"
|
|
unless defined $conffile;
|
|
|
|
open CONF, "< $conffile" or die "Can't open $conffile: $!\n";
|
|
|
|
!/^\s*(?:$|#)/ and (chomp, push @flg,
|
|
/$simple_switch/i ? ($simple_switch_for{$1}) :
|
|
/$string_switch/i ? ($string_switch_for{$1} . $2) :
|
|
/$numeric_switch/i ? ($numeric_switch_for{$1} . $2) :
|
|
/$numpairb_switch/i ? ($numpairb_switch_for{$1} . "$2:$3") :
|
|
/$numpairc_switch/i ? ($numpairc_switch_for{$1} . "$2:$3") :
|
|
/$auth_method/i ? ("-l" . "$auth_method_for{$1}:$2") :
|
|
/UnixAuthentication\s+yes/i ? ("-l" . "unix") :
|
|
/PAMAuthentication\s+yes/i ? ("-l" . "pam") :
|
|
()
|
|
) while <CONF>;
|
|
|
|
close CONF;
|
|
|
|
print "Running: $PUREFTPD ", join(" ", @flg), "\n";
|
|
exec { $PUREFTPD } ($PUREFTPD, @flg) or die "cannot exec $PUREFTPD: $!";
|