Mercurial Hosting > luan
comparison src/luan/modules/http/Server.luan @ 1088:bae2d0c2576c
change module naming convention
author | Franklin Schmidt <fschmidt@gmail.com> |
---|---|
date | Mon, 26 Dec 2016 22:29:36 -0700 |
parents | 0d884377e923 |
children | 1fcf5c25b3bd |
comparison
equal
deleted
inserted
replaced
1087:4aab4dd3ac9c | 1088:bae2d0c2576c |
---|---|
11 require "luan:logging/init.luan" -- initialize logging | 11 require "luan:logging/init.luan" -- initialize logging |
12 local Logging = require "luan:logging/Logging.luan" | 12 local Logging = require "luan:logging/Logging.luan" |
13 local logger = Logging.logger "http/Server" | 13 local logger = Logging.logger "http/Server" |
14 | 14 |
15 java() | 15 java() |
16 local Server = require "java:org.eclipse.jetty.server.Server" | 16 local JavaServer = require "java:org.eclipse.jetty.server.Server" |
17 local NCSARequestLog = require "java:org.eclipse.jetty.server.NCSARequestLog" | 17 local NCSARequestLog = require "java:org.eclipse.jetty.server.NCSARequestLog" |
18 local DefaultHandler = require "java:org.eclipse.jetty.server.handler.DefaultHandler" | 18 local DefaultHandler = require "java:org.eclipse.jetty.server.handler.DefaultHandler" |
19 local HandlerList = require "java:org.eclipse.jetty.server.handler.HandlerList" | 19 local HandlerList = require "java:org.eclipse.jetty.server.handler.HandlerList" |
20 local HandlerCollection = require "java:org.eclipse.jetty.server.handler.HandlerCollection" | 20 local HandlerCollection = require "java:org.eclipse.jetty.server.handler.HandlerCollection" |
21 local ResourceHandler = require "java:org.eclipse.jetty.server.handler.ResourceHandler" | 21 local ResourceHandler = require "java:org.eclipse.jetty.server.handler.ResourceHandler" |
26 local SessionHandler = require "java:org.eclipse.jetty.server.session.SessionHandler" | 26 local SessionHandler = require "java:org.eclipse.jetty.server.session.SessionHandler" |
27 local AuthenticationHandler = require "java:luan.modules.http.AuthenticationHandler" | 27 local AuthenticationHandler = require "java:luan.modules.http.AuthenticationHandler" |
28 local LuanHandler = require "java:luan.modules.http.LuanHandler" | 28 local LuanHandler = require "java:luan.modules.http.LuanHandler" |
29 local NotFound = require "java:luan.modules.http.NotFound" | 29 local NotFound = require "java:luan.modules.http.NotFound" |
30 | 30 |
31 local M = {} | 31 local Server = {} |
32 | 32 |
33 M.port = 8080 | 33 Server.port = 8080 |
34 | 34 |
35 M.welcome_file = "index.html" | 35 Server.welcome_file = "index.html" |
36 | 36 |
37 | 37 |
38 M.authentication_handler = AuthenticationHandler.new("/private/") | 38 Server.authentication_handler = AuthenticationHandler.new("/private/") |
39 | 39 |
40 M.luan_handler = LuanHandler.new() | 40 Server.luan_handler = LuanHandler.new() |
41 | 41 |
42 M.resource_handler = ResourceHandler.new() | 42 Server.resource_handler = ResourceHandler.new() |
43 M.resource_handler.setDirectoriesListed(true) | 43 Server.resource_handler.setDirectoriesListed(true) |
44 | 44 |
45 M.handlers = HandlerList.new() | 45 Server.handlers = HandlerList.new() |
46 M.handlers.setHandlers { M.authentication_handler, M.luan_handler, M.resource_handler } | 46 Server.handlers.setHandlers { Server.authentication_handler, Server.luan_handler, Server.resource_handler } |
47 | 47 |
48 function M.add_folder(context,dir) | 48 function Server.add_folder(context,dir) |
49 local rh = ResourceHandler.new() | 49 local rh = ResourceHandler.new() |
50 rh.setResourceBase(dir) | 50 rh.setResourceBase(dir) |
51 rh.setDirectoriesListed(true) | 51 rh.setDirectoriesListed(true) |
52 local ch = ContextHandler.new(context) | 52 local ch = ContextHandler.new(context) |
53 ch.setHandler(rh) | 53 ch.setHandler(rh) |
54 M.handlers.addHandler(ch) | 54 Server.handlers.addHandler(ch) |
55 return rh | 55 return rh |
56 end | 56 end |
57 | 57 |
58 M.handler_wrapper = HandlerWrapper.new() | 58 Server.handler_wrapper = HandlerWrapper.new() |
59 M.handler_wrapper.setHandler(M.handlers) | 59 Server.handler_wrapper.setHandler(Server.handlers) |
60 | 60 |
61 function M.zip() | 61 function Server.zip() |
62 local h = GzipHandler.new() | 62 local h = GzipHandler.new() |
63 h.setHandler(M.handler_wrapper.getHandler()) | 63 h.setHandler(Server.handler_wrapper.getHandler()) |
64 M.handler_wrapper.setHandler(h) | 64 Server.handler_wrapper.setHandler(h) |
65 end | 65 end |
66 | 66 |
67 M.log = NCSARequestLog.new() | 67 Server.log = NCSARequestLog.new() |
68 M.log.setExtended(false) | 68 Server.log.setExtended(false) |
69 M.log_handler = RequestLogHandler.new() | 69 Server.log_handler = RequestLogHandler.new() |
70 M.log_handler.setRequestLog(M.log) | 70 Server.log_handler.setRequestLog(Server.log) |
71 | 71 |
72 function M.set_log_file(file_name) | 72 function Server.set_log_file(file_name) |
73 M.log.setFilename(file_name) | 73 Server.log.setFilename(file_name) |
74 end | 74 end |
75 | 75 |
76 local hc = HandlerCollection.new() | 76 local hc = HandlerCollection.new() |
77 hc.setHandlers { SessionHandler.new(), M.handler_wrapper, DefaultHandler.new(), M.log_handler } | 77 hc.setHandlers { SessionHandler.new(), Server.handler_wrapper, DefaultHandler.new(), Server.log_handler } |
78 | 78 |
79 | 79 |
80 function M.init(dir) | 80 function Server.init(dir) |
81 dir = gsub(dir,"/$","") -- remove trailing '/' if any | 81 dir = gsub(dir,"/$","") -- remove trailing '/' if any |
82 Http.dir = dir | 82 Http.dir = dir |
83 function Io.schemes.site(path) | 83 function Io.schemes.site(path) |
84 return Io.uri( dir..path ) | 84 return Io.uri( dir..path ) |
85 end | 85 end |
86 M.authentication_handler.setPassword(Io.password) | 86 Server.authentication_handler.setPassword(Io.password) |
87 local base = dir | 87 local base = dir |
88 if matches(base,"^classpath:") then | 88 if matches(base,"^classpath:") then |
89 base = dir.."#"..M.welcome_file.."#"..M.welcome_file..".luan" | 89 base = dir.."#"..Server.welcome_file.."#"..Server.welcome_file..".luan" |
90 end | 90 end |
91 M.resource_handler.setResourceBase(Io.uri(base).to_string()) | 91 Server.resource_handler.setResourceBase(Io.uri(base).to_string()) |
92 M.resource_handler.setWelcomeFiles {M.welcome_file} | 92 Server.resource_handler.setWelcomeFiles {Server.welcome_file} |
93 M.luan_handler.setWelcomeFile(M.welcome_file) | 93 Server.luan_handler.setWelcomeFile(Server.welcome_file) |
94 M.handlers.addHandler(NotFound.new(M.luan_handler)) | 94 Server.handlers.addHandler(NotFound.new(Server.luan_handler)) |
95 M.server = Server.new(M.port) | 95 Server.server = JavaServer.new(Server.port) |
96 M.server.setHandler(hc) | 96 Server.server.setHandler(hc) |
97 end | 97 end |
98 | 98 |
99 function M.start() | 99 function Server.start() |
100 LuanHandler.start(M.server) | 100 LuanHandler.start(Server.server) |
101 end | 101 end |
102 | 102 |
103 function M.start_rpc() | 103 function Server.start_rpc() |
104 function Rpc.functions.call(domain,fn_name,...) | 104 function Rpc.functions.call(domain,fn_name,...) |
105 return M.luan_handler.call_rpc(fn_name,...) | 105 return Server.luan_handler.call_rpc(fn_name,...) |
106 end | 106 end |
107 | 107 |
108 Thread.fork(Rpc.serve) | 108 Thread.fork(Rpc.serve) |
109 end | 109 end |
110 | 110 |
111 function M.serve(dir) | 111 function Server.serve(dir) |
112 M.init(dir) | 112 Server.init(dir) |
113 M.start_rpc() | 113 Server.start_rpc() |
114 M.start() | 114 Server.start() |
115 end | 115 end |
116 | 116 |
117 return M | 117 return Server |