Пример #1
0
def getUserData():

    l = conecta()
    u = Users(l, "", "", "", "", request.vars['username'], "", "", "", "")
    response = u.getUserData()
    l.close()
    return dict(response=response)
Пример #2
0
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)
Пример #3
0
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)
Пример #4
0
def getUserData():

    l=conecta()
    u = Users(l,"","","","",request.vars['username'],"","","","")
    response = u.getUserData()
    l.close()
    return dict(response=response)
Пример #5
0
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()
Пример #6
0
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()
Пример #7
0
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")       
Пример #8
0
    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]
        }
Пример #9
0
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)
Пример #10
0
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)
Пример #11
0
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)
Пример #12
0
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)    
Пример #13
0
    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] }
Пример #14
0
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)    
Пример #15
0
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)
Пример #16
0
    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"
Пример #17
0
    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"
Пример #18
0
    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
Пример #19
0
    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
Пример #20
0
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")
Пример #21
0
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")
Пример #22
0
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
    )
Пример #23
0
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")
Пример #24
0
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()
Пример #25
0
def searchUsername():
    l = conecta()
    u = Users(l, "", request.vars["name"], request.vars["name"], "", "", "", "", "", "")
    response = u.searchNewUsername()
    l.close()
    return dict(response=response)
Пример #26
0
def list():
    l = conecta()
    u = Users(l, "", "", "", "", "", "", "", "", "")
    response = u.list(request.vars)
    l.close()
    return response
Пример #27
0
def delete():
    l=conecta()
    u = Users(l,"","","","",request.vars['user'],"","","","")
    response = u.delete()  
    l.close()                          
    return dict(response=response)
Пример #28
0
def list():
    l=conecta()
    u = Users(l,"","","","","","","","","")
    response = u.list(request.vars)
    l.close()
    return response    
Пример #29
0
def searchUsername():
    l=conecta()
    u = Users(l,"",request.vars['name'],request.vars['name'],"","","","","","")
    response = u.searchNewUsername() 
    l.close()                
    return dict(response=response)
Пример #30
0
def getUserData(username):
    ld=conecta()
    u = Users(ld,"","","","",username,"","","","")
    userData = u.getUserData() 
    ld.close()
    return userData