Advertisement
faubiguy

Passlock 2

Mar 13th, 2013
96
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 3.41 KB | None | 0 0
  1. oldPull = os.pullEvent
  2. os.pullEvent = os.pullEventRaw
  3. term.clear()
  4. term.setCursorPos(1, 1)
  5. termX, termY = term.getSize()
  6.  
  7. if not fs.isDir('.PasswordFiles') then
  8.  if fs.exists('.PasswordFiles') then
  9.   fs.delete('.PasswordFiles')
  10.  end
  11.  fs.makeDir('.PasswordFiles')
  12. end
  13.  
  14. if not fs.exists(".PasswordFiles/Password") then
  15.  print("Password file not found. Access granted")
  16.  error()
  17. else
  18.  passFile = fs.open(".PasswordFiles/Password", "r")
  19.  pass = passFile.readLine()
  20.  passFile.close()
  21. end
  22.  
  23. local accessCode = ""
  24. local file = fs.open(".PasswordFiles/AccessCode", "r")
  25. if file then
  26.  accessCode = file.readAll()
  27.  file.close()
  28. end
  29.  
  30.  term.write("You have _ attempts to enter correct password")
  31.  
  32.  --[[function accessCodeMatch(diskACfile)
  33.   equal = true
  34.   if not fs.exists(".PasswordFiles/AccessCode") then return false
  35.   else
  36.    pcACfile = fs.open(".PasswordFiles/AccessCode", "rb")
  37.    for n = 1, 32 do
  38.     pcByte = pcACfile.read()
  39.     diskByte = diskACfile.read()
  40.     if pcByte ~= diskByte then
  41.      equal = false
  42.      break
  43.     end
  44.    end
  45.    pcACfile.close()
  46.    return equal
  47.   end
  48.  end]]  
  49.  
  50.  --[[function checkDrive(sSide)
  51.   if sSide == "all" then
  52.    return checkDrive("bottom") or checkDrive("top") or checkDrive("left") or checkDrive("right") or checkDrive("front") or checkDrive("back")
  53.   else if (sSide == "bottom") or (sSide == "top") or (sSide == "left") or (sSide == "right") or (sSide == "front") or (sSide == "back") then
  54.    if disk.isPresent(sSide) then
  55.     if disk.hasData(sSide) then
  56.      if fs.exists(disk.getMountPath(sSide) .. "/AccessCode") then
  57.       accessCodeFile = fs.open(disk.getMountPath(sSide) .. "/AccessCode", "rb")
  58.       if accessCodeMatch(accessCodeFile) then
  59.        accessCodeFile.close()
  60.        return true
  61.       else return false
  62.       end
  63.      end
  64.     end
  65.    end  
  66.   end
  67.   end
  68.  end]]
  69.    
  70.  function updateFailed(nFailed)
  71.   failedFile = fs.open(".PasswordFiles/Failed", "w")
  72.   failedFile.write(tostring(nFailed))
  73.   failedFile.close()
  74.  end
  75.  
  76.  function getFailed()
  77.   if not fs.exists(".PasswordFiles/Failed") then return 0
  78.   else
  79.    failedFile = fs.open(".PasswordFiles/Failed", "r")
  80.    if not failedFile then return 0 end
  81.    nFailed = failedFile.readLine()
  82.    nFailed = tonumber(nFailed)
  83.    failedFile.close()
  84.    if nFailed then return nFailed
  85.    else return 0 end
  86.   end
  87.  end
  88.  
  89.  function checkFailed()
  90.   if failed >= 3 then
  91.    term.setCursorPos(1, 5)
  92.    print("Too many failed attempts. Access Denied")
  93.    print("Insert Access Disk to unlock")
  94.    --if checkDrive("all") then return true end
  95.    while true do
  96.     event, msg = os.pullEvent("mag_swipe")
  97.     --if checkDrive(side) then return true end
  98.     if event == "mag_swipe" and msg == accessCode then return true end
  99.    end
  100.   end
  101.  end
  102.  
  103.  failed = getFailed()  
  104.  
  105.  
  106.  while true do
  107.   term.setCursorPos(10, 1)
  108.   term.write(tostring(3 - failed))
  109.   term.setCursorPos(1, termY)
  110.   term.write("Failed Attempts:")
  111.   for n = 1, 3 do
  112.    if failed > n - 1 then
  113.     term.write(" [X]")
  114.    else
  115.     term.write(" [ ]")
  116.    end
  117.   end
  118.   term.setCursorPos(1, 3)
  119.   term.clearLine()
  120.   term.write("Password: ")
  121.   updateFailed(failed)
  122.   if checkFailed() then break end
  123.  
  124.   local p =read("*")  
  125.   if p == pass then
  126.    print("Correct Password! Access Granted")
  127.    sleep(1)
  128.    break
  129.   else
  130.    failed = failed + 1
  131.   end
  132.  end
  133.  updateFailed(0)
  134.  term.clear()
  135.  term.setCursorPos(1, 1)
  136.  os.pullEvent = oldPull
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement