mirror of
https://github.com/samba-team/samba.git
synced 2024-12-25 23:21:54 +03:00
783851099b
js arrays are a special type of object where the length property is
automatic, and cannot be modified manually. Our code was manually
setting length, which made it abort when someone passed in a real ejs
array. To fix this we need to create real arrays instead of objects,
and remove the code that manually sets the length
(This used to be commit ebdd1393fd
)
158 lines
2.8 KiB
JavaScript
158 lines
2.8 KiB
JavaScript
/*
|
|
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_trees()
|
|
{
|
|
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_TREES;
|
|
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 trees = io.results[i].info.trees.trees;
|
|
var j;
|
|
for (j=0;j<trees.length;j++) {
|
|
ret[count] = trees[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));
|
|
}
|