Mercurial Hosting > luan
diff src/luan/host/WebHandler.java @ 1598:c78d6a4e2d9a
web logging
author | Franklin Schmidt <fschmidt@gmail.com> |
---|---|
date | Sun, 04 Apr 2021 15:09:51 -0600 |
parents | c922446f53aa |
children | f2a663a4ba9e |
line wrap: on
line diff
--- a/src/luan/host/WebHandler.java Fri Mar 26 20:20:21 2021 -0600 +++ b/src/luan/host/WebHandler.java Sun Apr 04 15:09:51 2021 -0600 @@ -9,6 +9,11 @@ import goodjava.webserver.Request; import goodjava.webserver.Response; import goodjava.webserver.handlers.DomainHandler; +import goodjava.webserver.handlers.IndexHandler; +import goodjava.webserver.handlers.ListHandler; +import goodjava.webserver.handlers.ContentTypeHandler; +import goodjava.webserver.handlers.SafeHandler; +import goodjava.webserver.handlers.LogHandler; import luan.Luan; import luan.LuanException; import luan.LuanTable; @@ -16,12 +21,27 @@ import luan.LuanClosure; import luan.LuanRuntimeException; import luan.modules.http.LuanHandler; +import luan.modules.http.NotFound; import luan.modules.logging.LuanLogger; public class WebHandler implements Handler { private static final Logger logger = LoggerFactory.getLogger(WebHandler.class); + private static final class MyHandler implements Handler { + private final Handler handler; + final LuanHandler luanHandler; + + MyHandler(Handler handler,LuanHandler luanHandler) { + this.handler = handler; + this.luanHandler = luanHandler; + } + + @Override public Response handle(Request request) { + return handler.handle(request); + } + } + private static final DomainHandler.Factory factory = new DomainHandler.Factory() { public Handler newHandler(String domain) { File dir = new File(sitesDir,domain); @@ -38,11 +58,22 @@ Luan luan = new Luan(); initLuan(luan,dirStr,domain); - return new LuanHandler(luan,domain); + LuanHandler luanHandler = new LuanHandler(luan,domain); + + Handler notFoundHander = new NotFound(luanHandler); + Handler handler = new IndexHandler(luanHandler); + handler = new ListHandler( handler, notFoundHander ); + handler = new ContentTypeHandler(handler); + handler = new SafeHandler(handler); + if( luanLogging ) + handler = new LogHandler(handler,LogHandler.dirLogger(new File(logDir+"2"))); + + return new MyHandler(handler,luanHandler); } }; public static String securityPassword = "password"; // change for security + public static boolean luanLogging = false; private static final DomainHandler domainHandler = new DomainHandler(factory); private static String sitesDir = null; @@ -60,8 +91,8 @@ } public static Object callSite(String domain,String fnName,Object... args) throws LuanException { - LuanHandler luanHandler = (LuanHandler)domainHandler.getHandler(domain); - return luanHandler.call_rpc(fnName,args); + MyHandler handler = (MyHandler)domainHandler.getHandler(domain); + return handler.luanHandler.call_rpc(fnName,args); } private static void initLuan(Luan luan,String dir,String domain) {