diff --git a/sys/apis/blocks.lua b/sys/apis/blocks.lua index ae96706..fb9942d 100644 --- a/sys/apis/blocks.lua +++ b/sys/apis/blocks.lua @@ -1,6 +1,7 @@ -local class = require('class') +local class = require('class') +local Util = require('util') local TableDB = require('tableDB') -local JSON = require('json') +local JSON = require('json') -- see https://github.com/Khroki/MCEdit-Unified/blob/master/pymclevel/minecraft.yaml -- see https://github.com/Khroki/MCEdit-Unified/blob/master/Items/minecraft/blocks.json diff --git a/sys/apis/chestProvider18.lua b/sys/apis/chestProvider18.lua index 8a748c8..195899c 100644 --- a/sys/apis/chestProvider18.lua +++ b/sys/apis/chestProvider18.lua @@ -1,5 +1,6 @@ -local class = require('class') -local itemDB = require('itemDB') +local class = require('class') +local Util = require('util') +local itemDB = require('itemDB') local Peripheral = require('peripheral') local ChestProvider = class() diff --git a/sys/apis/event.lua b/sys/apis/event.lua index 4c71294..427d84b 100644 --- a/sys/apis/event.lua +++ b/sys/apis/event.lua @@ -1,3 +1,5 @@ +local Util = require('util') + local Event = { uid = 1, -- unique id for handlers routines = { }, -- coroutines diff --git a/sys/apis/fileui.lua b/sys/apis/fileui.lua index 163a59d..967755c 100644 --- a/sys/apis/fileui.lua +++ b/sys/apis/fileui.lua @@ -1,4 +1,5 @@ -local UI = require('ui') +local Util = require('util') +local UI = require('ui') return function(args) diff --git a/sys/apis/fs/ramfs.lua b/sys/apis/fs/ramfs.lua index 5ec2af3..ee0c0f5 100644 --- a/sys/apis/fs/ramfs.lua +++ b/sys/apis/fs/ramfs.lua @@ -1,3 +1,5 @@ +local Util = require('util') + local ramfs = { } function ramfs.mount(dir, nodeType) diff --git a/sys/apis/fs/urlfs.lua b/sys/apis/fs/urlfs.lua index 8ea7c28..fe87e5c 100644 --- a/sys/apis/fs/urlfs.lua +++ b/sys/apis/fs/urlfs.lua @@ -1,4 +1,5 @@ local synchronized = require('sync') +local Util = require('util') local urlfs = { } diff --git a/sys/apis/injector.lua b/sys/apis/injector.lua index d251243..e0fc813 100644 --- a/sys/apis/injector.lua +++ b/sys/apis/injector.lua @@ -11,36 +11,6 @@ local DEFAULT_UPATH = 'https://raw.githubusercontent.com/kepler155c/opus/' .. br local PASTEBIN_URL = 'http://pastebin.com/raw' local GIT_URL = 'https://raw.githubusercontent.com' -local function standardSearcher(modname, env, shell) - if _G.package.loaded[modname] then - return function() - return _G.package.loaded[modname] - end - end -end - -local function shellSearcher(modname, env, shell) - local fname = modname:gsub('%.', '/') .. '.lua' - - if shell and type(shell.dir) == 'function' then - local path = shell.resolve(fname) - if fs.exists(path) and not fs.isDir(path) then - return loadfile(path, env) - end - end -end - -local function pathSearcher(modname, env, shell) - local fname = modname:gsub('%.', '/') .. '.lua' - - for dir in string.gmatch(_G.package.path, "[^:]+") do - local path = fs.combine(dir, fname) - if fs.exists(path) and not fs.isDir(path) then - return loadfile(path, env) - end - end -end - -- fix broken http get local syncLocks = { } @@ -81,83 +51,108 @@ local function loadUrl(url) end end --- require('BniCQPVf') -local function pastebinSearcher(modname, env, shell) - if #modname == 8 and not modname:match('%W') then - local url = PASTEBIN_URL .. '/' .. modname - local c = loadUrl(url) - if c then - return load(c, modname, nil, env) +local function requireWrapper(env) + + local function standardSearcher(modname, env, shell) + if package.loaded[modname] then + return function() + return package.loaded[modname] + end end end -end --- require('kepler155c.opus.master.sys.apis.util') -local function gitSearcher(modname, env, shell) - local fname = modname:gsub('%.', '/') .. '.lua' - local _, count = fname:gsub("/", "") - if count >= 3 then - local url = GIT_URL .. '/' .. fname - local c = loadUrl(url) - if c then - return load(c, modname, nil, env) + local function shellSearcher(modname, env, shell) + local fname = modname:gsub('%.', '/') .. '.lua' + + if shell and type(shell.dir) == 'function' then + local path = shell.resolve(fname) + if fs.exists(path) and not fs.isDir(path) then + return loadfile(path, env) + end end end -end -local function urlSearcher(modname, env, shell) - local fname = modname:gsub('%.', '/') .. '.lua' + local function pathSearcher(modname, env, shell) + local fname = modname:gsub('%.', '/') .. '.lua' - if fname:sub(1, 1) ~= '/' then - for entry in string.gmatch(_G.package.upath, "[^;]+") do - local url = entry .. '/' .. fname + for dir in string.gmatch(package.path, "[^:]+") do + local path = fs.combine(dir, fname) + if fs.exists(path) and not fs.isDir(path) then + return loadfile(path, env) + end + end + end + + -- require('BniCQPVf') + local function pastebinSearcher(modname, env, shell) + if #modname == 8 and not modname:match('%W') then + local url = PASTEBIN_URL .. '/' .. modname local c = loadUrl(url) if c then return load(c, modname, nil, env) end end end -end -_G.package = { - path = LUA_PATH or 'sys/apis', - upath = LUA_UPATH or DEFAULT_UPATH, - config = '/\n:\n?\n!\n-', - loaded = { - math = math, - string = string, - table = table, - io = io, - os = os, - }, - loaders = { - standardSearcher, - shellSearcher, - pathSearcher, - pastebinSearcher, - gitSearcher, - urlSearcher, - } -} - -local function requireWrapper(env) - - local loaded = { } - - return function(modname) - - if loaded[modname] then - return loaded[modname] + -- require('kepler155c.opus.master.sys.apis.util') + local function gitSearcher(modname, env, shell) + local fname = modname:gsub('%.', '/') .. '.lua' + local _, count = fname:gsub("/", "") + if count >= 3 then + local url = GIT_URL .. '/' .. fname + local c = loadUrl(url) + if c then + return load(c, modname, nil, env) + end end + end - for _,searcher in ipairs(_G.package.loaders) do + local function urlSearcher(modname, env, shell) + local fname = modname:gsub('%.', '/') .. '.lua' + + if fname:sub(1, 1) ~= '/' then + for entry in string.gmatch(package.upath, "[^;]+") do + local url = entry .. '/' .. fname + local c = loadUrl(url) + if c then + return load(c, modname, nil, env) + end + end + end + end + + -- place package and require function into env + package = { + path = LUA_PATH or 'sys/apis', + upath = LUA_UPATH or DEFAULT_UPATH, + config = '/\n:\n?\n!\n-', + loaded = { + math = math, + string = string, + table = table, + io = io, + os = os, + }, + loaders = { + standardSearcher, + shellSearcher, + pathSearcher, + pastebinSearcher, + gitSearcher, + urlSearcher, + } + } + + function require(modname) + + for _,searcher in ipairs(package.loaders) do local fn, msg = searcher(modname, env, shell) if fn then local module, msg = fn(modname, env) if not module then error(msg) end - loaded[modname] = module + package.loaded[modname] = module return module end if msg then @@ -166,6 +161,8 @@ local function requireWrapper(env) end error('Unable to find module ' .. modname) end + + return require -- backwards compatible end return function(env) diff --git a/sys/apis/itemDB.lua b/sys/apis/itemDB.lua index 989d919..5545cf0 100644 --- a/sys/apis/itemDB.lua +++ b/sys/apis/itemDB.lua @@ -1,3 +1,4 @@ +local Util = require('util') local TableDB = require('tableDB') local itemDB = TableDB({ fileName = 'usr/etc/items.db' }) diff --git a/sys/apis/me.lua b/sys/apis/me.lua index 2017aef..88d573f 100644 --- a/sys/apis/me.lua +++ b/sys/apis/me.lua @@ -1,3 +1,5 @@ +local Util = require('util') + local ME = { jobList = { } } diff --git a/sys/apis/meProvider.lua b/sys/apis/meProvider.lua index 7b471b8..034d298 100644 --- a/sys/apis/meProvider.lua +++ b/sys/apis/meProvider.lua @@ -1,5 +1,6 @@ -local class = require('class') -local Logger = require('logger') +local class = require('class') +local Util = require('util') +local Logger = require('logger') local Peripheral = require('peripheral') local MEProvider = class() diff --git a/sys/apis/peripheral.lua b/sys/apis/peripheral.lua index b974b4f..e2f372e 100644 --- a/sys/apis/peripheral.lua +++ b/sys/apis/peripheral.lua @@ -1,3 +1,5 @@ +local Util = require('util') + local Peripheral = { } local function getDeviceList() diff --git a/sys/apis/profile.lua b/sys/apis/profile.lua index 4e1afa1..6a4fbe9 100644 --- a/sys/apis/profile.lua +++ b/sys/apis/profile.lua @@ -1,3 +1,4 @@ +local Util = require('util') local Logger = require('logger') local Profile = { diff --git a/sys/apis/refinedProvider.lua b/sys/apis/refinedProvider.lua index c0c8b3b..457e1d5 100644 --- a/sys/apis/refinedProvider.lua +++ b/sys/apis/refinedProvider.lua @@ -1,6 +1,7 @@ -local class = require('class') +local class = require('class') +local Util = require('util') local Peripheral = require('peripheral') -local itemDB = require('itemDB') +local itemDB = require('itemDB') local RefinedProvider = class() diff --git a/sys/apis/schematic.lua b/sys/apis/schematic.lua index 3d311ad..f7d08d9 100644 --- a/sys/apis/schematic.lua +++ b/sys/apis/schematic.lua @@ -1,7 +1,8 @@ -local class = require('class') +local class = require('class') +local Util = require('util') local DEFLATE = require('deflatelua') -local UI = require('ui') -local Point = require('point') +local UI = require('ui') +local Point = require('point') --[[ Loading and manipulating a schematic diff --git a/sys/apis/security.lua b/sys/apis/security.lua new file mode 100644 index 0000000..02e30e5 --- /dev/null +++ b/sys/apis/security.lua @@ -0,0 +1,56 @@ +local Config = require('config') + +local config = { } + +local Security = { } + +function Security.verifyPassword(password) + Config.load('os', config) + return config.password and password == config.password +end + +function Security.getSecretKey() + Config.load('os', config) + if not config.secretKey then + config.secretKey = math.random(100000, 999999) + Config.update('os', config) + end + return config.secretKey +end + +function Security.getPublicKey() + + local exchange = { + base = 11, + primeMod = 625210769 + } + + local function modexp(base, exponent, modulo) + local remainder = base + + for i = 1, exponent-1 do + remainder = remainder * remainder + if remainder >= modulo then + remainder = remainder % modulo + end + end + + return remainder + end + + local secretKey = Security.getSecretKey() + return modexp(exchange.base, secretKey, exchange.primeMod) +end + +function Security.updatePassword(password) + Config.load('os', config) + config.password = password + Config.update('os', config) +end + +function Security.getPassword() + Config.load('os', config) + return config.password +end + +return Security diff --git a/sys/apis/socket.lua b/sys/apis/socket.lua index 083e3e4..a087cef 100644 --- a/sys/apis/socket.lua +++ b/sys/apis/socket.lua @@ -1,5 +1,7 @@ -local Logger = require('logger') -local Crypto = require('crypto') +local Crypto = require('crypto') +local Logger = require('logger') +local Security = require('security') +local Util = require('util') local socketClass = { } @@ -110,7 +112,7 @@ function Socket.connect(host, port) type = 'OPEN', shost = socket.shost, dhost = socket.dhost, - t = Crypto.encrypt({ ts = os.time(), seq = socket.seq }, os.getPublicKey()), + t = Crypto.encrypt({ ts = os.time(), seq = socket.seq }, Security.getPublicKey()), rseq = socket.wseq, wseq = socket.rseq, }) diff --git a/sys/apis/tableDB.lua b/sys/apis/tableDB.lua index d02def5..6299088 100644 --- a/sys/apis/tableDB.lua +++ b/sys/apis/tableDB.lua @@ -1,4 +1,5 @@ local class = require('class') +local Util = require('util') local TableDB = class() function TableDB:init(args) diff --git a/sys/apis/terminal.lua b/sys/apis/terminal.lua index fca79a0..087ef92 100644 --- a/sys/apis/terminal.lua +++ b/sys/apis/terminal.lua @@ -1,3 +1,5 @@ +local Util = require('util') + local Terminal = { } function Terminal.scrollable(ct, size) diff --git a/sys/apis/ui.lua b/sys/apis/ui.lua index 831d517..8836e93 100644 --- a/sys/apis/ui.lua +++ b/sys/apis/ui.lua @@ -1,7 +1,7 @@ -local Util = require('util') -local class = require('class') -local Event = require('event') -local Tween = require('tween') +local Util = require('util') +local class = require('class') +local Event = require('event') +local Tween = require('tween') local Region = require('region') local mapColorToGray = { @@ -3425,7 +3425,7 @@ function UI.NftImage:setImage(image) end UI:loadTheme('usr/config/ui.theme') -if os.getVersion and os.getVersion() >= 1.79 then +if Util.getVersion() >= 1.79 then UI:loadTheme('sys/etc/ext.theme') end diff --git a/sys/apis/util.lua b/sys/apis/util.lua index fe419c0..0d3a4db 100644 --- a/sys/apis/util.lua +++ b/sys/apis/util.lua @@ -69,6 +69,19 @@ function Util.print(pattern, ...) print(Util.tostring(pattern, ...)) end +function Util.getVersion() + local version + + if _CC_VERSION then + version = tonumber(_CC_VERSION:gmatch('[%d]+%.?[%d][%d]', '%1')()) + end + if not version and _HOST then + version = tonumber(_HOST:gmatch('[%d]+%.?[%d][%d]', '%1')()) + end + + return version or 1.7 +end + function Util.runFunction(env, fn, ...) setfenv(fn, env) setmetatable(env, { __index = _G }) diff --git a/sys/apps/Appstore.lua b/sys/apps/Appstore.lua index c2f2ff0..f36dda8 100644 --- a/sys/apps/Appstore.lua +++ b/sys/apps/Appstore.lua @@ -1,6 +1,32 @@ -require = requireInjector(getfenv(1)) -local Util = require('util') -local UI = require('ui') +requireInjector(getfenv(1)) + +local Config = require('config') +local SHA1 = require('sha1') +local UI = require('ui') +local Util = require('util') + +-- scrap this entire file. don't muck with standard apis + +local REGISTRY_DIR = 'usr/.registry' + + +-- FIX SOMEDAY +function os.registerApp(app, key) + + app.key = SHA1.sha1(key) + Util.writeTable(fs.combine(REGISTRY_DIR, app.key), app) + os.queueEvent('os_register_app') +end + +function os.unregisterApp(key) + + local filename = fs.combine(REGISTRY_DIR, SHA1.sha1(key)) + if fs.exists(filename) then + fs.delete(filename) + os.queueEvent('os_register_app') + end +end + local sandboxEnv = Util.shallowCopy(getfenv(1)) setmetatable(sandboxEnv, { __index = _G }) @@ -149,7 +175,7 @@ end local appPage = UI.Page({ backgroundColor = UI.ViewportWindow.defaults.backgroundColor, menuBar = UI.MenuBar({ - showBackButton = not os.isPocket(), + showBackButton = not pocket, buttons = { { text = 'Install', event = 'install' }, { text = 'Run', event = 'run' }, diff --git a/sys/apps/Events.lua b/sys/apps/Events.lua index 525a2be..178e96d 100644 --- a/sys/apps/Events.lua +++ b/sys/apps/Events.lua @@ -1,6 +1,8 @@ -require = requireInjector(getfenv(1)) +requireInjector(getfenv(1)) + local Event = require('event') -local UI = require('ui') +local UI = require('ui') +local Util = require('util') multishell.setTitle(multishell.getCurrent(), 'Events') UI:configure('Events', ...) diff --git a/sys/apps/Files.lua b/sys/apps/Files.lua index f929c23..c24b11f 100644 --- a/sys/apps/Files.lua +++ b/sys/apps/Files.lua @@ -1,8 +1,9 @@ -require = requireInjector(getfenv(1)) -local Util = require('util') -local Event = require('event') -local UI = require('ui') +requireInjector(getfenv(1)) + local Config = require('config') +local Event = require('event') +local UI = require('ui') +local Util = require('util') local cleanEnv = Util.shallowCopy(getfenv(1)) cleanEnv.require = nil diff --git a/sys/apps/Help.lua b/sys/apps/Help.lua index 0ad7702..c4d6ebc 100644 --- a/sys/apps/Help.lua +++ b/sys/apps/Help.lua @@ -1,6 +1,7 @@ -require = requireInjector(getfenv(1)) +requireInjector(getfenv(1)) + local Event = require('event') -local UI = require('ui') +local UI = require('ui') multishell.setTitle(multishell.getCurrent(), 'Help') UI:configure('Help', ...) diff --git a/sys/apps/Lua.lua b/sys/apps/Lua.lua index 2496dfa..3f189e2 100644 --- a/sys/apps/Lua.lua +++ b/sys/apps/Lua.lua @@ -1,14 +1,15 @@ local injector = requireInjector or load(http.get('http://pastebin.com/raw/c0TWsScv').readAll())() -require = injector(getfenv(1)) -local Util = require('util') -local UI = require('ui') -local Event = require('event') +injector(getfenv(1)) + +local Event = require('event') local History = require('history') +local UI = require('ui') +local Util = require('util') local sandboxEnv = Util.shallowCopy(getfenv(1)) -sandboxEnv.exit = function() Event.exitPullEvents() end -sandboxEnv.require = injector(sandboxEnv) setmetatable(sandboxEnv, { __index = _G }) +sandboxEnv.exit = function() Event.exitPullEvents() end +injector(sandboxEnv) multishell.setTitle(multishell.getCurrent(), 'Lua') UI:configure('Lua', ...) diff --git a/sys/apps/Network.lua b/sys/apps/Network.lua index c7ecc42..bca90be 100644 --- a/sys/apps/Network.lua +++ b/sys/apps/Network.lua @@ -1,7 +1,9 @@ -require = requireInjector(getfenv(1)) -local Event = require('event') -local UI = require('ui') +requireInjector(getfenv(1)) + +local Event = require('event') local Socket = require('socket') +local UI = require('ui') +local Util = require('util') multishell.setTitle(multishell.getCurrent(), 'Network') UI:configure('Network', ...) diff --git a/sys/apps/Overview.lua b/sys/apps/Overview.lua index 0b7c5fa..9e264d6 100644 --- a/sys/apps/Overview.lua +++ b/sys/apps/Overview.lua @@ -1,13 +1,14 @@ -require = requireInjector(getfenv(1)) -local Util = require('util') -local Event = require('event') -local UI = require('ui') -local Config = require('config') -local NFT = require('nft') +requireInjector(getfenv(1)) + local class = require('class') +local Config = require('config') +local Event = require('event') local FileUI = require('fileui') -local Tween = require('tween') +local NFT = require('nft') local SHA1 = require('sha1') +local Tween = require('tween') +local UI = require('ui') +local Util = require('util') local REGISTRY_DIR = 'usr/.registry' diff --git a/sys/apps/Peripherals.lua b/sys/apps/Peripherals.lua index 5f58a69..b0f9df4 100644 --- a/sys/apps/Peripherals.lua +++ b/sys/apps/Peripherals.lua @@ -1,8 +1,8 @@ -local injector = requireInjector or load(http.get('http://pastebin.com/raw/c0TWsScv').readAll())() -require = injector(getfenv(1)) -local Util = require('util') +requireInjector(getfenv(1)) + local Event = require('event') -local UI = require('ui') +local UI = require('ui') +local Util = require('util') multishell.setTitle(multishell.getCurrent(), 'Devices') diff --git a/sys/apps/Pim.lua b/sys/apps/Pim.lua index e3dea2f..f8591e6 100644 --- a/sys/apps/Pim.lua +++ b/sys/apps/Pim.lua @@ -1,7 +1,9 @@ -require = requireInjector(getfenv(1)) -local Event = require('event') -local UI = require('ui') +requireInjector(getfenv(1)) + local Config = require('config') +local Event = require('event') +local UI = require('ui') +local Util = require('util') multishell.setTitle(multishell.getCurrent(), 'PIM') diff --git a/sys/apps/Script.lua b/sys/apps/Script.lua index 4d30744..34ab631 100644 --- a/sys/apps/Script.lua +++ b/sys/apps/Script.lua @@ -1,8 +1,10 @@ -require = requireInjector(getfenv(1)) -local Event = require('event') -local UI = require('ui') -local Socket = require('socket') +requireInjector(getfenv(1)) + local Config = require('config') +local Event = require('event') +local Socket = require('socket') +local UI = require('ui') +local Util = require('util') local GROUPS_PATH = 'usr/groups' local SCRIPTS_PATH = 'sys/etc/scripts' diff --git a/sys/apps/System.lua b/sys/apps/System.lua index 2ae96e9..0dfb26e 100644 --- a/sys/apps/System.lua +++ b/sys/apps/System.lua @@ -1,7 +1,9 @@ -require = requireInjector(getfenv(1)) -local Event = require('event') -local UI = require('ui') +requireInjector(getfenv(1)) + local Config = require('config') +local Event = require('event') +local UI = require('ui') +local Util = require('util') multishell.setTitle(multishell.getCurrent(), 'System') UI:configure('System', ...) @@ -86,7 +88,7 @@ local systemPage = UI.Page { grid = UI.ScrollingGrid { y = 4, values = { - { name = 'CC version', value = os.getVersion() }, + { name = 'CC version', value = Util.getVersion() }, { name = 'Lua version', value = _VERSION }, { name = 'MC version', value = _MC_VERSION or 'unknown' }, { name = 'Disk free', value = Util.toBytes(fs.getFreeSpace('/')) }, diff --git a/sys/apps/Tabs.lua b/sys/apps/Tabs.lua index 4762ec2..ef2e4a9 100644 --- a/sys/apps/Tabs.lua +++ b/sys/apps/Tabs.lua @@ -1,6 +1,8 @@ -require = requireInjector(getfenv(1)) -local UI = require('ui') +requireInjector(getfenv(1)) + local Event = require('event') +local UI = require('ui') +local Util = require('util') multishell.setTitle(multishell.getCurrent(), 'Tabs') UI:configure('Tabs', ...) diff --git a/sys/apps/Turtles.lua b/sys/apps/Turtles.lua index 14a4df6..c011b78 100644 --- a/sys/apps/Turtles.lua +++ b/sys/apps/Turtles.lua @@ -1,9 +1,11 @@ -require = requireInjector(getfenv(1)) -local Event = require('event') -local UI = require('ui') -local Socket = require('socket') +requireInjector(getfenv(1)) + +local Event = require('event') +local itemDB = require('itemDB') +local Socket = require('socket') local Terminal = require('terminal') -local itemDB = require('itemDB') +local UI = require('ui') +local Util = require('util') multishell.setTitle(multishell.getCurrent(), 'Turtles') UI.Button.defaults.focusIndicator = ' ' diff --git a/sys/apps/base64dl.lua b/sys/apps/base64dl.lua index 33b0351..203b4a1 100644 --- a/sys/apps/base64dl.lua +++ b/sys/apps/base64dl.lua @@ -1,4 +1,5 @@ -require = requireInjector(getfenv(1)) +requireInjector(getfenv(1)) + Base64 = require('base64') local args = { ... } diff --git a/sys/apps/builder.lua b/sys/apps/builder.lua index 145d9ff..078650c 100644 --- a/sys/apps/builder.lua +++ b/sys/apps/builder.lua @@ -2,19 +2,21 @@ if not turtle and not commands then error('Must be run on a turtle or a command computer') end -require = requireInjector(getfenv(1)) +requireInjector(getfenv(1)) + +local Blocks = require('blocks') local class = require('class') local Event = require('event') +local MEProvider = require('meProvider') local Message = require('message') -local UI = require('ui') +local Point = require('point') local Schematic = require('schematic') local TableDB = require('tableDB') -local MEProvider = require('meProvider') -local Blocks = require('blocks') -local Point = require('point') +local UI = require('ui') +local Util = require('util') local ChestProvider = require('chestProvider') -if os.getVersion() == 1.8 then +if Util.getVersion() == 1.8 then ChestProvider = require('chestProvider18') end @@ -685,7 +687,7 @@ end -- figure out our orientation in the world function Builder:getTurtleFacing() - if os.getVersion() == 1.8 then + if Util.getVersion() == 1.8 then local directions = { -- reversed directions [5] = 'west', @@ -935,7 +937,7 @@ function Builder:placeDirectionalBlock(b, slot, travelPlane) local isSouth = (turtle.getHeadingInfo(Builder.facing).heading + turtle.getHeadingInfo(stairUpDirections[d]).heading) % 4 == 1 - if os.getVersion() == 1.8 then + if Util.getVersion() == 1.8 then isSouth = false -- no stair bug in this version end diff --git a/sys/apps/chestManager.lua b/sys/apps/chestManager.lua index 3542b55..f065b7c 100644 --- a/sys/apps/chestManager.lua +++ b/sys/apps/chestManager.lua @@ -1,12 +1,14 @@ -require = requireInjector(getfenv(1)) -local UI = require('ui') -local Event = require('event') -local Config = require('config') -local ChestProvider = require('chestProvider18') +requireInjector(getfenv(1)) + +local ChestProvider = require('chestProvider18') +local Config = require('config') +local Event = require('event') +local itemDB = require('itemDB') +local Peripheral = require('peripheral') local RefinedProvider = require('refinedProvider') -local itemDB = require('itemDB') -local Terminal = require('terminal') -local Peripheral = require('peripheral') +local Terminal = require('terminal') +local UI = require('ui') +local Util = require('util') multishell.setTitle(multishell.getCurrent(), 'Resource Manager') diff --git a/sys/apps/edit.lua b/sys/apps/edit.lua index a3e5086..bc3e389 100644 --- a/sys/apps/edit.lua +++ b/sys/apps/edit.lua @@ -46,7 +46,7 @@ if not clipboard then function clipboard.getText() if clipboard.data then - return Util.tostring(clipboard.data) + return tostring(clipboard.data) end end diff --git a/sys/apps/itemsDB.lua b/sys/apps/itemsDB.lua index f35cafe..a807c84 100644 --- a/sys/apps/itemsDB.lua +++ b/sys/apps/itemsDB.lua @@ -1,8 +1,7 @@ -local injector = requireInjector or load(http.get('http://pastebin.com/raw/c0TWsScv').readAll())() -require = injector(getfenv(1)) +requireInjector(getfenv(1)) local RefinedProvider = require('refinedProvider') -local TableDB = require('tableDB') +local TableDB = require('tableDB') local controller = RefinedProvider() if not controller:isValid() then diff --git a/sys/apps/logMonitor.lua b/sys/apps/logMonitor.lua index 321ade3..d54c2b1 100644 --- a/sys/apps/logMonitor.lua +++ b/sys/apps/logMonitor.lua @@ -1,7 +1,9 @@ -require = requireInjector(getfenv(1)) -local Event = require('event') +requireInjector(getfenv(1)) + +local Event = require('event') local Message = require('message') -local UI = require('ui') +local UI = require('ui') +local Util = require('util') multishell.setTitle(multishell.getCurrent(), 'Log Monitor') diff --git a/sys/apps/mirror.lua b/sys/apps/mirror.lua index 7fcb295..ab3c8c1 100644 --- a/sys/apps/mirror.lua +++ b/sys/apps/mirror.lua @@ -1,4 +1,5 @@ -require = requireInjector(getfenv(1)) +requireInjector(getfenv(1)) + local Terminal = require('terminal') local args = { ... } diff --git a/sys/apps/mirrorClient.lua b/sys/apps/mirrorClient.lua index f324f9e..7152ee6 100644 --- a/sys/apps/mirrorClient.lua +++ b/sys/apps/mirrorClient.lua @@ -1,8 +1,10 @@ -require = requireInjector(getfenv(1)) -local Socket = require('socket') +requireInjector(getfenv(1)) + +local Event = require('event') +local Logger = require('logger') +local Socket = require('socket') local Terminal = require('terminal') -local Logger = require('logger') -local Event = require('event') +local Util = require('util') Logger.setScreenLogging() diff --git a/sys/apps/mirrorHost.lua b/sys/apps/mirrorHost.lua index 4eb2e9f..4ece283 100644 --- a/sys/apps/mirrorHost.lua +++ b/sys/apps/mirrorHost.lua @@ -1,7 +1,8 @@ -require = requireInjector(getfenv(1)) +requireInjector(getfenv(1)) + local Event = require('event') -local Socket = require('socket') local Logger = require('logger') +local Socket = require('socket') Logger.setScreenLogging() diff --git a/sys/apps/mount.lua b/sys/apps/mount.lua new file mode 100644 index 0000000..d7bde84 --- /dev/null +++ b/sys/apps/mount.lua @@ -0,0 +1,6 @@ +local args = { ... } + +local target = table.remove(args, 1) +target = shell.resolve(target) + +fs.mount(target, unpack(args)) diff --git a/sys/apps/multishell b/sys/apps/multishell index d860681..4f80573 100644 --- a/sys/apps/multishell +++ b/sys/apps/multishell @@ -14,10 +14,15 @@ end multishell.term = term.current() -local defaultEnv = Util.shallowCopy(getfenv(1)) +local defaultEnv = { } +for k,v in pairs(getfenv(1)) do + defaultEnv[k] = v +end + +requireInjector(getfenv(1)) -require = requireInjector(getfenv(1)) local Config = require('config') +local Util = require('util') -- Begin multishell local parentTerm = term.current() @@ -557,9 +562,7 @@ while true do elseif sEvent == "mouse_click" then local button, x, y = tEventData[1], tEventData[2], tEventData[3] lastClicked = nil - if y == 1 and os.locked then - -- ignore - elseif y == 1 then + if y == 1 then -- Switch process local w, h = parentTerm.getSize() if x == 1 then diff --git a/sys/apps/password.lua b/sys/apps/password.lua index 3f5a152..f82c22d 100644 --- a/sys/apps/password.lua +++ b/sys/apps/password.lua @@ -1,10 +1,12 @@ -require = requireInjector(getfenv(1)) -local SHA1 = require('sha1') +requireInjector(getfenv(1)) + +local Security = require('security') +local SHA1 = require('sha1') local Terminal = require('terminal') local password = Terminal.readPassword('Enter new password: ') if password then - os.updatePassword(SHA1.sha1(password)) + Security.updatePassword(SHA1.sha1(password)) print('Password updated') end diff --git a/sys/apps/pickup.lua b/sys/apps/pickup.lua index e24456b..8285647 100644 --- a/sys/apps/pickup.lua +++ b/sys/apps/pickup.lua @@ -1,10 +1,12 @@ -require = requireInjector(getfenv(1)) -local GPS = require('gps') -local Socket = require('socket') -local MEProvider = require('meProvider') -local Logger = require('logger') -local Point = require('point') +requireInjector(getfenv(1)) + local Event = require('event') +local GPS = require('gps') +local Logger = require('logger') +local MEProvider = require('meProvider') +local Point = require('point') +local Socket = require('socket') +local Util = require('util') if not device.wireless_modem then error('Modem is required') diff --git a/sys/apps/pickupRemote.lua b/sys/apps/pickupRemote.lua index 86ef4df..a42d9e4 100644 --- a/sys/apps/pickupRemote.lua +++ b/sys/apps/pickupRemote.lua @@ -2,11 +2,13 @@ if not device.wireless_modem then error('Wireless modem is required') end -require = requireInjector(getfenv(1)) -local GPS = require('gps') -local Event = require('event') -local UI = require('ui') +requireInjector(getfenv(1)) + +local Event = require('event') +local GPS = require('gps') local Socket = require('socket') +local UI = require('ui') +local Util = require('util') multishell.setTitle(multishell.getCurrent(), 'Pickup Remote') diff --git a/sys/apps/recorder.lua b/sys/apps/recorder.lua index 9adfd91..b889475 100644 --- a/sys/apps/recorder.lua +++ b/sys/apps/recorder.lua @@ -14,6 +14,10 @@ local version = "Version 1.1.6" -- Original code by Bomb Bloke -- Modified to integrate with opus os +requireInjector(getfenv(1)) + +local Util = require('util') + local recTerm, oldTerm, arg, showInput, skipLast, lastDelay, curInput = {}, Util.shallowCopy(multishell.term), {...}, false, false, 2, "" local curBlink, oldBlink, tTerm, buffer, colourNum, xPos, yPos, oldXPos, oldYPos, tCol, bCol, xSize, ySize = false, false, {}, {}, {}, 1, 1, 1, 1, colours.white, colours.black, oldTerm.getSize() local greys, buttons = {["0"] = true, ["7"] = true, ["8"] = true, ["f"] = true}, {"l", "r", "m"} diff --git a/sys/apps/refinedManager.lua b/sys/apps/refinedManager.lua index f22dbe1..c0b21a8 100644 --- a/sys/apps/refinedManager.lua +++ b/sys/apps/refinedManager.lua @@ -1,10 +1,10 @@ -local injector = requireInjector or load(http.get('http://pastebin.com/raw/c0TWsScv').readAll())() -require = injector(getfenv(1)) +requireInjector(getfenv(1)) -local UI = require('ui') +local Peripheral = require('peripheral') local RefinedProvider = require('refinedProvider') -local Terminal = require('terminal') -local Peripheral = require('peripheral') +local Terminal = require('terminal') +local UI = require('ui') +local Util = require('util') local controller = RefinedProvider() if not controller:isValid() then diff --git a/sys/apps/shapes.lua b/sys/apps/shapes.lua index da729b2..a43f6d8 100644 --- a/sys/apps/shapes.lua +++ b/sys/apps/shapes.lua @@ -1,7 +1,9 @@ -require = requireInjector(getfenv(1)) -local UI = require('ui') -local GPS = require('gps') +requireInjector(getfenv(1)) + +local GPS = require('gps') local Socket = require('socket') +local UI = require('ui') +local Util = require('util') multishell.setTitle(multishell.getCurrent(), 'Shapes') @@ -11,10 +13,12 @@ turtleId = tonumber(turtleId) local script = [[ -require = requireInjector(getfenv(1)) +requireInjector(getfenv(1)) + local GPS = require('gps') local ChestProvider = require('chestProvider18') local Point = require('point') +local Util = require('util') local itemProvider @@ -245,8 +249,10 @@ end) local levelScript = [[ -require = requireInjector(getfenv(1)) +requireInjector(getfenv(1)) + local Point = require('point') +local Util = require('util') local checkedNodes = { } local nodes = { } diff --git a/sys/apps/shell b/sys/apps/shell index e1af945..9d7278d 100644 --- a/sys/apps/shell +++ b/sys/apps/shell @@ -1,9 +1,16 @@ local parentShell = shell shell = { } -local sandboxEnv = Util.shallowCopy(getfenv(1)) +local sandboxEnv = { } +for k,v in pairs(getfenv(1)) do + sandboxEnv[k] = v +end setmetatable(sandboxEnv, { __index = _G }) +requireInjector(getfenv(1)) + +local Util = require('util') + local DIR = (parentShell and parentShell.dir()) or "" local PATH = (parentShell and parentShell.path()) or ".:/rom/programs" local ALIASES = (parentShell and parentShell.aliases()) or {} @@ -223,8 +230,7 @@ if #tArgs > 0 then return s, m end -require = requireInjector(getfenv(1)) -local Config = require('config') +local Config = require('config') local History = require('history') local config = { diff --git a/sys/apps/simpleMiner.lua b/sys/apps/simpleMiner.lua index 01ce262..fb34c41 100644 --- a/sys/apps/simpleMiner.lua +++ b/sys/apps/simpleMiner.lua @@ -1,6 +1,8 @@ -require = requireInjector(getfenv(1)) -local Point = require('point') +requireInjector(getfenv(1)) + local Logger = require('logger') +local Point = require('point') +local Util = require('util') if device and device.wireless_modem then Logger.setWirelessLogging() diff --git a/sys/apps/storageActivity.lua b/sys/apps/storageActivity.lua index e2b3637..7340c69 100644 --- a/sys/apps/storageActivity.lua +++ b/sys/apps/storageActivity.lua @@ -1,10 +1,11 @@ -require = requireInjector(getfenv(1)) -local Util = require('util') -local Event = require('event') -local UI = require('ui') +requireInjector(getfenv(1)) + +local ChestProvider = require('chestProvider18') +local Event = require('event') +local MEProvider = require('meProvider') local RefinedProvider = require('refinedProvider') -local MEProvider = require('meProvider') -local ChestProvider = require('chestProvider18') +local UI = require('ui') +local Util = require('util') local storage = RefinedProvider() if not storage:isValid() then diff --git a/sys/apps/storageManager.lua b/sys/apps/storageManager.lua index 859d734..62ef357 100644 --- a/sys/apps/storageManager.lua +++ b/sys/apps/storageManager.lua @@ -1,9 +1,11 @@ -require = requireInjector(getfenv(1)) -local Event = require('event') -local UI = require('ui') -local ME = require('me') +requireInjector(getfenv(1)) + local Config = require('config') +local Event = require('event') local Logger = require('logger') +local ME = require('me') +local UI = require('ui') +local Util = require('util') -- Must be a crafty turtle with duck antenna ! -- 3 wide monitor (any side of turtle) diff --git a/sys/apps/supplier.lua b/sys/apps/supplier.lua index 0ae0472..042de28 100644 --- a/sys/apps/supplier.lua +++ b/sys/apps/supplier.lua @@ -1,10 +1,12 @@ -require = requireInjector(getfenv(1)) -local Logger = require('logger') -local Message = require('message') -local Event = require('event') -local Point = require('point') -local TableDB = require('tableDB') +requireInjector(getfenv(1)) + +local Event = require('event') +local Logger = require('logger') local MEProvider = require('meProvider') +local Message = require('message') +local Point = require('point') +local TableDB = require('tableDB') +local Util = require('util') --[[ A supplier turtle for the builder turtle. For larger builds, use @@ -19,7 +21,7 @@ local MEProvider = require('meProvider') ]]-- local ChestProvider = require('chestProvider') -if os.getVersion() == 1.8 then +if Util.getVersion() == 1.8 then ChestProvider = require('chestProvider18') end diff --git a/sys/apps/telnet.lua b/sys/apps/telnet.lua index a9277bc..06ce5f7 100644 --- a/sys/apps/telnet.lua +++ b/sys/apps/telnet.lua @@ -1,7 +1,9 @@ -require = requireInjector(getfenv(1)) -local Event = require('event') -local Socket = require('socket') +requireInjector(getfenv(1)) + +local Event = require('event') +local Socket = require('socket') local Terminal = require('terminal') +local Util = require('util') local remoteId local args = { ... } @@ -69,7 +71,7 @@ while true do print() print('Connection lost') print('Press enter to exit') - read() + pcall(read) break end end diff --git a/sys/apps/trust.lua b/sys/apps/trust.lua index cd631e2..eb67be6 100644 --- a/sys/apps/trust.lua +++ b/sys/apps/trust.lua @@ -1,8 +1,10 @@ -require = requireInjector(getfenv(1)) -local Socket = require('socket') -local SHA1 = require('sha1') +requireInjector(getfenv(1)) + +local Crypto = require('crypto') +local Security = require('security') +local SHA1 = require('sha1') +local Socket = require('socket') local Terminal = require('terminal') -local Crypto = require('crypto') local remoteId local args = { ... } @@ -31,7 +33,7 @@ if not socket then error('Unable to connect to ' .. remoteId .. ' on port 19') end -local publicKey = os.getPublicKey() +local publicKey = Security.getPublicKey() local password = SHA1.sha1(password) socket:write(Crypto.encrypt({ pk = publicKey, dh = os.getComputerID() }, password)) diff --git a/sys/apps/vnc.lua b/sys/apps/vnc.lua index f14e5bc..2e8fbf3 100644 --- a/sys/apps/vnc.lua +++ b/sys/apps/vnc.lua @@ -1,7 +1,9 @@ -require = requireInjector(getfenv(1)) -local Event = require('event') -local Socket = require('socket') +requireInjector(getfenv(1)) + +local Event = require('event') +local Socket = require('socket') local Terminal = require('terminal') +local Util = require('util') local remoteId local args = { ... } diff --git a/sys/autorun/gps.lua b/sys/autorun/gps.lua index 6c5cbe9..5c2617a 100644 --- a/sys/autorun/gps.lua +++ b/sys/autorun/gps.lua @@ -5,7 +5,8 @@ if turtle and device.wireless_modem then if homePt then - require = requireInjector(getfenv(1)) + requireInjector(getfenv(1)) + local Config = require('config') local config = { destructive = false, diff --git a/sys/boot/multishell.boot b/sys/boot/multishell.boot index 127547c..0d3c40d 100644 --- a/sys/boot/multishell.boot +++ b/sys/boot/multishell.boot @@ -2,7 +2,7 @@ print('\nStarting Opus..') LUA_PATH = '/sys/apis' -_G.Util = dofile('sys/apis/util.lua') +local Util = dofile('sys/apis/util.lua') _G.debug = function(...) Util.print(...) end _G.requireInjector = dofile('sys/apis/injector.lua') diff --git a/sys/etc/scripts/follow b/sys/etc/scripts/follow index cf17a1d..115ca1d 100644 --- a/sys/etc/scripts/follow +++ b/sys/etc/scripts/follow @@ -1,9 +1,10 @@ local function follow(id) - require = requireInjector(getfenv(1)) - local Socket = require('socket') - local Point = require('point') + requireInjector(getfenv(1)) + local Event = require('event') + local Point = require('point') + local Socket = require('socket') turtle.status = 'follow ' .. id diff --git a/sys/etc/scripts/level b/sys/etc/scripts/level index f8de70c..8574bc8 100644 --- a/sys/etc/scripts/level +++ b/sys/etc/scripts/level @@ -1,5 +1,7 @@ -require = requireInjector(getfenv(1)) +requireInjector(getfenv(1)) + local Point = require('point') +local Util = require('util') local checkedNodes = { } local nodes = { } diff --git a/sys/etc/scripts/moveTo b/sys/etc/scripts/moveTo index 7db9c52..53c05e3 100644 --- a/sys/etc/scripts/moveTo +++ b/sys/etc/scripts/moveTo @@ -1,6 +1,8 @@ turtle.run(function() - require = requireInjector(getfenv(1)) - local GPS = require('gps') + + requireInjector(getfenv(1)) + + local GPS = require('gps') local Socket = require('socket') local id = {COMPUTER_ID} diff --git a/sys/etc/scripts/obsidian b/sys/etc/scripts/obsidian index af6a749..355f106 100644 --- a/sys/etc/scripts/obsidian +++ b/sys/etc/scripts/obsidian @@ -1,5 +1,7 @@ -require = requireInjector(getfenv(1)) +requireInjector(getfenv(1)) + local Point = require('point') +local Util = require('util') local checkedNodes, nodes diff --git a/sys/etc/scripts/summon b/sys/etc/scripts/summon index 0c00e07..e841622 100644 --- a/sys/etc/scripts/summon +++ b/sys/etc/scripts/summon @@ -1,9 +1,10 @@ local function summon(id) - require = requireInjector(getfenv(1)) - local GPS = require('gps') + requireInjector(getfenv(1)) + + local GPS = require('gps') + local Point = require('point') local Socket = require('socket') - local Point = require('point') turtle.status = 'GPSing' turtle.setPoint({ x = 0, y = 0, z = 0, heading = 0 }) diff --git a/sys/extensions/clipboard.lua b/sys/extensions/clipboard.lua index 4efbaf0..6720276 100644 --- a/sys/extensions/clipboard.lua +++ b/sys/extensions/clipboard.lua @@ -1,3 +1,7 @@ +requireInjector(getfenv(1)) + +local Util = require('util') + _G.clipboard = { internal, data } function clipboard.getData() diff --git a/sys/extensions/device.lua b/sys/extensions/device.lua index 1f56390..06e8e75 100644 --- a/sys/extensions/device.lua +++ b/sys/extensions/device.lua @@ -1,8 +1,9 @@ -_G.device = { } +requireInjector(getfenv(1)) -require = requireInjector(getfenv(1)) local Peripheral = require('peripheral') +_G.device = { } + for _,side in pairs(peripheral.getNames()) do Peripheral.addDevice(device, side) end diff --git a/sys/extensions/os.lua b/sys/extensions/os.lua deleted file mode 100644 index 1828167..0000000 --- a/sys/extensions/os.lua +++ /dev/null @@ -1,172 +0,0 @@ -require = requireInjector(getfenv(1)) -local Config = require('config') -local SHA1 = require('sha1') - -local REGISTRY_DIR = 'usr/.registry' - -local config = { - enable = false, - pocketId = 10, - distance = 8, -} - -local lockId - -function lockScreen() - require = requireInjector(getfenv(1)) - local UI = require('ui') - local Event = require('event') - - local center = math.floor(UI.term.width / 2) - - local page = UI.Page({ - backgroundColor = colors.blue, - prompt = UI.Text({ - x = center - 9, - y = math.floor(UI.term.height / 2), - value = 'Password', - }), - password = UI.TextEntry({ - x = center, - y = math.floor(UI.term.height / 2), - width = 8, - limit = 8 - }), - statusBar = UI.StatusBar(), - accelerators = { - q = 'back', - }, - }) - - function page:eventHandler(event) - if event.type == 'key' and event.key == 'enter' then - Config.load('os', config) - if SHA1.sha1(self.password.value) == config.password then - os.locked = false - Event.exitPullEvents() - lockId = false - return true - else - self.statusBar:timedStatus('Invalid Password', 3) - end - end - UI.Page.eventHandler(self, event) - end - - UI:setPage(page) - Event.pullEvents() -end - -function os.verifyPassword(password) - Config.load('os', config) - return config.password and password == config.password -end - -function os.getSecretKey() - Config.load('os', config) - if not config.secretKey then - config.secretKey = math.random(100000, 999999) - Config.update('os', config) - end - return config.secretKey -end - -function os.getPublicKey() - - local exchange = { - base = 11, - primeMod = 625210769 - } - - local function modexp(base, exponent, modulo) - local remainder = base - - for i = 1, exponent-1 do - remainder = remainder * remainder - if remainder >= modulo then - remainder = remainder % modulo - end - end - - return remainder - end - - local secretKey = os.getSecretKey() - return modexp(exchange.base, secretKey, exchange.primeMod) -end - -function os.updatePassword(password) - Config.load('os', config) - config.password = password - Config.update('os', config) -end - -function os.getPassword() - Config.load('os', config) - return config.password -end - -os.lock = function() - --os.locked = true - - if not lockId then - lockId = multishell.openTab({ - title = 'Lock', - env = getfenv(1), - fn = lockScreen, - focused = true, - }) - end -end - -os.unlock = function() - os.locked = false - - if lockId then - multishell.terminate(lockId) - lockId = nil - end -end - -function os.isTurtle() - return not not turtle -end - -function os.isAdvanced() - return term.native().isColor() -end - -function os.isPocket() - return not not pocket -end - -function os.getVersion() - local version - - if _CC_VERSION then - version = tonumber(_CC_VERSION:gmatch('[%d]+%.?[%d][%d]', '%1')()) - end - if not version and _HOST then - version = tonumber(_HOST:gmatch('[%d]+%.?[%d][%d]', '%1')()) - end - - return version or 1.7 -end - --- move completely into overview --- just post event from appstore -function os.registerApp(app, key) - - app.key = SHA1.sha1(key) - Util.writeTable(fs.combine(REGISTRY_DIR, app.key), app) - os.queueEvent('os_register_app') -end - -function os.unregisterApp(key) - - local filename = fs.combine(REGISTRY_DIR, SHA1.sha1(key)) - if fs.exists(filename) then - fs.delete(filename) - os.queueEvent('os_register_app') - end -end diff --git a/sys/extensions/pathfind.lua b/sys/extensions/pathfind.lua index a94a62e..ef96342 100644 --- a/sys/extensions/pathfind.lua +++ b/sys/extensions/pathfind.lua @@ -2,10 +2,11 @@ if not turtle then return end -require = requireInjector(getfenv(1)) -local Grid = require ("jumper.grid") +requireInjector(getfenv(1)) + +local Grid = require ("jumper.grid") local Pathfinder = require ("jumper.pathfinder") -local Point = require('point') +local Point = require('point') local WALKABLE = 0 diff --git a/sys/extensions/scheduler.lua b/sys/extensions/scheduler.lua index 7da3677..6a0a4a7 100644 --- a/sys/extensions/scheduler.lua +++ b/sys/extensions/scheduler.lua @@ -2,6 +2,10 @@ if not turtle then return end +requireInjector(getfenv(1)) + +local Util = require('util') + local Scheduler = { uid = 0, queue = { }, diff --git a/sys/extensions/tgps.lua b/sys/extensions/tgps.lua index e77f85d..fec95e9 100644 --- a/sys/extensions/tgps.lua +++ b/sys/extensions/tgps.lua @@ -2,7 +2,7 @@ if not turtle then return end -require = requireInjector(getfenv(1)) +requireInjector(getfenv(1)) local GPS = require('gps') function turtle.enableGPS(timeout) diff --git a/sys/extensions/tl3.lua b/sys/extensions/tl3.lua index 3c1b7b1..09ff41f 100644 --- a/sys/extensions/tl3.lua +++ b/sys/extensions/tl3.lua @@ -2,6 +2,10 @@ if not turtle then return end +requireInjector(getfenv(1)) + +local Util = require('util') + local function noop() end turtle.point = { x = 0, y = 0, z = 0, heading = 0 } diff --git a/sys/extensions/vfs.lua b/sys/extensions/vfs.lua index 3d6f349..84fe862 100644 --- a/sys/extensions/vfs.lua +++ b/sys/extensions/vfs.lua @@ -2,7 +2,9 @@ if fs.native then return end -require = requireInjector(getfenv(1)) +requireInjector(getfenv(1)) +local Util = require('util') + fs.native = Util.shallowCopy(fs) local fstypes = { } diff --git a/sys/network/samba.lua b/sys/network/samba.lua index a402949..e4d156d 100644 --- a/sys/network/samba.lua +++ b/sys/network/samba.lua @@ -1,5 +1,5 @@ +local Event = require('event') local Socket = require('socket') -local Event = require('event') local fileUid = 0 local fileHandles = { } diff --git a/sys/network/snmp.lua b/sys/network/snmp.lua index 20fdfd1..8ba6857 100644 --- a/sys/network/snmp.lua +++ b/sys/network/snmp.lua @@ -1,6 +1,7 @@ +local Event = require('event') +local GPS = require('gps') local Socket = require('socket') -local GPS = require('gps') -local Event = require('event') +local Util = require('util') -- move this into gps api local gpsRequested diff --git a/sys/network/telnet.lua b/sys/network/telnet.lua index ef6eeb3..35da61a 100644 --- a/sys/network/telnet.lua +++ b/sys/network/telnet.lua @@ -1,10 +1,13 @@ +local Event = require('event') local Socket = require('socket') -local Event = require('event') +local Util = require('util') local function telnetHost(socket) - require = requireInjector(getfenv(1)) + requireInjector(getfenv(1)) + local Event = require('event') + local methods = { 'clear', 'clearLine', 'setCursorPos', 'write', 'blit', 'setTextColor', 'setTextColour', 'setBackgroundColor', 'setBackgroundColour', 'scroll', 'setCursorBlink', } diff --git a/sys/network/trust.lua b/sys/network/trust.lua index 10f6595..4e5344a 100644 --- a/sys/network/trust.lua +++ b/sys/network/trust.lua @@ -1,6 +1,8 @@ -local Socket = require('socket') -local Event = require('event') -local Crypto = require('crypto') +local Crypto = require('crypto') +local Event = require('event') +local Security = require('security') +local Socket = require('socket') +local Util = require('util') Event.addRoutine(function() @@ -12,7 +14,7 @@ Event.addRoutine(function() local data = socket:read(2) if data then - local password = os.getPassword() + local password = Security.getPassword() if not password then socket:write({ msg = 'No password has been set' }) else diff --git a/sys/network/vnc.lua b/sys/network/vnc.lua index 6803269..3f92a76 100644 --- a/sys/network/vnc.lua +++ b/sys/network/vnc.lua @@ -1,5 +1,6 @@ -local Socket = require('socket') local Event = require('event') +local Socket = require('socket') +local Util = require('util') local function wrapTerm(socket, termInfo) local methods = { 'blit', 'clear', 'clearLine', 'setCursorPos', 'write', diff --git a/sys/services/device.lua b/sys/services/device.lua index aeb81e2..3c2c2c1 100644 --- a/sys/services/device.lua +++ b/sys/services/device.lua @@ -1,6 +1,8 @@ -require = requireInjector(getfenv(1)) -local Event = require('event') +requireInjector(getfenv(1)) + +local Event = require('event') local Peripheral = require('peripheral') +local Util = require('util') multishell.setTitle(multishell.getCurrent(), 'Devices') diff --git a/sys/services/gpshost.lua b/sys/services/gpshost.lua index 6eaf7d8..e4e1a62 100644 --- a/sys/services/gpshost.lua +++ b/sys/services/gpshost.lua @@ -1,6 +1,6 @@ if device.wireless_modem then - require = requireInjector(getfenv(1)) + requireInjector(getfenv(1)) local Config = require('config') local config = { host = false, diff --git a/sys/services/log.lua b/sys/services/log.lua index 6bf1fa0..1ccf3b8 100644 --- a/sys/services/log.lua +++ b/sys/services/log.lua @@ -1,5 +1,7 @@ -require = requireInjector(getfenv(1)) +requireInjector(getfenv(1)) + local Terminal = require('terminal') +local Util = require('util') multishell.setTitle(multishell.getCurrent(), 'Debug') diff --git a/sys/services/network.lua b/sys/services/network.lua index 701f0df..36cc3ec 100644 --- a/sys/services/network.lua +++ b/sys/services/network.lua @@ -1,4 +1,5 @@ -require = requireInjector(getfenv(1)) +requireInjector(getfenv(1)) + local Util = require('util') multishell.setTitle(multishell.getCurrent(), 'Net Daemon') @@ -6,7 +7,7 @@ multishell.setTitle(multishell.getCurrent(), 'Net Daemon') _G.network = { } local function netUp() - require = requireInjector(getfenv(1)) + requireInjector(getfenv(1)) local Event = require('event') local files = fs.list('/sys/network')