#!/usr/bin/perl # run.cgi # Run some command with the given parameters require './custom-lib.pl'; $theme_no_table = 1; if ($ENV{'CONTENT_TYPE'} =~ /multipart\/form-data/i) { &ReadParse(\%getin, "GET"); &ReadParseMime(undef, \&read_parse_mime_callback, [ $getin{'id'} ]); } else { &ReadParse(); } $| = 1; &error_setup($text{'run_err'}); $cmd = &get_command($in{'id'}, $in{'idx'}); &can_run_command($cmd) || &error($text{'run_ecannot'}); if (&supports_users()) { $user = $cmd->{'user'} eq '*' ? $remote_user : $cmd->{'user'}; @user_info = getpwnam($user); @user_info || &error(&text('run_ecmduser', $user)); } else { @user_info = ( "root", undef, 0, 0 ); } # substitute parameters into command ($env, $export, $str, $displaystr) = &set_parameter_envs( $cmd, $cmd->{'cmd'}, \@user_info); # work out hosts @hosts = @{$cmd->{'hosts'}}; @hosts = ( 0 ) if (!@hosts); @servers = &list_servers(); # Run and display output if ($cmd->{'format'} ne 'redirect' && $cmd->{'format'} ne 'form') { if ($cmd->{'format'}) { my ($f, $e) = $cmd->{'cmd'} =~ /([\p{L}\_\-\.0-9]+)\.(tar\..*?|[^.]*)$/; my $filename = $f || 'download'; my $extension = $e || 'unknown'; my $ctype = 'inline'; if ($cmd->{'format'} =~ /^application/) { $ctype = 'attachment'; } print "Content-Disposition: $ctype; filename=\"$filename.$extension\"\n"; print "Content-type: ",$cmd->{'format'},"\n"; print "\n"; } else { &ui_print_unbuffered_header( &html_escape($cmd->{'desc'}), $text{'run_title'}, "", -d "help" ? "run" : undef); } } &remote_error_setup(\&remote_custom_handler); foreach $h (@hosts) { ($server) = grep { $_->{'id'} eq $h } @servers; next if (!$server); $txt = $cmd->{'noshow'} ? 'run_out2' : 'run_out'; if (@{$cmd->{'hosts'}}) { $txt .= 'on'; } if (!$cmd->{'format'}) { print &text($txt, "<tt>".&html_escape($displaystr)."</tt>", $server->{'desc'} || "<tt>$server->{'host'}</tt>"),"\n"; print "<pre>" if (!$cmd->{'raw'}); } $remote_custom_error = undef; if ($h == 0) { # Run locally ($got, $out, $timeout, $ex) = &execute_custom_command( $cmd, $env, $export, $str, $cmd->{'format'} ne 'redirect' && $cmd->{'format'} ne 'form'); } else { # Remote foreign call eval { $SIG{'ALRM'} = sub { die "timeout" }; alarm($cmd->{'timeout'} ? $cmd->{'timeout'} + 5 : 60); &remote_foreign_require($server->{'host'}, "custom", "custom-lib.pl"); &remote_foreign_call($server->{'host'}, "custom", "set_parameter_envs", $cmd, $cmd->{'cmd'}, \@user_info, \%in, 1); ($got, $out, $timeout, $ex) = &remote_foreign_call( $server->{'host'}, "custom", "execute_custom_command", $cmd, $env, $export, $str); }; if ($@ =~ /timeout/) { $timeout = 1; } alarm(0); } if ($h == 0) { &additional_log('exec', undef, $displaystr); } if (!$remote_custom_error) { print $out if ($h != 0 && $cmd->{'format'} ne 'redirect' && $cmd->{'format'} ne 'form'); if (!$got && !$cmd->{'format'}) { print "<i>$text{'run_noout'}</i>\n"; } } if (!$cmd->{'format'}) { print "</pre>\n" if (!$cmd->{'raw'}); if ($remote_custom_error) { print "<b>$remote_custom_error</b><p>\n"; } elsif ($timeout) { print "<b>",&text('run_timeout', $cmd->{'timeout'} || 60),"</b><p>\n"; } elsif ($ex) { print "<b>",&text('run_failed', $ex),"</b><p>\n"; } } # Only log non-upload inputs %cmdin = ( %$cmd ); foreach $i (keys %in) { ($arg) = grep { $_->{'name'} eq $i } @{$cmd->{'args'}}; if ($arg->{'type'} != 10) { $cmdin{$i} = $in{$i}; } } } &webmin_log("exec", "command", $cmd->{'id'}, \%cmdin); unlink(@unlink) if (@unlink); if (!$cmd->{'format'}) { &ui_print_footer("", $text{'index_return'}); } elsif ($cmd->{'format'} eq 'redirect') { &redirect(""); } elsif ($cmd->{'format'} eq 'form') { &redirect("form.cgi?id=".$in{'id'}."&idx=".$in{'idx'}); } sub remote_custom_handler { $remote_custom_error = join("", @_); }
Name | Type | Size | Permission | Actions |
---|---|---|---|---|
help | Folder | 0755 |
|
|
images | Folder | 0755 |
|
|
lang | Folder | 0755 |
|
|
CHANGELOG | File | 2.9 KB | 0644 |
|
acl_security.pl | File | 1.03 KB | 0755 |
|
backup_config.pl | File | 683 B | 0755 |
|
cgi_args.pl | File | 1.14 KB | 0755 |
|
config | File | 42 B | 0644 |
|
config-ALL-linux | File | 42 B | 0644 |
|
config.info | File | 490 B | 0644 |
|
config.info.ca | File | 500 B | 0644 |
|
config.info.cs | File | 326 B | 0644 |
|
config.info.de | File | 575 B | 0644 |
|
config.info.es | File | 338 B | 0644 |
|
config.info.fr | File | 669 B | 0644 |
|
config.info.hr | File | 0 B | 0644 |
|
config.info.it | File | 448 B | 0644 |
|
config.info.ko | File | 266 B | 0644 |
|
config.info.ms | File | 534 B | 0644 |
|
config.info.nl | File | 580 B | 0644 |
|
config.info.no | File | 548 B | 0644 |
|
config.info.pl | File | 612 B | 0644 |
|
config.info.ru | File | 158 B | 0644 |
|
config.info.sk | File | 0 B | 0644 |
|
config.info.tr | File | 269 B | 0644 |
|
config.info.uk | File | 165 B | 0644 |
|
custom-lib.pl | File | 16.71 KB | 0755 |
|
defaultacl | File | 25 B | 0644 |
|
edit_cmd.cgi | File | 3.69 KB | 0755 |
|
edit_file.cgi | File | 2.67 KB | 0755 |
|
edit_sql.cgi | File | 2.64 KB | 0755 |
|
feedback_files.pl | File | 208 B | 0755 |
|
form.cgi | File | 1.29 KB | 0755 |
|
index.cgi | File | 4.14 KB | 0755 |
|
log_parser.pl | File | 553 B | 0755 |
|
module.info | File | 165 B | 0644 |
|
module.info.af | File | 0 B | 0644 |
|
module.info.af.auto | File | 145 B | 0644 |
|
module.info.ar | File | 0 B | 0644 |
|
module.info.ar.auto | File | 200 B | 0644 |
|
module.info.be | File | 0 B | 0644 |
|
module.info.be.auto | File | 277 B | 0644 |
|
module.info.bg | File | 0 B | 0644 |
|
module.info.bg.auto | File | 297 B | 0644 |
|
module.info.ca | File | 130 B | 0644 |
|
module.info.ca.auto | File | 22 B | 0644 |
|
module.info.cs | File | 33 B | 0644 |
|
module.info.cs.auto | File | 145 B | 0644 |
|
module.info.da | File | 0 B | 0644 |
|
module.info.da.auto | File | 158 B | 0644 |
|
module.info.de | File | 149 B | 0644 |
|
module.info.de.auto | File | 26 B | 0644 |
|
module.info.el | File | 0 B | 0644 |
|
module.info.el.auto | File | 299 B | 0644 |
|
module.info.es | File | 32 B | 0644 |
|
module.info.es.auto | File | 116 B | 0644 |
|
module.info.eu | File | 0 B | 0644 |
|
module.info.eu.auto | File | 147 B | 0644 |
|
module.info.fa | File | 0 B | 0644 |
|
module.info.fa.auto | File | 223 B | 0644 |
|
module.info.fi | File | 0 B | 0644 |
|
module.info.fi.auto | File | 170 B | 0644 |
|
module.info.fr | File | 34 B | 0644 |
|
module.info.fr.auto | File | 142 B | 0644 |
|
module.info.he | File | 0 B | 0644 |
|
module.info.he.auto | File | 196 B | 0644 |
|
module.info.hr | File | 0 B | 0644 |
|
module.info.hr.auto | File | 169 B | 0644 |
|
module.info.hu | File | 26 B | 0644 |
|
module.info.hu.auto | File | 151 B | 0644 |
|
module.info.it | File | 31 B | 0644 |
|
module.info.it.auto | File | 112 B | 0644 |
|
module.info.ja | File | 34 B | 0644 |
|
module.info.ja.auto | File | 163 B | 0644 |
|
module.info.ko | File | 32 B | 0644 |
|
module.info.ko.auto | File | 154 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 | 153 B | 0644 |
|
module.info.ms | File | 136 B | 0644 |
|
module.info.ms.auto | File | 15 B | 0644 |
|
module.info.mt | File | 0 B | 0644 |
|
module.info.mt.auto | File | 148 B | 0644 |
|
module.info.nl | File | 25 B | 0644 |
|
module.info.nl.auto | File | 123 B | 0644 |
|
module.info.no | File | 33 B | 0644 |
|
module.info.no.auto | File | 120 B | 0644 |
|
module.info.pl | File | 139 B | 0644 |
|
module.info.pl.auto | File | 16 B | 0644 |
|
module.info.pt | File | 32 B | 0644 |
|
module.info.pt.auto | File | 129 B | 0644 |
|
module.info.pt_BR | File | 0 B | 0644 |
|
module.info.pt_BR.auto | File | 170 B | 0644 |
|
module.info.ro | File | 0 B | 0644 |
|
module.info.ro.auto | File | 168 B | 0644 |
|
module.info.ru | File | 48 B | 0644 |
|
module.info.ru.auto | File | 253 B | 0644 |
|
module.info.sk | File | 33 B | 0644 |
|
module.info.sk.auto | File | 136 B | 0644 |
|
module.info.sl | File | 0 B | 0644 |
|
module.info.sl.auto | File | 146 B | 0644 |
|
module.info.sv | File | 23 B | 0644 |
|
module.info.sv.auto | File | 119 B | 0644 |
|
module.info.th | File | 0 B | 0644 |
|
module.info.th.auto | File | 295 B | 0644 |
|
module.info.tr | File | 23 B | 0644 |
|
module.info.tr.auto | File | 140 B | 0644 |
|
module.info.uk | File | 0 B | 0644 |
|
module.info.uk.auto | File | 285 B | 0644 |
|
module.info.ur | File | 0 B | 0644 |
|
module.info.ur.auto | File | 271 B | 0644 |
|
module.info.vi | File | 0 B | 0644 |
|
module.info.vi.auto | File | 195 B | 0644 |
|
module.info.zh | File | 30 B | 0644 |
|
module.info.zh.auto | File | 91 B | 0644 |
|
module.info.zh_TW | File | 27 B | 0644 |
|
module.info.zh_TW.auto | File | 97 B | 0644 |
|
prefs.info | File | 26 B | 0644 |
|
run.cgi | File | 3.89 KB | 0755 |
|
save.cgi | File | 1.5 KB | 0755 |
|
save_cmd.cgi | File | 2.44 KB | 0755 |
|
save_file.cgi | File | 1.79 KB | 0755 |
|
save_sql.cgi | File | 1.53 KB | 0755 |
|
sql.cgi | File | 1.5 KB | 0755 |
|
sqlform.cgi | File | 962 B | 0755 |
|
view.cgi | File | 1.43 KB | 0755 |
|