Commit 92275f89 authored by Daniel Stan's avatar Daniel Stan

bye bye secrets.py

On vire les dernières références à secrets.py via import direct de
/etc/crans/secrets/secrets.py

Ci-dessous une liste des trucs modifié et les raisons
./gestion/iscsi/nolslib.py:execfile("/etc/crans/secrets/nols.py")
./gestion/iscsi/slonlib.py:execfile("/etc/crans/secrets/slon.py")
./gestion/gen_confs/trigger.py:_args = ["ssh", "-4", "-i", "/etc/crans/secrets/trigger-generate" ]

./gestion/gen_confs/dhcpd_new.py:        sys.path.append('/usr/scripts/gestion/secrets')
./gestion/gen_confs/dhcpd_new.py:        from secrets import dhcp_omapi_keyname,dhcp_omapi_keys
./gestion/gen_confs/populate_sshFingerprint.py:sys.path.append('/etc/crans/secrets/')
./sip/sms_queuing:sys.path.insert(0, '/usr/scripts/gestion/secrets')
./sip/sms_queuing:from secrets import asterisk_sms_passwd
./sip/sip_multidial.py:sys.path.append('/etc/crans/secrets/')
./sip/sip_multidial.py:import secrets

./gestion/gen_confs/switchs.py:        sys.path.append('/usr/scripts/gestion/secrets')
./gestion/gen_confs/switchs.py:        from secrets import radius_key
./gestion/set_droits.sh:  if [[ $1 = "$BASE/secrets" ]] ; then
./gestion/set_droits.sh:  elif [[ $1 = "$BASE/secrets/secrets.py" ]] || [[ $1 = "$BASE/secrets/secrets.pyc" ]]; then
./admin/confmail/conf_mail.py:sys.path.append('/usr/scripts/gestion/secrets')
./admin/confmail/conf_mail.py:from secrets import secretConfirmMail
parent 77e0b1da
# -*- coding: utf-8 -*-
""" Confirmation des adresses electroniques.
Par Alexandre Bos
Encore en test
Licence GPL v2 """
""" ATTENTION : CE SCRIPT EST ENCORE EN TEST !"""
import sha, sys, re
from time import time
sys.path.append('/usr/scripts/gestion')
from email_tools import send_email
from ldap_crans import crans_ldap
sys.path.append('/usr/scripts/gestion/secrets')
from secrets import secretConfirmMail
modele = """Content-Type: text/html
<head><title>Page de confirmation de mail</title></head>
<html>
<body>
<h1>Page de confirmation d'email du crans.</h1>
<p>%s</p>
</body>
</html>
"""
re_aid = re.compile ('^\d{1,5}$')
""" Expression rationnelle pour tester les numeros de 0 a 99999 """
re_date = re.compile ('^\d{8,12}$')
""" Expression rationnelle pour tester un entier represantant une date
C'est le resultat d'un time() tronque"""
base_lien = 'http://mailconf.crans.org/confirm.py?'
def gen_code(aid, date_limite):
""" Donne le code de connfirmation en fonction
de l'aid et de la date limite du lien de confirmation"""
chaine = aid + date_limite + secretConfirmMail
hash = sha.new(chaine)
# Ok, on ruine les qualites cryptographiques de sha. Et apres ?
return (hash.hexdigest())[1:15];
def confirmer(aid, date_limite, code):
""" Verifie que les donnes du lien de confirmation sont
correctes et, si tout est bon, marque l'adresse
comme valide"""
code2 = gen_code(aid, date_limite)
if (code <> code2) or (not re_aid.match(aid)) or (not re_date.match(date_limite)):
print modele % ("Lien de confirmation mal formate.")
elif int(date_limite) < time():
print modele % "Lien de confirmation expire."
else:
db = crans_ldap()
db.services_to_restart('mail_valide',str(aid))
print modele % "L'adresse a ete marquee valide. Merci !"
def envoyer_mail(aid, validite=1209600):
""" Envoie un mail de confirmation de l'adresse valable par defaut
deux semaines """
date_limite = str(int(time() + validite))
code = gen_code(str(aid),date_limite)
db = crans_ldap()
adh = db.search('aid='+str(aid))['adherent'][0]
lien = base_lien + 'aid=' + str(aid) + '&date=' + str(date_limite) + '&conf=' + str(code)
corps = """Bonjour,\n Ce mail t'est envoye afin de confirmer ton adresse electronique. Pour ce faire, clique sur le lien ci-dessous.\n\n%s\n\nMerci !\n\n--\n\nL'equipe technique du Crans""" % lien
send_email('disconnect@crans.org', str(adh._data['mail'][0])+'@crans.org', 'Mail de confirmation d\'adresse electronique', corps, actual_sender='bulk+mailConf@crans.org')
# e finita la comedia
#! /usr/bin/env python
# -*- coding: utf-8 -*-
""" Génération de la configuration pour le dhcp
Copyright (C) Frédéric Pauget
Licence : GPLv2
"""
from iptools import AddrInNet, param
from gen_confs import gen_config
from ldap_crans import hostname
class dhcp(gen_config) :
""" Génération du fichier de configuration pour dhcpd (DHCPD_CONF)
Le fichier comporte une partie par réseau servi, chaque réseau
servi doit être une clef du dictionnaire reseaux, la valeur correspondante
est une chaine décrivant les options spécifiques à ce réseau.
Les options communes sont celles de base_dhcp.
Chaque machines possède ensuite une entrée de la forme de host_template
"""
######################################PARTIE DE CONFIGURATION
# Fichier à écire
if hostname == 'ragnarok' :
DHCPD_CONF='/etc/dhcpd.conf'
else :
DHCPD_CONF = '/etc/dhcp3/dhcpd.conf'
# Hotspot ENS plus utilisé...
# elif hostname == 'ragnarok' :
# On rajoute les IP dynamiques
# base_conf = """
# subnet 10.231.144.0 netmask 255.255.248.0 {
# default-lease-time 900;
# max-lease-time 900;
# option subnet-mask 255.255.248.0;
# option broadcast-address 10.231.151.255;
# option routers 10.231.148.1;
# option domain-name-servers 10.231.148.1;
# option domain-name "ens-cachan.fr";
# option option-119 "ens-cachan.fr";
# option netbios-node-type 2;
#
# range dynamic-bootp 10.231.149.1 10.231.149.254;
# }
#"""
elif hostname == 'sable':
# Options communes à toutes les réseaux servis
base_conf="""
# VLan accueil
subnet 10.51.0.0 netmask 255.255.0.0 {
range 10.51.0.10 10.51.255.200;
# On n'a besoin que du dns ici (pour le portail captif)
option domain-name-servers 10.51.0.1;
}
# VLan isolement
subnet 10.52.0.0 netmask 255.255.0.0 {
range 10.52.0.10 10.52.255.200;
option domain-name-servers 10.52.0.1;
option routers 10.52.0.1;
}
"""
else :
base_conf = ''
# Réseaux servis avec leurs options spécifiques
# if hostname == 'zamok':
# reseaux = { '138.231.136.0/21' :
#"""option routers 138.231.136.4;
# option domain-name-servers 138.231.136.3, 138.231.136.9, 138.231.136.98;
# option domain-name "crans.org";
# option option-119 "crans.org wifi.crans.org";""" }
if hostname == 'ragnarok':
reseaux = { '138.231.144.0/21' :
"""option routers 138.231.148.1;
option domain-name-servers 138.231.148.1;
option domain-name "crans.org";
option option-119 "crans.org wifi.crans.org";
option time-servers 138.231.136.3;
option ntp-servers 138.231.136.3;
option smtp-server 138.231.136.3;"""}
elif hostname == 'rouge':
reseaux = { '138.231.136.0/21' :
"""authoritative;
option routers 138.231.136.4;
option domain-name-servers 138.231.136.9, 138.231.136.98, 138.231.136.3;
option domain-name "crans.org";
option option-119 "crans.org wifi.crans.org";
filename "pxelinux.0";
option time-servers 138.231.136.3;
option ntp-servers 138.231.136.3;
option smtp-server 138.231.136.3;""" }
elif hostname == 'titanic':
reseaux = {'10.2.9.0/24' :
"""authoritative;
option routers 10.2.9.1;
option domain-name-servers 10.2.9.1;""" }
elif hostname == 'sable':
# le vlan gratuit
reseaux = {'10.42.0.0/16' :
"""authoritative;
option routers 10.42.0.1;
option domain-name-servers 10.42.0.1;""" }
# Options communes à toutes les réseaux servis
base_dhcp="""
subnet %(network)s netmask %(netmask)s {
default-lease-time 86400;
option subnet-mask %(netmask)s;
option broadcast-address %(broadcast)s;
%(OPTIONS_RESEAU)s
option ip-forwarding off;
deny unknown-clients;
%(HOSTs)s
}
"""
host_template="""
host %(nom)s {
hardware ethernet %(mac)s;
fixed-address %(ip)s;
option host-name "%(nom)s";
}
"""
host_template_ltsp_i386="""
host %(nom)s {
hardware ethernet %(mac)s;
fixed-address %(ip)s;
option host-name "%(nom)s";
next-server 138.231.136.19;
filename "/ltsp/pxelinux.0";
option root-path "/opt/ltsp/i386";
}
"""
host_template_ltsp_powerpc="""
host %(nom)s {
hardware ethernet %(mac)s;
fixed-address %(ip)s;
option host-name "%(nom)s";
next-server 138.231.136.98;
filename "yaboot";
option root-path "/opt/ltsp/powerpc";
}
"""
### Verbosité
# Si =1 ralera (chaine warnings) si machines hors zone trouvée
# Si =0 ralera seulement si réseau vide
verbose = 1
# if hostname == 'zamok':
# restart_cmd = '/etc/init.d/dhcp restart'
if hostname == 'ragnarok':
restart_cmd = 'pkill dhcpd ; sleep 1 ; dhcpd'
elif hostname in ['rouge', 'titanic', 'sable'] :
restart_cmd = '/etc/init.d/dhcp3-server restart'
else:
restart_cmd = 'true'
######################################FIN PARTIE DE CONFIGURATION
def __str__(self) :
return 'dhcp'
def _gen(self) :
warnings =''
### Construction de la partie du fichier contenant les machines
hosts={}
self.anim.iter=len(self.machines)
for machine in self.machines :
self.anim.cycle()
t = 0
for net in self.reseaux.keys() :
if AddrInNet(machine.ip(),net) :
host_template = self.host_template
# variable pour remplir le template
d = { 'nom' : machine.nom().split('.')[0] , 'mac' : machine.mac() , 'ip' : machine.ip() }
try : hosts[net] += host_template % d
except : hosts[net] = host_template % d
t = 1
### Ecriture du fichier
fd = self._open_conf(self.DHCPD_CONF,'#')
fd.write(self.base_conf)
for net, options in self.reseaux.items() :
if not hosts.has_key(net) :
warnings += u'Réseau %s ignoré : aucune machine à servir\n' % net
continue
d = param(net)
d['OPTIONS_RESEAU'] = options
d['HOSTs'] = hosts[net]
fd.write(self.base_dhcp % d)
fd.close()
return warnings
dhcpd_new.py
\ No newline at end of file
#! /usr/bin/env python
# -*- coding: utf-8 -*-
""" Génération de la configuration pour le dhcp
......@@ -7,24 +6,28 @@ Copyright (C) Frédéric Pauget
Licence : GPLv2
"""
import os
from iptools import AddrInNet
from gen_confs import gen_config
import sys
from socket import gethostname
from config import NETs
import struct
if '/usr/scripts' not in sys.path:
sys.path.append('/usr/scripts')
from gestion.iptools import AddrInNet
from gestion.gen_confs import gen_config
from gestion.config import NETs
from gestion import secrets_new as secrets
# Relative imports
from pypureomapi import pack_ip, pack_mac, OMAPI_OP_UPDATE
from pypureomapi import Omapi, OmapiMessage, OmapiError, OmapiErrorNotFound
import struct
hostname = gethostname().split(".")[0]
class dydhcp:
def __init__(self, server):
import sys
sys.path.append('/usr/scripts/gestion/secrets')
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.dhcp_omapi_keyname = secrets.get('dhcp_omapi_keyname')
self.dhcp_omapi_key = secrets.get('dhcp_omapi_keys')[server]
self.server = server.lower()
def add_host(self, ip, mac,name=None):
......
#! /usr/bin/env python
#!/bin/bash /usr/scripts/python.sh
# -*- coding: utf-8 -*-
import subprocess
import sys
......@@ -9,12 +9,8 @@ import hashlib
from socket import gethostname
from netifaces import interfaces, ifaddresses, AF_INET
sys.path.append('/usr/scripts/')
sys.path.append('/usr/scripts/gestion')
sys.path.append('/etc/crans/secrets/')
import lc_ldap.shortcuts
import config
from gestion import config
conn = lc_ldap.shortcuts.lc_ldap_admin(user=u'sshfingerprint')
......
This diff is collapsed.
secrets_new.py
\ No newline at end of file
/etc/crans/secrets/
\ No newline at end of file
#! /bin/sh
BASE=/usr/scripts/gestion
# On vire les truc de sauvegarde qui peuvent avoir des droits bizarres
# et ca fait plus propre
find $BASE -name '*~' -type f -exec rm -f '{}' ';'
chown -R respbats:adm $BASE
set_dr () {
if [[ $1 = "$BASE/secrets" ]] ; then
chmod 750 $1
elif [[ -x $1 ]] ; then
chmod 775 $1
elif [[ $1 = "$BASE/clef-wifi" ]]; then
chmod 600 $1
elif [[ $1 = "$BASE/clef-encap" ]]; then
chmod 600 $1
elif [[ $1 = "$BASE/secrets/secrets.py" ]] || [[ $1 = "$BASE/secrets/secrets.pyc" ]]; then
chmod 640 $1
else
chmod 664 $1
fi
}
for i in $(ls $BASE)
do
set_dr $BASE/$i
done
for i in $(ls $BASE/gen_confs)
do
set_dr $BASE/gen_confs/$i
done
......@@ -2,11 +2,10 @@
# -*- coding: utf-8 -*-
import sys,os,hashlib
# The fuck is happening here ?
sys.path.append('/usr/scripts/gestion')
sys.path.append('/usr/scripts/')
sys.path.append('/etc/crans/secrets/')
import secrets
import lc_ldap.shortcuts
from asterisk_reload_conf import reload_config
......
#!/usr/bin/env python
#!/bin/bash /usr/scripts/python.sh
# -*- coding: utf-8 -*-
from asterisk import Sms
import sys
sys.path.insert(0, '/usr/scripts/gestion/secrets')
from secrets import asterisk_sms_passwd
from gestion import secrets_new as secrets
if __name__ == '__main__' :
sms=Sms("dbname='django' user='crans' host='pgsql.adm.crans.org'", "voip_sms")
sms.sms_daemon('localhost', 5038, 'sms', asterisk_sms_passwd)
sms.sms_daemon('localhost', 5038, 'sms', secrets.get('asterisk_sms_passwd'))
......@@ -8,8 +8,8 @@
# Short-Description: Asterisk sms delivery
### END INIT INFO
DAEMON="/usr/bin/python"
ARGS="/usr/scripts/sip/sms_queuing"
DAEMON="/usr/scripts/sip/sms_queuing"
ARGS=""
PIDFILE="/var/run/sms_queuing.pid"
USER="asterisk"
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment