Advertisement
minizbot

misc apis v2

Sep 20th, 2014
100
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 4.97 KB | None | 0 0
  1. Data = {}
  2. Class = {}
  3. local Class_Meta = {}
  4. Class_Meta.__index = function(t,k)
  5.     return rawget(t,k) or rawget(t._base, k) or t._base.handleIndex(t,k)
  6. end
  7. Class_Meta.__newindex = function(t,k,v)
  8.     if rawget(t, "handleNewIndex") ~= nil then
  9.         return rawget(t, "handleNewIndex")(t,k,v)
  10.     elseif t._base["handleNewIndex"] ~= nil and type(t._base["handleNewIndex"]) == "function" and ret == nil then
  11.         return t._base["handleNewIndex"](t,k,v)
  12.     else
  13.         return rawset(t,k,v)
  14.     end
  15. end
  16. function Class:new(base)
  17.     local c = {}    -- a new class instance
  18.     rawset(c, "_base", base)
  19.     setmetatable(c, Class_Meta)
  20.     if c.init ~= nil then
  21.         c:init()
  22.     end
  23.     return c
  24. end
  25. function split(pString, pPattern)
  26.     local Table = {}  -- NOTE: use {n = 0} in Lua-5.0
  27.     local fpat = "(.-)" .. pPattern
  28.     local last_end = 1
  29.     local s, e, cap = pString:find(fpat, 1)
  30.     while s do
  31.         if s ~= 1 or cap ~= "" then
  32.             table.insert(Table,cap)
  33.         end
  34.         last_end = e+1
  35.         sleep(0.05)
  36.         s, e, cap = pString:find(fpat, last_end)
  37.     end
  38.     if last_end <= #pString then
  39.             cap = pString:sub(last_end)
  40.             table.insert(Table, cap)
  41.     end
  42.     return Table
  43. end
  44. function hexDump(str)
  45.     return string.gsub(str, "(.)", function(c)
  46.         return string.format("%02X", string.byte(c))
  47.     end)
  48. end
  49. function strDump(hexStr)
  50.     return string.gsub(hexStr, "(%x%x) ?", function(c) return string.char(tonumber(c, 16)) end)
  51. end
  52. function Data.handleIndex(t, k)
  53.     if type(k) == "table" then
  54.         return split(rawget(t, k[2]),t.sep)[k[1]]
  55.     elseif type(k) == "number" then
  56.         return split(rawget(t, "data"), t.sep)[k]
  57.     else
  58.         return rawget(t,k)
  59.     end
  60. end
  61. function Data.handleNewIndex(t,k,v)
  62.     if type(k) == "table" then
  63.         local data = split(rawget(t, k[2]), t.sep)
  64.         if v == nil then
  65.             table.remove(data, k[1])
  66.         else
  67.             data[k[1]] = v
  68.         end
  69.         return rawset(t, k[2], table.concat(data, t.sep))
  70.     elseif type(k) == "number" then
  71.         local data = split(rawget(t, "data"), t.sep)
  72.         if v == nil then
  73.             table.remove(data, k)
  74.         else
  75.             data[k] = v
  76.         end
  77.         return rawset(t, "data", table.concat(data, t.sep))
  78.     else
  79.         return rawset(t,k,v)
  80.     end
  81. end
  82. function Data:new(dat, Sep)
  83.     local dat = dat or {}
  84.     local s = Class:new(self)
  85.     s.sep = Sep or "::"
  86.     s.data = table.concat(dat, s.sep)
  87.     return s
  88. end
  89. function Data:init()
  90.     return self
  91. end
  92. function Data:checkField(name)
  93.     if name == "sep" or name == "" or name == nil then
  94.         return "data"
  95.     else
  96.         return name
  97.     end
  98. end
  99. function Data:addFeild(name)
  100.     if name == "sep" then
  101.         error("attempt to overwrite separator", 2)
  102.     else
  103.         self[name] = ""
  104.     end
  105.     return self
  106. end
  107. function Data:returnData(field)
  108.         t = split(self[self:checkField(field)], self.sep)
  109.         return unpack(t)
  110. end
  111. function Data:addData(aInfo, feild)
  112.     self[{#split(self.data, self.sep) + 1, self:checkField(field)}] = aInfo
  113.     return self
  114. end
  115. function Data:removeData(index, field)
  116.     self[{index, self:checkField(field)}] = nil
  117.     return self
  118. end
  119. function Data:hexDump(field)
  120.     return hexDump(self[self:checkField(field)])
  121. end
  122. function Data:loadFromHex(hexStr, field)
  123.     self[self:checkField(field)] = strDump(hexStr)
  124. end
  125. local function rollDir(rule)
  126.     if string.find(rule, ">") then
  127.         return ">"
  128.     end
  129.     if string.find(rule, "<") then
  130.         return "<"
  131.     end
  132. end
  133. function rollString(ruleObj, stringToRoll)
  134.     ruleData = split(ruleObj.data, ruleObj.sep)
  135.     RolledString = ""
  136.     for k,v in pairs(ruleData) do
  137.         local rule = rollDir(v)
  138.         local splitRule = split(v, rule)
  139.         if k == 1 then
  140.             if rule == ">" then
  141.                 RolledString = string.gsub(stringToRoll, splitRule[1], splitRule[2])
  142.             elseif rule == "<" then
  143.                 RolledString = string.gsub(stringToRoll, splitRule[2], splitRule[1])
  144.             else
  145.                 error("invaild Rule", 2)
  146.             end
  147.         else
  148.             if rule == ">" then
  149.                 RolledString = string.gsub(RolledString, splitRule[1], splitRule[2])
  150.             elseif rule == "<" then
  151.                 RolledString = string.gsub(RolledString, splitRule[2], splitRule[1])
  152.             else
  153.                 error("invaild Rule", 2)
  154.             end
  155.         end
  156.     end
  157.     return RolledString
  158. end
  159. function miniScram()
  160.     key = {}
  161.     iv = {}
  162.     for i=1, 16 do -- Iterate 16 times.
  163.         key[i] = math.random(0, 0xFF) -- Every value in a block must be between 0 and 255 (0xFF).
  164.         iv[i] = math.random(0, 0xFF)
  165.     end
  166.     return key, iv
  167. end
  168. function installAPI(code, name)
  169.     local webHandle = http.get("http://pastebin.com/raw.php?i="..code)
  170.     if webHandle then
  171.         local apiData = webHandle.readAll()
  172.         webHandle.close()
  173.         local tEnv = {}
  174.         setmetatable( tEnv, { __index = _G } )
  175.         local fnAPI, err = loadstring( apiData )
  176.         if fnAPI then
  177.             setfenv( fnAPI, tEnv )
  178.             fnAPI()
  179.         end
  180.         local tAPI = {}
  181.         for k,v in pairs( tEnv ) do
  182.             tAPI[k] =  v
  183.         end
  184.         _G[name] = tAPI
  185.         else
  186.             print("Could not retrieve API: "..name.."!")
  187.             print("Ensure that the HTTP API is enabled.")
  188.             return false
  189.         end
  190. end
  191. function webLoad(url, ...)
  192.     local webHandle = http.get("http://"..url)
  193.     if webHandle then
  194.         local info = webHandle.readAll()
  195.         webHandle.close()
  196.         local func = loadstring(info)
  197.         return func(unpack(...))
  198.     end
  199. end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement