Mercurial Hosting > luan
comparison src/luan/modules/Boot.luan @ 1330:f41919741100
fix security
author | Franklin Schmidt <fschmidt@gmail.com> |
---|---|
date | Mon, 11 Feb 2019 01:38:55 -0700 |
parents | 307e76ccd0d6 |
children | 643cf1c37723 |
comparison
equal
deleted
inserted
replaced
1329:5a39b006acd1 | 1330:f41919741100 |
---|---|
3 local URL = require "java:java.net.URL" | 3 local URL = require "java:java.net.URL" |
4 local BasicLuan = require "java:luan.modules.BasicLuan" | 4 local BasicLuan = require "java:luan.modules.BasicLuan" |
5 local new_error = BasicLuan.new_error | 5 local new_error = BasicLuan.new_error |
6 local ipairs = BasicLuan.ipairs | 6 local ipairs = BasicLuan.ipairs |
7 local set_metatable = BasicLuan.set_metatable | 7 local set_metatable = BasicLuan.set_metatable |
8 local try = BasicLuan.try_ | |
8 local StringLuan = require "java:luan.modules.StringLuan" | 9 local StringLuan = require "java:luan.modules.StringLuan" |
9 local match = StringLuan.match -- String.match | 10 local match = StringLuan.match -- String.match |
10 local IoLuan = require "java:luan.modules.IoLuan" | 11 local IoLuan = require "java:luan.modules.IoLuan" |
11 local LuanUrl = require "java:luan.modules.url.LuanUrl" | 12 local LuanUrl = require "java:luan.modules.url.LuanUrl" |
12 IoLuan.unrestricted() -- not right | 13 local LuanJava = require "java:luan.Luan" |
14 local LuanTable = require "java:luan.LuanTable" | |
13 | 15 |
14 | 16 |
15 local Boot = {} | 17 local Boot = {} |
16 | 18 |
17 | 19 |
18 local function error(message) | 20 local function error(message) |
19 new_error(message).throw() | 21 new_error(message).throw() |
20 end | 22 end |
21 Boot.error = error | 23 Boot.error = error |
24 | |
25 local function no_security(fn) | |
26 LuanJava.checkCallerSecurity("no_security") | |
27 return function(...) | |
28 local security = LuanJava.setSecurity(nil) | |
29 return try( { | |
30 fn | |
31 finally = function() | |
32 security and LuanJava.setSecurity(security) | |
33 end | |
34 }, ... ) | |
35 end | |
36 end | |
37 Boot.no_security = no_security | |
22 | 38 |
23 | 39 |
24 local function new_LuanIn(io) | 40 local function new_LuanIn(io) |
25 local this = {} | 41 local this = {} |
26 this.java = io | 42 this.java = io |
67 | 83 |
68 return this | 84 return this |
69 end | 85 end |
70 | 86 |
71 local schemes = {} | 87 local schemes = {} |
88 LuanTable.setSecurity(schemes,"schemes") | |
72 | 89 |
73 function schemes.null(path) | 90 function schemes.null(path) |
74 return new_LuanIO( IoLuan.nullIO ) | 91 return new_LuanIO( IoLuan.nullIO ) |
75 end | 92 end |
76 | 93 |