diff --git a/gestion/config/config.py b/gestion/config/config.py index a4bbb678..dee6036f 100644 --- a/gestion/config/config.py +++ b/gestion/config/config.py @@ -304,3 +304,5 @@ accueil_route = { '138.231.136.130':{'tcp':['80','443'],'hosts':['intranet2.crans.org']}, '138.231.136.18':{'tcp':['80','443'],'hosts':['cas.crans.org', 'login.crans.org', 'auth.crans.org']}, } + +dhcp_servers = ['dhcp.adm.crans.org', 'isc.adm.crans.org'] diff --git a/gestion/gen_confs/dhcpd_new.py b/gestion/gen_confs/dhcpd_new.py index f5ac1574..8bb79ec6 100644 --- a/gestion/gen_confs/dhcpd_new.py +++ b/gestion/gen_confs/dhcpd_new.py @@ -17,12 +17,14 @@ from pypureomapi import Omapi, OmapiMessage, OmapiError, OmapiErrorNotFound import struct class dydhcp: - def __init__(self): + def __init__(self, server): import sys sys.path.append('/usr/scripts/gestion/secrets') - from secrets import dhcp_omapi_keyname,dhcp_omapi_key - self.dhcp_omapi_keyname=dhcp_omapi_keyname - self.dhcp_omapi_key=dhcp_omapi_key + from secrets import dhcp_omapi_keyname,dhcp_omapi_keys + self.dhcp_omapi_keyname = dhcp_omapi_keyname + self.dhcp_omapi_key = dhcp_omapi_keys[server] + self.server = server.lower() + def add_host(self, ip, mac,name=None): """ @type ip: str @@ -40,7 +42,7 @@ class dydhcp: msg.obj.append((b"ip-address", pack_ip(ip))) if name: msg.obj.append((b"name", bytes(name))) - conn=Omapi('dhcp.adm.crans.org',9991,self.dhcp_omapi_keyname, self.dhcp_omapi_key) + conn=Omapi(self.server, 9991,self.dhcp_omapi_keyname, self.dhcp_omapi_key) response = conn.query_server(msg) conn.close() @@ -56,7 +58,7 @@ class dydhcp: msg.obj.append((b"hardware-address", pack_mac(mac))) msg.obj.append((b"hardware-type", struct.pack("!I", 1))) msg.obj.append((b"ip-address", pack_ip(ip))) - conn=Omapi('dhcp.adm.crans.org',9991,self.dhcp_omapi_keyname, self.dhcp_omapi_key) + conn=Omapi(self.server,9991,self.dhcp_omapi_keyname, self.dhcp_omapi_key) response = conn.query_server(msg) if response.opcode == OMAPI_OP_UPDATE: response = conn.query_server(OmapiMessage.delete(response.handle)) @@ -72,23 +74,7 @@ class dhcp(gen_config) : """ ######################################PARTIE DE CONFIGURATION # Fichier à écire - if hostname == 'sable': - restart_cmd = '/etc/init.d/isc-dhcp-server restart' - reseaux = { '138.231.136.0/21' : '/etc/dhcp3/generated/adherents.liste', - '10.42.0.0/16' : '/etc/dhcp3/generated/gratuit.liste' } - elif hostname == 'titanic': - restart_cmd = '/etc/init.d/isc-dhcp-server restart' - reseaux = { '10.2.9.0/24' : '/etc/dhcp3/generated/appartements.liste' } - elif hostname == 'gordon': - restart_cmd = '/etc/init.d/isc-dhcp-server restart' - reseaux = { '138.231.144.0/21' : '/etc/dhcp3/generated/wifi.liste' } - elif hostname == 'dhcp': - restart_cmd = '/etc/init.d/isc-dhcp-server restart' - reseaux = { '138.231.136.0/21' : '/etc/dhcp3/generated/adherents.liste', - '10.42.0.0/16' : '/etc/dhcp3/generated/gratuit.liste', - '10.2.9.0/24' : '/etc/dhcp3/generated/appartements.liste', - '138.231.144.0/21' : '/etc/dhcp3/generated/wifi.liste' } - elif hostname == 'isc': + if hostname in ['dhcp', 'isc']: restart_cmd = '/etc/init.d/isc-dhcp-server restart' reseaux = { '138.231.136.0/21' : '/etc/dhcp3/generated/adherents.liste', '10.42.0.0/16' : '/etc/dhcp3/generated/gratuit.liste', @@ -163,7 +149,7 @@ class dhcp(gen_config) : host_template = self.host_template # variable pour remplir le template #d = { 'nom' : machine.nom().split('.')[0] , 'mac' : machine.mac() , 'ip' : machine.ip() } - d = { 'nom' : machine.nom() , 'host' : machine.nom().split('.')[0],'mac' : machine.mac() , 'ip' : machine.ip() } + d = { 'nom' : machine.nom() , 'host' : machine.nom().split('.', 1)[0],'mac' : machine.mac() , 'ip' : machine.ip() } try : hosts[net] += host_template % d except : hosts[net] = host_template % d diff --git a/gestion/gen_confs/generate.py b/gestion/gen_confs/generate.py index 6a52afaf..ea03d243 100755 --- a/gestion/gen_confs/generate.py +++ b/gestion/gen_confs/generate.py @@ -53,8 +53,7 @@ class base_reconfigure: 'blacklist_bloq': __blacklist_servers, 'del_user': [ 'zbee-del_user', 'owl-del_user', 'zamok-del_user' ], 'port': ['komaz-port'], - 'dhcp': ['dhcp-dhcp'], - 'isc': ['isc-dhcp'], + 'dhcp': ['dhcp-dhcp', 'isc-dhcp'], } #Y R U Aliasing ! __service_develop.update({ diff --git a/gestion/ldap_crans.py b/gestion/ldap_crans.py index e398141e..9d7eebc8 100755 --- a/gestion/ldap_crans.py +++ b/gestion/ldap_crans.py @@ -1908,7 +1908,7 @@ class BaseProprietaire(BaseClasseCrans): self.services_to_restart('macip', [m.ip()] ) self.services_to_restart('classify', [m.ip()] ) self.services_to_restart('dns') - self.services_to_restart('dhcp-dhcp') + self.services_to_restart('dhcp') # Vérification si changement de bât, ce qui obligerai un changement d'IP if 'adherentPayant' in self.modifs or 'chbre' in self.modifs and self.chbre() != '????': @@ -3193,9 +3193,10 @@ Contactez nounou si la MAC est bien celle d'une carte.""", 3) # Si la configuration ip à changer on met dynamiquement à jour le dhcp if reconf_ip: from gen_confs.dhcpd_new import dydhcp - dhcp=dydhcp() - dhcp.del_host(self._init_data.get('ipHostNumber',[self.ip()])[0],self._init_data.get('macAddress',[self.mac()])[0]) - dhcp.add_host(self._data.get('ipHostNumber',[self.ip()])[0],self._data.get('macAddress',[self.mac()])[0],self.nom()) + for server in config.dhcp_servers: + dhcp=dydhcp(server) + dhcp.del_host(self._init_data.get('ipHostNumber',[self.ip()])[0],self._init_data.get('macAddress',[self.mac()])[0]) + dhcp.add_host(self._data.get('ipHostNumber',[self.ip()])[0],self._data.get('macAddress',[self.mac()])[0],self.nom()) # Enregistrement self._save() @@ -3212,7 +3213,7 @@ Contactez nounou si la MAC est bien celle d'une carte.""", 3) if reconf_ip: self.services_to_restart('macip', reconf_ip) self.services_to_restart('classify', reconf_ip) - self.services_to_restart('dhcp-dhcp') + self.services_to_restart('dhcp') if 'portTCPin' in self.modifs or 'portTCPout' in self.modifs or \ 'portUDPin' in self.modifs or 'portUDPout' in self.modifs: self.services_to_restart('komaz-ports', [self.ip()]) @@ -3274,11 +3275,12 @@ Contactez nounou si la MAC est bien celle d'une carte.""", 3) # On supprime la machine du dhcp from gen_confs.dhcpd_new import dydhcp - dhcp=dydhcp() - dhcp.del_host(self.ip(),self.mac()) + for server in config.dhcp_servers: + dhcp=dydhcp(server) + dhcp.del_host(self.ip(),self.mac()) # Services à redémarrer - self.services_to_restart('dhcp-dhcp') + self.services_to_restart('dhcp') if self.exempt(): self.services_to_restart('surveillance_exemptions')