diff --git a/Python/etc/apt/sources.list/gen.py b/Python/etc/apt/sources.list/gen.py new file mode 100644 index 0000000..2509053 --- /dev/null +++ b/Python/etc/apt/sources.list/gen.py @@ -0,0 +1,24 @@ +# -*- mode: python; coding: utf-8 -*- + +include("mode/space") +header() + +if has("debian-mirror"): + mirror = "file:/mirror/" +else: + mirror = "ftp:/mirror.adm.crans.org/" + +def source(args): + %deb mirror + args + %deb-src mirror + args + +source("debian etch main contrib") +source("debian-volatile etch/volatile main contrib") +source("debian-security etch/updates main") + +if has("test"): + @# Mplayer... + source("debian-multimedia etch main") + +@# Paquet construit a la main +source("custom ./") diff --git a/Python/etc/postfix/ldap-aliases.cf/gen.py b/Python/etc/postfix/ldap-aliases.cf/gen.py new file mode 100644 index 0000000..a29cef7 --- /dev/null +++ b/Python/etc/postfix/ldap-aliases.cf/gen.py @@ -0,0 +1,7 @@ +# -*- mode: python; coding: utf-8 -*- + +header("Recherche des alias dans la base ldap.") + +query="(|(mailAlias=%s)(canonicalAlias=%s))" +result="uid" +dump("template/postfix/ldap") diff --git a/Python/etc/postfix/ldap-aliases.cf/info.xml b/Python/etc/postfix/ldap-aliases.cf/info.xml new file mode 100644 index 0000000..0c1af3e --- /dev/null +++ b/Python/etc/postfix/ldap-aliases.cf/info.xml @@ -0,0 +1,3 @@ + + + diff --git a/Python/etc/postfix/ldap-canonical.cf/gen.py b/Python/etc/postfix/ldap-canonical.cf/gen.py new file mode 100644 index 0000000..050840b --- /dev/null +++ b/Python/etc/postfix/ldap-canonical.cf/gen.py @@ -0,0 +1,7 @@ +# -*- mode: python; coding: utf-8 -*- + +header() + +query="(&(mail=%s)(canonicalAlias=*))" +result="canonicalAlias" +dump("template/postfix/ldap") diff --git a/Python/etc/postfix/ldap-canonical.cf/info.xml b/Python/etc/postfix/ldap-canonical.cf/info.xml new file mode 100644 index 0000000..0c1af3e --- /dev/null +++ b/Python/etc/postfix/ldap-canonical.cf/info.xml @@ -0,0 +1,3 @@ + + + diff --git a/Python/etc/postfix/ldap-sqlgrey.cf/gen.py b/Python/etc/postfix/ldap-sqlgrey.cf/gen.py new file mode 100644 index 0000000..536275a --- /dev/null +++ b/Python/etc/postfix/ldap-sqlgrey.cf/gen.py @@ -0,0 +1,7 @@ +# -*- mode: python; coding: utf-8 -*- + +header("Test si le greylisting est active pour un certain compte.") + +query="(|(uid=%u)(mailAlias=%u)(canonicalAlias=%u))" +result="contourneGreylist" +dump("template/postfix/ldap") diff --git a/Python/etc/postfix/ldap-sqlgrey.cf/info.xml b/Python/etc/postfix/ldap-sqlgrey.cf/info.xml new file mode 100644 index 0000000..0c1af3e --- /dev/null +++ b/Python/etc/postfix/ldap-sqlgrey.cf/info.xml @@ -0,0 +1,3 @@ + + + diff --git a/Python/etc/postfix/transport/gen.py b/Python/etc/postfix/transport/gen.py new file mode 100644 index 0000000..dafc5f4 --- /dev/null +++ b/Python/etc/postfix/transport/gen.py @@ -0,0 +1,21 @@ +# -*- coding: utf-8; mode: python -*- + +header("Transport des mails.") + +if has("mailing-list-manager"): + @# Les mailing-listes sont delivrees localement + @lists.crans.org local +else: + @lists.crans.org smtp:[lists.adm.crans.org] + +if has("news-server"): + @# Le corbeau, c'est ici + @corbeau@crans.org local + +if not has("users"): + @# C'est le serveur des adherents qui fait les livraisons des + @# adresses clubs et adherents + @crans.org smtp:[users.adm.crans.org] + @crans.ens-cachan.fr smtp:[users.adm.crans.org] + @install-party.ens-cachan.fr smtp:[users.adm.crans.org] + @clubs.ens-cachan.fr smtp:[users.adm.crans.org] diff --git a/etc/python/common.py b/etc/python/common.py index 1eb271e..2ee80f5 100644 --- a/etc/python/common.py +++ b/etc/python/common.py @@ -28,17 +28,20 @@ def comment(line): '''Écrit un commentaire''' out("# " + line + "\n") -def header(desc, mode="conf-unix"): +emacs_mode = "conf-unix" + +def header(desc=None, mode=None): '''Écrit une en-tête de fichier avec un commentaire''' - comment("-*- mode: %s; coding: utf-8 -*-" % mode) + comment("-*- mode: %s; coding: utf-8 -*-" % (mode or emacs_mode)) @# @# Fichier gere par BCfg2 @# - lines = desc.split('\n') - if lines[-1] == "": - lines.pop() - for line in lines: - comment(line) + if desc: + lines = desc.split('\n') + if lines[-1] == "": + lines.pop() + for line in lines: + comment(line) out("\n") def var(name, value, doc=None): @@ -69,3 +72,16 @@ def onoff(b): return "on" else: return "off" + +def outl(line): + out(line) + out("\n") + +# Le serveur qui gère la base de données +if has("db-server"): + # Pour ceux qui ont la base ou une copie en locale + # on regarde dans celle-ci + ldap_host = "ldap://localhost/" +else: + # Sinon on regarde dans la base principale + ldap_host = "ldap://ldap.adm.crans.org/" diff --git a/etc/python/mode/space.py b/etc/python/mode/space.py new file mode 100644 index 0000000..5504498 --- /dev/null +++ b/etc/python/mode/space.py @@ -0,0 +1,7 @@ +# -*- coding: utf-8; mode: python -*- +# +# Pour les fichiers de configurations du type conf-space comme définit +# dans emacs + +keysep = " " +emacs_mode = "conf-space" diff --git a/etc/python/secrets.py b/etc/python/secrets.py new file mode 100644 index 0000000..996e73e --- /dev/null +++ b/etc/python/secrets.py @@ -0,0 +1,7 @@ +# -*- mode: python; coding: utf-8 -*- +# +# Recuperation des mots de passe + +import sys +sys.path.append("/etc/crans/secrets") +import secrets diff --git a/etc/python/template/postfix/ldap.py b/etc/python/template/postfix/ldap.py new file mode 100644 index 0000000..2c7a81e --- /dev/null +++ b/etc/python/template/postfix/ldap.py @@ -0,0 +1,23 @@ +# -*- mode: python; coding: utf-8 -*- + +# Ce fichier sert de template pour les fichiers /etc/postfix/ldap-*.cf +# Pour l'utuliser, il faut l'inclure en instanciant les variables: +# query: requete faite a la base +# result: le champ a recuperer dans le resultat + +include("secrets") + +@# Connexion LDAP +%server_host = ldap_host +%search_base = "ou=data,dc=crans,dc=org" +%version = 3 +%bind = True +%bind_dn = secrets.ldap_postfix_auth_dn +%bind_pw = secrets.ldap_postfix_password + +@# Requete faite a la base, %s est remplace +@# par l'alias recherche +%query_filter = query + +@# Le champ qui nous interresse en particulier +%result_attribute = result