This will avoid double payouts via the website. Payouts will be requested by users and processed by a cron. If, for whatever reason, users do add two requests (it is checked if a payout exists) they would only have one successful payout until their account balance is back up to a save value to trigger the payout. This should fix any issues with manual payouts being exploited through the website. Will require some testing by others to ensure things work as expected.
92 lines
2.2 KiB
Bash
Executable File
92 lines
2.2 KiB
Bash
Executable File
#!/bin/bash
|
|
|
|
|
|
#########################
|
|
# #
|
|
# Configuration Options #
|
|
# #
|
|
#########################
|
|
# PHP Detections, if this fails hard code it
|
|
PHP_BIN=$( which php )
|
|
|
|
# Path to PID file, needs to be writable by user running this
|
|
PIDFILE='/tmp/mmcfe-ng-cron.pid'
|
|
|
|
# List of cruns to execute
|
|
CRONS="findblock.php proportional_payout.php pplns_payout.php pps_payout.php blockupdate.php manual_payout.php auto_payout.php tickerupdate.php notifications.php statistics.php archive_cleanup.php"
|
|
|
|
# Output additional runtime information
|
|
VERBOSE="0"
|
|
|
|
################################################################
|
|
# #
|
|
# You probably don't need to change anything beyond this point #
|
|
# #
|
|
################################################################
|
|
|
|
# Overwrite some settings via command line arguments
|
|
while getopts "hvp:" opt; do
|
|
case "$opt" in
|
|
h|\?)
|
|
echo "Usage: $0 [-v] [-p PHP_BINARY]";
|
|
exit 0
|
|
;;
|
|
v) VERBOSE=1 ;;
|
|
p) PHP_BIN=$OPTARG ;;
|
|
:)
|
|
echo "Option -$OPTARG requires an argument." >&2
|
|
exit 1
|
|
;;
|
|
esac
|
|
done
|
|
|
|
# Find scripts path
|
|
if [[ -L $0 ]]; then
|
|
CRONHOME=$( dirname $( readlink $0 ) )
|
|
else
|
|
CRONHOME=$( dirname $0 )
|
|
fi
|
|
|
|
# Change working director to CRONHOME
|
|
if ! cd $CRONHOME 2>/dev/null; then
|
|
echo "Unable to change to working directory \$CRONHOME: $CRONHOME"
|
|
exit 1
|
|
fi
|
|
|
|
# Confiuration checks
|
|
if [[ -z $PHP_BIN || ! -x $PHP_BIN ]]; then
|
|
echo "Unable to locate you php binary."
|
|
exit 1
|
|
fi
|
|
|
|
if [[ ! -e 'shared.inc.php' ]]; then
|
|
echo "Not in cronjobs folder, please ensure \$CRONHOME is set!"
|
|
exit 1
|
|
fi
|
|
|
|
# Our PID of this shell
|
|
PID=$$
|
|
|
|
if [[ -e $PIDFILE ]]; then
|
|
echo "Cron seems to be running already"
|
|
RUNPID=$( cat $PIDFILE )
|
|
if ps fax | grep -q "^\<$RUNPID\>"; then
|
|
echo "Process found in process table, aborting"
|
|
exit 1
|
|
else
|
|
echo "Process $RUNPID not found. Plese remove $PIDFILE if process is indeed dead."
|
|
exit 1
|
|
fi
|
|
fi
|
|
|
|
# Write our PID file
|
|
echo $PID > $PIDFILE
|
|
|
|
for cron in $CRONS; do
|
|
[[ $VERBOSE == 1 ]] && echo "Running $cron, check logfile for details"
|
|
$PHP_BIN $cron
|
|
done
|
|
|
|
# Remove pidfile
|
|
rm -f $PIDFILE
|