############################################################################### # Copyright 2006-2023, Way to the Web Limited # URL: http://www.configserver.com # Email: sales@waytotheweb.com ############################################################################### ## no critic (RequireUseWarnings, ProhibitExplicitReturnUndef, ProhibitMixedBooleanOperators, RequireBriefOpen) package ConfigServer::DisplayUI; use strict; use lib '/usr/local/csf/lib'; use Fcntl qw(:DEFAULT :flock); use File::Basename; use File::Copy; use Net::CIDR::Lite; use IPC::Open3; use ConfigServer::Config; use ConfigServer::CheckIP qw(checkip); use ConfigServer::Ports; use ConfigServer::URLGet; use ConfigServer::Sanity qw(sanity);; use ConfigServer::ServerCheck; use ConfigServer::ServerStats; use ConfigServer::Service; use ConfigServer::RBLCheck; use ConfigServer::GetEthDev; use ConfigServer::Slurp qw(slurp); use Exporter qw(import); our $VERSION = 1.01; our @ISA = qw(Exporter); our @EXPORT_OK = qw(); umask(0177); our ($chart, $ipscidr6, $ipv6reg, $ipv4reg, %config, %ips, $mobile, $urlget, %FORM, $script, $script_da, $images, $myv); my $slurpreg = ConfigServer::Slurp->slurpreg; my $cleanreg = ConfigServer::Slurp->cleanreg; # ############################################################################### # start main sub main { my $form_ref = shift; %FORM = %{$form_ref}; $script = shift; $script_da = shift; $images = shift; $myv = shift; $config{THIS_UI} = shift; $| = 1; $ipscidr6 = Net::CIDR::Lite->new; my $thisui = $config{THIS_UI}; my $config = ConfigServer::Config->loadconfig(); %config = $config->config; $config{THIS_UI} = $thisui; $ipv4reg = $config->ipv4reg; $ipv6reg = $config->ipv6reg; if ($config{CF_ENABLE}) { require ConfigServer::CloudFlare; import ConfigServer::CloudFlare; } $mobile = 0; if ($FORM{mobi}) {$mobile = 1} $chart = 1; if ($config{ST_ENABLE}) { if (!defined ConfigServer::ServerStats::init()) {$chart = 0} } $urlget = ConfigServer::URLGet->new($config{URLGET}, "csf/$myv", $config{URLPROXY}); unless (defined $urlget) { $config{URLGET} = 1; $urlget = ConfigServer::URLGet->new($config{URLGET}, "csf/$myv", $config{URLPROXY}); print "
*WARNING* URLGET set to use LWP but perl module is not installed, reverting to HTTP::Tiny
\n"; } if ($config{RESTRICT_UI} == 2) { print "
csf UI Disabled via the RESTRICT_UI option in /etc/csf/csf.conf |
Checking version...
\n\n"; my ($upgrade, $actv) = &manualversion($myv); if ($upgrade) { print "\n"; } else { if ($actv ne "") { print "Show lfd status...
\n\n"; ConfigServer::Service::statuslfd(); print "\n
...Done.
Starting lfd...
\n\n"; ConfigServer::Service::startlfd(); print "\n
...Done.
Signal lfd to restart...
\n\n"; sysopen (my $OUT, "/var/lib/csf/lfd.restart",, O_WRONLY | O_CREAT) or die "Unable to open file: $!"; close ($OUT); } else { print "\n"; &printreturn; } elsif ($FORM{action} eq "lfdstop") { print "Restarting lfd...
\n\n"; ConfigServer::Service::restartlfd(); } print "\n...Done.
\n"; &printreturn; } elsif ($FORM{action} eq "status") { &resize("top"); print "Stopping lfd...
\n\n"; ConfigServer::Service::stoplfd(); print "\n...Done.
\n"; &printcmd("/usr/sbin/csf","-l"); if ($config{IPV6}) { print "\n\nip6tables:\n\n"; &printcmd("/usr/sbin/csf","-l6"); } print "\n"; &resize("bot",1); &printreturn; } elsif ($FORM{action} eq "start") { print "\n"; &resize("bot",1); &printreturn; } elsif ($FORM{action} eq "restart") { print "Starting csf...
\n"; &resize("top"); print "\n"; &printcmd("/usr/sbin/csf","-sf"); print "\n...Done.
\n"; &resize("bot",1); &printreturn; } elsif ($FORM{action} eq "restartq") { print "Restarting csf...
\n"; &resize("top"); print "\n"; &printcmd("/usr/sbin/csf","-sf"); print "\n...Done.
\n"; &printreturn; } elsif ($FORM{action} eq "temp") { print "Restarting csf via lfd...
\n\n"; &printcmd("/usr/sbin/csf","-q"); print "\n...Done.
Removing all temporary entries:
\n\n"; if ($FORM{ip} eq "all") { &printcmd("/usr/sbin/csf","-tf"); } print "\n
...Done.
Removing temporary deny entry for $FORM{ip}:
\n\n"; &printcmd("/usr/sbin/csf","-trd",$FORM{ip}); print "\n
...Done.
Removing temporary allow entry for $FORM{ip}:
\n\n"; &printcmd("/usr/sbin/csf","-tra",$FORM{ip}); print "\n
...Done.
Permanent ban for $FORM{ip}:
\n\n"; &printcmd("/usr/sbin/csf","-tr",$FORM{ip}); &printcmd("/usr/sbin/csf","-d",$FORM{ip}); print "\n
...Done.
Temporarily $FORM{do}ing $FORM{ip} for $FORM{timeout} seconds:
\n\n"; if ($FORM{do} eq "block") { &printcmd("/usr/sbin/csf","-td",$FORM{ip},$FORM{timeout},"-p",$FORM{ports},$FORM{comment}); } else { &printcmd("/usr/sbin/csf","-ta",$FORM{ip},$FORM{timeout},"-p",$FORM{ports},$FORM{comment}); } print "\n
...Done.
Stopping csf...
\n"; &resize("top"); print "\n"; &printcmd("/usr/sbin/csf","-f"); print "\n
...Done.
Disabling csf...
\n"; &resize("top"); print "\n"; &printcmd("/usr/sbin/csf","-x"); print "\n
...Done.
You must login to the root shell to enable csf using:\n
csf -e
\n"; } else { print "Enabling csf...
\n"; &resize("top"); print "\n"; &printcmd("/usr/sbin/csf","-e"); print ""; &resize("bot",1); } print "
...Done.
EOF if ($config{DIRECTADMIN}) {$script = $script_safe} &printreturn; } elsif ($FORM{action} eq "logtailcmd") { $FORM{lines} =~ s/\D//g; if ($FORM{lines} eq "" or $FORM{lines} == 0) {$FORM{lines} = 30} my @data = slurp("/etc/csf/csf.syslogs"); foreach my $line (@data) { if ($line =~ /^Include\s*(.*)$/) { my @incfile = slurp($1); push @data,@incfile; } } @data = sort @data; my $cnt = 0; my $logfile = "/var/log/lfd.log"; my $hit = 0; foreach my $file (@data) { $file =~ s/$cleanreg//g; if ($file eq "") {next} if ($file =~ /^\s*\#|Include/) {next} my @globfiles; if ($file =~ /\*|\?|\[/) { foreach my $log (glob $file) {push @globfiles, $log} } else {push @globfiles, $file} foreach my $globfile (@globfiles) { if (-f $globfile) { if ($FORM{lognum} == $cnt) { $logfile = $globfile; $hit = 1; last; } $cnt++; } } if ($hit) {last} } if (-z $logfile) { print "<---- $logfile is currently empty ---->"; } else { if (-x $config{TAIL}) { my $timeout = 30; eval { local $SIG{__DIE__} = undef; local $SIG{'ALRM'} = sub {die}; alarm($timeout); my ($childin, $childout); my $pid = open3($childin, $childout, $childout,$config{TAIL},"-$FORM{lines}",$logfile); while (<$childout>) { my $line = $_; $line =~ s/&/&/g; $line =~ s/</g; $line =~ s/>/>/g; print $line; } waitpid ($pid, 0); alarm(0); }; alarm(0); if ($@) {print "TIMEOUT: tail command took too long. Timed out after $timeout seconds\n"} } else { print "Executable [$config{TAIL}] invalid"; } } } elsif ($FORM{action} eq "loggrep") { $FORM{lines} =~ s/\D//g; if ($FORM{lines} eq "" or $FORM{lines} == 0) {$FORM{lines} = 30} my $script_safe = $script; my $CSFfrombot = 120; my $CSFfromright = 10; if ($config{DIRECTADMIN}) { $script = $script_da; $CSFfrombot = 400; $CSFfromright = 150; } my @data = slurp("/etc/csf/csf.syslogs"); foreach my $line (@data) { if ($line =~ /^Include\s*(.*)$/) { my @incfile = slurp($1); push @data,@incfile; } } @data = sort @data; my $options = "
Please Note: 1. Searches use $config{GREP}/$config{ZGREP} if wildcard is used), so the search text/regex must be syntactically correct 2. Use the "-i" option to ignore case 3. Use the "-E" option to perform an extended regular expression search 4. Searching large log files can take a long time. This feature has a 30 second timeout 5. The searched for text will usually be highlighted but may not always be successful 6. Only log files listed in /etc/csf/csf.syslogs can be searched. You can add to this file 7. The wildcard option will use $config{ZGREP} and search logs with a wildcard suffix, e.g. /var/log/lfd.log*EOF if ($config{DIRECTADMIN}) {$script = $script_safe} &printreturn; } elsif ($FORM{action} eq "loggrepcmd") { my @data = slurp("/etc/csf/csf.syslogs"); foreach my $line (@data) { if ($line =~ /^Include\s*(.*)$/) { my @incfile = slurp($1); push @data,@incfile; } } @data = sort @data; my $cnt = 0; my $logfile = "/var/log/lfd.log"; my $hit = 0; foreach my $file (@data) { $file =~ s/$cleanreg//g; if ($file eq "") {next} if ($file =~ /^\s*\#|Include/) {next} my @globfiles; if ($file =~ /\*|\?|\[/) { foreach my $log (glob $file) {push @globfiles, $log} } else {push @globfiles, $file} foreach my $globfile (@globfiles) { if (-f $globfile) { if ($FORM{lognum} == $cnt) { $logfile = $globfile; $hit = 1; last; } $cnt++; } } if ($hit) {last} } my @cmd; my $grepbin = $config{GREP}; if ($FORM{grepZ}) {$grepbin = $config{ZGREP}} if ($FORM{grepi}) {push @cmd, "-i"} if ($FORM{grepE}) {push @cmd, "-E"} push @cmd, $FORM{grep}; if (-z $logfile) { print "<---- $logfile is currently empty ---->"; } else { if (-x $grepbin) { my $timeout = 30; eval { local $SIG{__DIE__} = undef; local $SIG{'ALRM'} = sub {die}; my $total; if ($FORM{grepZ}) { foreach my $file (glob $logfile."\*") { print "\nSearching $file:\n"; alarm($timeout); my ($childin, $childout); my $pid = open3($childin, $childout, $childout,$grepbin,@cmd,$file); while (<$childout>) { my $line = $_; $line =~ s/&/&/g; $line =~ s/</g; $line =~ s/>/>/g; if ($FORM{grep} ne "") { eval { local $SIG{__DIE__} = undef; if ($FORM{grepi}) { $line =~ s/$FORM{grep}/$&<\/mark>/ig; } else { $line =~ s/$FORM{grep}/$&<\/mark>/g; } }; } print $line; $total += length $line; } waitpid ($pid, 0); unless ($total) {print "<---- No matches found for \"$FORM{grep}\" in $file ---->\n"} alarm(0); } } else { alarm($timeout); my ($childin, $childout); my $pid = open3($childin, $childout, $childout,$grepbin,@cmd,$logfile); while (<$childout>) { my $line = $_; $line =~ s/&/&/g; $line =~ s/</g; $line =~ s/>/>/g; if ($FORM{grep} ne "") { eval { local $SIG{__DIE__} = undef; if ($FORM{grepi}) { $line =~ s/$FORM{grep}/$&<\/mark>/ig; } else { $line =~ s/$FORM{grep}/$&<\/mark>/g; } }; } print $line; $total += length $line; } waitpid ($pid, 0); unless ($total) {print "<---- No matches found for \"$FORM{grep}\" in $logfile ---->\n"} alarm(0); } }; alarm(0); if ($@) {print "TIMEOUT: grep command took too long. Timed out after $timeout seconds\n"} } else { print "Executable [$grepbin] invalid"; } } } elsif ($FORM{action} eq "readme") { &resize("top"); print "
\n"; open (my $IN, "<", "/etc/csf/readme.txt") or die $!; flock ($IN, LOCK_SH); my @readme = <$IN>; close ($IN); chomp @readme; foreach my $line (@readme) { $line =~ s/\\<\;/g; $line =~ s/\>/\>\;/g; print $line."\n"; } print "\n"; &resize("bot",0); &printreturn; } elsif ($FORM{action} eq "servercheck") { print ConfigServer::ServerCheck::report($FORM{verbose}); open (my $IN, "<", "/etc/cron.d/csf-cron"); flock ($IN, LOCK_SH); my @data = <$IN>; close ($IN); chomp @data; my $optionselected = "never"; my $email; if (my @ls = grep {$_ =~ /csf \-m/} @data) { if ($ls[0] =~ /\@(\w+)\s+root\s+\/usr\/sbin\/csf \-m (.*)/) {$optionselected = $1; $email = $2} } print "
Restarting csf...
\n"; &resize("top"); print "\n"; &printcmd("/usr/sbin/csf","-sf"); print "\n
...Done.
Signal lfd to restart...
\n\n"; sysopen (my $OUT, "/var/lib/csf/lfd.restart",, O_WRONLY | O_CREAT) or die "Unable to open file: $!"; close ($OUT); } else { print "\n"; &resize("bot",1); &printreturn; } elsif ($FORM{action} eq "remapf") { print "Restarting lfd...
\n\n"; ConfigServer::Service::restartlfd(); } print "\n...Done.
\n"; print "Removing APF/BFD...
\n\n"; &printcmd("sh","/usr/local/csf/bin/remove_apf_bfd.sh"); print "\n...Done.
\n"; &printreturn; } elsif ($FORM{action} eq "qallow") { print "Note: You should check the root cron and /etc/crontab to ensure that there are no apf or bfd related cron jobs remaining
\n"; &printreturn; } elsif ($FORM{action} eq "qdeny") { print "Allowing $FORM{ip}...
\n\n"; &printcmd("/usr/sbin/csf","-a",$FORM{ip},$FORM{comment}); print "\n...Done.
\n"; &printreturn; } elsif ($FORM{action} eq "qignore") { print "Blocking $FORM{ip}...
\n\n"; &printcmd("/usr/sbin/csf","-d",$FORM{ip},$FORM{comment}); print "\n...Done.
\n"; if ($config{THIS_UI}) { print "Ignoring $FORM{ip}...\n"; open (my $OUT, ">>", "/etc/csf/csf.ignore"); flock ($OUT, LOCK_EX); print $OUT "$FORM{ip}\n"; close ($OUT); print "Done.
\n"} $comment = 0; my ($start,$end) = split (/=/,$line,2); my $name = $start; my $cleanname = $start; $cleanname =~ s/\s//g; $name =~ s/\s/\_/g; if ($end =~ /\"(.*)\"/) {$end = $1} my $size = length($end) + 4; my $class = "value-default"; my ($status,$range,$default) = sanity($start,$end); my $showrange = ""; my $showfrom; my $showto; if ($range =~ /^(\d+)-(\d+)$/) { $showfrom = $1; $showto = $2; } if ($default ne "") { $showrange = " Default: $default [$range]"; if ($end ne $default) {$class = "value-other"} } if ($status) {$class = "value-warning"; $showrange = " Recommended range: $range (Default: $default)"} if ($config{RESTRICT_UI} and ($cleanname eq "CLUSTER_KEY" or $cleanname eq "UI_PASS" or $cleanname eq "UI_USER")) { print "Signal lfd to restart...
\n\n"; sysopen (my $OUT, "/var/lib/csf/lfd.restart",, O_WRONLY | O_CREAT) or die "Unable to open file: $!"; close ($OUT); } else { print "\n"; &printreturn; } elsif ($FORM{action} eq "kill") { print "Restarting lfd...
\n\n"; ConfigServer::Service::restartlfd(); } print "\n...Done.
\n"; print "Unblock $FORM{ip}, trying permanent blocks...
\n\n"; &printcmd("/usr/sbin/csf","-dr",$FORM{ip}); print "\n...Done.
\n"; &printreturn; } elsif ($FORM{action} eq "killallow") { print "Unblock $FORM{ip}, trying temporary blocks...
\n\n"; &printcmd("/usr/sbin/csf","-trd",$FORM{ip}); print "\n...Done.
\n"; print "Unblock $FORM{ip}, trying permanent blocks...
\n\n"; &printcmd("/usr/sbin/csf","-ar",$FORM{ip}); print "\n...Done.
\n"; &printreturn; } elsif ($FORM{action} eq "grep") { print "Unblock $FORM{ip}, trying temporary blocks...
\n\n"; &printcmd("/usr/sbin/csf","-tra",$FORM{ip}); print "\n...Done.
\n"; &resize("bot",1); if ($unblock) {print "\n"} if ($unallow) {print "\n"} &printreturn; } elsif ($FORM{action} eq "callow") { print "Searching for $FORM{ip}...
\n"; &resize("top"); print "\n"; my ($childin, $childout); my $pid = open3($childin, $childout, $childout, "/usr/sbin/csf","-g",$FORM{ip}); my $unblock; my $unallow; while (<$childout>) { my $line = $_; if ($line =~ /^csf.deny:\s(\S+)\s*/) {$unblock = 1} if ($line =~ /^Temporary Blocks: IP:(\S+)\s*/) {$unblock = 1} if ($line =~ /^csf.allow:\s(\S+)\s*/) {$unallow = 1} if ($line =~ /^Temporary Allows: IP:(\S+)\s*/) {$unallow = 1} print $_; } waitpid ($pid, 0); print "\n...Done.
\n"; &printreturn; } elsif ($FORM{action} eq "cignore") { print "Cluster Allow $FORM{ip}...
\n\n"; &printcmd("/usr/sbin/csf","-ca",$FORM{ip},$FORM{comment}); print "\n...Done.
\n"; &printreturn; } elsif ($FORM{action} eq "cirm") { print "Cluster Ignore $FORM{ip}...
\n\n"; &printcmd("/usr/sbin/csf","-ci",$FORM{ip},$FORM{comment}); print "\n...Done.
\n"; &printreturn; } elsif ($FORM{action} eq "cloudflare") { &cloudflare; } elsif ($FORM{action} eq "cflist") { print "Cluster Remove ignore $FORM{ip}...
\n\n"; &printcmd("/usr/sbin/csf","-cir",$FORM{ip}); print "\n...Done.
\n"; } elsif ($FORM{action} eq "cftempdeny") { print "CloudFlare list $FORM{type} rules for user(s) $FORM{domains}:\n"; print ""; &printcmd("/usr/sbin/csf","--cloudflare","list",$FORM{type},$FORM{domains}); print "\n\n"; } elsif ($FORM{action} eq "cfadd") { print "CloudFlare $FORM{do} $FORM{target} for user(s) $FORM{domains}:\n"; print "\n"; &printcmd("/usr/sbin/csf","--cloudflare","tempadd",$FORM{do},$FORM{target},$FORM{domains}); print "\n\n"; } elsif ($FORM{action} eq "cfremove") { print "CloudFlare Add $FORM{type} $FORM{target} for user(s) $FORM{domains}:\n"; print ""; &printcmd("/usr/sbin/csf","--cloudflare","add",$FORM{type},$FORM{target},$FORM{domains}); print "\n\n"; } elsif ($FORM{action} eq "cdeny") { print "CloudFlare Delete $FORM{type} $FORM{target} for user(s) $FORM{domains}:\n"; print ""; &printcmd("/usr/sbin/csf","--cloudflare","del", $FORM{target},$FORM{domains}); print "\n\n"; &printreturn; } elsif ($FORM{action} eq "ctempdeny") { $FORM{timeout} =~ s/\D//g; if ($FORM{dur} eq "minutes") {$FORM{timeout} = $FORM{timeout} * 60} if ($FORM{dur} eq "hours") {$FORM{timeout} = $FORM{timeout} * 60 * 60} if ($FORM{dur} eq "days") {$FORM{timeout} = $FORM{timeout} * 60 * 60 * 24} if ($FORM{ports} eq "") {$FORM{ports} = "*"} print "Cluster Deny $FORM{ip}...
\n\n"; &printcmd("/usr/sbin/csf","-cd",$FORM{ip},$FORM{comment}); print "\n...Done.
\n"; &printreturn; } elsif ($FORM{action} eq "crm") { print "cluster Temporarily $FORM{do}ing $FORM{ip} for $FORM{timeout} seconds:
\n\n"; if ($FORM{do} eq "block") { &printcmd("/usr/sbin/csf","-ctd",$FORM{ip},$FORM{timeout},"-p",$FORM{ports},$FORM{comment}); } else { &printcmd("/usr/sbin/csf","-cta",$FORM{ip},$FORM{timeout},"-p",$FORM{ports},$FORM{comment}); } print "\n...Done.
\n"; &printreturn; } elsif ($FORM{action} eq "carm") { print "Cluster Remove Deny $FORM{ip}...
\n\n"; &printcmd("/usr/sbin/csf","-cr",$FORM{ip}); print "\n...Done.
\n"; &printreturn; } elsif ($FORM{action} eq "cping") { print "Cluster Remove Allow $FORM{ip}...
\n\n"; &printcmd("/usr/sbin/csf","-car",$FORM{ip}); print "\n...Done.
\n"; &printreturn; } elsif ($FORM{action} eq "cgrep") { print "Cluster PING...
\n\n"; &printcmd("/usr/sbin/csf","-cp"); print "\n...Done.
\n"; &printreturn; } elsif ($FORM{action} eq "cconfig") { $FORM{option} =~ s/\s*//g; my %restricted; if ($config{RESTRICT_UI}) { sysopen (my $IN, "/usr/local/csf/lib/restricted.txt", O_RDWR | O_CREAT) or die "Unable to open file: $!"; flock ($IN, LOCK_SH); while (my $entry = <$IN>) { chomp $entry; $restricted{$entry} = 1; } close ($IN); } if ($restricted{$FORM{option}}) { print "Cluster GREP for $FORM{ip}...
\n"; print "\n"; my ($childin, $childout); my $pid = open3($childin, $childout, $childout, "/usr/sbin/csf","-cg",$FORM{ip}); my $unblock; my $start = 0; while (<$childout>) { my $line = $_; if ($line =~ /^====/) { if ($start) { print "$line"; $start = 0; } else { print "$line"; $start = 1; } } else { print $line; } } waitpid ($pid, 0); print "...Done\nOption $FORM{option} cannot be set with RESTRICT_UI enabled\n"; exit; } print "\n"; &printreturn; } elsif ($FORM{action} eq "crestart") { print "Cluster configuration option...
\n\n"; &printcmd("/usr/sbin/csf","-cc",$FORM{option},$FORM{value}); print "\n...Done.
\n"; &printreturn; } elsif ($FORM{action} eq "allow") { &editfile("/etc/csf/csf.allow","saveallow"); &printreturn; } elsif ($FORM{action} eq "saveallow") { &savefile("/etc/csf/csf.allow","both"); &printreturn; } elsif ($FORM{action} eq "redirect") { &editfile("/etc/csf/csf.redirect","saveredirect"); &printreturn; } elsif ($FORM{action} eq "saveredirect") { &savefile("/etc/csf/csf.redirect","both"); &printreturn; } elsif ($FORM{action} eq "smtpauth") { &editfile("/etc/csf/csf.smtpauth","savesmtpauth"); &printreturn; } elsif ($FORM{action} eq "savesmtpauth") { &savefile("/etc/csf/csf.smtpauth","both"); &printreturn; } elsif ($FORM{action} eq "reseller") { &editfile("/etc/csf/csf.resellers","savereseller"); &printreturn; } elsif ($FORM{action} eq "savereseller") { &savefile("/etc/csf/csf.resellers",""); &printreturn; } elsif ($FORM{action} eq "dirwatch") { &editfile("/etc/csf/csf.dirwatch","savedirwatch"); &printreturn; } elsif ($FORM{action} eq "savedirwatch") { &savefile("/etc/csf/csf.dirwatch","lfd"); &printreturn; } elsif ($FORM{action} eq "dyndns") { &editfile("/etc/csf/csf.dyndns","savedyndns"); &printreturn; } elsif ($FORM{action} eq "savedyndns") { &savefile("/etc/csf/csf.dyndns","lfd"); &printreturn; } elsif ($FORM{action} eq "blocklists") { &editfile("/etc/csf/csf.blocklists","saveblocklists"); &printreturn; } elsif ($FORM{action} eq "saveblocklists") { &savefile("/etc/csf/csf.blocklists","both"); &printreturn; } elsif ($FORM{action} eq "syslogusers") { &editfile("/etc/csf/csf.syslogusers","savesyslogusers"); &printreturn; } elsif ($FORM{action} eq "savesyslogusers") { &savefile("/etc/csf/csf.syslogusers","lfd"); &printreturn; } elsif ($FORM{action} eq "logfiles") { &editfile("/etc/csf/csf.logfiles","savelogfiles"); &printreturn; } elsif ($FORM{action} eq "savelogfiles") { &savefile("/etc/csf/csf.logfiles","lfd"); &printreturn; } elsif ($FORM{action} eq "deny") { &editfile("/etc/csf/csf.deny","savedeny"); &printreturn; } elsif ($FORM{action} eq "savedeny") { &savefile("/etc/csf/csf.deny","both"); &printreturn; } elsif ($FORM{action} eq "templates") { &editfile("/usr/local/csf/tpl/$FORM{template}","savetemplates","template"); &printreturn; } elsif ($FORM{action} eq "savetemplates") { &savefile("/usr/local/csf/tpl/$FORM{template}","",1); &printreturn; } elsif ($FORM{action} eq "ignorefiles") { &editfile("/etc/csf/$FORM{ignorefile}","saveignorefiles","ignorefile"); &printreturn; } elsif ($FORM{action} eq "saveignorefiles") { &savefile("/etc/csf/$FORM{ignorefile}","lfd"); &printreturn; } elsif ($FORM{action} eq "conf") { sysopen (my $IN, "/etc/csf/csf.conf", O_RDWR | O_CREAT) or die "Unable to open file: $!"; flock ($IN, LOCK_SH); my @confdata = <$IN>; close ($IN); chomp @confdata; my %restricted; if ($config{RESTRICT_UI}) { sysopen (my $IN, "/usr/local/csf/lib/restricted.txt", O_RDWR | O_CREAT) or die "Unable to open file: $!"; flock ($IN, LOCK_SH); while (my $entry = <$IN>) { chomp $entry; $restricted{$entry} = 1; } close ($IN); } print <Cluster restart csf and lfd...
\n\n"; &printcmd("/usr/sbin/csf --crestart"); print "\n...Done.
function CSFexpand(obj){ if (!obj.savesize) {obj.savesize=obj.size;} var newsize = Math.max(obj.savesize,obj.value.length); if (newsize > 120) {newsize = 120;} obj.size = newsize; } EOF print "\n"; open (my $DIV, "<", "/usr/local/csf/lib/csf.div"); flock ($DIV, LOCK_SH); my @divdata = <$DIV>; close ($DIV); print @divdata; print "\n"; print " $start = (hidden restricted UI item)\n"; } elsif ($restricted{$cleanname}) { print "$start = (restricted UI item)\n"; } else { if ($range eq "0-1") { my $switch_checked_0 = ""; my $switch_checked_1 = ""; my $switch_active_0 = ""; my $switch_active_1 = ""; if ($end == 0) {$switch_checked_0 = "checked"; $switch_active_0 = "active"} if ($end == 1) {$switch_checked_1 = "checked"; $switch_active_1 = "active"} print "$start = "; print "\n"; } elsif ($range =~ /^(\d+)-(\d+)$/ and !(-e "/etc/csuibuttondisable") and ($showto - $showfrom <= 20) and $end >= $showfrom and $end <= $showto) { my $selected = ""; print "\n"; print "\n"; print "\n"; print "$start =\n"; } else { print "$start = $showrange\n"; } } } else { if ($line =~ /^\# SECTION:(.*)/) { push @divnames, $1; unless ($first) {print "
\n/g; print "$line
\n"; } } print "