Mercurial Hosting > luan
diff src/luan/modules/http/Server.luan @ 1136:d30d400fd43d
add http/jetty
author | Franklin Schmidt <fschmidt@gmail.com> |
---|---|
date | Mon, 29 Jan 2018 17:50:49 -0700 |
parents | 1fcf5c25b3bd |
children | 3a0f58d09ee7 |
line wrap: on
line diff
--- a/src/luan/modules/http/Server.luan Sun Jan 28 21:36:58 2018 -0700 +++ b/src/luan/modules/http/Server.luan Mon Jan 29 17:50:49 2018 -0700 @@ -1,119 +1,2 @@ -local Luan = require "luan:Luan.luan" -local error = Luan.error -local String = require "luan:String.luan" -local gsub = String.gsub or error() -local matches = String.matches or error() -local Io = require "luan:Io.luan" -local Package = require "luan:Package.luan" -local Rpc = require "luan:Rpc.luan" -local Thread = require "luan:Thread.luan" -local Http = require "luan:http/Http.luan" -require "luan:logging/init.luan" -- initialize logging -local Logging = require "luan:logging/Logging.luan" -local logger = Logging.logger "http/Server" - -java() -local TimeZone = require "java:java.util.TimeZone" -local JavaServer = require "java:org.eclipse.jetty.server.Server" -local NCSARequestLog = require "java:org.eclipse.jetty.server.NCSARequestLog" -local DefaultHandler = require "java:org.eclipse.jetty.server.handler.DefaultHandler" -local HandlerList = require "java:org.eclipse.jetty.server.handler.HandlerList" -local HandlerCollection = require "java:org.eclipse.jetty.server.handler.HandlerCollection" -local ResourceHandler = require "java:org.eclipse.jetty.server.handler.ResourceHandler" -local RequestLogHandler = require "java:org.eclipse.jetty.server.handler.RequestLogHandler" -local ContextHandler = require "java:org.eclipse.jetty.server.handler.ContextHandler" -local GzipHandler = require "java:org.eclipse.jetty.server.handler.GzipHandler" -local HandlerWrapper = require "java:org.eclipse.jetty.server.handler.HandlerWrapper" -local SessionHandler = require "java:org.eclipse.jetty.server.session.SessionHandler" -local AuthenticationHandler = require "java:luan.modules.http.AuthenticationHandler" -local LuanHandler = require "java:luan.modules.http.LuanHandler" -local NotFound = require "java:luan.modules.http.NotFound" - -local Server = {} - -Server.port = 8080 - -Server.welcome_file = "index.html" - - -Server.authentication_handler = AuthenticationHandler.new("/private/") - -Server.luan_handler = LuanHandler.new() - -Server.resource_handler = ResourceHandler.new() -Server.resource_handler.setDirectoriesListed(true) - -Server.handlers = HandlerList.new() -Server.handlers.setHandlers { Server.authentication_handler, Server.luan_handler, Server.resource_handler } - -function Server.add_folder(context,dir) - local rh = ResourceHandler.new() - rh.setResourceBase(dir) - rh.setDirectoriesListed(true) - local ch = ContextHandler.new(context) - ch.setHandler(rh) - Server.handlers.addHandler(ch) - return rh -end - -Server.handler_wrapper = HandlerWrapper.new() -Server.handler_wrapper.setHandler(Server.handlers) - -function Server.zip() - local h = GzipHandler.new() - h.setHandler(Server.handler_wrapper.getHandler()) - Server.handler_wrapper.setHandler(h) -end - -Server.log = NCSARequestLog.new() -Server.log.setExtended(false) -Server.log.setLogTimeZone(TimeZone.getDefault().getID()) -Server.log_handler = RequestLogHandler.new() -Server.log_handler.setRequestLog(Server.log) - -function Server.set_log_file(file_name) - Server.log.setFilename(file_name) -end - -local hc = HandlerCollection.new() -hc.setHandlers { SessionHandler.new(), Server.handler_wrapper, DefaultHandler.new(), Server.log_handler } - - -function Server.init(dir) - dir = gsub(dir,"/$","") -- remove trailing '/' if any - Http.dir = dir - function Io.schemes.site(path) - return Io.uri( dir..path ) - end - Server.authentication_handler.setPassword(Io.password) - local base = dir - if matches(base,"^classpath:") then - base = dir.."#"..Server.welcome_file.."#"..Server.welcome_file..".luan" - end - Server.resource_handler.setResourceBase(Io.uri(base).to_string()) - Server.resource_handler.setWelcomeFiles {Server.welcome_file} - Server.luan_handler.setWelcomeFile(Server.welcome_file) - Server.handlers.addHandler(NotFound.new(Server.luan_handler)) - Server.server = JavaServer.new(Server.port) - Server.server.setHandler(hc) -end - -function Server.start() - LuanHandler.start(Server.server) -end - -function Server.start_rpc() - function Rpc.functions.call(domain,fn_name,...) - return Server.luan_handler.call_rpc(fn_name,...) - end - - Thread.fork(Rpc.serve) -end - -function Server.serve(dir) - Server.init(dir) - Server.start_rpc() - Server.start() -end - -return Server +local Implementation = require "luan:http/Implementation.luan" +return require(Implementation.luan.."Server.luan")