File: //scripts.20110531.215904.25158/fixproftpdconf
#!/usr/bin/perl
# cpanel - fixproftpdconf Copyright(c) 2010 cPanel, Inc.
# All Rights Reserved.
# copyright@cpanel.net http://cpanel.net
# This code is subject to the cPanel license. Unauthorized copying is prohibited
BEGIN { unshift @INC, '/usr/local/cpanel'; }
use strict;
use warnings;
use Cpanel::FtpUtils::Config ();
my $conf_obj = Cpanel::FtpUtils::Config->new();
exit if $conf_obj->get_type() eq 'pure-ftpd';
my $proftpdconf = $conf_obj->find_conf_file();
if ( !-e $proftpdconf ) {
if ( !-e '/scripts/proftpd.conf.default' ) {
die "Unable to fix ProFTPd configuration. No default file found.";
}
system 'cp', '-fv', '/scripts/proftpd.conf.default', $proftpdconf;
system "/scripts/rebuildproftpd >> $proftpdconf";
system '/usr/local/cpanel/bin/proftpdvhosts';
system '/usr/local/cpanel/bin/proftpdtls';
print "$proftpdconf has been automatically rebuilt!\n";
system '/scripts/restartsrv', 'proftpd';
exit 1;
}
my $size = ( stat($proftpdconf) )[7];
my $ivh = 0;
my $confok = 0;
open( PC, '<', $proftpdconf );
while (<PC>) {
if (/^[\s\t]*<virtualhost/io) {
$ivh = 1;
}
if (/^[\s\t]*<\/virtualhost/io) {
$ivh = 0;
}
if ( !$ivh && /^[\s\t]*Port[\s\t]+/io ) {
$confok = 1;
last;
}
}
close(PC);
if ( !$confok || $size < 30 ) {
system 'cp', '-fv', '/scripts/proftpd.conf.default', $proftpdconf;
system "/scripts/rebuildproftpd >> $proftpdconf";
system '/usr/local/cpanel/bin/proftpdvhosts';
system '/usr/local/cpanel/bin/proftpdtls';
print "$proftpdconf has been automatically rebuilt!\n";
system '/scripts/restartsrv', 'proftpd';
exit 1;
}
else {
print "The ProFTPd configuration file $proftpdconf appears to be ok!\n";
exit 0;
}