}
/* Checks rewriting on deleted aliases. */
-check("SELECT a.alias, e.email, e.rewrite AS broken
- FROM aliases AS a
- INNER JOIN emails AS e ON (a.uid = e.uid AND rewrite != '')
- LEFT JOIN aliases AS b ON (b.uid = a.uid AND rewrite LIKE CONCAT(b.alias, '@%') AND b.type != 'homonyme')
- WHERE a.type = 'a_vie' AND b.type IS NULL",
+check("SELECT s1.email, r.redirect, r.rewrite AS broken
+ FROM email_redirect_account AS r
+ INNER JOIN email_source_account AS s1 ON (r.uid = s1.uid AND s1.type = 'forlife')
+ LEFT JOIN email_source_account AS s2 ON (r.uid = s2.uid AND r.rewrite LIKE CONCAT(s2.email, '@%'))
+ WHERE r.rewrite != '' AND s2.uid IS NULL",
"Personnes qui ont des rewrite sur un alias perdu.");
/* Lists unsound emails that remain unprocessed by the administrators. */
-check("SELECT a1.alias, a2.alias, e1.email, e2.flags
- FROM emails AS e1
- INNER JOIN emails AS e2 ON (e1.email = e2.email AND e1.uid != e2.uid AND
- (e1.uid < e2.uid OR NOT FIND_IN_SET('active', e2.flags)))
- INNER JOIN email_watch AS w ON (w.email = e1.email AND w.state = 'pending')
- INNER JOIN aliases AS a1 ON (a1.uid = e1.uid AND a1.type = 'a_vie')
- INNER JOIN aliases AS a2 ON (a2.uid = e2.uid AND a2.type = 'a_vie')
- WHERE FIND_IN_SET('active', e1.flags)
- ORDER BY a1.alias",
+check("SELECT s1.email, s2.email, w.email
+ FROM email_watch AS w
+ INNER JOIN email_redirect_account AS r1 ON (w.email = r1.redirect)
+ LEFT JOIN email_redirect_account AS r2 ON (w.email = r2.redirect AND r1.uid != r2.uid)
+ INNER JOIN email_source_account AS s1 ON (s1.uid = r1.uid AND s1.type = 'forlife')
+ LEFT JOIN email_source_account AS s2 ON (s2.uid = r2.uid AND s2.type = 'forlife')
+ WHERE w.state = 'pending'
+ GROUP BY w.email
+ ORDER BY w.email",
"Donne la liste des emails douteux actuellement non traites par les administrateurs.");
/* Lists dangerous and unsound emails. */
-info("SELECT a1.alias, a2.alias, e1.email, e2.flags, w.state
- FROM emails AS e1
- INNER JOIN emails AS e2 ON (e1.email = e2.email AND e1.uid != e2.uid AND
- (e1.uid < e2.uid OR NOT FIND_IN_SET('active', e2.flags)))
- INNER JOIN email_watch AS w ON (w.email = e1.email AND w.state != 'safe')
- INNER JOIN aliases AS a1 ON (a1.uid = e1.uid AND a1.type = 'a_vie')
- INNER JOIN aliases AS a2 ON (a2.uid = e2.uid AND a2.type = 'a_vie')
- WHERE FIND_IN_SET('active', e1.flags)
- ORDER BY a1.alias",
+info("SELECT s1.email, s2.email, w.email, w.state
+ FROM email_watch AS w
+ INNER JOIN email_redirect_account AS r1 ON (w.email = r1.redirect)
+ LEFT JOIN email_redirect_account AS r2 ON (w.email = r2.redirect AND r1.uid != r2.uid)
+ INNER JOIN email_source_account AS s1 ON (s1.uid = r1.uid AND s1.type = 'forlife')
+ LEFT JOIN email_source_account AS s2 ON (s2.uid = r2.uid AND s2.type = 'forlife')
+ WHERE w.state != 'safe'
+ GROUP BY w.email
+ ORDER BY w.email",
"Donne la liste des emails dangereux ou douteux.");
/* Lists homonyms who have an alias equals to their loginbis for more than a month. */
-check("SELECT a.alias AS username, b.alias AS loginbis, b.expire
- FROM aliases AS a
- INNER JOIN aliases AS b ON (a.uid=b.uid AND b.type != 'homonyme' and b.expire < NOW())
- WHERE a.type = 'a_vie'",
+check("SELECT e.email AS homonym, f.email AS forlife, e.expire
+ FROM email_source_account AS e
+ INNER JOIN homonyms_list AS l ON (e.uid = l.uid)
+ INNER JOIN homonyms_list AS h ON (l.hrmid = h.hrmid)
+ INNER JOIN email_source_account AS f ON (h.uid = f.uid AND f.type = 'forlife')
+ WHERE e.expire < NOW()
+ ORDER BY homonym, forlife",
"Donne la liste des homonymes qui ont un alias égal à leur loginbis depuis plus d'un mois, il est temps de supprimer leur alias.");
// Counts empty profile fields that should never be empty.
/*
* Check duplicated addresses
*/
-$it = Xdb::iterRow("SELECT al1.alias, al2.alias, e1.email
- FROM emails AS e1
- INNER JOIN emails AS e2 ON (e1.email = e2.email AND e1.uid != e2.uid
- AND (e1.uid < e2.uid OR NOT FIND_IN_SET('active', e2.flags)))
- INNER JOIN aliases AS al1 ON (al1.uid = e1.uid AND al1.type = 'a_vie')
- INNER JOIN aliases AS al2 ON (al2.uid = e2.uid AND al2.type = 'a_vie')
- INNER JOIN accounts AS a1 ON (al1.uid = a1.uid)
- INNER JOIN accounts AS a2 ON (al2.uid = a2.uid)
- LEFT JOIN email_watch AS w ON (e1.email = w.email)
- WHERE FIND_IN_SET('active', e1.flags) AND w.email IS NULL
- ORDER BY al1.alias");
+$it = Xdb::iterRow("SELECT s1.email, s2.email, r1.redirect
+ FROM email_redirect_account AS r1
+ INNER JOIN email_redirect_account AS r2 ON (r1.redirect = r2.redirect AND r1.uid != r2.uid)
+ INNER JOIN email_source_account AS s1 ON (s1.uid = r1.uid AND s1.type = 'forlife')
+ INNER JOIN email_source_account AS s2 ON (s2.uid = r2.uid AND s2.type = 'forlife')
+ LEFT JOIN email_watch AS w ON (r1.redirect = w.email)
+ WHERE w.email IS NULL
+ GROUP BY r1.redirect
+ ORDER BY r1.redirect, s1.email");
$insert = array();
$conflits = array();
* Check dead emails
*/
if ($panne_level > 0) {
- $res = Xdb::query("SELECT e.email, a.hruid
- FROM emails AS e
- INNER JOIN accounts AS a ON (a.uid = e.uid)
- WHERE e.panne_level = {?} AND e.flags = 'active'
- ORDER BY a.hruid",
- $panne_level);
+ $res = XDB::fetchAllAssoc("SELECT r.redirect, a.hruid
+ FROM email_redirect_account AS r
+ INNER JOIN accounts AS a ON (a.uid = r.uid)
+ WHERE r.broken_level = {?} AND r.flags != 'broken'
+ ORDER BY a.hruid",
+ $panne_level);
- if ($res->numRows()) {
- $result = $res->fetchAllAssoc();
+ if ($res) {
echo "Nouvelles adresses en panne detectees :\n";
- foreach ($result as $assoc) {
- echo '* ' . $assoc['email'] . ' pour ' . $assoc['hruid'] . "\n";
+ foreach ($res as $assoc) {
+ echo '* ' . $assoc['redirect'] . ' pour ' . $assoc['hruid'] . "\n";
}
echo "\n\n";
- Xdb::execute("UPDATE emails
- SET flags = 'panne'
- WHERE panne_level = 3 AND flags = 'active'");
+ Xdb::execute("UPDATE email_redirect_account
+ SET flags = 'broken'
+ WHERE broken_level = 3");
}
- Xdb::execute('UPDATE emails
- SET panne_level = {?}
- WHERE panne_level > {?}',
+ Xdb::execute('UPDATE email_redirect_account
+ SET broken_level = {?}
+ WHERE broken_level > {?}',
$panne_level, $panne_level);
}
* inactive redirection.
*/
if ($opt_verbose) {
- $res = XDB::query("SELECT a.hruid, ei.email
- FROM accounts AS a
- LEFT JOIN emails AS ea ON (ea.uid = a.uid AND ea.flags = 'active')
- INNER JOIN emails AS ei ON (ei.uid = a.uid AND ei.flags = '')
- INNER JOIN email_options AS eo ON (eo.uid = a.uid)
- WHERE NOT FIND_IN_SET('googleapps', eo.storage) AND ea.email IS NULL
- GROUP BY a.uid");
+ $res = XDB::fetchAllAssoc("SELECT a.hruid, r2.redirect
+ FROM accounts AS a
+ LEFT JOIN email_redirect_account AS r1 ON (a.uid = r1.uid AND r1.flags = 'active')
+ INNER JOIN email_redirect_account AS r2 ON (a.uid = r2.uid AND r2.flags = 'inactive'
+ AND r2.type != 'imap' AND r2.type != 'homonym')
+ WHERE r1.uid IS NULL
+ GROUP BY a.uid");
- if ($res->numRows()) {
- $result = $res->fetchAllAssoc();
+ if ($res) {
echo "Camarades n'ayant plus d'adresses actives, mais ayant une adresse inactive :\n";
- foreach ($result as $user) {
- echo '* ' . $user['email'] . ' pour ' . $user['hruid'] . "\n";
+ foreach ($res as $user) {
+ echo '* ' . $user['redirect'] . ' pour ' . $user['hruid'] . "\n";
}
}
echo "\n";
/* Updates the l_userid parameter for newer user accounts. */
$res = XDB::iterator(
- "SELECT g.g_account_name, a.uid
+ "SELECT g.g_account_name, s.uid
FROM gapps_accounts AS g
- LEFT JOIN aliases as a ON (a.alias = g.g_account_name AND a.type = 'a_vie')
- WHERE (g.l_userid IS NULL OR g.l_userid <= 0) AND a.uid IS NOT NULL");
+ LEFT JOIN email_source_account AS s ON (s.email = g.g_account_name AND s.type = 'forlife')
+ WHERE (g.l_userid IS NULL OR g.l_userid <= 0) AND s.uid IS NOT NULL");
while ($account = $res->next()) {
XDB::execute(
"UPDATE gapps_accounts
$res = XDB::iterator(
"SELECT g.g_account_name
FROM gapps_accounts AS g
- LEFT JOIN aliases as a ON (a.alias = g.g_account_name AND a.type = 'a_vie')
- WHERE (g.l_userid IS NULL OR g.l_userid <= 0) AND a.uid IS NULL");
+ LEFT JOIN email_source_account AS s ON (s.email = g.g_account_name AND s.type = 'forlife')
+ WHERE (g.l_userid IS NULL OR g.l_userid <= 0) AND s.uid IS NULL");
while ($account = $res->next()) {
if (!preg_match("/^admin-/", $account['g_account_name'])) {
printf("Warning: GApps account '%s' has no local uid.\n", $account['g_account_name']);
/* Updates the l_userid parameter for newer nicknames. */
$res = XDB::iterator(
- "SELECT g.g_account_name, a.uid
+ "SELECT g.g_account_name, s.uid
FROM gapps_nicknames AS g
- LEFT JOIN aliases AS a ON (a.alias = g.g_account_name AND a.type = 'a_vie')
- WHERE (g.l_userid IS NULL or g.l_userid <= 0) AND a.uid IS NOT NULL
+ LEFT JOIN email_source_account AS s ON (s.email = g.g_account_name AND s.type = 'forlife')
+ WHERE (g.l_userid IS NULL or g.l_userid <= 0) AND s.uid IS NOT NULL
GROUP BY g_account_name");
while ($nickname = $res->next()) {
XDB::execute(
$res = XDB::iterator(
"SELECT g.g_account_name
FROM gapps_nicknames AS g
- LEFT JOIN aliases as a ON (a.alias = g.g_account_name AND a.type = 'a_vie')
- WHERE (g.l_userid IS NULL OR g.l_userid <= 0) AND a.uid IS NULL");
+ LEFT JOIN email_source_account AS s ON (s.email = g.g_account_name AND s.type = 'forlife')
+ WHERE (g.l_userid IS NULL OR g.l_userid <= 0) AND s.uid IS NULL");
while ($nickname = $res->next()) {
if (!preg_match("/^admin-/", $nickname['g_account_name'])) {
printf("Warning: Nickname '%s' has no local uid.\n", $nickname['g_account_name']);
/* Checks that all nicknames have been synchronized to GoogleApps. Creates the
missing ones. */
$res = XDB::iterator(
- "SELECT g.l_userid AS id, f.alias AS username, a.alias AS nickname
+ "SELECT g.l_userid AS id, s1.email AS username, s2.email AS nickname
FROM gapps_accounts AS g
- INNER JOIN aliases AS f ON (f.uid = g.l_userid AND f.type = 'a_vie')
- INNER JOIN aliases AS a ON (a.uid = g.l_userid AND a.type = 'alias')
- LEFT JOIN gapps_nicknames AS n ON (n.l_userid = g.l_userid AND n.g_nickname = a.alias)
+ INNER JOIN email_source_account AS s1 ON (s1.uid = g.l_userid AND s1.type = 'forlife')
+ INNER JOIN email_source_account AS s2 ON (s2.uid = g.l_userid AND s2.type = 'alias')
+ LEFT JOIN gapps_nicknames AS n ON (n.l_userid = g.l_userid AND n.g_nickname = s2.email)
WHERE g.g_status = 'active' AND n.g_nickname IS NULL AND g.l_userid IS NOT NULL");
while ($nickname = $res->next()) {
// Checks that the requested nickname doesn't look like a regular forlife;
$res = XDB::iterator(
"SELECT g.l_userid AS id, g.g_nickname AS nickname
FROM gapps_nicknames AS g
- LEFT JOIN aliases AS a ON (a.uid = g.l_userid AND a.type = 'alias' AND a.alias = g.g_nickname)
- WHERE g.l_userid IS NOT NULL AND a.alias IS NULL");
+ LEFT JOIN email_source_account AS s ON (s.uid = g.l_userid AND s.type = 'forlife' AND s.email = g.g_nickname)
+ WHERE g.l_userid IS NOT NULL AND s.email IS NULL");
while ($nickname = $res->next()) {
XDB::execute(
"INSERT INTO gapps_queue
*/
require 'connect.db.inc.php';
-$resRobot = XDB::iterator("SELECT uid, alias, expire
- FROM aliases
- WHERE (expire = NOW() + INTERVAL 7 DAY OR expire <= NOW())
- AND type = 'alias'");
+$resRobot = XDB::iterator("SELECT uid, email, expire
+ FROM email_source_account
+ WHERE (expire = NOW() + INTERVAL 7 DAY OR expire <= NOW())");
while ($old = $resRobot->next()) {
$res = XDB::query('SELECT a.hruid
- FROM homonyms AS h
- INNER JOIN accounts AS a ON (h.uid = a.uid)
- WHERE homonyme_id = {?}',
- $old['id']);
+ FROM homonyms_list AS h
+ INNER JOIN accounts AS a ON (h.uid = a.uid)
+ WHERE hrmid = {?}',
+ 'h.' . $old['email'] . '.polytechnique.org');
$hruids = $res->fetchColumn();
- $homonym = User::getSilent($old['id']);
- $req = new HomonymeReq($homonym, $old['alias'], $hruids, $old['expire'] > date("Y-m-d"));
+ $homonym = User::getSilent($old['uid']);
+ $req = new HomonymeReq($homonym, $old['email'], $hruids, $old['expire'] > date("Y-m-d"));
$req->submit();
}
require_once 'plmailer.php';
global $globals;
-$res = XDB::iterator('SELECT p.hrpid, pm.pid, a.full_name, pm.field, pm.oldText, pm.newText, p.sex, pd.yourself, al.alias
+$res = XDB::iterator('SELECT p.hrpid, pm.pid, a.full_name, pm.field, pm.oldText, pm.newText, p.sex, pd.yourself, s.email
FROM profile_modifications AS pm
INNER JOIN accounts AS a ON (pm.uid = a.uid)
INNER JOIN profiles AS p ON (pm.pid = p.pid)
INNER JOIN profile_display AS pd ON (pm.pid = pd.pid)
INNER JOIN account_profiles AS ap ON (pm.pid = ap.pid AND FIND_IN_SET(\'owner\', ap.perms))
- INNER JOIN aliases AS al ON (ap.uid = al.uid AND FIND_IN_SET(\'bestalias\', al.flags))
+ INNER JOIN email_source_account AS s ON (a.uid = s.uid AND FIND_IN_SET(\'bestalias\', s.flags))
WHERE pm.type = \'third_party\' AND pm.field != \'deathdate\'
ORDER BY pm.pid, pm.field, pm.timestamp');
$pid = $values['pid'];
$sex = ($values['sex'] == 'female') ? 1 : 0;
$yourself = $values['yourself'];
- $alias = $values['alias'];
+ $alias = $values['email'];
$hrpid = $values['hrpid'];
$modifications = array();
$modifications[] = array(
$message = '';
-$res = XDB::iterRow("SELECT a.registration_date, a.hruid, e.email
- FROM accounts AS a
- INNER JOIN account_profiles AS ap ON (ap.uid = a.uid AND FIND_IN_SET('owner', ap.perms))
- INNER JOIN profile_display AS pd ON (ap.pid = pd.pid)
- LEFT JOIN emails AS e ON (a.uid = e.uid AND NOT FIND_IN_SET('filter', e.flags))
+$res = XDB::iterRow("SELECT a.registration_date, a.hruid, s.email
+ FROM accounts AS a
+ INNER JOIN account_profiles AS ap ON (ap.uid = a.uid AND FIND_IN_SET('owner', ap.perms))
+ INNER JOIN profile_display AS pd ON (ap.pid = pd.pid)
+ LEFT JOIN email_source_account AS s ON (a.uid = s.uid)
WHERE a.registration_date > {?}
GROUP BY a.hruid
ORDER BY pd.promo",
self.end_headers()
def getUser(self, uid, md5, vhost):
- res = mysql_fetchone ("""SELECT a.full_name, IF(aa.alias IS NULL, a.email, CONCAT(aa.alias, '@%s')),
+ res = mysql_fetchone ("""SELECT a.full_name, IF(s.email IS NULL, a.email, CONCAT(s.email, '@%s')),
IF (a.is_admin, 'admin',
IF(FIND_IN_SET('lists', at.perms) OR FIND_IN_SET('lists', a.user_perms), 'lists', NULL))
FROM accounts AS a
INNER JOIN account_types AS at ON (at.type = a.type)
- LEFT JOIN aliases AS aa ON (a.uid = aa.uid AND aa.type = 'a_vie')
+ LEFT JOIN email_source_account AS s ON (s.uid = a.uid AND s.type = 'forlife')
WHERE a.uid = '%s' AND a.password = '%s' AND a.state = 'active'
LIMIT 1""" \
% (PLATAL_DOMAIN, uid, md5))
if ( fqdn == PLATAL_DOMAIN ) or ( fqdn == PLATAL_DOMAIN2 ):
res = mysql_fetchone("""SELECT CONCAT(f.alias, '@%s'), a.full_name
FROM accounts AS a
- INNER JOIN aliases AS f ON (f.uid = a.uid AND f.type = 'a_vie')
- INNER JOIN aliases AS aa ON (aa.uid = a.uid AND aa.alias = '%s'
- AND a.type != 'homonyme')
+ INNER JOIN email_source_account AS s1 ON (a.uid = s1.uid AND s1.type = 'forlife')
+ INNER JOIN email_source_account AS s2 ON (a.uid = s2.uid AND s2.email = '%s')
WHERE a.state = 'active'
LIMIT 1""" \
% (PLATAL_DOMAIN, mbox))
WHERE redirect = {?}', $email);
} elseif ($admin) {
XDB::execute('UPDATE email_redirect_account
- SET last = CURDATE(), broken_level = IF(broken_level > 1, 3, 2)
+ SET last = CURDATE(), broken_level = broken_level + 1
WHERE redirect = {?} AND DATE_ADD(last, INTERVAL 14 DAY) < CURDATE()',
$email);
} else {