#!/usr/local/bin/python
# -*- encoding: iso-8859-1 -*-

#
# Ce script construit la table de logins SASL pour smtp-out.fr.clara.net
#
# Yann GROSSEL, 2004.01.29
#

import os, sys, MySQLdb as mysql, time

# Programme principal

# On essaie de lire le fichier /usr/local/etc/bad-sasl-users.conf
# pour trouver la liste des logins blacklist\xe9s en sasl.

black_logins = {}

try: f = open('/usr/local/etc/bad-sasl-users.conf')
except: pass
else:
        for l in f.readlines():
                l = l.strip()
                if not len(l) or l[0] == '#': continue
                l = l.lower()
                black_logins[l] = 1
        f.close()

# On effectue les insertions dans la base.

sql  = mysql.connect(host = 'localhost', user = 'root', passwd = 'Rclara')

sql1 = sql.cursor()
sql2 = sql.cursor()

sql2.execute("DROP TABLE IF EXISTS sasl.logins_tmp")

sql2.execute("CREATE TABLE sasl.logins_tmp ( \
        login  TINYTEXT NOT NULL, \
        passwd TINYTEXT NOT NULL, \
        PRIMARY KEY (login (255)))")

# Domaines EASY: On charge tous les mbox actives qui ne sont pas des aliases.

sql1.execute("SELECT mbox, passwd FROM easy.mbox WHERE status = 'Active' AND alias = '' AND passwd != ''")

for a in sql1.fetchall():
        l = a[0].lower()
        if black_logins.has_key(l): continue
        sql2.execute("INSERT INTO sasl.logins_tmp VALUES ('%s', '%s')" % (mysql.escape_string(l), mysql.escape_string(a[1])))

# Claranet.fr : On charge tous les logins.

sql1.execute("SELECT login, passwd FROM clarapw.clarapw WHERE passwd != ''")

for a in sql1.fetchall():
        l = a[0].lower() + '@claranet.fr'
        if black_logins.has_key(l): continue
        sql2.execute("INSERT INTO sasl.logins_tmp VALUES ('%s', '%s')" % (mysql.escape_string(l), mysql.escape_string(a[1])))

# On switche la table en production.

sql1.execute("DROP TABLE IF EXISTS sasl.logins_old")
sql1.execute("RENAME TABLE sasl.logins TO sasl.logins_old, sasl.logins_tmp TO sasl.logins")

# Termin\xe9.

sys.exit(0)

