mirror of
https://github.com/kepler155c/opus
synced 2025-01-11 16:20:26 +00:00
require improvements, remove global Util
This commit is contained in:
parent
2b1d96ab37
commit
ae7508e89b
@ -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
|
||||
|
@ -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()
|
||||
|
@ -1,3 +1,5 @@
|
||||
local Util = require('util')
|
||||
|
||||
local Event = {
|
||||
uid = 1, -- unique id for handlers
|
||||
routines = { }, -- coroutines
|
||||
|
@ -1,4 +1,5 @@
|
||||
local UI = require('ui')
|
||||
local Util = require('util')
|
||||
local UI = require('ui')
|
||||
|
||||
return function(args)
|
||||
|
||||
|
@ -1,3 +1,5 @@
|
||||
local Util = require('util')
|
||||
|
||||
local ramfs = { }
|
||||
|
||||
function ramfs.mount(dir, nodeType)
|
||||
|
@ -1,4 +1,5 @@
|
||||
local synchronized = require('sync')
|
||||
local Util = require('util')
|
||||
|
||||
local urlfs = { }
|
||||
|
||||
|
@ -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)
|
||||
|
@ -1,3 +1,4 @@
|
||||
local Util = require('util')
|
||||
local TableDB = require('tableDB')
|
||||
|
||||
local itemDB = TableDB({ fileName = 'usr/etc/items.db' })
|
||||
|
@ -1,3 +1,5 @@
|
||||
local Util = require('util')
|
||||
|
||||
local ME = {
|
||||
jobList = { }
|
||||
}
|
||||
|
@ -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()
|
||||
|
@ -1,3 +1,5 @@
|
||||
local Util = require('util')
|
||||
|
||||
local Peripheral = { }
|
||||
|
||||
local function getDeviceList()
|
||||
|
@ -1,3 +1,4 @@
|
||||
local Util = require('util')
|
||||
local Logger = require('logger')
|
||||
|
||||
local Profile = {
|
||||
|
@ -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()
|
||||
|
||||
|
@ -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
|
||||
|
56
sys/apis/security.lua
Normal file
56
sys/apis/security.lua
Normal file
@ -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
|
@ -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,
|
||||
})
|
||||
|
@ -1,4 +1,5 @@
|
||||
local class = require('class')
|
||||
local Util = require('util')
|
||||
|
||||
local TableDB = class()
|
||||
function TableDB:init(args)
|
||||
|
@ -1,3 +1,5 @@
|
||||
local Util = require('util')
|
||||
|
||||
local Terminal = { }
|
||||
|
||||
function Terminal.scrollable(ct, size)
|
||||
|
@ -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
|
||||
|
||||
|
@ -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 })
|
||||
|
@ -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' },
|
||||
|
@ -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', ...)
|
||||
|
@ -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
|
||||
|
@ -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', ...)
|
||||
|
@ -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', ...)
|
||||
|
@ -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', ...)
|
||||
|
@ -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'
|
||||
|
||||
|
@ -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')
|
||||
|
||||
|
@ -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')
|
||||
|
||||
|
@ -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'
|
||||
|
@ -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('/')) },
|
||||
|
@ -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', ...)
|
||||
|
@ -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 = ' '
|
||||
|
@ -1,4 +1,5 @@
|
||||
require = requireInjector(getfenv(1))
|
||||
requireInjector(getfenv(1))
|
||||
|
||||
Base64 = require('base64')
|
||||
|
||||
local args = { ... }
|
||||
|
@ -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
|
||||
|
||||
|
@ -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')
|
||||
|
||||
|
@ -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
|
||||
|
||||
|
@ -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
|
||||
|
@ -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')
|
||||
|
||||
|
@ -1,4 +1,5 @@
|
||||
require = requireInjector(getfenv(1))
|
||||
requireInjector(getfenv(1))
|
||||
|
||||
local Terminal = require('terminal')
|
||||
|
||||
local args = { ... }
|
||||
|
@ -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()
|
||||
|
||||
|
@ -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()
|
||||
|
||||
|
6
sys/apps/mount.lua
Normal file
6
sys/apps/mount.lua
Normal file
@ -0,0 +1,6 @@
|
||||
local args = { ... }
|
||||
|
||||
local target = table.remove(args, 1)
|
||||
target = shell.resolve(target)
|
||||
|
||||
fs.mount(target, unpack(args))
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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')
|
||||
|
@ -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')
|
||||
|
||||
|
@ -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"}
|
||||
|
@ -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
|
||||
|
@ -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 = { }
|
||||
|
@ -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 = {
|
||||
|
@ -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()
|
||||
|
@ -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
|
||||
|
@ -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)
|
||||
|
@ -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
|
||||
|
||||
|
@ -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
|
||||
|
@ -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))
|
||||
|
@ -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 = { ... }
|
||||
|
@ -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,
|
||||
|
@ -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')
|
||||
|
||||
|
@ -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
|
||||
|
||||
|
@ -1,5 +1,7 @@
|
||||
require = requireInjector(getfenv(1))
|
||||
requireInjector(getfenv(1))
|
||||
|
||||
local Point = require('point')
|
||||
local Util = require('util')
|
||||
|
||||
local checkedNodes = { }
|
||||
local nodes = { }
|
||||
|
@ -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}
|
||||
|
@ -1,5 +1,7 @@
|
||||
require = requireInjector(getfenv(1))
|
||||
requireInjector(getfenv(1))
|
||||
|
||||
local Point = require('point')
|
||||
local Util = require('util')
|
||||
|
||||
local checkedNodes, nodes
|
||||
|
||||
|
@ -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 })
|
||||
|
@ -1,3 +1,7 @@
|
||||
requireInjector(getfenv(1))
|
||||
|
||||
local Util = require('util')
|
||||
|
||||
_G.clipboard = { internal, data }
|
||||
|
||||
function clipboard.getData()
|
||||
|
@ -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
|
||||
|
@ -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
|
@ -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
|
||||
|
||||
|
@ -2,6 +2,10 @@ if not turtle then
|
||||
return
|
||||
end
|
||||
|
||||
requireInjector(getfenv(1))
|
||||
|
||||
local Util = require('util')
|
||||
|
||||
local Scheduler = {
|
||||
uid = 0,
|
||||
queue = { },
|
||||
|
@ -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)
|
||||
|
@ -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 }
|
||||
|
@ -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 = { }
|
||||
|
@ -1,5 +1,5 @@
|
||||
local Event = require('event')
|
||||
local Socket = require('socket')
|
||||
local Event = require('event')
|
||||
|
||||
local fileUid = 0
|
||||
local fileHandles = { }
|
||||
|
@ -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
|
||||
|
@ -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', }
|
||||
|
@ -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
|
||||
|
@ -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',
|
||||
|
@ -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')
|
||||
|
||||
|
@ -1,6 +1,6 @@
|
||||
if device.wireless_modem then
|
||||
|
||||
require = requireInjector(getfenv(1))
|
||||
requireInjector(getfenv(1))
|
||||
local Config = require('config')
|
||||
local config = {
|
||||
host = false,
|
||||
|
@ -1,5 +1,7 @@
|
||||
require = requireInjector(getfenv(1))
|
||||
requireInjector(getfenv(1))
|
||||
|
||||
local Terminal = require('terminal')
|
||||
local Util = require('util')
|
||||
|
||||
multishell.setTitle(multishell.getCurrent(), 'Debug')
|
||||
|
||||
|
@ -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')
|
||||
|
Loading…
Reference in New Issue
Block a user