diff --git a/src/bash/filter.sh b/src/bash/filter.sh index d9dcf6b..0113041 100644 --- a/src/bash/filter.sh +++ b/src/bash/filter.sh @@ -80,11 +80,19 @@ LOG_FIC() { echo "${BLUE}$(date +%d-%m-%Y-%H-%M-%S)${NC} : $*" >> "${FIC_LOG}" } +quitFilter () { + LOG_FIC "${GREEN}######################################## filter stop${NC}" + exit $1 +} + #################### MAIN ################################################# echo "${NL}" >> "${FIC_LOG}" LOG_FIC "${GREEN}######################################## filter start${NC}" -mkdir -p "${MAILS}" || { LOG_FIC "${RED}impossible de creer ce dossier${NC}"; exit "${EX_UNAVAILABLE}"; } +if ! mkdir -p "${MAILS}"; then + LOG_FIC "${RED}Can't mkdir ${MAILS} ${NC}" + quitFilter "${EX_UNAVAILABLE}" +fi 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}_$$" @@ -101,7 +109,10 @@ LOG_FIC "\n" \ " PERIOD : ${YELLOW}${PERIOD}${NC}\n" \ " JIRAFEAU_TIME: ${YELLOW}${JIRAFEAU_TIME}${NC}" -cd "${INSPECT_DIR}" || { echo "${INSPECT_DIR} does not exist"; exit "${EX_TEMPFAIL}"; } +if ! cd "${INSPECT_DIR}"; then + echo "${INSPECT_DIR} does not exist" + quitFilter "${EX_TEMPFAIL}" +fi # lien renvoyé par le téléverssement ONE_LINK="${REP_PIECE_JOINTE}/one.txt" @@ -109,11 +120,18 @@ ONE_LINK="${REP_PIECE_JOINTE}/one.txt" OLD_LINKS="${REP_PIECE_JOINTE}/url-to-refresh.txt" # contenu de l'archive ARCHIVE_CONTENT="${REP_PIECE_JOINTE}/archive-content.txt" +# create if error +JIRAFEAU_ERROR="${REP_PIECE_JOINTE}/jirafeau-error.txt" # Clean up when done or when aborting. trap "rm -rf in.$$ in.$$.altered ${REP_PIECE_JOINTE}" 0 1 2 3 15 -cat > "in.$$" || { LOG_FIC "${RED}Cannot save mail to file${NC}"; exit "${EX_TEMPFAIL}"; } +if ! cat > "in.$$"; then + LOG_FIC "${RED}Cannot save mail to file${NC}" + quitFilter "${EX_TEMPFAIL}" +fi +LOG_FIC "\n" \ + " size: ${YELLOW}$(wc -c < "${INSPECT_DIR}/in.$$")${NC}" # XXX trace # cp "${INSPECT_DIR}/in.$$" "${INSPECT_DIR}/in.$$.bak" @@ -151,6 +169,7 @@ LOG_FIC "${CYAN}${SHRINK_CMD} -s ${MAX_KEEP_IN_MAIL} -d ${REP_PIECE_JOINTE} ${IN ATTACH_NAME=$(grep "^Name: " "${ATTACH_TMP_NAME}/meta" | cut -c 7- ) ATTACH_CONTENT_TYPE=$(grep "^Content-Type: " "${ATTACH_TMP_NAME}/meta" | cut -c 15- ) else + LOG_FIC " - ${RED}no ATTACH_TMP_NAME (${ATTACH_TMP_NAME}) ${NC}" # XXX error continue fi @@ -164,9 +183,11 @@ LOG_FIC "${CYAN}${SHRINK_CMD} -s ${MAX_KEEP_IN_MAIL} -d ${REP_PIECE_JOINTE} ${IN read JIR_CODE LOG_FIC " - return code ${YELLOW}${JIR_TOKEN}${NC} / ${YELLOW}${JIR_CODE}${NC}" case "${JIR_TOKEN}" in - "" | no | *Error* | \<* ) - LOG_FIC " - ${RED}impossible de televerser ${ATTACH_TMP_FILE} (${JIR_TOKEN}), il ne sera pas remplace dans le message${NC}" + "" | no | *Error* | \<* ) + LOG_FIC " - ${RED}Can't upload <${ATTACH_NAME}> <${ATTACH_CONTENT_TYPE}> <$(wc -c < "${ATTACH_MEDIA}")> (${JIR_TOKEN}). It will be not change in e-mail.${NC}" echo "new:" + cp "${INSPECT_DIR}/in.$$" "${INSPECT_DIR}/in.$$.bak" + echo "UPLOAD_FAIL" >> "${JIRAFEAU_ERROR}" ;; * ) LOG_FIC " - change by link ${YELLOW}${JIRAFEAU_URL}/f.php?d=1&h=${JIR_TOKEN}&k=${PASSWORD_MD5}${NC}" @@ -175,8 +196,6 @@ LOG_FIC "${CYAN}${SHRINK_CMD} -s ${MAX_KEEP_IN_MAIL} -d ${REP_PIECE_JOINTE} ${IN ;; esac } - LOG_FIC " - remove extraction file ${ATTACH_TMP_FILE}" - rm -f "${ATTACH_TMP_FILE}" done # Création de l'archive NB_ATTACH=$(grep -e "^old: " -e "^new: " "${ARCHIVE_CONTENT}" | wc -l) @@ -197,6 +216,7 @@ LOG_FIC "${CYAN}${SHRINK_CMD} -s ${MAX_KEEP_IN_MAIL} -d ${REP_PIECE_JOINTE} ${IN "" | no | *Error* | \<* ) LOG_FIC " - ${RED}can't upload archive (${JIR_TOKEN}), substitution couldn't be done${NC}" echo "arch: bad" + echo "ARCHIVE_FAIL" >> "${JIRAFEAU_ERROR}" ;; * ) LOG_FIC " - add archive ${YELLOW}${JIRAFEAU_URL}/a.php?g=${JIR_TOKEN}~${PASSWORD_MD5}${NC}" @@ -215,13 +235,18 @@ LOG_FIC "${CYAN}${SHRINK_CMD} -s ${MAX_KEEP_IN_MAIL} -d ${REP_PIECE_JOINTE} ${IN # XXX trace # cp "${INSPECT_DIR}/in.$$" "${INSPECT_DIR}/in.$$.altered" /var/mail/tmp/ +if [ -s "${JIRAFEAU_ERROR}" ]; then + LOG_FIC " - ${RED}upload fail${NC}" + quitFilter "${EX_TEMPFAIL}" +fi + # Etape choix de modification du message d'origine if [ "$(wc -l < "${ARCHIVE_CONTENT}")" -ge 3 ]; then # verification de taille finale actualSize=$(wc -c < "${INSPECT_DIR}/in.$$.altered") if [ ${actualSize} -ge $MAX_FINAL_SIZE ]; then LOG_FIC " - ${RED}too big even after diet ${INSPECT_DIR}/in.$$.altered (${actualSize})${NC}" - exit "${EX_TOO_LARGE}"; + quitFilter "${EX_TOO_LARGE}" fi LOG_FIC " - ${GREEN}send with : ${SENDMAIL} $@ ${INSPECT_DIR}/in.$$.altered ${NC}" ${SENDMAIL} "$@" < "${INSPECT_DIR}/in.$$.altered" @@ -230,13 +255,12 @@ else actualSize=$(wc -c < "${INSPECT_DIR}/in.$$") if [ ${actualSize} -ge $MAX_FINAL_SIZE ]; then LOG_FIC " - ${RED}too big without diet ${INSPECT_DIR}/in.$$ (${actualSize}) ${NC}" - exit "${EX_TOO_LARGE}"; + quitFilter "${EX_TOO_LARGE}" fi LOG_FIC " - ${GREEN}send without attach file${NC}" ${SENDMAIL} "$@" < "in.$$" fi -LOG_FIC "${GREEN}######################################## filter stop${NC}" -exit 0 +quitFilter 0 ##########################################################################