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