wlan-ap-Telecominfraproject/feeds/ucentral/uspot/files/usr/bin/captive
John Crispin 74dd8fc89e uspot: add support for multiple captive portals
Fixes: WIFI-12366
Signed-off-by: John Crispin <john@phrozen.org>
2023-05-02 17:42:17 +02:00

64 lines
1.4 KiB
Plaintext
Executable File

#!/usr/bin/ucode
let ubus = require('ubus').connect();
let uci = require('uci').cursor();
function restart() {
system('/etc/init.d/spotfilter restart');
system('/etc/init.d/uhttpd restart');
}
function interfaces() {
let interfaces = [];
let devices = uci.get_all('uspot', 'devices');
for (let k, v in devices)
if (substr(k, 0, 1) != '.')
push(interfaces, v);
return uniq(interfaces);
}
switch(ARGV[0]) {
case 'dump':
for (let interface in interfaces()) {
let clients = ubus.call('spotfilter', 'client_list', { interface });
printf('%.J\n', clients);
}
break;
case 'clients':
for (let interface in interfaces()) {
let clients = ubus.call('spotfilter', 'client_list', { interface});
let res = {};
let t = time();
for (let c, val in clients) {
res[c] = {
status: val.state ? 'Authenticated' : 'Garden',
idle: val.idle || 0,
time: val.data.connect ? t - val.data.connect : 0,
ip4addr: val.ip4addr || '',
ip6addr: val.ip6addr || '',
packets_ul: val.packets_ul || 0,
bytes_ul: val.bytes_ul || 0,
packets_dl: val.packets_dl || 0,
bytes_dl: val.bytes_dl || 0,
};
}
printf('%.J\n', res);
}
break;
case 'restart':
restart();
break;
case 'log':
system('logread -f | grep uspot:');
break;
case 'debugon':
case 'debugoff':
uci.set('uspot', 'def_captive', 'debug', 1);
uci.commit();
restart();
break;
default:
break;
}