diff --git a/gestion/gen_confs/wifi.py b/gestion/gen_confs/wifi.py deleted file mode 100755 index 8aaf3d99..00000000 --- a/gestion/gen_confs/wifi.py +++ /dev/null @@ -1,252 +0,0 @@ -#! /usr/bin/env python -# -*- coding: iso-8859-15 -*- - -import time, commands -from gen_confs import gen_config, ERREUR, OK, anim - -import sys, os -sys.path.append('/usr/scripts/gestion') -from ldap_crans import crans_ldap, invite - -class conf_wifi(gen_config) : - """ Génération de la configuration de isakmpd dans ISAKMPD_CONF - Le fichier est constitué en 5 parties : - 1) Configuration générale insérée telle quelle - 2) Phase 1 : une ligne par host suivant template - 3) Phase 2 : une entrée par machine - 4) Bloc par machine suivant template - 5) Ajout de net_crans - - Génération également de la fonction get_clients en shell - dans /etc/wifi/wifi-update/shared/config/get_clients qui permet - d'avoir l' ensemble des clients wifi. - """ - ######################################PARTIE DE CONFIGURATION - - # Fichiers à écrire - # Répertoire d'écriture des fichiers de zone - ISAKMPD_CONF='/etc/isakmpd/isakmpd.conf' - GET_CLIENTS='/etc/wifi/wifi-update/shared/config/get_clients' - - # Config générale - general=""" -[General] -Listen-on= 138.231.148.1 -Retransmits= 5 -Exchange-max-time= 40 -Logverbose= 1 -Loglevel= A=90 -Check-interval= 60 -Default-phase-1-lifetime= 1200,90:86400 -Default-phase-2-lifetime= 1800,120:86400 - -[Default-main-mode] -DOI= IPSEC -EXCHANGE_TYPE= ID_PROT -Transforms= 3DES-SHA,3DES-MD5 - -[Default-quick-mode] -DOI= IPSEC -EXCHANGE_TYPE= QUICK_MODE -Suites= QM-ESP-AES-SHA-SUITE, QM-ESP-AES-MD5-SUITE, \\ - QM-ESP-BLF-SHA-SUITE, QM-ESP-BLF-MD5-SUITE, \\ - QM-ESP-3DES-SHA-SUITE, QM-ESP-3DES-MD5-SUITE, \\ - QM-ESP-AES-SHA-PFS-SUITE, QM-ESP-AES-MD5-PFS-SUITE, \\ - QM-ESP-BLF-SHA-PFS-SUITE, QM-ESP-BLF-MD5-PFS-SUITE, \\ - QM-ESP-3DES-SHA-PFS-SUITE, QM-ESP-3DES-MD5-PFS-SUITE - -""" - - # Phase 1 - phase1_debut="[Phase 1]\n" - phase1_template="%(IP)s= ISAKMP-peer-%(HOST)s\n" - - # Phase 2 - phase2_debut="[Phase 2]\nPassive-connections= " - phase2_template="IPsec-%(HOST)s" - phase2_sep=', \\\n ' - - #Lignes necessaires pour chaque machine - host_template=""" -[ISAKMP-peer-%(HOST)s] -Phase= 1 -Transport= udp -Address= %(IP)s -Configuration= Default-main-mode -Authentication=%(KEY)s - -[IPsec-%(HOST)s] -Phase= 2 -ISAKMP-peer= ISAKMP-peer-%(HOST)s -Configuration= Default-quick-mode -Local-ID= Net-crans -Remote-ID= Net-%(HOST)s - -[Net-%(HOST)s] -ID-type= IPV4_ADDR -Address= %(IP)s -""" - # Dernière partie du fichier - net_crans=""" -[Net-crans] -ID-type= IPV4_ADDR_SUBNET -Network= 0.0.0.0 -Netmask= 0.0.0.0 -""" - restart_cmd = 'kill -HUP $(cat /var/run/isakmpd.pid 2>/dev/null )' - - ######################################FIN PARTIE DE CONFIGURATION - - def __init__(self) : - self.db = crans_ldap() - - def lockname(self): - # On change le nom du lock pour avoir un nom unique pour tout ce qui - # concerne le wifi - # return ".".join(str(self.__class__).split(".")[0:-1]) - return "gen_confs.wifi" - - def __str__(self) : - return 'wifi' - - def _gen(self): - # Pour isakmpd.conf - phase1 = self.phase1_debut - phase2 = self.phase2_debut - blocs='' - # Pour get_clients - clients = '' - - for machine in self.db.search('host=*.wifi.crans.org&paiement=ok')['machine'] + invite().machines() : - self.anim.cycle() - if 'bloq' in machine.blacklist_actif() : continue - data = { 'HOST' : machine.nom().split('.')[0] , - 'IP' : machine.ip() , - 'KEY' : machine.ipsec() , - 'MAC' : machine.mac().lower() } - - # Pour isakmpd.conf - # Phase 1 - phase1 += self.phase1_template % data - - # Phase 2 - if blocs != '' : - # Ce n'est pas la première machine, il faut insérer un séparateur - phase2 += self.phase2_sep - phase2 += self.phase2_template % data - - # Blocs machine - blocs += self.host_template % data - - # Pour get_clients - clients += "echo %(HOST)s %(IP)s %(MAC)s\n" % data - - - # Dans les clients, on rajoute les bornes - bornes = self.db.search('host=*.wifi.crans.org&ipsec!=*')['machine'] - for machine in bornes: - self.anim.cycle() - data = { 'HOST' : machine.nom().split('.')[0] , - 'IP' : machine.ip() , - 'MAC' : machine.mac().lower() } - clients += "echo %(HOST)s %(IP)s %(MAC)s\n" % data - - # Ecriture du fichier isakmpd.conf - fd = self._open_conf(self.ISAKMPD_CONF,'#') - fd.write(self.general) - fd.write(phase1) - fd.write('\n') - fd.write(phase2) - fd.write('\n') - fd.write(blocs) - fd.write(self.net_crans) - fd.close() - - # Ecriture du fichier get_clients - fd = self._open_conf(self.GET_CLIENTS, '#') - fd.write("get_clients () {\n\n") - fd.write(clients) - fd.write("\n}\n") - fd.close() - -class bornes_wifi(gen_config) : - """ Reconfiguration bornes wifi - Si noms de borne fourni à l'initialisation restart uniquement celle-ci - """ - - # Fichier - WIFI_UPDATE='/etc/wifi/wifi-update' - GET_CONFIG='%s/shared/config/get_config' % WIFI_UPDATE - - def __str__(self) : - return 'bornes wifi' - - def lockname(self): - # On change le nom du lock pour avoir un nom unique pour tout ce qui - # concerne le wifi - # return ".".join(str(self.__class__).split(".")[0:-1]) - return "gen_confs.wifi" - - def __init__(self,bornes=[]) : - self.db = crans_ldap() - self.bornes = bornes - - def _gen(self) : - bornes = self.db.search('host=*.wifi.crans.org&puissance=*')['machine'] - if not self.bornes: - # Si on n'a pas spécifié de bornes, on va les redémarrer toute ! - self.bornes = [b.nom() for b in bornes] - # Liste des bornes - BORNES = u'## Liste des bornes -- source : base LDAP\n' - BORNES += u'## MAC - IP - Canal - Puissance - Nom - Radio on/off\n' - for b in bornes : - self.anim.cycle() - BORNES += u'%s %s %s %d %s' % ( b.mac(), b.ip(), b.canal(raw=True), - abs(int(b.puissance())), - b.nom().split(".")[0] ) - # Doit-on activer la partie radio ? - if int(b.puissance()) < 0: - BORNES += u' off\n' - else: - BORNES += u' on\n' - - BORNES += u'## Fin liste des bornes' - - # Nouveau systeme - fd = self._open_conf(self.GET_CONFIG, '#') - fd.write(""" -get_config () { - - grep -i $(nvram get et0macaddr) <