%PDF- %PDF-
Mini Shell

Mini Shell

Direktori : /etc/cron.daily/
Upload File :
Create Path :
Current File : //etc/cron.daily/popularity-contest

#!/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

# filter out Ubuntu's popcon email address
if echo $MAILTO | grep -q 'popcon@ubuntu.com'; then
    logger -t popularity-contest "Ubuntu is no longer collecting package statistics. You can safely remove its email address. Please consider disabling or uninstalling it by running 'sudo dpkg-reconfigure popularity-contest' or 'sudo apt remove --purge popularity-contest'."
    MAILTO="$(echo $MAILTO | sed 's:popcon@ubuntu.com::g')"
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

POPCONVAR=/var/lib/popularity-contest
POPCONOLD=/var/log/popularity-contest
POPCONNEW=/var/log/popularity-contest.new
POPCON="$POPCONNEW"

last_sub()
{
  if [ -r "$POPCONVAR/lastsub" ] ; then
    cat "$POPCONVAR/lastsub"
  else
    date -r "$POPCONOLD" +%s
  fi
}
set_sub()
{
  test -d "$POPCONVAR" || mkdir -p "$POPCONVAR"
  date +%s > "$POPCONVAR/lastsub"
}

# Only run on the given day, to spread the load on the server a bit
if [ "$MODE" != "--crond" ]  || ( [ "$DAY" ] && [ "$DAY" != "$(date +%w)" ] ) ; then
	# Ensure that popcon runs at least once in the last week
	if [ -f "$POPCONOLD" ] ; then
		now=$(date +%s)
		lastrun=$(last_sub)
                if [ "$MODE" = "--crond" ]; then
			# 7.5 days, in seconds
			week=648000
	        else
			# 6.5 days, in seconds
			week=561600
                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

do_sendmail()
{
	if [ -n "$MAILFROM" ]; then
		sendmail -oi $MTAOPS -f "$MAILFROM" $MAILTO
	else
		sendmail -oi $MTAOPS $MAILTO
	fi
}

# generate the popularity contest data

/usr/sbin/popularity-contest --su-nobody > $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 echo $URL | grep -q 'popcon.ubuntu.com'; then
		logger -t popularity-contest "Ubuntu is no longer collecting package statistics. You can safely remove $URL. Please consider disabling or uninstalling it by running 'sudo dpkg-reconfigure popularity-contest' or 'sudo apt remove --purge popularity-contest'."
	elif setsid $TORIFY /usr/share/popularity-contest/popcon-upload \
	    -u $URL -f $POPCON 2>/dev/null ; then
		SUBMITTED=yes
	        set_sub
	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
	if [ -n "$POPCONGPG" ]; then
		mv $POPCONNEW.gpg $POPCONOLD.gpg
	fi
fi

Zerion Mini Shell 1.0