[ Avaa Bypassed ]




Upload:

Command:

www-data@3.15.7.195: ~ $
# parser-lib.pl
# Functions for reading and writing the squid config file

use strict;
use warnings;
no warnings 'redefine';
no warnings 'uninitialized';
our (@get_config_cache, %config);

# get_config()
# Parses squid.conf into an array of data structures
sub get_config
{
if (!@get_config_cache) {
	my $fh = "CONF";
	&open_readfile($fh, $config{'squid_conf'}) || return [];
	my $lnum = 0;
	while(my $line = <$fh>) {
		$line =~ s/\r|\n//g;	# strip newlines and comments
		if ($line =~ /^\s*(\#?\s*|\#\s+TAG:\s+)(\S+)\s*(.*)$/) {
			my %dir;
			$dir{'name'} = $2;
			$dir{'value'} = $3;
			$dir{'enabled'} = !$1;
			$dir{'comment'} = $1;
			my $str = $3;
			while($str =~ /^\s*("[^"]*")(.*)$/ ||
			      $str =~ /^\s*(\S+)(.*)$/) {
				my $v = $1;
				$str = $2;
				if ($v !~ /^"/ && $v =~ /^(.*)#/ &&
				    !$dir{'comment'}) {
					# A comment .. end of values
					$v = $1;
					$dir{'postcomment'} = $str;
					$str = undef;
					last if ($v eq '');
					}
				$dir{'values'} ||= [ ];
				push(@{$dir{'values'}}, $v);
				}
			$dir{'line'} = $lnum;
			$dir{'index'} = scalar(@get_config_cache);
			if ($dir{'comment'} =~ /TAG/) {
				$dir{'tag'} = 1;
				}
			push(@get_config_cache, \%dir);
			}
		$lnum++;
		}
	close($fh);
	}
return \@get_config_cache;
}

# find_config(name, &config, [disabled-mode])
# Returns the structure(s) with some name
# disabled mode 0 = only enabled, 1 = both, 2 = only disabled,
# 3 = disabled and tags
sub find_config
{
my ($name, $conf, $mode) = @_;
$mode ||= 0;
my @rv;
foreach my $c (@$conf) {
	if ($c->{'name'} eq $name) {
		push(@rv, $c);
		}
	}
if ($mode == 0) {
	@rv = grep { $_->{'enabled'} && !$_->{'tag'} } @rv;
	}
elsif ($mode == 1) {
	@rv = grep { !$_->{'tag'} } @rv;
	}
elsif ($mode == 2) {
	@rv = grep { !$_->{'enabled'} && !$_->{'tag'} } @rv;
	}
elsif ($mode == 3) {
	@rv = grep { !$_->{'enabled'} } @rv;
	}
return @rv ? wantarray ? @rv : $rv[0]
           : wantarray ? () : undef;
}

# find_value(name, &config, [disabled-mode])
# Returns the value of some directive
sub find_value
{
my ($name, $conf, $mode) = @_;
my $rv = &find_config($name, $conf, $mode);
return $rv ? $rv->{'value'} : undef;
}

# find_values(name, &config, [disabled-mode])
# Returns the value of some directive
sub find_values
{
my ($name, $conf, $mode) = @_;
my $rv = &find_config($name, $conf, $mode);
return $rv ? $rv->{'values'} : undef;
}

# save_value(&config, name, value*)
sub save_value
{
my ($conf, $name, @values) = @_;
my @v = map { { 'name' => $name,
		'values' => [ $_ ] } } @values;
&save_directive($conf, $name, \@v);
}

# save_directive(&config, name, &values, [after], [before])
# Given a structure containing a directive name, type, values and members
# add, update or remove that directive in config structure and data files.
sub save_directive
{
my ($conf, $name, $values, $after, $before) = @_;
my @oldv = &find_config($name, $conf);
my @newv = map { my %n = %$_; \%n } @$values;
my $lref = &read_file_lines($config{'squid_conf'});
my $change = undef;
for(my $i=0; $i<@oldv || $i<@newv; $i++) {
	if ($i >= @oldv) {
		# a new directive is being added.. 
		my $nl = &directive_line($newv[$i]);
		my @afterdirs = ref($after) ? ( $after ) :
			        $after ? &find_config($after, $conf) : ( );
		my $afterdir = @afterdirs ? $afterdirs[$#afterdirs] : undef;
		my @beforedirs = ref($before) ? ( $before ) :
			        $before ? &find_config($before, $conf) : ( );
		my $beforedir = @beforedirs ? $beforedirs[0] : undef;
		my @comment = &find_config($_[1], $_[0], 3);
		my $comment = @comment ? $comment[$#comment] : undef;
		if ($beforedir) {
			# put it before the specified type of directive
			my $blnum = $beforedir->{'line'};
			&renumber($conf, $beforedir->{'line'}-1, 1);
			$newv[$i]->{'line'} = $blnum;
			splice(@$lref, $newv[$i]->{'line'}, 0, $nl);
			splice(@$conf, &indexof($beforedir, @$conf),
			       0, $newv[$i]);
			}
		elsif ($change &&
		      (!$afterdir || $afterdir->{'line'} < $change->{'line'})) {
			# put it after any directives of the same type
			$newv[$i]->{'line'} = $change->{'line'}+1;
			splice(@$lref, $newv[$i]->{'line'}, 0, $nl);
			&renumber($conf, $change->{'line'}, 1);
			splice(@$conf, &indexof($change, @$conf),
			       0, $newv[$i]);
			$change = $newv[$i];
			}
		elsif ($comment) {
			# put it after commented line
			$newv[$i]->{'line'} = $comment->{'line'}+1;
			splice(@$lref, $newv[$i]->{'line'}, 0, $nl);
			&renumber($conf, $comment->{'line'}, 1);
			splice(@$conf, &indexof($comment, @$conf),
			       0, $newv[$i]);
			}
		else {
			# put it at the end of the file
			$newv[$i]->{'line'} = scalar(@$lref);
			push(@$lref, $nl);
			push(@$conf, $newv[$i]);
			}
		}
	elsif ($i >= @newv) {
		# a directive was deleted
		splice(@$lref, $oldv[$i]->{'line'}, 1);
		&renumber($conf, $oldv[$i]->{'line'}, -1);
		splice(@$conf, &indexof($oldv[$i], @$conf), 1);
		}
	else {
		# updating some directive
		$newv[$i]->{'postcomment'} = $oldv[$i]->{'postcomment'};
		my $nl = &directive_line($newv[$i]);
		my @after = $change && $after ? ( $change ) :
							# After last one updated
			    ref($after) ? ( $after ) :	# After specific
			    $after ? &find_config($after, $conf) : ( );
		my $after = @after ? $after[$#after] : undef;
		if ($after && $oldv[$i]->{'line'} < $after->{'line'}) {
			# Need to move it after some directive
			splice(@$lref, $oldv[$i]->{'line'}, 1);
			splice(@$conf, &indexof($oldv[$i], @$conf), 1);
			&renumber($conf, $oldv[$i]->{'line'}, -1);

			splice(@$lref, $after->{'line'}+1, 0, $nl);
			$newv[$i]->{'line'} = $after->{'line'}+1;
			splice(@$conf, &indexof($after, @$conf)+1, 0,
			       $newv[$i]);
			&renumber($conf, $newv[$i]->{'line'}, 1);
			$change = $newv[$i];
			}
		else {
			# Can just update at the same line
			splice(@$lref, $oldv[$i]->{'line'}, 1, $nl);
			$newv[$i]->{'line'} = $oldv[$i]->{'line'};
			$conf->[&indexof($oldv[$i], @$conf)] = $newv[$i];
			$change = $newv[$i];
			}
		}
	}
}

# directive_line(&details)
# Returns the line of text for some directive
sub directive_line
{
my ($d) = @_;
my @v = @{$d->{'values'}};
return $d->{'name'}.(@v ? " ".join(' ',@v) : "").
       ($d->{'postcomment'} ? " #".$d->{'postcomment'} : "");
}

# renumber(&directives, line, count, [end])
# Runs through the given array of directives and increases the line numbers
# of all those greater than some line by the given count
sub renumber
{
my ($conf, $line, $count, $end) = @_;
foreach my $d (@$conf) {
	if ($d->{'line'} > $line && (!$end || $d->{'line'} < $end)) {
		$d->{'line'} += $count;
		}
	}
}

1;


Filemanager

Name Type Size Permission Actions
help Folder 0755
images Folder 0755
lang Folder 0755
CHANGELOG File 2.59 KB 0644
acl.cgi File 10.91 KB 0755
acl_save.cgi File 8.13 KB 0755
acl_security.pl File 1.72 KB 0755
always.cgi File 1.76 KB 0755
always_save.cgi File 1.17 KB 0755
backup_config.pl File 732 B 0755
cachemgr.cgi File 1.03 KB 0755
calamaris.cgi File 3.09 KB 0755
cgi_args.pl File 2.23 KB 0755
chown.cgi File 1.42 KB 0755
clear.cgi File 2.87 KB 0755
config-AlmaLinux-7.0-ALL File 439 B 0644
config-Amazon-Linux-2-ALL File 398 B 0644
config-CentOS-Linux-7.0-ALL File 398 B 0644
config-CentOS-Stream-Linux-8.0-ALL File 439 B 0644
config-CloudLinux-8.0-ALL File 439 B 0644
config-Oracle-Linux-8.0-ALL File 439 B 0644
config-Redhat-Enterprise-Linux-7.0-ALL File 439 B 0644
config-Rocky-Linux-7.0-ALL File 439 B 0644
config-Scientific-Linux-7.0-ALL File 398 B 0644
config-Ubuntu-Linux-16.0-ALL File 447 B 0644
config-aix File 365 B 0644
config-cobalt-linux File 364 B 0644
config-coherent-linux File 422 B 0644
config-corel-linux File 338 B 0644
config-debian-linux File 338 B 0644
config-debian-linux-10.0-ALL File 447 B 0644
config-debian-linux-3.0-4.9 File 344 B 0644
config-debian-linux-5.0-5.9 File 454 B 0644
config-debian-linux-6.0-6.9 File 442 B 0644
config-debian-linux-7.0-9.0 File 449 B 0644
config-freebsd File 395 B 0644
config-freebsd-8-ALL File 484 B 0644
config-generic-linux File 405 B 0644
config-gentoo-linux File 412 B 0644
config-hpux File 405 B 0644
config-irix File 405 B 0644
config-lfs-linux File 374 B 0644
config-macos File 405 B 0644
config-mandrake-linux File 409 B 0644
config-mandrake-linux-8.0-ALL File 406 B 0644
config-msc-linux File 422 B 0644
config-netbsd File 360 B 0644
config-open-linux File 429 B 0644
config-open-linux-3.1e File 431 B 0644
config-openSUSE-Linux-15.0-ALL File 447 B 0644
config-openbsd File 395 B 0644
config-openmamba-linux File 347 B 0644
config-openserver File 405 B 0644
config-osf1 File 405 B 0644
config-pardus-linux File 416 B 0644
config-redhat-linux File 341 B 0644
config-redhat-linux-24.0-ALL File 439 B 0644
config-redhat-linux-6.0 File 427 B 0644
config-redhat-linux-6.1-23.0 File 420 B 0644
config-slackware-linux File 405 B 0644
config-sol-linux File 401 B 0644
config-solaris File 405 B 0644
config-solaris-11-ALL File 461 B 0644
config-suse-linux File 332 B 0644
config-suse-linux-8.0 File 359 B 0644
config-suse-linux-8.2-ALL File 456 B 0644
config-trustix-linux File 412 B 0644
config-turbo-linux File 341 B 0644
config-united-linux File 435 B 0644
config-unixware File 405 B 0644
config.info File 1.16 KB 0644
config.info.ca File 1.42 KB 0644
config.info.cs File 924 B 0644
config.info.de File 1.4 KB 0644
config.info.es File 1.36 KB 0644
config.info.fa File 1.57 KB 0644
config.info.fr File 538 B 0644
config.info.it File 570 B 0644
config.info.ja File 1.34 KB 0644
config.info.nl File 1.35 KB 0644
config.info.no File 1.22 KB 0644
config.info.pl File 737 B 0644
config.info.pt_BR File 1.44 KB 0644
config.info.ru File 1.39 KB 0644
config.info.sv File 569 B 0644
config.info.tr File 369 B 0644
config.info.uk File 1.41 KB 0644
config.info.zh File 450 B 0644
config.info.zh_TW File 355 B 0644
defaultacl File 228 B 0644
delete_http_accesses.cgi File 848 B 0755
delete_http_reply_accesses.cgi File 913 B 0755
delete_https.cgi File 838 B 0755
delete_icp_accesses.cgi File 836 B 0755
delete_icps.cgi File 1.14 KB 0755
delete_pools.cgi File 1.42 KB 0755
delete_refreshes.cgi File 840 B 0755
edit_acl.cgi File 6.99 KB 0755
edit_admin.cgi File 2.44 KB 0755
edit_authparam.cgi File 4.62 KB 0755
edit_cache.cgi File 7.39 KB 0755
edit_cache_host.cgi File 4.76 KB 0755
edit_cachemgr.cgi File 1.82 KB 0755
edit_delay.cgi File 2.86 KB 0755
edit_ext.cgi File 1.53 KB 0755
edit_headeracc.cgi File 1.96 KB 0755
edit_icp.cgi File 5.28 KB 0755
edit_iptables.cgi File 1.91 KB 0755
edit_logs.cgi File 4.74 KB 0755
edit_manual.cgi File 919 B 0755
edit_mem.cgi File 2.48 KB 0755
edit_misc.cgi File 3.92 KB 0755
edit_nauth.cgi File 1.26 KB 0755
edit_nuser.cgi File 1.46 KB 0755
edit_pool.cgi File 4.18 KB 0755
edit_ports.cgi File 3.28 KB 0755
edit_progs.cgi File 3.06 KB 0755
edit_refresh.cgi File 1.91 KB 0755
http_access.cgi File 2 KB 0755
http_access_save.cgi File 1.37 KB 0755
http_reply_access.cgi File 1.81 KB 0755
http_reply_access_save.cgi File 1.25 KB 0755
icp_access.cgi File 1.98 KB 0755
icp_access_save.cgi File 1.35 KB 0755
index.cgi File 5.54 KB 0755
init_cache.cgi File 3.03 KB 0755
install_check.pl File 615 B 0755
list_headeracc.cgi File 1.71 KB 0755
list_refresh.cgi File 1.63 KB 0755
log_parser.pl File 1.27 KB 0755
module.info File 496 B 0644
module.info.af File 0 B 0644
module.info.af.auto File 122 B 0644
module.info.ar File 0 B 0644
module.info.ar.auto File 191 B 0644
module.info.be File 0 B 0644
module.info.be.auto File 231 B 0644
module.info.bg File 0 B 0644
module.info.bg.auto File 249 B 0644
module.info.ca File 112 B 0644
module.info.ca.auto File 16 B 0644
module.info.cs File 27 B 0644
module.info.cs.auto File 105 B 0644
module.info.da File 0 B 0644
module.info.da.auto File 134 B 0644
module.info.de File 110 B 0644
module.info.de.auto File 20 B 0644
module.info.el File 0 B 0644
module.info.el.auto File 230 B 0644
module.info.es File 31 B 0644
module.info.es.auto File 124 B 0644
module.info.eu File 0 B 0644
module.info.eu.auto File 138 B 0644
module.info.fa File 0 B 0644
module.info.fa.auto File 231 B 0644
module.info.fi File 0 B 0644
module.info.fi.auto File 159 B 0644
module.info.fr File 28 B 0644
module.info.fr.auto File 127 B 0644
module.info.he File 0 B 0644
module.info.he.auto File 194 B 0644
module.info.hr File 0 B 0644
module.info.hr.auto File 143 B 0644
module.info.hu File 0 B 0644
module.info.hu.auto File 170 B 0644
module.info.it File 0 B 0644
module.info.it.auto File 142 B 0644
module.info.ja File 37 B 0644
module.info.ja.auto File 147 B 0644
module.info.ko File 31 B 0644
module.info.ko.auto File 121 B 0644
module.info.lt File 0 B 0644
module.info.lt.auto File 151 B 0644
module.info.lv File 0 B 0644
module.info.lv.auto File 159 B 0644
module.info.ms File 116 B 0644
module.info.ms.auto File 15 B 0644
module.info.mt File 0 B 0644
module.info.mt.auto File 144 B 0644
module.info.nl File 27 B 0644
module.info.nl.auto File 98 B 0644
module.info.no File 0 B 0644
module.info.no.auto File 131 B 0644
module.info.pl File 27 B 0644
module.info.pl.auto File 115 B 0644
module.info.pt File 29 B 0644
module.info.pt.auto File 103 B 0644
module.info.pt_BR File 32 B 0644
module.info.pt_BR.auto File 109 B 0644
module.info.ro File 0 B 0644
module.info.ro.auto File 147 B 0644
module.info.ru File 40 B 0644
module.info.ru.auto File 171 B 0644
module.info.sk File 0 B 0644
module.info.sk.auto File 181 B 0644
module.info.sl File 0 B 0644
module.info.sl.auto File 146 B 0644
module.info.sv File 26 B 0644
module.info.sv.auto File 111 B 0644
module.info.th File 0 B 0644
module.info.th.auto File 231 B 0644
module.info.tr File 29 B 0644
module.info.tr.auto File 132 B 0644
module.info.uk File 0 B 0644
module.info.uk.auto File 243 B 0644
module.info.ur File 0 B 0644
module.info.ur.auto File 205 B 0644
module.info.vi File 0 B 0644
module.info.vi.auto File 147 B 0644
module.info.zh File 30 B 0644
module.info.zh.auto File 84 B 0644
module.info.zh_TW File 33 B 0644
module.info.zh_TW.auto File 90 B 0644
move_always.cgi File 762 B 0755
move_headeracc.cgi File 777 B 0755
move_http.cgi File 748 B 0755
move_http_reply.cgi File 797 B 0755
move_icp.cgi File 736 B 0755
move_never.cgi File 751 B 0755
move_pool.cgi File 831 B 0755
move_refresh.cgi File 822 B 0755
nat File 34.84 KB 0644
never.cgi File 1.75 KB 0755
never_save.cgi File 1.15 KB 0755
parser-lib.pl File 6.39 KB 0755
pool_access.cgi File 1.82 KB 0755
pool_access_save.cgi File 1.17 KB 0755
purge.cgi File 1.11 KB 0755
restart.cgi File 381 B 0755
save_admin.cgi File 2.23 KB 0755
save_authparam.cgi File 5.29 KB 0755
save_cache.cgi File 6.03 KB 0755
save_cache_host.cgi File 3.8 KB 0755
save_cachemgr.cgi File 1.15 KB 0755
save_delay.cgi File 656 B 0755
save_ext.cgi File 2.32 KB 0755
save_headeracc.cgi File 1.26 KB 0755
save_icp.cgi File 1.18 KB 0755
save_iptables.cgi File 2.9 KB 0755
save_logs.cgi File 3.14 KB 0755
save_manual.cgi File 493 B 0755
save_mem.cgi File 1.72 KB 0755
save_misc.cgi File 2.65 KB 0755
save_nuser.cgi File 1.89 KB 0755
save_pool.cgi File 3.19 KB 0755
save_ports.cgi File 2.59 KB 0755
save_progs.cgi File 2.55 KB 0755
save_refresh.cgi File 1.46 KB 0755
squid-auth.pl File 446 B 0755
squid-lib.pl File 16.16 KB 0755
start.cgi File 1.16 KB 0755
stop.cgi File 881 B 0755
syslog_logs.pl File 715 B 0755
useradmin_update.pl File 2.8 KB 0755