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")
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()
def list(): l=conecta() h = Thinclients (l) a=request.vars response = h.list(a) l.close() return response
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))
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)
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)
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")
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)
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()
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")
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 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")
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")
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")
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)})
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)
def delete(): l=conecta() h = Thinclients(l,request.vars['host'],"") response=h.process("delete") l.close() return dict(response=response)
def getComputersNode(): l=conecta() t = Thinclients(l) computers = t.getAllComputersNode(request.vars['node']) return dict(response=sorted(computers["computers"]))
def getHostData(): l=conecta() h = Thinclients(l,request.vars['name']) response = h.getHostData() l.close() return dict(response=response)