Mercurial Hosting > nabble
changeset 69:4bc1fc540265 default tip
update luan
author | Franklin Schmidt <fschmidt@gmail.com> |
---|---|
date | Sun, 05 Oct 2025 20:45:39 -0600 |
parents | 00520880ad02 |
children | |
files | conf/Init.luan conf/serve_nabble.luan conf/setup.luan lib/luan.jar src/nabble/utils/LuanServlet.java src/nabble/utils/Utils.luan src/nabble/utils/luan/Http.luan src/nabble/utils/luan/HttpServicer.java src/nabble/view/lib/Recaptcha.java src/nabble/view/web/tools/shell.luan |
diffstat | 10 files changed, 70 insertions(+), 62 deletions(-) [+] |
line wrap: on
line diff
diff -r 00520880ad02 -r 4bc1fc540265 conf/Init.luan --- a/conf/Init.luan Sun Oct 05 17:24:15 2025 -0600 +++ b/conf/Init.luan Sun Oct 05 20:45:39 2025 -0600 @@ -1,4 +1,4 @@ -java() +require "java" local Luan = require "luan:Luan.luan" local error = Luan.error local Io = require "luan:Io.luan"
diff -r 00520880ad02 -r 4bc1fc540265 conf/serve_nabble.luan --- a/conf/serve_nabble.luan Sun Oct 05 17:24:15 2025 -0600 +++ b/conf/serve_nabble.luan Sun Oct 05 20:45:39 2025 -0600 @@ -1,4 +1,4 @@ -java() +require "java" local Luan = require "luan:Luan.luan" local error = Luan.error local ipairs = Luan.ipairs or error()
diff -r 00520880ad02 -r 4bc1fc540265 conf/setup.luan --- a/conf/setup.luan Sun Oct 05 17:24:15 2025 -0600 +++ b/conf/setup.luan Sun Oct 05 20:45:39 2025 -0600 @@ -1,4 +1,4 @@ -java() +require "java" local Luan = require "luan:Luan.luan" local error = Luan.error local LoggerFactory = require "java:org.slf4j.LoggerFactory"
diff -r 00520880ad02 -r 4bc1fc540265 src/nabble/utils/LuanServlet.java --- a/src/nabble/utils/LuanServlet.java Sun Oct 05 17:24:15 2025 -0600 +++ b/src/nabble/utils/LuanServlet.java Sun Oct 05 20:45:39 2025 -0600 @@ -22,6 +22,7 @@ try { luan.eval("require 'classpath:nabble/utils/init.luan'"); } catch(LuanException e) { + logger.error(e.getLuanStackTraceString()); throw new RuntimeException(e); } this.httpServicer = new HttpServicer(luan); @@ -48,7 +49,7 @@ if( !httpServicer.service(request,response,uri) ) response.sendError(HttpServletResponse.SC_NOT_FOUND); } catch(LuanException e) { -// throw new RuntimeException(e); + e.printStackTrace(); String err = e.getLuanStackTraceString(); logger.error(err); response.sendError(HttpServletResponse.SC_INTERNAL_SERVER_ERROR,"<pre>"+err+"</pre>");
diff -r 00520880ad02 -r 4bc1fc540265 src/nabble/utils/Utils.luan --- a/src/nabble/utils/Utils.luan Sun Oct 05 17:24:15 2025 -0600 +++ b/src/nabble/utils/Utils.luan Sun Oct 05 20:45:39 2025 -0600 @@ -1,7 +1,6 @@ local Luan = require "luan:Luan.luan" local error = Luan.error local ipairs = Luan.ipairs or error() -local try = Luan.try or error() local Io = require "luan:Io.luan" local uri = Io.uri or error() local String = require "luan:String.luan" @@ -22,27 +21,24 @@ end function Utils.ssh_is_ok(domain) - return try { - function() - local s = Utils.ssh(domain,"echo ssh-ok") - if trim(s) ~= "ssh-ok" then - error("check_ssh failed with: "..s) - end - return true + try + local s = Utils.ssh(domain,"echo ssh-ok") + if trim(s) ~= "ssh-ok" then + error("check_ssh failed with: "..s) end - catch = function(e) - logger.error(e.get_message()) - Utils.send_mail { - subject = domain.." ssh_is_ok failed" - body = "" - } - return false - end - } + return true + catch e + logger.error(e.get_message()) + Utils.send_mail { + subject = domain.." ssh_is_ok failed" + body = "" + } + return false + end end -java() +require "java" local MailHome = require "java:fschmidt.util.mail.MailHome" local MailAddress = require "java:fschmidt.util.mail.MailAddress" local PlainTextContent = require "java:fschmidt.util.mail.PlainTextContent"
diff -r 00520880ad02 -r 4bc1fc540265 src/nabble/utils/luan/Http.luan --- a/src/nabble/utils/luan/Http.luan Sun Oct 05 17:24:15 2025 -0600 +++ b/src/nabble/utils/luan/Http.luan Sun Oct 05 20:45:39 2025 -0600 @@ -1,10 +1,15 @@ -java() +require "java" local Luan = require "luan:Luan.luan" local error = Luan.error local ipairs = Luan.ipairs or error() local pairs = Luan.pairs or error() local set_metatable = Luan.set_metatable or error() local type = Luan.type or error() +local get_local_cloned = Luan.get_local_cloned or error() +local set_local_cloned = Luan.set_local_cloned or error() +local get_local_only = Luan.get_local_only or error() +local set_local_only = Luan.set_local_only or error() +local raw_set = Luan.raw_set or error() local Io = require "luan:Io.luan" local Html = require "luan:Html.luan" local url_encode = Html.url_encode or error() @@ -12,13 +17,33 @@ local clear = Table.clear or error() local Package = require "luan:Package.luan" local String = require "luan:String.luan" -local matches = String.matches or error() +local regex = String.regex or error() local Boot = require "luan:Boot.luan" local HttpServicer = require "java:nabble.utils.luan.HttpServicer" local IoLuan = require "java:luan.modules.IoLuan" local Http = {} +local mt = {} +function mt.__index(tbl,key) + if key=="error_priority" or key=="not_found_handler" then + return get_local_cloned(tbl,key) + elseif key=="request" or key=="response" then + return get_local_only(tbl,key) + else + return nil + end +end +function mt.__new_index(tbl,key,value) + if key=="error_priority" or key=="not_found_handler" then + set_local_cloned(tbl,key,value) + elseif key=="request" or key=="response" then + set_local_only(tbl,key,value) + else + raw_set(tbl,key,value) + end +end +set_metatable(Http,mt) Http.version = "jetty" @@ -28,7 +53,7 @@ local sent_error_metatable = { __index=sent_error, __new_index=sent_error } -function Http.sent_headers(headers) +local function sent_headers(headers) clear(headers) set_metatable(headers,sent_error_metatable) end @@ -122,7 +147,7 @@ function this.set() HttpServicer.setResponse(this,this.java) - Http.sent_headers(this.headers) + sent_headers(this.headers) end function this.text_writer() @@ -151,7 +176,7 @@ function Http.uncache_site() for k in pairs(Table.copy(Package.loaded)) do - if matches(k,"^site:") then + if regex("^site:").matches(k) then Package.loaded[k] = nil end end
diff -r 00520880ad02 -r 4bc1fc540265 src/nabble/utils/luan/HttpServicer.java --- a/src/nabble/utils/luan/HttpServicer.java Sun Oct 05 17:24:15 2025 -0600 +++ b/src/nabble/utils/luan/HttpServicer.java Sun Oct 05 20:45:39 2025 -0600 @@ -24,7 +24,6 @@ import luan.LuanFunction; import luan.LuanException; import luan.LuanTable; -import luan.LuanCloner; import luan.modules.PackageLuan; import luan.modules.IoLuan; import luan.modules.TableLuan; @@ -47,24 +46,22 @@ LuanFunction fn; Luan luan; synchronized(this) { - enableLoad("luan:http/Http.luan",modName); - LuanTable module = (LuanTable)PackageLuan.require(currentLuan,"luan:http/Http.luan"); - Object mod = PackageLuan.load(currentLuan,modName); + LuanTable module = (LuanTable)currentLuan.require("luan:http/Http.luan"); + Object mod = PackageLuan.load(currentLuan,modName,null); if( mod.equals(Boolean.FALSE) ) return false; if( !(mod instanceof LuanFunction) ) - throw new LuanException( "module '"+modName+"' must return a function" ); - LuanCloner cloner = new LuanCloner(LuanCloner.Type.INCREMENTAL); - luan = (Luan)cloner.clone(currentLuan); - fn = (LuanFunction)cloner.get(mod); + throw new LuanException( "module '"+modName+"' must return a function" ); + luan = new Luan(currentLuan); + fn = (LuanFunction)mod; } - LuanTable module = (LuanTable)PackageLuan.require(luan,"luan:http/Http.luan"); + LuanTable module = (LuanTable)luan.require("luan:http/Http.luan"); // request LuanFunction newRequestFn = (LuanFunction)module.rawGet("new_request"); - LuanTable requestTbl = (LuanTable)newRequestFn.call(); - module.rawPut("request",requestTbl); + LuanTable requestTbl = (LuanTable)newRequestFn.call(luan); + module.put(luan,"request",requestTbl); requestTbl.rawPut("java",request); requestTbl.rawPut("method",request.getMethod()); requestTbl.rawPut("path",request.getRequestURI()); @@ -82,7 +79,7 @@ int size = values.size(); if(size==0) throw new RuntimeException(); key = key.toLowerCase(); - Object value = size==1 ? values.get(0) : new LuanTable(luan,values); + Object value = size==1 ? values.get(0) : new LuanTable(values); headersTbl.rawPut(key,value); } @@ -90,7 +87,7 @@ for( Object obj : request.getParameterMap().entrySet() ) { Map.Entry entry = (Map.Entry)obj; String[] a = (String[])entry.getValue(); - Object value = a.length==1 ? a[0] : new LuanTable(luan,Arrays.asList(a)); + Object value = a.length==1 ? a[0] : new LuanTable(Arrays.asList(a)); parametersTbl.rawPut(entry.getKey(),value); } LuanTable cookieTbl = (LuanTable)requestTbl.rawGet("cookies"); @@ -100,13 +97,13 @@ // response - LuanTable responseTbl = new LuanTable(luan); + LuanTable responseTbl = new LuanTable(); responseTbl.rawPut("java",response); LuanFunction newResponseFn = (LuanFunction)module.rawGet("new_response"); - newResponseFn.call( responseTbl ); - module.rawPut("response",responseTbl); + newResponseFn.call( luan, responseTbl ); + module.put(luan,"response",responseTbl); - fn.call(); + fn.call(luan); return true; } @@ -141,17 +138,6 @@ throw new IllegalArgumentException("value must be string or integer for headers table"); } - private void enableLoad(String... mods) throws LuanException { - LuanTable loaded = PackageLuan.loaded(currentLuan); - for( String mod : mods ) { - if( loaded.rawGet(mod) == null ) { - LuanCloner cloner = new LuanCloner(LuanCloner.Type.COMPLETE); - currentLuan = (Luan)cloner.clone(currentLuan); - break; - } - } - } - // static utils
diff -r 00520880ad02 -r 4bc1fc540265 src/nabble/view/lib/Recaptcha.java --- a/src/nabble/view/lib/Recaptcha.java Sun Oct 05 17:24:15 2025 -0600 +++ b/src/nabble/view/lib/Recaptcha.java Sun Oct 05 20:45:39 2025 -0600 @@ -5,8 +5,8 @@ import java.net.UnknownHostException; import java.util.Map; import javax.servlet.http.HttpServletRequest; -import luan.lib.json.JsonParser; -import luan.lib.parser.ParseException; +import goodjava.json.JsonParser; +import goodjava.parser.ParseException; import fschmidt.util.java.IoUtils; import nabble.model.ModelException; import nabble.view.lib.Jtp;
diff -r 00520880ad02 -r 4bc1fc540265 src/nabble/view/web/tools/shell.luan --- a/src/nabble/view/web/tools/shell.luan Sun Oct 05 17:24:15 2025 -0600 +++ b/src/nabble/view/web/tools/shell.luan Sun Oct 05 20:45:39 2025 -0600 @@ -1,14 +1,14 @@ local init = [[ -java() +require "java" ModelHome = require "java:nabble.model.ModelHome" ]] -java() +require "java" local JavaLuan = require "java:luan.modules.JavaLuan" JavaLuan.privateAccess = true -local shell = require "luan:http/tools/Shell.luan" +local Shell = require "luan:http/tools/Shell.luan" local Luan = require "luan:Luan.luan" local load = Luan.load -load(init,"<nabble>",shell.env)() -return shell.respond +load(init,"<nabble>",Shell.env)() +return Shell.respond