mirror of
https://github.com/Telecominfraproject/wlan-ap.git
synced 2025-10-29 17:42:41 +00:00
71 lines
1.5 KiB
Ucode
71 lines
1.5 KiB
Ucode
let devid;
|
|
let fd = fs.open("/etc/ucentral/dev-id", "r");
|
|
if (!fd) {
|
|
warn("firstcontact: failed to find device id");
|
|
exit(1);
|
|
}
|
|
devid = fd.read("all");
|
|
fd.close();
|
|
|
|
let config = {};
|
|
|
|
function store_config(path) {
|
|
let cursor = uci.cursor(path);
|
|
let redir = split(config.Redirector, ":");
|
|
|
|
cursor.load("ucentral");
|
|
cursor.set("ucentral", "config", "server", redir[0]);
|
|
cursor.set("ucentral", "config", "port", redir[1] || 15002);
|
|
cursor.commit();
|
|
}
|
|
|
|
ret = system(sprintf('/usr/sbin/firstcontact -i %s', devid));
|
|
if (ret) {
|
|
warn("firstcontact failed to contact redirector, check DHCP option\n");
|
|
let fd = fs.open("/tmp/capwap/dhcp_opt.txt", "r");
|
|
if (!fd) {
|
|
warn("No redirector found\n");
|
|
exit(1);
|
|
} else {
|
|
config.Redirector = fd.read("all");
|
|
fd.close();
|
|
}
|
|
} else {
|
|
let redirector = { };
|
|
let fd = fs.open("/etc/ucentral/redirector.json", "r");
|
|
if (fd) {
|
|
let data = fd.read("all");
|
|
fd.close();
|
|
|
|
try {
|
|
redirector = json(data);
|
|
}
|
|
catch (e) {
|
|
warn("firstcontact: Unable to parse JSON data in %s: %s", path, e);
|
|
|
|
exit(1);
|
|
}
|
|
}
|
|
|
|
for (let r in redirector.fields)
|
|
if (r.name && r.value)
|
|
config[r.name] = r.value;
|
|
if (!config.Redirector) {
|
|
warn("Reply is missing Redirector field\n");
|
|
exit(1);
|
|
}
|
|
|
|
}
|
|
|
|
store_config();
|
|
store_config("/etc/config-shadow/");
|
|
|
|
warn("firstcontact: managed to look up redirector\n");
|
|
|
|
system("/etc/init.d/ucentral enable");
|
|
system("/etc/init.d/firstcontact disable");
|
|
|
|
system("reload_config");
|
|
system("/etc/init.d/ucentral start");
|
|
system("/etc/init.d/firstcontact stop");
|