예제 #1
0
def setIP():
    try:
        if (isinstance(request.vars["nodes[]"],str)):
            nodes = [request.vars["nodes[]"]]
        else:
            nodes = request.vars["nodes[]"]          
    except:
        nodes = "None"

    if not nodes:
        return dict(response="no_groups_selected")

    l=conecta()
    for n in nodes:
        c = Thinclients(l).getAllComputersNode(n)
        computers = sorted(c["computers"])
        ip = request.vars["ip"]
        for i in computers:
            new_ip = "192.168.0."+str(ip)
            if new_ip!="192.168.0.254":
            	t = Thinclients(l,i,ip=new_ip)
            	t.modifyIP()

            ip = int(ip)+1

    return dict(response="OK")
예제 #2
0
def servidores_aula():
    if not auth.user: redirect(URL(c='default',f='index'))

    l=conecta()
    t = Thinclients(l,"","","","")
    computers1 = t.getAllComputersNode("group1")    
    computers2 = t.getAllComputersNode("group2")
    computers3 = t.getAllComputersNode("group3")
    computers4 = t.getAllComputersNode("group4")
    
    all = computers1["computers"]+computers2["computers"]+computers3["computers"]+computers4["computers"]
    for c in all:
        t2 = Thinclients(l,c,"","","")
        response = t2.move(c)
    
    l.close()

    c = SSHConnection("localhost","root","")
    response = c.connectWithoutPass("/var/web2py/applications/controlies/.ssh/id_rsa")
    if response != True:
        return dict()

    c.exec_command("if ! pgrep ssh-agent ; then eval $(ssh-agent -s); fi")
    #c.exec_command("ssh-add /var/web2py/applications/controlies/.ssh/id_rsa")
    c.close()
    return dict()
예제 #3
0
def list():
    l=conecta()
    h = Thinclients (l)
    a=request.vars
    response = h.list(a)    
    l.close()
    return response    
예제 #4
0
def getNodes():
    l=conecta()
    t = Thinclients(l)
    groups = t.getThinclientGroups()

    response=[]
    for g in groups["groups"]:
        if (not "-wifi" in g) and (not "group" in g):
            response.append(g)
    return dict(response=sorted(response))
예제 #5
0
def getLaptopsPupils():
    try:
        classroom = request.vars['classroom'].split("-")
        l = conecta()
        t = Thinclients(l, "", "", "", "")
        computers = t.getAllComputersNode(classroom[0])
        response = computers["computers"]
    except:
        response = []

    return dict(response=response)
예제 #6
0
def getLaptopsPupils():
    try:
        classroom = request.vars['classroom'].split("-")
        l=conecta()
        t = Thinclients(l,"","","","")
        computers = t.getAllComputersNode(classroom[0])
        response = computers["computers"]
    except:
        response=[]    

    return dict(response=response)
예제 #7
0
def databaseDumpExec():
    
    try:
        if request.vars['massive_desasignation']=="ok":
            # Get all students asigned laptops
            sql="SELECT id_laptop FROM laptops_historical lh"
            sql=sql+" WHERE lh.id_state=2 AND lh.id_user_type=2"
            sql=sql+" AND lh.id_historical IN (SELECT MAX(lh2.id_historical) FROM laptops_historical lh2 WHERE lh2.id_laptop=lh.id_laptop)"
            sql=sql+" GROUP BY id_laptop"
            sql=sql+" ORDER BY id_laptop"
            result = cdb.executesql(sql)

            for r in result:
                lh = LaptopsHistory(cdb,"",r[0],1,"","","","","Desasignación masiva ControlIES","")
                lh.add()
    except:
        pass

    l=conecta()
    t = Thinclients(l)
    result = t.getAllComputers()

    for c in result["computers"]:
        
        computer_name = c["cn"].strip()
        serial = c["serial"].replace("serial-number","").strip()
        username = c["username"].replace("user-name","").strip()
        mac = c["mac"].replace("ethernet","").strip()
        macWlan = c["macWlan"].replace("ethernet","").strip()

        if serial!="":        
            id_laptop = Laptops(cdb,"","","","","","","","").existsSerialNumber(serial)
            if id_laptop:
                addHistory(l,username,id_laptop,computer_name)

                lap = Laptops(cdb,id_laptop,"","","","","","","")
                laptop = lap.getLaptopData()
                if laptop["mac_eth0"]!=mac or laptop["mac_wlan0"]!=macWlan:
                    lap.updateMAC(mac,macWlan)

            else: # Si no existe el portatil
                try:
                    if request.vars['add_laptop']=="ok":  
                        lap = Laptops(cdb,"", serial, "", "", "", "", mac, macWlan)
                        lap.add()
                        
                        addHistory(l,username,lap.getIdLaptop(),computer_name)
                except:
                    pass

    l.close()

    return dict(response = "OK")   
예제 #8
0
def move():
	
    if request.vars['purpose']=="":
        return dict(response="purpose")
	
    l=conecta()
    t1 = Thinclients(l,request.vars['purpose'],"")
    t1.delete()

    t2 = Thinclients(l,request.vars['name'],"")
    response = t2.move(request.vars['purpose'])
    
    l.close()
    return dict(response=response)
예제 #9
0
def servidores_aula():
    if not auth.user: redirect(URL(c='default', f='index'))

    l = conecta()
    t = Thinclients(l, "", "", "", "")
    computers1 = t.getAllComputersNode("group1")
    computers2 = t.getAllComputersNode("group2")
    computers3 = t.getAllComputersNode("group3")
    computers4 = t.getAllComputersNode("group4")

    all = computers1["computers"] + computers2["computers"] + computers3[
        "computers"] + computers4["computers"]
    for c in all:
        t2 = Thinclients(l, c, "", "", "")
        response = t2.move(c)

    l.close()

    c = SSHConnection("localhost", "root", "")
    response = c.connectWithoutPass(
        "/var/web2py/applications/controlies/.ssh/id_rsa")
    if response != True:
        return dict()

    c.exec_command("if ! pgrep ssh-agent ; then eval $(ssh-agent -s); fi")
    #c.exec_command("ssh-add /var/web2py/applications/controlies/.ssh/id_rsa")
    c.close()
    return dict()
예제 #10
0
def saveAssignation():
    l=conecta()
    j=0
    for i in request.vars['computers[]']:
        try:
            t = Thinclients(l,i,username=request.vars['students[]'][j])            
            t.modifyUser();
        except:
            t = Thinclients(l,i)
            t.modifyUser();        
        j=j+1
    return dict(response="OK")
예제 #11
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)
예제 #12
0
def removeAssigns():
    l=conecta()
    
    if(isinstance(request.vars['host[]'], str)):
        t = Thinclients(l,request.vars['host[]'])
        t.modifyUser()
    else:
        for h in request.vars['host[]']:
            t = Thinclients(l,h)
            t.modifyUser()
            
    l.close()
    return dict(response="OK")
예제 #13
0
def delete():
    l=conecta()
    
    if(isinstance(request.vars['host[]'], str)):
        t = Thinclients(l,request.vars['host[]'])
        t.process("delete")
    else:
        for h in request.vars['host[]']:
            t = Thinclients(l,h)
            t.process("delete")
            
    l.close()
    return dict(response="OK")
예제 #14
0
def move():
    rows = request.vars["rows"].split(",")
    l=conecta()
    if request.vars["action"]=="free_gap":
        for r in rows:
            cadena = r.split("-")
            type = cadena[1][:1]
            classroom = "a"+request.vars['classroom'].zfill(2)
            newName = Thinclients(l).findFreeGaps(classroom,type,request.vars['startIN'])["freeGaps"][0]

            Thinclients(l,r).move(newName)
            
    elif request.vars["action"]=="overwrite":
        num_computer = int(request.vars['startIN'])
        for r in rows:
            cadena = r.split("-")
            type = cadena[1][:1]
            classroom = "a"+request.vars['classroom'].zfill(2)
            computer = type+str(num_computer).zfill(2)
            newName = classroom+"-"+computer

            if r!=newName:				
				if request.vars['backup']=="no":
					Thinclients(l,newName).delete() # Borrar el destino para abrir hueco
				else:
					backup = Thinclients(l).findFreeGaps("a9999",type,1)["freeGaps"][0]
					Thinclients(l,newName).move(backup)

				Thinclients(l,r).move(newName) # Mover el equipo a su nuevo destino

				num_computer = num_computer+1
            
    l.close()
    return dict(response="OK")
예제 #15
0
def findDuplicates():
    l=conecta()
    t = Thinclients(l)
    result = t.getAllComputers()
    
    serials = []
    macs = []
    users = []
        
    for c in result["computers"]:
        try:
            serial = c["serial"].replace("serial-number","").strip()
            if serial!="":
                serials.append(serial)
        except:
            pass

        try:
            mac = c["mac"].replace("ethernet","").strip()
            if mac!="":
                macs.append(mac)
        except:
            pass

        try:
            user = c["username"].replace("user-name","").strip()
            if user!="":
                users.append(user)
        except:
            pass

    s = set([x for x in serials if serials.count(x) > 1])
    m = set([x for x in macs if macs.count(x) > 1])
    u = set([x for x in users if users.count(x) > 1])
        
    return dict({"users":sorted(u), "macs":sorted(m), "serials":sorted(s)})
예제 #16
0
def modify():
    l=conecta()
    h = Thinclients(l,request.vars['name'],request.vars['mac'],request.vars['macWlan'],request.vars['serial'],request.vars['username'],request.vars['ip'])
    response=h.process(request.vars['action'])
    l.close()
    return dict(response=response)
예제 #17
0
def delete():
    l=conecta()
    h = Thinclients(l,request.vars['host'],"")
    response=h.process("delete")
    l.close()
    return dict(response=response)
예제 #18
0
def getComputersNode():
    l=conecta()
    t = Thinclients(l)
    computers = t.getAllComputersNode(request.vars['node'])
    return dict(response=sorted(computers["computers"]))
예제 #19
0
def getHostData():
    l=conecta()
    h = Thinclients(l,request.vars['name'])
    response = h.getHostData()    
    l.close()
    return dict(response=response)