version 1.7, 2001/04/22 01:02:27 |
version 1.10, 2001/04/23 13:34:00 |
|
|
%% $OpenXM: OpenXM/src/kan96xx/Doc/httpd-asir.sm1,v 1.6 2001/04/22 00:34:01 takayama Exp $ |
%% $OpenXM: OpenXM/src/kan96xx/Doc/httpd-asir.sm1,v 1.9 2001/04/22 04:55:07 takayama Exp $ |
%% http server by sm1 |
%% http server by sm1 |
|
|
/httpd.port 1200 def |
/httpd.port 1200 def |
|
|
/httpd.initialization |
/httpd.initialization |
%% Put initialization codes here. |
%% Put initialization codes here. |
[ |
[ |
|
|
" Risa/Asir oxasir version "+rtostr(version());) |
" Risa/Asir oxasir version "+rtostr(version());) |
] cat |
] cat |
def |
def |
|
|
[(parse) (oxasir.sm1) pushfile] extension |
[(parse) (oxasir.sm1) pushfile] extension |
(oxasir.started) boundp { |
(oxasir.started) boundp { |
} { |
} { |
|
|
}{ |
}{ |
10 (string) dc /mmm set |
10 (string) dc /mmm set |
} ifelse |
} ifelse |
[(sm1.socket) (write) [httpd.server.fd 0 get mmm]] extension message |
[(sm1.socket) (select) [httpd.server.fd 0 get 0]] extension { |
|
(Warning: your peer closed the connection. Do not send the data.) message |
|
} { |
|
[(sm1.socket) (write) [httpd.server.fd 0 get mmm]] extension message |
|
} ifelse |
] pop |
] pop |
popVariables |
popVariables |
} def |
} def |
|
|
/httpd.com httpd.initialization def |
/httpd.com httpd.initialization def |
} { } ifelse |
} { } ifelse |
httpd.com metaCommand { |
httpd.com metaCommand { |
oxasir.ccc |
httpd.textarea.valid { |
[(if (1) {) httpd.com (};)] cat |
oxasir.ccc |
oxexecutestring ; |
[(if (1) {) httpd.com (; };)] cat |
|
oxexecutestring ; |
|
}{ |
|
send-page-warning exit |
|
} ifelse |
[(oxReq) oxasir.ccc SM_dupErrors ] extension pop |
[(oxReq) oxasir.ccc SM_dupErrors ] extension pop |
|
|
[(oxReq) oxasir.ccc SM_popCMO ] extension pop |
[(oxReq) oxasir.ccc SM_popCMO ] extension pop |
|
|
(/**** ) httpd.serial toString ( ****/) |
(/**** ) httpd.serial toString ( ****/) |
10 (string) dc |
10 (string) dc |
httpd.com |
httpd.com |
|
(;) %% add extra ; |
] cat |
] cat |
append |
append |
def |
def |
|
|
(<title> asirweb </title> ) |
(<title> asirweb </title> ) |
(<font color="blue"> Input-) httpd.serial toString |
(<font color="blue"> Input-) httpd.serial toString |
(: </font> ) |
(: </font> ) |
(<pre> ) httpd.com (</pre>) (<br>) |
httpd.com preformatHTML (<br>) |
} ifelse |
} ifelse |
(<font color="green"> Output-) httpd.serial toString |
(<font color="green"> Output-) httpd.serial toString |
(: </font> ) |
(: </font> ) |
(<pre>) httpd.result (</pre>) |
httpd.result preformatHTML |
] cat |
] cat |
send-page-3 exit |
send-page-3 exit |
} { exit } ifelse %% metaCommand |
} { exit } ifelse %% metaCommand |
|
|
result sendln |
result sendln |
(<FORM NAME="myFORM">) sendln |
(<FORM NAME="myFORM">) sendln |
(<INPUT TYPE=submit VALUE="submit">) sendln |
(<INPUT TYPE=submit VALUE="submit">) sendln |
(<textarea name=msg rows=10 cols="80" wrap="soft"></textarea>) sendln |
[(<textarea name=) httpd.textarea.name |
|
( rows=10 cols="80" wrap="soft"></textarea>)] cat sendln |
(</FORM>) sendln |
(</FORM>) sendln |
send-menu-1 |
send-menu-1 |
0 sendln |
0 sendln |
|
|
[ |
[ |
(HTTP/0.9 200 OK) sendln |
(HTTP/0.9 200 OK) sendln |
(Connection: close) sendln |
(Connection: close) sendln |
(Content-Type: text/html) sendln |
(Content-Type: text/plain) sendln |
0 sendln |
0 sendln |
(<html> <body>) sendln |
(/* Saved the following to sm1out.txt */) sendln |
(/* Saved the following to sm1out.txt */<br>) sendln |
(/* Save the following by your browser as a text file. */) sendln |
(/* Save the following by your browser as a text file. */<br>) sendln |
|
|
|
(<pre>) sendln |
|
0 1 httpd.history length 1 sub { |
0 1 httpd.history length 1 sub { |
/i set |
/i set |
httpd.history i get sendln |
httpd.history i get sendln |
} for |
} for |
(</pre>) sendln |
( end$) sendln |
(</body> </html>) sendln |
|
0 sendln |
0 sendln |
[(flush)] extension |
[(flush)] extension |
[(PrintDollar) 1] system_variable |
[(PrintDollar) 1] system_variable |
|
|
popVariables |
popVariables |
} def |
} def |
|
|
|
/send-page-warning { |
|
(HTTP/0.9 200 OK) sendln |
|
(Connection: close) sendln |
|
(Content-Type: text/html) sendln |
|
0 sendln |
|
(You cannot execute oxasir without a session key! <br>) sendln |
|
0 sendln |
|
[(flush)] extension |
|
} def |
|
|
/stopclient { |
/stopclient { |
[(sm1.socket) (close) [client.fdAndPort 0 get] ] extension message |
[(sm1.socket) (close) [client.fdAndPort 0 get] ] extension message |
|
|
arg1 |
arg1 |
} def |
} def |
|
|
|
/randomName { |
|
[/in-randomName /sss /rrr ] pushVariables |
|
[ |
|
%% Seed name |
|
/sss [ 97 97 97 97 97 97 97 97 97 97 ] def %% 97 == 'a' |
|
%% This procedure to generate port number might fail. |
|
sss { |
|
[ |
|
[(oxGenPass)] extension .. /rrr set |
|
[(tdiv_qr) rrr (26)..] mpzext 1 get /rrr set |
|
] pop |
|
rrr (integer) dc add |
|
} map |
|
/sss set |
|
sss {(string) dc} map cat /arg1 set |
|
] pop |
|
popVariables |
|
arg1 |
|
} def |
|
|
|
(httpd.textarea.name) boundp { } |
|
{ |
|
/httpd.textarea.name randomName def |
|
/httpd.textarea.name.aaa |
|
[(GET /?) httpd.textarea.name] cat |
|
(array) dc |
|
def |
|
} ifelse |
|
|
%% remove GET /?msg= |
%% remove GET /?msg= |
/removeGET { |
/removeGET { |
/arg1 set |
/arg1 set |
[/in-removeGET /s /s2 /i /j /i0] pushVariables |
[/in-removeGET /s /s2 /i /j /i0 |
|
/tname |
|
] pushVariables |
[ |
[ |
/s arg1 def |
/s arg1 def |
|
/httpd.textarea.valid 1 def |
s 1 copy /s2 set |
s 1 copy /s2 set |
s (array) dc /s set |
s (array) dc /s set |
|
|
|
/tname [ ] def |
0 1 s length 1 sub { |
0 1 s length 1 sub { |
/i0 set |
/i0 set |
s i0 get 61 eq { %% 61 is = |
s i0 get 61 eq { %% 61 is = |
i0 1 add /i0 set |
i0 1 add /i0 set |
|
tname message |
|
httpd.textarea.name.aaa message |
|
tname httpd.textarea.name.aaa eq { |
|
/httpd.textarea.valid 1 def |
|
} { |
|
/httpd.textarea.valid 0 def |
|
(Warning: got an invalid name for the text field.) message |
|
} ifelse |
exit |
exit |
} { } ifelse |
} { } ifelse |
|
tname s i0 get append /tname set |
} for |
} for |
|
|
/j 0 def |
/j 0 def |
|
|
arg1 |
arg1 |
} def |
} def |
|
|
|
/preformatHTML { |
|
/arg1 set |
|
[/in-preformatHTML /sss /c] pushVariables |
|
[ |
|
/sss arg1 def |
|
sss (array) dc /sss set |
|
sss { |
|
/c set |
|
[ |
|
c 60 eq { |
|
/c (<) def |
|
} { } ifelse |
|
c 62 eq { |
|
/c (>) def |
|
} { } ifelse |
|
c 38 eq { |
|
/c (&) def |
|
} { } ifelse |
|
] pop |
|
c (string) dc |
|
} map cat /sss set |
|
[(<pre> ) sss ( </pre> )] cat /arg1 set |
|
] pop |
|
popVariables |
|
arg1 |
|
} def |
|
|
/metaCommand { |
/metaCommand { |
/arg1 set |
/arg1 set |
[/in-metaCommand /msg /result] pushVariables |
[/in-metaCommand /msg /result] pushVariables |
|
|
/msg arg1 def |
/msg arg1 def |
/result 1 def |
/result 1 def |
msg (httpdAsirMeta quit) eq { |
msg (httpdAsirMeta quit) eq { |
|
oxasir.ccc oxshutdown |
send-page-bye |
send-page-bye |
quit |
quit |
/result 0 def |
/result 0 def |