-
-
Notifications
You must be signed in to change notification settings - Fork 117
/
Copy pathgenerate-script-sites.pl
executable file
·70 lines (62 loc) · 1.38 KB
/
generate-script-sites.pl
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
#!/usr/local/bin/perl
# Output a list of websites used by all scripts
package virtual_server;
if (!$module_name) {
$main::no_acl_check++;
$ENV{'WEBMIN_CONFIG'} ||= "/etc/webmin";
$ENV{'WEBMIN_VAR'} ||= "/var/webmin";
if ($0 =~ /^(.*)\/[^\/]+$/) {
chdir($pwd = $1);
}
else {
chop($pwd = `pwd`);
}
$0 = "$pwd/generate-script-sites.pl";
require './virtual-server-lib.pl';
$< == 0 || die "generate-script-sites.pl must be run as root";
}
# Parse command-line args
while(@ARGV) {
$a = shift(@ARGV);
if ($a eq "--firewall") {
$firewall = 1;
}
else {
push(@scripts, $a);
}
}
if (!@scripts) {
@scripts = &list_available_scripts();
}
@rv = ( );
foreach $s (@scripts) {
$script = &get_script($s);
next if (!$script->{'enabled'});
$d = { 'dom' => 'example.com' };
foreach $ver (@{$script->{'versions'}}) {
@files = &{$script->{'files_func'}}($d, $ver, undef, undef);
foreach $url (map { $_->{'url'} } @files) {
# Work out URLs
@urls = ( $url );
local $ourl = &convert_osdn_url($url);
if ($ourl && $ourl ne $url) {
push(@orls, $ourl);
}
# Extract hostnames
foreach $url (@urls) {
($host) = &parse_http_url($url);
push(@rv, $host) if ($host);
}
}
}
}
foreach $h (&unique(@rv)) {
$h = &to_ipaddress($h);
$h || next;
if ($firewall) {
print "-A FORWARD -d $h -m tcp -p tcp --dport 80 -j ACCEPT\n";
}
else {
print $h,"\n";
}
}