args = { ... } if args[1] == nil then io.write("Usage: auth \n") return end local action = args[1] local server = settings.get("auth.server") auth_server_id = lns.lookup(server) if action == "login" then io.write("Username: ") local username = io.read() io.write("Password: ") local password = read("*") local data = { ["action"] = "login", ["username"] = username, ["password"] = password } rednet.send(auth_server_id, data, "auth") while true do id, msg = rednet.receive("auth") if id == auth_server_id then if msg == "invalid request" then io.write("Invalid request\n") return elseif msg == "user not found" then io.write("User not found\n") return elseif msg == "invalid password" then io.write("Invalid password\n") return else token = msg break end end end settings.set("auth.username", username) settings.set("auth.token", token) settings.save() io.write("Logged in as " .. username .. "\n") return elseif action == "logout" then settings.set("auth.token", -1) settings.save() io.write("Logged out\n") return elseif action == "register" then io.write("Username: ") local username = io.read() io.write("Password: ") local password = read("*") io.write("Confirm Password: ") local confirm_password = read("*") if password ~= confirm_password then io.write("Passwords do not match\n") return end local data = { ["action"] = "register", ["username"] = username, ["password"] = password } rednet.send(auth_server_id, data, "auth") while true do id, msg = rednet.receive("auth") if id == auth_server_id then if msg == "invalid request" then io.write("Invalid request\n") return elseif msg == "user already exists" then io.write("User already exists\n") return else io.write("Registered user " .. username .. "\n") return end end end elseif action == "group" then local subaction = args[2] if subaction == nil then io.write("Usage: auth group \n") return end if subaction == "list" then local result = auth.list_user_groups(settings.get("auth.username")) io.write("Groups: " .. result .. "\n") elseif subaction == "add" then local target_user = args[3] local group = args[4] if target_user == nil or group == nil then io.write("Usage: auth group add \n") return end local result = auth.add_user_group(target_user, group) end end