Edit file File name : popularity-contest Content :#!/bin/sh set -e # don't run if this package is removed but not purged if [ ! -f /usr/sbin/popularity-contest ]; then exit 0 fi MODE="$1" unset MAILFROM unset MAILTO unset MY_HOSTID unset PARTICIPATE unset SUBMITURLS unset USEHTTP unset USETOR unset MTAOPS TORIFY_PATH=/usr/bin/torify torify_enabled() { # Return 1 to enable torify for HTTP submission, otherwise 0; exit on error TORSOCKS_PATH=/usr/bin/torsocks [ -f "$TORIFY_PATH" ] && [ -f "$TORSOCKS_PATH" ] && TOR_AVAILABLE=1 case "$USETOR" in "yes") if [ -z $TOR_AVAILABLE ]; then echo "popularity-contest: USETOR is set but torify is not available." 2>&1 echo "popularity-contest: Please install the tor and torsocks packages." 2>&1 exit 1 fi if [ "yes" != "$USEHTTP" ]; then echo "popularity-contest: when USETOR is set USEHTTP must be set as well" 2>&1 exit 1 fi return 0 ;; "maybe") [ "yes" = "$USEHTTP" ] && [ ! -z $TOR_AVAILABLE ] && return 0 return 1 ;; "no") return 1 ;; esac } # get configuration information . /usr/share/popularity-contest/default.conf . /etc/popularity-contest.conf if test -d /etc/popularity-contest.d/; then for file in `run-parts --list --regex '\.conf$' /etc/popularity-contest.d/`; do . $file done fi # don't run if MAILTO address is blank, and not configured to use HTTP POST! if [ -z "$MAILTO" ] && [ "yes" != "$USEHTTP" ]; then exit 0; fi # don't run if PARTICIPATE is "no" or unset! if [ "$PARTICIPATE" = "no" ] || [ -z "$PARTICIPATE" ]; then exit 0; fi # enable torify if torify_enabled; then TORIFY=$TORIFY_PATH else TORIFY='' fi if [ -n "$HTTP_PROXY" ]; then export http_proxy="$HTTP_PROXY"; fi POPCONOLD=/var/log/popularity-contest POPCONNEW=/var/log/popularity-contest.new POPCON="$POPCONNEW" # Only run on the given day, to spread the load on the server a bit if [ "$DAY" ] && [ "$DAY" != "$(date +%w)" ] ; then # Ensure that popcon runs at least once in the last week if [ -f "$POPCONOLD" ] ; then now=$(date +%s) lastrun=$(date -r $POPCONOLD +%s) if [ "$MODE" = "--crond" ]; then # 6.5 days, in seconds week=561600 else # 7.5 days, in seconds week=648000 fi if [ "$(( $now - $lastrun ))" -le "$week" ]; then exit 0 fi fi fi # keep old logs cd /var/log umask 022 savelog -c 7 popularity-contest >/dev/null run_popcon() { runuser -s /bin/sh -c "/usr/sbin/popularity-contest" nobody } do_sendmail() { if [ -n "$MAILFROM" ]; then sendmail -oi $MTAOPS -f "$MAILFROM" $MAILTO else sendmail -oi $MTAOPS $MAILTO fi } # generate the popularity contest data run_popcon > $POPCON GPG=/usr/bin/gpg if [ "$ENCRYPT" = "yes" ] && ! [ -x "$GPG" ]; then logger -t popularity-contest "encryption required but gpg is not available." echo "popularity-contest: encryption required but gpg is not available." 2>&1 exit 1 fi if [ -x "$GPG" ] && [ "$ENCRYPT" = "maybe" ] || [ "$ENCRYPT" = "yes" ]; then POPCONGPG="$POPCON.gpg" rm -f "$POPCONGPG" GPGHOME=`mktemp -d` $GPG --batch --no-options --no-default-keyring --trust-model=always \ --homedir "$GPGHOME" --keyring $KEYRING --quiet \ --armor -o "$POPCONGPG" -r $POPCONKEY --encrypt "$POPCON" rm -rf "$GPGHOME" POPCON="$POPCONGPG" fi SUBMITTED=no # try to post the report through http POST if [ "$SUBMITURLS" ] && [ "yes" = "$USEHTTP" ]; then for URL in $SUBMITURLS ; do if setsid $TORIFY /usr/share/popularity-contest/popcon-upload \ -u $URL -f $POPCON -C 2>/dev/null ; then SUBMITTED=yes else logger -t popularity-contest "unable to submit report to $URL." fi done fi # try to email the popularity contest data # skip emailing if USETOR is set if [ "$MODE" = "--crond" ] && [ yes != "$SUBMITTED" ] && [ yes != "$USETOR" ] && [ "$MAILTO" ]; then if [ -x "`which sendmail 2>/dev/null`" ]; then ( if [ -n "$MAILFROM" ]; then echo "From: <$MAILFROM>" echo "Sender: <$MAILFROM>" fi echo "To: $MAILTO" echo "Subject: popularity-contest submission" echo "MIME-Version: 1.0" echo "Content-Type: text/plain" echo cat $POPCON ) | do_sendmail SUBMITTED=yes else logger -t popularity-contest "unable to submit report using sendmail." fi fi if [ "yes" != "$SUBMITTED" ] ; then logger -t popularity-contest "unable to submit report." else mv $POPCONNEW $POPCONOLD fi Save