Mercurial Hosting > luan
comparison src/luan/modules/http/Server.luan @ 1175:d6d0bd05ad8c
exit on bind conflict, serve "127.0.0.1" for serve_for_nginx
author | Franklin Schmidt <fschmidt@gmail.com> |
---|---|
date | Mon, 12 Feb 2018 14:55:28 -0700 |
parents | bdbd1d12c1f2 |
children | 79b1e9ffd0c0 |
comparison
equal
deleted
inserted
replaced
1174:bdf27aa2a65c | 1175:d6d0bd05ad8c |
---|---|
2 local error = Luan.error | 2 local error = Luan.error |
3 local String = require "luan:String.luan" | 3 local String = require "luan:String.luan" |
4 local gsub = String.gsub or error() | 4 local gsub = String.gsub or error() |
5 local match = String.match or error() | 5 local match = String.match or error() |
6 local matches = String.matches or error() | 6 local matches = String.matches or error() |
7 local try = Luan.try or error() | |
7 local Io = require "luan:Io.luan" | 8 local Io = require "luan:Io.luan" |
8 local Package = require "luan:Package.luan" | 9 local Package = require "luan:Package.luan" |
9 local Rpc = require "luan:Rpc.luan" | 10 local Rpc = require "luan:Rpc.luan" |
10 local Thread = require "luan:Thread.luan" | 11 local Thread = require "luan:Thread.luan" |
11 local Http = require "luan:http/Http.luan" | 12 local Http = require "luan:http/Http.luan" |
22 local SafeHandler = require "java:luan.webserver.handlers.SafeHandler" | 23 local SafeHandler = require "java:luan.webserver.handlers.SafeHandler" |
23 local LogHandler = require "java:luan.webserver.handlers.LogHandler" | 24 local LogHandler = require "java:luan.webserver.handlers.LogHandler" |
24 local ListHandler = require "java:luan.webserver.handlers.ListHandler" | 25 local ListHandler = require "java:luan.webserver.handlers.ListHandler" |
25 local LuanHandler = require "java:luan.modules.http.LuanHandler" | 26 local LuanHandler = require "java:luan.modules.http.LuanHandler" |
26 local NotFound = require "java:luan.modules.http.NotFound" | 27 local NotFound = require "java:luan.modules.http.NotFound" |
28 local System = require "java:java.lang.System" | |
27 | 29 |
28 | 30 |
29 local Server = {} | 31 local Server = {} |
30 | 32 |
31 Server.port = 8080 | 33 Server.port = 8080 |
45 return Io.uri( dir_uri..path ) | 47 return Io.uri( dir_uri..path ) |
46 end | 48 end |
47 return dir_path | 49 return dir_path |
48 end | 50 end |
49 | 51 |
50 local function start(handler) | 52 local function start() |
53 try { | |
54 function() | |
55 LuanHandler.start(Server.server) | |
56 end | |
57 catch = function(e) | |
58 -- e.java.printStackTrace(); | |
59 Io.print_to(Io.stderr, e ) | |
60 System.exit(-1) | |
61 end | |
62 } | |
63 | |
51 function Rpc.functions.call(domain,fn_name,...) | 64 function Rpc.functions.call(domain,fn_name,...) |
52 return Server.luan_handler.call_rpc(fn_name,...) | 65 return Server.luan_handler.call_rpc(fn_name,...) |
53 end | 66 end |
54 Thread.fork(Rpc.serve) | 67 Thread.fork(Rpc.serve) |
55 | |
56 Server.server = JavaServer.new(Server.port,handler) | |
57 LuanHandler.start(Server.server) | |
58 end | 68 end |
59 | 69 |
60 function Server.serve(dir) | 70 function Server.serve(dir) |
61 local dir_path = init_dir(dir) | 71 local dir_path = init_dir(dir) |
62 local file_handler = FileHandler.new(dir_path) | 72 local file_handler = FileHandler.new(dir_path) |
67 handler = IndexHandler.new(handler) | 77 handler = IndexHandler.new(handler) |
68 handler = ListHandler.new( handler, not_found_hander, dir_handler ) | 78 handler = ListHandler.new( handler, not_found_hander, dir_handler ) |
69 handler = ContentTypeHandler.new(handler) | 79 handler = ContentTypeHandler.new(handler) |
70 handler = SafeHandler.new(handler) | 80 handler = SafeHandler.new(handler) |
71 handler = LogHandler.new(handler) | 81 handler = LogHandler.new(handler) |
72 start(handler) | 82 Server.server = JavaServer.new(Server.port,handler) |
83 start() | |
73 end | 84 end |
74 | 85 |
75 function Server.serve_for_nginx(dir) | 86 function Server.serve_for_nginx(dir) |
76 init_dir(dir) | 87 init_dir(dir) |
77 local luan_handler = LuanHandler.new() | 88 local luan_handler = LuanHandler.new() |
80 handler = IndexHandler.new(handler) | 91 handler = IndexHandler.new(handler) |
81 handler = ListHandler.new( handler, not_found_hander ) | 92 handler = ListHandler.new( handler, not_found_hander ) |
82 handler = ContentTypeHandler.new(handler) | 93 handler = ContentTypeHandler.new(handler) |
83 handler = SafeHandler.new(handler) | 94 handler = SafeHandler.new(handler) |
84 handler = LogHandler.new(handler) | 95 handler = LogHandler.new(handler) |
85 start(handler) | 96 Server.server = JavaServer.Local.new(Server.port,handler) |
97 start() | |
86 end | 98 end |
87 | 99 |
88 return Server | 100 return Server |