Mercurial Hosting > luan
view src/luan/host/run.luan @ 1802:ca98dee04e08 default tip
add Parsers.json_null
author | Franklin Schmidt <fschmidt@gmail.com> |
---|---|
date | Sun, 21 Apr 2024 21:25:15 -0600 |
parents | 97cc73664ca8 |
children |
line wrap: on
line source
require "java" local Luan = require "luan:Luan.luan" local error = Luan.error local ipairs = Luan.ipairs or error() local do_file = Luan.do_file or error() local Number = require "luan:Number.luan" local long = Number.long or error() local Io = require "luan:Io.luan" local Hosted = require "luan:host/Hosted.luan" local WebHandler = require "java:luan.host.WebHandler" local Logging = require "luan:logging/Logging.luan" 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 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 RollingFileAppender = require "java:goodjava.logger.RollingFileAppender" local LevelAppender = require "java:goodjava.logger.LevelAppender" local ListAppender = require "java:goodjava.logger.ListAppender" local one_mb = long(1024*1024) 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 files = { file..".log", file.."_1.log" } local appender = RollingFileAppender.new(layout, files) appender.maxFileSize = one_mb appender = LevelAppender.new(appender,level) return appender end local err = new_appender("logs/luan_error",Level.ERROR) local warn = new_appender("logs/luan_warn",Level.WARN) local info = new_appender("logs/luan_info",Level.INFO) local appender = ListAppender.new(err,warn,info) LuanLogger.configure(appender) end local logger = Logging.logger "run" WebHandler.config = require "classpath:luan/host/Config.luan" Hosted.WebHandler = WebHandler local here = Io.schemes.file(".").canonical().to_string() Hosted.sites_dir = here.."/sites/" do_file "classpath:luan/host/main.luan" -- web server local Server = require "java:goodjava.webserver.Server" local SafeHandler = require "java:goodjava.webserver.handlers.SafeHandler" local handler = WebHandler.new(Hosted.sites_dir) handler = SafeHandler.new(handler) local server = Server.ForAddress.new("127.0.0.1",8080,handler) server.start() local sites_dir = Io.schemes.file(Hosted.sites_dir) for _, site_dir in ipairs(sites_dir.children()) do local name = site_dir.name() WebHandler.loadHandler(name) end