Mercurial Hosting > luan
diff src/luan/host/WebHandler.java @ 1608:f7e3adae4907
add BasicAuthHandler
author | Franklin Schmidt <fschmidt@gmail.com> |
---|---|
date | Sat, 01 May 2021 19:52:56 -0600 |
parents | fa066aaa068c |
children | 07be5015159d |
line wrap: on
line diff
--- a/src/luan/host/WebHandler.java Fri Apr 30 20:23:28 2021 -0600 +++ b/src/luan/host/WebHandler.java Sat May 01 19:52:56 2021 -0600 @@ -17,6 +17,8 @@ import goodjava.webserver.handlers.FileHandler; import goodjava.webserver.handlers.DirHandler; import goodjava.webserver.handlers.HeadersHandler; +import goodjava.webserver.handlers.BasicAuthHandler; +import goodjava.webserver.handlers.RegexHandler; import luan.Luan; import luan.LuanException; import luan.LuanTable; @@ -61,7 +63,20 @@ } Luan luan = new Luan(); - initLuan(luan,dirStr,domain); + String password; + LuanLogger.startThreadLogging(luan); + try { + LuanFunction fn = Luan.loadClasspath(luan,"luan/host/init.luan"); + fn.call(luan,dirStr,domain); + LuanTable Io = (LuanTable)luan.require("luan:Io.luan"); + password = (String)Io.get(luan,"password"); + if( password==null ) throw new NullPointerException(); + } catch(LuanException e) { + throw new LuanRuntimeException(e); + } finally { + LuanLogger.endThreadLogging(); + } + security(luan,dirStr); LuanHandler luanHandler = new LuanHandler(luan,domain); FileHandler fileHandler = new FileHandler(dirStr+"/site/"); @@ -72,6 +87,8 @@ Handler notFoundHander = new NotFound(luanHandler); notFoundHander = new ContentTypeHandler(notFoundHander); handler = new ListHandler( handler, dirHandler, notFoundHander ); + Handler auth = new BasicAuthHandler(handler,"Private","admin",password); + handler = new RegexHandler("^/private/",auth,handler); handler = new HeadersHandler(handler); handler = new SafeHandler(handler); handler = new LogHandler(handler,LogHandler.dirLogger(new File(logDir),days30)); @@ -102,19 +119,6 @@ return handler.luanHandler.call_rpc(fnName,args); } - private static void initLuan(Luan luan,String dir,String domain) { - LuanLogger.startThreadLogging(luan); - try { - LuanFunction fn = Luan.loadClasspath(luan,"luan/host/init.luan"); - fn.call(luan,dir,domain); - } catch(LuanException e) { - throw new LuanRuntimeException(e); - } finally { - LuanLogger.endThreadLogging(); - } - security(luan,dir); - } - public static void removeHandler(String domain) { domainHandler.removeHandler(domain); }