Mercurial Hosting > luan
annotate 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 |
rev | line source |
---|---|
743
2c41f2aec92f
improve Rpc and implement rpc call for local webserver
Franklin Schmidt <fschmidt@gmail.com>
parents:
712
diff
changeset
|
1 local Luan = require "luan:Luan.luan" |
2c41f2aec92f
improve Rpc and implement rpc call for local webserver
Franklin Schmidt <fschmidt@gmail.com>
parents:
712
diff
changeset
|
2 local error = Luan.error |
693
ca169567ce07
module URIs must now include ".luan"
Franklin Schmidt <fschmidt@gmail.com>
parents:
629
diff
changeset
|
3 local String = require "luan:String.luan" |
743
2c41f2aec92f
improve Rpc and implement rpc call for local webserver
Franklin Schmidt <fschmidt@gmail.com>
parents:
712
diff
changeset
|
4 local gsub = String.gsub or error() |
2c41f2aec92f
improve Rpc and implement rpc call for local webserver
Franklin Schmidt <fschmidt@gmail.com>
parents:
712
diff
changeset
|
5 local matches = String.matches or error() |
693
ca169567ce07
module URIs must now include ".luan"
Franklin Schmidt <fschmidt@gmail.com>
parents:
629
diff
changeset
|
6 local Io = require "luan:Io.luan" |
ca169567ce07
module URIs must now include ".luan"
Franklin Schmidt <fschmidt@gmail.com>
parents:
629
diff
changeset
|
7 local Package = require "luan:Package.luan" |
743
2c41f2aec92f
improve Rpc and implement rpc call for local webserver
Franklin Schmidt <fschmidt@gmail.com>
parents:
712
diff
changeset
|
8 local Rpc = require "luan:Rpc.luan" |
2c41f2aec92f
improve Rpc and implement rpc call for local webserver
Franklin Schmidt <fschmidt@gmail.com>
parents:
712
diff
changeset
|
9 local Thread = require "luan:Thread.luan" |
693
ca169567ce07
module URIs must now include ".luan"
Franklin Schmidt <fschmidt@gmail.com>
parents:
629
diff
changeset
|
10 local Http = require "luan:http/Http.luan" |
ca169567ce07
module URIs must now include ".luan"
Franklin Schmidt <fschmidt@gmail.com>
parents:
629
diff
changeset
|
11 require "luan:logging/init.luan" -- initialize logging |
743
2c41f2aec92f
improve Rpc and implement rpc call for local webserver
Franklin Schmidt <fschmidt@gmail.com>
parents:
712
diff
changeset
|
12 local Logging = require "luan:logging/Logging.luan" |
2c41f2aec92f
improve Rpc and implement rpc call for local webserver
Franklin Schmidt <fschmidt@gmail.com>
parents:
712
diff
changeset
|
13 local logger = Logging.logger "http/Server" |
174
609c5b3118db
add Web_server.luan
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff
changeset
|
14 |
321
7f7708e8fdd4
remove import statement
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
320
diff
changeset
|
15 java() |
1103
1fcf5c25b3bd
fix web logging timezone
Franklin Schmidt <fschmidt@gmail.com>
parents:
1088
diff
changeset
|
16 local TimeZone = require "java:java.util.TimeZone" |
1088
bae2d0c2576c
change module naming convention
Franklin Schmidt <fschmidt@gmail.com>
parents:
1080
diff
changeset
|
17 local JavaServer = require "java:org.eclipse.jetty.server.Server" |
321
7f7708e8fdd4
remove import statement
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
320
diff
changeset
|
18 local NCSARequestLog = require "java:org.eclipse.jetty.server.NCSARequestLog" |
7f7708e8fdd4
remove import statement
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
320
diff
changeset
|
19 local DefaultHandler = require "java:org.eclipse.jetty.server.handler.DefaultHandler" |
7f7708e8fdd4
remove import statement
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
320
diff
changeset
|
20 local HandlerList = require "java:org.eclipse.jetty.server.handler.HandlerList" |
7f7708e8fdd4
remove import statement
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
320
diff
changeset
|
21 local HandlerCollection = require "java:org.eclipse.jetty.server.handler.HandlerCollection" |
7f7708e8fdd4
remove import statement
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
320
diff
changeset
|
22 local ResourceHandler = require "java:org.eclipse.jetty.server.handler.ResourceHandler" |
7f7708e8fdd4
remove import statement
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
320
diff
changeset
|
23 local RequestLogHandler = require "java:org.eclipse.jetty.server.handler.RequestLogHandler" |
7f7708e8fdd4
remove import statement
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
320
diff
changeset
|
24 local ContextHandler = require "java:org.eclipse.jetty.server.handler.ContextHandler" |
7f7708e8fdd4
remove import statement
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
320
diff
changeset
|
25 local GzipHandler = require "java:org.eclipse.jetty.server.handler.GzipHandler" |
7f7708e8fdd4
remove import statement
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
320
diff
changeset
|
26 local HandlerWrapper = require "java:org.eclipse.jetty.server.handler.HandlerWrapper" |
7f7708e8fdd4
remove import statement
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
320
diff
changeset
|
27 local SessionHandler = require "java:org.eclipse.jetty.server.session.SessionHandler" |
1136 | 28 local AuthenticationHandler = require "java:luan.modules.http.jetty.AuthenticationHandler" |
29 local LuanHandler = require "java:luan.modules.http.jetty.LuanHandler" | |
30 local NotFound = require "java:luan.modules.http.jetty.NotFound" | |
174
609c5b3118db
add Web_server.luan
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff
changeset
|
31 |
1088
bae2d0c2576c
change module naming convention
Franklin Schmidt <fschmidt@gmail.com>
parents:
1080
diff
changeset
|
32 local Server = {} |
174
609c5b3118db
add Web_server.luan
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff
changeset
|
33 |
1088
bae2d0c2576c
change module naming convention
Franklin Schmidt <fschmidt@gmail.com>
parents:
1080
diff
changeset
|
34 Server.port = 8080 |
174
609c5b3118db
add Web_server.luan
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff
changeset
|
35 |
1088
bae2d0c2576c
change module naming convention
Franklin Schmidt <fschmidt@gmail.com>
parents:
1080
diff
changeset
|
36 Server.welcome_file = "index.html" |
183
ed19d14360fa
add LuanHandler.setWelcomeFile()
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
182
diff
changeset
|
37 |
174
609c5b3118db
add Web_server.luan
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff
changeset
|
38 |
1088
bae2d0c2576c
change module naming convention
Franklin Schmidt <fschmidt@gmail.com>
parents:
1080
diff
changeset
|
39 Server.luan_handler = LuanHandler.new() |
175
bdbd4740121f
finish web server
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
174
diff
changeset
|
40 |
1088
bae2d0c2576c
change module naming convention
Franklin Schmidt <fschmidt@gmail.com>
parents:
1080
diff
changeset
|
41 Server.resource_handler = ResourceHandler.new() |
bae2d0c2576c
change module naming convention
Franklin Schmidt <fschmidt@gmail.com>
parents:
1080
diff
changeset
|
42 Server.resource_handler.setDirectoriesListed(true) |
181
5d2cb8c1f844
add web logging
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
175
diff
changeset
|
43 |
1088
bae2d0c2576c
change module naming convention
Franklin Schmidt <fschmidt@gmail.com>
parents:
1080
diff
changeset
|
44 Server.handlers = HandlerList.new() |
1149
1b7c20e20ca7
remove /private/ authentication
Franklin Schmidt <fschmidt@gmail.com>
parents:
1136
diff
changeset
|
45 Server.handlers.setHandlers { Server.luan_handler, Server.resource_handler } |
182
e6d6596a8bcc
improve Web_server
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
181
diff
changeset
|
46 |
1088
bae2d0c2576c
change module naming convention
Franklin Schmidt <fschmidt@gmail.com>
parents:
1080
diff
changeset
|
47 function Server.add_folder(context,dir) |
182
e6d6596a8bcc
improve Web_server
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
181
diff
changeset
|
48 local rh = ResourceHandler.new() |
e6d6596a8bcc
improve Web_server
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
181
diff
changeset
|
49 rh.setResourceBase(dir) |
207
5aafb5b9f70f
various
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
204
diff
changeset
|
50 rh.setDirectoriesListed(true) |
182
e6d6596a8bcc
improve Web_server
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
181
diff
changeset
|
51 local ch = ContextHandler.new(context) |
e6d6596a8bcc
improve Web_server
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
181
diff
changeset
|
52 ch.setHandler(rh) |
1088
bae2d0c2576c
change module naming convention
Franklin Schmidt <fschmidt@gmail.com>
parents:
1080
diff
changeset
|
53 Server.handlers.addHandler(ch) |
182
e6d6596a8bcc
improve Web_server
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
181
diff
changeset
|
54 return rh |
e6d6596a8bcc
improve Web_server
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
181
diff
changeset
|
55 end |
e6d6596a8bcc
improve Web_server
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
181
diff
changeset
|
56 |
1088
bae2d0c2576c
change module naming convention
Franklin Schmidt <fschmidt@gmail.com>
parents:
1080
diff
changeset
|
57 Server.handler_wrapper = HandlerWrapper.new() |
bae2d0c2576c
change module naming convention
Franklin Schmidt <fschmidt@gmail.com>
parents:
1080
diff
changeset
|
58 Server.handler_wrapper.setHandler(Server.handlers) |
182
e6d6596a8bcc
improve Web_server
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
181
diff
changeset
|
59 |
1088
bae2d0c2576c
change module naming convention
Franklin Schmidt <fschmidt@gmail.com>
parents:
1080
diff
changeset
|
60 function Server.zip() |
182
e6d6596a8bcc
improve Web_server
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
181
diff
changeset
|
61 local h = GzipHandler.new() |
1088
bae2d0c2576c
change module naming convention
Franklin Schmidt <fschmidt@gmail.com>
parents:
1080
diff
changeset
|
62 h.setHandler(Server.handler_wrapper.getHandler()) |
bae2d0c2576c
change module naming convention
Franklin Schmidt <fschmidt@gmail.com>
parents:
1080
diff
changeset
|
63 Server.handler_wrapper.setHandler(h) |
182
e6d6596a8bcc
improve Web_server
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
181
diff
changeset
|
64 end |
181
5d2cb8c1f844
add web logging
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
175
diff
changeset
|
65 |
1088
bae2d0c2576c
change module naming convention
Franklin Schmidt <fschmidt@gmail.com>
parents:
1080
diff
changeset
|
66 Server.log = NCSARequestLog.new() |
bae2d0c2576c
change module naming convention
Franklin Schmidt <fschmidt@gmail.com>
parents:
1080
diff
changeset
|
67 Server.log.setExtended(false) |
1103
1fcf5c25b3bd
fix web logging timezone
Franklin Schmidt <fschmidt@gmail.com>
parents:
1088
diff
changeset
|
68 Server.log.setLogTimeZone(TimeZone.getDefault().getID()) |
1088
bae2d0c2576c
change module naming convention
Franklin Schmidt <fschmidt@gmail.com>
parents:
1080
diff
changeset
|
69 Server.log_handler = RequestLogHandler.new() |
bae2d0c2576c
change module naming convention
Franklin Schmidt <fschmidt@gmail.com>
parents:
1080
diff
changeset
|
70 Server.log_handler.setRequestLog(Server.log) |
181
5d2cb8c1f844
add web logging
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
175
diff
changeset
|
71 |
1088
bae2d0c2576c
change module naming convention
Franklin Schmidt <fschmidt@gmail.com>
parents:
1080
diff
changeset
|
72 function Server.set_log_file(file_name) |
bae2d0c2576c
change module naming convention
Franklin Schmidt <fschmidt@gmail.com>
parents:
1080
diff
changeset
|
73 Server.log.setFilename(file_name) |
207
5aafb5b9f70f
various
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
204
diff
changeset
|
74 end |
5aafb5b9f70f
various
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
204
diff
changeset
|
75 |
181
5d2cb8c1f844
add web logging
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
175
diff
changeset
|
76 local hc = HandlerCollection.new() |
1088
bae2d0c2576c
change module naming convention
Franklin Schmidt <fschmidt@gmail.com>
parents:
1080
diff
changeset
|
77 hc.setHandlers { SessionHandler.new(), Server.handler_wrapper, DefaultHandler.new(), Server.log_handler } |
250
2b6f51d7af40
add Web_server.config_server()
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
231
diff
changeset
|
78 |
174
609c5b3118db
add Web_server.luan
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff
changeset
|
79 |
1088
bae2d0c2576c
change module naming convention
Franklin Schmidt <fschmidt@gmail.com>
parents:
1080
diff
changeset
|
80 function Server.init(dir) |
539
473e456444ff
Remove object-oriented primitive methods for string and binary
Franklin Schmidt <fschmidt@gmail.com>
parents:
532
diff
changeset
|
81 dir = gsub(dir,"/$","") -- remove trailing '/' if any |
204
cee6581b6f56
minor
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
198
diff
changeset
|
82 Http.dir = dir |
693
ca169567ce07
module URIs must now include ".luan"
Franklin Schmidt <fschmidt@gmail.com>
parents:
629
diff
changeset
|
83 function Io.schemes.site(path) |
ca169567ce07
module URIs must now include ".luan"
Franklin Schmidt <fschmidt@gmail.com>
parents:
629
diff
changeset
|
84 return Io.uri( dir..path ) |
264
9e0d4452e649
implement URL style module names
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
260
diff
changeset
|
85 end |
219
f9e3e64132e1
improve rev 217, allow "java:" paths to include sample files to check in jars
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
216
diff
changeset
|
86 local base = dir |
629
35dde32c02ab
change String.matches()
Franklin Schmidt <fschmidt@gmail.com>
parents:
539
diff
changeset
|
87 if matches(base,"^classpath:") then |
1088
bae2d0c2576c
change module naming convention
Franklin Schmidt <fschmidt@gmail.com>
parents:
1080
diff
changeset
|
88 base = dir.."#"..Server.welcome_file.."#"..Server.welcome_file..".luan" |
219
f9e3e64132e1
improve rev 217, allow "java:" paths to include sample files to check in jars
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
216
diff
changeset
|
89 end |
1088
bae2d0c2576c
change module naming convention
Franklin Schmidt <fschmidt@gmail.com>
parents:
1080
diff
changeset
|
90 Server.resource_handler.setResourceBase(Io.uri(base).to_string()) |
bae2d0c2576c
change module naming convention
Franklin Schmidt <fschmidt@gmail.com>
parents:
1080
diff
changeset
|
91 Server.resource_handler.setWelcomeFiles {Server.welcome_file} |
bae2d0c2576c
change module naming convention
Franklin Schmidt <fschmidt@gmail.com>
parents:
1080
diff
changeset
|
92 Server.luan_handler.setWelcomeFile(Server.welcome_file) |
bae2d0c2576c
change module naming convention
Franklin Schmidt <fschmidt@gmail.com>
parents:
1080
diff
changeset
|
93 Server.handlers.addHandler(NotFound.new(Server.luan_handler)) |
bae2d0c2576c
change module naming convention
Franklin Schmidt <fschmidt@gmail.com>
parents:
1080
diff
changeset
|
94 Server.server = JavaServer.new(Server.port) |
bae2d0c2576c
change module naming convention
Franklin Schmidt <fschmidt@gmail.com>
parents:
1080
diff
changeset
|
95 Server.server.setHandler(hc) |
303
fdb4bd391c28
add lucene close();
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
300
diff
changeset
|
96 end |
fdb4bd391c28
add lucene close();
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
300
diff
changeset
|
97 |
1088
bae2d0c2576c
change module naming convention
Franklin Schmidt <fschmidt@gmail.com>
parents:
1080
diff
changeset
|
98 function Server.start() |
bae2d0c2576c
change module naming convention
Franklin Schmidt <fschmidt@gmail.com>
parents:
1080
diff
changeset
|
99 LuanHandler.start(Server.server) |
293
a50e88d3547c
add Web_server.init();
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
282
diff
changeset
|
100 end |
a50e88d3547c
add Web_server.init();
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
282
diff
changeset
|
101 |
1088
bae2d0c2576c
change module naming convention
Franklin Schmidt <fschmidt@gmail.com>
parents:
1080
diff
changeset
|
102 function Server.start_rpc() |
743
2c41f2aec92f
improve Rpc and implement rpc call for local webserver
Franklin Schmidt <fschmidt@gmail.com>
parents:
712
diff
changeset
|
103 function Rpc.functions.call(domain,fn_name,...) |
1088
bae2d0c2576c
change module naming convention
Franklin Schmidt <fschmidt@gmail.com>
parents:
1080
diff
changeset
|
104 return Server.luan_handler.call_rpc(fn_name,...) |
743
2c41f2aec92f
improve Rpc and implement rpc call for local webserver
Franklin Schmidt <fschmidt@gmail.com>
parents:
712
diff
changeset
|
105 end |
2c41f2aec92f
improve Rpc and implement rpc call for local webserver
Franklin Schmidt <fschmidt@gmail.com>
parents:
712
diff
changeset
|
106 |
762
3f461f85243d
better rpc thread handling
Franklin Schmidt <fschmidt@gmail.com>
parents:
753
diff
changeset
|
107 Thread.fork(Rpc.serve) |
743
2c41f2aec92f
improve Rpc and implement rpc call for local webserver
Franklin Schmidt <fschmidt@gmail.com>
parents:
712
diff
changeset
|
108 end |
2c41f2aec92f
improve Rpc and implement rpc call for local webserver
Franklin Schmidt <fschmidt@gmail.com>
parents:
712
diff
changeset
|
109 |
1088
bae2d0c2576c
change module naming convention
Franklin Schmidt <fschmidt@gmail.com>
parents:
1080
diff
changeset
|
110 function Server.serve(dir) |
bae2d0c2576c
change module naming convention
Franklin Schmidt <fschmidt@gmail.com>
parents:
1080
diff
changeset
|
111 Server.init(dir) |
bae2d0c2576c
change module naming convention
Franklin Schmidt <fschmidt@gmail.com>
parents:
1080
diff
changeset
|
112 Server.start_rpc() |
bae2d0c2576c
change module naming convention
Franklin Schmidt <fschmidt@gmail.com>
parents:
1080
diff
changeset
|
113 Server.start() |
174
609c5b3118db
add Web_server.luan
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff
changeset
|
114 end |
503 | 115 |
1088
bae2d0c2576c
change module naming convention
Franklin Schmidt <fschmidt@gmail.com>
parents:
1080
diff
changeset
|
116 return Server |