c1b9ea2d9c
This package allows to automatically switch to another domain, either at a given point in time or after the node was offline long enough.
37 lines
840 B
Lua
Executable File
37 lines
840 B
Lua
Executable File
#!/usr/bin/lua
|
|
|
|
local unistd = require 'posix.unistd'
|
|
local util = require 'gluon.util'
|
|
local site = require 'gluon.site'
|
|
|
|
local offline_flag_file = "/tmp/gluon_offline"
|
|
local is_offline = true
|
|
|
|
-- Check if domain-switch is scheduled
|
|
if site.domain_switch() == nil then
|
|
-- Switch not applicable for current domain
|
|
os.exit(0)
|
|
end
|
|
|
|
-- Check reachability of pre-defined targets
|
|
for _, ip in ipairs(site.domain_switch.connection_check_targets()) do
|
|
local exit_code = os.execute("ping -c 1 -w 10 " .. ip)
|
|
if exit_code == 0 then
|
|
is_offline = false
|
|
break
|
|
end
|
|
end
|
|
|
|
if is_offline then
|
|
-- Check if we were previously offline
|
|
if unistd.access(offline_flag_file) then
|
|
os.exit(0)
|
|
end
|
|
-- Create offline flag
|
|
local f = io.open(offline_flag_file, "w")
|
|
f:write(tostring(util.get_uptime()))
|
|
f:close()
|
|
else
|
|
os.remove(offline_flag_file)
|
|
end
|