123 lines
3.1 KiB
Bash
123 lines
3.1 KiB
Bash
# Ici se trouvent réunies les fonctions et la configuration utiles au script
|
|
# de gestion des mailing-lists
|
|
|
|
# Config
|
|
LDAP_HOST="ldap.example.net"
|
|
LDAP_ROOT="dc=example,dc=net"
|
|
CONFIG_IDENTIFIANTS_SMBLDAP="/etc/smbldap-tools/smbldap_bind.conf"
|
|
|
|
. $CONFIG_IDENTIFIANTS_SMBLDAP
|
|
LDAP_PASSWD="$masterPw"
|
|
LDAP_BIND_DN="$masterDN"
|
|
|
|
|
|
# Liste, sur stdout, les mailing-lists dont fait déjà parti l'adresse
|
|
# email fournie en argument.
|
|
# args: email
|
|
#
|
|
# note : effectué en connexion anonyme. A priori, les droits sont suffisants.
|
|
afficher_abonnements_en_cours() {
|
|
ldapsearch -x -h "$LDAP_HOST" -b "ou=mailing-lists,$LDAP_ROOT" -LLL "(rfc822MailMember=$1)" cn | sed -n 's/^cn: \(.*\)/\1/p' | sort
|
|
}
|
|
|
|
# Affiche la liste des mailing-lists
|
|
#
|
|
# note : effectué en connexion anonyme. A priori, les droits sont suffisants.
|
|
afficher_listing_mailinglists() {
|
|
ldapsearch -x -h "$LDAP_HOST" -b "ou=mailing-lists,$LDAP_ROOT" -LLL cn | sed -n 's/^cn: \(.*\)/\1/p' | sort
|
|
}
|
|
|
|
# Affiche la liste des abonnés d'une mailing-list
|
|
# args: mailing-list
|
|
#
|
|
# note : effectué en connexion anonyme. A priori, les droits sont suffisants.
|
|
afficher_abonnes_mailinglist() {
|
|
ldapsearch -x -h "$LDAP_HOST" -b "cn=$1,ou=mailing-lists,$LDAP_ROOT" -LLL rfc822MailMember | sed -n 's/^rfc822MailMember: //p'
|
|
}
|
|
|
|
# Supprime l'email d'une mailing-list
|
|
# args: email, mailing-list
|
|
supprimer_abonnement() {
|
|
# Ecriture du mot de passe
|
|
LDAP_PASSWDFILE=$( mktemp )
|
|
printf "%s" "$LDAP_PASSWD" >$LDAP_PASSWDFILE
|
|
|
|
# Requete
|
|
cat <<EOF | ldapmodify -x -h $LDAP_HOST -D "$LDAP_BIND_DN" -y "$LDAP_PASSWDFILE"
|
|
dn: cn=$2,ou=mailing-lists,$LDAP_ROOT
|
|
changetype: modify
|
|
delete: rfc822MailMember
|
|
rfc822MailMember: $1
|
|
EOF
|
|
RETOUR="$?"
|
|
|
|
# Effacement du mot de passe
|
|
rm -f "$LDAP_PASSWDFILE"
|
|
|
|
return $RETOUR
|
|
}
|
|
|
|
# Ajoute l'email à une mailing-list
|
|
# args: email, mailing-list
|
|
creer_abonnement() {
|
|
# Ecriture du mot de passe
|
|
LDAP_PASSWDFILE=$( mktemp )
|
|
printf "%s" "$LDAP_PASSWD" >$LDAP_PASSWDFILE
|
|
|
|
# Requête
|
|
cat <<EOF | ldapmodify -x -h $LDAP_HOST -D "$LDAP_BIND_DN" -y "$LDAP_PASSWDFILE"
|
|
dn: cn=$2,ou=mailing-lists,$LDAP_ROOT
|
|
changetype: modify
|
|
add: rfc822MailMember
|
|
rfc822MailMember: $1
|
|
EOF
|
|
RETOUR="$?"
|
|
|
|
# Effacement du mot de passe
|
|
rm -f "$LDAP_PASSWDFILE"
|
|
|
|
return $RETOUR
|
|
}
|
|
|
|
# Détruit une mailing-list
|
|
# args: mailing-list
|
|
supprimer_mailinglist() {
|
|
# Ecriture du mot de passe
|
|
LDAP_PASSWDFILE=$( mktemp )
|
|
printf "%s" "$LDAP_PASSWD" >$LDAP_PASSWDFILE
|
|
|
|
# Requete
|
|
cat <<EOF | ldapmodify -x -h $LDAP_HOST -D "$LDAP_BIND_DN" -y "$LDAP_PASSWDFILE"
|
|
dn: cn=$1,ou=mailing-lists,$LDAP_ROOT
|
|
changetype: delete
|
|
EOF
|
|
RETOUR="$?"
|
|
|
|
# Effacement du mot de passe
|
|
rm -f "$LDAP_PASSWDFILE"
|
|
|
|
return $RETOUR
|
|
}
|
|
|
|
# Crée une mailing-list
|
|
# args: mailing-list
|
|
creer_mailinglist() {
|
|
# Ecriture du mot de passe
|
|
LDAP_PASSWDFILE=$( mktemp )
|
|
printf "%s" "$LDAP_PASSWD" >$LDAP_PASSWDFILE
|
|
|
|
# Requete
|
|
cat <<EOF | ldapmodify -x -h $LDAP_HOST -D "$LDAP_BIND_DN" -y "$LDAP_PASSWDFILE"
|
|
dn: cn=$1,ou=mailing-lists,$LDAP_ROOT
|
|
changetype: add
|
|
cn: $1
|
|
objectClass: nisMailAlias
|
|
objectClass: top
|
|
EOF
|
|
RETOUR="$?"
|
|
|
|
# Effacement du mot de passe
|
|
rm -f "$LDAP_PASSWDFILE"
|
|
|
|
return $RETOUR
|
|
}
|