3
# openipmi GUI handling for MC users
5
# Author: MontaVista Software, Inc.
6
# Corey Minyard <minyard@mvista.com>
9
# Copyright 2005 MontaVista Software Inc.
11
# This program is free software; you can redistribute it and/or
12
# modify it under the terms of the GNU Lesser General Public License
13
# as published by the Free Software Foundation; either version 2 of
14
# the License, or (at your option) any later version.
17
# THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED
18
# WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
19
# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
20
# IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
21
# INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
22
# BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
23
# OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
24
# ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR
25
# TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE
26
# USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
28
# You should have received a copy of the GNU Lesser General Public
29
# License along with this program; if not, write to the Free
30
# Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
41
def __init__(self, mcusers, user, setter):
42
self.mcusers = mcusers
47
def SetItem(self, item):
51
def HandleMenu(self, event, eitem, point):
52
gui_popup.popup(self.mcusers, event,
53
[ ("Toggle Value", self.togglevalue) ],
57
def togglevalue(self, event):
58
val = str(self.mcusers.GetColumn(self.item, 1))
59
if (val == "True") or (val == "true"):
66
rv = self.setter(bval)
68
self.mcusers.SetError("Could not toggle value: "
69
+ OpenIPMI.get_error_string(rv), 0)
71
self.user.changed = True
72
self.mcusers.SetColumn(self.item, val, 1);
78
def __init__(self, mcusers, user, setter, name, currval):
79
self.mcusers = mcusers
82
self.currval = currval
86
def SetItem(self, item):
90
def HandleMenu(self, event, eitem, point):
91
gui_popup.popup(self.mcusers, event,
92
[ ("Modify Value", self.modval) ],
96
def modval(self, event):
97
gui_setdialog.SetDialog("Set Value for " + self.name,
98
[ str(self.currval) ],
105
rv = self.setter(val)
107
return ("Could not set value: "
108
+ OpenIPMI.get_error_string(rv))
109
self.user.changed = True
110
self.mcusers.SetColumn(self.item, str(val), 1)
117
def __init__(self, mcusers, user, setter, name, currval, prompt):
118
self.mcusers = mcusers
121
self.currval = currval
126
def SetItem(self, item):
130
def HandleMenu(self, event, eitem, point):
131
gui_popup.popup(self.mcusers, event,
132
[ (self.prompt, self.modval) ],
136
def modval(self, event):
137
gui_setdialog.SetDialog(self.prompt + " for " + self.name,
138
[ str(self.currval) ],
145
rv = self.setter(val)
147
return ("Could not set value: "
148
+ OpenIPMI.get_error_string(rv))
149
self.user.changed = True
150
self.mcusers.SetColumn(self.item, str(val), 1)
156
def GetPrivilegeString(val):
160
return OpenIPMI.privilege_string(val)
164
def __init__(self, mcusers, user, setter):
165
self.mcusers = mcusers
170
def SetItem(self, item):
174
def HandleMenu(self, event, eitem, point):
175
gui_popup.popup(self.mcusers, event,
176
[ ("Callback", self.callback),
177
("User", self.handleuser),
178
("Operator", self.operator),
179
("Admin", self.admin),
181
("NO ACCESS", self.noaccess) ],
185
def setval(self, val):
186
rv = self.setter(val)
188
mcusers.SetError("Could not set value: "
189
+ OpenIPMI.get_error_string(rv))
191
self.user.changed = True
192
self.mcusers.SetColumn(self.item, GetPrivilegeString(val), 1)
195
def callback(self, event):
196
self.setval(OpenIPMI.PRIVILEGE_CALLBACK)
199
def handleuser(self, event):
200
self.setval(OpenIPMI.PRIVILEGE_USER)
203
def operator(self, event):
204
self.setval(OpenIPMI.PRIVILEGE_OPERATOR)
207
def admin(self, event):
208
self.setval(OpenIPMI.PRIVILEGE_ADMIN)
211
def oem(self, event):
212
self.setval(OpenIPMI.PRIVILEGE_OEM)
215
def noaccess(self, event):
228
class SetUserHandler:
229
def __init__(self, mcusers, num):
230
self.mcusers = mcusers
234
def mc_channel_set_user_cb(self, mc, err):
235
self.mcusers.user_set(mc, err, self.num)
240
class MCUsers(gui_treelist.TreeList):
241
def __init__(self, mc, channel, max_users, enabled_users, fixed_users,
243
gui_treelist.TreeList.__init__(self, "user info for " + mc.get_name()
244
+ " channel " + str(channel),
246
[ ("Name", 300), ("Value", 400) ] )
248
self.mc_id = mc.get_id()
251
self.channel = channel
254
item = self.add_data(self.treeroot, "Max Users", [ str(max_users) ])
255
item = self.add_data(self.treeroot, "Enabled Users",
256
[ str(enabled_users) ])
257
item = self.add_data(self.treeroot, "Fixed Users", [str(fixed_users)])
267
setter = StrSetter(self, u, u.set_password_auto,
268
"Password", "", "Set Password")
271
us = self.add_data(self.treeroot, str(num), [nm], setter)
273
us = self.add_data(self.treeroot, str(num), [], setter)
277
if (num > fixed_users):
278
setter = StrSetter(self, u, u.set_name, "Name", nm,
283
item = self.add_data(us, "Name", [nm], setter)
287
s = IntToBoolStr(v[0])
291
item = self.add_data(us, "Enabled", [s],
292
BoolSetter(self, u, u.set_enable))
294
rv = u.get_link_auth_enabled(v)
296
s = IntToBoolStr(v[0])
300
item = self.add_data(us, "Link Auth Enabled", [s],
302
u.set_link_auth_enabled))
304
rv = u.get_msg_auth_enabled(v)
306
s = IntToBoolStr(v[0])
310
item = self.add_data(us, "Msg Auth Enabled", [s],
312
u.set_msg_auth_enabled))
314
rv = u.get_access_cb_only(v)
316
s = IntToBoolStr(v[0])
320
item = self.add_data(us, "Access Callback Only", [s],
321
BoolSetter(self, u, u.set_access_cb_only))
323
rv = u.get_privilege_limit(v)
325
s = GetPrivilegeString(v[0])
329
item = self.add_data(us, "Privilege Limit", [s],
331
u.set_privilege_limit))
333
rv = u.get_session_limit(v)
340
item = self.add_data(us, "Session Limit", [s],
341
IntSetter(self, u, u.set_session_limit,
342
"Session Limit", v[0]))
358
self.mc_id.to_mc(self)
367
rv = mc.set_user(u, self.channel, u.num,
368
SetUserHandler(self, u.num))
370
self.SetError("Error setting user "
372
+ OpenIPMI.get_error_string(rv))
379
if ((self.errnum == 0) and (self.waitcount == 0)):
381
elif (self.waitcount > 0):
385
def user_set(self, mc, err, num):
387
self.SetError("Error setting user " + str(num) + ": "
388
+ OpenIPMI.get_error_string(err))
392
if (self.waitcount <= 0):
393
self.in_save = False;
394
if (self.errnum == 0):
400
def do_on_close(self):