diff serve.luan @ 0:dfc36e7ed22c

init
author Vadim Filimonov <fffilimonov@yandex.ru>
date Thu, 12 May 2022 13:51:59 +0400
parents
children
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/serve.luan	Thu May 12 13:51:59 2022 +0400
@@ -0,0 +1,70 @@
+local dir = "src"
+local port = 8080
+
+
+require "java"
+local Luan = require "luan:Luan.luan"
+local error = Luan.error
+local ipairs = Luan.ipairs or error()
+
+
+local log_to_console = false
+for _, arg in ipairs{...} do
+	if arg == "console" then
+		log_to_console = true
+	end
+end
+if not log_to_console then
+	local FileWriter = require "java:java.io.FileWriter"
+	local LuanLogger = require "java:luan.modules.logging.LuanLogger"
+	local Layouts = require "java:goodjava.logger.Layouts"
+	local DateLayout = require "java:goodjava.logger.DateLayout"
+	local ListLayout = require "java:goodjava.logger.ListLayout"
+	local Level = require "java:goodjava.logger.Level"
+	local WriterAppender = require "java:goodjava.logger.WriterAppender"
+	local LevelAppender = require "java:goodjava.logger.LevelAppender"
+	local ListAppender = require "java:goodjava.logger.ListAppender"
+
+	local layout = ListLayout.new(DateLayout.new("yyyy-MM-dd HH:mm:ss,SSS")," ",Layouts.LEVEL_PADDED," ",Layouts.LOGGER," - ",Layouts.MESSAGE,"\n",Layouts.THROWABLE)
+
+	local function new_appender(file,level)
+		local writer = FileWriter.new(file,true)
+		local appender = WriterAppender.new(layout,writer)
+		appender = LevelAppender.new(appender,level)
+		return appender
+	end
+
+	local err = new_appender("logs/luan_error.log",Level.ERROR)
+	local warn = new_appender("logs/luan_warn.log",Level.WARN)
+	local info = new_appender("logs/luan_info.log",Level.INFO)
+	local appender = ListAppender.new(err,warn,info)
+	LuanLogger.configure(appender)
+end
+
+
+local Server = require "luan:http/Server.luan"
+local FileHandler = require "java:goodjava.webserver.handlers.FileHandler"
+local LuanHandler = require "java:luan.modules.http.LuanHandler"
+local ListHandler = require "java:goodjava.webserver.handlers.ListHandler"
+local ContentTypeHandler = require "java:goodjava.webserver.handlers.ContentTypeHandler"
+local IndexHandler = require "java:goodjava.webserver.handlers.IndexHandler"
+local DirHandler = require "java:goodjava.webserver.handlers.DirHandler"
+local NotFound = require "java:luan.modules.http.NotFound"
+local HeadersHandler = require "java:goodjava.webserver.handlers.HeadersHandler"
+local SafeHandler = require "java:goodjava.webserver.handlers.SafeHandler"
+local JavaServer = require "java:goodjava.webserver.Server"
+
+Server.init_dir(dir)
+local file_handler = FileHandler.new(dir)
+local luan_handler = LuanHandler.new()
+local handler = ListHandler.new( luan_handler, file_handler )
+handler = ContentTypeHandler.new(handler)
+handler = IndexHandler.new(handler)
+local dir_handler = DirHandler.new(file_handler)
+local not_found_hander = NotFound.new(luan_handler)
+not_found_hander = ContentTypeHandler.new(not_found_hander)
+handler = ListHandler.new( handler, dir_handler, not_found_hander )
+handler = HeadersHandler.new(handler)
+handler = SafeHandler.new(handler)
+local server = JavaServer.new(port,handler)
+Server.start(server)