#!/bin/bash
function __radclient() {
res=$(radclient -c 1 -r 2 -t 1 -x $nas_ip:$coa_port $1 $coa_psw)
ret=$?
set +x
echo "$res" | grep -q "Error-Cause = 0" && ret=0
echo "$res" | grep -q "Error-Cause = Resources Unavailable" && ret=254
if echo "$res" | grep -q "Error-Cause = Session-Context-Not-Found"; then
echo "User-Name=\"$ip\"" | radclient -x $nas_ip:$coa_port disconnect $coa_psw
echo "User-Name=\"$login\"" | radclient -x $nas_ip:$coa_port disconnect $coa_psw
fi
if echo "$res" | grep -q "Error-Cause = Missing-Attribute"; then
echo "User-Name=\"$ip\"" | radclient -x $nas_ip:$coa_port disconnect $coa_psw
echo "User-Name=\"$login\"" | radclient -x $nas_ip:$coa_port disconnect $coa_psw
ret=252
fi
set -x
return $ret
}
LOG(){
echo "$@"
}
function user_add (){
:
}
function user_del (){
user_disconnect
}
function user_disconnect (){
echo "Acct-Session-Id=\"$acct_session_id\"" | __radclient disconnect
echo "User-Name=\"$ip\"" | __radclient disconnect
echo "User-Name=\"$login\"" | __radclient disconnect
}
function user_accept (){
echo "Acct-Session-Id=\"$acct_session_id\",Forward-Policy=\"in:FWPOL_ACCEPT\"" | __radclient coa
}
function user_drop (){
echo "Acct-Session-Id=\"$acct_session_id\",HTTP-Redirect-Profile-Name=\"CARBON_URL_BLOCKED\",Forward-Policy=\"in:FWPOL_BLOCKED_REDIRECT\"" | __radclient coa
}
function user_redirect (){
echo "Acct-Session-Id=\"$acct_session_id\",HTTP-Redirect-Profile-Name=\"CARBON_URL_NEGBAL\",Forward-Policy=\"in:FWPOL_NEGBAL_REDIRECT\"" | __radclient coa
}
function user_redirect_cancel (){
echo "Acct-Session-Id=\"$acct_session_id\",Forward-Policy=\"in:FWPOL_ACCEPT\"" | __radclient coa
}
function user_rate_set (){
echo "Acct-Session-Id=\"$acct_session_id\",Deactivate-Service-Name=\"SERVICE_INET\",Service-Name=\"SERVICE_INET\",Service-Action=\"0\",Service-Parameter=\"Rate-Inet-in=$ceil_in Burst-Inet-in=${ceil_in}00 ExBurst-Inet-in=${ceil_in}00 Rate-Inet-out=$ceil_out Burst-Inet-out=${ceil_out}00 ExBurst-Inet-out=${ceil_out}00\"" | __radclient coa
}
function user_rate_set_cancel (){
:
}
function user_event_before(){
:
}
function user_event_after(){
:
}
rad_acc_stop(){
:
}
user_info(){
echo '<pre>' > /tmp/${user_id}_user_info.new
echo '<span style="font-size: 9px">' >> /tmp/${user_id}_user_info.new
( . $EVENT_HANDLERS_DIR/${NAS_SCRIPT_NAME%.sh}.d/user_info ) >> /tmp/${user_id}_user_info.new || true
echo '</span>' >> /tmp/${user_id}_user_info.new
echo '</pre>' >> /tmp/${user_id}_user_info.new
mv -f /tmp/${user_id}_user_info.new /tmp/${user_id}_user_info
chown apache:apache /tmp/${user_id}_user_info
}
users_from_nas() {
# todo настройка периодической синхронизации с оборудованием.
# рекомендуется настраивать через 2 мес использования
return 0
local SYNCDIR="/var/lib/event/sync/$nas_ip"
mkdir -p $SYNCDIR
__xge_ssh_send xgesh show list xge_blocked_list | grep '^[0-9].*' > $SYNCDIR/blocked_list.nas
__xge_ssh_send xgesh show list xge_negbal_list | grep '^[0-9].*' > $SYNCDIR/negbal_list.nas
__xge_ssh_send xgesh show list xge_auth_list | grep '^[0-9].*' > $SYNCDIR/auth_list.nas
}
send_cmd() {
ip=$1
cmd=user_${2}
set -x
echo "env $env_str"
$cmd
set +x
}
main() {
. /usr/local/bin/user_env $ip
. ./main.ini
abonent_log_dir="/var/log/abonents/${abonent_id}/"
mkdir -p "$abonent_log_dir"
PS4=" \D{%Y-%m-%d %T} ssh ${SSH_CLIENT%% *} $HOSTNAME rtsh session "$@"[$$]: "
echo '' >> "${abonent_log_dir}/rtsh_${user_id}.log"
send_cmd "$@" 2>&1 | tee -a "${abonent_log_dir}/rtsh_${user_id}.log"
}
bin_session=${BASH_SOURCE:-/var/lib/event/bin/redback.sh}
ubin_session="${bin_session
[ -f "$ubin_session" ] && source "${ubin_session}"
# ÐÏËÁ ×ÒÅÍÅÎÎÏ
if [ "${is_daemon:--}" != 1 ]; then
main "$@"
exit $?
fi
oss_pathname=${EVENT_HANDLERS_DIR%/*} #todo export from daemon
. $oss_pathname/main.ini