Quantcast
Channel: Syed Jahanzaib – Personal Blog to Share Knowledge !
Viewing all articles
Browse latest Browse all 408

Sharing Ideas … Updated Script for Renew Expired User Account via SMS in DMASOFTLAB Radius Manager

$
0
0

45705087-genius-aged-teacher-explains-a-complicated-lesson

This post contains updated script for account renewal in radius manager with many controls added. Posting it for reference purposes only for how I used various bash related stuff all together to acquire some specific results.


Script!


#!/bin/bash
#set -x
# Thsi script is designed SPECIFICALLY for dmasoftlab radius manager 4.x series
# This script can renew users based on following checks, match sender number with manager mobile,
# Expiration Date if set, Quota check IF set, Quota reset or prolong etc, insert in logs after successfull, update balance etc
# It is designed to work with playsms , so that user sends sms , and playsms will execute this script with username
# and reply back with the information it fetches
# Designed by : Syed Jahanzaib
# aacable @ hotmail.com = https://aacable.wordpress.com
# Last Modified on 9th June, 2015

# MYSQL USER NAME AND PASSWORD Variables
SQLUSER="root"
SQLPASS="sql_pass"
SQLHOST="localhost"
SQLPORT="3306"
DB="radius"
export MYSQL_PWD=$SQLPASS
CMD="mysql -u$SQLUSER -h$SQLHOST --port=$SQLPORT --skip-column-names -e"
CURRENCY="PKR"
RMAUTH="/usr/local/bin/rmauth"
FOOTER="
Powered by Syed Jahanzaib"
DATE=$(date '+%Y-%m-%d_%H-%M-%S')
TMP="/tmp/user_renewal_incoming_sms__$DATE.sms"
# Strip user name and card number separate oterhwise playsms will treat both variables as one
echo $1 $2 > $TMP
USR=`cat $TMP | awk {' print $1 '}`
SMS_SENDER_NO=`cat $TMP | awk {' print $2 '}`

######################
bytesToHuman() {
b=${1:-0}; d=''; s=0; S=(Bytes {K,M,G,T,P,E,Z,Y}iB)
while ((b > 1024)); do
d="$(printf ".%02d" $((b % 1024 * 100 / 1024)))"
b=$((b / 1024))
let s++
done
echo "$b$d ${S[$s]}"
}
#####################

# Check User Validation, if no user variable provided EXIT with error , else continue
if [ -z "$USR" ] || [ -z "$SMS_SENDER_NO" ] ; then
echo "(Error 0) missing parameters,
Usage: renew myusername"
exit 1
fi

# Check if user in DB or not
IS_USER_FOUND=`$CMD "use $DB; SELECT username FROM rm_users WHERE username = '$USR';"`
if [ -z "$IS_USER_FOUND" ]; then
echo "(Error 1) USER NOT FOUND !"
exit 1
fi

# Fetch Manger Name and Mobile numbers
$CMD "use $DB; SELECT managername,mobile FROM rm_managers;" > /tmp/manager_mobile_list.txt
MGR_NAME=`$CMD "use $DB; SELECT managername FROM rm_managers WHERE mobile = '$SMS_SENDER_NO';"`
if [ -z "$MGR_NAME" ]; then
echo "(Error 2) You are not authorized manager to renew this user!"
exit 1
else
echo "Manager name : $MGR_NAME" > /dev/null
fi

IS_USER_BELONG_TO_MGR=`$CMD "use $DB; select count(*) from rm_users where username = '$USR' and owner = '$MGR_NAME';"`
if [ "$IS_USER_BELONG_TO_MGR" -eq 0 ]; then
echo "(Error 3) This user does not belongs to the sender mobile / manager / $MGR_NAME $SMS_SENDER_NO !"
#exit 1
else
echo "$USR - Account found in DB & it belongss to $MGR_NAME! (Manager)"
fi

# Check if user is enabled or disabled in radius
IS_USER_ENABLED_OR_DISABLED=`rmauth 127.0.0.1 $USR 1 | grep -i -c "Invalid service reference!"`
if [ "$IS_USER_ENABLED_OR_DISABLED" -eq 1 ]; then
echo "(Error 4) Your account is disabled by Admin!"
exit 1
fi

# VARIABLES
TODAY=$(date +"%Y-%m-%d")
TODAYDIGIT=`echo $TODAY | sed -e 's/-//g'`
MONTH=$(date +"-%m")
CMONTH=`echo $MONTH | sed -e 's/-//g'`
CURR_MONTHYEAR=$(date +"%Y-%m")
MONTHYEAR=$(date +"%B-%Y")
ALPHAMONTHYEAR=`echo $MONTHYEAR`
SRVID=`$CMD "use $DB; SELECT srvid from rm_users where username = '$USR';"`
SRV_PRICE=`$CMD "use $DB; SELECT unitprice FROM rm_services WHERE srvid = $SRVID;"`
SRV_EXPIRY_YES_OR_NO=`$CMD "use $DB; SELECT limitexpiration FROM rm_services WHERE srvid = '$SRVID';"`
SRV_EXPIRY_UNIT_IS_MONTH_OR_DAYS=`$CMD "use $DB; SELECT timebaseexp FROM rm_services WHERE srvid = '$SRVID';"`
SRV_EXPIRY_UNIT=`$CMD "use $DB; SELECT timeunitexp FROM rm_services WHERE srvid = '$SRVID';"`
SRV_EXPIRY_RESET_OR_ADD_MODE_FROM_SRV=`$CMD "use $DB; SELECT timeaddmodeexp FROM rm_services WHERE srvid = '$SRVID';"`
USER_EXPIRY_DATE=`$CMD "use $DB; SELECT expiration FROM rm_users WHERE username = '$USR';" | awk '{print $1}'`
SRV_QUOTA_LIMIT_YES_OR_NO=`$CMD "use $DB; SELECT timeunitexp FROM rm_services WHERE srvid = '$SRVID';"`
SRV_QUOTA_LIMIT_IN_MB=`$CMD "use $DB; SELECT trafficunitcomb FROM rm_services where srvid = '$SRVID';"`
SRV_QUOTA_LIMIT_IN_BYTES=`echo "($SRV_QUOTA_LIMIT_IN_MB)*(1024)*(1024)" |bc`
SRV_QUOTA_RESET_OR_ADD_MODE_FROM_SRV=`$CMD "use $DB; SELECT trafficaddmode FROM rm_services WHERE srvid = '$SRVID';"`
SRV_PRICE_VAT=`$CMD "use $DB; SELECT vatpercent FROM rm_settings;"`

if [ "$SRV_PRICE_VAT" != "0.00" ]; then
SRV_PRICE_W_TAXES=`echo "$SRV_PRICE*$SRV_PRICE_VAT/100+$SRV_PRICE" |bc -l`
SRV_PRICE=`echo $SRV_PRICE_W_TAXES`
#echo $SRV_PRICE show price w tax
fi

PKGNAME=`$CMD "use $DB; SELECT srvname FROM rm_services WHERE srvid = '$SRVID';"`
QUOTA_LIMIT_YES_OR_NO=`$CMD "use $DB; SELECT limitcomb FROM rm_services WHERE srvid = '$SRVID';"`
MGR_NEGATIVE_BALANCE_ALLOWED_YES_OR_NO=`$CMD "use $DB; SELECT perm_negbalance from rm_managers where managername = '$MGR_NAME';"`
IS_DATE_EXPIRED=""

#if [ "$QUOTA_LIMIT_YES_OR_NO" -eq 1 ]; then
#USER_COMB_LIMIT_VALUE_FOR_RMUSERS_TABLE_FINAL="1"
#fi

echo "Service Name = $PKGNAME"
if [ "$MGR_NEGATIVE_BALANCE_ALLOWED_YES_OR_NO" -eq 0 ]; then
MGR_CURRENT_BALANCE=`$CMD "use $DB; SELECT balance from rm_managers where managername = '$MGR_NAME';"`
echo "Manager Current balance = $MGR_CURRENT_BALANCE" > /dev/null
if (( $(echo "$MGR_CURRENT_BALANCE < $SRV_PRICE" | bc -l) )); then
echo "(Error 5) Not enough balance in your account to renew this account!"
exit 1
fi
fi

if [ "$SRV_PRICE" == "0.000000" ]; then
echo "Service Price = n/a"
else
echo "Service Price = $SRV_PRICE $CURRENCY"
fi

if [ "$SRV_EXPIRY_UNIT_IS_MONTH_OR_DAYS" -eq 3 ]; then
SRV_EXPIRY_UNIT_N_DAYS_FINAL=`echo "($SRV_EXPIRY_UNIT)*(30)" |bc`
fi

if [ "$SRV_EXPIRY_UNIT_IS_MONTH_OR_DAYS" -eq 2 ]; then
SRV_EXPIRY_UNIT_N_DAYS_FINAL="$SRV_EXPIRY_UNIT"
fi

if [ "$SRV_EXPIRY_YES_OR_NO" -eq 0 ]; then
echo "Service Date Expiration Limit = Unlimited"
fi

if [ "$SRV_EXPIRY_YES_OR_NO" -eq 1 ]; then
echo "Service Date Expiration Limit = Yes"
fi

# Check if user have QUOTA and EXPIRATION limit or NOT
if [ "$SRV_EXPIRY_YES_OR_NO" -eq 0 ]; then
if [ "$QUOTA_LIMIT_YES_OR_NO" -eq 0 ]; then
echo "This account type have no Quota/Expiration limit, So no need to take any action! *******"
exit 1
fi
fi

if [ "$SRV_EXPIRY_YES_OR_NO" -eq 1 ]; then
if [[ "$USER_EXPIRY_DATE" = "$TODAY" ]] ; then
USER_NEXT_EXPIRY_DATE_FROM_TODAY_TO_NEXT_EXPIRY_VALUE=`date -d "$TODAY +$SRV_EXPIRY_UNIT_N_DAYS_FINAL days" '+%F'`
# ADD DAYS VALUE TO TODAY EXPIRED USER
echo "User Account Date found expired TODAY *************** "
$CMD "use $DB; UPDATE rm_users SET expiration = '$USER_NEXT_EXPIRY_DATE_FROM_TODAY_TO_NEXT_EXPIRY_VALUE' WHERE username = '$USR';"
IS_DATE_EXPIRED="1"
fi
fi

if [ "$SRV_EXPIRY_YES_OR_NO" -eq 1 ]; then
if [[ "$USER_EXPIRY_DATE"  "$TODAY" ]] ; then
# Expiry limit yes and account nto expired , then check for reset or add mode for date addition
if [ "$SRV_EXPIRY_RESET_OR_ADD_MODE_FROM_SRV" -eq 2 ]; then
USER_NEXT_EXPIRY_DATE_PROLONG_VALUE=`date -d "$USER_EXPIRY_DATE +$SRV_EXPIRY_UNIT_N_DAYS_FINAL days" '+%F'`
echo "User Account Date NOT expired"
echo "Using Date prolong mode *************"
echo "Current Service expiration is = $USER_EXPIRY_DATE (YYYY-MM-DD)"
echo "Next Expiration after renewal will be = $USER_NEXT_EXPIRY_DATE_PROLONG_VALUE (YYYY-MM-DD)"
echo "Days Addition = $SRV_EXPIRY_UNIT_N_DAYS_FINAL (Days)"
# ADD DAYS VALUE TO NON-EXPIRED BY DATE USER ACCOUNT
$CMD "use $DB; UPDATE rm_users SET expiration = '$USER_NEXT_EXPIRY_DATE_PROLONG_VALUE' WHERE username = '$USR';"
IS_DATE_EXPIRED="0"
else
USER_NEXT_EXPIRY_DATE_FROM_TODAY_TO_NEXT_EXPIRY_VALUE=`date -d "$TODAY +$SRV_EXPIRY_UNIT_N_DAYS_FINAL days" '+%F'`
$CMD "use $DB; UPDATE rm_users SET expiration = '$USER_NEXT_EXPIRY_DATE_FROM_TODAY_TO_NEXT_EXPIRY_VALUE' WHERE username = '$USR';"
IS_DATE_EXPIRED="0"
fi
fi
fi
# Check QUOTA value if quota is enforced
if [ "$QUOTA_LIMIT_YES_OR_NO" -eq 1 ]; then
SRV_QUOTA_LIMIT_IN_HUMAN_FRIENDLY_VALUE=`bytesToHuman $SRV_QUOTA_LIMIT_IN_BYTES`
echo "Service Quota Limit: $SRV_QUOTA_LIMIT_IN_HUMAN_FRIENDLY_VALUE"
else
echo "Service Quota Limit: Unlimited"
fi

# *ZAIB
if [ "$QUOTA_LIMIT_YES_OR_NO" -eq 1 ]; then
# Allah shuker - zaib
RM_CMD_FOR_USER_ACTUAL_LIVE_QUOTA_VALUE=`$CMD "use $DB; SELECT SQL_CALC_FOUND_ROWS IF (limitdl = 1, downlimit - COALESCE((SELECT SUM(acctoutputoctets) FROM radacct WHERE radacct.username = tmp.username) - (SELECT COALESCE(SUM(dlbytes), 0) FROM rm_radacct WHERE rm_radacct.username = tmp.username), 0), 0), IF (limitul = 1, uplimit - COALESCE((SELECT SUM(acctinputoctets) FROM radacct WHERE radacct.username = tmp.username) - (SELECT COALESCE(SUM(ulbytes), 0) FROM rm_radacct WHERE rm_radacct.username = tmp.username), 0), 0), IF (limitcomb =1, comblimit - COALESCE((SELECT SUM(acctinputoctets + acctoutputoctets) FROM radacct WHERE radacct.username = tmp.username) - (SELECT COALESCE(SUM(ulbytes + dlbytes), 0) FROM rm_radacct WHERE rm_radacct.username = tmp.username), 0), 0), IF (limituptime = 1, uptimelimit - COALESCE((SELECT SUM(acctsessiontime) FROM radacct WHERE radacct.username = tmp.username) - (SELECT COALESCE(SUM(acctsessiontime), 0) FROM rm_radacct WHERE rm_radacct.username = tmp.username), 0), 0) FROM ( SELECT username, firstname, lastname, address, city, zip, country, state, phone, mobile, email, company, taxid, rm_users.srvid, rm_users.downlimit, rm_users.uplimit, rm_users.comblimit, rm_users.expiration, rm_users.uptimelimit, credits, comment, enableuser, staticipcpe, staticipcm, ipmodecpe, ipmodecm, srvname, limitdl, limitul, limitcomb, limitexpiration, limituptime, createdon, verifycode, verified, selfreg, acctype, maccm, mac, groupid, contractid, contractvalid, rm_users.owner, srvtype, lastlogoff FROM rm_users JOIN rm_services USING (srvid) ORDER BY username ASC ) AS tmp WHERE 1 AND username LIKE '$USR%' AND (tmp.acctype = '0' OR tmp.acctype = '1' OR tmp.acctype = '2' OR tmp.acctype = '3' OR tmp.acctype = '4' OR tmp.acctype = '5' ) LIMIT 0, 50;" | awk '{print $3}'`
RM_CMD_FOR_USER_ACTUAL_LIVE_QUOTA_VALUE_IN_HUMAN_FRIENDLY_FORMAT=`bytesToHuman $RM_CMD_FOR_USER_ACTUAL_LIVE_QUOTA_VALUE`
IS_QUOTA_LEFT_IN_NEGATIVE=`echo $RM_CMD_FOR_USER_ACTUAL_LIVE_QUOTA_VALUE_IN_HUMAN_FRIENDLY_FORMAT | grep -i -c "-"`
RM_CMD_FOR_USER_ACTUAL_LIVE_QUOTA_NEGATIVE_VALUE_IN_BYTES_WITHOUT_DASH=`echo $RM_CMD_FOR_USER_ACTUAL_LIVE_QUOTA_VALUE_IN_HUMAN_FRIENDLY_FORMAT |sed 's/[\._-]//g'`
RM_CMD_FOR_USER_ACTUAL_LIVE_QUOTA_NEGATIVE_VALUE_IN_HUMAN_FRIENDLY_VALUE=`bytesToHuman $RM_CMD_FOR_USER_ACTUAL_LIVE_QUOTA_NEGATIVE_VALUE_IN_BYTES_WITHOUT_DASH`
USER_UP_LIMIT_VALUE_FOR_UPDATE_IN_RMUSERS_TABLE=`$CMD "use radius; SELECT (SELECT SUM(acctoutputoctets) FROM radacct WHERE username = '$USR') - (SELECT COALESCE(SUM(dlbytes), 0) FROM rm_radacct WHERE username = '$USR'), (SELECT SUM(acctinputoctets) FROM radacct WHERE username = '$USR') - (SELECT COALESCE(SUM(ulbytes), 0) FROM rm_radacct WHERE username = '$USR'), (SELECT SUM(acctsessiontime) FROM radacct WHERE username = '$USR') - (SELECT COALESCE(SUM(acctsessiontime), 0) FROM rm_radacct WHERE username = '$USR');" | awk '{print $1}'`
if [ "$USER_UP_LIMIT_VALUE_FOR_UPDATE_IN_RMUSERS_TABLE" == "NULL" ]; then
USER_UP_LIMIT_VALUE_FOR_UPDATE_IN_RMUSERS_TABLE="1"
fi
if [ "$USER_DOWN_LIMIT_VALUE_FOR_UPDATE_IN_RMUSERS_TABLE" == "NULL" ]; then
USER_DOWN_LIMIT_VALUE_FOR_UPDATE_IN_RMUSERS_TABLE="1"
fi
USER_DOWN_LIMIT_VALUE_FOR_UPDATE_IN_RMUSERS_TABLE=`$CMD "use radius; SELECT (SELECT SUM(acctoutputoctets) FROM radacct WHERE username = '$USR') - (SELECT COALESCE(SUM(dlbytes), 0) FROM rm_radacct WHERE username = '$USR'), (SELECT SUM(acctinputoctets) FROM radacct WHERE username = '$USR') - (SELECT COALESCE(SUM(ulbytes), 0) FROM rm_radacct WHERE username = '$USR'), (SELECT SUM(acctsessiontime) FROM radacct WHERE username = '$USR') - (SELECT COALESCE(SUM(acctsessiontime), 0) FROM rm_radacct WHERE username = '$USR');" | awk '{print $2}'`
if [ "$USER_DOWN_LIMIT_VALUE_FOR_UPDATE_IN_RMUSERS_TABLE" == "NULL" ] || [ "$USER_UP_LIMIT_VALUE_FOR_UPDATE_IN_RMUSERS_TABLE" == "NULL" ]; then
USER_COMB_LIMIT_VALUE_FOR_RMUSERS_TABLE=1
else
USER_COMB_LIMIT_VALUE_FOR_RMUSERS_TABLE=`echo "$USER_UP_LIMIT_VALUE_FOR_UPDATE_IN_RMUSERS_TABLE+$USER_DOWN_LIMIT_VALUE_FOR_UPDATE_IN_RMUSERS_TABLE+$SRV_QUOTA_LIMIT_IN_BYTES" |bc -l`
fi
fi

#echo "$IS_QUOTA_LEFT_IN_NEGATIVE ***********************"
if [ -z "$IS_QUOTA_LEFT_IN_NEGATIVE" ]; then
IS_QUOTA_LEFT_IN_NEGATIVE="0"
fi
if [ "$IS_QUOTA_LEFT_IN_NEGATIVE" -eq 1 ]; then
echo "Balance is negative there QUOTA RESET MODE Found: **********************"
echo "Total Current Quota Left (Negative Balance) = - $RM_CMD_FOR_USER_ACTUAL_LIVE_QUOTA_NEGATIVE_VALUE_IN_HUMAN_FRIENDLY_VALUE"
echo "Resetting existing quota with new value = $SRV_QUOTA_LIMIT_IN_MB MB -OR- $SRV_QUOTA_LIMIT_IN_BYTES Bytes"
$CMD "use $DB; UPDATE rm_users SET uplimit = '$USER_UP_LIMIT_VALUE_FOR_UPDATE_IN_RMUSERS_TABLE' WHERE username = '$USR';"
$CMD "use $DB; UPDATE rm_users SET downlimit = '$USER_DOWN_LIMIT_VALUE_FOR_UPDATE_IN_RMUSERS_TABLE' WHERE username = '$USR';"
#USER_COMB_LIMIT_VALUE_FOR_RMUSERS_TABLE_FINAL=`echo "$USER_COMB_LIMIT_VALUE_FOR_RMUSERS_TABLE+$SRV_QUOTA_LIMIT_IN_BYTES" |bc -l`
USER_COMB_LIMIT_VALUE_FOR_RMUSERS_TABLE_FINAL="$USER_COMB_LIMIT_VALUE_FOR_RMUSERS_TABLE"
$CMD "use $DB; UPDATE rm_users SET comblimit = '$USER_COMB_LIMIT_VALUE_FOR_RMUSERS_TABLE_FINAL' WHERE username = '$USR';"
fi

if [ "$IS_QUOTA_LEFT_IN_NEGATIVE" -eq 0 ]; then
echo "QUOTA ADDITION MODE: **********************"
echo "Total Current Quota Left GB = $RM_CMD_FOR_USER_ACTUAL_LIVE_QUOTA_VALUE_IN_HUMAN_FRIENDLY_FORMAT"
if [ "$IS_DATE_EXPIRED" -eq 1 ]; then
echo "Date is expired therefore resetting quota ..."
$CMD "use $DB; UPDATE rm_users SET uplimit = '$USER_UP_LIMIT_VALUE_FOR_UPDATE_IN_RMUSERS_TABLE' WHERE username = '$USR';"
$CMD "use $DB; UPDATE rm_users SET downlimit = '$USER_DOWN_LIMIT_VALUE_FOR_UPDATE_IN_RMUSERS_TABLE' WHERE username = '$USR';"
#USER_COMB_LIMIT_VALUE_FOR_RMUSERS_TABLE_FINAL=`echo "$USER_COMB_LIMIT_VALUE_FOR_RMUSERS_TABLE+$SRV_QUOTA_LIMIT_IN_BYTES" |bc -l`
USER_COMB_LIMIT_VALUE_FOR_RMUSERS_TABLE_FINAL="$USER_COMB_LIMIT_VALUE_FOR_RMUSERS_TABLE"
$CMD "use $DB; UPDATE rm_users SET comblimit = '$USER_COMB_LIMIT_VALUE_FOR_RMUSERS_TABLE_FINAL' WHERE username = '$USR';"
fi
fi

if [ "$IS_QUOTA_LEFT_IN_NEGATIVE" -eq 0 ]; then
if [ "$IS_DATE_EXPIRED" -eq 0 ]; then
if [ "$SRV_QUOTA_RESET_OR_ADD_MODE_FROM_SRV" -eq 1 ]; then
echo "Date is NOT expired therefore adding quota in existing value ..."
echo "Quota Adding in existing value = $SRV_QUOTA_LIMIT_IN_MB MB -OR- $SRV_QUOTA_LIMIT_IN_BYTES Bytes"
USER_COMB_LIMIT=`$CMD "use $DB; SELECT comblimit FROM rm_users WHERE username = '$USR';"`
USER_COMB_LIMIT_VALUE_FOR_RMUSERS_TABLE_FINAL=`echo "$USER_COMB_LIMIT+$SRV_QUOTA_LIMIT_IN_BYTES" |bc -l`
$CMD "use $DB; UPDATE rm_users SET comblimit = '$USER_COMB_LIMIT_VALUE_FOR_RMUSERS_TABLE_FINAL' WHERE username = '$USR';"
fi
fi
fi

if [ "$IS_QUOTA_LEFT_IN_NEGATIVE" -eq 0 ]; then
if [ "$IS_DATE_EXPIRED" -eq 0 ]; then
if [ "$SRV_QUOTA_RESET_OR_ADD_MODE_FROM_SRV" -eq 0 ]; then
echo "Date is NOT expired AND RESET QUOTA mode found, therefore resetting quota ..."
echo "Quota Adding in existing value = $SRV_QUOTA_LIMIT_IN_MB MB -OR- $SRV_QUOTA_LIMIT_IN_BYTES Bytes"
$CMD "use $DB; UPDATE rm_users SET uplimit = '$USER_UP_LIMIT_VALUE_FOR_UPDATE_IN_RMUSERS_TABLE' WHERE username = '$USR';"
$CMD "use $DB; UPDATE rm_users SET downlimit = '$USER_DOWN_LIMIT_VALUE_FOR_UPDATE_IN_RMUSERS_TABLE' WHERE username = '$USR';"
$CMD "use $DB; UPDATE rm_users SET comblimit = '$USER_COMB_LIMIT_VALUE_FOR_RMUSERS_TABLE' WHERE username = '$USR';"
fi
fi
fi

# ADD SYSLOG ENTRY
$CMD "use radius; INSERT INTO rm_syslog (datetime, ip, name, eventid, data1) VALUES (NOW(), '$SMS_SENDER_NO', '$MGR_NAME', 'Account Renewal', 'User $USR renewal by SMS by $MGR_NAME');"
# UPDATE User Balance
if [ "$MGR_NEGATIVE_BALANCE_ALLOWED_YES_OR_NO" -eq 1 ]; then
echo "Manager Negative Balance Allowed = Yes/Unlimited"
else
echo "Manager Negative Balance Allowed = No"
fi

IS_MGR_CURRENT_BALANCE_NEGATIVE=`$CMD "use $DB; SELECT balance from rm_managers where managername = '$MGR_NAME';" | grep -i -c "-"`
if [ "$IS_MGR_CURRENT_BALANCE_NEGATIVE" -eq 1 ]; then
MGR_CURRENT_BALANCE=`$CMD "use $DB; SELECT balance from rm_managers where managername = '$MGR_NAME';" | sed -e 's/-//g'`
MGR_UPDATED_BALANCE=`echo "$MGR_CURRENT_BALANCE+$SRV_PRICE"|bc -l`
echo "Manager current balance before renewal = -$MGR_CURRENT_BALANCE"
echo "Manager current balance after this renewal = -$MGR_UPDATED_BALANCE"
$CMD "use $DB; UPDATE rm_managers set balance = '-$MGR_UPDATED_BALANCE' where managername = '$MGR_NAME';"
fi

IS_MGR_CURRENT_BALANCE_NEGATIVE=`$CMD "use $DB; SELECT balance from rm_managers where managername = '$MGR_NAME';" | grep -i -c "-"`
if [ "$IS_MGR_CURRENT_BALANCE_NEGATIVE" -eq 0 ]; then
MGR_CURRENT_BALANCE=`$CMD "use $DB; SELECT balance from rm_managers where managername = '$MGR_NAME';"`
MGR_UPDATED_BALANCE=`echo "$MGR_CURRENT_BALANCE-$SRV_PRICE"|bc -l`
echo "Manager current balance before renewal = $MGR_CURRENT_BALANCE"
echo "Manager current balance after this renewal = $MGR_UPDATED_BALANCE"
$CMD "use $DB; UPDATE rm_managers set balance = '$MGR_UPDATED_BALANCE' where managername = '$MGR_NAME';"
fi

# Check if user is ONLINE or not
ONLINE=`$CMD "use $DB; SELECT framedipaddress FROM radacct WHERE acctstoptime IS NULL AND username = '$USR';"`
if [ -z "$ONLINE" ]; then
echo "STATUS = Offline"
else
echo "STATUS = Online / IP: $ONLINE , user should restart his dialer/router"
fi

$CMD "use $DB;INSERT INTO rm_invoices (managername, username, date, bytesdl, bytesul, bytescomb, downlimit, uplimit, comblimit, time, uptimelimit, days, expiration, capdl, capul, captotal, captime, capdate, service, comment, transid, amount, invnum,
address, city, zip, country, state, fullname, taxid, paymentopt, paymode, invtype, paid, price, tax, remark, balance, gwtransid, phone, mobile, vatpercent )
VALUES
('$MGR_NAME', '$USR', NOW(), '0', '0', '$SRV_QUOTA_LIMIT_IN_BYTES', '0', '0', '$RM_CMD_FOR_USER_ACTUAL_LIVE_QUOTA_VALUE', '0', '0', '$SRV_EXPIRY_UNIT_N_DAYS_FINAL', '$USER_NEXT_EXPIRY_DATE_PROLONG_VALUE', '0', '0',
'1', '0', '1', '$PKGNAME', '', '$DATE', '1', '$DATE', '', '', '', '', '', 'FIRSTNAME', '', DATE_ADD(CURDATE(), INTERVAL '10' DAY), '0', '0', '$TODAY', '$SRV_PRICE', '0.000000', '', '0.00', '', '', '', '0.00' );"

echo "$FOOTER"
# THE END SCRIPT ENDS HERE # SYED JAHANZAIB


z@iB


Viewing all articles
Browse latest Browse all 408

Trending Articles