Annotation of loncom/cgi/plot.gif, revision 1.17
1.5 matthew 1: #!/usr/bin/perl
1.1 matthew 2: #
1.17 ! raeburn 3: # $Id: plot.gif,v 1.16 2016/10/12 18:50:02 musolffc Exp $
1.1 matthew 4: #
5: # Copyright Michigan State University Board of Trustees
6: #
7: # This file is part of the LearningOnline Network with CAPA (LON-CAPA).
8: #
9: # LON-CAPA is free software; you can redistribute it and/or modify
10: # it under the terms of the GNU General Public License as published by
11: # the Free Software Foundation; either version 2 of the License, or
12: # (at your option) any later version.
13: #
14: # LON-CAPA is distributed in the hope that it will be useful,
15: # but WITHOUT ANY WARRANTY; without even the implied warranty of
16: # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
17: # GNU General Public License for more details.
18: #
19: # You should have received a copy of the GNU General Public License
20: # along with LON-CAPA; if not, write to the Free Software
21: # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
22: #
23: # /home/httpd/cgi-bin/plot.gif
24: #
25: # http://www.lon-capa.org/
26: #
1.6 matthew 27: use strict;
28:
29: $|=1;
1.4 matthew 30:
1.5 matthew 31: my $tmpdir = '/home/httpd/perl/tmp/';
1.8 matthew 32: my %data;
33: foreach (split/&/,$ENV{'QUERY_STRING'}) {
34: my ($name,$value)=split/=/;
35: $data{$name}=$value;
1.7 matthew 36: }
1.8 matthew 37: my $filename = $data{'file'};
1.9 matthew 38: # unescape filename
39: $filename =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C",hex($1))/eg;
1.8 matthew 40: die if ($filename =~ /\// || $filename !~ /_plot.data$/);
1.7 matthew 41: $filename = $tmpdir . $filename;
1.8 matthew 42: die "$data{'file'} does not exist\n" if (! -e $filename);
43:
44: my $output = $data{'output'};
1.12 albertel 45: if ($output eq '') {
46: $output = (split('\.',$0))[-1];
47: }
48:
1.11 matthew 49: if ($output eq 'gif' || $output eq 'png') {
1.17 ! raeburn 50: if (open(my $plot, "export LANG='en_US.UTF-8'; gnuplot $filename |")) {
1.16 musolffc 51:
1.17 ! raeburn 52: print <<"END";
1.11 matthew 53: Content-type: image/$output
1.1 matthew 54:
1.5 matthew 55: END
1.17 ! raeburn 56: while (my $line = <$plot>) {
! 57: print($line);
! 58: }
! 59: close($plot);
! 60: } else {
! 61: die "failed to open pipe to run gnuplot\n";
1.16 musolffc 62: }
1.13 albertel 63:
1.8 matthew 64: } elsif ($output eq 'eps') {
1.10 matthew 65: print <<"END";
66: Content-type: text/html
67:
68: <html><head><title>eps plot creation</title></head>
69: <body>
70: <h2>Creating eps plot</h2>
71:
72: END
1.17 ! raeburn 73: if (! system ("export LANG='en_US.UTF-8'; gnuplot $filename")) {
1.14 raeburn 74: print "<h2>An error occurred.</h2>\n".
1.10 matthew 75: "I am not going to tell you about it as I have not bothered ".
76: "to figure out how to get you the error text.\n";
77: } else {
78: print "<h2>EPS file generated successfully.</h2>\n";
79: }
80: print "</body></html>\n";
1.8 matthew 81: } else {
82: die "output $output is not a recognized value or has no value\n";
1.4 matthew 83: }
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>