e54b5e283bed08d0d007bfd54e639873b6a8e251
[jra/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 irpc = irpc_init();
14         status = irpc.connect("smb_server");
15         if (status.is_ok != true) {
16                 return undefined;
17         }
18
19         var io = irpcObj();
20         io.input.level = irpc.SMBSRV_INFO_SESSIONS;
21         status = irpc.smbsrv_information(io);
22         if (status.is_ok != true) {
23                 return undefined;
24         }
25
26         /* gather the results into a single array */
27         var i, count=0, ret = new Array(0);
28         for (i=0;i<io.results.length;i++) {
29                 var sessions = io.results[i].info.sessions.sessions;
30                 var j;
31                 for (j=0;j<sessions.length;j++) {
32                         ret[count] = sessions[j];
33                         count++;
34                 }
35         }
36         return ret;
37 }
38
39 /*
40   return a list of current tree connects
41 */
42 function smbsrv_tcons()
43 {
44         var irpc = irpc_init();
45         status = irpc.connect("smb_server");
46         if (status.is_ok != true) {
47                 return undefined;
48         }
49
50         var io = irpcObj();
51         io.input.level = irpc.SMBSRV_INFO_TCONS;
52         status = irpc.smbsrv_information(io);
53         if (status.is_ok != true) {
54                 return undefined;
55         }
56
57         /* gather the results into a single array */
58         var i, count=0, ret = new Object();
59         for (i=0;i<io.results.length;i++) {
60                 var tcons = io.results[i].info.tcons.tcons;
61                 var j;
62                 for (j=0;j<tcons.length;j++) {
63                         ret[count] = tcons[j];
64                         count++;
65                 }
66         }
67         ret.length = count;
68         return ret;
69 }
70
71 /*
72   return nbtd statistics
73 */
74 function nbtd_statistics()
75 {
76         var irpc = irpc_init();
77         status = irpc.connect("nbt_server");
78         if (status.is_ok != true) {
79                 return undefined;
80         }
81
82         var io = irpcObj();
83         io.input.level = irpc.NBTD_INFO_STATISTICS;
84         status = irpc.nbtd_information(io);
85         if (status.is_ok != true) {
86                 return undefined;
87         }
88         return io.results[0].info.stats;
89 }
90
91 /*
92   see if a service is enabled
93 */
94 function service_enabled(name)
95 {
96         var lp = loadparm_init();
97         var services = lp.get("server services");
98         var i;
99         for (i=0;i<services.length;i++) {
100                 if (services[i] == name) {
101                         return true;
102                 }
103         }
104         return false;
105 }
106
107 /*
108   show status of a server
109 */
110 function server_status(name)
111 {
112         var i;
113         var io;
114         var irpc = irpc_init();
115
116         if (!service_enabled(name)) {
117                 return "DISABLED";
118         }
119         
120         status = irpc.connect(name + "_server");
121         if (status.is_ok != true) {
122                 return "DOWN";
123         }
124
125         var io = irpcObj();
126         status = irpc.irpc_uptime(io);
127         if (status.is_ok != true) {
128                 return "NOT RESPONDING";
129         }
130
131         return "RUNNING";
132 }
133
134 /*
135   show status of a stream server
136 */
137 function stream_server_status(name)
138 {
139         var irpc = irpc_init();
140
141         if (!service_enabled(name)) {
142                 return "DISABLED";
143         }
144         status = irpc.connect(name + "_server");
145         if (status.is_ok != true) {
146                 return "0 connections";
147         }
148
149         var io = irpcObj();
150         status = irpc.irpc_uptime(io);
151         if (status.is_ok != true) {
152                 return "NOT RESPONDING";
153         }
154
155         var n = io.results.length;
156         return sprintf("%u connection%s", n, plural(n));
157 }