Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- --Command Interpreter for authServer v1.0
- --Fixed several bugs
- --Added "authorize", "createauth", and "removeauth"
- --commands.
- cid, cmd = ...
- cid = tonumber(cid)
- uname = {}
- pword = {}
- authLevel = {}
- iuID = {}
- --Function to load table data from any file.
- function loadTable(file)
- if fs.exists(file) then
- f = fs.open(file, "r")
- d = f.readAll()
- f.close()
- return textutils.unserialise(d)
- else
- print("Unable to find file.")
- return {}
- end
- end
- --Function to save table data to a file.
- function saveTable(file, table)
- f = fs.open(file, "w")
- f.write(textutils.serialise(table))
- f.close()
- end
- --Function to look for a specific value
- --from within a table.
- function tableLookup(chkv, table)
- for i=1, #table do
- if table[i] == chkv then
- return i
- elseif i > #table then
- return "nomatch"
- end
- end
- end
- --Function to filter rednet responses from
- --a specified computer ID
- function filterResponse(filterID)
- rid = -1
- while rid ~= filterID do
- rid, msg = rednet.receive()
- end
- return msg
- end
- --Function that does all the command processing.
- function processCommand(cmd, id)
- --Code for the command "authorize"
- if cmd == "authorize" then
- --Get user credentials for authroization.
- rednet.send(id, "ready")
- user = filterResponse(id)
- pass = filterResponse(id)
- rAuthLv = filterResponse(id)
- uName = tableLookup(user, uname)
- --Run comparisions for authorization.
- sleep(1)
- if pword[uName] == pass and authLevel[uName] >= rAuthLv then
- rednet.send(id, "auth")
- print("User authorized.")
- else
- print("User authorized.")
- rednet.send(id, "nauth")
- end
- --Code for the "create authorization" command
- elseif cmd == "createauth" then
- --Verify user has proper authorization
- --to create another account.
- rednet.send(id, "ready")
- user = filterResponse(id)
- pass = filterResponse(id)
- nUser = filterResponse(id)
- nPass = filterResponse(id)
- nAuth = filterResponse(id)
- uName = tableLookup(user, uname)
- --Check credentials
- if user == uname[uName] and pass == pword[uName] and authLevel[uName] == 5 then
- table.insert(uname, nUser)
- print("Added new username")
- table.insert(pword, nPass)
- print("Added new password")
- table.insert(authLevel, nAuth)
- print("Added new auth level")
- saveTable("uname", uname)
- print("Saved uname table")
- saveTable("pword", pword)
- print("Saved pword table")
- saveTable("authLevel", authLevel)
- print("save authLevel table")
- sleep(0.1)
- rednet.send(id, "done")
- end
- elseif cmd == "removeauth" then
- --Verify user has proper authorization to
- --remove another user's authorization.
- rednet.send(id, "ready")
- user = filterResponse(id)
- pass = filterResponse(id)
- user2 = filterResponse(id)
- uName = tableLookup(user, uname)
- authL = authLevel[uName]
- uName2 = tableLookup(user2, uname)
- if uname[uName] == user and pword[uName] == pass and authLevel[uName] == 5 then
- print("User Removed")
- table.remove(uname, uName2)
- table.remove(pword, uName2)
- table.remove(authLevel, uName2)
- saveTable("uname", uname)
- saveTable("pword", pword)
- saveTable("authLevel", authLevel)
- sleep(0.1)
- rednet.send(id, "done")
- else
- print("not authorized")
- end
- end
- end
- --Get current ID table. Also get user data.
- uname = loadTable("uname")
- pword = loadTable("pword")
- authLevel = loadTable("authLevel")
- iuID = loadTable("iuID")
- processCommand(cmd, cid)
- --Remove ID from table.
- spot = tableLookup(cid, iuID)
- table.remove(iuID, spot)
- saveTable("iuID", iuID)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement