X7ROOT File Manager
Current Path:
/usr/libexec/webmin/squid
usr
/
libexec
/
webmin
/
squid
/
📁
..
📄
CHANGELOG
(2.59 KB)
📄
acl.cgi
(10.91 KB)
📄
acl_save.cgi
(8.13 KB)
📄
acl_security.pl
(1.72 KB)
📄
always.cgi
(1.76 KB)
📄
always_save.cgi
(1.17 KB)
📄
backup_config.pl
(732 B)
📄
cachemgr.cgi
(1.03 KB)
📄
calamaris.cgi
(3.09 KB)
📄
cgi_args.pl
(2.23 KB)
📄
chown.cgi
(1.42 KB)
📄
clear.cgi
(2.87 KB)
📄
config-AlmaLinux-7.0-ALL
(439 B)
📄
config-Amazon-Linux-2-ALL
(398 B)
📄
config-CentOS-Linux-7.0-ALL
(398 B)
📄
config-CentOS-Stream-Linux-8.0-ALL
(439 B)
📄
config-Oracle-Linux-8.0-ALL
(439 B)
📄
config-Redhat-Enterprise-Linux-7.0-ALL
(439 B)
📄
config-Rocky-Linux-7.0-ALL
(439 B)
📄
config-Scientific-Linux-7.0-ALL
(398 B)
📄
config-Ubuntu-Linux-16.0-ALL
(447 B)
📄
config-aix
(365 B)
📄
config-cobalt-linux
(364 B)
📄
config-coherent-linux
(422 B)
📄
config-corel-linux
(338 B)
📄
config-debian-linux
(338 B)
📄
config-debian-linux-10.0-ALL
(447 B)
📄
config-debian-linux-3.0-4.9
(344 B)
📄
config-debian-linux-5.0-5.9
(454 B)
📄
config-debian-linux-6.0-6.9
(442 B)
📄
config-debian-linux-7.0-9.0
(449 B)
📄
config-freebsd
(395 B)
📄
config-freebsd-8-ALL
(484 B)
📄
config-generic-linux
(405 B)
📄
config-gentoo-linux
(412 B)
📄
config-hpux
(405 B)
📄
config-irix
(405 B)
📄
config-lfs-linux
(374 B)
📄
config-macos
(405 B)
📄
config-mandrake-linux
(409 B)
📄
config-mandrake-linux-8.0-ALL
(406 B)
📄
config-msc-linux
(422 B)
📄
config-netbsd
(360 B)
📄
config-open-linux
(429 B)
📄
config-open-linux-3.1e
(431 B)
📄
config-openbsd
(395 B)
📄
config-openmamba-linux
(347 B)
📄
config-openserver
(405 B)
📄
config-osf1
(405 B)
📄
config-pardus-linux
(416 B)
📄
config-redhat-linux
(341 B)
📄
config-redhat-linux-24.0-ALL
(439 B)
📄
config-redhat-linux-6.0
(427 B)
📄
config-redhat-linux-6.1-23.0
(420 B)
📄
config-slackware-linux
(405 B)
📄
config-sol-linux
(401 B)
📄
config-solaris
(405 B)
📄
config-solaris-11-ALL
(461 B)
📄
config-suse-linux
(332 B)
📄
config-suse-linux-8.0
(359 B)
📄
config-suse-linux-8.2-ALL
(435 B)
📄
config-trustix-linux
(412 B)
📄
config-turbo-linux
(341 B)
📄
config-united-linux
(435 B)
📄
config-unixware
(405 B)
📄
config.info
(1.16 KB)
📄
config.info.ca
(1.42 KB)
📄
config.info.cs
(924 B)
📄
config.info.de
(1.4 KB)
📄
config.info.es
(1.36 KB)
📄
config.info.fa
(1.57 KB)
📄
config.info.fr
(538 B)
📄
config.info.it
(570 B)
📄
config.info.ja
(1.34 KB)
📄
config.info.nl
(1.35 KB)
📄
config.info.no
(1.22 KB)
📄
config.info.pl
(737 B)
📄
config.info.pt_BR
(1.44 KB)
📄
config.info.ru
(1.39 KB)
📄
config.info.sv
(569 B)
📄
config.info.tr
(369 B)
📄
config.info.uk
(1.41 KB)
📄
config.info.zh
(450 B)
📄
config.info.zh_TW
(355 B)
📄
defaultacl
(228 B)
📄
delete_http_accesses.cgi
(848 B)
📄
delete_http_reply_accesses.cgi
(913 B)
📄
delete_https.cgi
(838 B)
📄
delete_icp_accesses.cgi
(836 B)
📄
delete_icps.cgi
(1.14 KB)
📄
delete_pools.cgi
(1.42 KB)
📄
delete_refreshes.cgi
(840 B)
📄
edit_acl.cgi
(6.99 KB)
📄
edit_admin.cgi
(2.44 KB)
📄
edit_authparam.cgi
(4.62 KB)
📄
edit_cache.cgi
(7.39 KB)
📄
edit_cache_host.cgi
(4.76 KB)
📄
edit_cachemgr.cgi
(1.82 KB)
📄
edit_delay.cgi
(2.86 KB)
📄
edit_ext.cgi
(1.53 KB)
📄
edit_headeracc.cgi
(1.96 KB)
📄
edit_icp.cgi
(5.28 KB)
📄
edit_iptables.cgi
(1.91 KB)
📄
edit_logs.cgi
(4.74 KB)
📄
edit_manual.cgi
(919 B)
📄
edit_mem.cgi
(2.48 KB)
📄
edit_misc.cgi
(3.92 KB)
📄
edit_nauth.cgi
(1.26 KB)
📄
edit_nuser.cgi
(1.46 KB)
📄
edit_pool.cgi
(4.18 KB)
📄
edit_ports.cgi
(3.28 KB)
📄
edit_progs.cgi
(3.06 KB)
📄
edit_refresh.cgi
(1.91 KB)
📁
help
📄
http_access.cgi
(2 KB)
📄
http_access_save.cgi
(1.37 KB)
📄
http_reply_access.cgi
(1.81 KB)
📄
http_reply_access_save.cgi
(1.25 KB)
📄
icp_access.cgi
(1.98 KB)
📄
icp_access_save.cgi
(1.35 KB)
📁
images
📄
index.cgi
(5.54 KB)
📄
init_cache.cgi
(3.03 KB)
📄
install_check.pl
(615 B)
📁
lang
📄
list_headeracc.cgi
(1.71 KB)
📄
list_refresh.cgi
(1.63 KB)
📄
log_parser.pl
(1.27 KB)
📄
module.info
(496 B)
📄
module.info.af
(0 B)
📄
module.info.af.auto
(122 B)
📄
module.info.ar
(0 B)
📄
module.info.ar.auto
(191 B)
📄
module.info.be
(0 B)
📄
module.info.be.auto
(231 B)
📄
module.info.bg
(0 B)
📄
module.info.bg.auto
(249 B)
📄
module.info.ca
(112 B)
📄
module.info.ca.auto
(16 B)
📄
module.info.cs
(27 B)
📄
module.info.cs.auto
(105 B)
📄
module.info.da
(0 B)
📄
module.info.da.auto
(134 B)
📄
module.info.de
(110 B)
📄
module.info.de.auto
(20 B)
📄
module.info.el
(0 B)
📄
module.info.el.auto
(230 B)
📄
module.info.es
(31 B)
📄
module.info.es.auto
(124 B)
📄
module.info.eu
(0 B)
📄
module.info.eu.auto
(138 B)
📄
module.info.fa
(0 B)
📄
module.info.fa.auto
(231 B)
📄
module.info.fi
(0 B)
📄
module.info.fi.auto
(159 B)
📄
module.info.fr
(28 B)
📄
module.info.fr.auto
(127 B)
📄
module.info.he
(0 B)
📄
module.info.he.auto
(194 B)
📄
module.info.hr
(0 B)
📄
module.info.hr.auto
(143 B)
📄
module.info.hu
(0 B)
📄
module.info.hu.auto
(170 B)
📄
module.info.it
(0 B)
📄
module.info.it.auto
(142 B)
📄
module.info.ja
(37 B)
📄
module.info.ja.auto
(147 B)
📄
module.info.ko
(31 B)
📄
module.info.ko.auto
(121 B)
📄
module.info.lt
(0 B)
📄
module.info.lt.auto
(151 B)
📄
module.info.lv
(0 B)
📄
module.info.lv.auto
(159 B)
📄
module.info.ms
(116 B)
📄
module.info.ms.auto
(15 B)
📄
module.info.mt
(0 B)
📄
module.info.mt.auto
(144 B)
📄
module.info.nl
(27 B)
📄
module.info.nl.auto
(98 B)
📄
module.info.no
(0 B)
📄
module.info.no.auto
(131 B)
📄
module.info.pl
(27 B)
📄
module.info.pl.auto
(115 B)
📄
module.info.pt
(29 B)
📄
module.info.pt.auto
(103 B)
📄
module.info.pt_BR
(32 B)
📄
module.info.pt_BR.auto
(109 B)
📄
module.info.ro
(0 B)
📄
module.info.ro.auto
(147 B)
📄
module.info.ru
(40 B)
📄
module.info.ru.auto
(171 B)
📄
module.info.sk
(0 B)
📄
module.info.sk.auto
(181 B)
📄
module.info.sl
(0 B)
📄
module.info.sl.auto
(146 B)
📄
module.info.sv
(26 B)
📄
module.info.sv.auto
(111 B)
📄
module.info.th
(0 B)
📄
module.info.th.auto
(231 B)
📄
module.info.tr
(29 B)
📄
module.info.tr.auto
(132 B)
📄
module.info.uk
(0 B)
📄
module.info.uk.auto
(243 B)
📄
module.info.ur
(0 B)
📄
module.info.ur.auto
(205 B)
📄
module.info.vi
(0 B)
📄
module.info.vi.auto
(147 B)
📄
module.info.zh
(30 B)
📄
module.info.zh.auto
(84 B)
📄
module.info.zh_TW
(33 B)
📄
module.info.zh_TW.auto
(90 B)
📄
move_always.cgi
(762 B)
📄
move_headeracc.cgi
(777 B)
📄
move_http.cgi
(748 B)
📄
move_http_reply.cgi
(797 B)
📄
move_icp.cgi
(736 B)
📄
move_never.cgi
(751 B)
📄
move_pool.cgi
(831 B)
📄
move_refresh.cgi
(822 B)
📄
nat
(34.84 KB)
📄
never.cgi
(1.75 KB)
📄
never_save.cgi
(1.15 KB)
📄
parser-lib.pl
(6.39 KB)
📄
pool_access.cgi
(1.82 KB)
📄
pool_access_save.cgi
(1.17 KB)
📄
purge.cgi
(1.11 KB)
📄
restart.cgi
(381 B)
📄
save_admin.cgi
(2.23 KB)
📄
save_authparam.cgi
(5.29 KB)
📄
save_cache.cgi
(6.03 KB)
📄
save_cache_host.cgi
(3.8 KB)
📄
save_cachemgr.cgi
(1.15 KB)
📄
save_delay.cgi
(656 B)
📄
save_ext.cgi
(2.32 KB)
📄
save_headeracc.cgi
(1.26 KB)
📄
save_icp.cgi
(1.18 KB)
📄
save_iptables.cgi
(2.9 KB)
📄
save_logs.cgi
(3.14 KB)
📄
save_manual.cgi
(493 B)
📄
save_mem.cgi
(1.72 KB)
📄
save_misc.cgi
(2.65 KB)
📄
save_nuser.cgi
(1.89 KB)
📄
save_pool.cgi
(3.19 KB)
📄
save_ports.cgi
(2.59 KB)
📄
save_progs.cgi
(2.55 KB)
📄
save_refresh.cgi
(1.46 KB)
📄
squid-auth.pl
(446 B)
📄
squid-lib.pl
(16.15 KB)
📄
start.cgi
(1.16 KB)
📄
stop.cgi
(881 B)
📄
syslog_logs.pl
(715 B)
📄
useradmin_update.pl
(2.8 KB)
Editing: acl_save.cgi
#!/usr/bin/perl # acl_save.cgi # Save or delete an ACL use strict; use warnings; no warnings 'redefine'; no warnings 'uninitialized'; our (%text, %in, %access, $squid_version, %config, %acl_types); require './squid-lib.pl'; $access{'actrl'} || &error($text{'eacl_ecannot'}); &ReadParseMime(); &lock_file($config{'squid_conf'}); my $conf = &get_config(); &error_setup($text{'aclsave_failsave'}); my @acls = &find_config("acl", $conf); my @denys = &find_config("deny_info", $conf); my ($acl, $deny); if (defined($in{'index'})) { $acl = $conf->[$in{'index'}]; } if (defined($in{'dindex'})) { $deny = $conf->[$in{'dindex'}]; } my @aclopts = ( ); my $logacl; if ($in{'delete'}) { # Is there more than one ACL with this name? my $name = $acl->{'values'}->[0]; my $count = 0; foreach my $a (&find_config("acl", $conf)) { $count++ if ($a->{'values'}->[0] eq $name); } # Is this ACL in use? &error_setup($text{'aclsave_faildel'}); if ($count == 1) { foreach my $h (&find_config("http_access", $conf)) { my @v = @{$h->{'values'}}; for(my $i=1; $i<@v; $i++) { if ($v[$i] eq $name || $v[$i] eq "!$name") { &error($text{'aclsave_epr'}); } } } foreach my $h (&find_config("icp_access", $conf)) { my @v = @{$h->{'values'}}; for(my $i=1; $i<@v; $i++) { if ($v[$i] eq $in{'name'} || $v[$i] eq "!$in{'name'}") { &error($text{'aclsave_eicpr'}); } } } } splice(@acls, &indexof($acl, @acls), 1); if ($deny) { splice(@denys, &indexof($deny, @denys), 1); } $logacl = $acl; } else { # Check ACL details $in{'name'} =~ /^\S+$/ || &error($text{'aclsave_ename'}); my $changed = 0; $changed++ if ($acl && $in{'name'} ne $acl->{'values'}->[0]); for(my $i=0; $i<@acls; $i++) { if ($changed && $acls[$i]->{'values'}->[0] eq $in{'name'}) { &error(&text('aclsave_eexists',$in{'name'})); } } my @vals; if ($in{'type'} eq "src" || $in{'type'} eq "dst") { push(@aclopts, "-n") if ($in{'nodns'}); for(my $i=0; defined(my $from = $in{"from_$i"}); $i++) { my $to = $in{"to_$i"}; my $mask = $in{"mask_$i"}; next if (!$from && !$to && !$mask); &check_ipaddress($from) || &check_ip6address($from) || &error(&text('aclsave_efrom',$from)); !$to || &check_ipaddress($to) || &check_ip6address($to) || &error(&text('aclsave_eto',$to)); $mask =~ /^\d*$/ || &check_ipaddress($mask) || &error(&text('aclsave_enmask',$mask)); if ($to && $mask) { push(@vals, "$from-$to/$mask"); } elsif ($to) { push(@vals, "$from-$to"); } elsif ($mask) { push(@vals, "$from/$mask"); } else { push(@vals, $from); } } } elsif ($in{'type'} eq "myip") { for(my $i=0; defined(my $ip = $in{"ip_$i"}); $i++) { my $mask = $in{"mask_$i"}; next if (!$mask || !$ip); &check_ipaddress($ip) || &check_ip6address($ip) || &error(&text('aclsave_eip',$ip)); $mask =~ /^\d+$/ || &check_ipaddress($mask) || &error(&text('aclsave_enmask',$mask)); push(@vals, "$ip/$mask"); } } elsif ($in{'type'} eq "srcdomain") { push(@vals, split(/[\r\n]+/, $in{'vals'})); if (!@vals && !$in{'keep'}) { &error($text{'aclsave_ecdom'}); } } elsif ($in{'type'} eq "dstdomain") { push(@aclopts, "-n") if ($in{'nodns'}); push(@vals, split(/[\r\n]+/, $in{'vals'})); if (!@vals && !$in{'keep'}) { &error($text{'aclsave_esdom'}); } } elsif ($in{'type'} eq "time") { if (!$in{'day_def'}) { push(@vals, join('', split(/\0/, $in{'day'}))); } if (!$in{'hour_def'}) { $in{'h1'} =~ /^\d+$/ || &error($text{'aclsave_eshour'}); $in{'h2'} =~ /^\d+$/ || &error($text{'aclsave_eehour'}); $in{'m1'} =~ /^\d+$/ || &error($text{'aclsave_esmin'}); $in{'m2'} =~ /^\d+$/ || &error($text{'aclsave_eemin'}); push(@vals, "$in{'h1'}:$in{'m1'}-$in{'h2'}:$in{'m2'}"); } } elsif ($in{'type'} eq "url_regex") { push(@aclopts, "-i") if ($in{'caseless'}); push(@vals, split(/[\r\n]+/, $in{'vals'})); } elsif ($in{'type'} eq "urlpath_regex") { push(@aclopts, "-i") if ($in{'caseless'}); push(@vals, split(/[\r\n]+/, $in{'vals'})); } elsif ($in{'type'} eq "port") { push(@vals, split(/\s+/, $in{'vals'})); } elsif ($in{'type'} eq "proto") { push(@vals, split(/\0/, $in{'vals'})); } elsif ($in{'type'} eq "method") { push(@vals, split(/\0/, $in{'vals'})); } elsif ($in{'type'} eq "browser" || $in{'type'} eq "snmp_community" || $in{'type'} eq "req_mime_type" || $in{'type'} eq "rep_mime_type") { push(@vals, $in{'vals'}); } elsif ($in{'type'} eq "user" || $in{'type'} eq "ident") { push(@vals, split(/[\r\n]+/, $in{'vals'})); } elsif ($in{'type'} eq "src_as" || $in{'type'} eq "dst_as") { push(@vals, split(/\s+/, $in{'vals'})); } elsif ($in{'type'} eq "proxy_auth" && $squid_version < 2.3) { push(@vals, $in{'vals'}) if ($in{'vals'}); } elsif ($in{'type'} eq "proxy_auth" && $squid_version >= 2.3) { push(@vals, $in{'authall'} ? "REQUIRED" : split(/[\r\n]+/, $in{'vals'})); } elsif ($in{'type'} eq "proxy_auth_regex" || $in{'type'} eq "ident_regex") { push(@aclopts, "-i") if ($in{'caseless'}); push(@vals, split(/[\r\n]+/, $in{'vals'})); } elsif ($in{'type'} eq "srcdom_regex" || $in{'type'} eq "dstdom_regex") { push(@aclopts, "-i") if ($in{'caseless'}); push(@aclopts, "-n") if ($in{'nodns'}); push(@vals, split(/[\r\n]+/, $in{'vals'})); } elsif ($in{'type'} eq "myport") { $in{'vals'} =~ /^\d+$/ || &error("'$in{'vals'}' is not a valid port number"); push(@vals, $in{'vals'}); } elsif ($in{'type'} eq "maxconn") { $in{'vals'} =~ /^\d+$/ || &error("'$in{'vals'}' is not a valid number of requests"); push(@vals, $in{'vals'}); } elsif ($in{'type'} eq "arp") { push(@vals, split(/[\r\n]+/, $in{'vals'})); } elsif ($in{'type'} eq "external") { $in{'class'} || &error($text{'eacl_eclass'}); push(@vals, $in{'class'}); push(@vals, split(/\s+/, $in{'args'})); } elsif ($in{'type'} eq "max_user_ip") { if ($in{'strict'}){ push(@vals, '-s'); } push(@vals, $in{'vals'}); } if (!$in{'file_def'}) { # Writing to an external file $in{'file'} || &error($text{'aclsave_enofile'}); &can_access($in{'file'}) || &error(&text('aclsave_efile', $in{'file'})); if (!$in{'keep'}) { if (!$acl && -e $in{'file'}) { &error($text{'aclsave_ealready'}); } my $fh = "FILE"; &open_lock_tempfile($fh, ">$in{'file'}"); foreach my $v (@vals) { &print_tempfile($fh, $v,"\n"); } &close_tempfile($fh); } @vals = ( $in{'name'}, $in{'type'}, @aclopts, "\"$in{'file'}\"" ); } else { # Just saving in Squid config directly if ($vals[0] =~ /^"(.*)"$/) { my $f = $1; &can_access($f) || &error(&text('aclsave_efile', $f)); if ($f !~ /^\// && $access{'root'} ne '/') { $vals[0] = "\"$access{'root'}/$f\""; } } @vals = ( $in{'name'}, $in{'type'}, @aclopts, @vals ); } my $newacl = { 'name' => 'acl', 'values' => \@vals }; $logacl = $newacl; if ($acl) { splice(@acls, &indexof($acl, @acls), 1, $newacl); } else { push(@acls, $newacl); } my $newdeny = { 'name' => 'deny_info', 'values' => [ $in{'deny'}, $vals[0] ] }; my $didx = &indexof($deny, @denys); if ($deny && $in{'deny'}) { $denys[$didx] = $newdeny; } elsif ($deny) { splice(@denys, $didx, 1); } elsif ($in{'deny'}) { push(@denys, $newdeny); } # Update http_access and icp_access directives if the ACL was renamed if ($changed) { my @https = &find_config("http_access", $conf); my @icps = &find_config("icp_access", $conf); my @replys = &find_config("http_reply_access", $conf); my $on = $acl->{'values'}->[0]; foreach my $c (@https, @icps, @replys) { for(my $j=1; $j<@{$c->{'values'}}; $j++) { if ($c->{'values'}->[$j] eq $on) { $c->{'values'}->[$j] = $in{'name'}; } elsif ($c->{'values'}->[$j] eq "!$on") { $c->{'values'}->[$j] = "!$in{'name'}"; } } } &save_directive($conf, "http_access", \@https); &save_directive($conf, "icp_access", \@icps); } } &save_directive($conf, "acl", \@acls); &save_directive($conf, "deny_info", \@denys); &flush_file_lines(); &unlock_file($config{'squid_conf'}); &webmin_log($in{'delete'} ? 'delete' : $acl ? 'modify' : 'create', 'acl', $logacl->{'values'}->[0], \%in); &redirect("edit_acl.cgi?mode=acls");
Upload File
Create Folder