version 1.16, 2013/09/25 07:30:52 |
version 1.18, 2020/03/12 07:33:03 |
|
|
% $OpenXM: OpenXM/src/kan96xx/Doc/cgi.sm1,v 1.15 2013/09/22 08:07:51 takayama Exp $ |
% $OpenXM: OpenXM/src/kan96xx/Doc/cgi.sm1,v 1.17 2013/10/11 01:08:35 takayama Exp $ |
% OpenXM/src/polymake/cgi/cgi-polymake.sh |
% OpenXM/src/polymake/cgi/cgi-polymake.sh |
% is a shell script to call sm1/polymake as a CGI script. |
% is a shell script to call sm1/polymake as a CGI script. |
% Override as /doPolymake {doPolymake.OoHG} def if you need. |
% Override as /doPolymake {doPolymake.OoHG} def if you need. |
|
|
% ------------ client side script --------------- |
% ------------ client side script --------------- |
/cgiQueryPolymake.hostname (polymake.math.kobe-u.ac.jp) def |
/cgiQueryPolymake.hostname (polymake.math.kobe-u.ac.jp) def |
/cgiQueryPolymake.cginame (/cgi-bin/cgi-polymake.sh) def |
/cgiQueryPolymake.cginame (/cgi-bin/cgi-polymake.sh) def |
%/cgiQueryPolymake { cgiQueryPolymake.curl } def |
%This host and cgi are version 2.0 polymake. dim, ... are different with new versions. |
/cgiQueryPolymake { cgiQueryPolymake.native } def |
/cgiQueryPolymake { cgiQueryPolymake.curl } def |
|
%/cgiQueryPolymake { cgiQueryPolymake.native } def |
/cgiQueryPolymake.curl { |
/cgiQueryPolymake.curl { |
/arg2 set /arg1 set |
/arg2 set /arg1 set |
[/saction /sfile /ff /ff1 /sss2 /goo /pp /pp2 /key /body /fd] pushVariables |
[/saction /sfile /ff /ff1 /sss2 /goo /pp /pp2 /key /body /fd /pid] pushVariables |
[ |
[ |
/saction arg1 def /sfile arg2 def |
/saction arg1 def /sfile arg2 def |
% step1. Generate query in URL encoding. |
% step1. Generate query in URL encoding. |
|
|
|
|
ff 0 get 0 get /key set |
ff 0 get 0 get /key set |
ff 0 get 1 get /body set |
ff 0 get 1 get /body set |
|
|
|
/pid [(getpid)] extension toString def |
|
|
% step 2. Call the server and get the response in pp |
% step 2. Call the server and get the response in pp |
/cgi.verbose 1 def |
/cgi.verbose 1 def |
(/tmp/sm1-q-cgi.txt) (w) file /fd set |
[(/tmp/sm1-q-cgi.txt) pid] cat (w) file /fd set |
fd body writestring |
fd body writestring |
fd closefile |
fd closefile |
|
|
% [(curl) (--form) [key (=@/tmp/sm1-q-cgi.txt)] cat ff1] /ff set |
% [(curl) (--form) [key (=@/tmp/sm1-q-cgi.txt)] cat ff1] /ff set |
% ff addStdoutStderr oxshell @@@stdout /pp set |
% ff addStdoutStderr oxshell @@@stdout /pp set |
[(curl --form ) [key (=@/tmp/sm1-q-cgi.txt )] cat ff1 (>/tmp/sm1-q-cgi-out.txt)] cat /ff set |
[(curl --form ) [key (=@/tmp/sm1-q-cgi.txt) pid ( )] cat ff1 (>/tmp/sm1-q-cgi-out.txt) pid] cat /ff set |
ff system |
ff system |
[nl (/tmp/sm1-q-cgi-out.txt) pushfile] cat /pp set |
[nl [(/tmp/sm1-q-cgi-out.txt) pid] cat pushfile] cat /pp set |
|
|
|
%% Store workfiles under OpenXM_tmp |
|
[(mkdir -p ) [(getenv) (OpenXM_tmp)] extension] cat system |
|
[(mv /tmp/sm1-q-cgi.txt) pid ( ) [(getenv) (OpenXM_tmp)] extension] cat system |
|
[(mv /tmp/sm1-q-cgi-out.txt) pid ( ) [(getenv) (OpenXM_tmp)] extension] cat system |
|
|
cgi.verbose { pp message } { } ifelse |
cgi.verbose { pp message } { } ifelse |
[(cgiHttpToKeyValuePair) pp] extension /pp2 set |
[(cgiHttpToKeyValuePair) pp] extension /pp2 set |
pp2 message |
pp2 message |
|
|
%/polymake.start { polymake.start.OoHG } def |
%/polymake.start { polymake.start.OoHG } def |
|
|
[(doPolymake.OoHG) |
[(doPolymake.OoHG) |
[(It first looks for local polymake. If there is, it calls the local polymake.) |
[(doPolymake.local calls the local polymake.) |
(If not, it calls http://polymake.math.kobe-u.ac.jp/cgi-bin/cgi-polymake.sh) |
(This function calls http://polymake.math.kobe-u.ac.jp/cgi-bin/cgi-polymake.sh) |
(to make a computation in polymake.) |
(to make a computation in polymake.) |
|
(The host name and the cgi name are set to the variable) |
|
( cgiQueryPolymake.hostname and cgiQueryPolymake.cginame) |
(See doPolymake for the syntax. doPolymake.OoHG may overrides doPolymake.) |
(See doPolymake for the syntax. doPolymake.OoHG may overrides doPolymake.) |
(If you use curl to call the server execute) |
(If you use curl to call the server execute) |
( usePolymake.OoHG.curl) |
( usePolymake.OoHG.curl) |
|
|
} def |
} def |
|
|
/usePolymake.OoHG.curl { |
/usePolymake.OoHG.curl { |
|
[(which) (curl)] oxshell tag 0 eq { |
|
(Error in usePolymake.OoHG.curl: curl is not found.) error |
|
} { } ifelse |
/doPolymake { doPolymake.OoHG } def |
/doPolymake { doPolymake.OoHG } def |
/polymake.start { polymake.start.OoHG } def |
/polymake.start { polymake.start.OoHG } def |
/cgiQueryPolymake { cgiQueryPolymake.curl } def |
/cgiQueryPolymake { cgiQueryPolymake.curl } def |
} def |
} def |
|
|
|
[(usePolymake.local) |
|
[(doPolymake calls local polymake) |
|
]] putUsages |
|
|
[(usePolymake.OoHG.native) |
[(usePolymake.OoHG.native) |
[(doPolymake = doPolymake.OoHG with cgiQueryPolymake.native) |
[(doPolymake = doPolymake.OoHG with cgiQueryPolymake.native) |
(cf. doPolymake.OoHG) |
(cf. doPolymake.OoHG) |
|
(hostname is set in cgiQueryPolymake.hostname) |
|
(cginame is set in cgiQueryPolymake.cginame) |
]] putUsages |
]] putUsages |
|
|
[(usePolymake.OoHG.curl) |
[(usePolymake.OoHG.curl) |
|
|
(It should be used when cgiQueryPolymake.native does not work) |
(It should be used when cgiQueryPolymake.native does not work) |
(over, e.g., a reverse proxy.) |
(over, e.g., a reverse proxy.) |
(The command curl is required. cf. cgi.verbose, doPolymake.OoHG) |
(The command curl is required. cf. cgi.verbose, doPolymake.OoHG) |
|
(hostname is set in cgiQueryPolymake.hostname) |
|
(cginame is set in cgiQueryPolymake.cginame) |
]] putUsages |
]] putUsages |
|
|
|
|