[ Avaa Bypassed ]




Upload:

Command:

www-data@18.227.228.218: ~ $
# aliases-lib.pl
# Alias file functions

# aliases_file(&config)
# Returns the alias filenames
sub aliases_file
{
if ($config{'alias_file'}) { return [ $config{'alias_file'} ]; }
else {
	local(@afiles, $o);
	foreach $o (&find_type("O", $_[0])) {
		if ($o->{'value'} =~ /^\s*AliasFile=(.*)$/) {
			push(@afiles, split(/,/, $1));
			}
		}
	map { s/dbm:// } @afiles;
	return \@afiles;
	}
}

# list_aliases(files)
# Returns an array of data structures, each containing information about
# one sendmail alias
sub list_aliases
{
local $jfiles = join(",", @{$_[0]});
local $c = $list_aliases_cache{$jfiles};
if (!defined($c)) {
	$c = $list_aliases_cache{$jfiles} = [ ];
	local $file;
	local @skip = split(/\s+/, $config{'alias_skip'});
	foreach $file (@{$_[0]}) {
		local $lalias;
		local $lnum = 0;
		local $cmt;
		&open_readfile(AFILE, $file);
		while(<AFILE>) {
			s/\r|\n//g;	# remove newlines
			if (/^\s*#+\s*(.*)/ && &is_table_comment($_, 1)) {
				# A comment line
				$cmt = &is_table_comment($_, 1);
				}
			elsif (/^(#*)\s*([^:$ \t]+)\s*:\s*(.*)$/) {
				local(%alias, @values, $v);
				$alias{'line'} = $cmt ? $lnum-1 : $lnum;
				$alias{'eline'} = $lnum;
				$alias{'file'} = $file;
				$alias{'files'} = $_[0];
				$alias{'enabled'} = $1 ? 0 : 1;
				$alias{'name'} = $2;
				$alias{'cmt'} = $cmt;
				$v = $3;
				$alias{'value'} = $v;
				while($v =~ /^\s*,?\s*()"([^"]+)"(.*)$/ ||
				      $v =~ /^\s*,?\s*(\|)"([^"]+)"(.*)$/ ||
				      $v =~ /^\s*,?\s*()([^,\s]+)(.*)$/) {
					push(@values, $1.$2); $v = $3;
					}
				$alias{'values'} = \@values;
				$alias{'num'} = scalar(@$c);
				if (&indexof($alias{'name'}, @skip) < 0) {
					push(@$c, \%alias);
					$lalias = \%alias;
					}
				$cmt = undef;
				}
			elsif (/^(#*)\s+(\S.*)$/ && $lalias &&
			       ($1 && !$lalias->{'enabled'} ||
				!$1 && $lalias->{'enabled'})) {
				# continuation of last alias
				$lalias->{'eline'} = $lnum;
				local $v = $2;
				$lalias->{'value'} .= $v;
				while($v =~ /^\s*,?\s*()"([^"]+)"(.*)$/ ||
				      $v =~ /^\s*,?\s*(\|)"([^"]+)"(.*)$/ ||
				      $v =~ /^\s*,?\s*()([^,\s]+)(.*)$/) {
					push(@{$lalias->{'values'}}, $1.$2); $v = $3;
					}
				$cmt = undef;
				}
			else {
				# Some other line
				$lalias = undef;
				$cmt = undef;
				}
			$lnum++;
			}
		close(AFILE);
		}
	}
return @$c;
}

# alias_form([alias], [no-comment])
# Display a form for editing or creating an alias. Each alias can map to
# 1 or more programs, files, lists or users
sub alias_form
{
local ($a, $nocmt, $afile) = @_;
local (@values, $v, $type, $val, @typenames);
if ($a) { @values = @{$a->{'values'}}; }
@typenames = map { $text{"aform_type$_"} } (0 .. 6);
$typenames[0] = "&lt;$typenames[0]&gt;";

# Start of form and table
print &ui_form_start("save_alias.cgi", "post");
if ($a) {
	print &ui_hidden("num", $a->{'num'}),"\n";
	}
else {
	print &ui_hidden("new", 1),"\n";
	}
print &ui_table_start($a ? $text{'aform_edit'}
			 : $text{'aform_create'}, undef, 2);

# Description
if (!$nocmt) {
	print &ui_table_row(&hlink($text{'aform_cmt'},"alias_cmt"),
		&ui_textbox("cmt", $a ? $a->{'cmt'} : undef, 50));
	}


# Alias name
print &ui_table_row(&hlink($text{'aform_name'},"alias_name"),
		    &ui_textbox("name", $a ? $a->{'name'} : "", 20));

# Enabled flag
print &ui_table_row(&hlink($text{'aform_enabled'}, "alias_enabled"),
		    &ui_yesno_radio("enabled", !$a || $a->{'enabled'} ? 1 : 0));

# Alias file, if more than one possible
if ($afile && @$afile > 1) {
	print &ui_table_row(&hlink($text{'aform_file'}, "alias_file"),
		&ui_select("afile", undef, $afile));
	}

# Destinations
local @typeopts;
for($j=0; $j<@typenames; $j++) {
	if (!$j || $access{"aedit_$j"}) {
		push(@typeopts, [ $j, $typenames[$j] ]);
		}
	}
for($i=0; $i<=@values; $i++) {
	($type, $val) = $values[$i] ? &alias_type($values[$i]) : (0, "");

	local $typesel = &ui_select("type_$i", $type, \@typeopts);
	local $valtxt = &ui_textbox("val_$i", $val, 30);
	local $edlnk;
	if ($type == 2 && $a) {
		$edlnk = &ui_link("edit_afile.cgi?file=$val&num=$a->{'num'}",$text{'aform_afile'});
		}
	elsif ($type == 5 && $a) {
		$edlnk = &ui_link("edit_rfile.cgi?file=$val&num=$a->{'num'}",$text{'aform_afile'});
		}
	elsif ($type == 6 && $a) {
		$edlnk = &ui_link("edit_ffile.cgi?file=$val&num=$a->{'num'}",$text{'aform_afile'});
		}
	print &ui_table_row(&hlink($text{'aform_val'},"alias_to"),
			      $typesel."\n".$valtxt."\n".$edlnk);
	}

# Table and form end
print &ui_table_end();
if ($a) {
	print &ui_form_end([ [ "save", $text{'save'} ],
			     [ "delete", $text{'delete'} ] ]);
	}
else {
	print &ui_form_end([ [ "create", $text{'create'} ] ]);
	}
}

# create_alias(&details, &files, [norebuild])
# Create a new alias
sub create_alias
{
&list_aliases($_[1]);	# force cache init

# Update the config file
local(%aliases);
$_[0]->{'file'} ||= $_[1]->[0];
local $lref = &read_file_lines($_[0]->{'file'});
$_[0]->{'line'} = scalar(@$lref);
push(@$lref, &make_table_comment($_[0]->{'cmt'}, 1));
local $str = ($_[0]->{'enabled'} ? "" : "# ") . $_[0]->{'name'} . ": " .
	     join(',', map { /\s/ ? "\"$_\"" : $_ } @{$_[0]->{'values'}});
push(@$lref, $str);
$_[0]->{'eline'} = scalar(@$lref)-1;
&flush_file_lines($_[0]->{'file'});
if (!$_[2]) {
	if (!&rebuild_map_cmd($_[0]->{'file'})) {
		&system_logged("newaliases >/dev/null 2>&1");
		}
	}

# Add to the cache
local $jfiles = join(",", @{$_[1]});
local $c = $list_aliases_cache{$jfiles};
$_[0]->{'num'} = scalar(@$c);
push(@$c, $_[0]);
}

# delete_alias(&details, [norebuild])
# Deletes one mail alias
sub delete_alias
{
# Remove from the file
local $lref = &read_file_lines($_[0]->{'file'});
local $len = $_[0]->{'eline'} - $_[0]->{'line'} + 1;
splice(@$lref, $_[0]->{'line'}, $len);
&flush_file_lines($_[0]->{'file'});
if (!$_[1]) {
	if (!&rebuild_map_cmd($_[0]->{'file'})) {
		&system_logged("newaliases >/dev/null 2>&1");
		}
	}

# Remove from the cache
local $jfiles = join(",", @{$_[0]->{'files'}});
local $c = $list_aliases_cache{$jfiles};
local $idx = &indexof($_[0], @$c);
splice(@$c, $idx, 1) if ($idx != -1);
&renumber_list($c, $_[0], -$len);
}

# modify_alias(&old, &details, [norebuild])
# Update some existing alias
sub modify_alias
{
# Add to the file
local @newlines;
push(@newlines, &make_table_comment($_[1]->{'cmt'}, 1));
local $str = ($_[1]->{'enabled'} ? "" : "# ") . $_[1]->{'name'} . ": " .
	     join(',', map { /\s/ ? "\"$_\"" : $_ } @{$_[1]->{'values'}});
push(@newlines, $str);
local $lref = &read_file_lines($_[0]->{'file'});
local $len = $_[0]->{'eline'} - $_[0]->{'line'} + 1;
splice(@$lref, $_[0]->{'line'}, $len, @newlines);
&flush_file_lines($_[0]->{'file'});
if (!$_[2]) {
	if (!&rebuild_map_cmd($_[0]->{'file'})) {
		&system_logged("newaliases >/dev/null 2>&1");
		}
	}

local $jfiles = join(",", @{$_[0]->{'files'}});
local $c = $list_aliases_cache{$jfiles};
local $idx = &indexof($_[0], @$c);
$_[1]->{'file'} = $_[0]->{'file'};
$_[1]->{'line'} = $_[0]->{'line'};
$_[1]->{'eline'} = $_[1]->{'line'}+scalar(@newlines)-1;
$c->[$idx] = $_[1] if ($idx != -1);
&renumber_list($c, $_[0], scalar(@newlines) - $len);
}

# alias_type(string)
# Return the type and destination of some alias string
sub alias_type
{
local @rv;
if ($_[0] =~ /^\|$module_config_directory\/autoreply.pl\s+(\S+)/) {
	@rv = (5, $1);
	}
elsif ($_[0] =~ /^\|$module_config_directory\/filter.pl\s+(\S+)/) {
	@rv = (6, $1);
	}
elsif ($_[0] =~ /^\|(.*)$/) {
	@rv = (4, $1);
	}
elsif ($_[0] =~ /^(\/.*)$/) {
	@rv = (3, $1);
	}
elsif ($_[0] =~ /^:include:"(.*)"$/ || $_[0] =~ /^:include:(.*)$/) {
	@rv = (2, $1);
	}
else {
	@rv = (1, $_[0]);
	}
return wantarray ? @rv : $rv[0];
}

# lock_alias_files(&files)
sub lock_alias_files
{
foreach $f (@{$_[0]}) {
	&lock_file($f);
	}
}

# unlock_alias_files(&files)
sub unlock_alias_files
{
foreach $f (@{$_[0]}) {
	&unlock_file($f);
	}
}

# can_edit_alias(&alias)
sub can_edit_alias
{
local ($a) = @_;
foreach my $v (@{$a->{'values'}}) {
	$access{"aedit_".&alias_type($v)} || return 0;
	}
if ($access{'amode'} == 2) {
	$a->{'name'} =~ /$access{'aliases'}/ || return 0;
	}
elsif ($access{'amode'} == 3) {
	$a->{'name'} eq $remote_user || return 0;
	}
return 1;
}

1;


Filemanager

Name Type Size Permission Actions
help Folder 0755
images Folder 0755
lang Folder 0755
CHANGELOG File 6.56 KB 0644
acl_security.pl File 863 B 0755
address_rewriting.cgi File 1.15 KB 0755
aliases-lib.pl File 7.93 KB 0755
aliases.cgi File 2.97 KB 0755
autoreply.pl File 12.19 KB 0755
backup_config.pl File 730 B 0755
bcc.cgi File 1.41 KB 0755
body.cgi File 951 B 0755
boxes-lib.pl File 80.37 KB 0755
canonical.cgi File 1.12 KB 0755
canonical_edit.cgi File 734 B 0755
client.cgi File 2.22 KB 0755
config File 702 B 0644
config-AlmaLinux-8.0-ALL File 804 B 0644
config-CentOS-Linux-7.0-ALL File 804 B 0644
config-CentOS-Stream-Linux-8.0-ALL File 804 B 0644
config-CloudLinux-8.0-ALL File 804 B 0644
config-Oracle-Linux-8.0-ALL File 804 B 0644
config-Rocky-Linux-8.0-ALL File 804 B 0644
config-debian-linux-10.0-ALL File 804 B 0644
config-freebsd File 783 B 0644
config-freebsd-8-ALL File 886 B 0644
config-mandrake-linux File 721 B 0644
config-msc-linux File 721 B 0644
config-netbsd File 721 B 0644
config-openSUSE-Linux-15.0-ALL File 804 B 0644
config-pardus-linux File 783 B 0644
config-redhat-linux-24.0-ALL File 804 B 0644
config-syno-linux File 998 B 0644
config.info File 2.54 KB 0644
config.info.bg File 4.54 KB 0644
config.info.ca File 2.95 KB 0644
config.info.cs File 664 B 0644
config.info.de File 2.77 KB 0644
config.info.es File 444 B 0644
config.info.fr File 597 B 0644
config.info.hu File 0 B 0644
config.info.ja File 2.92 KB 0644
config.info.nl File 2.71 KB 0644
config.info.no File 2.67 KB 0644
config.info.pl File 554 B 0644
config.info.ru File 880 B 0644
config.info.sv File 547 B 0644
config.info.tr File 437 B 0644
config.info.uk File 909 B 0644
config.info.zh File 405 B 0644
config.info.zh_TW File 453 B 0644
debug.cgi File 815 B 0755
defaultacl File 332 B 0644
delete_aliases.cgi File 820 B 0755
delete_mappings.cgi File 596 B 0755
delete_queues.cgi File 1.95 KB 0755
dependent.cgi File 988 B 0755
detach_queue.cgi File 651 B 0755
edit_access.cgi File 676 B 0755
edit_afile.cgi File 1.08 KB 0755
edit_alias.cgi File 438 B 0755
edit_canonical_mappings.cgi File 1.29 KB 0755
edit_ffile.cgi File 2.05 KB 0755
edit_manual.cgi File 1.08 KB 0755
edit_mapping.cgi File 2.75 KB 0755
edit_master.cgi File 3.15 KB 0755
edit_rfile.cgi File 3.05 KB 0755
filter.pl File 1.99 KB 0755
flushq.cgi File 513 B 0755
general.cgi File 4.08 KB 0755
header.cgi File 986 B 0755
index.cgi File 4.21 KB 0755
install_check.pl File 384 B 0755
ldap.cgi File 1.19 KB 0755
local_delivery.cgi File 1.84 KB 0755
log_parser.pl File 795 B 0755
mailq.cgi File 2.44 KB 0755
mailq_search.cgi File 979 B 0755
manual.cgi File 996 B 0755
manual_update.cgi File 610 B 0755
map_chooser.cgi File 5.58 KB 0755
map_chooser_save.cgi File 6.54 KB 0755
master.cgi File 1.26 KB 0755
module.info File 158 B 0644
module.info.af File 0 B 0644
module.info.af.auto File 89 B 0644
module.info.ar File 0 B 0644
module.info.ar.auto File 116 B 0644
module.info.be File 0 B 0644
module.info.be.auto File 137 B 0644
module.info.bg File 0 B 0644
module.info.bg.auto File 126 B 0644
module.info.ca File 88 B 0644
module.info.ca.auto File 16 B 0644
module.info.cs File 29 B 0644
module.info.cs.auto File 70 B 0644
module.info.da File 0 B 0644
module.info.da.auto File 88 B 0644
module.info.de File 78 B 0644
module.info.de.auto File 16 B 0644
module.info.el File 0 B 0644
module.info.el.auto File 141 B 0644
module.info.es File 34 B 0644
module.info.es.auto File 68 B 0644
module.info.eu File 0 B 0644
module.info.eu.auto File 95 B 0644
module.info.fa File 0 B 0644
module.info.fa.auto File 117 B 0644
module.info.fi File 0 B 0644
module.info.fi.auto File 92 B 0644
module.info.fr File 33 B 0644
module.info.fr.auto File 73 B 0644
module.info.he File 0 B 0644
module.info.he.auto File 117 B 0644
module.info.hr File 0 B 0644
module.info.hr.auto File 114 B 0644
module.info.hu File 30 B 0644
module.info.hu.auto File 69 B 0644
module.info.it File 0 B 0644
module.info.it.auto File 96 B 0644
module.info.ja File 26 B 0644
module.info.ja.auto File 77 B 0644
module.info.ko File 23 B 0644
module.info.ko.auto File 75 B 0644
module.info.lt File 0 B 0644
module.info.lt.auto File 121 B 0644
module.info.lv File 0 B 0644
module.info.lv.auto File 103 B 0644
module.info.ms File 78 B 0644
module.info.ms.auto File 16 B 0644
module.info.mt File 0 B 0644
module.info.mt.auto File 97 B 0644
module.info.nl File 28 B 0644
module.info.nl.auto File 63 B 0644
module.info.no File 30 B 0644
module.info.no.auto File 61 B 0644
module.info.pl File 35 B 0644
module.info.pl.auto File 68 B 0644
module.info.pt File 0 B 0644
module.info.pt.auto File 105 B 0644
module.info.pt_BR File 0 B 0644
module.info.pt_BR.auto File 114 B 0644
module.info.ro File 0 B 0644
module.info.ro.auto File 103 B 0644
module.info.ru File 35 B 0644
module.info.ru.auto File 95 B 0644
module.info.sk File 0 B 0644
module.info.sk.auto File 102 B 0644
module.info.sl File 0 B 0644
module.info.sl.auto File 104 B 0644
module.info.sv File 30 B 0644
module.info.sv.auto File 61 B 0644
module.info.th File 0 B 0644
module.info.th.auto File 174 B 0644
module.info.tr File 34 B 0644
module.info.tr.auto File 70 B 0644
module.info.uk File 0 B 0644
module.info.uk.auto File 143 B 0644
module.info.ur File 0 B 0644
module.info.ur.auto File 128 B 0644
module.info.vi File 0 B 0644
module.info.vi.auto File 100 B 0644
module.info.zh File 23 B 0644
module.info.zh.auto File 59 B 0644
module.info.zh_TW File 26 B 0644
module.info.zh_TW.auto File 65 B 0644
postfinger.cgi File 13.89 KB 0755
postfix-lib.pl File 63.46 KB 0755
prefs.info File 86 B 0644
rate.cgi File 1.1 KB 0755
reload.cgi File 265 B 0755
relocated.cgi File 954 B 0755
resource.cgi File 1.49 KB 0755
sasl.cgi File 3.08 KB 0755
save_afile.cgi File 580 B 0755
save_alias.cgi File 2.7 KB 0755
save_client.cgi File 1.67 KB 0755
save_ffile.cgi File 860 B 0755
save_manual.cgi File 665 B 0755
save_map.cgi File 2.59 KB 0755
save_master.cgi File 2.33 KB 0755
save_opts.cgi File 638 B 0755
save_opts_aliases.cgi File 582 B 0755
save_opts_bcc.cgi File 464 B 0755
save_opts_body.cgi File 636 B 0755
save_opts_canonical.cgi File 716 B 0755
save_opts_dependent.cgi File 609 B 0755
save_opts_header.cgi File 650 B 0755
save_opts_misc.cgi File 629 B 0755
save_opts_relocated.cgi File 637 B 0755
save_opts_sni.cgi File 553 B 0755
save_opts_transport.cgi File 636 B 0755
save_opts_virtual.cgi File 624 B 0755
save_rfile.cgi File 1.25 KB 0755
save_sasl.cgi File 2.95 KB 0755
smtp.cgi File 2.39 KB 0755
smtpd.cgi File 2.7 KB 0755
sni.cgi File 960 B 0755
start.cgi File 341 B 0755
stop.cgi File 337 B 0755
transport.cgi File 955 B 0755
view_mailq.cgi File 3.49 KB 0755
virtual.cgi File 1.05 KB 0755