mirror of
https://github.com/waytotheweb/scripts.git
synced 2026-03-29 19:47:06 +00:00
GPL v3 Release
This commit is contained in:
185
csf/os.pl
Normal file
185
csf/os.pl
Normal file
@@ -0,0 +1,185 @@
|
||||
#!/usr/bin/perl
|
||||
###############################################################################
|
||||
# Copyright (C) 2006-2025 Jonathan Michaelson
|
||||
#
|
||||
# https://github.com/waytotheweb/scripts
|
||||
#
|
||||
# This program is free software; you can redistribute it and/or modify it under
|
||||
# the terms of the GNU General Public License as published by the Free Software
|
||||
# Foundation; either version 3 of the License, or (at your option) any later
|
||||
# version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful, but WITHOUT
|
||||
# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
|
||||
# FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
|
||||
# details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License along with
|
||||
# this program; if not, see <https://www.gnu.org/licenses>.
|
||||
###############################################################################
|
||||
## no critic (RequireUseWarnings, ProhibitExplicitReturnUndef, ProhibitMixedBooleanOperators, RequireBriefOpen)
|
||||
use strict;
|
||||
use lib '/usr/local/csf/lib';
|
||||
use Fcntl qw(:DEFAULT :flock);
|
||||
|
||||
umask(0177);
|
||||
|
||||
|
||||
if (-l "/var/run" and readlink("/var/run") eq "../run" and -d "/run") {
|
||||
sysopen (my $LFD, "lfd.service", O_RDWR);
|
||||
my @data = <$LFD>;
|
||||
seek ($LFD, 0, 0);
|
||||
truncate ($LFD, 0);
|
||||
foreach my $line (@data) {
|
||||
if ($line =~ /^PIDFile=/) {
|
||||
print $LFD "PIDFile=/run/lfd.pid\n";
|
||||
} else {
|
||||
print $LFD $line;
|
||||
}
|
||||
}
|
||||
close ($LFD);
|
||||
}
|
||||
|
||||
my $return = 0;
|
||||
my @modules = ("Fcntl","File::Find","File::Path","IPC::Open3","Net::SMTP","POSIX","Socket","Math::BigInt");
|
||||
foreach my $module (@modules) {
|
||||
# print STDERR "Checking for $module\n";
|
||||
local $SIG{__DIE__} = undef;
|
||||
eval ("use $module"); ##no critic
|
||||
if ($@) {
|
||||
print STDERR "\n".$@;
|
||||
$return = 1;
|
||||
}
|
||||
}
|
||||
|
||||
if (-e "/usr/sbin/iptables-nft") {
|
||||
print STDERR "Configuration modified to use iptables-nft\n";
|
||||
system("update-alternatives", "--set", "iptables", "/usr/sbin/iptables-nft");
|
||||
if (-e "/usr/sbin/ip6tables-nft") {
|
||||
print STDERR "Configuration modified to use ip6tables-nft\n";
|
||||
system("update-alternatives", "--set", "ip6tables", "/usr/sbin/ip6tables-nft");
|
||||
}
|
||||
}
|
||||
|
||||
if (-e "/etc/redhat-release") {
|
||||
print STDERR "Using configuration defaults\n";
|
||||
}
|
||||
elsif (-e "/etc/SuSE-release") {
|
||||
open (my $IN, "<", "csf.generic.conf") or die $!;
|
||||
flock ($IN, LOCK_SH) or die $!;
|
||||
my @config = <$IN>;
|
||||
close ($IN);
|
||||
chomp @config;
|
||||
open (my $OUT, ">", "csf.generic.conf") or die $!;
|
||||
flock ($OUT, LOCK_EX) or die $!;
|
||||
foreach my $line (@config) {
|
||||
if ($line =~ /^IPTABLES /) {$line = 'IPTABLES = "/usr/sbin/iptables"'}
|
||||
if ($line =~ /^FUSER/) {$line = 'FUSER = "/bin/fuser"'}
|
||||
if ($line =~ /^HTACCESS_LOG/) {$line = 'HTACCESS_LOG = "/var/log/apache2/error_log"'}
|
||||
if ($line =~ /^MODSEC_LOG/) {$line = 'MODSEC_LOG = "/var/log/apache2/error_log"'}
|
||||
if ($line =~ /^SSHD_LOG/) {$line = 'SSHD_LOG = "/var/log/messages"'}
|
||||
if ($line =~ /^SU_LOG/) {$line = 'SU_LOG = "/var/log/messages"'}
|
||||
if ($line =~ /^FTPD_LOG/) {$line = 'FTPD_LOG = "/var/log/messages"'}
|
||||
if ($line =~ /^POP3D_LOG/) {$line = 'POP3D_LOG = "/var/log/mail"'}
|
||||
if ($line =~ /^IMAPD_LOG/) {$line = 'IMAPD_LOG = "/var/log/mail"'}
|
||||
print $OUT $line."\n";
|
||||
}
|
||||
close ($OUT);
|
||||
print STDERR "Configuration modified for SuSE settings /etc/csf/csf.conf\n";
|
||||
}
|
||||
elsif ((-e "/etc/debian_version") or (-e "/etc/lsb-release") or (-e "/etc/gentoo-release")) {
|
||||
open (my $IN, "<", "csf.generic.conf") or die $!;
|
||||
flock ($IN, LOCK_SH) or die $!;
|
||||
my @config = <$IN>;
|
||||
close ($IN);
|
||||
chomp @config;
|
||||
open (my $GENERIC, ">", "csf.generic.conf") or die $!;
|
||||
flock ($GENERIC, LOCK_EX) or die $!;
|
||||
foreach my $line (@config) {
|
||||
if ($line =~ /^FUSER/) {$line = 'FUSER = "/bin/fuser"'}
|
||||
if ($line =~ /^HTACCESS_LOG/) {$line = 'HTACCESS_LOG = "/var/log/apache2/error.log"'}
|
||||
if ($line =~ /^MODSEC_LOG/) {$line = 'MODSEC_LOG = "/var/log/apache2/error.log"'}
|
||||
if ($line =~ /^SSHD_LOG/) {$line = 'SSHD_LOG = "/var/log/auth.log"'}
|
||||
if ($line =~ /^WEBMIN_LOG/) {$line = 'WEBMIN_LOG = "/var/log/auth.log"'}
|
||||
if ($line =~ /^SU_LOG/) {$line = 'SU_LOG = "/var/log/messages"'}
|
||||
if ($line =~ /^FTPD_LOG/) {$line = 'FTPD_LOG = "/var/log/messages"'}
|
||||
if ($line =~ /^POP3D_LOG/) {$line = 'POP3D_LOG = "/var/log/mail.log"'}
|
||||
if ($line =~ /^IMAPD_LOG/) {$line = 'IMAPD_LOG = "/var/log/mail.log"'}
|
||||
if ($line =~ /^SYSTEMCTL /) {$line = 'SYSTEMCTL = "/bin/systemctl"'}
|
||||
if ($line =~ /^IPSET /) {$line = 'IPSET = "/sbin/ipset"'}
|
||||
if ($line =~ /^IP /) {$line = 'IP = "/bin/ip"'}
|
||||
if ($line =~ /^ZGREP /) {$line = 'ZGREP = "/bin/zgrep"'}
|
||||
print $GENERIC $line."\n";
|
||||
}
|
||||
close ($GENERIC);
|
||||
|
||||
open (my $DIRECTADMIN, "<", "csf.directadmin.conf") or die $!;
|
||||
flock ($DIRECTADMIN, LOCK_SH) or die $!;
|
||||
@config = <$DIRECTADMIN>;
|
||||
close ($DIRECTADMIN);
|
||||
chomp @config;
|
||||
open (my $OUT, ">", "csf.directadmin.conf") or die $!;
|
||||
flock ($OUT, LOCK_EX) or die $!;
|
||||
foreach my $line (@config) {
|
||||
if ($line =~ /^FUSER/) {$line = 'FUSER = "/bin/fuser"'}
|
||||
if ($line =~ /^SYSTEMCTL /) {$line = 'SYSTEMCTL = "/bin/systemctl"'}
|
||||
if ($line =~ /^IPSET /) {$line = 'IPSET = "/sbin/ipset"'}
|
||||
if ($line =~ /^IP /) {$line = 'IP = "/bin/ip"'}
|
||||
if ($line =~ /^ZGREP /) {$line = 'ZGREP = "/bin/zgrep"'}
|
||||
print $OUT $line."\n";
|
||||
}
|
||||
close ($OUT);
|
||||
print STDERR "Configuration modified for Debian/Ubuntu/Gentoo settings /etc/csf/csf.conf\n";
|
||||
|
||||
open (my $IN, "<", "csf.cyberpanel.conf") or die $!;
|
||||
flock ($IN, LOCK_SH) or die $!;
|
||||
my @config = <$IN>;
|
||||
close ($IN);
|
||||
chomp @config;
|
||||
open (my $GENERIC, ">", "csf.cyberpanel.conf") or die $!;
|
||||
flock ($GENERIC, LOCK_EX) or die $!;
|
||||
foreach my $line (@config) {
|
||||
if ($line =~ /^FUSER/) {$line = 'FUSER = "/bin/fuser"'}
|
||||
if ($line =~ /^IPTABLES_LOG/) {$line = 'IPTABLES_LOG = "/var/log/kern.log"'}
|
||||
if ($line =~ /^HTACCESS_LOG/) {$line = 'HTACCESS_LOG = "/var/log/apache2/error.log"'}
|
||||
if ($line =~ /^MODSEC_LOG/) {$line = 'MODSEC_LOG = "/var/log/apache2/error.log"'}
|
||||
if ($line =~ /^SSHD_LOG/) {$line = 'SSHD_LOG = "/var/log/auth.log"'}
|
||||
if ($line =~ /^WEBMIN_LOG/) {$line = 'WEBMIN_LOG = "/var/log/auth.log"'}
|
||||
if ($line =~ /^SU_LOG/) {$line = 'SU_LOG = "/var/log/messages"'}
|
||||
if ($line =~ /^FTPD_LOG/) {$line = 'FTPD_LOG = "/var/log/messages"'}
|
||||
if ($line =~ /^POP3D_LOG/) {$line = 'POP3D_LOG = "/var/log/mail.log"'}
|
||||
if ($line =~ /^IMAPD_LOG/) {$line = 'IMAPD_LOG = "/var/log/mail.log"'}
|
||||
if ($line =~ /^SYSTEMCTL /) {$line = 'SYSTEMCTL = "/bin/systemctl"'}
|
||||
if ($line =~ /^IPSET /) {$line = 'IPSET = "/sbin/ipset"'}
|
||||
if ($line =~ /^IP /) {$line = 'IP = "/bin/ip"'}
|
||||
if ($line =~ /^ZGREP /) {$line = 'ZGREP = "/bin/zgrep"'}
|
||||
print $GENERIC $line."\n";
|
||||
}
|
||||
close ($GENERIC);
|
||||
}
|
||||
elsif (-e "/etc/slackware-version") {
|
||||
open (my $IN, "<", "csf.generic.conf") or die $!;
|
||||
flock ($IN, LOCK_SH) or die $!;
|
||||
my @config = <$IN>;
|
||||
close ($IN);
|
||||
chomp @config;
|
||||
open (my $OUT, ">", "csf.generic.conf") or die $!;
|
||||
flock ($OUT, LOCK_EX) or die $!;
|
||||
foreach my $line (@config) {
|
||||
if ($line =~ /^IPTABLES /) {$line = 'IPTABLES = "/usr/sbin/iptables"'}
|
||||
if ($line =~ /^FUSER/) {$line = 'FUSER = "/usr/bin/fuser"'}
|
||||
if ($line =~ /^HTACCESS_LOG/) {$line = 'HTACCESS_LOG = "/var/log/httpd/error.log"'}
|
||||
if ($line =~ /^MODSEC_LOG/) {$line = 'MODSEC_LOG = "/var/log/httpd/error.log"'}
|
||||
if ($line =~ /^SSHD_LOG/) {$line = 'SSHD_LOG = "/var/log/messages"'}
|
||||
if ($line =~ /^SU_LOG/) {$line = 'SU_LOG = "/var/log/messages"'}
|
||||
if ($line =~ /^FTPD_LOG/) {$line = 'FTPD_LOG = "/var/log/messages"'}
|
||||
if ($line =~ /^POP3D_LOG/) {$line = 'POP3D_LOG = "/var/log/maillog"'}
|
||||
if ($line =~ /^IMAPD_LOG/) {$line = 'IMAPD_LOG = "/var/log/maillog"'}
|
||||
print $OUT $line."\n";
|
||||
}
|
||||
close ($OUT);
|
||||
print STDERR "Configuration modified for Slackware settings /etc/csf/csf.conf\n";
|
||||
} else {print STDERR "Using configuration defaults\n"}
|
||||
|
||||
print $return;
|
||||
exit;
|
||||
Reference in New Issue
Block a user