Guest User

bankAPI.lua

a guest
Nov 30th, 2015
71
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 3.61 KB | None | 0 0
  1. local component = require( "component" )
  2. local term = require( "term" )
  3. local os = require( "os" )
  4. local filesystem = require( "filesystem" )
  5. local math = require( "math" )
  6. local serialization = require( "serialization" )
  7. local tableToString = serialization.serialize
  8. local stringToTable = serialization.unserialize
  9. local encData = component.cipher.encrypt
  10. local decData = component.cipher.decrypt
  11. local string = require( "string" )
  12. bankDB = {}
  13. local playersAccounts=-1
  14. local enableEncryption=true
  15. local dbFileName="acBank.db"
  16. local dbFilePath="/cBank/"
  17.  
  18.  
  19. local bankAPI = {}
  20.  
  21. function bankAPI.returnUUID( playerName )
  22.   component.command_block.setCommand( "/uuid "..playerName )
  23.   _, uuid = component.command_block.executeCommand()
  24.   uuid = string.sub(uuid, 19) --Cut the first 19 chars
  25.   return uuid
  26. end
  27.  
  28. function bankAPI.saveDB(crypted)
  29.   if not crypted then
  30.     enableEncryption=false
  31.   else
  32.     enableEncryption=true
  33.   end
  34.   prepareDatabaseSave(dbFileName)
  35. end
  36.  
  37. function prepareDatabaseSave(fileName)
  38.   if filesystem.exists(dbFilePath..fileName) then
  39.     local file=io.open(dbFilePath..fileName,"w")
  40.     if bankDB.TheRealKANi then
  41.       tmp=tableToString(bankDB)
  42.       if enableEncryption then
  43.         file:write(encData(tmp))
  44.       else
  45.         file:write(tmp)
  46.       end
  47.       file:close()
  48.     else
  49.       tmp=tableToString(bankDB)
  50.       if enableEncryption then
  51.         file:write(encData(tmp))
  52.       else
  53.         file:write(tableToString(bankDB))
  54.       end
  55.       file:close()
  56.       print("Saving Blank Account file"..fileName)
  57.     end
  58.   else
  59.     local file=io.open(dbFilePath..fileName,"a")
  60.     if enableEncryption then
  61.       file:write(encData(tmp))
  62.     else
  63.       file:write(tableToString(tmp))
  64.     end
  65.     file:close()
  66.   end
  67. end
  68.  
  69. function bankAPI.loadDB()
  70.   prepareDatabaseLoad(dbFileName)
  71. end
  72.  
  73. function prepareDatabaseLoad(fileName)
  74.   if filesystem.exists(dbFilePath..fileName) then
  75.     local file=io.open(dbFilePath..fileName,"r")
  76.       if file:read(1) == "{" then
  77.           bankDB=stringToTable("{"..file:read())
  78.       elseif not enableEncryption then
  79.           file:close()
  80.           local file=io.open(dbFilePath..fileName,"r")
  81.           bankDB=stringToTable(decData(file:read()))
  82.           print("Encrypted DB Found")
  83.           if bankDB.TheRealKANi then
  84.  
  85.             if bankDB.TheRealKANi.name=="TheRealKANi" then
  86.               print("DB Decrypted")
  87.               print("Remember to enable encryption.!")
  88.               enableEncryption=true
  89.             else
  90.               print("Cannot Decrypt DB.!")
  91.             end
  92.  
  93.           else
  94.             print("Can't decrypt DB")
  95.             print("Possible Corruption")
  96.           end
  97.  
  98.       else
  99.         file:close()
  100.         local file=io.open(dbFilePath..fileName,"r")
  101.         bankDB=stringToTable(decData(file:read()))
  102.       end
  103.   else
  104.     print("Cannot Find DB named: '"..dbFileName.."'")
  105.     print("in path: "..dbFilePath)
  106.     print("Creating "..dbFileName)
  107.     bankAPI.addPlayersToDB()
  108.     print(tostring(playersAccounts).." Players Accounts Added")
  109.     bankAPI.saveDB(enableEncryption)
  110.   end
  111.   --return bankDB
  112. end
  113.  
  114. function bankAPI.addPlayersToDB()
  115.   for k,v in ipairs(component.debug.getPlayers()) do
  116.     if bankAPI.debug then
  117.       print("Parseing Players")
  118.     end
  119.     parsePlayer(v,0,tostring(math.floor(math.random(1,9999))),true)
  120.   end
  121. end
  122.  
  123. function parsePlayer(playerName,accountAmount,password,returnUUID)
  124.   if bankAPI.debug then
  125.     print("Running Function")
  126.   end
  127.   bankDB[tostring(playerName)]={["coinsStored"]=tonumber(accountAmount),["password"]=tostring(password),["uuid"]=bankAPI.returnUUID(playerName),["name"]=playerName}
  128.   for k in pairs(bankDB) do
  129.     playersAccounts=playersAccounts+1
  130.   end
  131. end
  132.  
  133. return bankAPI
Add Comment
Please, Sign In to add comment