From 94659482cf382c5df5ac5744a51937f01467df58 Mon Sep 17 00:00:00 2001 From: fab Date: Mon, 23 Oct 2023 12:22:39 +0200 Subject: [PATCH] =?UTF-8?q?Mise=20=C3=A0=20jour=20de=20'src/bash/filter.sh?= =?UTF-8?q?'?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/bash/filter.sh | 61 ++++++++++++++++++++++++++-------------------- 1 file changed, 34 insertions(+), 27 deletions(-) diff --git a/src/bash/filter.sh b/src/bash/filter.sh index b41eb4c..0790fa8 100755 --- a/src/bash/filter.sh +++ b/src/bash/filter.sh @@ -71,7 +71,11 @@ DISCLAMER_CMD=altermime MAX_FINAL_SIZE=2097152 # 2Mi ARCHIVE_TITLE="archive_content" ARCHIVE_MIME="text/kaz_email_archive" -SKIP_DEST_DOMAIN="/tmp/docker-mailserver/dest-domain-no-depol.txt" + +FILE_SKIP_DOMAINS="/tmp/docker-mailserver/file_domaines_non_depollues.txt" +#on enlève les commentaires et les lignes vides +SKIP_DOMAINS=`grep -Ev '^#|^[[:space:]]*$' $FILE_SKIP_DOMAINS` + KEEP_FAILED=true DEBUG=true @@ -137,30 +141,25 @@ curlJirafeauSend () { echo "${OUTPUT}" } -get_domaine() { - [[ $1 =~ @ ]] || return - echo ${1/#*@/} -} +# Définir une fonction pour vérifier si le domaine d'un email est dans la liste SKIP_DOMAINS +function check_skip_domains() { + local SKIP_DOMAINS="$1" + local LIST_EMAILS="$2" -#skip_domain () { -# LEFT=":" -# for ARG in $@; do -# -#LOG_FIC "${GREEN}####################in skip domaine#################### ${ARG}" -# -# [ "${ARG}" = "--" ] && LEFT="" && continue -# DOM=$(get_domaine ${ARG}) -# [ -n "${DOM}" ] || continue -# if [ -z "${LEFT}" ]; then -# grep -q "^${DOM}$" "${SKIP_DEST_DOMAIN}" 2>/dev/null && echo "yes" -# fi -# done -#} - -skip_domain () { - DOM=$(get_domaine ${1}) - grep -q ${DOM} ${SKIP_DEST_DOMAIN} 2>/dev/null && echo "yes" -} + for email in $LIST_EMAILS; do + # Extraire le domaine de l'email (partie après le "@") + local domain="${email##*@}" + + # Utiliser grep pour vérifier si le domaine est dans la liste des domaines à sauter + if echo "$SKIP_DOMAINS" | grep -q -w "$domain"; then + echo "yes" + return + fi + done + + # Si aucun domaine n'a été trouvé, retourner "no" + echo "no" +} #################### MAIN ################################################# echo "${NL}${BLUE}$(date +%d-%m-%Y-%H-%M-%S)${NC} : ${GREEN}######################################## filter start (log in ${TMP_LOG})${NC}" >> "${FIC_LOG}" @@ -170,7 +169,14 @@ if ! mkdir -p "${MAILS}"; then LOG_FIC "${RED}Can't mkdir ${MAILS} ${NC}" quitFilter "${EX_UNAVAILABLE}" fi -MAIL_SOURCE_V0=$(echo $@) + +#$@ contient le sender et les destinataires +#format "-f sender -- dest1 [...dest(i)] " +LIST_EMAILS=$(echo $@) +#on nettoie +LIST_EMAILS=$(sed 's/-f//g' <<< $LIST_EMAILS) +LIST_EMAILS=$(sed 's/--//g' <<< $LIST_EMAILS) + MAIL_SOURCE=$(echo $@ | awk 'BEGIN{FS=" "} {print $2}') DATE_TEMPS=$(date "+%Y-%m-%d-%H:%M:%S") REP_PIECE_JOINTE="${MAILS}/${DATE_TEMPS}_${MAIL_SOURCE}_$$" @@ -184,7 +190,6 @@ PERIOD=$(curl "${JIRAFEAU_LOCAL}/a.php?p=${MAIL_SOURCE}" 2>/dev/null ) LOG_FIC "${NL}" \ " MAIL_SOURCE : ${YELLOW}${MAIL_SOURCE}${NC}${NL}" \ - " MAIL_SOURCE_V0 : ${YELLOW}${MAIL_SOURCE_V0}${NC}${NL}" \ " DATE_TEMPS : ${YELLOW}${DATE_TEMPS=}${NC}${NL}" \ " MODE : ${YELLOW}${MODE}${NC}${NL}" \ " TRACK : ${YELLOW}${TRACK}${NC}${NL}" \ @@ -227,7 +232,8 @@ if [ "${MODE}" = "none"]; then quitFilter 0 fi -if [ "$(skip_domain ${MAIL_SOURCE})" = "yes" ]; then + +if [ "$(check_skip_domains "$SKIP_DOMAINS" "$LIST_EMAILS")" = "yes" ]; then LOG_FIC " - ${GREEN}send without change (skip domain)${NC}" ${SENDMAIL} "$@" < "${INSPECT_DIR}/in.$$" quitFilter 0 @@ -355,3 +361,4 @@ fi quitFilter 0 ########################################################################## +