/* backend code for Samba4 management Copyright Andrew Tridgell 2005 Released under the GNU GPL v2 or later */ /* return a list of current sessions */ function smbsrv_sessions() { var irpc = irpc_init(); status = irpc.connect("smb_server"); if (status.is_ok != true) { return undefined; } var io = irpcObj(); io.input.level = irpc.SMBSRV_INFO_SESSIONS; status = irpc.smbsrv_information(io); if (status.is_ok != true) { return undefined; } /* gather the results into a single array */ var i, count=0, ret = new Array(0); for (i=0;i<io.results.length;i++) { var sessions = io.results[i].info.sessions.sessions; var j; for (j=0;j<sessions.length;j++) { ret[count] = sessions[j]; count++; } } return ret; } /* return a list of current tree connects */ function smbsrv_tcons() { var irpc = irpc_init(); status = irpc.connect("smb_server"); if (status.is_ok != true) { return undefined; } var io = irpcObj(); io.input.level = irpc.SMBSRV_INFO_TCONS; status = irpc.smbsrv_information(io); if (status.is_ok != true) { return undefined; } /* gather the results into a single array */ var i, count=0, ret = new Object(); for (i=0;i<io.results.length;i++) { var tcons = io.results[i].info.tcons.tcons; var j; for (j=0;j<tcons.length;j++) { ret[count] = tcons[j]; count++; } } ret.length = count; return ret; } /* return nbtd statistics */ function nbtd_statistics() { var irpc = irpc_init(); status = irpc.connect("nbt_server"); if (status.is_ok != true) { return undefined; } var io = irpcObj(); io.input.level = irpc.NBTD_INFO_STATISTICS; status = irpc.nbtd_information(io); if (status.is_ok != true) { return undefined; } return io.results[0].info.stats; } /* see if a service is enabled */ function service_enabled(name) { var lp = loadparm_init(); var services = lp.get("server services"); var i; for (i=0;i<services.length;i++) { if (services[i] == name) { return true; } } return false; } /* show status of a server */ function server_status(name) { var i; var io; var irpc = irpc_init(); if (!service_enabled(name)) { return "DISABLED"; } status = irpc.connect(name + "_server"); if (status.is_ok != true) { return "DOWN"; } var io = irpcObj(); status = irpc.irpc_uptime(io); if (status.is_ok != true) { return "NOT RESPONDING"; } return "RUNNING"; } /* show status of a stream server */ function stream_server_status(name) { var irpc = irpc_init(); if (!service_enabled(name)) { return "DISABLED"; } status = irpc.connect(name + "_server"); if (status.is_ok != true) { return "0 connections"; } var io = irpcObj(); status = irpc.irpc_uptime(io); if (status.is_ok != true) { return "NOT RESPONDING"; } var n = io.results.length; return sprintf("%u connection%s", n, plural(n)); }