* Move namespace specs back to main code, and pass them through a
`#:namespace' keyword * More robust error handler -- use the url that initiated the interaction svn: r17428
This commit is contained in:
parent
9660490922
commit
8aa62e22b2
|
@ -14,41 +14,47 @@
|
||||||
(prefix-in sequencer: web-server/dispatchers/dispatch-sequencer)
|
(prefix-in sequencer: web-server/dispatchers/dispatch-sequencer)
|
||||||
(prefix-in files: web-server/dispatchers/dispatch-files)
|
(prefix-in files: web-server/dispatchers/dispatch-files)
|
||||||
(prefix-in log: web-server/dispatchers/dispatch-log)
|
(prefix-in log: web-server/dispatchers/dispatch-log)
|
||||||
|
web-server/http/request-structs
|
||||||
|
net/url
|
||||||
net/tcp-sig
|
net/tcp-sig
|
||||||
net/ssl-tcp-unit)
|
net/ssl-tcp-unit)
|
||||||
|
|
||||||
(define ((send-error msg) req)
|
|
||||||
`(html (head (meta [(http-equiv "refresh") (content "3;URL=/")])
|
|
||||||
(title ,msg))
|
|
||||||
(body ,msg "; " (a ([href "/"]) "restarting") " in 3 seconds.")))
|
|
||||||
|
|
||||||
(provide run-servlet)
|
(provide run-servlet)
|
||||||
(define (run-servlet dispatcher port server-dir
|
(define (run-servlet dispatcher port server-dir
|
||||||
|
#:namespace [namespace '()]
|
||||||
#:log-file [log-file #f])
|
#:log-file [log-file #f])
|
||||||
|
(define ((send-error msg to) req)
|
||||||
|
(let ([to (to)])
|
||||||
|
`(html (head (meta ([http-equiv "refresh"]
|
||||||
|
[content ,(format "3;URL=~a" to)]))
|
||||||
|
(title ,msg))
|
||||||
|
(body ,msg "; " (a ([href ,to]) "restarting") " in 3 seconds."))))
|
||||||
|
(define tcp@
|
||||||
|
(let ()
|
||||||
|
(define-unit-binding ssl-tcp@
|
||||||
|
(make-ssl-tcp@ (build-path server-dir "server-cert.pem")
|
||||||
|
(build-path server-dir "private-key.pem")
|
||||||
|
#f #f #f #f #f)
|
||||||
|
(import) (export tcp^))
|
||||||
|
ssl-tcp@))
|
||||||
(serve
|
(serve
|
||||||
#:port port #:listen-ip #f
|
#:port port #:listen-ip #f
|
||||||
#:tcp@ (let ()
|
#:tcp@ tcp@
|
||||||
(define-unit-binding ssl-tcp@
|
|
||||||
(make-ssl-tcp@ (build-path server-dir "server-cert.pem")
|
|
||||||
(build-path server-dir "private-key.pem")
|
|
||||||
#f #f #f #f #f)
|
|
||||||
(import) (export tcp^))
|
|
||||||
ssl-tcp@)
|
|
||||||
#:dispatch
|
#:dispatch
|
||||||
(sequencer:make
|
(sequencer:make
|
||||||
(and log-file (log:make #:format (log:log-format->format 'apache-default)
|
(and log-file (log:make #:format (log:log-format->format 'apache-default)
|
||||||
#:log-path log-file))
|
#:log-path log-file))
|
||||||
(dispatch/servlet
|
(let ([init-path (make-parameter "/")])
|
||||||
dispatcher
|
(dispatch/servlet
|
||||||
#:regexp #rx""
|
(lambda (req)
|
||||||
#:namespace '(handin-server/private/md5
|
(init-path (url->string (request-uri req)))
|
||||||
handin-server/private/logger
|
(dispatcher req))
|
||||||
handin-server/private/config
|
#:regexp #rx"^/(?:/|$)"
|
||||||
handin-server/private/hooker
|
#:namespace namespace
|
||||||
handin-server/private/reloadable)
|
#:current-directory server-dir
|
||||||
#:current-directory server-dir
|
#:manager (make-threshold-LRU-manager
|
||||||
#:manager (make-threshold-LRU-manager
|
(send-error "Your session has expired" init-path)
|
||||||
(send-error "Your session has expired") (* 12 1024 1024)))
|
(* 12 1024 1024))))
|
||||||
(files:make
|
(files:make
|
||||||
#:url->path (fsmap:make-url->path (build-path server-dir "htdocs")))
|
#:url->path (fsmap:make-url->path (build-path server-dir "htdocs")))
|
||||||
(lift:make (send-error "File not found")))))
|
(lift:make (send-error "File not found" (lambda () "/"))))))
|
||||||
|
|
|
@ -259,5 +259,10 @@
|
||||||
(log-line "*** starting web server")
|
(log-line "*** starting web server")
|
||||||
(parameterize ([error-print-context-length 0])
|
(parameterize ([error-print-context-length 0])
|
||||||
(run-servlet dispatcher p server-dir
|
(run-servlet dispatcher p server-dir
|
||||||
|
#:namespace '(handin-server/private/md5
|
||||||
|
handin-server/private/logger
|
||||||
|
handin-server/private/config
|
||||||
|
handin-server/private/hooker
|
||||||
|
handin-server/private/reloadable)
|
||||||
#:log-file (get-conf 'web-log-file))))]
|
#:log-file (get-conf 'web-log-file))))]
|
||||||
[else void]))
|
[else void]))
|
||||||
|
|
Loading…
Reference in New Issue
Block a user