logging added.

This commit is contained in:
2026-08-03 14:11:55 +02:00
parent f51729308c
commit cffedd6dbf
6 changed files with 107 additions and 27 deletions
+21 -5
View File
@@ -7,6 +7,7 @@
;; which media renderers commonly use for probing and seeking.
(require net/url
simple-log
racket/async-channel
racket/file
racket/path
@@ -19,6 +20,8 @@
racket-mimetypes
"didl-lite.rkt")
(sl-def-log upnp-file-server)
(provide start-media-file-server
media-file-server?
media-file-server-url
@@ -156,6 +159,7 @@
listen-ip))
(let-values ([(base-url base-path)
(normalize-base-url 'start-media-file-server url)])
(info-upnp-file-server "Starting media file server url=~a listen-ip=~a" (url->string base-url) (or listen-ip "all interfaces"))
(let* ([publications (make-hash)]
[mime-types (make-hash)]
[lock (make-semaphore 1)]
@@ -165,14 +169,19 @@
(format "racket-upnp-missing-~a" (gensym)))]
[url->path
(lambda (request-url)
(let ([path
(let ([request-path (url-path-string request-url)])
(dbg-upnp-file-server "Resolving media request path=~a" request-path)
(let ([path
(call-with-semaphore
lock
(lambda ()
(hash-ref publications
(url-path-string request-url)
request-path
missing-path)))])
(values path '())))]
(if (equal? path missing-path)
(warn-upnp-file-server "Media request not published path=~a" request-path)
(dbg-upnp-file-server "Media request path=~a maps to file=~a" request-path path))
(values path '()))))]
[path->mime-type
(lambda (path)
(call-with-semaphore
@@ -189,7 +198,8 @@
#:path->headers dlna-response-headers)]
[not-found-dispatcher
(dispatch/servlet
(lambda (_request)
(lambda (request)
(warn-upnp-file-server "Returning 404 for request URI ~a" (url->string (request-uri request)))
(response/full
404
#f
@@ -210,8 +220,10 @@
#:port (url-effective-port base-url))]
[result (sync confirmation)])
(when (exn? result)
(err-upnp-file-server "Could not start media file server: ~a" (exn-message result))
(stop)
(raise result))
(info-upnp-file-server "Media file server started at ~a" (url->string base-url))
(make-media-file-server
base-url
base-path
@@ -265,7 +277,9 @@
'media-file-server-publish!
mime-type
path))))
(url->string publication-url))))
(let ([published-url (url->string publication-url)])
(info-upnp-file-server "Published file=~a url=~a mime-type=~a" path published-url (bytes->string/utf-8 (normalize-mime-type 'media-file-server-publish! mime-type path)))
published-url))))
(define (media-file-server-didl-lite server url
#:title [title #f]
@@ -328,6 +342,7 @@
#:parent-id parent-id))))
(define (media-file-server-unpublish! server url)
(dbg-upnp-file-server "Unpublishing URL ~a" url)
(check-media-file-server 'media-file-server-unpublish! server)
(let-values ([(_publication-url publication-path)
(resolve-publication-url
@@ -354,5 +369,6 @@
(hash-clear! (media-file-server-publications server))
(media-file-server-stop server)))))])
(when stop
(info-upnp-file-server "Stopping media file server at ~a" (media-file-server-url server))
(stop))
(void)))