Subversion Repositories ALCASAR

Compare Revisions

Ignore whitespace Rev 2874 → Rev 2875

/scripts/alcasar-conf.sh
26,7 → 26,6
MTU=`grep ^PUBLIC_MTU= $CONF_FILE|cut -d"=" -f2`
DHCP_mode=`grep ^DHCP= $CONF_FILE|cut -d"=" -f2`
INT_DNS_mode=`grep ^INT_DNS_ACTIVE= $CONF_FILE|cut -d"=" -f2`
LDAP_mode=`grep ^LDAP= $CONF_FILE|cut -d"=" -f2`
HOSTNAME=`grep ^HOSTNAME= $CONF_FILE|cut -d"=" -f2`
DOMAIN=`grep ^DOMAIN= $CONF_FILE|cut -d"=" -f2`
SED="/bin/sed -i"
99,6 → 98,13
else
cp -f /etc/pki/tls/certs/alcasar.crt $DIR_UPDATE/server-chain.pem
fi
# backup gammu conf file (if necessary)
SMS=`grep ^SMS= $CONF_FILE|cut -d"=" -f2`
if [ "$SMS" == "on" ]
then
cp -f /etc/gammurc $DIR_UPDATE
cp -f /etc/gammu_smsd_conf $DIR_UPDATE
fi
# archive file creation
cd /var/tmp || { echo "Unable to find /var/tmp directory"; }
tar -cf alcasar-conf.tar conf/
119,7 → 125,7
MAJ_PREVIOUS_VERSION=`echo $PREVIOUS_VERSION|cut -d"." -f1`
MIN_PREVIOUS_VERSION=`echo $PREVIOUS_VERSION|cut -d"." -f2`
UPD_PREVIOUS_VERSION=`echo $PREVIOUS_VERSION|cut -d"." -f3|cut -c1`
for line in `cat $DIR_UPDATE/etc/alcasar.conf | grep "=" | grep -Ev "^#| |VERSION|INSTALL_DATE|PUBLIC|GW|SMS|EXTIF|INTIF"`
for line in `cat $DIR_UPDATE/etc/alcasar.conf | grep "=" | grep -Ev "^#| |VERSION|INSTALL_DATE|PUBLIC|GW|EXTIF|INTIF"`
do
key=`echo $line | cut -d"=" -f1`
key=$key=
162,6 → 168,8
[ -e $DIR_UPDATE/etc/hosts ] && cp -f $DIR_UPDATE/etc/hosts /etc/ # local host name resolution
[ -e $DIR_UPDATE/etc/alcasar-letsencrypt ] && cp -f $DIR_UPDATE/etc/alcasar-letsencrypt $DIR_ETC/ # Letsencrypt local conf
[ -d $DIR_UPDATE/etc/letsencrypt ] && cp -rf $DIR_UPDATE/etc/letsencrypt $DIR_ETC/ # Letsencrypt local conf files
[ -e $DIR_UPDATE/gammurc ] && cp -f $DIR_UPDATE/gammurc /etc/ # Gammu conf file
[ -e $DIR_UPDATE/gammu_smsd_conf ] && cp -f $DIR_UPDATE/gammu_smsd_conf /etc/ # Gammu_smsd conf file
# Retrieve BL/WL custom files
cp -f $DIR_UPDATE/custom_bl/exceptioniplist $DIR_E2G/
cp -f $DIR_UPDATE/custom_bl/exceptionsitelist $DIR_E2G/
496,12 → 504,25
fi
fi
# Start / Stop LDAP authentification
if [ $LDAP_mode = "on" ] || [ $LDAP_mode = "On" ] || [ $LDAP_mode = "ON" ]
if [ "$PARENT_SCRIPT" != "alcasar.sh" ] # don't launch on install stage
then
$DIR_BIN/alcasar-ldap.sh --on
else
$DIR_BIN/alcasar-ldap.sh --off
LDAP_mode=`grep ^LDAP= $CONF_FILE|cut -d"=" -f2`
if [ $LDAP_mode = "on" ]
then
$DIR_BIN/alcasar-ldap.sh --on
else
$DIR_BIN/alcasar-ldap.sh --off
fi
fi
# Start / Stop Gammu-smsd (SMS)
if [ "$PARENT_SCRIPT" != "alcasar.sh" ] # don't launch on install stage
then
SMS_mode=`grep ^SMS= $CONF_FILE|cut -d"=" -f2`
if [ $SMS_mode = "on" ]
then
$DIR_BIN/alcasar-sms.sh --start
fi
fi
echo
;;
*)
/scripts/alcasar-daemon.sh
24,7 → 24,11
if [ $(/usr/bin/systemctl is-active $service) != "active" ]; then
logger -t alcasar-daemon -i "$service is inactive. Activation attempt"
echo "the $service service is disabled! trying to start it..."
/usr/bin/systemctl start $service.service
if [ $service == 'gammu-smsd' ]; then
/usr/local/bin/alcasar-sms.sh --start
else
/usr/bin/systemctl start $service.service
fi
else
nb_srv=$((nb_srv+1))
fi
73,8 → 77,8
then
if [ $LDAP == "ON" ] || [ $LDAP == "on" ] || [ $LDAP == "On" ]
then
echo "Enable LDAP..."
/usr/local/bin/alcasar-ldap.sh -on
echo "Enabling LDAP..."
/usr/local/bin/alcasar-ldap.sh -on
fi
fi
 
/scripts/alcasar-sms.sh
10,30 → 10,24
 
CONF_FILE='/usr/local/etc/alcasar.conf'
 
#########################################
####### VARIABLES ########
nb_essais=3
time_account=1
time_ban=2
#########################################
####### IDs DB ##########################
PASSWD_FILE="/root/ALCASAR-passwords.txt"
u_db=$(grep '^db_user=' $PASSWD_FILE | cut -d'=' -f2-)
p_db=$(grep '^db_password=' $PASSWD_FILE | cut -d'=' -f2-)
#########################################
#########################################
 
rad="radcheck"
radgp="radusergroup"
radgpck="radgroupcheck"
radinf="userinfo"
 
sms_p="SMS_ban_perm"
sms_t="SMS_ban_temp"
 
inb="inbox"
SMS_c="SMS_country"
 
config="/etc/gammu_smsd_conf"
config2="/etc/gammurc"
logfile="/var/log/gammu-smsd/gammu-smsd.log"
41,48 → 35,34
separator="########## START ##########"
end="%%%%%%%%%% STOP %%%%%%%%%%"
 
 
usage="Usage: alcasar-gammu.sh
Start Gammu-smsd : --start
Stop Gammu-smsd : --stop
Process on new sms : --new_sms"
 
 
nb_args=$#
args=$1
 
 
# Functions
function mode_huawei() {
couple=$(lsusb | grep -i huawei | cut -d ' ' -f6)
vendor=$(echo $couple | cut -d ':' -f1)
product=$(echo $couple | cut -d ':' -f2)
 
echo "******** Modeswitch *************" >> $logfile
echo $vendor >> $logfile
echo $product >> $logfile
 
/usr/sbin/usb_modeswitch -I -H -v 0x$vendor -p 0x$product -V 0x$vendor -P 0x$product -W -n >> $logfile
}
} # end function mode_huawei
 
function start_gammu() {
# Check phone number is set
if [ -z "$(grep '^SMS_NUM=' $CONF_FILE | cut -d'=' -f2-)" ]; then
echo 'The phone number is not set.'
# exit 2
fi
 
#On truncate la table phones (informations signal / IMEI / batterie / sms recu et envoyé)
# Truncate phones table (informations signal/IMEI/battery/sent et reveived sms)
mysql --user=$u_db --password=$p_db --database=gammu -Bs -e 'TRUNCATE phones;'
 
 
#On verifie que le groupe sms est créé
# Verify the sms group is created
if [ $(mysql --user=$u_db --password=$p_db --database=radius -Bs -e "SELECT COUNT(*) FROM $radgp WHERE username='sms' AND groupname='sms';") -eq 0 ]; then
sql_add_gp="INSERT INTO $radgp (username,groupname) VALUES ('sms','sms'); INSERT INTO $radgpck (groupname,attribute,op,value) VALUES ('sms','Simultaneous-Use',':=',1);"
mysql --user=$u_db --password=$p_db --database=radius -Bs -e "$sql_add_gp"
fi
 
#Start gammu
# Start gammu
echo $separator >> $logfile
/usr/bin/systemctl -q start gammu-smsd.service
/usr/bin/systemctl -q enable gammu-smsd.service
89,32 → 69,26
} # end function start_gammu
 
function stop_gammu() {
#Stop gammu
/usr/bin/systemctl -q stop gammu-smsd.service
/usr/bin/systemctl -q disable gammu-smsd.service
sleep 10
echo $end >> $logfile
} # end function stop_gammu
 
function unlock() {
#Suppression du numero dans la table SMS_ban_perm
# Remove phone number in SMS_ban_perm table
sql_remove_ban_perm="connect gammu; DELETE FROM $sms_p"
mysql --user=$u_db --password=$p_db -B -se "$sql_remove_ban_perm WHERE SenderNumber=$1;"
 
# Ajout au groupe sms
# Add sms group
sql_remove_gp="connect radius; DELETE FROM $radgp WHERE username='$1';"
mysql --user=$u_db --password=$p_db -B -se "$sql_remove_gp"
 
# Suppression du compte dans Radcheck
# Remove account in Radcheck table
sql_remove_compte="connect radius; DELETE FROM $rad WHERE username='$1';"
mysql --user=$u_db --password=$p_db -B -se "$sql_remove_compte"
} # end function unlock
 
function change_country() {
# recupère le status du pays
sql_status_country="connect gammu; SELECT status FROM SMS_country WHERE name='$1'"
stat=$(mysql --user=$u_db --password=$p_db -B -se "$sql_status_country")
 
if [ $stat -eq 0 ]
then
sql_change_country="connect gammu; UPDATE $SMS_c SET status=1 WHERE name='$1'"
123,43 → 97,39
sql_change_country="connect gammu; UPDATE $SMS_c SET status=0 WHERE name='$1'"
mysql --user=$u_db --password=$p_db -B -se "$sql_change_country"
fi
 
 
} # end change_country
 
function supp_acc_rad() {
# Suppression du compte dans Radcheck
# Remove account in Radcheck table
sql_del_compte="connect radius; DELETE FROM $rad WHERE username='$1';"
mysql --user=$u_db --password=$p_db -B -se "$sql_del_compte"
} # end function supp_acc_rad()
 
function add_acc_rad() {
# Ajout table RadCheck : creation du compte
# Add accoubt in RadCheck table
sql_add_pass="connect radius; INSERT INTO $rad (username,attribute,op,value) VALUES ('$1','Crypt-Password',':=','$2');"
sql_add_expe="connect radius; INSERT INTO $rad (username,attribute,op,value) VALUES ('$1','Expiration',':=','$3');"
 
mysql --user=$u_db --password=$p_db -B -se "$sql_add_pass"
mysql --user=$u_db --password=$p_db -B -se "$sql_add_expe"
 
# Ajout au groupe sms
# Add this account to sms group
sql_add_gp="connect radius; INSERT INTO $radgp (username,groupname) VALUES ('$1','sms');"
mysql --user=$u_db --password=$p_db -B -se "$sql_add_gp"
} # end function add_acc_rad()
 
function supp_num_temp() {
# Suppression du numéro dans table SMS_ban_temp
# Remove phone number in SMS_ban_temp table
sql_remove_ban_temp="connect gammu; DELETE FROM $sms_t"
mysql --user=$u_db --password=$p_db -B -se "$sql_remove_ban_temp WHERE SenderNumber=$1;"
} # end function supp_num_temp()
 
function add_num_perm() {
# Ajout du numero table SMS_ban_perm, 0 : creation du compte
# Add phone number in SMS_ban_perm table
sql_add_ban_perm="connect gammu; INSERT INTO $sms_p (SenderNumber,Perm,Expiration) VALUES ('$1',0,'$2');"
mysql --user=$u_db --password=$p_db -B -se "$sql_add_ban_perm"
} # end function add_num_perm()
 
function supp_num_perm() {
#Suppression du numero dans la table SMS_ban_perm
# Remove phone number in SMS_ban_perm table
sql_remove_ban_perm="connect gammu; DELETE FROM $sms_p"
mysql --user=$u_db --password=$p_db -B -se "$sql_remove_ban_perm WHERE SenderNumber=$1;"
} # end function add_num_perm()
167,165 → 137,130
function new_sms() {
# Check Inbox table, manage Ban temp and perm, create account
export salt='$5$passwd$'
 
sql_select_inbox="connect gammu; SELECT ID, SenderNumber, TextDecoded FROM $inb;"
sql_delete_inbox="connect gammu; DELETE FROM $inb"
 
mysql --user=$u_db --password=$p_db -B -se "$sql_select_inbox" | while read result;
do
# On recupère le nombre de mots (resultat)
# Retrieve the number of words (result)
nb=$(echo $result | wc -w)
 
# On récupère le numéro de l'ID
id=$(echo $result | cut -d ' ' -f1)
 
numero=$(echo $result | cut -d ' ' -f2)
 
if [[ $numero =~ ^\+ ]]
then
 
# On vérifie si le pays est bloqué
# Retrive the ID
id=$(echo $result | cut -d ' ' -f1)
numero=$(echo $result | cut -d ' ' -f2)
if [[ $numero =~ ^\+ ]]
then
# Check if country is blocked
sql_select_countries="connect gammu; SELECT id FROM $SMS_c WHERE status=1"
mysql --user=$u_db --password=$p_db -B -se "$sql_select_countries" | while read result_c;
do
 
if [[ $numero =~ ^"$result_c" ]]
then
 
numero=$(echo $numero | cut -d '+' -f2)
 
# On vérifie que le numéro n'est pas Ban Perm
sql_ban_perm="connect gammu; SELECT * FROM $sms_p WHERE SenderNumber=$numero"
result_bp=$(mysql --user=$u_db --password=$p_db -B -se "$sql_ban_perm")
 
if test -z "$result_bp"
if [[ $numero =~ ^"$result_c" ]]
then
# Test sur le nombre de mots (resultat)
if [ $nb -eq 2 ] # Si 2 mots : le mot de passe est manquant
numero=$(echo $numero | cut -d '+' -f2)
# Check if GSM number is nabbed
sql_ban_perm="connect gammu; SELECT * FROM $sms_p WHERE SenderNumber=$numero"
result_bp=$(mysql --user=$u_db --password=$p_db -B -se "$sql_ban_perm")
if test -z "$result_bp"
then
# On incrémente de 1 dans la table des bans temp // NO PASSWORD
sql_add_temp="connect gammu; INSERT INTO $sms_t(SenderNumber) VALUES ('$numero');"
mysql --user=$u_db --password=$p_db -B -se "$sql_add_temp"
 
elif [ $nb -eq 3 ] # Si 3 mots : id + mot de passe + numero
then
export pass=$(echo $result | cut -d ' ' -f3)
pass_salt=$(perl -e'print crypt($ARGV[0],$ARGV[1])' $pass $salt)
 
export LC_TIME="en_US.UTF-8"
expir=$(date '+%d %B %Y' -d "$time_account days")
 
supp_acc_rad "$numero"
add_acc_rad "$numero" "$pass_salt" "$expir"
supp_num_temp "$numero"
add_num_perm "$numero" "$expir"
 
else
# Autrement, le mot de passe est trop grand ( > un mot )
# On incrémente d'un 1 dans la table des bans temp
# Test the number of word (result)
if [ $nb -eq 2 ] # if only 2 words : lack of password
then
# Add "1" in bans_temp table // NO PASSWORD
sql_add_temp="connect gammu; INSERT INTO $sms_t(SenderNumber) VALUES ('$numero');"
mysql --user=$u_db --password=$p_db -B -se "$sql_add_temp"
fi
 
# On gère les bans temp en ban perm
elif [ $nb -eq 3 ] # if 3 words (id + password + phone numbere)
then
export pass=$(echo $result | cut -d ' ' -f3)
pass_salt=$(perl -e'print crypt($ARGV[0],$ARGV[1])' $pass $salt)
export LC_TIME="en_US.UTF-8"
expir=$(date '+%d %B %Y' -d "$time_account days")
supp_acc_rad "$numero"
add_acc_rad "$numero" "$pass_salt" "$expir"
supp_num_temp "$numero"
add_num_perm "$numero" "$expir"
else # more then 3 words --> Add "1" in ban_temp table
sql_add_temp="connect gammu; INSERT INTO $sms_t(SenderNumber) VALUES ('$numero');"
mysql --user=$u_db --password=$p_db -B -se "$sql_add_temp"
fi
# manage ban perm
sql_select_temp="connect gammu; SELECT ID FROM $sms_t WHERE SenderNumber='$numero'"
r_select_temp=$(mysql --user=$u_db --password=$p_db -B -se "$sql_select_temp")
nb_ban_t=$(echo $r_select_temp| wc -w)
 
if [ $nb_ban_t -ge $nb_essais ]
then
supp_num_temp "$numero"
 
if [ $nb_ban_t -ge $nb_essais ]
then
supp_num_temp "$numero"
export LC_TIME="en_US.UTF-8"
expir_f=$(date '+%d %B %Y' -d "$time_ban days")
 
# Ajout du numero table SMS_ban_perm, 1 : flood
# Add "1" in SMS_ban_perm table : flood
sql_add_ban_perm="connect gammu; INSERT INTO $sms_p (SenderNumber,Perm,Expiration) VALUES ('$numero',1,'$expir_f');"
mysql --user=$u_db --password=$p_db -B -se "$sql_add_ban_perm"
fi
else
date_expiration=$(echo $result_bp | cut -d ' ' -f2,3,4)
perm=$(echo $result_bp | cut -d ' ' -f5)
 
export LC_TIME="en_US.UTF-8"
date_script=$(date '+%d %B %Y' -d "now")
 
# On converti les deux dates en secondes, pour les comparer.
d_exp=$(date --date "$date_expiration" +%s)
d_scr=$(date --date "$date_script" +%s)
 
if test $d_scr -ge $d_exp # Si le ban à expiré
then
 
# Test sur le nombre de mots (resultat)
if [ $nb -eq 2 ] # Si 2 mots : le mot de passe est manquant
fi
else
date_expiration=$(echo $result_bp | cut -d ' ' -f2,3,4)
perm=$(echo $result_bp | cut -d ' ' -f5)
export LC_TIME="en_US.UTF-8"
date_script=$(date '+%d %B %Y' -d "now")
# convert in seconds in order to be able to compare
d_exp=$(date --date "$date_expiration" +%s)
d_scr=$(date --date "$date_script" +%s)
if test $d_scr -ge $d_exp # Si le ban à expiré
then
# On incrémente de 1 dans la table des bans temp
# Test the number of words (result)
if [ $nb -eq 2 ] # Si 2 mots : le mot de passe est manquant
then
# Add "1" in ban temp table
sql_add_temp="connect gammu; INSERT INTO $sms_t(SenderNumber) VALUES ('$numero');"
mysql --user=$u_db --password=$p_db -B -se "$sql_add_temp"
 
elif [ $nb -eq 3 ] # Si 3 mots : id + mot de passe + numero
then
date_expiration=$(echo $result_bp | cut -d ' ' -f2,3,4)
perm=$(echo $result_bp | cut -d ' ' -f5)
 
date_script=$(date '+%d %B %Y' -d "now")
 
# On converti les deux dates en secondes, pour les comparer.
d_exp=$(date --date "$date_expiration" +%s)
d_scr=$(date --date "$date_script" +%s)
 
export pass=$(echo $result | cut -d ' ' -f3)
pass_salt=$(perl -e'print crypt($ARGV[0],$ARGV[1])' $pass $salt)
 
export LC_TIME="en_US.UTF-8"
expir=$(date '+%d %B %Y' -d "$time_account days")
 
 
supp_acc_rad "$numero"
add_acc_rad "$numero" "$pass_salt" "$expir"
supp_num_temp "$numero"
supp_num_perm "$numero"
add_num_perm "$numero" "$expir"
 
else
# Autrement, le mot de passe est trop grand ( > un mot )
# On incrémente d'un 1 dans la table des bans temp
elif [ $nb -eq 3 ] # Si 3 mots : id + mot de passe + numero
then
date_expiration=$(echo $result_bp | cut -d ' ' -f2,3,4)
perm=$(echo $result_bp | cut -d ' ' -f5)
date_script=$(date '+%d %B %Y' -d "now")
# convert in seconds in order to be able to compare
d_exp=$(date --date "$date_expiration" +%s)
d_scr=$(date --date "$date_script" +%s)
export pass=$(echo $result | cut -d ' ' -f3)
pass_salt=$(perl -e'print crypt($ARGV[0],$ARGV[1])' $pass $salt)
export LC_TIME="en_US.UTF-8"
expir=$(date '+%d %B %Y' -d "$time_account days")
supp_acc_rad "$numero"
add_acc_rad "$numero" "$pass_salt" "$expir"
supp_num_temp "$numero"
supp_num_perm "$numero"
add_num_perm "$numero" "$expir"
else
# number of words to big (> 3)
# Add "1" in bans temp table
sql_add_temp="connect gammu; INSERT INTO $sms_t(SenderNumber) VALUES ('$numero');"
mysql --user=$u_db --password=$p_db -B -se "$sql_add_temp"
echo "Mot de passe incorrect, ajout du numero en ban temporaire"
fi
 
# On gère les bans temp en ban perm
fi
# manage bans_temp & ban_perm
sql_select_temp="connect gammu; SELECT ID FROM $sms_t WHERE SenderNumber='$numero'"
r_select_temp=$(mysql --user=$u_db --password=$p_db -B -se "$sql_select_temp")
nb_ban_t=$(echo $r_select_temp| wc -w)
 
if [ $nb_ban_t -ge $nb_essais ]
then
supp_num_perm "$numero"
supp_num_temp "$numero"
 
if [ $nb_ban_t -ge $nb_essais ]
then
supp_num_perm "$numero"
supp_num_temp "$numero"
export LC_TIME="en_US.UTF-8"
expir_f=$(date '+%d %B %Y' -d "$time_ban days")
 
# Ajout du numero table SMS_ban_perm, 1 : flood
sql_add_ban_perm="connect gammu; INSERT INTO $sms_p (SenderNumber,Perm,Expiration) VALUES ('$numero',1,'$expir_f');" mysql --user=$u_db --password=$p_db -B -se "$sql_add_ban_perm"
# Add phne number in ban_perm : flood
sql_add_ban_perm="connect gammu; INSERT INTO $sms_p (SenderNumber,Perm,Expiration) VALUES ('$numero',1,'$expir_f');"
mysql --user=$u_db --password=$p_db -B -se "$sql_add_ban_perm"
fi
else
echo "Le ban de $numero est encore valide"
fi
else
echo "Le ban de $numero est encore valide"
break
fi
break
#else
#echo "Pays bloqué"
fi
#else
#echo "Pays bloqué"
fi
done
else
echo "Numero non autorisé (ex: 36665)"
fi
# On supprime la ligne d'ID=$id dans inbox
mysql --user=$u_db --password=$p_db -B -e "$sql_delete_inbox WHERE ID=$id;"
done
else
echo "Numero non autorisé (ex: 36665)"
fi
# On supprime la ligne d'ID=$id dans inbox
mysql --user=$u_db --password=$p_db -B -e "$sql_delete_inbox WHERE ID=$id;"
done
} # end function new_sms
 
337,23 → 272,46
exit 0
;;
--start)
failed="0"
comports=`ls -l /dev/ttyUSB* 2>/dev/null | wc -l`
if [ $comports == "0" ]
then
echo "No GSM modem found."
failed="1"
fi
if [ -z "$(grep '^SMS_NUM=' $CONF_FILE | cut -d'=' -f2-)" ]; then
echo 'The phone number is not set.'
failed="1"
fi
if [ $failed == "1" ]
then
sed -i "s/^SMS=.*/SMS=off/" $CONF_FILE
exit 0
fi
gammu_pid=`/usr/sbin/pidof gammu-smsd|wc -l`
if [ $gammu_pid != "0" ]
then
echo "gammu is already started"
then
echo "Gammu is already started"
else
start_gammu
sleep 1
is_active=`systemctl is-active gammu-smsd`
if [ $is_active == "active" ]
then
sed -i "s/^SMS=.*/SMS=on/" $CONF_FILE
else
sed -i "s/^SMS=.*/SMS=off/" $CONF_FILE
fi
fi
sed -i "s/^SMS=.*/SMS=on/" $CONF_FILE
exit 0
;;
--stop)
gammu_pid=`/usr/sbin/pidof gammu-smsd|wc -l`
if [ $gammu_pid != "0" ]
then
then
stop_gammu
else
echo "gammu is already stopped"
echo "Gammu is already stopped"
fi
sed -i "s/^SMS=.*/SMS=off/" $CONF_FILE
exit 0