Revisión 58
Añadido por jredrejo hace alrededor de 14 años
wifi-ltsp/trunk/parsehostapd/parsehostapd.py | ||
---|---|---|
|
||
"""
|
||
|
||
import errno
|
||
import sys
|
||
import os
|
||
import socket
|
wifi-ltsp/trunk/configura_hostapd.py | ||
---|---|---|
import time
|
||
import urllib
|
||
import os
|
||
import errno
|
||
import sys
|
||
import re
|
||
from parsehostapd import parsehostapd
|
||
import socket
|
||
import logging
|
||
... | ... | |
|
||
|
||
def dia_actual():
|
||
"""con esta funcion se obtiene la fecha actual que tiene el servidor de aula"""
|
||
fecha = time.asctime()
|
||
return fecha
|
||
"""con esta funcion se obtiene la fecha actual que tiene el servidor de aula"""
|
||
hoy = time.asctime()
|
||
return hoy
|
||
|
||
def fichero_semana(fecha):
|
||
"""Con esta funcion se obtiene la parte de la fecha actual que corresponde con el dia de la semana"""
|
||
dia= fecha[0:3]
|
||
if dia not in ["Mon","Tue","Wed","Thu","Fri"]:
|
||
def fichero_semana(fecha1):
|
||
"""Con esta funcion se obtiene la parte de la fecha actual que corresponde con el dia de la semana"""
|
||
dia= fecha1[0:3]
|
||
if dia not in ["Mon","Tue","Wed","Thu","Fri"]:
|
||
logging.getLogger().error("El formato de la fecha del sistema no es el esperado")
|
||
return ""
|
||
else:
|
||
fichero=dia_semana[dia]
|
||
return fichero
|
||
else:
|
||
fichero=dia_semana[dia]
|
||
return fichero
|
||
|
||
def hora_actual(fecha):
|
||
"""Con esta funcion se obtiene la hora actual del sistema sin los : de forma que la 08:45 se representaran
|
||
como la 0845"""
|
||
hora= fecha[11:13]+fecha[14:16]
|
||
h=int(hora)
|
||
if (h<int(0000) or h>int(2500)):
|
||
def hora_actual(fecha1):
|
||
"""Con esta funcion se obtiene la hora actual del sistema sin los : de forma que la 08:45 se representaran
|
||
como la 0845"""
|
||
hora= fecha1[11:13]+fecha1[14:16]
|
||
h=int(hora)
|
||
if (h<int(0000) or h>int(2500)):
|
||
logging.getLogger().error("El formato de la hora del sistema no es el esperado")
|
||
return "9999"
|
||
else:
|
||
return hora
|
||
else:
|
||
return hora
|
||
|
||
|
||
def descargar_fichero(fichero):
|
||
"""funcion que se encarga de descargar el fichero del dia de la semana correspondiente al dia actual del
|
||
servidor nfs y colocarlo en la ubicacion correcta en el servidor de terminales con el nombre de horario.txt"""
|
||
file="http://servidor/wifi/"+fichero
|
||
print file
|
||
destino="/wifi/horario.txt"
|
||
destino2="/wifi"
|
||
if not os.path.exists(destino2):
|
||
"""funcion que se encarga de descargar el fichero del dia de la semana correspondiente al dia actual del
|
||
servidor nfs y colocarlo en la ubicacion correcta en el servidor de terminales con el nombre de horario.txt"""
|
||
archivo="http://servidor/wifi/"+fichero
|
||
print archivo
|
||
destino="/wifi/horario.txt"
|
||
destino2="/wifi"
|
||
if not os.path.exists(destino2):
|
||
logging.getLogger().debug("La ruta destino no existe y hay que crearla")
|
||
try:
|
||
os.makedirs(destino2)
|
||
except OSError:
|
||
try:
|
||
os.makedirs(destino2)
|
||
except OSError:
|
||
logging.getLogger().error("Hay algun error a la hora de crear el directorio /wifi en el servidor de aula")
|
||
try:
|
||
urllib.urlretrieve(file, destino)
|
||
urllib.urlretrieve(archivo, destino)
|
||
except:
|
||
logging.getLogger().error("No hay acceso al servidor para encontrar el fichero de horario")
|
||
return ""
|
||
return destino
|
||
return destino
|
||
|
||
|
||
|
||
|
||
def devuelve_usuario():
|
||
"""con esta funcion recogemos el usuario que esta logueado en ese momento en el ordenador, seguira intentandolo
|
||
hasta que se loguee antes"""
|
||
resultado = sys.argv[1]
|
||
return resultado
|
||
"""con esta funcion recogemos el usuario que esta logueado en ese momento en el ordenador, seguira intentandolo
|
||
hasta que se loguee antes"""
|
||
resultado = sys.argv[1]
|
||
return resultado
|
||
|
||
def crea_hostapd(destino,resultado,hora):
|
||
"""con esta funcion generamos el fichero hostapd con las mac correspondientes a los alumnos a los que se
|
||
les va a dar acceso a internet y lo colocamos en la ruta correcta."""
|
||
if not os.path.exists(destino):
|
||
"""con esta funcion generamos el fichero hostapd con las mac correspondientes a los alumnos a los que se
|
||
les va a dar acceso a internet y lo colocamos en la ruta correcta."""
|
||
if not os.path.exists(destino):
|
||
logging.getLogger().error("Hay un error el el fichero horario.txt en el servidor de aula")
|
||
return ""
|
||
else:
|
||
else:
|
||
copy("/etc/hostapd/hostapd.accept","/etc/hostapd/hostapd.accept.bak")
|
||
f=open(destino,"r")
|
||
if not os.path.exists("/etc/hostapd"):
|
||
try:
|
||
os.makedirs("/etc/hostapd")
|
||
except IOError:
|
||
f=open(destino,"r")
|
||
if not os.path.exists("/etc/hostapd"):
|
||
try:
|
||
os.makedirs("/etc/hostapd")
|
||
except IOError:
|
||
logging.getLogger().error("Ha habido algun error a la hora de crear el directorio /etc/hostapd")
|
||
return ""
|
||
if not os.access("/etc/hostapd", os.W_OK):
|
||
return ""
|
||
if not os.access("/etc/hostapd", os.W_OK):
|
||
logging.getLogger().error("No tiene permisos de escritura sobre el directorio /etc/hostapd")
|
||
return ""
|
||
else:
|
||
g=open("/etc/hostapd/hostapd.accept","w")
|
||
else:
|
||
g=open("/etc/hostapd/hostapd.accept","w")
|
||
|
||
esta_en_horario=False
|
||
while True:
|
||
dato=f.readline()
|
||
if not dato:
|
||
break
|
||
else:
|
||
lin=dato.split("|")
|
||
if lin[0]==resultado:
|
||
if hora>lin[2] and hora<lin[3]:
|
||
g.write(lin[1])
|
||
g.write("\n")
|
||
while True:
|
||
dato=f.readline()
|
||
if not dato:
|
||
break
|
||
else:
|
||
lin=dato.split("|")
|
||
if lin[0]==resultado:
|
||
if hora>lin[2] and hora<lin[3]:
|
||
g.write(lin[1])
|
||
g.write("\n")
|
||
esta_en_horario=True
|
||
f.close()
|
||
g.close()
|
||
|
||
f.close()
|
||
g.close()
|
||
|
||
#si un profesor de guardia hace login, se autorizan automáticamente los
|
||
#alumnos que hubiera autorizado el profesor anterior:
|
||
if not esta_en_horario:
|
||
copy("/etc/hostapd/hostapd.accept.bak","/etc/hostapd/hostapd.accept")
|
||
|
||
|
||
return g
|
||
|
||
def reinicia_hostapd():
|
||
resultado=subprocess.Popen(["invoke-rc.d","hostapd","restart"])
|
||
def inicia_hostapd():
|
||
subprocess.Popen(["invoke-rc.d","hostapd","start"])
|
||
|
||
def userIsTeacher(user_name):
|
||
p1 = subprocess.Popen(["id", "-Gn",user_name], stdout=subprocess.PIPE)
|
||
... | ... | |
#Aquí metemos ahora la reconfiguración de hostapd.conf con la parte
|
||
#hecha por Francisco Mora
|
||
hostapdconf="/etc/hostapd/hostapd.conf"
|
||
|
||
|
||
canaloptimo = parsehostapd.selectbestchannel(True)
|
||
|
||
ssid = socket.gethostname()
|
||
... | ... | |
encontradoSsid = False
|
||
for numlinea in range(0, len(lineas)):
|
||
linea = lineas[numlinea]
|
||
#comprobamos si estamos en channel o en ssid
|
||
if linea[:7] == "channel":
|
||
encontradoChannel = True
|
||
lineas[numlinea] = "channel="+str(canaloptimo)+"\n"
|
||
if linea[:4] == "ssid":
|
||
encontradoSsid = True
|
||
lineas[numlinea] = "ssid="+ssid+"\n"
|
||
#comprobamos si estamos en channel o en ssid
|
||
if linea[:7] == "channel":
|
||
encontradoChannel = True
|
||
lineas[numlinea] = "channel="+str(canaloptimo)+"\n"
|
||
if linea[:4] == "ssid":
|
||
encontradoSsid = True
|
||
lineas[numlinea] = "ssid="+ssid+"\n"
|
||
if not encontradoChannel:
|
||
lineas.append("channel="+str(canaloptimo)+"\n")
|
||
if not encontradoSsid:
|
||
lineas.append("ssid="+ssid+"\n")
|
||
|
||
|
||
#Abre el archivo para escritura de datos
|
||
archivoEscritura = open(hostapdconf,"w")
|
||
archivoEscritura.writelines(lineas)
|
||
archivoEscritura.close()
|
||
logging.getLogger().debug('Establecido el canal %s con ESSID' % (canaloptimo,ssid))
|
||
logging.getLogger().debug('Establecido el canal %s con ESSID %s' % (canaloptimo,ssid))
|
||
|
||
|
||
|
||
res=reinicia_hostapd()
|
||
res=inicia_hostapd()
|
||
|
Exportar a: Unified diff
Corregidos bugs por distintas tabulaciones