(ql:quickload '(hunchentoot cl-who lass)) (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 folder :port port)))) (defun share-stop () (hunchentoot:stop *server*)) (hunchentoot:define-easy-handler (root-index :uri "/") nil (with-html-output-to-string (out) (:style (str (lass:compile-and-write '(body :margin 128px auto :max-width 650px :line-height 1.6 :font-size 18px :text-align center :color (hex 8c0606) :background-color (hex 000) :padding 0 10px) '((:or h1 h2 h3) :line-height 1.2)))) (:img :src "./share.png") (:h1 "Shared File List:") (:ul (loop for file in (directory (make-pathname :name :wild :type :wild :defaults (hunchentoot:acceptor-document-root *server*))) for name = (if (or (pathname-name file) (pathname-type file)) (file-namestring file) (format NIL "~a/" (car (last (pathname-directory file))))) do (htm (:li (:a :href name (str name))))))))