2664 |
tom.houday |
1 |
#!/bin/bash
|
|
|
2 |
#
|
|
|
3 |
# $Id: alcasar-migration-3.3.1_dbRadiusAttrs.sh 2664 2018-11-19 17:35:12Z tom.houdayer $
|
|
|
4 |
#
|
|
|
5 |
# alcasar-migration-3.3.1_dbRadiusAttrs.sh
|
|
|
6 |
# by Tom HOUDAYER
|
|
|
7 |
#
|
|
|
8 |
# This script is distributed under the Gnu General Public License (GPL)
|
|
|
9 |
#
|
|
|
10 |
# Migrate user database to ALCASAR 3.3.1
|
|
|
11 |
# Changes:
|
|
|
12 |
# - Move "CoovaChilli-Max-Total-Octets" RADIUS attribute from radreply to radcheck
|
|
|
13 |
# - Delete "CoovaChilli-Max-Input-Octets" and "CoovaChilli-Max-Output-Octets" RADIUS attributes
|
|
|
14 |
|
|
|
15 |
PASSWD_FILE="/root/ALCASAR-passwords.txt"
|
|
|
16 |
DB_PASS=$(grep ^db_root= $PASSWD_FILE | cut -d'=' -f2-)
|
|
|
17 |
|
|
|
18 |
DRY_RUN=false
|
|
|
19 |
|
|
|
20 |
if [ $# -eq 1 ] && [ "$1" == "--simulation" ]; then
|
|
|
21 |
DRY_RUN=true
|
|
|
22 |
fi
|
|
|
23 |
|
|
|
24 |
db_query () {
|
|
|
25 |
if $DRY_RUN && [[ ! "$1" =~ ^'SELECT ' ]]; then
|
|
|
26 |
echo "[SQL] request: \"$1\""
|
|
|
27 |
else
|
|
|
28 |
mysql -u root -p"$DB_PASS" -D radius -e "$1" -Bs
|
|
|
29 |
[ $? -ne 0 ] && echo "[SQL] ERROR (\"$1\")"
|
|
|
30 |
fi
|
|
|
31 |
}
|
|
|
32 |
|
|
|
33 |
for step in $(seq 1 2); do
|
|
|
34 |
if [ $step -eq 1 ]; then
|
|
|
35 |
tableNameCheck='radcheck'
|
|
|
36 |
tableNameReply='radreply'
|
|
|
37 |
loginName='username'
|
|
|
38 |
else
|
|
|
39 |
tableNameCheck='radgroupcheck'
|
|
|
40 |
tableNameReply='radgroupreply'
|
|
|
41 |
loginName='groupname'
|
|
|
42 |
fi
|
|
|
43 |
|
|
|
44 |
# Move "CoovaChilli-Max-Total-Octets" RADIUS attribute from radreply to radcheck
|
|
|
45 |
db_res=$(db_query "SELECT $loginName, value FROM $tableNameReply WHERE attribute = 'CoovaChilli-Max-Total-Octets';")
|
|
|
46 |
if [ -n "$db_res" ]; then
|
|
|
47 |
echo "$(echo "$db_res" | wc -l) \"CoovaChilli-Max-Total-Octets\" found in table \"$tableNameReply\"."
|
|
|
48 |
while read -r line; do
|
|
|
49 |
login=$(echo "$line" | cut -f1)
|
|
|
50 |
value=$(echo "$line" | cut -f2)
|
|
|
51 |
echo " $login..."
|
|
|
52 |
|
|
|
53 |
db_query "INSERT INTO $tableNameCheck ($loginName, attribute, value, op) VALUES ('$login','CoovaChilli-Max-Total-Octets','$value', ':=');"
|
|
|
54 |
|
|
|
55 |
done <<< "$db_res"
|
|
|
56 |
db_query "DELETE FROM $tableNameReply WHERE attribute = 'CoovaChilli-Max-Total-Octets';"
|
|
|
57 |
fi
|
|
|
58 |
|
|
|
59 |
# Delete "CoovaChilli-Max-Input-Octets" and "CoovaChilli-Max-Output-Octets" RADIUS attributes
|
|
|
60 |
db_query "DELETE FROM $tableNameReply WHERE attribute = 'CoovaChilli-Max-Input-Octets';"
|
|
|
61 |
db_query "DELETE FROM $tableNameReply WHERE attribute = 'CoovaChilli-Max-Output-Octets';"
|
|
|
62 |
done
|