Mercurial Hosting > luan
comparison http/src/luan/modules/web/Server.luan @ 493:1d082a0812e0
move web to http
author | Franklin Schmidt <fschmidt@gmail.com> |
---|---|
date | Fri, 15 May 2015 17:29:59 -0600 |
parents | web/src/luan/modules/web/Server.luan@55a86fc4701b |
children |
comparison
equal
deleted
inserted
replaced
492:b36cc406d3d2 | 493:1d082a0812e0 |
---|---|
1 require "luan:String" | |
2 local Io = require "luan:Io" | |
3 local Package = require "luan:Package" | |
4 local Http = require "luan:web/Http" | |
5 require "luan:logging/Logging" -- initialize logging | |
6 | |
7 java() | |
8 local Server = require "java:org.eclipse.jetty.server.Server" | |
9 local NCSARequestLog = require "java:org.eclipse.jetty.server.NCSARequestLog" | |
10 local DefaultHandler = require "java:org.eclipse.jetty.server.handler.DefaultHandler" | |
11 local HandlerList = require "java:org.eclipse.jetty.server.handler.HandlerList" | |
12 local HandlerCollection = require "java:org.eclipse.jetty.server.handler.HandlerCollection" | |
13 local ResourceHandler = require "java:org.eclipse.jetty.server.handler.ResourceHandler" | |
14 local RequestLogHandler = require "java:org.eclipse.jetty.server.handler.RequestLogHandler" | |
15 local ContextHandler = require "java:org.eclipse.jetty.server.handler.ContextHandler" | |
16 local GzipHandler = require "java:org.eclipse.jetty.server.handler.GzipHandler" | |
17 local HandlerWrapper = require "java:org.eclipse.jetty.server.handler.HandlerWrapper" | |
18 local SessionHandler = require "java:org.eclipse.jetty.server.session.SessionHandler" | |
19 local AuthenticationHandler = require "java:luan.modules.web.AuthenticationHandler" | |
20 local LuanHandler = require "java:luan.modules.web.LuanHandler" | |
21 local NotFound = require "java:luan.modules.web.NotFound" | |
22 | |
23 | |
24 port = 8080 | |
25 | |
26 private_password = "password" | |
27 | |
28 welcome_file = "index.html" | |
29 | |
30 | |
31 authentication_handler = AuthenticationHandler.new("/private/") | |
32 | |
33 luan_handler = LuanHandler.new() | |
34 | |
35 resource_handler = ResourceHandler.new() | |
36 resource_handler.setDirectoriesListed(true) | |
37 | |
38 handlers = HandlerList.new() | |
39 handlers.setHandlers { authentication_handler, luan_handler, resource_handler } | |
40 | |
41 function add_folder(context,dir) | |
42 local rh = ResourceHandler.new() | |
43 rh.setResourceBase(dir) | |
44 rh.setDirectoriesListed(true) | |
45 local ch = ContextHandler.new(context) | |
46 ch.setHandler(rh) | |
47 handlers.addHandler(ch) | |
48 return rh | |
49 end | |
50 | |
51 handler_wrapper = HandlerWrapper.new() | |
52 handler_wrapper.setHandler(handlers) | |
53 | |
54 function zip() | |
55 local h = GzipHandler.new() | |
56 h.setHandler(handler_wrapper.getHandler()) | |
57 handler_wrapper.setHandler(h) | |
58 end | |
59 | |
60 log = NCSARequestLog.new() | |
61 log.setExtended(false) | |
62 log_handler = RequestLogHandler.new() | |
63 log_handler.setRequestLog(log) | |
64 | |
65 function set_log_file(file_name) | |
66 log.setFilename(file_name) | |
67 end | |
68 | |
69 local hc = HandlerCollection.new() | |
70 hc.setHandlers { SessionHandler.new(), handler_wrapper, DefaultHandler.new(), log_handler } | |
71 | |
72 | |
73 function init(dir) | |
74 dir = dir.gsub("/$","") -- remove trailing '/' if any | |
75 Http.dir = dir | |
76 function Io.schemes.site(path,add_extension) | |
77 return Io.uri( dir..path, add_extension ) | |
78 end | |
79 authentication_handler.setPassword(private_password) | |
80 local base = dir | |
81 if base.match("^classpath:") ~= nil then | |
82 base = dir.."#"..welcome_file.."#"..welcome_file..".luan" | |
83 end | |
84 resource_handler.setResourceBase(Io.uri(base).to_string()) | |
85 resource_handler.setWelcomeFiles {welcome_file} | |
86 luan_handler.setWelcomeFile(welcome_file) | |
87 handlers.addHandler(NotFound.new()) | |
88 server = Server.new(port) | |
89 server.setHandler(hc) | |
90 Package.load("site:/init") | |
91 end | |
92 | |
93 function start() | |
94 server.start() | |
95 end | |
96 | |
97 function serve(dir) | |
98 init(dir) | |
99 start() | |
100 end |