mirror of
				https://github.com/kepler155c/opus
				synced 2025-10-31 07:33:00 +00:00 
			
		
		
		
	require improvements, remove global Util
This commit is contained in:
		| @@ -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 }) | ||||
|   | ||||
		Reference in New Issue
	
	Block a user
	 kepler155c@gmail.com
					kepler155c@gmail.com