#! /usr/bin/perl # # cgi interface to view.sh # script to be run, in the chroot environment # $prog="/vecr/local-bin/view.sh"; # Make output unbuffered # $| = 1; # GET # if ($ENV{REQUEST_METHOD} eq "GET") { @a = ("GET", @ARGV); exec("$prog", @a); exit; } # else POST # $buffer = ""; read(STDIN, $buffer, $ENV{CONTENT_LENGTH}); # handle upload separately # if( $ENV{CONTENT_TYPE} =~ /^multipart\/form-data;/) { open( EDIT,"| $prog POST"); print EDIT "upload @ARGV\n"; $buffer =~ s/\r//g; print EDIT "$buffer\n"; close( EDIT); exit; # debug: # # print "Content-type: text/plain\n\n"; # print "argc = $#ARGV, argv = @ARGV\n\n"; # while (($key,$value) = each %ENV) { # print "$key = $value\n"; # } # print "\nstdin is:\n\n$buffer\n"; # exit; } # Split the name-value pairs # @pairs = split(/&/, $buffer); $data=""; $args=""; $mode="run"; foreach $pair (@pairs) { ($name, $value) = split(/=/, $pair); $value =~ tr/+/ /; $value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg; if( $name eq "data") { $data .= $value; } elsif( $name eq "args") { $args .= $value; } elsif( $name eq "update") { $mode = "update"; } elsif( $name eq "compile") { $mode = "compile"; } #UCR elsif( $name eq "update_compile") #UCR { #UCR $mode = "update_compile"; #UCR } #UCR elsif( $name eq "update_compile_run") #UCR { #UCR $mode = "update_compile_run"; #UCR } elsif( $name eq "copy") { $mode = "copy"; } elsif( $name eq "crun") { $mode = "crun"; } elsif( $name eq "plot.x") # image input link returns .x and .y values { $mode = "plot"; } elsif( $name eq "splot.x") # image input link returns .x and .y values { $mode = "splot"; } elsif( $name eq "debug") { $mode = "debug"; } elsif( $name eq "cmd") { $mode = "cmd"; } elsif( $name eq "setuser") { $mode = "setuser"; } elsif( $name eq "IO") { $mode = "IO"; } elsif( $name eq "IOD") { $mode = "IOD"; } elsif( $name eq "audio.x") # image input link returns .x and .y values { $mode = "audio"; } #SVS elsif( $name eq "submit") #SVS { #SVS $mode = "submit"; #SVS } #SVS elsif( $name eq "submit_view") #SVS { #SVS $mode = "submit_view"; #SVS } #SVS elsif( $name eq "submit_get") #SVS { #SVS $mode = "submit_get"; #SVS } elsif( $name eq "frameset") { $mode = "frameset"; } elsif( $name eq "empty") { $mode = "empty"; } elsif( $name eq "passwd") { $mode = "passwd"; } } open( EDIT,"| $prog POST"); print EDIT "$mode @ARGV $args\n"; print EDIT "$data\n"; close( EDIT); exit;