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