150 lines
4.5 KiB
Bash
Executable File
150 lines
4.5 KiB
Bash
Executable File
#!/bin/bash
|
||
|
||
PRG=$(basename $0)
|
||
|
||
ATTACH_MODE="-m FOOTER"
|
||
|
||
BOLD='[1m'
|
||
RED='[0;31m'
|
||
GREEN='[0;32m'
|
||
YELLOW='[0;33m'
|
||
BLUE='[0;34m'
|
||
MAGENTA='[0;35m'
|
||
CYAN='[0;36m'
|
||
NC='[0m' # No Color
|
||
NL='
|
||
'
|
||
|
||
TTY=$(tty)
|
||
|
||
|
||
########################################
|
||
LOG () {
|
||
echo "$1" >> "${TTY}"
|
||
}
|
||
|
||
usage () {
|
||
echo "Usage: ${PRG} mbox"
|
||
exit 1
|
||
}
|
||
|
||
[ "$#" -eq 1 ] || usage
|
||
|
||
|
||
########################################
|
||
mbox=$(realpath $1)
|
||
cd $(dirname $0)
|
||
DOMAINNAME="$(cat domainname)"
|
||
JIRAFEAU_URL="https://depot.${DOMAINNAME}"
|
||
JIRAFEAU_LOCAL="${JIRAFEAU_URL}"
|
||
|
||
TMP_DIR="$(mktemp)"
|
||
|
||
eMailShrinker="$(realpath "./eMailShrinker")"
|
||
[ -x "${eMailShrinker}" ] || eMailShrinker="$(realpath "../../build/out/eMailShrinker")"
|
||
|
||
jirafeauAPI="$(realpath "./jirafeauAPI")"
|
||
[ -x "${jirafeauAPI}" ] || jirafeauAPI="$(realpath "../../build/out/jirafeauAPI")"
|
||
|
||
rm -f "${TMP_DIR}" ; mkdir -p "${TMP_DIR}"
|
||
rm -fr "${TMP_DIR}/PJ-name.txt" "${TMP_DIR}/PJ-Keys.txt" "${TMP_DIR}/PJ" "${TMP_DIR}/archive-content.txt" "${TMP_DIR}/url-to-refresh.txt" "${TMP_DIR}/new-mbox"
|
||
echo -e "time: $(date "+%Y-%m-%d-%H:%M:%S")\nid: $(date +%s)" > "${TMP_DIR}/archive-content.txt"
|
||
|
||
LOG " - ${BLUE}mbox: ${mbox}${NC}"
|
||
"${eMailShrinker}" -l "${mbox}"
|
||
LOG
|
||
|
||
"${eMailShrinker}" -u "${mbox}" > "${TMP_DIR}/url-to-refresh.txt" 2>> "${TTY}"
|
||
|
||
|
||
cat "${TMP_DIR}/url-to-refresh.txt" | grep "${JIRAFEAU_URL}" | while read REMOTE_LINK; do
|
||
REMOTE_REF=$(echo "${REMOTE_LINK}" | sed -e 's/.*h=\([^&]*\).*/\1/' -e 's/.*http.*//')
|
||
[ -z "${REMOTE_REF}" ] && continue
|
||
LOG " - ${BLUE}update ${REMOTE_REF}${NC}"
|
||
"${jirafeauAPI}" -f "${JIRAFEAU_LOCAL}" -t "month" update "${REMOTE_REF}" 2>> "${TTY}"
|
||
LOG
|
||
echo "old: ${REMOTE_REF} ${REMOTE_KEY}" >> "${TMP_DIR}/archive-content.txt"
|
||
done
|
||
|
||
"${eMailShrinker}" -s "5ki" -d "${TMP_DIR}/PJ" "${mbox}" > "${TMP_DIR}/PJ-name.txt"
|
||
|
||
LOG " - ${BLUE}PJ-name: ${NC}"
|
||
cat "${TMP_DIR}/PJ-name.txt"
|
||
LOG
|
||
|
||
cat "${TMP_DIR}/PJ-name.txt" | {
|
||
while read ATTACH_TMP_NAME; do
|
||
LOG " - ${BLUE}find ATTACH_TMP_NAME: (${ATTACH_TMP_NAME}) ${NC}"
|
||
if [ -d "${ATTACH_TMP_NAME}" ]; then
|
||
ATTACH_MEDIA="${ATTACH_TMP_NAME}/media"
|
||
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 " - ${RED}no ATTACH_TMP_NAME: ${ATTACH_TMP_NAME}${NC}"
|
||
# XXX error
|
||
continue
|
||
fi
|
||
LOG " - ${BLUE}find ${ATTACH_NAME} / (${ATTACH_CONTENT_TYPE}) / ${ATTACH_MEDIA} ${NC}"
|
||
PASSWORD=$(apg -n 1 -m 12)
|
||
PASSWORD_MD5=$(echo -n ${PASSWORD} | ${MD5_CMD} | cut -d \ -f 1)
|
||
"${jirafeauAPI}" -f "${JIRAFEAU_LOCAL}" -t "month" -s "1Gi" -c "${ATTACH_CONTENT_TYPE}" -n "${ATTACH_NAME}" send "${ATTACH_MEDIA}" "${PASSWORD}" 2>> "${TTY}" > "${TMP_DIR}/one.txt"
|
||
|
||
cat "${TMP_DIR}/one.txt" | {
|
||
read JIR_TOKEN
|
||
read JIR_CODE
|
||
case "${JIR_TOKEN}" in
|
||
"" | no | *Error* | \<* )
|
||
LOG " - ${RED}can't upload ${ATTACH_MEDIA} <${JIR_TOKEN}> <${JIR_CODE}>${NC}"
|
||
cat "${TMP_DIR}/one.txt" >> "${TTY}"
|
||
echo "url:"
|
||
;;
|
||
* )
|
||
LOG " - ${GREEN} upload ${ATTACH_MEDIA}${NC}"
|
||
echo "url: ${JIRAFEAU_URL}/f.php?d=1&h=${JIR_TOKEN}&k=${PASSWORD_MD5}"
|
||
echo "new: ${JIR_TOKEN} ${PASSWORD_MD5}" >> "${TMP_DIR}/archive-content.txt"
|
||
;;
|
||
esac
|
||
}
|
||
done
|
||
NB_ATTACH=$(grep -e "^old: " -e "^new: " "${TMP_DIR}/archive-content.txt" | wc -l)
|
||
if [ "${NB_ATTACH}" -gt 1 ]; then
|
||
PASSWORD=$(apg -n 1 -m 12)
|
||
PASSWORD_MD5=$(echo -n ${PASSWORD} | ${MD5_CMD} | cut -d \ -f 1)
|
||
"${jirafeauAPI}" -f "${JIRAFEAU_LOCAL}" -t "month" -s "1Gi" -c "text/kaz_email_archive" -n "archive_content" send "${TMP_DIR}/archive-content.txt" "${PASSWORD}" > "${TMP_DIR}/one.txt" 2>> "${TTY}"
|
||
cat "${TMP_DIR}/one.txt" | {
|
||
read JIR_TOKEN
|
||
read JIR_CODE
|
||
case "${JIR_TOKEN}" in
|
||
"" | no | *Error* | \<* )
|
||
LOG " - ${RED}can't upload ${TMP_DIR}/archive-content.txt${NC}"
|
||
echo "arch: bad"
|
||
;;
|
||
* )
|
||
LOG " - ${GREEN} upload archive-content.txt${NC}"
|
||
echo "arch: ${JIRAFEAU_URL}/a.php?g=${JIR_TOKEN}~${PASSWORD_MD5}"
|
||
;;
|
||
esac
|
||
}
|
||
else
|
||
LOG " - ${GREEN} no archive${NC}"
|
||
echo "arch: none"
|
||
fi
|
||
} > "${TMP_DIR}/PJ-Keys.txt"
|
||
|
||
LOG " - ${BLUE}PJ-Keys: ${NC}"
|
||
cat "${TMP_DIR}/PJ-Keys.txt"
|
||
LOG
|
||
|
||
LOG " - ${GREEN}ATTACH_MODE: ${ATTACH_MODE}${NC}"
|
||
|
||
cat "${TMP_DIR}/PJ-Keys.txt" | "${eMailShrinker}" ${ATTACH_MODE} -s "5ki" "${mbox}" "${TMP_DIR}/new-mbox" 2>> "${TTY}"
|
||
|
||
|
||
LOG " - ${BLUE}new-mbox:${NC}"
|
||
"${eMailShrinker}" -l "${TMP_DIR}/new-mbox" 2>> "${TTY}"
|
||
|
||
#echo "${TMP_DIR}"
|
||
#find "${TMP_DIR}" -type f -print
|
||
|
||
echo -e "\nresul in ${TMP_DIR}/new-mbox"
|