57 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			Lua
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			57 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			Lua
		
	
	
		
			Executable File
		
	
	
	
	
#!/usr/bin/lua
 | 
						|
 | 
						|
local unistd = require 'posix.unistd'
 | 
						|
 | 
						|
 | 
						|
local function shift()
 | 
						|
	table.remove(arg, 1)
 | 
						|
end
 | 
						|
 | 
						|
local reboot = true
 | 
						|
if arg[1] == '--no-reboot' then
 | 
						|
	reboot = false
 | 
						|
	shift()
 | 
						|
end
 | 
						|
 | 
						|
local setup_mode = unistd.access('/var/gluon/setup-mode') == 0
 | 
						|
 | 
						|
if #arg ~= 1 then
 | 
						|
	io.stderr:write('Usage: gluon-switch-domain [--no-reboot] <domain>\n')
 | 
						|
	os.exit(1)
 | 
						|
end
 | 
						|
local domain = arg[1]
 | 
						|
 | 
						|
 | 
						|
if not unistd.access('/lib/gluon/domains/') then
 | 
						|
	io.stderr:write('This Gluon firmware does not support multiple mesh domains.\n')
 | 
						|
	os.exit(1)
 | 
						|
end
 | 
						|
 | 
						|
 | 
						|
local function domain_exists(dom)
 | 
						|
	return unistd.access('/lib/gluon/domains/' .. dom .. '.json') == 0
 | 
						|
end
 | 
						|
 | 
						|
if not domain_exists(domain) then
 | 
						|
	io.stderr:write(string.format("Error: invalid mesh domain '%s'\n", domain))
 | 
						|
	os.exit(1)
 | 
						|
end
 | 
						|
 | 
						|
 | 
						|
local uci = require('simple-uci').cursor()
 | 
						|
uci:set('gluon', 'core', 'switch_domain', domain)
 | 
						|
uci:set('gluon', 'core', 'reconfigure', true)
 | 
						|
uci:save('gluon')
 | 
						|
 | 
						|
local cmd
 | 
						|
if setup_mode then
 | 
						|
	cmd = 'gluon-reconfigure'
 | 
						|
elseif reboot then
 | 
						|
	uci:commit('gluon')
 | 
						|
	cmd = 'reboot'
 | 
						|
else
 | 
						|
	cmd = 'gluon-reload'
 | 
						|
end
 | 
						|
 | 
						|
unistd.execp(cmd, {[0] = cmd})
 |