Mercurial Hosting > luan
view src/luan/host/init.luan @ 1426:94a6a209d4e2
fix
author | Franklin Schmidt <fschmidt@gmail.com> |
---|---|
date | Sun, 24 Nov 2019 16:38:06 -0700 |
parents | 732b5de211fc |
children | 219f2b937f2b |
line wrap: on
line source
local Luan = require "luan:Luan.luan" local error = Luan.error local do_file = Luan.do_file or error() local String = require "luan:String.luan" local gsub = String.gsub or error() local dir, domain = ... -- logging do require "java" local Log4j = require "java:luan.modules.logging.Log4j" local Level = require "java:org.apache.log4j.Level" local EnhancedPatternLayout = require "java:org.apache.log4j.EnhancedPatternLayout" local RollingFileAppender = require "java:org.apache.log4j.RollingFileAppender" local logger = Log4j.getRootLogger() Log4j.removeAllAppenders(logger) local layout = EnhancedPatternLayout.new("%d %-5p %c - %m%n") local log_dir = dir.."/site/private/local/logs/" local function add_appender(file,level) local appender = RollingFileAppender.new(layout, log_dir..file) appender.setMaxFileSize("1MB") logger.addAppender(appender) if level ~= logger.getEffectiveLevel() then appender.setThreshold(level) end end add_appender("error.log",Level.ERROR) add_appender("warn.log",Level.WARN) add_appender("info.log",Level.INFO) end -- set vars local Io = require "luan:Io.luan" local Http = require "luan:http/Http.luan" local Hosted = require "luan:host/Hosted.luan" local Mail = require "luan:mail/Mail.luan" Io.password = do_file(dir.."/info.luan").password or error() Http.dir = "file:"..dir.."/site" Http.is_serving = true function Io.schemes.site(path,loading) local u = Io.uri( Http.dir..path, loading ) u.uri_string = "site:"..path return u end Http.domain = domain Hosted.is_hosted = true -- postgres local Sql = require "luan:sql/Sql.luan" local database = Sql.database or error() local Logging = require "luan:logging/Logging.luan" local logger = Logging.logger "init" local fn = Luan.load_file("file:postgres.luan") or error() local pg = fn() function Hosted.postgres_spec() if pg == nil then return nil end local spec = { class = "org.postgresql.Driver" url = "jdbc:postgresql://localhost:5432/"..domain user = domain password = Io.password } local db = database(pg) local exists = db.query("select datname from pg_database where datname=?",domain).results() ~= nil; --logger.info("exists "..exists) if not exists then db.update( [[create user "]]..spec.user..[[" with encrypted password ']]..spec.password..[[']] ) db.update( [[create database "]]..domain..[[" owner "]]..spec.user..[["]] ) end db.close() return spec end -- callback to luanhost code do_file "file:init.luan" require "java" local WebHandler = require "java:luan.host.WebHandler" local LuanJava = require "java:luan.Luan" function Hosted.no_security(password) WebHandler.securityPassword == password or error "wrong password" LuanJava.setSecurity(nil) end function Http.reset_luan() WebHandler.removeHandler(domain) end