Proyecto

General

Perfil

« Anterior | Siguiente » 

Revisión 58

Añadido por jredrejo hace alrededor de 14 años

Corregidos bugs por distintas tabulaciones

Ver diferencias:

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