#!/usr/bin/perl # # $Id: plot.gif,v 1.17 2020/02/19 18:53:17 raeburn Exp $ # # Copyright Michigan State University Board of Trustees # # This file is part of the LearningOnline Network with CAPA (LON-CAPA). # # LON-CAPA is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # LON-CAPA is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with LON-CAPA; if not, write to the Free Software # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA # # /home/httpd/cgi-bin/plot.gif # # http://www.lon-capa.org/ # use strict; $|=1; my $tmpdir = '/home/httpd/perl/tmp/'; my %data; foreach (split/&/,$ENV{'QUERY_STRING'}) { my ($name,$value)=split/=/; $data{$name}=$value; } my $filename = $data{'file'}; # unescape filename $filename =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C",hex($1))/eg; die if ($filename =~ /\// || $filename !~ /_plot.data$/); $filename = $tmpdir . $filename; die "$data{'file'} does not exist\n" if (! -e $filename); my $output = $data{'output'}; if ($output eq '') { $output = (split('\.',$0))[-1]; } if ($output eq 'gif' || $output eq 'png') { if (open(my $plot, "export LANG='en_US.UTF-8'; gnuplot $filename |")) { print <<"END"; Content-type: image/$output END while (my $line = <$plot>) { print($line); } close($plot); } else { die "failed to open pipe to run gnuplot\n"; } } elsif ($output eq 'eps') { print <<"END"; Content-type: text/html eps plot creation

Creating eps plot

END if (! system ("export LANG='en_US.UTF-8'; gnuplot $filename")) { print "

An error occurred.

\n". "I am not going to tell you about it as I have not bothered ". "to figure out how to get you the error text.\n"; } else { print "

EPS file generated successfully.

\n"; } print "\n"; } else { die "output $output is not a recognized value or has no value\n"; }