e1c68ca1de5dc251a68f32be88c7c77cc46583b7
[kai/samba.git] / source4 / scripting / libjs / management.js
1 /*
2         backend code for Samba4 management
3         Copyright Andrew Tridgell 2005
4         Released under the GNU GPL v2 or later
5 */
6
7
8 /*
9   return a list of current sessions 
10 */
11 function smbsrv_sessions()
12 {
13         var conn = new Object();
14         var irpc = irpc_init();
15         status = irpc_connect(conn, "smb_server");
16         if (status.is_ok != true) {
17                 return undefined;
18         }
19
20         var io = irpcObj();
21         io.input.level = irpc.SMBSRV_INFO_SESSIONS;
22         status = irpc.smbsrv_information(conn, io);
23         if (status.is_ok != true) {
24                 return undefined;
25         }
26
27         /* gather the results into a single array */
28         var i, count=0, ret = new Object();
29         for (i=0;i<io.results.length;i++) {
30                 var sessions = io.results[i].info.sessions.sessions;
31                 var j;
32                 for (j=0;j<sessions.length;j++) {
33                         ret[count] = sessions[j];
34                         count++;
35                 }
36         }
37         ret.length = count;
38         return ret;
39 }
40
41 /*
42   return a list of current tree connects
43 */
44 function smbsrv_trees()
45 {
46         var conn = new Object();
47         var irpc = irpc_init();
48         status = irpc_connect(conn, "smb_server");
49         if (status.is_ok != true) {
50                 return undefined;
51         }
52
53         var io = irpcObj();
54         io.input.level = irpc.SMBSRV_INFO_TREES;
55         status = irpc.smbsrv_information(conn, io);
56         if (status.is_ok != true) {
57                 return undefined;
58         }
59
60         /* gather the results into a single array */
61         var i, count=0, ret = new Object();
62         for (i=0;i<io.results.length;i++) {
63                 var trees = io.results[i].info.trees.trees;
64                 var j;
65                 for (j=0;j<trees.length;j++) {
66                         ret[count] = trees[j];
67                         count++;
68                 }
69         }
70         ret.length = count;
71         return ret;
72 }
73
74 /*
75   return nbtd statistics
76 */
77 function nbtd_statistics()
78 {
79         var conn = new Object();
80         var irpc = irpc_init();
81         status = irpc_connect(conn, "nbt_server");
82         if (status.is_ok != true) {
83                 return undefined;
84         }
85
86         var io = irpcObj();
87         io.input.level = irpc.NBTD_INFO_STATISTICS;
88         status = irpc.nbtd_information(conn, io);
89         if (status.is_ok != true) {
90                 return undefined;
91         }
92         return io.results[0].info.stats;
93 }
94
95 /*
96   see if a service is enabled
97 */
98 function service_enabled(name)
99 {
100         var lp = loadparm_init();
101         var services = lp.get("server services");
102         var i;
103         for (i=0;i<services.length;i++) {
104                 if (services[i] == name) {
105                         return true;
106                 }
107         }
108         return false;
109 }
110
111 /*
112   show status of a server
113 */
114 function server_status(name)
115 {
116         var conn = new Object();
117         var i;
118         var io;
119         var irpc = irpc_init();
120
121         if (!service_enabled(name)) {
122                 return "DISABLED";
123         }
124         
125         status = irpc_connect(conn, name + "_server");
126         if (status.is_ok != true) {
127                 return "DOWN";
128         }
129
130         var io = irpcObj();
131         status = irpc.irpc_uptime(conn, io);
132         if (status.is_ok != true) {
133                 return "NOT RESPONDING";
134         }
135
136         return "RUNNING";
137 }
138
139 /*
140   show status of a stream server
141 */
142 function stream_server_status(name)
143 {
144         var conn = new Object();
145         var irpc = irpc_init();
146
147         if (!service_enabled(name)) {
148                 return "DISABLED";
149         }
150         status = irpc_connect(conn, name + "_server");
151         if (status.is_ok != true) {
152                 return "0 connections";
153         }
154
155         var io = irpcObj();
156         status = irpc.irpc_uptime(conn, io);
157         if (status.is_ok != true) {
158                 return "NOT RESPONDING";
159         }
160
161         var n = io.results.length;
162         return sprintf("%u connection%s", n, plural(n));
163 }