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