45 lines
1.6 KiB
Scheme
45 lines
1.6 KiB
Scheme
(use-modules (model)
|
|
(views)
|
|
(safsaf)
|
|
(safsaf handler-wrappers csrf)
|
|
(safsaf handler-wrappers exceptions)
|
|
(safsaf handler-wrappers logging)
|
|
(safsaf handler-wrappers security-headers)
|
|
(safsaf handler-wrappers sessions)
|
|
(safsaf response-helpers)
|
|
(safsaf router))
|
|
|
|
(unless (file-exists? "static/style.css")
|
|
(format (current-error-port)
|
|
"error: run this from the examples/blog-site/ directory~%")
|
|
(exit 1))
|
|
|
|
;; Create a shared database thread pool.
|
|
(let* ((db-pool (make-db "/tmp/blog-site.db"))
|
|
|
|
;; Session manager — in production, use a proper secret.
|
|
(session-manager
|
|
(make-session-config "change-me-in-production"
|
|
#:cookie-name "blog-session"))
|
|
|
|
(all-routes
|
|
(wrap-routes
|
|
(list (make-blog-component db-pool session-manager)
|
|
(route-group '("static")
|
|
(route 'GET '(. path)
|
|
(make-static-handler
|
|
"./static"
|
|
#:cache-control '((max-age . 3600)))))
|
|
(route '* '* (lambda (request body-port)
|
|
(not-found-response))))
|
|
(make-exceptions-handler-wrapper #:dev? #t)
|
|
logging-handler-wrapper
|
|
security-headers-handler-wrapper
|
|
(make-session-handler-wrapper session-manager)
|
|
csrf-handler-wrapper))
|
|
|
|
(port 8082))
|
|
|
|
(format #t "Listening on http://localhost:~a~%" port)
|
|
(force-output)
|
|
(run-safsaf all-routes #:port port))
|