From 6365fdf1f2068abcc2a88a8af1c2c3e68783caf6 Mon Sep 17 00:00:00 2001 From: unfr Date: Mon, 12 May 2025 13:40:27 +0200 Subject: [PATCH] retrait sous-shell --- autopost/posteur.sh | 98 +++++++++++++++++++++++++-------------------- 1 file changed, 54 insertions(+), 44 deletions(-) diff --git a/autopost/posteur.sh b/autopost/posteur.sh index 3ee6260..a6561dc 100644 --- a/autopost/posteur.sh +++ b/autopost/posteur.sh @@ -30,62 +30,72 @@ checkusenet(){ cd ${DOSSIER_GLOBAL} - -while true -do +while true; do verif=$(sqlite3 "$DB_FILE" "BEGIN IMMEDIATE; SELECT id, nom FROM release WHERE status = 0 LIMIT 1; COMMIT;") if [ -n "$verif" ]; then - id=$(echo "$verif" | awk -F "|" '{print $1}' | sed 's/^[ \t]*//;s/[ \t]*$//') - name=$(echo "$verif" | awk -F "|" '{print $2}' | sed 's/^[ \t]*//;s/[ \t]*$//') + id=$(echo "$verif" | awk -F "|" '{print $1}' | xargs) + name=$(echo "$verif" | awk -F "|" '{print $2}' | xargs) FILESANSEXT=${name%.*} - + LOG="${DOSSIER_LOGS}${FILESANSEXT}.log" + + echo -e "${VERT}DEBUT DE TRAITEMENT DE ${FILESANSEXT}${NORMAL}" | tee -a "$LOG" + echo -e "${CYAN}CREATION DES PAR2${NORMAL}" | tee -a "$LOG" + # Lancement de parpar et redirection vers tee sans sous-shell + parpar -s10M -r20%+2 -m4096M -p1l -o "${FILESANSEXT}.par2" "${name}" \ + > >(tee -a "$LOG") 2> >(tee -a "$LOG" >&2) + ret=$? + if [ $ret -ne 0 ]; then + echo -e "${ROUGE}Erreur parpar (code $ret). Marquage en échec.${NORMAL}" | tee -a "$LOG" + sqlite3 "$DB_FILE" \ + "BEGIN IMMEDIATE; UPDATE release SET status = 2 WHERE id = ${id}; COMMIT;" + rm -f "${FILESANSEXT}.par2" "${FILESANSEXT}.vol*" + continue + fi + + # Suite du traitement loggué { - echo -e ${VERT}"DEBUT DE TRAITEMENT DE" ${FILESANSEXT}${NORMAL} - echo -e ${CYAN}"CREATION DES PAR2"${NORMAL} - parpar -s10M -r20%+2 -m4096M -p1l -o ${FILESANSEXT}.par2 ${name} - ret=$? - if [ $ret -ne 0 ]; then - echo -e "${ROUGE}Erreur parpar (code $ret). Marquage en échec.${NORMAL}" - sqlite3 "$DB_FILE" "BEGIN IMMEDIATE; UPDATE release SET status = 2 WHERE id = ${id}; COMMIT;" - rm -f ${FILESANSEXT}.par2 ${FILESANSEXT}.vol* - continue - fi - - echo -e ${VERT}"UPLOAD SUR USENET" ${NORMAL} + echo -e "${VERT}UPLOAD SUR USENET${NORMAL}" checkusenet - nyuu -h ${NG_HOST} -P ${NG_PORT} -S -u ${NG_USER} -p ${NG_PASS} -n ${NG_NBR_CONN} -g alt.binaries.boneless -o "${DOSSIER_NZB_ATTENTE}${FILESANSEXT}.nzb" --nzb-title "${FILESANSEXT}" -f "{rand(14)} {rand(14)}@{rand(5)}.{rand(3)}" --message-id "{rand(32)}@{rand(8)}.{rand(3)}" --subject "{rand(32)}" --nzb-subject "{filename}" --obfuscate-articles ${FILESANSEXT}.* - - if [ -e "${DOSSIER_NFO}""${FILESANSEXT}".json ]; then - echo -e ${JAUNE}"VERIF DU NZB"${NORMAL} - nzbsizebit=$(bash ${ANALYZER} ${DOSSIER_NZB_ATTENTE}${FILESANSEXT}.nzb | jq '.Taillebit') - echo -e "NZB_SIZE :"${nzbsizebit} - jsonsizebit=$(cat ${DOSSIER_NFO}${FILESANSEXT}.json | jq -r '.media.track[] | select(.["@type"] == "General") | .FileSize') - echo -e "MEDIAINFO_SIZE :"${jsonsizebit} - + nyuu -h ${NG_HOST} -P ${NG_PORT} -S -u ${NG_USER} -p ${NG_PASS} -n ${NG_NBR_CONN} \ + -g alt.binaries.boneless -o "${DOSSIER_NZB_ATTENTE}${FILESANSEXT}.nzb" \ + --nzb-title "${FILESANSEXT}" -f "{rand(14)} {rand(14)}@{rand(5)}.{rand(3)}" \ + --message-id "{rand(32)}@{rand(8)}.{rand(3)}" \ + --subject "{rand(32)}" --nzb-subject "{filename}" --obfuscate-articles ${FILESANSEXT}.* + + if [ -e "${DOSSIER_NFO}${FILESANSEXT}.json" ]; then + echo -e "${JAUNE}VERIF DU NZB${NORMAL}" + nzbsizebit=$(bash ${ANALYZER} "${DOSSIER_NZB_ATTENTE}${FILESANSEXT}.nzb" | jq '.Taillebit') + echo -e "NZB_SIZE : ${nzbsizebit}" + jsonsizebit=$(jq -r '.media.track[] | select(."@type" == "General") | .FileSize' "${DOSSIER_NFO}${FILESANSEXT}.json") + echo -e "MEDIAINFO_SIZE : ${jsonsizebit}" + if [[ ${nzbsizebit} -le ${jsonsizebit} ]] || [[ ${nzbsizebit} = "NAN" ]]; then - echo -e "$ROUGE""PROBLEME TAILLE NZB""$NORMAL" - rm ${DOSSIER_NZB_ATTENTE}${FILESANSEXT}.nzb ${FILESANSEXT}.par2 ${FILESANSEXT}.vol* + echo -e "${ROUGE}PROBLEME TAILLE NZB${NORMAL}" + rm "${DOSSIER_NZB_ATTENTE}${FILESANSEXT}.nzb" "${FILESANSEXT}.par2" "${FILESANSEXT}.vol*" sqlite3 "$DB_FILE" "BEGIN IMMEDIATE; UPDATE release SET status = 2 WHERE id = ${id}; COMMIT;" else - echo -e ${CYAN}"ENVOI SUR LE SITE"${NORMAL} - curl -s -k -L -m 60 --output /dev/null -F rlsname=${FILESANSEXT} -F generated_nfo_json=@${DOSSIER_NFO}${FILESANSEXT}.json -F nzb=@${DOSSIER_NZB_ATTENTE}${FILESANSEXT}.nzb -F upload=upload "${URL_API}${APIKEY}" + echo -e "${CYAN}ENVOI SUR LE SITE${NORMAL}" + curl -s -k -L -m 60 --output /dev/null \ + -F rlsname=${FILESANSEXT} \ + -F generated_nfo_json=@${DOSSIER_NFO}${FILESANSEXT}.json \ + -F nzb=@${DOSSIER_NZB_ATTENTE}${FILESANSEXT}.nzb \ + -F upload=upload "${URL_API}${APIKEY}" first_char=$(echo "${name:0:1}" | tr '[:lower:]' '[:upper:]') - if [ ! -d ${DOSSIER_NZB_FINAL}${first_char} ]; then - mkdir ${DOSSIER_NZB_FINAL}${first_char} - fi - 7z a -t7z -m0=lzma -mx=9 -mfb=64 -md=32m -ms=on ${DOSSIER_NZB_ATTENTE}${FILESANSEXT}.7z ${DOSSIER_NZB_ATTENTE}${FILESANSEXT}.nzb > /dev/null 2>&1 - mv ${DOSSIER_NZB_ATTENTE}${FILESANSEXT}.7z ${DOSSIER_NZB_FINAL}${first_char}/ - rm -rf ${FILESANSEXT}* - rm ${DOSSIER_NZB_ATTENTE}${FILESANSEXT}.nzb + mkdir -p "${DOSSIER_NZB_FINAL}${first_char}" + 7z a -t7z -m0=lzma -mx=9 -mfb=64 -md=32m -ms=on \ + "${DOSSIER_NZB_ATTENTE}${FILESANSEXT}.7z" \ + "${DOSSIER_NZB_ATTENTE}${FILESANSEXT}.nzb" > /dev/null 2>&1 + mv "${DOSSIER_NZB_ATTENTE}${FILESANSEXT}.7z" "${DOSSIER_NZB_FINAL}${first_char}/" + rm -rf "${FILESANSEXT}*" + rm "${DOSSIER_NZB_ATTENTE}${FILESANSEXT}.nzb" sqlite3 "$DB_FILE" "BEGIN IMMEDIATE; UPDATE release SET status = 1 WHERE id = ${id}; COMMIT;" - echo -e ${VERT}"FIN DE TRAITEMENT DE" ${FILESANSEXT}${NORMAL} + echo -e "${VERT}FIN DE TRAITEMENT DE ${FILESANSEXT}${NORMAL}" fi else - echo -e ${ROUGE}"ENVOI SUR LE SITE IMPOSSIBLE NFO MANQUANT"${NORMAL} + echo -e "${ROUGE}ENVOI SUR LE SITE IMPOSSIBLE NFO MANQUANT${NORMAL}" fi - } 2>&1 | tee -a ${DOSSIER_LOGS}${FILESANSEXT}.log - fi + } > >(tee -a "$LOG") 2>&1 - attente 10 # Attente de 10 secondes + attente 10 + fi done -