[ Avaa Bypassed ]




Upload:

Command:

www-data@3.148.247.50: ~ $
#!/usr/bin/perl
# save_log.cgi
# Update, create or delete a log, or global settings

require './logrotate-lib.pl';
&ReadParse();
$parent = &get_config_parent();
$conf = $parent->{'members'};
@files = split(/\s+/, $in{'file'});
if ($in{'global'}) {
	# Editing the global options
	$log = $parent;
	}
elsif ($in{'new'}) {
	# Adding a new section
	$cfilename = $files[0] =~ /\/([^\/]+)$/ ? $1 : undef;
	$log = { 'members' => [ ],
		 'file' => &get_add_file($cfilename) };
	$logfile = $in{'file'};
	}
else {
	# Editing a section
	$oldlog = $log = $conf->[$in{'idx'}];
	$logfile = join(" ", @{$oldlog->{'name'}});
	}

if ($in{'delete'}) {
	# Just delete this log entry
	&lock_file($log->{'file'});
	&save_directive($parent, $log, undef);
	}
elsif ($in{'now'}) {
	# Rotate log immediately
	&ui_print_header(undef, $text{'force_title'}, "");

	print $text{'force_doingone'},"\n";
	($ex, $out) = &rotate_log_now($log);
	print "<pre>$out</pre>";
	if ($?) {
		print $text{'force_failed'},"<br>\n";
		}
	else {
		print $text{'force_done'},"<br>\n";
		}

	&webmin_log("force", $logfile);
	&ui_print_footer("", $text{'index_return'});
	exit;
	}
else {
	# Validate and store inputs
	&lock_file($log->{'file'});
	&error_setup($text{'save_err'});
	if (!$in{'global'}) {
		foreach $f (@files) {
			$f =~ /^\/\S+$/ || &error($text{'save_efile'});
			}
		@files || &error($text{'save_enofiles'});
		$in{'file'} =~ s/\r//g;
		$log->{'name'} = [ split(/\n/, $in{'file'}) ];
		}

	foreach $period ("daily", "weekly", "monthly") {
		&save_directive($log, $period,
				$in{'sched'} eq $period ? "" : undef);
		}

	$in{'size_def'} || $in{'size'} =~ /^\d+[kM]?$/ ||
		&error($text{'save_esize'});
	&save_directive($log, "size", $in{'size_def'} ? undef : $in{'size'});

	$in{'minsize_def'} || $in{'minsize'} =~ /^\d+[kM]?$/ ||
		&error($text{'save_eminsize'});
	&save_directive($log, "minsize",
			$in{'minsize_def'} ? undef : $in{'minsize'});

	$in{'rotate_def'} || $in{'rotate'} =~ /^\d+$/ ||
		&error($text{'save_erotate'});
	&save_directive($log, "rotate", $in{'rotate_def'} ? undef
							    : $in{'rotate'});

	&parse_yesno("compress", "nocompress", $log);
	&parse_yesno("delaycompress", "nodelaycompress", $log);
	&parse_yesno("copytruncate", "nocopytruncate", $log);
	&parse_yesno("ifempty", "notifempty", $log);
	&parse_yesno("missingok", "nomissingok", $log);

	if ($in{'create'} == 2) {
		&error($text{'save_emust1'}) if ($in{'createuser'} ne '' &&
						   $in{'createmode'} eq '');
		&error($text{'save_emust2'}) if ($in{'creategroup'} ne '' &&
						   $in{'createuser'} eq '');
		$in{'createmode'} eq '' ||
		    $in{'createmode'} =~ /^[0-7]{3,4}$/ ||
			&error($text{'save_ecreatemode'});
		$in{'createuser'} eq '' ||
		    defined(getpwnam($in{'createuser'})) ||
			&error($text{'save_ecreateuser'});
		$in{'creategroup'} eq '' ||
		    defined(getgrnam($in{'creategroup'})) ||
			&error($text{'save_ecreategroup'});
		&save_directive($log, "create",
				$in{'createmode'}." ".
				$in{'createuser'}." ".$in{'creategroup'});
		&save_directive($log, "nocreate");
		}
	elsif ($in{'create'} == 1) {
		&save_directive($log, "create");
		&save_directive($log, "nocreate", "");
		}
	elsif ($in{'create'} == 0) {
		&save_directive($log, "create");
		&save_directive($log, "nocreate");
		}

	if ($in{'olddir'} == 2) {
		-d $in{'olddirto'} || &error($text{'save_eolddirto'});
		&save_directive($log, "olddir", $in{'olddirto'});
		&save_directive($log, "noolddir");
		}
	elsif ($in{'olddir'} == 1) {
		&save_directive($log, "olddir");
		&save_directive($log, "noolddir", "");
		}
	elsif ($in{'olddir'} == 0) {
		&save_directive($log, "olddir");
		&save_directive($log, "noolddir");
		}

	$in{'ext_def'} || $in{'ext'} =~ /^\S+$/ ||
		&error($text{'save_eext'});
	&save_directive($log, "extension", $in{'ext_def'} ? undef : $in{'ext'});

	&parse_yesno("dateext", "nodateext", $log);

	if ($in{'mail'} == 2) {
		$in{'mailto'} =~ /^\S+$/ || &error($text{'save_emailto'});
		&save_directive($log, "mail", $in{'mailto'});
		&save_directive($log, "nomail");
		}
	elsif ($in{'mail'} == 1) {
		&save_directive($log, "mail");
		&save_directive($log, "nomail", "");
		}
	elsif ($in{'mail'} == 0) {
		&save_directive($log, "mail");
		&save_directive($log, "nomail");
		}

	&parse_yesno("mailfirst", "maillast", $log);

	if (defined($in{'errors'})) {
		$in{'errors_def'} || $in{'errors'} =~ /^\S+$/ ||
			&error($text{'save_eerrors'});
		&save_directive($log, "errors", $in{'errors_def'} ? undef
							  : $in{'errors'});
		}

	if ($in{'pre'} =~ /\S/) {
		$in{'pre'} =~ s/\r//g;
		&has_endscript($in{'pre'}) && &error($text{'save_epre'});
		&save_directive($log, "prerotate",
				{ "name" => "prerotate",
				  "script" => $in{'pre'} });
		}
	else {
		&save_directive($log, "prerotate");
		}

	if ($in{'post'} =~ /\S/) {
		$in{'post'} =~ s/\r//g;
		&has_endscript($in{'post'}) && &error($text{'save_epost'});
		&save_directive($log, "postrotate",
				{ "name" => "postrotate",
				  "script" => $in{'post'} });
		}
	else {
		&save_directive($log, "postrotate");
		}

	if (defined($in{'sharedscripts'})) {
		&parse_yesno("sharedscripts", "nosharedscripts", $log);
		}

	if (!$in{'global'}) {
		# Save or create the actual log entry
		&save_directive($parent, $oldlog, $log);
		}
	}

&flush_file_lines();
&delete_if_empty($log->{'file'}) if ($in{'delete'});
&unlock_file($log->{'file'});
&webmin_log($in{'delete'} ? "delete" : $in{'new'} ? "create" : "modify",
	    $in{'global'} ? "global" : "log", $logfile);

&redirect("");

# parse_yesno(yesvalue, novalue, &conf)
sub parse_yesno
{
local $d0 = &find($_[0], $_[2]->{'members'});
local $d1 = &find($_[1], $_[2]->{'members'});
if ($in{$_[0]} == 2 && !$d0) {
	# Adding or replacing 'yes' value
	&save_directive($_[2], $d1 || $_[0],
			{ 'name' => $_[0], 'value' => '' });
	}
elsif ($in{$_[0]} == 1 && !$d1) {
	# Adding or replacing 'no' value
	&save_directive($_[2], $d0 || $_[1],
			{ 'name' => $_[1], 'value' => '' });
	}
elsif ($in{$_[0]} == 0) {
	&save_directive($_[2], $_[0]);
	&save_directive($_[2], $_[1]);
	}
}

sub has_endscript
{
local $l;
foreach $l (split(/\n/, $_[0])) {
	return 1 if ($l =~ /^\s*(endscript|endrotate)\s*$/);
	}
return 0;
}


Filemanager

Name Type Size Permission Actions
help Folder 0755
images Folder 0755
lang Folder 0755
CHANGELOG File 528 B 0644
backup_config.pl File 630 B 0755
cgi_args.pl File 221 B 0755
config File 67 B 0644
config-ALL-linux File 67 B 0644
config-debian-linux File 93 B 0644
config-freebsd File 142 B 0644
config-open-linux File 71 B 0644
config-redhat-linux File 93 B 0644
config-solaris-10-ALL File 132 B 0644
config-syno-linux File 67 B 0644
config.info File 288 B 0644
config.info.ca File 358 B 0644
config.info.cs File 342 B 0644
config.info.de File 345 B 0644
config.info.es File 272 B 0644
config.info.fr File 390 B 0644
config.info.hu File 0 B 0644
config.info.ja File 398 B 0644
config.info.ko File 276 B 0644
config.info.nl File 321 B 0644
config.info.no File 325 B 0644
config.info.pl File 334 B 0644
config.info.sk File 356 B 0644
config.info.tr File 288 B 0644
delete_logs.cgi File 642 B 0755
edit_log.cgi File 7.12 KB 0755
edit_sched.cgi File 1.4 KB 0755
force.cgi File 619 B 0755
index.cgi File 3.34 KB 0755
install_check.pl File 331 B 0755
log_parser.pl File 605 B 0755
logrotate-lib.pl File 9.36 KB 0755
module.info File 203 B 0644
module.info.af File 0 B 0644
module.info.af.auto File 132 B 0644
module.info.ar File 0 B 0644
module.info.ar.auto File 186 B 0644
module.info.be File 0 B 0644
module.info.be.auto File 226 B 0644
module.info.bg File 0 B 0644
module.info.bg.auto File 223 B 0644
module.info.ca File 145 B 0644
module.info.ca.auto File 17 B 0644
module.info.cs File 32 B 0644
module.info.cs.auto File 114 B 0644
module.info.da File 0 B 0644
module.info.da.auto File 133 B 0644
module.info.de File 126 B 0644
module.info.de.auto File 18 B 0644
module.info.el File 0 B 0644
module.info.el.auto File 256 B 0644
module.info.es File 40 B 0644
module.info.es.auto File 120 B 0644
module.info.eu File 0 B 0644
module.info.eu.auto File 163 B 0644
module.info.fa File 0 B 0644
module.info.fa.auto File 179 B 0644
module.info.fi File 0 B 0644
module.info.fi.auto File 139 B 0644
module.info.fr File 36 B 0644
module.info.fr.auto File 120 B 0644
module.info.he File 0 B 0644
module.info.he.auto File 195 B 0644
module.info.hr File 0 B 0644
module.info.hr.auto File 141 B 0644
module.info.hu File 45 B 0644
module.info.hu.auto File 125 B 0644
module.info.it File 0 B 0644
module.info.it.auto File 152 B 0644
module.info.ja File 0 B 0644
module.info.ja.auto File 210 B 0644
module.info.ko File 29 B 0644
module.info.ko.auto File 127 B 0644
module.info.lt File 0 B 0644
module.info.lt.auto File 164 B 0644
module.info.lv File 0 B 0644
module.info.lv.auto File 147 B 0644
module.info.ms File 119 B 0644
module.info.ms.auto File 18 B 0644
module.info.mt File 0 B 0644
module.info.mt.auto File 142 B 0644
module.info.nl File 25 B 0644
module.info.nl.auto File 112 B 0644
module.info.no File 25 B 0644
module.info.no.auto File 109 B 0644
module.info.pl File 115 B 0644
module.info.pl.auto File 18 B 0644
module.info.pt File 0 B 0644
module.info.pt.auto File 151 B 0644
module.info.pt_BR File 0 B 0644
module.info.pt_BR.auto File 160 B 0644
module.info.ro File 0 B 0644
module.info.ro.auto File 163 B 0644
module.info.ru File 0 B 0644
module.info.ru.auto File 213 B 0644
module.info.sk File 44 B 0644
module.info.sk.auto File 130 B 0644
module.info.sl File 0 B 0644
module.info.sl.auto File 143 B 0644
module.info.sv File 0 B 0644
module.info.sv.auto File 137 B 0644
module.info.th File 0 B 0644
module.info.th.auto File 241 B 0644
module.info.tr File 0 B 0644
module.info.tr.auto File 162 B 0644
module.info.uk File 0 B 0644
module.info.uk.auto File 226 B 0644
module.info.ur File 0 B 0644
module.info.ur.auto File 218 B 0644
module.info.vi File 0 B 0644
module.info.vi.auto File 169 B 0644
module.info.zh File 0 B 0644
module.info.zh.auto File 129 B 0644
module.info.zh_TW File 0 B 0644
module.info.zh_TW.auto File 138 B 0644
prefs.info File 18 B 0644
save_log.cgi File 6.03 KB 0755
save_sched.cgi File 936 B 0755