Mercurial Hosting > luan
view src/luan/modules/http/jetty/Server.luan @ 1149:1b7c20e20ca7
remove /private/ authentication
author | Franklin Schmidt <fschmidt@gmail.com> |
---|---|
date | Sun, 04 Feb 2018 17:23:20 -0700 |
parents | d30d400fd43d |
children |
line wrap: on
line source
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.jetty.AuthenticationHandler" local LuanHandler = require "java:luan.modules.http.jetty.LuanHandler" local NotFound = require "java:luan.modules.http.jetty.NotFound" local Server = {} Server.port = 8080 Server.welcome_file = "index.html" Server.luan_handler = LuanHandler.new() Server.resource_handler = ResourceHandler.new() Server.resource_handler.setDirectoriesListed(true) Server.handlers = HandlerList.new() Server.handlers.setHandlers { 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 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