def getUserData(): l = conecta() u = Users(l, "", "", "", "", request.vars['username'], "", "", "", "") response = u.getUserData() l.close() return dict(response=response)
def check_groups(): l=conecta() u = Users(l,"","","","","","","","","") users = u.getAllUsers() allUsersUID=[] allUsers=[] for us in users: allUsersUID.append(us['uid'][0]) allUsers.append("uid="+us['uid'][0]+",ou=People,dc=instituto,dc=extremadura,dc=es") g = Groups(l,"","","") groups = g.getAllGroups() info=[] count=1 for g in groups: try: if g['groupType'][0]=="school_class" or g['groupType'][0]=="school_department" or g['groupType'][0]=="authority_group": for m in g['member']: if m!="" and m not in allUsers: info.append({'id_check':count, 'group':g['cn'][0], 'type':'member', 'user':m, 'info':'dont_exists' }) count+=1 for m in g['memberUid']: if m!="" and m not in allUsersUID: info.append({'id_check':count, 'group':g['cn'][0], 'type':'memberUid', 'user':m, 'info':'dont_exists' }) count+=1 except: pass return dict(info=info)
def modify_user(): l = conecta() departments = [] classrooms = [] if "departments[]" in request.vars: departments = request.vars["departments[]"] if "classrooms[]" in request.vars: classrooms = request.vars["classrooms[]"] if request.vars["type"] == "staff": g = Groups(l, "authority_group", "staff", []) if not g.checkGroup(): g.add() u = Users( l, request.vars["type"], request.vars["name"], request.vars["surname"], request.vars["nif"], request.vars["user"], request.vars["password"], request.vars["password2"], departments, classrooms, ) response = u.process(request.vars["action"]) l.close() return dict(response=response)
def getUserData(): l=conecta() u = Users(l,"","","","",request.vars['username'],"","","","") response = u.getUserData() l.close() return dict(response=response)
def getClassroomDetails(): import xmlrpclib from applications.controlies.modules.Users import Users l=conecta() objUser = Users(l,"","","","",request.vars['teacher'],"","","","") teacherData = objUser.getUserData() s = xmlrpclib.Server("http://" + request.vars['classroom'] + ":8900"); users = s.Users() response = [] for u in users: user = u.split("@") objUser = Users(l,"","","","",user[0],"","","","") photo = objUser.getUserPhoto() # response.append({ 'username': user[0], 'host': user[1], 'photo': photo }) #return json.dumps({ "teacher" : teacherData, "classroom" : request.args['classroom'][0], "students" : response }) return dict()
def addHistory(l,username,id_laptop,computer_name): lh = LaptopsHistory(cdb,"",id_laptop,"","","","","","","") lastUsername = lh.getLastHistory() if username!="" and lastUsername['username']!=username: u = Users(l,"","","","",username,"","","","") userData = u.getUserData() if userData["uidnumber"]!="": # Si existe el usuario lh.set_id_state(2) # Asignado if userData["type"]=="student": lh.set_id_user_type(2) elif userData["type"]=="teacher": lh.set_id_user_type(1) lh.set_computer_name(computer_name) lh.set_username(username) lh.set_name(userData["name"]+" "+userData["surname"]) lh.set_nif(userData["nif"]) lh.set_comment("Volcado masivo ControlIES") lh.add() elif username=="" and lastUsername['username']!="": lh.set_id_state(1) # No Asignado lh.set_computer_name(computer_name) lh.set_comment("Volcado masivo ControlIES") lh.add()
def create_home_directory(): from applications.controlies.modules.SSHConnection import SSHConnection #c = SSHConnection(request.vars['host'],request.vars['user'],request.vars['password']) c = SSHConnection("servidor","root",request.vars['password']) response = c.process() print request.vars if response != True: return dict(response = response) l=conecta() u = Users(l,"","","","",request.vars['username'],"","","","") responseUser = u.getUserData() l.close() homeDirectory = Utils.homeDirectory(request.vars['type'])+responseUser["user"] c.exec_command("cp -r /etc/skel "+homeDirectory) c.exec_command("chown -R "+responseUser["uidnumber"]+":"+responseUser["gidnumber"]+" "+homeDirectory) try: if request.vars["trustRelationship"] == "on": dir_ssh = "/var/web2py/applications/controlies" Utils.generateRSAkeys(dir_ssh) c.open_ftp() c.removeFile("/tmp/controlIES_rsa.pub") c.putFile(dir_ssh+"/.ssh/id_rsa.pub","/tmp/controlIES_rsa.pub") c.exec_command('cat /tmp/controlIES_rsa.pub >> /root/.ssh/authorized_keys') c.close_ftp() except: pass c.close() return dict(response = "OK")
def listUsers(self, args): # grid parameters limit = int(args['rows']) page = int(args['page']) start = limit * page - limit finish = start + limit # sort by field sortBy = args['sidx'] # reverse Sort reverseSort = False if args['sord'] == "asc": reverseSort = True groupData = self.getGroupData() rows = [] for i in groupData["memberuid"]: if i == "": continue u = Users(self.ldap, "", "", "", "", i, "", "", "", "") userData = u.getUserData() row = { "id": userData["user"], "cell": [ userData["surname"] + ", " + userData["name"], userData["user"], userData["nif"] ], "cn": userData["surname"] + ", " + userData["name"], "uid": userData["user"], "employeeNumber": userData["nif"] } rows.append(row) if len(rows) > 0: totalPages = floor(len(rows) / int(limit)) module = len(rows) % int(limit) if module > 0: totalPages = totalPages + 1 else: totalPages = 0 if page > totalPages: page = totalPages # sort rows result = sorted(rows, key=itemgetter(sortBy), reverse=reverseSort) return { "page": page, "total": totalPages, "records": len(groupData["memberuid"]), "rows": result[start:finish] }
def getInfoLDAP(): info = {} l=conecta() request.vars["type"]="Profesor" request.vars["rows"]="999999999" request.vars["page"]="1" request.vars["sidx"]="cn" request.vars["sord"]="desc" u = Users(l,"","","","","","","","","") response = u.list(request.vars) info["teachers"] = response["records"] request.vars["type"]="Alumno" response = u.list(request.vars) info["students"] = response["records"] g = Groups(l,"","","") request.vars["type"]="Aula" response = g.list(request.vars) info["course"] = response["records"] request.vars["type"]="Departamento" response = g.list(request.vars) info["departments"] = response["records"] h = Hosts (l,"","","","ltsp-server-hosts") response = h.list(request.vars) info["ltspservers"] = response["records"] h = Hosts (l,"","","","workstation-hosts") response = h.list(request.vars) info["workstations"] = response["records"] h = Hosts (l,"","","","laptop-hosts") response = h.list(request.vars) info["laptops"] = response["records"] h = Thinclients (l,"","","","") request.vars["cn"]="-o" response = h.list(request.vars) info["thinclients"] = response["records"] request.vars["cn"]="-p" response = h.list(request.vars) info["student-laptops"] = response["records"] info["total-computers"] = info["student-laptops"] + info["thinclients"] + info["laptops"] + info["workstations"] info["total-users"] = info["teachers"] + info["students"] l.close() return dict(info=info)
def getInfoLDAP(): info = {} l = conecta() request.vars["type"] = "Profesor" request.vars["rows"] = "999999999" request.vars["page"] = "1" request.vars["sidx"] = "cn" request.vars["sord"] = "desc" u = Users(l, "", "", "", "", "", "", "", "", "") response = u.list(request.vars) info["teachers"] = response["records"] request.vars["type"] = "Alumno" response = u.list(request.vars) info["students"] = response["records"] g = Groups(l, "", "", "") request.vars["type"] = "Aula" response = g.list(request.vars) info["course"] = response["records"] request.vars["type"] = "Departamento" response = g.list(request.vars) info["departments"] = response["records"] h = Hosts(l, "", "", "", "ltsp-server-hosts") response = h.list(request.vars) info["ltspservers"] = response["records"] h = Hosts(l, "", "", "", "workstation-hosts") response = h.list(request.vars) info["workstations"] = response["records"] h = Hosts(l, "", "", "", "laptop-hosts") response = h.list(request.vars) info["laptops"] = response["records"] h = Thinclients(l, "", "", "", "") request.vars["cn"] = "-o" response = h.list(request.vars) info["thinclients"] = response["records"] request.vars["cn"] = "-p" response = h.list(request.vars) info["student-laptops"] = response["records"] info["total-computers"] = info["student-laptops"] + info["thinclients"] + info["laptops"] + info["workstations"] info["total-users"] = info["teachers"] + info["students"] l.close() return dict(info=info)
def make_directory(username, type, c): l=conecta() u = Users(l,"","","","",username,"","","","") responseUser = u.getUserData() l.close() homeDirectory = Utils.homeDirectory(request.vars['type'])+responseUser["user"] if type=="staff": c.exec_command("test ! -d /home/profesor/staff && mkdir /home/profesor/staff; chown root:staff /home/profesor/staff") c.exec_command("cp -r /etc/skel "+homeDirectory+"; chown -R "+responseUser["user"]+":"+responseUser["user"]+" "+homeDirectory)
def modify_user(): l=conecta() departments=[] classrooms=[] if 'multiselect_departments' in request.vars: departments = request.vars['multiselect_departments'] if 'multiselect_classrooms' in request.vars:classrooms = request.vars['multiselect_classrooms'] u = Users(l,request.vars['type'],request.vars['name'],"",request.vars['nif'],request.vars['user'],request.vars['password'],request.vars['password2'],departments,classrooms) response = u.process(request.vars['action']) l.close() return dict(response = response)
def listUsers(self,args): from applications.controlies.modules.Users import Users # grid parameters limit = int(args['rows']) page = int(args['page']) start = limit * page - limit finish = start + limit; # sort by field sortBy = args['sidx'] if sortBy == "cn": sortBy = "id" # reverse Sort reverseSort = False if args['sord']== "asc": reverseSort = True groupData = self.getGroupData() rows = [] for i in groupData["memberuid"]: u = Users(self.ldap,"","","","",i,"","","","") userData = u.getUserData() row = { "id":userData["user"], "cell":[userData["name"],userData["user"],userData["nif"]], "cn": userData["name"], "uid": userData["user"], "employeeNumber": userData["nif"] } rows.append(row) if len(rows) > 0: totalPages = floor( len(rows) / int(limit) ) module = len(rows) % int(limit) if module > 0: totalPages = totalPages+1 else: totalPages = 0 if page > totalPages: page = totalPages # sort rows result = sorted(rows, key=itemgetter(sortBy), reverse=reverseSort) return { "page":page, "total":totalPages, "records":len(groupData["memberuid"]), "rows":result[start:finish] }
def modify_user(): l=conecta() departments=[] classrooms=[] if 'departments[]' in request.vars: departments = request.vars['departments[]'] if 'classrooms[]' in request.vars:classrooms = request.vars['classrooms[]'] if request.vars['type']=="staff": g = Groups(l,"authority_group","staff",[]) if not g.checkGroup(): g.add() u = Users(l,request.vars['type'],request.vars['name'],request.vars['surname'],request.vars['nif'],request.vars['user'],request.vars['password'],request.vars['password2'],departments,classrooms) response = u.process(request.vars['action']) l.close() return dict(response = response)
def check_groups(): l = conecta() u = Users(l, "", "", "", "", "", "", "", "", "") users = u.getAllUsers() allUsersUID = [] allUsers = [] for us in users: allUsersUID.append(us['uid'][0]) allUsers.append("uid=" + us['uid'][0] + ",ou=People,dc=instituto,dc=extremadura,dc=es") g = Groups(l, "", "", "") groups = g.getAllGroups() info = [] count = 1 for g in groups: try: if g['groupType'][0] == "school_class" or g['groupType'][ 0] == "school_department" or g['groupType'][ 0] == "authority_group": for m in g['member']: if m != "" and m not in allUsers: info.append({ 'id_check': count, 'group': g['cn'][0], 'type': 'member', 'user': m, 'info': 'dont_exists' }) count += 1 for m in g['memberUid']: if m != "" and m not in allUsersUID: info.append({ 'id_check': count, 'group': g['cn'][0], 'type': 'memberUid', 'user': m, 'info': 'dont_exists' }) count += 1 except: pass return dict(info=info)
def validation(self, action): if self.name == "": return "name" if action == "add": if self.existsHostname(): return "hostAlreadyExists" if self.mac == "": return "mac" if not ValidationUtils.validMAC(self.mac): return "mac" if self.macWlan != "": if not ValidationUtils.validMAC(self.macWlan): return "macWlan" if self.mac == self.macWlan: return "macWlanAlreadyExists" if action == "add": if self.existsMAC(self.mac): return "macAlreadyExists" if self.macWlan != "": if self.existsMAC(self.macWlan): return "macWlanAlreadyExists" elif action == "modify": if not self.equalMAC(): if self.existsMAC(self.mac): return "macAlreadyExists" if self.macWlan != "": if not self.equalMACWlan(): if self.existsMAC(self.macWlan): return "macWlanAlreadyExists" if self.username != "": u = Users(self.ldap, "", "", "", "", self.username, "", "", "", "") exists = u.existsUsername() if not exists: return "userNotExists" return "OK"
def validation(self,action): if self.name == "": return "name" if action == "add": if self.existsHostname(): return "hostAlreadyExists" if self.mac == "": return "mac" if not ValidationUtils.validMAC(self.mac): return "mac" if self.macWlan!="": if not ValidationUtils.validMAC(self.macWlan): return "macWlan" if self.mac == self.macWlan: return "macWlanAlreadyExists" if action == "add": if self.existsMAC(self.mac): return "macAlreadyExists" if self.macWlan!="": if self.existsMAC(self.macWlan): return "macWlanAlreadyExists" elif action == "modify": if not self.equalMAC(): if self.existsMAC(self.mac): return "macAlreadyExists" if self.macWlan!="": if not self.equalMACWlan(): if self.existsMAC(self.macWlan): return "macWlanAlreadyExists" if self.username != "": u = Users(self.ldap,"","","","",self.username,"","","","") exists = u.existsUsername() if not exists: return "userNotExists" return "OK"
def getGroupUsersData(self): groupData = self.getGroupData() rows = [] for i in groupData["memberuid"]: u = Users(self.ldap, "", "", "", "", i, "", "", "", "") userData = u.getUserData() row = { "id": userData["user"], "sn": userData["surname"] + ", " + userData["name"], "uid": userData["user"], "employeeNumber": userData["nif"] } rows.append(row) newlist = sorted(rows, key=lambda k: k['sn']) return newlist
def getGroupUsersData(self): groupData = self.getGroupData() rows = [] for i in groupData["memberuid"]: u = Users(self.ldap,"","","","",i,"","","","") userData = u.getUserData() row = { "id":userData["user"], "sn": userData["surname"]+", "+userData["name"], "uid": userData["user"], "employeeNumber": userData["nif"] } rows.append(row) newlist = sorted(rows, key=lambda k: k['sn']) return newlist
def delete(): l=conecta() if(isinstance(request.vars['user[]'], str)): u = Users(l,"","","","",request.vars['user[]'],"","","","") u.delete() else: for h in request.vars['user[]']: u = Users(l,"","","","",h,"","","","") u.delete() l.close() return dict(response="OK")
def create_home_directory_withoutpass(): from applications.controlies.modules.SSHConnection import SSHConnection c = SSHConnection("servidor","root","") response = c.connectWithoutPass("/var/web2py/applications/controlies/.ssh/id_rsa") if response != True: return dict(response = response) l=conecta() u = Users(l,"","","","",request.vars['username'],"","","","") responseUser = u.getUserData() l.close() homeDirectory = Utils.homeDirectory(request.vars['type'])+responseUser["user"] c.exec_command("cp -r /etc/skel "+homeDirectory) c.exec_command("chown -R "+responseUser["uidnumber"]+":"+responseUser["gidnumber"]+" "+homeDirectory) c.close() return dict(response = "OK")
def make_directory(username, type, c): l = conecta() u = Users(l, "", "", "", "", username, "", "", "", "") responseUser = u.getUserData() l.close() homeDirectory = Utils.homeDirectory(request.vars["type"]) + responseUser["user"] if type == "staff": c.exec_command( "test ! -d /home/profesor/staff && mkdir /home/profesor/staff; chown root:staff /home/profesor/staff" ) c.exec_command( "cp -r /etc/skel " + homeDirectory + "; chown -R " + responseUser["user"] + ":" + responseUser["user"] + " " + homeDirectory )
def delete(): l = conecta() if isinstance(request.vars["user[]"], str): u = Users(l, "", "", "", "", request.vars["user[]"], "", "", "", "") u.delete() else: for h in request.vars["user[]"]: u = Users(l, "", "", "", "", h, "", "", "", "") u.delete() l.close() return dict(response="OK")
def getClassroomDetails(): import xmlrpclib from applications.controlies.modules.Users import Users l = conecta() objUser = Users(l, "", "", "", "", request.vars['teacher'], "", "", "", "") teacherData = objUser.getUserData() s = xmlrpclib.Server("http://" + request.vars['classroom'] + ":8900") users = s.Users() response = [] for u in users: user = u.split("@") objUser = Users(l, "", "", "", "", user[0], "", "", "", "") photo = objUser.getUserPhoto() # response.append({ 'username': user[0], 'host': user[1], 'photo': photo }) #return json.dumps({ "teacher" : teacherData, "classroom" : request.args['classroom'][0], "students" : response }) return dict()
def searchUsername(): l = conecta() u = Users(l, "", request.vars["name"], request.vars["name"], "", "", "", "", "", "") response = u.searchNewUsername() l.close() return dict(response=response)
def list(): l = conecta() u = Users(l, "", "", "", "", "", "", "", "", "") response = u.list(request.vars) l.close() return response
def delete(): l=conecta() u = Users(l,"","","","",request.vars['user'],"","","","") response = u.delete() l.close() return dict(response=response)
def list(): l=conecta() u = Users(l,"","","","","","","","","") response = u.list(request.vars) l.close() return response
def searchUsername(): l=conecta() u = Users(l,"",request.vars['name'],request.vars['name'],"","","","","","") response = u.searchNewUsername() l.close() return dict(response=response)
def getUserData(username): ld=conecta() u = Users(ld,"","","","",username,"","","","") userData = u.getUserData() ld.close() return userData