#!/usr/bin/perl ## ## mex2t -cgi -db file ## junta pergunta (file) à db use strict; use utf8::all; use CGI q(:all); use IO::CaptureOutput qw/capture/; use File::Path qw(make_path); print header(-charset=>'utf-8'); print start_html(-title => 'MEX', -style => { -src => '/styles2.css', -type => 'text/css' } ); if(param()){ $CGI::POST_MAX = 1024 * 5000; my $filename = param("mex"); #my $passarola_dir = "/home/passarola/.passarola/upload"; my $passarola_path = "#PASS_PATH"; my $passarola_dir = "$passarola_path/.passarola"; my $upload_dir = "$passarola_dir/upload"; if (not -d $upload_dir) { make_path $upload_dir; } my $upload_filehandle = upload("mex"); open ( UPLOADFILE, ">$upload_dir/$filename" ) or die "$!"; while ( <$upload_filehandle> ) { print UPLOADFILE; } close UPLOADFILE; # protect system by only allowing select bins to be executed #$ENV{PATH} = "$passarola_path/bin"; $ENV{HOME} = "$passarola_path"; $ENV{PATH} = "/usr/local/bin:/usr/bin:/bin"; chdir $passarola_dir; #print "Something is wrong with pass2tex!
\n", unless -x pass2tex; print "Something is wrong with pass2tex!
\n", unless `which pass-exer`; my($out, $err, $ret); capture sub{ $ret = system("pass-exer -d -store $upload_dir/$filename"); } => \$out, \$err; print "$ret\n"; print "Errors:
$err

"; print "Output:
$out
"; #print "Ficheiro enviado com sucesso
"; #print $x."
"; } else{ print start_form; print filefield(-name=>'mex'); print submit, end_form; } print end_html;