mirror of
https://github.com/samba-team/samba.git
synced 2025-11-12 04:23:49 +03:00
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
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));
|
|
}
|