Advertisement
King0fGamesYami

Disk Formatting.

Aug 1st, 2014
296
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 1.51 KB | None | 0 0
  1. local file = fs.open( ".stored", "r" )
  2. local data = file.readAll()
  3. file.close()
  4. local users = textutils.unserialize( data )
  5.  
  6. local function generatePass()
  7.     local pass = ""
  8.     for i = 1, 16 do
  9.         math.randomseed( os.time() ^ ( math.random() * 10000 ) % math.random() )
  10.         pass = pass .. string.char( math.random( 32, 126 ) )
  11.     end
  12.     return pass
  13. end
  14.  
  15. local function saveUsers()
  16.     local file = fs.open( ".stored", "w" )
  17.     file.write( textutils.serialize( users ) )
  18.     file.close()
  19. end
  20.  
  21. while true do
  22.     local side
  23.     local event = { os.pullEvent() }
  24.     if event[ 1 ] == "disk" then
  25.         side = event[ 2 ]
  26.         local path = disk.getMountPath( side )
  27.         local user = disk.getID( side )
  28.         if disk.getLabel( side ) then
  29.             disk.eject( side )
  30.         elseif disk.hasData( side ) and fs.exists( fs.combine( path, "startup" ) ) then
  31.             disk.eject( side )
  32.         elseif disk.hasData( side ) and fs.exists( fs.combine( path, ".password" ) ) then
  33.             local file = fs.open( fs.combine( path, ".password" ), "r" )
  34.             local pass = file.readAll()
  35.             file.close()
  36.             if users[ user ] == pass then
  37.                 local new = generatePass()
  38.                 users[ user ] = new
  39.                 local file = fs.open( fs.combine( path, ".password" ), "w" )
  40.                 file.write( new )
  41.                 file.close()
  42.                 saveUsers()
  43.                 rs.setOutput( "left", true )
  44.                 os.startTmer( 5 )
  45.             else
  46.                 print( "access denied" )
  47.             end
  48.         else
  49.             disk.eject( side )
  50.         end
  51.     elseif event[ 1 ] == "timer" then
  52.         rs.setOutput( "left", false )
  53.         if disk.isPresent( side ) then
  54.             disk.eject( side )
  55.         end
  56.     end
  57. end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement