Extend client api by authentication
This commit is contained in:
1 parent
41cfa4c9c6
commit
a64c72d4fc
1 file changed
+25
-14
+25
-14
@@ -15,18 +15,16 @@ local function establish_connection()
|
|||||||
for _, side in ipairs(peripherals) do
|
for _, side in ipairs(peripherals) do
|
||||||
if peripheral.getType(side) == "modem" then
|
if peripheral.getType(side) == "modem" then
|
||||||
rednet.open(side)
|
rednet.open(side)
|
||||||
print("Opened modem: "..side)
|
|
||||||
return true
|
return true
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
print("No modem found!")
|
|
||||||
return false
|
return false
|
||||||
end
|
end
|
||||||
|
|
||||||
function validate_clearance(computer_id, clearance_level)
|
function validate_clearance(computer_id, clearance_level)
|
||||||
if establish_connection() then
|
if establish_connection() then
|
||||||
tg_server_id = rednet.lookup("tg", tg_server_name)
|
tg_server_id = rednet.lookup('tg', tg_server_name)
|
||||||
rednet.send(tg_server_id, "validate_clearance,"..computer_id..","..clearance_level)
|
rednet.send(tg_server_id, "validate_clearance,"..computer_id..","..clearance_level,"tg")
|
||||||
local id, msg, proto = rednet.receive("tg")
|
local id, msg, proto = rednet.receive("tg")
|
||||||
if msg == "granted" then
|
if msg == "granted" then
|
||||||
return true
|
return true
|
||||||
@@ -41,11 +39,11 @@ end
|
|||||||
function validate_key(minimum_clearance)
|
function validate_key(minimum_clearance)
|
||||||
if establish_connection() then
|
if establish_connection() then
|
||||||
if fs.exists("/disk/key") then
|
if fs.exists("/disk/key") then
|
||||||
key_file = fs.open("/disk/key","r")
|
local key_file = fs.open("/disk/key","r")
|
||||||
key = key_file.readLine()
|
local key = key_file.readLine()
|
||||||
tg_server_id = rednet.lookup('tg', tg_server_name)
|
tg_server_id = rednet.lookup('tg', tg_server_name)
|
||||||
rednet.send(tg_server_id, "validate_key,"..key..","..minimum_clearance, "tg")
|
rednet.send(tg_server_id, "validate_key,"..key..","..minimum_clearance, "tg")
|
||||||
id, msg, _ = rednet.receive("tg")
|
local id, msg, _ = rednet.receive("tg")
|
||||||
if msg == "authentication successful" then
|
if msg == "authentication successful" then
|
||||||
return true
|
return true
|
||||||
else
|
else
|
||||||
@@ -59,27 +57,40 @@ function validate_key(minimum_clearance)
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
if fs.exists('/disk/key') then
|
function authenticate()
|
||||||
key_file = fs.open('/disk/key', 'r')
|
if fs.exists('/disk/key') then
|
||||||
key = key_file.readLine()
|
local key_file = fs.open('/disk/key', 'r')
|
||||||
|
local key = key_file.readLine()
|
||||||
if establish_connection() then
|
if establish_connection() then
|
||||||
tg_server_id = rednet.lookup("tg", tg_server_name)
|
tg_server_id = rednet.lookup("tg", tg_server_name)
|
||||||
rednet.send(tg_server_id, "authenticate,"..key,"tg")
|
rednet.send(tg_server_id, "authenticate,"..key,"tg")
|
||||||
local id, msg, proto = rednet.receive("tg")
|
local id, msg, proto = rednet.receive("tg")
|
||||||
|
|
||||||
if msg == "authentication successful" then
|
if msg == "authentication successful" then
|
||||||
key_parts = split(key,',')
|
local key_parts = split(key,',')
|
||||||
local card_holder = key_parts[1]
|
local card_holder = key_parts[1]
|
||||||
local card_clearance = key_parts[2]
|
local card_clearance = key_parts[2]
|
||||||
print("Authentication was successful.")
|
return true, _, card_holder, card_clearance
|
||||||
print("Hello "..card_holder..", you were granted clearance level "..card_clearance.." for this computer.")
|
|
||||||
else
|
else
|
||||||
print("Authentication failed.")
|
print("Authentication failed.")
|
||||||
|
return false, "authentication failed"
|
||||||
end
|
end
|
||||||
else
|
else
|
||||||
return false, "modem not found"
|
return false, "modem not found"
|
||||||
end
|
end
|
||||||
key_file.close()
|
key_file.close()
|
||||||
else
|
else
|
||||||
print("Key file not found. Aborting.")
|
print("Key file not found. Aborting.")
|
||||||
|
return false, "key file not found"
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
if args[1] == "auth" or args[1] == "authenticate" then
|
||||||
|
local success, error, card_holder, card_clearance = authenticate()
|
||||||
|
if success then
|
||||||
|
print("Authentication was successful.")
|
||||||
|
print("Hello "..card_holder..", you were granted clearance level "..card_clearance.." for this computer.")
|
||||||
|
else
|
||||||
|
print("Authentication failed: "..error)
|
||||||
|
end
|
||||||
end
|
end
|
||||||
Reference in new issue
Block a user