| 
0
 | 
     1 local dir = "src"
 | 
| 
 | 
     2 local port = 8080
 | 
| 
 | 
     3 
 | 
| 
 | 
     4 
 | 
| 
 | 
     5 require "java"
 | 
| 
 | 
     6 local Luan = require "luan:Luan.luan"
 | 
| 
 | 
     7 local error = Luan.error
 | 
| 
 | 
     8 local ipairs = Luan.ipairs or error()
 | 
| 
 | 
     9 
 | 
| 
 | 
    10 
 | 
| 
 | 
    11 local log_to_console = false
 | 
| 
 | 
    12 for _, arg in ipairs{...} do
 | 
| 
 | 
    13 	if arg == "console" then
 | 
| 
 | 
    14 		log_to_console = true
 | 
| 
 | 
    15 	end
 | 
| 
 | 
    16 end
 | 
| 
 | 
    17 if not log_to_console then
 | 
| 
 | 
    18 	local FileWriter = require "java:java.io.FileWriter"
 | 
| 
 | 
    19 	local LuanLogger = require "java:luan.modules.logging.LuanLogger"
 | 
| 
 | 
    20 	local Layouts = require "java:goodjava.logger.Layouts"
 | 
| 
 | 
    21 	local DateLayout = require "java:goodjava.logger.DateLayout"
 | 
| 
 | 
    22 	local ListLayout = require "java:goodjava.logger.ListLayout"
 | 
| 
 | 
    23 	local Level = require "java:goodjava.logger.Level"
 | 
| 
 | 
    24 	local WriterAppender = require "java:goodjava.logger.WriterAppender"
 | 
| 
 | 
    25 	local LevelAppender = require "java:goodjava.logger.LevelAppender"
 | 
| 
 | 
    26 	local ListAppender = require "java:goodjava.logger.ListAppender"
 | 
| 
 | 
    27 
 | 
| 
 | 
    28 	local layout = ListLayout.new(DateLayout.new("yyyy-MM-dd HH:mm:ss,SSS")," ",Layouts.LEVEL_PADDED," ",Layouts.LOGGER," - ",Layouts.MESSAGE,"\n",Layouts.THROWABLE)
 | 
| 
 | 
    29 
 | 
| 
 | 
    30 	local function new_appender(file,level)
 | 
| 
 | 
    31 		local writer = FileWriter.new(file,true)
 | 
| 
 | 
    32 		local appender = WriterAppender.new(layout,writer)
 | 
| 
 | 
    33 		appender = LevelAppender.new(appender,level)
 | 
| 
 | 
    34 		return appender
 | 
| 
 | 
    35 	end
 | 
| 
 | 
    36 
 | 
| 
 | 
    37 	local err = new_appender("logs/luan_error.log",Level.ERROR)
 | 
| 
 | 
    38 	local warn = new_appender("logs/luan_warn.log",Level.WARN)
 | 
| 
 | 
    39 	local info = new_appender("logs/luan_info.log",Level.INFO)
 | 
| 
 | 
    40 	local appender = ListAppender.new(err,warn,info)
 | 
| 
 | 
    41 	LuanLogger.configure(appender)
 | 
| 
 | 
    42 end
 | 
| 
 | 
    43 
 | 
| 
 | 
    44 
 | 
| 
 | 
    45 local Server = require "luan:http/Server.luan"
 | 
| 
 | 
    46 local FileHandler = require "java:goodjava.webserver.handlers.FileHandler"
 | 
| 
 | 
    47 local LuanHandler = require "java:luan.modules.http.LuanHandler"
 | 
| 
 | 
    48 local ListHandler = require "java:goodjava.webserver.handlers.ListHandler"
 | 
| 
 | 
    49 local ContentTypeHandler = require "java:goodjava.webserver.handlers.ContentTypeHandler"
 | 
| 
 | 
    50 local IndexHandler = require "java:goodjava.webserver.handlers.IndexHandler"
 | 
| 
 | 
    51 local DirHandler = require "java:goodjava.webserver.handlers.DirHandler"
 | 
| 
 | 
    52 local NotFound = require "java:luan.modules.http.NotFound"
 | 
| 
 | 
    53 local HeadersHandler = require "java:goodjava.webserver.handlers.HeadersHandler"
 | 
| 
 | 
    54 local SafeHandler = require "java:goodjava.webserver.handlers.SafeHandler"
 | 
| 
 | 
    55 local JavaServer = require "java:goodjava.webserver.Server"
 | 
| 
 | 
    56 
 | 
| 
 | 
    57 Server.init_dir(dir)
 | 
| 
 | 
    58 local file_handler = FileHandler.new(dir)
 | 
| 
 | 
    59 local luan_handler = LuanHandler.new()
 | 
| 
 | 
    60 local handler = ListHandler.new( luan_handler, file_handler )
 | 
| 
 | 
    61 handler = ContentTypeHandler.new(handler)
 | 
| 
 | 
    62 handler = IndexHandler.new(handler)
 | 
| 
 | 
    63 local dir_handler = DirHandler.new(file_handler)
 | 
| 
 | 
    64 local not_found_hander = NotFound.new(luan_handler)
 | 
| 
 | 
    65 not_found_hander = ContentTypeHandler.new(not_found_hander)
 | 
| 
 | 
    66 handler = ListHandler.new( handler, dir_handler, not_found_hander )
 | 
| 
 | 
    67 handler = HeadersHandler.new(handler)
 | 
| 
 | 
    68 handler = SafeHandler.new(handler)
 | 
| 
 | 
    69 local server = JavaServer.new(port,handler)
 | 
| 
 | 
    70 Server.start(server)
 |