pin panel shouldn't come up on authorized connections

This commit is contained in:
2025-12-29 21:29:27 -05:00
parent e5848f0e79
commit 6f4ff1af8b
2 changed files with 46 additions and 16 deletions

View File

@ -177,29 +177,46 @@ local function MonitorRemoteIris()
utils.log("ALERT: Remote iris moving: " .. remoteIrisState .. "%")
end
-- If remote has computer and iris just became fully closed, offer password entry
-- If remote has computer and iris just became fully closed, wait for password request
if state.remoteHasComputer and remoteIrisState == 100 and (not lastIrisState or lastIrisState < 100) then
utils.log("Remote iris closed but computer detected - showing password prompt")
utils.log("Remote iris closed and computer detected - waiting for password request")
local password = HandlePasswordEntry()
-- Wait for response
local function WaitForResponse()
sleep(3) -- Wait up to 3 seconds for response
-- Wait briefly for password request message
local function WaitForPasswordRequest()
sleep(2) -- Wait up to 2 seconds for password request
return nil
end
local result = parallel.waitForAny(GetMessage, WaitForResponse)
local result = parallel.waitForAny(GetMessage, WaitForPasswordRequest)
if result == 1 then
local response = state.lastReceivedMessage
local message = state.lastReceivedMessage
state.lastReceivedMessage = nil
if response == "IRIS_OPEN" then
display.showPasswordResult(true)
utils.log("Password accepted - iris opened")
-- Continue monitoring, iris state will update
elseif response == "IRIS_DENIED" then
display.showPasswordResult(false)
utils.log("Password rejected")
-- Only show password panel if explicitly requested
if message == "IRIS_PASSWORD_REQUIRED" then
utils.log("Password requested by remote gate - showing password prompt")
local password = HandlePasswordEntry()
-- Wait for response
local function WaitForResponse()
sleep(3) -- Wait up to 3 seconds for response
return nil
end
result = parallel.waitForAny(GetMessage, WaitForResponse)
if result == 1 then
local response = state.lastReceivedMessage
state.lastReceivedMessage = nil
if response == "IRIS_OPEN" then
display.showPasswordResult(true)
utils.log("Password accepted - iris opened")
-- Continue monitoring, iris state will update
elseif response == "IRIS_DENIED" then
display.showPasswordResult(false)
utils.log("Password rejected")
end
end
end
end
@ -313,6 +330,10 @@ local function handleIncomingWormhole()
utils.openIris()
else
utils.closeIris()
-- Send password request if iris is closed and password system is enabled
if config.irisPassword and config.enableMessaging then
utils.sendPasswordRequest()
end
end
end

View File

@ -173,4 +173,13 @@ function utils.sendPasswordAttempt(password)
return false
end
function utils.sendPasswordRequest()
if config.enableMessaging then
gate.sendStargateMessage("IRIS_PASSWORD_REQUIRED")
utils.log("Sent password request")
return true
end
return false
end
return utils