6076e4fa439a93c9f821e10c02fa4c4f732441ca
[khome.git] / home / bin / websrv
1 #! /usr/bin/env racket
2 #lang racket
3 ;;; vim:ft=racket:
4
5 (require (prefix-in env: web-server/servlet-env)
6 (prefix-in log: web-server/dispatchers/dispatch-log)
7 (prefix-in res: web-server/configuration/responders)
8 (prefix-in xpr: web-server/http/xexpr))
9
10 ;; TODO SSL
11
12 (module+ main
13 (let* ([program (path->string (find-system-path 'run-file))]
14 [log-file (string-append program ".log")]
15 [listen-addr "0.0.0.0"]
16 [listen-port 8000]
17 [paths-to-serve '()]
18 [browser? #f])
19 (command-line
20 #:program program
21 #:once-each
22 [("-b" "--browser")
23 "Launch web browser."
24 (set! browser? #t)]
25 [("-a" "--addr")
26 ip-addr "Listen address."
27 (set! listen-addr ip-addr)]
28 [("-p" "--port")
29 port-number "Listen port."
30 (set! listen-port port-number)]
31 [("-l" "--log")
32 file "Log file."
33 (set! log-file file)]
34 #:args (path . paths)
35 (set! paths-to-serve (cons path paths)))
36 (define (custom-dispatcher _)
37 (xpr:response/xexpr
38 '(html
39 (head)
40 (body "if you're reading this - server configuration is wrong."))))
41 (env:serve/servlet
42 custom-dispatcher
43 #:listen-ip listen-addr
44 #:port listen-port
45 #:launch-browser? browser?
46 #:extra-files-paths paths-to-serve
47 #:log-file log-file
48 #:log-format log:paren-format
49 #:servlet-path ""
50 ;#:servlet-regexp #rx"" ; <-- causes / to be routed to custom-dispatcher.
51 )))
This page took 0.038738 seconds and 3 git commands to generate.