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