forked from Black-HOST/csf
-
Notifications
You must be signed in to change notification settings - Fork 2
Expand file tree
/
Copy pathcsget.pl
More file actions
105 lines (96 loc) · 3.86 KB
/
csget.pl
File metadata and controls
105 lines (96 loc) · 3.86 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
#!/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>.
###############################################################################
use strict;
use warnings;
use diagnostics;
use lib '/usr/local/csf/lib';
use ConfigServer::Config;
if (my $pid = fork) {
exit 0;
} elsif (defined($pid)) {
$pid = $$;
} else {
die "Error: Unable to fork: $!";
}
chdir("/");
close (STDIN);
close (STDOUT);
close (STDERR);
open STDIN, "<","/dev/null";
open STDOUT, ">","/dev/null";
open STDERR, ">","/dev/null";
$0 = "ConfigServer Version Check";
my @downloadservers = ConfigServer::Config::getdownloadservers();
system("mkdir -p /var/lib/configserver/");
system("rm -f /var/lib/configserver/*.txt /var/lib/configserver/*error");
my $cmd;
if (-e "/usr/bin/curl") {$cmd = "/usr/bin/curl -skLf -m 120 -o"}
elsif (-e "/usr/bin/wget") {$cmd = "/usr/bin/wget -q -T 120 -O"}
else {
open (my $ERROR, ">", "/var/lib/configserver/error");
print $ERROR "Cannot find /usr/bin/curl or /usr/bin/wget to retrieve product versions\n";
close ($ERROR);
exit;
}
my $GET;
if (-e "/usr/bin/GET") {$GET = "/usr/bin/GET -sd -t 120"}
my %versions;
if (-e "/etc/csf/csf.pl") {$versions{"/csf/version.txt"} = "/var/lib/configserver/csf.txt"}
if (-e "/etc/cxs/cxs.pl") {$versions{"/cxs/version.txt"} = "/var/lib/configserver/cxs.txt"}
if (-e "/usr/local/cpanel/whostmgr/docroot/cgi/configserver/cmm.cgi") {$versions{"/cmm/cmmversion.txt"} = "/var/lib/configserver/cmm.txt"}
if (-e "/usr/local/cpanel/whostmgr/docroot/cgi/configserver/cse.cgi") {$versions{"/cse/cseversion.txt"} = "/var/lib/configserver/cse.txt"}
if (-e "/usr/local/cpanel/whostmgr/docroot/cgi/configserver/cmq.cgi") {$versions{"/cmq/cmqversion.txt"} = "/var/lib/configserver/cmq.txt"}
if (-e "/usr/local/cpanel/whostmgr/docroot/cgi/configserver/cmc.cgi") {$versions{"/cmc/cmcversion.txt"} = "/var/lib/configserver/cmc.txt"}
if (-e "/etc/osm/osmd.pl") {$versions{"/osm/osmversion.txt"} = "/var/lib/configserver/osm.txt"}
if (-e "/usr/msfe/version.txt") {$versions{"/version.txt"} = "/var/lib/configserver/msinstall.txt"}
if (-e "/usr/msfe/msfeversion.txt") {$versions{"/msfeversion.txt"} = "/var/lib/configserver/msfe.txt"}
if (scalar(keys %versions) == 0) {
unlink $0;
exit;
}
unless ($ARGV[0] eq "--nosleep") {
system("sleep",int(rand(60 * 60 * 6)));
}
for (my $x = @downloadservers; --$x;) {
my $y = int(rand($x+1));
if ($x == $y) {next}
@downloadservers[$x,$y] = @downloadservers[$y,$x];
}
foreach my $server (@downloadservers) {
foreach my $version (keys %versions) {
unless (-e $versions{$version}) {
if (-e $versions{$version}.".error") {unlink $versions{$version}.".error"}
my $status = system("$cmd $versions{$version} $server$version");
# print "$cmd $versions{$version} $server$version\n";
if ($status) {
if ($GET ne "") {
open (my $ERROR, ">", $versions{$version}.".error");
print $ERROR "$server$version - ";
close ($ERROR);
my $GETstatus = system("$GET $server$version >> $versions{$version}".".error");
} else {
open (my $ERROR, ">", $versions{$version}.".error");
print $ERROR "Failed to retrieve latest version from ConfigServer";
close ($ERROR);
}
}
}
}
}