Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- local file = fs.open( ".stored", "r" )
- local data = file.readAll()
- file.close()
- local users = textutils.unserialize( data )
- local function generatePass()
- local pass = ""
- for i = 1, 16 do
- math.randomseed( os.time() ^ ( math.random() * 10000 ) % math.random() )
- pass = pass .. string.char( math.random( 32, 126 ) )
- end
- return pass
- end
- local function saveUsers()
- local file = fs.open( ".stored", "w" )
- file.write( textutils.serialize( users ) )
- file.close()
- end
- while true do
- local side
- local event = { os.pullEvent() }
- if event[ 1 ] == "disk" then
- side = event[ 2 ]
- local path = disk.getMountPath( side )
- local user = disk.getID( side )
- if disk.getLabel( side ) then
- disk.eject( side )
- elseif disk.hasData( side ) and fs.exists( fs.combine( path, "startup" ) ) then
- disk.eject( side )
- elseif disk.hasData( side ) and fs.exists( fs.combine( path, ".password" ) ) then
- local file = fs.open( fs.combine( path, ".password" ), "r" )
- local pass = file.readAll()
- file.close()
- if users[ user ] == pass then
- local new = generatePass()
- users[ user ] = new
- local file = fs.open( fs.combine( path, ".password" ), "w" )
- file.write( new )
- file.close()
- saveUsers()
- rs.setOutput( "left", true )
- os.startTmer( 5 )
- else
- print( "access denied" )
- end
- else
- disk.eject( side )
- end
- elseif event[ 1 ] == "timer" then
- rs.setOutput( "left", false )
- if disk.isPresent( side ) then
- disk.eject( side )
- end
- end
- end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement