@ -24,7 +24,8 @@ local function handle_error_pattern(config, powered_on)
local user_logged_in = session_check.is_user_logged_in ( config )
local user_logged_in = session_check.is_user_logged_in ( config )
if user_logged_in then
if user_logged_in then
utils.log ( ( " User '%s' is currently logged into a desktop session. Skipping Ollama startup to avoid interruption. " ) : format ( config.SSH_USER ) )
utils.log ( ( " User '%s' is currently logged into a desktop session. Skipping Ollama startup to avoid interruption. " )
: format ( config.SSH_USER ) )
return powered_on -- Return current powered_on state without changes
return powered_on -- Return current powered_on state without changes
end
end
@ -45,12 +46,18 @@ local function handle_error_pattern(config, powered_on)
-- Wait for SSH and start service
-- Wait for SSH and start service
utils.log ( " Waiting for SSH to become reachable... " )
utils.log ( " Waiting for SSH to become reachable... " )
if network.port_is_up ( config.OLLAMA_HOST , config.SSH_PORT , 60 ) then
if network.port_is_up ( config.OLLAMA_HOST , config.SSH_PORT , 60 ) then
-- If SSH is reachable, the host is powered on (regardless of WOL status)
powered_on = true
utils.log ( " SSH is reachable - host is powered on " )
ollama_manager.start_service ( config )
ollama_manager.start_service ( config )
else
utils.log ( " SSH timeout - host may not be powered on " )
end
end
return powered_on
end
end
-- Handle finish pattern detection and shutdown
-- Handle finish pattern detection and shutdown
local function handle_finish_pattern ( config )
local function handle_finish_pattern ( config , powered_on )
utils.log ( ( " Detected finish pattern: %q " ) : format ( config.FINISH_PATTERN ) )
utils.log ( ( " Detected finish pattern: %q " ) : format ( config.FINISH_PATTERN ) )
-- Check if user is currently logged into a desktop session
-- Check if user is currently logged into a desktop session
@ -58,12 +65,15 @@ local function handle_finish_pattern(config)
local user_logged_in = session_check.is_user_logged_in ( config )
local user_logged_in = session_check.is_user_logged_in ( config )
if user_logged_in then
if user_logged_in then
utils.log ( ( " User '%s' is currently logged into a desktop session. Skipping shutdown to avoid interruption. " ) : format ( config.SSH_USER ) )
utils.log ( ( " User '%s' is currently logged into a desktop session. Skipping shutdown to avoid interruption. " ) : format (
return -- Exit without shutting down
config.SSH_USER ) )
return powered_on -- Exit without shutting down
end
end
utils.log ( ( " User '%s' is not logged into a desktop session. Proceeding with shutdown. " ) : format ( config.SSH_USER ) )
utils.log ( ( " User '%s' is not logged into a desktop session. Proceeding with shutdown. " ) : format ( config.SSH_USER ) )
ollama_manager.stop_service_and_shutdown ( config )
ollama_manager.stop_service_and_shutdown ( config )
powered_on = false
return powered_on
end
end
-- Main application logic
-- Main application logic
@ -80,14 +90,12 @@ local function main()
for line in fh : lines ( ) do
for line in fh : lines ( ) do
-- Handle error pattern detection
-- Handle error pattern detection
if line : find ( config.ERROR_PATTERN , 1 , true ) ~= nil then
if line : find ( config.ERROR_PATTERN , 1 , true ) ~= nil then
handle_error_pattern ( config , powered_on )
powered_on = handle_error_pattern ( config , powered_on )
powered_on = true
end
end
-- Handle finish pattern detection
-- Handle finish pattern detection
if line : find ( config.FINISH_PATTERN , 1 , true ) ~= nil and powered_on == true then
if line : find ( config.FINISH_PATTERN , 1 , true ) ~= nil and powered_on == true then
handle_finish_pattern ( config )
powered_on = handle_finish_pattern ( config , powered_on )
powered_on = false
break
break
end
end
end
end