Creation de nvram.updates

darcs-hash:20050903225946-d1718-93a480b75570a42349ec4ac3a91def3ab77effd8.gz
This commit is contained in:
bernat 2005-09-04 00:59:46 +02:00
parent 5f505e62c1
commit fa4c2b68a8

View file

@ -27,71 +27,6 @@ class conf_wifi(gen_config) :
# Correspondance MAC/IP # Correspondance MAC/IP
MACIP='/etc/wifi/wifi-update-ng/common/etc/macip' MACIP='/etc/wifi/wifi-update-ng/common/etc/macip'
# Config générale de ISAKMPd
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 )' restart_cmd = 'kill -HUP $(cat /var/run/isakmpd.pid 2>/dev/null )'
######################################FIN PARTIE DE CONFIGURATION ######################################FIN PARTIE DE CONFIGURATION
@ -150,6 +85,31 @@ Netmask= 0.0.0.0
shutil.copy(os.path.join(root, name), shutil.copy(os.path.join(root, name),
os.path.join("%s%s" % (WORK, root[len(top):]), os.path.join("%s%s" % (WORK, root[len(top):]),
name)) name))
# On créé/complète le fichier /etc/nvram.updates
fd = file(os.path.join(WORK, "etc", "nvram.updates"), "w+")
data = { 'HOST': borne.nom().split('.')[0],
'IP': borne.ip(),
'CANAL': borne.canal(raw=True),
'PUISSANCE': abs(int(borne.puissance() or 0)),
'ON': ((int(borne.puissance() or 0) > 0) and 1 or 0),
}
fd.write("""
variables=${variables} lan_ipaddr wan_hostname crans_channels txpower
NVRAM_lan_ipaddr=%(IP)s
NVRAM_wan_hostname=%(HOST)s
NVRAM_crans_channels=%(CANAL)s
NVRAM_txpower=%(PUISSANCE)d
NVRAM_wl0_radio=%(ON)d
""" % data)
# Dans le description, on peut avoir d'autres variables
# pour cette borne. Elles sont préfixées par <nvram> dans
# la description.
for info in borne.info():
if info.startswith("<nvram>"):
fd.write("variables=${variables} %s\n" % info[7:].split("=")[0])
fd.write("NVRAM_%s\n" % info[7:])
fd.close()
# Ensuite, on créé le tar # Ensuite, on créé le tar
os.system("tar zcf %s/%s.tmp.tar.gz -C %s ." % (TARGET, borne.nom(), WORK)) os.system("tar zcf %s/%s.tmp.tar.gz -C %s ." % (TARGET, borne.nom(), WORK))
# Et on le renomme (on espère que c'est atomique) # Et on le renomme (on espère que c'est atomique)
@ -169,6 +129,77 @@ Netmask= 0.0.0.0
def gen_isakmpd(self, clients): def gen_isakmpd(self, clients):
"""Génération du fichier pour isakmpd""" """Génération du fichier pour isakmpd"""
# Config générale de ISAKMPd
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
"""
phase1 = phase1_debut
phase2 = phase2_debut
blocs=''
anim('\tFichier isakmpd.conf') anim('\tFichier isakmpd.conf')
for machine in clients : for machine in clients :
self.anim.cycle() self.anim.cycle()
@ -178,25 +209,25 @@ Netmask= 0.0.0.0
'KEY' : machine.ipsec()} 'KEY' : machine.ipsec()}
# Phase 1 # Phase 1
phase1 += self.phase1_template % data phase1 += phase1_template % data
# Phase 2 # Phase 2
if blocs != '' : if blocs != '' :
# Ce n'est pas la première machine, il faut insérer un séparateur # Ce n'est pas la première machine, il faut insérer un séparateur
phase2 += self.phase2_sep phase2 += phase2_sep
phase2 += self.phase2_template % data phase2 += phase2_template % data
# Blocs machine # Blocs machine
blocs += self.host_template % data blocs += host_template % data
# Ecriture du fichier isakmpd.conf # Ecriture du fichier isakmpd.conf
fd = self._open_conf(self.ISAKMPD_CONF,'#') fd = self._open_conf(self.ISAKMPD_CONF,'#')
fd.write(self.general) fd.write(general)
fd.write(phase1) fd.write(phase1)
fd.write('\n') fd.write('\n')
fd.write(phase2) fd.write(phase2)
fd.write('\n') fd.write('\n')
fd.write(blocs) fd.write(blocs)
fd.write(self.net_crans) fd.write(net_crans)
fd.close() fd.close()
print OK print OK