def getChannel(channel, name): while True: if channel.exit_status_ready(): break rl, wl, xl = select.select([channel], [], [], 0.0) if len(rl) > 0: HTML_PARSER = ansi2html() html = HTML_PARSER.parse(channel.recv(1024)) try: if html=="": html="<br/>" WS.websocket_send('http://ldap:8888',name+": "+html,'mykey','mygroup') except: pass
def getInfoComputers(): try: server = xmlrpclib.ServerProxy("http://ldap:6969") data = server.get_data_laptops(request.vars["host"]) except: data = [] pass if not data: WS.websocket_send('http://ldap:8888','<br><span style="font-size:14pt;">'+request.vars["host"]+'</span><br> No hay información ¿El equipo está conectado?<br>','mykey','mygroup') else: WS.websocket_send('http://ldap:8888','<br><span style="font-size:14pt;">'+request.vars["host"]+'</span><br> -Conectado a: '+data[0]["proxy"]+'<br> -IP: '+data[0]["ip"]+'<br>','mykey','mygroup') return dict(response="OK", host=request.vars["host"], message="")
def setRelationshipSSH(): if request.vars['type']=="testFields": if request.vars['passhost'].strip()=="": return dict(response="passhost") else: return dict(response="OK") try: WS.websocket_send('http://*****:*****@'+request.vars['host'], shell=True, stdout=subprocess.PIPE, stderr=subprocess.STDOUT) try: HTML_PARSER = ansi2html() html = HTML_PARSER.parse(p.communicate()[0]) WS.websocket_send('http://*****:*****@192.168.0.1 \"if ! grep -Fxq '"+idRsaPub+"' /tmp/root/.ssh/authorized_keys > /dev/null ; then echo '"+idRsaPub+"' >> /tmp/root/.ssh/authorized_keys; fi\"") p = subprocess.Popen('sshpass -p '+request.vars['passhost']+' ssh -A -t -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no -i '+dir_ssh+'/.ssh/id_rsa root@'+request.vars["host"]+' sshpass -p '+request.vars['passrouter']+' ssh-copy-id -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no -i /root/.ssh/controlIES_rsa.pub [email protected]', shell=True, stdout=subprocess.PIPE, stderr=subprocess.STDOUT) try: HTML_PARSER = ansi2html() html = HTML_PARSER.parse(p.communicate()[0]) WS.websocket_send('http://*****:*****@'+request.vars["host"]+' sshpass -p '+request.vars['passrouter']+' ssh -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no [email protected] "nvram set sshd_authorized_keys=\''+idRsaPub.replace(" ","\\ ")+'\' nvram commit"', shell=True, stdout=subprocess.PIPE, stderr=subprocess.STDOUT) c.removeFile("/root/.ssh/controlIES_rsa.pub") c.removeFile("/root/.ssh/controlIES_rsa") c.close() return dict(response = "OK") """c = SSHConnection(request.vars['host'],"root","")
def getChannel(channel, name): while True: if channel.exit_status_ready(): break rl, wl, xl = select.select([channel], [], [], 0.0) if len(rl) > 0: HTML_PARSER = ansi2html() html = HTML_PARSER.parse(channel.recv(1024)) try: if html == "": html = "<br/>" WS.websocket_send('http://ldap:8888', name + ": " + html, 'mykey', 'mygroup') except: pass
def chat_send_message(): try: alias = session.alias+"."+session.domain except: alias = session.domain try: if request.vars["text"].strip()!="": WS.websocket_send('http://172.23.36.5:8888/chat','<span style="color:'+session.color+'; font-weight:bold;">'+alias+"</span>: "+request.vars["text"]+'<br/>','mykey','chat') except: return dict(response="fail", message="No se pudo conectar con el servidor websocket.<br/>") return dict(response="OK") return dict(response="OK")
def chat_send_message(): try: alias = session.alias + "." + session.domain except: alias = session.domain try: if request.vars["text"].strip() != "": WS.websocket_send( 'http://172.23.36.5:8888/chat', '<span style="color:' + session.color + '; font-weight:bold;">' + alias + "</span>: " + request.vars["text"] + '<br/>', 'mykey', 'chat') except: return dict( response="fail", message="No se pudo conectar con el servidor websocket.<br/>") return dict(response="OK") return dict(response="OK")
def getInfoComputers(): try: server = xmlrpclib.ServerProxy("http://ldap:6969") data = server.get_data_laptops(request.vars["host"]) except: data = [] pass if not data: WS.websocket_send( 'http://ldap:8888', '<br><span style="font-size:14pt;">' + request.vars["host"] + '</span><br> No hay información ¿El equipo está conectado?<br>', 'mykey', 'mygroup') else: WS.websocket_send( 'http://ldap:8888', '<br><span style="font-size:14pt;">' + request.vars["host"] + '</span><br> -Conectado a: ' + data[0]["proxy"] + '<br> -IP: ' + data[0]["ip"] + '<br>', 'mykey', 'mygroup') return dict(response="OK", host=request.vars["host"], message="")
def executeCommandLaptop(): try: server = xmlrpclib.ServerProxy("http://ldap:6969") data = server.get_data_laptops(request.vars["host"]) except: pass try: proxy = data[0]["proxy"] ip = data[0]["ip"] except: WS.websocket_send('http://ldap:8888','<span style="font-size:14pt;">'+request.vars["host"]+'</span><br>No se pudieron obtener los datos de conexión del equipo, ¿está encendido?','mykey','mygroup') return dict() c = SSHConnection(proxy,"root","") response = c.connectWithoutPass("/var/web2py/applications/controlies/.ssh/id_rsa") if response != True: WS.websocket_send('http://ldap:8888','<span style="font-size:14pt;">'+request.vars["host"]+'</span><br>No se pudo conectar con el servidor de aula. ¿Has establecido la relación de confianza?','mykey','mygroup') return dict() channel = c.exec_command('/usr/bin/python /usr/share/controlies-ltspserver/remoteCommand.py '+ip+' "'+request.vars["command"]+'" '+request.vars["host"]) import select import time while True: #time.sleep(0.3) if channel.exit_status_ready(): break rl, wl, xl = select.select([channel], [], [], 0.0) if len(rl) > 0: if channel.recv(1024).rstrip().strip()=="no_ssh": WS.websocket_send('http://ldap:8888','El servidor de aula no pudo conectar con el equipo. ¿Has establecido la relación de confianza?','mykey','mygroup') break if channel.recv(1024).rstrip().strip()=="no_websocket": WS.websocket_send('http://ldap:8888','<span style="font-size:14pt;">'+request.vars["host"]+'</span><br>El equipo no pudo conectar por websocket','mykey','mygroup') break return dict()
def executeCommand(): """try: server = xmlrpclib.ServerProxy("http://"+request.vars["host"]+":6800") s = server.exec_command(request.vars["command"]) return dict(response="OK", host=request.vars["host"], message=s) except: return dict(response="fail", host=request.vars["host"], message="Surgió un error")""" c = SSHConnection(request.vars["host"], "root", "") response = c.connectWithoutPass( "/var/web2py/applications/controlies/.ssh/id_rsa") #response = c.connectWithoutPass("/home/manu/proyectos/controlies/applications/controlies/.ssh/id_rsa") try: WS.websocket_send( 'http://ldap:8888', '<span style="font-size:14pt;">' + request.vars["host"] + '</span> > <span style="font-size:10pt;">' + request.vars["command"] + '</span><br>', 'mykey', 'mygroup') except: return dict( response="fail", host=request.vars["host"], message="No se pudo conectar con el servidor websocket.<br/>") if response != True: return dict( response="fail", host=request.vars["host"], message= "No se pudo conectar. ¿Está encendido el equipo? ¿Has establecido la relación de confianza?<br/>" ) channel = c.exec_command(request.vars["command"]) import select while True: if channel.exit_status_ready(): break rl, wl, xl = select.select([channel], [], [], 0.0) if len(rl) > 0: HTML_PARSER = ansi2html() html = HTML_PARSER.parse(channel.recv(1024)) try: WS.websocket_send('http://ldap:8888', html, 'mykey', 'mygroup') except: pass WS.websocket_send('http://ldap:8888', '<br>', 'mykey', 'mygroup') channel.close() c.close() return dict(response="OK", host=request.vars["host"], message="")
def executeCommand(): """try: server = xmlrpclib.ServerProxy("http://"+request.vars["host"]+":6800") s = server.exec_command(request.vars["command"]) return dict(response="OK", host=request.vars["host"], message=s) except: return dict(response="fail", host=request.vars["host"], message="Surgió un error")""" c = SSHConnection(request.vars["host"],"root","") response = c.connectWithoutPass("/var/web2py/applications/controlies/.ssh/id_rsa") #response = c.connectWithoutPass("/home/manu/proyectos/controlies/applications/controlies/.ssh/id_rsa") try: WS.websocket_send('http://ldap:8888','<span style="font-size:14pt;">'+request.vars["host"]+'</span> > <span style="font-size:10pt;">'+request.vars["command"]+'</span><br>','mykey','mygroup') except: return dict(response="fail", host=request.vars["host"], message="No se pudo conectar con el servidor websocket.<br/>") if response != True: return dict(response="fail", host=request.vars["host"], message="No se pudo conectar. ¿Está encendido el equipo? ¿Has establecido la relación de confianza?<br/>") channel = c.exec_command(request.vars["command"]) import select while True: if channel.exit_status_ready(): break rl, wl, xl = select.select([channel], [], [], 0.0) if len(rl) > 0: HTML_PARSER = ansi2html() html = HTML_PARSER.parse(channel.recv(1024)) try: WS.websocket_send('http://ldap:8888',html,'mykey','mygroup') except: pass WS.websocket_send('http://ldap:8888','<br>','mykey','mygroup') channel.close() c.close() return dict(response="OK", host=request.vars["host"], message="")
def setDataAP(): if request.vars["nameAP"].strip()=="" and request.vars["passroot"].strip()=="" and request.vars["ssidA"].strip()=="" and request.vars["passA"].strip()=="" and request.vars["ssidB"].strip()=="" and request.vars["passB"].strip()=="" and request.vars["nameAPcheck"]=="" and request.vars["ssidAcheck"]=="" and request.vars["ssidBcheck"]=="" and request.vars["passAcheck"]=="" and request.vars["passBcheck"]=="": return dict(response = "noData") if request.vars["passA"].strip()!="": if len(request.vars["passA"])<8 or len(request.vars["passA"])>63: return dict(response = "wrongLength") if request.vars["passB"].strip()!="": if len(request.vars["passB"])<8 or len(request.vars["passB"])>63: return dict(response = "wrongLength") from applications.controlies.modules import paramiko2 proxy_key = "/var/web2py/applications/controlies/.ssh/id_rsa" proxy_user=user="******" proxy_host=request.vars["host"] host="192.168.0.1" proxy_command = 'ssh -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null -i %s %s@%s nc %s %s' % (proxy_key, proxy_user, proxy_host, host, 22) proxy = paramiko2.ProxyCommand(proxy_command) client = paramiko2.SSHClient() client.set_missing_host_key_policy(paramiko2.AutoAddPolicy()) WS.websocket_send('http://ldap:8888','<br><span style="font-size:14pt;">'+request.vars["host"]+'</span><br>','mykey','mygroup') try: client.connect(proxy_host, username=user, key_filename="/var/web2py/applications/controlies/.ssh/id_rsa", timeout=5) except: WS.websocket_send('http://ldap:8888','<span style="font-size:10pt;">No se pudo conectar. ¿Está encendido el equipo? ¿Has establecido la relación de confianza?</span><br>','mykey','mygroup') return dict(response = "OK") try: client.connect(host, username=user, key_filename="/var/web2py/applications/controlies/.ssh/id_rsa", sock=proxy) except: WS.websocket_send('http://ldap:8888','<span style="font-size:10pt;">No se pudo conectar con el punto de acceso. ¿Está encendido? ¿Has establecido la relación de confianza?</span><br>','mykey','mygroup') return dict(response = "OK") if request.vars["nameAP"].strip()!="" or request.vars["nameAPcheck"]=="on": if request.vars["nameAPcheck"]=="on": request.vars["nameAP"] = request.vars["host"]+request.vars["nameAP"] channel = client.get_transport().open_session() channel.exec_command('nvram set router_name="'+request.vars["nameAP"].strip()+'"; nvram set wan_hostname="'+request.vars["nameAP"].strip()+'"; nvram commit;') WS.websocket_send('http://ldap:8888','Nombre del punto de acceso actualizado<br/>','mykey','mygroup') if request.vars["passroot"].strip()!="": channel = client.get_transport().open_session() channel.exec_command('setuserpasswd root '+request.vars["passroot"].strip()) WS.websocket_send('http://ldap:8888','Password de administrador actualizado<br/>','mykey','mygroup') if request.vars["ssidA"].strip()!="" or request.vars["ssidAcheck"]=="on": if request.vars["ssidAcheck"]=="on": request.vars["ssidA"] = request.vars["host"]+request.vars["ssidA"] channel = client.get_transport().open_session() channel.exec_command('nvram set wl0_ssid="'+request.vars["ssidA"].strip()+'"; nvram commit;') WS.websocket_send('http://ldap:8888','SSID 2.4 Ghz actualizado<br/>','mykey','mygroup') if request.vars["passA"].strip()!="" or request.vars["passAcheck"]=="on": if request.vars["passAcheck"]=="on": request.vars["passA"] = request.vars["host"]+request.vars["passA"] channel = client.get_transport().open_session() channel.exec_command('nvram set wl0_wpa_gtk_rekey="3600"; nvram set wl0_crypto="tkip+aes"; nvram set wl0_akm="psk2"; nvram set wl0_security_mode="psk2"; nvram set wl0_closed="0" nvram set wl0_wpa_psk="'+request.vars["passA"].strip()+'"; nvram commit;') WS.websocket_send('http://ldap:8888','Password 2.4 Ghz actualizado<br/>','mykey','mygroup') if request.vars["ssidB"].strip()!="" or request.vars["ssidBcheck"]=="on": if request.vars["ssidBcheck"]=="on": request.vars["ssidB"] = request.vars["host"]+request.vars["ssidB"] channel = client.get_transport().open_session() channel.exec_command('nvram set wl1_ssid="'+request.vars["ssidB"].strip()+'_B"; nvram commit;') WS.websocket_send('http://ldap:8888','SSID 5 Ghz actualizado<br/>','mykey','mygroup') if request.vars["passB"].strip()!="" or request.vars["passBcheck"]=="on": if request.vars["passBcheck"]=="on": request.vars["passB"] = request.vars["host"]+request.vars["passB"] channel = client.get_transport().open_session() channel.exec_command('nvram set wl1_wpa_gtk_rekey="3600"; nvram set wl1_crypto="tkip+aes"; nvram set wl1_akm="psk2"; nvram set wl1_security_mode="psk2"; nvram set wl1_closed="0"; nvram set wl1_wpa_psk="'+request.vars["passB"].strip()+'"; nvram commit;') WS.websocket_send('http://ldap:8888','Password 5 Ghz actualizado<br/>','mykey','mygroup') channel = client.get_transport().open_session() channel.exec_command('reboot') WS.websocket_send('http://ldap:8888','Reiniciando AP...<br/>','mykey','mygroup') return dict(response = "OK") """try:
def commandsAP(): from applications.controlies.modules import paramiko2 proxy_key = "/var/web2py/applications/controlies/.ssh/id_rsa" proxy_user=user="******" proxy_host=request.vars["host"] host="192.168.0.1" proxy_command = 'ssh -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null -i %s %s@%s nc %s %s' % (proxy_key, proxy_user, proxy_host, host, 22) proxy = paramiko2.ProxyCommand(proxy_command) client = paramiko2.SSHClient() client.set_missing_host_key_policy(paramiko2.AutoAddPolicy()) WS.websocket_send('http://ldap:8888','<br><span style="font-size:14pt;">'+request.vars["host"]+'</span><br>','mykey','mygroup') try: client.connect(proxy_host, username=user, key_filename="/var/web2py/applications/controlies/.ssh/id_rsa", timeout=5) except: WS.websocket_send('http://ldap:8888','<span style="font-size:10pt;">No se pudo conectar. ¿Está encendido el equipo? ¿Has establecido la relación de confianza?</span><br>','mykey','mygroup') return dict() try: client.connect(host, username=user, key_filename="/var/web2py/applications/controlies/.ssh/id_rsa", sock=proxy) except: WS.websocket_send('http://ldap:8888','<span style="font-size:10pt;">No se pudo conectar con el punto de acceso. ¿Está encendido? ¿Has establecido la relación de confianza?</span><br>','mykey','mygroup') return dict() if request.vars["command"]=="getData": #stdin, stdout, stderr = client.exec_command('hostname') channel = client.get_transport().open_session() channel.exec_command('nvram get router_name') getChannel(channel, "Router name") WS.websocket_send('http://ldap:8888','------------<br/>Red 2.4Ghz<br/>','mykey','mygroup') channel = client.get_transport().open_session() channel.exec_command('nvram get wl0_ssid') getChannel(channel, "SSID") channel = client.get_transport().open_session() channel.exec_command('nvram get wl0_wpa_psk') getChannel(channel, "Password") channel = client.get_transport().open_session() channel.exec_command('cat /sys/devices/virtual/net/ra0/operstate') getChannel(channel, "Estado") WS.websocket_send('http://ldap:8888','------------<br/>Red 5Ghz<br/>','mykey','mygroup') channel = client.get_transport().open_session() channel.exec_command('nvram get wl1_ssid') getChannel(channel, "SSID") channel = client.get_transport().open_session() channel.exec_command('nvram get wl1_wpa_psk') getChannel(channel, "Password") channel = client.get_transport().open_session() channel.exec_command('cat /sys/devices/virtual/net/ba0/operstate') getChannel(channel, "Estado") #WS.websocket_send('http://ldap:8888','<br>','mykey','mygroup') channel.close() client.close() if request.vars["command"]=="enableWifi": channel = client.get_transport().open_session() channel.exec_command('ifconfig ra0 up; ifconfig ba0 up') WS.websocket_send('http://ldap:8888','Wifi activada<br/>','mykey','mygroup') if request.vars["command"]=="disableWifi": channel = client.get_transport().open_session() #channel.exec_command('setuserpasswd root SAVISA34') channel.exec_command('ifconfig ra0 down; ifconfig ba0 down') WS.websocket_send('http://ldap:8888','Wifi desactivada<br/>','mykey','mygroup') return dict(response = "OK")
def setRelationshipSSH(): if request.vars['type'] == "testFields": if request.vars['passhost'].strip() == "": return dict(response="passhost") else: return dict(response="OK") try: WS.websocket_send( 'http://*****:*****@' + request.vars['host'], shell=True, stdout=subprocess.PIPE, stderr=subprocess.STDOUT) try: HTML_PARSER = ansi2html() html = HTML_PARSER.parse(p.communicate()[0]) WS.websocket_send('http://*****:*****@192.168.0.1 \"if ! grep -Fxq '"+idRsaPub+"' /tmp/root/.ssh/authorized_keys > /dev/null ; then echo '"+idRsaPub+"' >> /tmp/root/.ssh/authorized_keys; fi\"") p = subprocess.Popen( 'sshpass -p ' + request.vars['passhost'] + ' ssh -A -t -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no -i ' + dir_ssh + '/.ssh/id_rsa root@' + request.vars["host"] + ' sshpass -p ' + request.vars['passrouter'] + ' ssh-copy-id -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no -i /root/.ssh/controlIES_rsa.pub [email protected]', shell=True, stdout=subprocess.PIPE, stderr=subprocess.STDOUT) try: HTML_PARSER = ansi2html() html = HTML_PARSER.parse(p.communicate()[0]) WS.websocket_send( 'http://*****:*****@' + request.vars["host"] + ' sshpass -p ' + request.vars['passrouter'] + ' ssh -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no [email protected] "nvram set sshd_authorized_keys=\'' + idRsaPub.replace(" ", "\\ ") + '\' nvram commit"', shell=True, stdout=subprocess.PIPE, stderr=subprocess.STDOUT) c.removeFile("/root/.ssh/controlIES_rsa.pub") c.removeFile("/root/.ssh/controlIES_rsa") c.close() return dict(response="OK") """c = SSHConnection(request.vars['host'],"root","")
def executeCommandLaptop(): try: server = xmlrpclib.ServerProxy("http://ldap:6969") data = server.get_data_laptops(request.vars["host"]) except: pass try: proxy = data[0]["proxy"] ip = data[0]["ip"] except: WS.websocket_send( 'http://ldap:8888', '<span style="font-size:14pt;">' + request.vars["host"] + '</span><br>No se pudieron obtener los datos de conexión del equipo, ¿está encendido?', 'mykey', 'mygroup') return dict() c = SSHConnection(proxy, "root", "") response = c.connectWithoutPass( "/var/web2py/applications/controlies/.ssh/id_rsa") if response != True: WS.websocket_send( 'http://ldap:8888', '<span style="font-size:14pt;">' + request.vars["host"] + '</span><br>No se pudo conectar con el servidor de aula. ¿Has establecido la relación de confianza?', 'mykey', 'mygroup') return dict() channel = c.exec_command( '/usr/bin/python /usr/share/controlies-ltspserver/remoteCommand.py ' + ip + ' "' + request.vars["command"] + '" ' + request.vars["host"]) import select import time while True: #time.sleep(0.3) if channel.exit_status_ready(): break rl, wl, xl = select.select([channel], [], [], 0.0) if len(rl) > 0: if channel.recv(1024).rstrip().strip() == "no_ssh": WS.websocket_send( 'http://ldap:8888', 'El servidor de aula no pudo conectar con el equipo. ¿Has establecido la relación de confianza?', 'mykey', 'mygroup') break if channel.recv(1024).rstrip().strip() == "no_websocket": WS.websocket_send( 'http://ldap:8888', '<span style="font-size:14pt;">' + request.vars["host"] + '</span><br>El equipo no pudo conectar por websocket', 'mykey', 'mygroup') break return dict()
def setDataAP(): if request.vars["nameAP"].strip() == "" and request.vars["passroot"].strip( ) == "" and request.vars["ssidA"].strip( ) == "" and request.vars["passA"].strip( ) == "" and request.vars["ssidB"].strip( ) == "" and request.vars["passB"].strip( ) == "" and request.vars["nameAPcheck"] == "" and request.vars[ "ssidAcheck"] == "" and request.vars[ "ssidBcheck"] == "" and request.vars[ "passAcheck"] == "" and request.vars["passBcheck"] == "": return dict(response="noData") if request.vars["passA"].strip() != "": if len(request.vars["passA"]) < 8 or len(request.vars["passA"]) > 63: return dict(response="wrongLength") if request.vars["passB"].strip() != "": if len(request.vars["passB"]) < 8 or len(request.vars["passB"]) > 63: return dict(response="wrongLength") from applications.controlies.modules import paramiko2 proxy_key = "/var/web2py/applications/controlies/.ssh/id_rsa" proxy_user = user = "******" proxy_host = request.vars["host"] host = "192.168.0.1" proxy_command = 'ssh -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null -i %s %s@%s nc %s %s' % ( proxy_key, proxy_user, proxy_host, host, 22) proxy = paramiko2.ProxyCommand(proxy_command) client = paramiko2.SSHClient() client.set_missing_host_key_policy(paramiko2.AutoAddPolicy()) WS.websocket_send( 'http://ldap:8888', '<br><span style="font-size:14pt;">' + request.vars["host"] + '</span><br>', 'mykey', 'mygroup') try: client.connect( proxy_host, username=user, key_filename="/var/web2py/applications/controlies/.ssh/id_rsa", timeout=5) except: WS.websocket_send( 'http://ldap:8888', '<span style="font-size:10pt;">No se pudo conectar. ¿Está encendido el equipo? ¿Has establecido la relación de confianza?</span><br>', 'mykey', 'mygroup') return dict(response="OK") try: client.connect( host, username=user, key_filename="/var/web2py/applications/controlies/.ssh/id_rsa", sock=proxy) except: WS.websocket_send( 'http://ldap:8888', '<span style="font-size:10pt;">No se pudo conectar con el punto de acceso. ¿Está encendido? ¿Has establecido la relación de confianza?</span><br>', 'mykey', 'mygroup') return dict(response="OK") if request.vars["nameAP"].strip( ) != "" or request.vars["nameAPcheck"] == "on": if request.vars["nameAPcheck"] == "on": request.vars[ "nameAP"] = request.vars["host"] + request.vars["nameAP"] channel = client.get_transport().open_session() channel.exec_command('nvram set router_name="' + request.vars["nameAP"].strip() + '"; nvram set wan_hostname="' + request.vars["nameAP"].strip() + '"; nvram commit;') WS.websocket_send('http://ldap:8888', 'Nombre del punto de acceso actualizado<br/>', 'mykey', 'mygroup') if request.vars["passroot"].strip() != "": channel = client.get_transport().open_session() channel.exec_command('setuserpasswd root ' + request.vars["passroot"].strip()) WS.websocket_send('http://ldap:8888', 'Password de administrador actualizado<br/>', 'mykey', 'mygroup') if request.vars["ssidA"].strip( ) != "" or request.vars["ssidAcheck"] == "on": if request.vars["ssidAcheck"] == "on": request.vars[ "ssidA"] = request.vars["host"] + request.vars["ssidA"] channel = client.get_transport().open_session() channel.exec_command('nvram set wl0_ssid="' + request.vars["ssidA"].strip() + '"; nvram commit;') WS.websocket_send('http://ldap:8888', 'SSID 2.4 Ghz actualizado<br/>', 'mykey', 'mygroup') if request.vars["passA"].strip( ) != "" or request.vars["passAcheck"] == "on": if request.vars["passAcheck"] == "on": request.vars[ "passA"] = request.vars["host"] + request.vars["passA"] channel = client.get_transport().open_session() channel.exec_command( 'nvram set wl0_wpa_gtk_rekey="3600"; nvram set wl0_crypto="tkip+aes"; nvram set wl0_akm="psk2"; nvram set wl0_security_mode="psk2"; nvram set wl0_closed="0" nvram set wl0_wpa_psk="' + request.vars["passA"].strip() + '"; nvram commit;') WS.websocket_send('http://ldap:8888', 'Password 2.4 Ghz actualizado<br/>', 'mykey', 'mygroup') if request.vars["ssidB"].strip( ) != "" or request.vars["ssidBcheck"] == "on": if request.vars["ssidBcheck"] == "on": request.vars[ "ssidB"] = request.vars["host"] + request.vars["ssidB"] channel = client.get_transport().open_session() channel.exec_command('nvram set wl1_ssid="' + request.vars["ssidB"].strip() + '_B"; nvram commit;') WS.websocket_send('http://ldap:8888', 'SSID 5 Ghz actualizado<br/>', 'mykey', 'mygroup') if request.vars["passB"].strip( ) != "" or request.vars["passBcheck"] == "on": if request.vars["passBcheck"] == "on": request.vars[ "passB"] = request.vars["host"] + request.vars["passB"] channel = client.get_transport().open_session() channel.exec_command( 'nvram set wl1_wpa_gtk_rekey="3600"; nvram set wl1_crypto="tkip+aes"; nvram set wl1_akm="psk2"; nvram set wl1_security_mode="psk2"; nvram set wl1_closed="0"; nvram set wl1_wpa_psk="' + request.vars["passB"].strip() + '"; nvram commit;') WS.websocket_send('http://ldap:8888', 'Password 5 Ghz actualizado<br/>', 'mykey', 'mygroup') channel = client.get_transport().open_session() channel.exec_command('reboot') WS.websocket_send('http://ldap:8888', 'Reiniciando AP...<br/>', 'mykey', 'mygroup') return dict(response="OK") """try:
def commandsAP(): from applications.controlies.modules import paramiko2 proxy_key = "/var/web2py/applications/controlies/.ssh/id_rsa" proxy_user = user = "******" proxy_host = request.vars["host"] host = "192.168.0.1" proxy_command = 'ssh -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null -i %s %s@%s nc %s %s' % ( proxy_key, proxy_user, proxy_host, host, 22) proxy = paramiko2.ProxyCommand(proxy_command) client = paramiko2.SSHClient() client.set_missing_host_key_policy(paramiko2.AutoAddPolicy()) WS.websocket_send( 'http://ldap:8888', '<br><span style="font-size:14pt;">' + request.vars["host"] + '</span><br>', 'mykey', 'mygroup') try: client.connect( proxy_host, username=user, key_filename="/var/web2py/applications/controlies/.ssh/id_rsa", timeout=5) except: WS.websocket_send( 'http://ldap:8888', '<span style="font-size:10pt;">No se pudo conectar. ¿Está encendido el equipo? ¿Has establecido la relación de confianza?</span><br>', 'mykey', 'mygroup') return dict() try: client.connect( host, username=user, key_filename="/var/web2py/applications/controlies/.ssh/id_rsa", sock=proxy) except: WS.websocket_send( 'http://ldap:8888', '<span style="font-size:10pt;">No se pudo conectar con el punto de acceso. ¿Está encendido? ¿Has establecido la relación de confianza?</span><br>', 'mykey', 'mygroup') return dict() if request.vars["command"] == "getData": #stdin, stdout, stderr = client.exec_command('hostname') channel = client.get_transport().open_session() channel.exec_command('nvram get router_name') getChannel(channel, "Router name") WS.websocket_send('http://ldap:8888', '------------<br/>Red 2.4Ghz<br/>', 'mykey', 'mygroup') channel = client.get_transport().open_session() channel.exec_command('nvram get wl0_ssid') getChannel(channel, "SSID") channel = client.get_transport().open_session() channel.exec_command('nvram get wl0_wpa_psk') getChannel(channel, "Password") channel = client.get_transport().open_session() channel.exec_command('cat /sys/devices/virtual/net/ra0/operstate') getChannel(channel, "Estado") WS.websocket_send('http://ldap:8888', '------------<br/>Red 5Ghz<br/>', 'mykey', 'mygroup') channel = client.get_transport().open_session() channel.exec_command('nvram get wl1_ssid') getChannel(channel, "SSID") channel = client.get_transport().open_session() channel.exec_command('nvram get wl1_wpa_psk') getChannel(channel, "Password") channel = client.get_transport().open_session() channel.exec_command('cat /sys/devices/virtual/net/ba0/operstate') getChannel(channel, "Estado") #WS.websocket_send('http://ldap:8888','<br>','mykey','mygroup') channel.close() client.close() if request.vars["command"] == "enableWifi": channel = client.get_transport().open_session() channel.exec_command('ifconfig ra0 up; ifconfig ba0 up') WS.websocket_send('http://ldap:8888', 'Wifi activada<br/>', 'mykey', 'mygroup') if request.vars["command"] == "disableWifi": channel = client.get_transport().open_session() #channel.exec_command('setuserpasswd root SAVISA34') channel.exec_command('ifconfig ra0 down; ifconfig ba0 down') WS.websocket_send('http://ldap:8888', 'Wifi desactivada<br/>', 'mykey', 'mygroup') return dict(response="OK")