[BACK]Return to cgi.sm1 CVS log [TXT][DIR] Up to [local] / OpenXM / src / kan96xx / Doc

Diff for /OpenXM/src/kan96xx/Doc/cgi.sm1 between version 1.3 and 1.12

version 1.3, 2004/09/27 01:20:46 version 1.12, 2004/12/29 01:42:13
Line 1 
Line 1 
 % $OpenXM: OpenXM/src/kan96xx/Doc/cgi.sm1,v 1.2 2004/09/24 13:15:27 takayama Exp $  % $OpenXM: OpenXM/src/kan96xx/Doc/cgi.sm1,v 1.11 2004/11/23 02:38:46 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.
   
   /cgi.verbose 0 def
   
 [(plugin-cgi)  [(plugin-cgi)
 [(Key words: )  [(Key words: )
  ( cgiUrlEncodingToKeyValuePair)   ( cgiUrlEncodingToKeyValuePair)
Line 39 
Line 41 
    [[(URL),(/index.html)]     [[(URL),(/index.html)]
    ] /kv set     ] /kv set
    [(cgiKeyValuePairToUrlEncodingString) kv] extension /sss set     [(cgiKeyValuePairToUrlEncodingString) kv] extension /sss set
    [(GET ) , sss , ( HTTP/0.9) , nl , nl ] cat /sss2 set  %   [(GET ) , sss , ( HTTP/0.9) , nl , nl ] cat /sss2 set
      [(GET ) , sss , ( HTTP/0.9) ,  nl ,
       (HOST: ) , url , nl
       nl ] cat /sss2 set
   
    sss2 message     sss2 message
    [(sm1.socket) (connect) [80 url]] extension 0 get /goo set     [(sm1.socket) (connect) [80 url]] extension 0 get /goo set
Line 91 
Line 96 
 ]] putUsages  ]] putUsages
 % Server-side-script  % Server-side-script
 % oxMessageBody=action input-data-for-polymake  % oxMessageBody=action input-data-for-polymake
 % sm1 -q -s "[(parse) (cgi.sm1) pushfile] extension cgiPolymake quit "  % t.t : oxMessageBody=FACETS++POINTS%0A1+0+0+%0A1+1+0+%0A1+0+1%0A
 % env QUERY_STRING="t?oxMessageBody=FACETS+POINTS+1+0+0%0A" sm1 -q -s "[(parse) (cgi.sm1) pushfile] extension cgiPolymake quit "  %   t?oxMe...
   % env CONTENT_LENGTH=57 sm1 -q -s "[(parse) (cgi.sm1) pushfile] extension cgiPolymake quit " <t.t
 /cgiPolymake {  /cgiPolymake {
   {    {
    [(getenv) (QUERY_STRING)] extension /cgi.query_string set     [(getenv) (CONTENT_LENGTH)] extension /cgi.content_length set
    cgi.query_string isString { }     cgi.content_length isString {
      } {
          cgiPolymake.errorMessage message  exit
      } ifelse
      cgi.content_length .. (integer) dc /cgi.content_length set
      cgi.content_length 1 lt {
          cgiPolymake.errorMessage message  exit
      } { } ifelse
      [(read) 0 cgi.content_length] extension /cgi.query_string set
      cgi.query_string isString {
        cgi.query_string length 0 eq  {
          cgiPolymake.errorMessage message  exit
        } { } ifelse
      }
    {     {
      cgiPolymake.errorMessage message  exit       cgiPolymake.errorMessage message  exit
    } ifelse     } ifelse
    cgi.body.http0 message     cgi.body.http0 message
    cgi.query_string cgiPolymake.0     cgi.query_string cgiPolymake.0
    cgi.body cgiReplyInHttp0 /cgi.body.http set     cgi.body cgiReplyInHttp0 /cgi.body.http set
    cgi.body.http message     cgi.body.http message
    exit     exit
   } loop    } loop
     [(flush)] extension
 } def  } def
 /cgiPolymake.errorMessage  /cgiPolymake.errorMessage
   [ (Content-Type: text/html) nl    [ (Content-Type: text/html) nl
Line 118 
Line 138 
     (1 1 0 ) nl      (1 1 0 ) nl
     (1 0 1 ) nl      (1 0 1 ) nl
     (</pre>) nl      (</pre>) nl
     (<form>) nl      (<form method="POST">) nl
     (<input type=submit>) nl      (<input type=submit>) nl
     (<textarea name="oxMesassageBody") nl      (<textarea name="oxMessageBody") nl
     ( rows=10 cols="80" wrap="soft"></textarea>) nl      ( rows=10 cols="80" wrap="soft"></textarea>) nl
     (</form>) nl      (</form>) nl
     (</body></html>) nl      (</body></html>) nl
Line 138  def
Line 158  def
 % Step 1.  analyze the query string in URL encoding.  % Step 1.  analyze the query string in URL encoding.
     [(cgiUrlEncodingToKeyValuePair) sss] extension /kv set      [(cgiUrlEncodingToKeyValuePair) sss] extension /kv set
     kv (oxMessageBody) getNode /comm set      kv (oxMessageBody) getNode /comm set
   %   [nl nl] cat message sss message kv message  % for debug.
 % Step 2. Extract action part and file part for polymake.  % Step 2. Extract action part and file part for polymake.
     comm (array) dc /comm set      comm (array) dc /comm set
     /i 0 def      /i 0 def
Line 167  def
Line 188  def
     [cgiPolymake.polymakeName (stringInOut://cgi_body.poly) acti0] addStdoutStderr      [cgiPolymake.polymakeName (stringInOut://cgi_body.poly) acti0] addStdoutStderr
     oxshell pop      oxshell pop
     pError [@@@stdout @@@stderr] append /pError set      pError [@@@stdout @@@stderr] append /pError set
     /cgi.body cgi_body def      /cgi.body cgi_body def
   ] pop    ] pop
   popVariables    popVariables
 } def  } def
Line 195  def
Line 216  def
     /ss arg1 def      /ss arg1 def
     [[(Content-Body) ss]      [[(Content-Body) ss]
 %     [(Content-Type) (text/plain)]  %     [(Content-Type) (text/plain)]
      [(oxshell-stdout) @@@stdout]       [(oxshell-stdout) [(cgiStringToUrlEncoding) @@@stdout] extension]
      [(oxshell-stderr) @@@stderr]       [(oxshell-stderr) [(cgiStringToUrlEncoding) @@@stderr] extension]
     ] /sskv set      ] /sskv set
     [(cgiKeyValuePairToHttpString) sskv] extension /arg1 set      [(cgiKeyValuePairToHttpString) sskv] extension /arg1 set
   ] pop    ] pop
Line 205  def
Line 226  def
   
 % ------------  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 {
   /arg2 set /arg1 set    /arg2 set /arg1 set
   [/saction /sfile /ff /ff1 /sss2 /goo /pp /pp2] pushVariables    [/saction /sfile /ff /ff1 /sss2 /goo /pp /pp2] 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.
     [[(URL) cgiQueryPolymake.cginame]       [(http://) cgiQueryPolymake.hostname cgiQueryPolymake.cginame] cat
      [(oxMessageBody)       /ff1 set
      [saction ( )  % full URL necessary for virtual host of apache.
       sfile nl ] cat       [[(oxMessageBody)
      ]] /ff set         [saction ( )
      [(cgiKeyValuePairToUrlEncodingString) ff] extension /ff1 set          sfile nl ] cat
      [(GET ) , ff1 , ( HTTP/0.9) , nl , nl ] cat /sss2 set         ]
        ] /ff set
        [(cgiKeyValuePairToUrlEncodingString) ff] extension /ff set
        [(POST ) , ff1 , ( HTTP/0.9) , nl ,
   %      (Connection: Keep-Alive) , nl ,
         (HOST: ) cgiQueryPolymake.hostname , nl ,
         (Content-length: ) , ff length (dollar) dc , nl , nl
         ff nl] cat /sss2 set
 % step 2. Call the server and get the response in pp  % step 2. Call the server and get the response in pp
      [(sm1.socket) (connect)       [(sm1.socket) (connect)
         [80 cgiQueryPolymake.hostname]] extension 0 get /goo set          [80 cgiQueryPolymake.hostname]] extension 0 get /goo set
      [(sm1.socket) (write) [goo sss2]]  extension       [(sm1.socket) (write) [goo sss2]]  extension
      goo readHTTP0 /pp set       goo readHTTP0 /pp set
      pp message  
        % For the case of error.
        [(regexec) (200 OK) [pp]] extension length 0 eq {
           (sss2=) message
           sss2 message
           (pp=) message
           pp message
           (cgi.sm1: there seems to be an error in the HTTP connection.)
        } { } ifelse
   
        cgi.verbose { pp message } {  } ifelse
      [(sm1.socket) (close) [goo]] extension       [(sm1.socket) (close) [goo]] extension
      [(cgiHttpToKeyValuePair) pp] extension /pp2 set       [(cgiHttpToKeyValuePair) pp] extension /pp2 set
   
Line 238  def
Line 276  def
   arg1    arg1
 } def  } def
   
   /cgi.test1 {
     (FACETS)
     [(POINTS) nl
      (1 0 0 ) nl
      (1 1 0 ) nl
      (1 0 1 ) nl
     ] cat
     cgiQueryPolymake message
   } def
 % Overrides doPolymake  % Overrides doPolymake
 %/doPolymake { doPolymake.OoHG } def  %/doPolymake { doPolymake.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.)  [(It first looks for local polymake. If there is, it calls the local polymake.)
Line 266  def
Line 314  def
     @@@polymake.k0.ccc ( QuoteMode(0); ) oxexecutestring      @@@polymake.k0.ccc ( QuoteMode(0); ) oxexecutestring
     [(treeToPolymake) ptree] extension /pNative set      [(treeToPolymake) ptree] extension /pNative set
 %% step 2: calling the polymake  %% step 2: calling the polymake
     [(which) (polymake)] oxshell tag 0 eq  %    [(which) (polymake)] oxshell tag 0 eq
       1  % always call web service
     {      {
 % cgi-polymake  % cgi-polymake
        (Trying web service.) message         (Trying web service.) message
        pAction pNative  cgiQueryPolymake /doPolymake.OoHG.result set         pAction pNative  cgiQueryPolymake /doPolymake.OoHG.result set
   
         [(regexec) (Not Found) [doPolymake.OoHG.result 0 get ]]
         extension length 0 eq not {
            doPolymake.OoHG.result message
            (The polymake cgi seems to be out of service.) error
         } {  } ifelse
   
       doPolymake.OoHG.result 0 get /pNative set        doPolymake.OoHG.result 0 get /pNative set
   
   
       pError doPolymake.OoHG.result rest append /pError set        pError doPolymake.OoHG.result rest append /pError set
     } {      } {
 % local polymake  % local polymake
Line 294  def
Line 351  def
   ] pop    ] pop
   popVariables    popVariables
   arg1    arg1
   } def
   
   /polymake.start.OoHG {
     (ox.k0.loaded) boundp {  }
     { [(parse) (ox.sm1) pushfile] extension
       /@@@polymake.k0.ccc [ ] def
     } ifelse
     @@@polymake.k0.ccc [ ] eq {
        k0connectr /@@@polymake.k0.ccc oxk0.ccc def /oxk0.ccc [ ] def
        @@@polymake.k0.ccc oxsetmathcap @@@polymake.k0.ccc oxmathcap
     } {  } ifelse
     @@@polymake.k0.ccc 0 get (closed) eq {
        k0connectr /@@@polymake.k0.ccc oxk0.ccc def /oxk0.ccc [ ] def
        @@@polymake.k0.ccc oxsetmathcap @@@polymake.k0.ccc oxmathcap
     } {  } ifelse
     [(which) (polymake2tfb)] oxshell tag 0 eq {
        (polymake2tfb is not installed in this system.) error
     } {  } ifelse
 } def  } def
   
   

Legend:
Removed from v.1.3  
changed lines
  Added in v.1.12

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>