... {code} #!/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//bin/ubin}.hook" [ -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 {code}
|