| Line 1... | Line 1... | 
          
            | 1 | #!/bin/sh
 | 1 | #!/bin/sh
 | 
          
            | 2 | #
 | 2 | #
 | 
          
            | 3 | # $Id: alcasar-condown.sh 2883 2020-11-15 21:14:52Z rexy $
 | 3 | # $Id: alcasar-condown.sh 2886 2020-11-23 22:50:01Z rexy $
 | 
          
            | 4 | #
 | 4 | #
 | 
          
            | 5 | # alcasar-condown.sh
 | 5 | # alcasar-condown.sh
 | 
          
            | 6 | # by Rexy
 | 6 | # by Rexy
 | 
          
            | 7 | # This script is distributed under the Gnu General Public License (GPL)
 | 7 | # This script is distributed under the Gnu General Public License (GPL)
 | 
          
            | 8 |  
 | 8 |  
 | 
          
            | 9 | # This script is launched by coova after each logout
 | 9 | # This script is started by coova after each logout
 | 
          
            | 10 | # Ce script est lancé par coova à chaque déconnexion d'usager
 | 10 | # Ce script est lancé par coova à chaque déconnexion d'usager
 | 
          
            | 11 |  
 | 11 |  
 | 
          
            | 12 | PASSWD_FILE="/root/ALCASAR-passwords.txt"
 | 12 | PASSWD_FILE="/root/ALCASAR-passwords.txt"
 | 
          
            | - |   | 13 | DB_USER=`cat $PASSWD_FILE|grep ^db_user=|cut -d'=' -f2`
 | 
          
            | - |   | 14 | DB_PASSWORD=`cat $PASSWD_FILE|grep ^db_password=|cut -d'=' -f2`
 | 
          
            | 13 |  
 | 15 |  
 | 
          
            | 14 | if [ -z $FRAMED_IP_ADDRESS ]; then
 | 16 | if [ -z $FRAMED_IP_ADDRESS ]; then
 | 
          
            | 15 | 	exit 1
 | 17 | 	exit 1
 | 
          
            | 16 | fi
 | 18 | fi
 | 
          
            | 17 |  
 | 19 |  
 | 
          
            | 18 | # Remove user from his IPSET
 | - |   | 
          
            | 19 | db_query_additionalGroups=''  # before alcasar-3.4, filter types was in "FILTER_ID" attribute
 | 20 | # Retrieve 2 alcasar special radius attributes (search order : default group, then user's group, then user)
 | 
          
            | 20 | [ -n "$FILTER_ID" ] && db_query_additionalGroups="( SELECT attribute, value FROM radgroupreply WHERE groupname = '$FILTER_ID' AND (attribute IN ('Alcasar-Filter', 'Alcasar-Protocols-Filter')) ) UNION "
 | - |   | 
          
            | 21 | db_query="SELECT attribute, value FROM ( \
 | 21 | db_query="SELECT attribute, value FROM ( \
 | 
          
            | 22 | 	( SELECT attribute, value FROM radreply WHERE username = '$USER_NAME' AND (attribute IN ('Alcasar-Filter', 'Alcasar-Protocols-Filter')) ) UNION \
 | 22 |  	( SELECT attribute, value FROM radreply WHERE username = '$USER_NAME' AND (attribute IN ('Alcasar-Filter', 'Alcasar-Protocols-Filter')) ) UNION \
 | 
          
            | 23 | 	( SELECT attribute, value FROM radgroupreply gr LEFT JOIN radusergroup ug ON gr.groupname = ug.groupname WHERE username = '$USER_NAME' AND (attribute IN ('Alcasar-Filter', 'Alcasar-Protocols-Filter')) ORDER BY ug.priority ) UNION \
 | 23 | 	( SELECT attribute, value FROM radgroupreply gr LEFT JOIN radusergroup ug ON gr.groupname = ug.groupname WHERE username = '$USER_NAME' AND (attribute IN ('Alcasar-Filter', 'Alcasar-Protocols-Filter')) ORDER BY ug.priority ) UNION \
 | 
          
            | 24 | 	$db_query_additionalGroups \
 | - |   | 
          
            | 25 | 	( SELECT attribute, value FROM radgroupreply WHERE groupname = 'default' AND (attribute IN ('Alcasar-Filter', 'Alcasar-Protocols-Filter')) ) \
 | 24 | 	( SELECT attribute, value FROM radgroupreply WHERE groupname = 'default' AND (attribute IN ('Alcasar-Filter', 'Alcasar-Protocols-Filter')) ) \
 | 
          
            | 26 | ) attrs GROUP BY attribute;"
 | 25 | ) attrs GROUP BY attribute;"
 | 
          
            | 27 | db_res=$(mysql -u root -p$(cat $PASSWD_FILE | grep ^db_root= | cut -d'=' -f2-) -D radius -e "$db_query" -Ns)
 | 26 | db_res=$(mysql -u$DB_USER -p$DB_PASSWORD -D radius -e "$db_query" -Ns)
 | 
          
            | 28 |  
 | 27 |  
 | 
          
            | 29 | filter=$(echo "$db_res"      | awk '$1 == "Alcasar-Filter"           { print $2 }')
 | 28 | filter=$(echo "$db_res"      | awk '$1 == "Alcasar-Filter"           { print $2 }')
 | 
          
            | 30 | filterProto=$(echo "$db_res" | awk '$1 == "Alcasar-Protocols-Filter" { print $2 }')
 | 29 | filterProto=$(echo "$db_res" | awk '$1 == "Alcasar-Protocols-Filter" { print $2 }')
 | 
          
            | 31 |  
 | 30 |  
 | 
          
            | 32 | if [ "$filter" == '4' ]; then	# AV_WL
 | 31 | if [ "$filter" == '4' ]; then	# AV_WL
 | 
          
            | Line 47... | Line 46... | 
          
            | 47 | 	set_filterProto="proto_1";
 | 46 | 	set_filterProto="proto_1";
 | 
          
            | 48 | else					# PROFILE 0 (Not filtered)
 | 47 | else					# PROFILE 0 (Not filtered)
 | 
          
            | 49 | 	set_filterProto="proto_0";
 | 48 | 	set_filterProto="proto_0";
 | 
          
            | 50 | fi
 | 49 | fi
 | 
          
            | 51 |  
 | 50 |  
 | 
          
            | - |   | 51 | # Remove user from his IPSET
 | 
          
            | 52 | ipset del $set_filter      $FRAMED_IP_ADDRESS
 | 52 | ipset del $set_filter      $FRAMED_IP_ADDRESS
 | 
          
            | 53 | ipset del $set_filterProto $FRAMED_IP_ADDRESS
 | 53 | ipset del $set_filterProto $FRAMED_IP_ADDRESS
 | 
          
            | 54 |  
 | 54 |  
 | 
          
            | 55 | # Remove IP address from active users
 | 55 | # Remove IP address from active users
 | 
          
            | 56 | current_users_file="/tmp/current_users.txt"
 | 56 | current_users_file="/tmp/current_users.txt"
 | 
          
            | 57 | [ -e $current_users_file ] && sed -i "/^$FRAMED_IP_ADDRESS:/d" $current_users_file
 | 57 | [ -e $current_users_file ] && sed -i "/^$FRAMED_IP_ADDRESS:/d" $current_users_file
 | 
          
            | 58 |  
 | 58 |  
 | 
          
            | 59 | #############################
 | 59 | #############################
 | 
          
            | 60 | ## Debug : show all the coova parse variables (+ $set_filter + $set_filterProto).
 | 60 | ## Debug : show all the coova parse variables (+ ALCASAR-Filter + ALCASAR-Protocols-Filter).
 | 
          
            | 61 | ## see "/src/chilli.c" for the complete list of parse variables
 | 61 | ## see "/src/chilli.c" for the complete list of parse variables
 | 
          
            | 62 | #debug_file="/tmp/debug-condown.txt"
 | 62 | #debug_file="/tmp/debug-condown.txt"
 | 
          
            | 63 | #echo "-----------------------------------------------" >> $debug_file
 | 63 | #echo "-----------------------------------------------" >> $debug_file
 | 
          
            | 64 | #echo `date` >> $debug_file
 | 64 | #echo `date` >> $debug_file
 | 
          
            | 65 | #for i in DEV NET MASK ADDR USER_NAME NAS_IP_ADDRESS SERVICE_TYPE FRAMED_IP_ADDRESS FILTER_ID STATE CLASS CUI SESSION_TIMEOUT IDLE_TIMEOUT CALLING_STATION_ID CALLED_STATION_ID NAS_ID NAS_PORT_TYPE ACCT_SESSION_ID ACCT_INTERIM_INTERVAL WISPR_LOCATION_ID WISPR_LOCATION_NAME WISPR_BANDWIDTH_MAX_UP WISPR_BANDWIDTH_MAX_DOWN COOVACHILLI_MAX_INPUT_OCTETS COOVACHILLI_MAX_OUTPUT_OCTETS COOVACHILLI_MAX_TOTAL_OCTETS INPUT_OCTETS OUTPUT_OCTETS INPUT_PACKETS OUTPUT_PACKETS SESSION_TIME IDLE_TIME LOCATION OLD_LOCATION TERMINATE_CAUSE
 | 65 | #for i in DEV NET MASK ADDR USER_NAME NAS_IP_ADDRESS SERVICE_TYPE FRAMED_IP_ADDRESS FILTER_ID STATE CLASS CUI SESSION_TIMEOUT IDLE_TIMEOUT CALLING_STATION_ID CALLED_STATION_ID NAS_ID NAS_PORT_TYPE ACCT_SESSION_ID ACCT_INTERIM_INTERVAL WISPR_LOCATION_ID WISPR_LOCATION_NAME WISPR_BANDWIDTH_MAX_UP WISPR_BANDWIDTH_MAX_DOWN COOVACHILLI_MAX_INPUT_OCTETS COOVACHILLI_MAX_OUTPUT_OCTETS COOVACHILLI_MAX_TOTAL_OCTETS INPUT_OCTETS OUTPUT_OCTETS INPUT_PACKETS OUTPUT_PACKETS SESSION_TIME IDLE_TIME LOCATION OLD_LOCATION TERMINATE_CAUSE
 | 
          
            | Line 71... | Line 71... | 
          
            | 71 | #	else
 | 71 | #	else
 | 
          
            | 72 | #		echo -n "not defined; " >> $debug_file
 | 72 | #		echo -n "not defined; " >> $debug_file
 | 
          
            | 73 | #	fi
 | 73 | #	fi
 | 
          
            | 74 | #done
 | 74 | #done
 | 
          
            | 75 | #echo >> $debug_file
 | 75 | #echo >> $debug_file
 | 
          
            | 76 | #echo "set_filter : $set_filter" >> $debug_file
 | 76 | #echo "ALCASAR-Filter : $set_filter" >> $debug_file
 | 
          
            | 77 | #echo "set_filterProto : $set_filterProto" >> $debug_file
 | 77 | #echo "ALCASAR-Protocols-Filter : $set_filterProto" >> $debug_file
 | 
          
            | 78 | ## END Debug
 | 78 | ## END Debug
 | 
          
            | 79 | #################################
 | 79 | #################################
 |