Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- Data = {}
- Class = {}
- local Class_Meta = {}
- Class_Meta.__index = function(t,k)
- return rawget(t,k) or rawget(t._base, k) or t._base.handleIndex(t,k)
- end
- Class_Meta.__newindex = function(t,k,v)
- if rawget(t, "handleNewIndex") ~= nil then
- return rawget(t, "handleNewIndex")(t,k,v)
- elseif t._base["handleNewIndex"] ~= nil and type(t._base["handleNewIndex"]) == "function" and ret == nil then
- return t._base["handleNewIndex"](t,k,v)
- else
- return rawset(t,k,v)
- end
- end
- function Class:new(base)
- local c = {} -- a new class instance
- rawset(c, "_base", base)
- setmetatable(c, Class_Meta)
- if c.init ~= nil then
- c:init()
- end
- return c
- end
- function split(pString, pPattern)
- local Table = {} -- NOTE: use {n = 0} in Lua-5.0
- local fpat = "(.-)" .. pPattern
- local last_end = 1
- local s, e, cap = pString:find(fpat, 1)
- while s do
- if s ~= 1 or cap ~= "" then
- table.insert(Table,cap)
- end
- last_end = e+1
- sleep(0.05)
- s, e, cap = pString:find(fpat, last_end)
- end
- if last_end <= #pString then
- cap = pString:sub(last_end)
- table.insert(Table, cap)
- end
- return Table
- end
- function hexDump(str)
- return string.gsub(str, "(.)", function(c)
- return string.format("%02X", string.byte(c))
- end)
- end
- function strDump(hexStr)
- return string.gsub(hexStr, "(%x%x) ?", function(c) return string.char(tonumber(c, 16)) end)
- end
- function Data.handleIndex(t, k)
- if type(k) == "table" then
- return split(rawget(t, k[2]),t.sep)[k[1]]
- elseif type(k) == "number" then
- return split(rawget(t, "data"), t.sep)[k]
- else
- return rawget(t,k)
- end
- end
- function Data.handleNewIndex(t,k,v)
- if type(k) == "table" then
- local data = split(rawget(t, k[2]), t.sep)
- if v == nil then
- table.remove(data, k[1])
- else
- data[k[1]] = v
- end
- return rawset(t, k[2], table.concat(data, t.sep))
- elseif type(k) == "number" then
- local data = split(rawget(t, "data"), t.sep)
- if v == nil then
- table.remove(data, k)
- else
- data[k] = v
- end
- return rawset(t, "data", table.concat(data, t.sep))
- else
- return rawset(t,k,v)
- end
- end
- function Data:new(dat, Sep)
- local dat = dat or {}
- local s = Class:new(self)
- s.sep = Sep or "::"
- s.data = table.concat(dat, s.sep)
- return s
- end
- function Data:init()
- return self
- end
- function Data:checkField(name)
- if name == "sep" or name == "" or name == nil then
- return "data"
- else
- return name
- end
- end
- function Data:addFeild(name)
- if name == "sep" then
- error("attempt to overwrite separator", 2)
- else
- self[name] = ""
- end
- return self
- end
- function Data:returnData(field)
- t = split(self[self:checkField(field)], self.sep)
- return unpack(t)
- end
- function Data:addData(aInfo, feild)
- self[{#split(self.data, self.sep) + 1, self:checkField(field)}] = aInfo
- return self
- end
- function Data:removeData(index, field)
- self[{index, self:checkField(field)}] = nil
- return self
- end
- function Data:hexDump(field)
- return hexDump(self[self:checkField(field)])
- end
- function Data:loadFromHex(hexStr, field)
- self[self:checkField(field)] = strDump(hexStr)
- end
- local function rollDir(rule)
- if string.find(rule, ">") then
- return ">"
- end
- if string.find(rule, "<") then
- return "<"
- end
- end
- function rollString(ruleObj, stringToRoll)
- ruleData = split(ruleObj.data, ruleObj.sep)
- RolledString = ""
- for k,v in pairs(ruleData) do
- local rule = rollDir(v)
- local splitRule = split(v, rule)
- if k == 1 then
- if rule == ">" then
- RolledString = string.gsub(stringToRoll, splitRule[1], splitRule[2])
- elseif rule == "<" then
- RolledString = string.gsub(stringToRoll, splitRule[2], splitRule[1])
- else
- error("invaild Rule", 2)
- end
- else
- if rule == ">" then
- RolledString = string.gsub(RolledString, splitRule[1], splitRule[2])
- elseif rule == "<" then
- RolledString = string.gsub(RolledString, splitRule[2], splitRule[1])
- else
- error("invaild Rule", 2)
- end
- end
- end
- return RolledString
- end
- function miniScram()
- key = {}
- iv = {}
- for i=1, 16 do -- Iterate 16 times.
- key[i] = math.random(0, 0xFF) -- Every value in a block must be between 0 and 255 (0xFF).
- iv[i] = math.random(0, 0xFF)
- end
- return key, iv
- end
- function installAPI(code, name)
- local webHandle = http.get("http://pastebin.com/raw.php?i="..code)
- if webHandle then
- local apiData = webHandle.readAll()
- webHandle.close()
- local tEnv = {}
- setmetatable( tEnv, { __index = _G } )
- local fnAPI, err = loadstring( apiData )
- if fnAPI then
- setfenv( fnAPI, tEnv )
- fnAPI()
- end
- local tAPI = {}
- for k,v in pairs( tEnv ) do
- tAPI[k] = v
- end
- _G[name] = tAPI
- else
- print("Could not retrieve API: "..name.."!")
- print("Ensure that the HTTP API is enabled.")
- return false
- end
- end
- function webLoad(url, ...)
- local webHandle = http.get("http://"..url)
- if webHandle then
- local info = webHandle.readAll()
- webHandle.close()
- local func = loadstring(info)
- return func(unpack(...))
- end
- end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement