(ql:quickload :hunchentoot) (ql:quickload :cl-who) (defpackage :share-dir-http (:use :cl :hunchentoot :cl-who) (:export share-start share-stop)) (in-package :share-dir-http) (defparameter *server* nil) (defun share-start (folder port) (setf *server* (start (make-instance 'easy-acceptor :document-root (concatenate 'string folder "/") :port port))) (hunchentoot:define-easy-handler (root-index :uri "/") nil (with-html-output-to-string (out) (:style " body { margin: 128px auto; max-width: 650px; line-height: 1.6; font-size: 18px; text-align: center; color: #8c0606; background-color: #000; padding: 0 10px; } h1,h2,h3 { line-height:1.2; }") (:img :src "./share.png") (:h1 "Shared File List:") (:ul (loop for file in (directory (make-pathname :defaults (truename folder) :name :wild :type :wild)) do (let ((name (enough-namestring file (truename folder)))) (htm (:li (:a :href name (str name)))))))))) (defun share-stop () (hunchentoot:stop *server*))