php IHDR w Q )Ba pHYs sRGB gAMA a IDATxMk\U s&uo,mD )Xw+e?tw.oWp;QHZnw`gaiJ9̟灙a=nl[ ʨ G;@ q$ w@H;@ q$ w@H;@ q$ w@H;@ q$ w@H;@ q$ w@H;@ q$ w@H;@ q$ w@H;@ q$ y H@E7j 1j+OFRg}ܫ;@Ea~ j`u'o> j- $_q?qS XzG'ay
files >> /usr/libexec/webmin/virtual-server/ |
files >> //usr/libexec/webmin/virtual-server/add_script.cgi |
#!/usr/bin/perl # Add some third-party scripts require './virtual-server-lib.pl'; &can_edit_templates() || &error($text{'newscripts_ecannot'}); &error_setup($text{'addscripts_err'}); &ReadParseMime(); # Get the file if ($in{'source'} == 0) { # Local file -r $in{'local'} || &error($text{'addscripts_elocal'}); $file = $in{'local'}; $name = $in{'local'}; } elsif ($in{'source'} == 1) { # Uploaded file $file = &transname(); $in{'upload'} || &error($text{'addscripts_eupload'}); $name = $in{'upload_filename'}; &open_tempfile(FILE, ">$file"); print FILE $in{'upload'}; &close_tempfile(FILE); } elsif ($in{'source'} == 2) { # From URL ($host, $port, $page, $ssl) = &parse_http_url($in{'url'}); $host || &error($text{'addscripts_eurl'}); $file = &transname(); $name = $page; &http_download($host, $port, $page, $file, undef, undef, $ssl); } # Check file type (tar.gz, tar.Z or just .pl script) open(PFILE, $file); read(PFILE, $two, 2); close(PFILE); if ($two eq "\037\235") { $cmd = "uncompress -C ".quotemeta($file)." | tar xf -"; } elsif ($two eq "\037\213") { $cmd = "gunzip -c ".quotemeta($file)." | tar xf -"; } if ($cmd) { # Extract to temp dir $tempdir = &transname(); &make_dir($tempdir, 0755); $out = &backquote_command("cd $tempdir && $cmd"); $? && &error(&text('addscripts_etar', $out)); opendir(DIR, $tempdir); foreach $f (readdir(DIR)) { next if ($f eq "." || $f eq ".."); push(@files, [ "$tempdir/$f", $f ]); } closedir(DIR); } else { # Just using a single file $name =~ s/^(.*)[\\\/]//; @files = ( [ $file, $name ] ); } @files || &error($text{'addscripts_enone'}); # Validate filenames foreach $f (@files) { $f->[1] =~ /^(\S+)\.pl$/ || &error(&text('addscripts_efile', $f->[1])); } # Copy into place &make_dir($scripts_directories[0], 0755); foreach $f (@files) { &lock_file("$scripts_directories[0]/$f->[1]"); &execute_command("cp ".quotemeta($f->[0]). " $scripts_directories[0]/$f->[1]"); &unlock_file("$scripts_directories[0]/$f->[1]"); } # Tell the user &ui_print_header(undef, $text{'addscripts_title'}, ""); if (@files == 1) { ($one = $files[0]->[1]) =~ s/\.pl$//; $script = &get_script($one); print &text('addscripts_done1', $script->{'desc'}),"<p>\n"; } else { print &text('addscripts_done', scalar(@files)),"<p>\n"; } &run_post_actions(); &ui_print_footer("edit_newscripts.cgi", $text{'newscripts_return'}); &webmin_log("add", "scripts", scalar(@files), { 'scripts' => [ map { $_->[1] } @files ] });y~or5J={Eeu磝Qk ᯘG{?+]ן?wM3X^歌>{7پK>on\jy Rg/=fOroNVv~Y+ NGuÝHWyw[eQʨSb> >}Gmx[o[<{Ϯ_qFvM IENDB`