Mercurial > hg > Members > kono > nitros9-code
view level1/cmds/httpd.as @ 2898:28ed72477814 lwtools-port
Dummy merge of default branch into lwtools
hg -y merge --tool=internal:fail default
hg revert --all --no-backup --rev .
hg resolve -a -m
This dummy merge discards any changes from the default branch
so that the result is the same as what lwtools already had.
When merging back to default branch later, the discarded
changes will be discarded there also, so the result
will be that the default branch will contain what
the lwtools branch had before these merges.
Only scripts/burst was "rescued" from default branch.
author | Tormod Volden <debian.tormod@gmail.com> |
---|---|
date | Sat, 11 Jan 2014 18:40:44 +0100 |
parents | ad769d2a03e4 |
children |
line wrap: on
line source
******************************************************************** * httpd - HTTP daemon * * $Id$ * * Edt/Rev YYYY/MM/DD Modified by * Comment * ------------------------------------------------------------------ * 1 2013/05/22 Boisy G. Pitre * Started. nam httpd ttl HTTP daemon section __os9 type equ Prgrm lang equ Objct attr equ ReEnt rev equ $00 edition equ 1 stack equ 200 endsect section bss gbufferl equ 128 gbuffer rmb gbufferl dentbuf rmb 32 filepath rmb 1 fileptr rmb 2 lbufferl equ 128 lbuffer rmb lbufferl endsect section code DEBUG equ 1 **** Entry Point **** __start * Turn off pause in standard out lda #1 lbsr SetEchoOff lbsr SetAutoLFOn * change to www root dir lda #READ. leax wwwroot,pcr os9 I$ChgDir bcs errexit * main loop: read line on stdin mainloop leax gbuffer,u ldy #gbufferl clra os9 I$ReadLn bcs checkeof * quickly nul terminate the line we just read pshs x tfr y,d leax d,x clr -1,x puls x bsr process bra errexit checkeof cmpb #E$EOF bcs errexit clrb errexit pshs cc,b lda #1 lbsr SetEchoOn puls cc,b os9 F$Exit * input: X = line read (nul terminated) process * check for GET leay get,pcr ldd #getl lbsr STRNCMP beq GETOK clrb rts * we know it is a GET... get the text following it GETOK leax 4,x ldd ,x cmpd #'/*256+C$SPAC beq doindex leax 1,x NulTerminate pshs x loop@ lda ,x+ beq terminate@ cmpa #C$CR beq terminate@ cmpa #C$SPAC beq terminate@ bra loop@ terminate@ clr -1,x puls x bra readfile * point to index.html doindex leax index,pcr readfile stx fileptr,u lda #READ. os9 I$Open bcs isitdir lbsr print200OK readloop leax lbuffer,u ldy #lbufferl os9 I$Read bcs eofcheck pshs a lda #1 os9 I$Write puls a bra readloop eofcheck cmpb #E$EOF bne ret clrb os9 I$Close ret rts isitdir cmpb #E$FNA lbne notfound * open as directory lda #READ.+DIR. ldx fileptr,u os9 I$Open lbcs notfound * process dir here sta filepath,u lbsr print200OK lbsr _htmltag lbsr _headtag lbsr _titletag lbsr PRINTS fcc "Directory of " fcb $00 ldx fileptr,u lbsr PUTS lbsr _ntitletag lbsr _nheadtag lbsr _bodytag lbsr PRINTS fcc "<H3>" fcc "Directory of " fcb $00 ldx fileptr,u lbsr PUTS lbsr PRINTS fcc "</H3>" fcb $00 lda filepath,u * skip over .. and . ldy #DIR.SZ leax dentbuf,u os9 I$Read leax dentbuf,u os9 I$Read nextdirent lda filepath,u leax dentbuf,u ldy #DIR.SZ os9 I$Read bcs endoffile tst ,x beq nextdirent * find char with hi bit set tfr x,y lo@ lda ,y+ bpl lo@ anda #$7F sta -1,y clr ,y pshs x lbsr PRINTS fcc '<A HREF="' fcb $00 ldx fileptr,u lbsr PUTS lbsr PRINTS fcc "/" fcb $00 ldx ,s lbsr PUTS lbsr PRINTS fcc '">' fcb $00 puls x lbsr PUTS lbsr PRINTS fcc "</A>" fcc "<BR>" fcb $00 bra nextdirent endoffile lda filepath,u os9 I$Close lbsr _nbodytag lbsr _nhtmltag rts notfound lbsr print404 rts _http11 lbsr PRINTS fcc "HTTP/1.1 " fcb $00 rts _server lbsr PRINTS fcc "Server: " fcb $00 lbsr _serverinf lbsr _newline rts _connclose lbsr PRINTS fcc "Connection: close" fcb C$CR,$00 rts _newline lbsr PRINTS fcb C$CR,$00 rts _serverinf lbsr PRINTS fcc /httpd ed. / fcb edition+$30 fcc / (NitrOS-9)/ fcb $00 rts _htmltag lbsr PRINTS fcc "<HTML>" fcb $00 rts _nhtmltag lbsr PRINTS fcc "</HTML>" fcb $00 rts _headtag lbsr PRINTS fcc "<HEAD>" fcb $00 rts _nheadtag lbsr PRINTS fcc "</HEAD>" fcb $00 rts _titletag lbsr PRINTS fcc "<TITLE>" fcb $00 rts _ntitletag lbsr PRINTS fcc "</TITLE>" fcb $00 rts _bodytag lbsr PRINTS fcc "<BODY>" fcb $00 rts _nbodytag lbsr PRINTS fcc "</BODY>" fcb $00 rts print200OK lbsr _http11 lbsr PRINTS fcc "200 OK" fcb C$CR,$00 lbsr _server lbsr _connclose lbsr _newline rts print404 lbsr _http11 lbsr PRINTS fcc "404 Not Found" fcb C$CR,$00 lbsr _server lbsr _connclose lbsr _newline lbsr PRINTS fcc '<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">' fcb $00 lbsr _htmltag lbsr _headtag lbsr PRINTS fcc '<title>404 Not Found</title>' fcb $00 lbsr _nheadtag lbsr _bodytag lbsr PRINTS fcc '<h1>Not Found</h1>' fcc '<p>The requested URL ' fcb $00 ldx fileptr,u lbsr PUTS lbsr PRINTS fcc ' was not found on this server.</p>' fcc '<hr>' fcc '<address>' fcb $00 lbsr _serverinf lbsr PRINTS fcc '</address>' fcb $00 lbsr _nbodytag lbsr _nhtmltag rts wwwroot fcs "....../WWWROOT" get fcc "GET " getl equ *-get fcb $00 index fcs "index.html" endsect