def SetPassword(self): if not self._check_session(): return json.dumps(self.AuthErr); try: rid = request.params.get("rid",self.rid) username = request.params.get("account","") password = request.params.get("password",samba.generate_random_password(7,15)) #response.write(password); if(self.model.isAuthenticate()): if(not self.model.SetPassword(username,password)): raise Exception(self.model.LastErrorNumber,self.model.LastErrorStr) UnlockUserAccount = request.params.get("UnlockUserAccount",False) if(UnlockUserAccount != False): if(not self.model.EnableAccount(rid,username,True)): raise Exception(self.model.LastErrorNumber,self.model.LastErrorStr) ForcePasswordChange = request.params.get("ForcePasswordChange","off").strip(); if(ForcePasswordChange == "on"): if(not self.model.ForcePasswordChangeAtNextLogin(rid,username)): raise Exception(self.model.LastErrorNumber,self.model.LastErrorStr) else: if(not self.model.ForcePasswordChangeAtNextLogin(rid,username,False)): raise Exception(self.model.LastErrorNumber,self.model.LastErrorStr) except Exception,e: if(len(e.args)>1): return json.dumps({'success': False, 'msg': e.args[1],'num':e.args[0]}) else: return json.dumps({'success': False, 'msg': e.args,'num':-1})
def EnableAccount(self): if not self._check_session(): return json.dumps(self.AuthErr); try: rid = request.params.get("rid",self.rid) username = request.params.get("username","") enable = request.params.get("enable","yes").strip(); if(self.model.isAuthenticate()): if(enable == "yes"): enable=True else: enable=False if(not self.model.EnableAccount(rid,username,enable)): raise Exception(self.model.LastErrorNumber,self.model.LastErrorStr) else: raise Exception(self.model.LastErrorNumber,self.model.LastErrorStr) except Exception,e: if(len(e.args)>1): return json.dumps({'success': False, 'msg': e.args[1],'num':e.args[0]}) else: return json.dumps({'success': False, 'msg': e.args,'num':-1})
def UpdateShare(self): if not self._check_session(): return json.dumps(self.AuthErr); try: name = request.params.get("name",""); comment = request.params.get("comment",""); #FIXME check path path = request.params.get("path",""); share = self.model.GetShare(name); if(share==False): raise Exception(self.model.LastErrorNumber,self.model.LastErrorStr) share.name=name; share.comment=comment; share.path=path; if(self.model.UpdateShare(share)==False): raise Exception(self.model.LastErrorNumber,self.model.LastErrorStr) except Exception,e: if(len(e.args)>1): return json.dumps({'success': False, 'msg': e.args[1],'num':e.args[0]}) else: return json.dumps({'success': False, 'msg': e.args,'num':-1})
def AddShare(self): if not self._check_session(): return json.dumps(self.AuthErr) try: name = request.params.get("sharename", "") comment = request.params.get("sharecomment", "") path = request.params.get("sharepath", "") ret = self.model.AddShare(name, path, comment) if ret == False: raise Exception(self.model.LastErrorNumber, self.model.LastErrorStr) except Exception, e: return json.dumps({'success': False, 'msg': unicode(e)})
def DeleteGroup(self): try: if not self._check_session(): return json.dumps(self.AuthErr); rid = request.params.get("rid",-1) if(not self.model.DeleteGroup(rid)): raise Exception(self.model.LastErrorNumber,self.model.LastErrorStr) except Exception,e: if(len(e.args)>1): return json.dumps({'success': False, 'msg': e.args[1],'num':e.args[0]}) else: return json.dumps({'success': False, 'msg': e.args,'num':-1})
def index(self): if not self._check_session(): return json.dumps(self.AuthErr); groups = self.model.GetGroupList(); start = int(request.params.get("start",0)); limit = int(request.params.get("limit",18)); query = request.params.get("query",""); query = query.lower(); fields = request.params.get("fields",""); if query.strip() != '': if fields.count(',')>0: fields='username'; if fields.strip() == '': fields='username'; #if fields.strip() != '': # fields='username'; newgrouplist = []; for group in groups: if(fields=='rid'): if query.isdigit(): query = int(query); if(group.rid!=query): continue; elif(fields=='name'): if(not group.name.lower().count(query)): continue; elif(fields=='description'): if(not group.description.lower().count(query)): continue; else: continue; newgrouplist.append(group); del groups groups=newgrouplist; total=len(groups); Page = webhelpers.paginate.Page(groups, page=start, items_per_page=limit) for group in Page: self.ChildNodes.append({ 'name':group.name ,'description':group.description ,'rid':group.rid ,'memberlist':group.memberlist ,'icon':'group-icon' ,'type':'group' }); return jsonpickle.encode({"Nodos":self.ChildNodes,'total':total},unpicklable=False);
def DeleteGroupList(self): try: if not self._check_session(): return json.dumps(self.AuthErr); GroupList = request.params.get("GroupList","") if(GroupList.count(',')>0): GroupList = GroupList.split(','); for rid in GroupList: if(not self.model.DeleteGroup(rid)): raise Exception(self.model.LastErrorNumber,self.model.LastErrorStr) else: if(not self.model.DeleteGroup(GroupList)): raise Exception(self.model.LastErrorNumber,self.model.LastErrorStr) except Exception,e: if(len(e.args)>1): return json.dumps({'success': False, 'msg': e.args[1],'num':e.args[0]}) else: return json.dumps({'success': False, 'msg': e.args,'num':-1})
def ListAll(self): if not self._check_session(): return json.dumps(self.AuthErr); groups = self.model.GetGroupList(); for group in groups: self.ChildNodes.append({ 'name':group.name ,'rid':group.rid ,'type':2 }); return jsonpickle.encode({"Nodos":self.ChildNodes},unpicklable=False);
def DeleteUserList(self): try: if not self._check_session(): return json.dumps(self.AuthErr); #rid = request.params.get("rid",-1) UserList = request.params.get("UserList","") if(UserList.count(',')>0): UserList = UserList.split(','); for username in UserList: if(not self.model.DeleteUser(username)): raise Exception(self.model.LastErrorNumber,self.model.LastErrorStr) else: if(not self.model.DeleteUser(UserList)): raise Exception(self.model.LastErrorNumber,self.model.LastErrorStr) except Exception,e: if(len(e.args)>1): return json.dumps({'success': False, 'msg': e.args[1],'num':e.args[0]}) else: return json.dumps({'success': False, 'msg': e.args,'num':-1})
def UpdateGroup(self): if not self._check_session(): return json.dumps(self.AuthErr); try: rid = int(request.params.get("rid",-1)); name = request.params.get("name",""); description = request.params.get("description",""); group = self.model.GetGroup(rid); if(group==False): raise Exception(self.model.LastErrorNumber,self.model.LastErrorStr) group = Group(name,description,rid); if(self.model.UpdateGroup(group)==False): raise Exception(self.model.LastErrorNumber,self.model.LastErrorStr) self._UpdateMenbers(rid); except Exception,e: if(len(e.args)>1): return json.dumps({'success': False, 'msg': e.args[1],'num':e.args[0]}) else: return json.dumps({'success': False, 'msg': e.args,'num':-1})
def test(self): #List = ['nada']; #List = self.model.GetUserGroups(500); #return json.dumps({"Nodos":List}); #response.write(str(dir(self.model))); #user = User("test001","","",-1); try: for i in range(1,20): if not self.model.AddUser("test%s"%i): raise Exception(self.model.LastErrorNumber,self.model.LastErrorStr) except Exception,e: if self.model.LastErrorNumber !=0: num=self.model.LastErrorNumber return json.dumps({'success': False, 'msg': e.message,'num':num})
def index(self): if not self._check_session(): return json.dumps(self.AuthErr); Shares = self.model.GetShareList(); for Share in Shares: #response.write(Share.Sharename+"<br>"); Share.type='share'; Share.icon='HD-icon'; #self.ChildNodes.append({ # 'name':Share.name # ,'path':Share.path # ,'comment':Share.comment # ,'icon':'HD-icon' # ,'type':'share' #}); return jsonpickle.encode({"Nodos":Shares},unpicklable=False);
def _UpdateMenbers(self,rid): if not self._check_session(): return json.dumps(self.AuthErr); oldmemberlist = request.params.get("oldmemberlist","") memberlist = request.params.get("memberlist","") if(oldmemberlist.count(',')==0): if(oldmemberlist.isdigit()): number = int(oldmemberlist); oldmemberlist=list(); oldmemberlist.append(number); else: oldmemberlist=list() else: oldmemberlist = oldmemberlist.split(',') if(memberlist.count(',')==0): if(memberlist.isdigit()): number = int(memberlist); memberlist=list(); memberlist.append(number); else: memberlist=list() else: memberlist = memberlist.split(',') memberdiff = set(oldmemberlist).difference(memberlist); for member_rid in memberdiff: self.model.DeleteGroupMember(rid,member_rid); memberdiff = set(memberlist).difference(oldmemberlist); for member_rid in memberdiff: self.model.AddGroupMember(rid,member_rid);
def List(self): if not self._check_session(): return json.dumps(self.AuthErr); from swat.model.UserModel import UserModel; self.UserModel = UserModel(session['username'],session['password']); groups = self.model.GetGroupList(); for group in groups: self.ChildNodes.append({ 'name':group.name ,'rid':group.rid ,'type':2 }); users = self.UserModel.GetUserList(); for user in users: self.ChildNodes.append({ 'name':user.username ,'rid':user.rid ,'type':1 }); return jsonpickle.encode({"Nodos":self.ChildNodes},unpicklable=False);
def test(self): #return jsonpickle.encode(self.model.GetShareList()); if(self.model.AddShare("test")==False): return json.dumps({'success': False, 'msg':self.model.LastErrorStr,'num':self.model.LastErrorNumber}) return jsonpickle.encode(self.successOK);
def UpdateUser(self): if not self._check_session(): return json.dumps(self.AuthErr); try: username = request.params.get("username",""); fullname = request.params.get("fullname",""); description = request.params.get("description",""); rid = request.params.get("rid",self.rid); changepassword = request.params.get("changepassword","false"); if(changepassword!="false"): changepassword = True else: changepassword = False cannotchangepassword = request.params.get("cannotchangepassword","false"); if(cannotchangepassword!="false"): cannotchangepassword = True else: cannotchangepassword = False passwordexpires = request.params.get("passwordexpires","false"); if(passwordexpires!="false"): passwordexpires = True else: passwordexpires = False disable = request.params.get("disable","false"); if(disable!="false"): disable = True else: disable = False locked = request.params.get("locked","false"); if(locked!="false"): locked = True else: locked = False profile = request.params.get("profile",""); logonscript = request.params.get("logonscript",""); homedir = request.params.get("homedir",""); maphomedirdrive = request.params.get("maphomedirdrive",""); user = User(username,fullname,description,rid); user.must_change_password = changepassword; user.cannot_change_password = cannotchangepassword; user.password_never_expires = passwordexpires; user.account_disabled = disable; #locked = True; user.account_locked_out = locked; user.profile_path = profile; user.logon_script = logonscript; user.homedir_path = homedir; user.map_homedir_drive = maphomedirdrive; #user.password = "" #,'grouplist':user.group_list #user.group_list = [] #user.account_disabled = True; if not self.model.UpdateUser(user): raise Exception(self.model.LastErrorNumber,self.model.LastErrorStr) oldgrouplist = request.params.get("oldgrouplist","") grouplist = request.params.get("grouplist","") if(oldgrouplist.count(',')==0): if(oldgrouplist.isdigit()): number = int(oldgrouplist); oldgrouplist=list(); oldgrouplist.append(number); else: oldgrouplist=list() oldgrouplist.append(513); else: oldgrouplist = oldgrouplist.split(',') if(grouplist.count(',')==0): if(grouplist.isdigit()): number = int(grouplist); grouplist=list(); grouplist.append(number); else: grouplist=list() grouplist.append(513); else: grouplist = grouplist.split(',') groupdiff = set(oldgrouplist).difference(grouplist); for group_rid in groupdiff: self.GroupModel.DeleteGroupMember(group_rid,rid); groupdiff = set(grouplist).difference(oldgrouplist); for group_rid in groupdiff: self.GroupModel.AddGroupMember(group_rid,rid); except Exception,e: if(self.iscopy): raise; if(len(e.args)>1): return json.dumps({'success': False, 'msg': e.args[1],'num':e.args[0]}) else: return json.dumps({'success': False, 'msg': e.args,'num':-1})
raise Exception(self.model.LastErrorNumber,self.model.LastErrorStr) group = Group(name,description,rid); if(self.model.UpdateGroup(group)==False): raise Exception(self.model.LastErrorNumber,self.model.LastErrorStr) self._UpdateMenbers(rid); except Exception,e: if(len(e.args)>1): return json.dumps({'success': False, 'msg': e.args[1],'num':e.args[0]}) else: return json.dumps({'success': False, 'msg': e.args,'num':-1}) return json.dumps(self.successOK); def _UpdateMenbers(self,rid): if not self._check_session(): return json.dumps(self.AuthErr); oldmemberlist = request.params.get("oldmemberlist","") memberlist = request.params.get("memberlist","") if(oldmemberlist.count(',')==0): if(oldmemberlist.isdigit()): number = int(oldmemberlist); oldmemberlist=list(); oldmemberlist.append(number); else:
def index(self): if not self._check_session(): return json.dumps(self.AuthErr); users = self.model.GetUserList(); start = int(request.params.get("start",session['UserPageStart'])); limit = int(request.params.get("limit",session['UserPageLimit'])); #session['UserPageStart']=start; #session['UserPageLimit']=limit; #session.save(); query = request.params.get("query",""); query = query.lower(); fields = request.params.get("fields",""); if query.strip() != '': if fields.count(',')>0: fields='username'; if fields.strip() == '': fields='username'; #if fields.strip() != '': # fields='username'; newuserlist = []; for user in users: #response.write(user.username+"<br>"); #icon = 'usuario'; if(user.account_disabled): icon = 'dusuario'; if(fields=='rid'): if query.isdigit(): query = int(query); if(user.rid!=query): continue; elif(fields=='username'): if(not user.username.lower().count(query)): continue; elif(fields=='description'): if(not user.description.lower().count(query)): continue; else: continue; newuserlist.append(user); del users users=newuserlist; total=len(users); Page = webhelpers.paginate.Page(users, page=start, items_per_page=limit) for user in Page: #response.write(user.username+"<br>"); icon = 'usuario'; if(user.account_disabled): icon = 'dusuario'; self.ChildNodes.append({ 'username':user.username ,'fullname':user.fullname #,'description':user.description if user.description.strip() != '' else '-' ,'description':user.description ,'rid':user.rid ,'changepassword':user.must_change_password ,'cannotchangepassword':user.cannot_change_password ,'passwordexpires':user.password_never_expires ,'disable':user.account_disabled ,'locked':user.account_locked_out ,'grouplist':user.group_list ,'profile':user.profile_path ,'logonscript':user.logon_script ,'homedir':user.homedir_path ,'maphomedirdrive':user.map_homedir_drive ,'icon':icon ,'type':'user' }); return json.dumps({"Nodos":self.ChildNodes,'total':total});
def AddUser(self): try: if not self._check_session(): return json.dumps(self.AuthErr); username = request.params.get("username","") password = request.params.get("password",samba.generate_random_password(7,15)) fullname = request.params.get("fullname","") description = request.params.get("description","") iscopy = request.params.get("iscopy","false") changepassword = request.params.get("changepassword","false"); if(changepassword!="false"): changepassword = True else: changepassword = False cannotchangepassword = request.params.get("cannotchangepassword","false"); if(cannotchangepassword!="false"): cannotchangepassword = True else: cannotchangepassword = False passwordexpires = request.params.get("passwordexpires","false"); if(passwordexpires!="false"): passwordexpires = True else: passwordexpires = False disable = request.params.get("disable","false"); if(disable!="false"): disable = True else: disable = False rid = self.model.AddUser(username); if rid == False: raise Exception(self.model.LastErrorNumber,self.model.LastErrorStr) if(iscopy!="false"): self.iscopy=True; self.rid=rid; self.UpdateUser(); else: user = User(username,fullname,description,rid); user.must_change_password = changepassword; user.cannot_change_password = cannotchangepassword; user.password_never_expires = passwordexpires; user.account_disabled = disable; if not self.model.UpdateUser(user): raise Exception(self.model.LastErrorNumber,self.model.LastErrorStr) if(not self.model.SetPassword(username,password)): raise Exception(self.model.LastErrorNumber,self.model.LastErrorStr) except Exception,e: if(len(e.args)>1): return json.dumps({'success': False, 'msg': e.args[1],'num':e.args[0]}) else: return json.dumps({'success': False, 'msg': e.args,'num':-1})
def DeleteUser(self): try: if not self._check_session(): return json.dumps(self.AuthErr); #rid = request.params.get("rid",-1) username = request.params.get("username","") if(not self.model.DeleteUser(username)): raise Exception(self.model.LastErrorNumber,self.model.LastErrorStr) except Exception,e: if(len(e.args)>1): return json.dumps({'success': False, 'msg': e.args[1],'num':e.args[0]}) else: return json.dumps({'success': False, 'msg': e.args,'num':-1}) return json.dumps(self.successOK) def DeleteUserList(self): try: if not self._check_session(): return json.dumps(self.AuthErr); #rid = request.params.get("rid",-1) UserList = request.params.get("UserList","") if(UserList.count(',')>0): UserList = UserList.split(','); for username in UserList: if(not self.model.DeleteUser(username)): raise Exception(self.model.LastErrorNumber,self.model.LastErrorStr) else: if(not self.model.DeleteUser(UserList)):