
#!/bin/bash
- skip crab_syntax
TMPDIR=/tmp/$
mkdir -p $TMPDIR
trap __exit EXIT
__exit()
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|Error-Cause = 200" && ret=0
echo "$res" | grep -q "Error-Cause = Resources Unavailable" && ret=254
echo "$res" | grep -q "no response from server" && ret=254
if echo "$res" | grep -q "Error-Cause = Session-Context-Not-Found|Missing-Attribute"; then
echo -e "clear subscriber session username $login\nclear subscriber session username $ip"\
ssh_send -q -e "$telnet_enpassword" -t "$telnet_type" -u "$telnet_login" -p "$telnet_password" "$telnet_ip" --port "$
Unknown macro: {telnet_port}
" |
- Приходит при создании пользователя в биллинге
- И при смене критичных параметров(ip, vlan, port etc.)(с новыми значениями)
- Обычно/ используется для ip авторизации
user_add() {
:
}
- Приходит при удалении пользователя из биллинга
- И при смене критичных параметров(ip, vlan, port etc.)(со старыми значениями)
- Обычно используется для ВСЕХ видов авторизации
user_del()Unknown macro: { user_disconnect }
- Приходит после авторизации пользователя
- Рекомендуется политику пользователя передавать в радиус replay параметрах, А НЕ В ЭТОМ СОБЫТИИ,
- т.к. у любого оборудования есть ограничения на колличество отправляемых команд в секунду
user_accept() {
echo "Cisco-Account-Info=\"S$Unknown macro: {ip}:vrf-id=$
Unknown macro: {vrf}\",\
cisco-avpair+=\"subscriber:service-name=FWPOL_BLOCKED_TRUSTED\",\
cisco-avpair+=\"subscriber:command=deactivate-service\"" | __radclient coaecho "Cisco-Account-Info=\"S$
:vrf-id=$
Unknown macro: {vrf}\",\
cisco-avpair+=\"subscriber:service-name=FWPOL_BLOCKED_REDIRECT\",\
cisco-avpair+=\"subscriber:command=deactivate-service\"" | __radclient coaecho "Cisco-Account-Info=\"S$
Unknown macro: {ip}:vrf-id=$
\",\
cisco-avpair+=\"subscriber:service-name=FWPOL_ACCEPT\",\
cisco-avpair+=\"subscriber:command=activate-service\"" | __radclient coa
echo "Cisco-Account-Info=\"S$
:vrf-id=$
\",\
cisco-avpair+=\"subscriber:service-name=FWPOL_NOSHAPE\",\
cisco-avpair+=\"subscriber:command=activate-service\"" | __radclient coa
}
- Приходит при отключении пользователя
- Рекомендуется избегать удаления пользователя из списков, для экономии очереди команд на оборудовании
user_drop() {
echo "Cisco-Account-Info=\"S$
:vrf-id=$
\",\
cisco-avpair+=\"subscriber:service-name=FWPOL_ACCEPT\",\
cisco-avpair+=\"subscriber:command=deactivate-service\"" | __radclient coa
echo "Cisco-Account-Info=\"S$
:vrf-id=$
\",\
cisco-avpair+=\"subscriber:service-name=FWPOL_NOSHAPE\",\
cisco-avpair+=\"subscriber:command=deactivate-service\"" | __radclient coa
echo "Cisco-Account-Info=\"S$
:vrf-id=$
\",\
cisco-avpair+=\"subscriber:service-name=FWPOL_BLOCKED_TRUSTED\",\
cisco-avpair+=\"subscriber:command=activate-service\"" | __radclient coa
echo "Cisco-Account-Info=\"S$
:vrf-id=$
\",\
cisco-avpair+=\"subscriber:service-name=FWPOL_BLOCKED_REDIRECT\",\
cisco-avpair+=\"subscriber:command=activate-service\"" | __radclient coa
}
- Приходит при превышении лимита, либо при отключении услуги
user_redirect() {
echo "Cisco-Account-Info=\"S$Unknown macro: {ip}:vrf-id=$
\",\
cisco-avpair+=\"subscriber:service-name=FWPOL_ACCEPT\",\
cisco-avpair+=\"subscriber:command=deactivate-service\"" | __radclient coa
echo "Cisco-Account-Info=\"S$
:vrf-id=$
\",\
cisco-avpair+=\"subscriber:service-name=FWPOL_NOSHAPE\",\
cisco-avpair+=\"subscriber:command=deactivate-service\"" | __radclient coa
echo "Cisco-Account-Info=\"S$
:vrf-id=$
\",\
cisco-avpair+=\"subscriber:service-name=FWPOL_NEGBAL_REDIRECT\",\
cisco-avpair+=\"subscriber:command=activate-service\"" | __radclient coa
echo "Cisco-Account-Info=\"S$
:vrf-id=$
\",\
cisco-avpair+=\"subscriber:service-name=FWPOL_NEGBAL_TRUSTED\",\
cisco-avpair+=\"subscriber:command=activate-service\"" | __radclient coa
}
- Приходит после оплаты, если хватило денег на включение услуги
user_redirect_cancel() {
echo "Cisco-Account-Info=\"S$Unknown macro: {ip}:vrf-id=$
Unknown macro: {vrf}\",\
cisco-avpair+=\"subscriber:service-name=FWPOL_NEGBAL_TRUSTED\",\
cisco-avpair+=\"subscriber:command=deactivate-service\"" | __radclient coaecho "Cisco-Account-Info=\"S$
:vrf-id=$
Unknown macro: {vrf}\",\
cisco-avpair+=\"subscriber:service-name=FWPOL_NEGBAL_REDIRECT\",\
cisco-avpair+=\"subscriber:command=deactivate-service\"" | __radclient coaecho "Cisco-Account-Info=\"S$
Unknown macro: {ip}:vrf-id=$
\",\
cisco-avpair+=\"subscriber:service-name=FWPOL_ACCEPT\",\
cisco-avpair+=\"subscriber:command=activate-service\"" | __radclient coa
echo "Cisco-Account-Info=\"S$
:vrf-id=$
\",\
cisco-avpair+=\"subscriber:service-name=FWPOL_NOSHAPE\",\
cisco-avpair+=\"subscriber:command=activate-service\"" | __radclient coa
}
- Приходит при изменении скорости подключения
- Или включения\выключении услуги(турбокнопка, ночной форсаж и т.д.)
user_rate_set() {
echo "Cisco-Account-Info=\"S$
:vrf-id=$
\",\
Cisco-Account-Info+=\"QU;$
000;D;$
000\"" | __radclient coa
}
- Приходит при отключении пользователя администратором
user_disconnect() { - на самом деле User-Name cisco игнорирует, но он должен быть и быть не пустым иначе ошибка
echo "User-Name=\"$login\",Cisco-Account-Info=\"S$Unknown macro: {ip}:vrf-id=$
\",\
cisco-avpair+=\"subscriber:command=account-logoff\"" | __radclient coa
#TODO_OSV echo "User-name=\"1\",Cisco-Account-Info=\"S10.255.0.2\",cisco-avpair+=\"subscriber:command=account-logoff\"" | radclient 185.8.158.73:3799 coa servicemode
}
- Приходит при нажатии кнопки info в учетной записи
user_info() {
echo '<pre>' > /tmp/$Unknown macro: {user_id}_user_info.new
- echo "User-Name=\"$login\",Cisco-Account-Info=\"S$
Unknown macro: {ip}
:vrf-id=$
Unknown macro: {vrf}\",\
- cisco-avpair+=\"subscriber:command=profile-status-query\"" | __radclient coa &>>/tmp/$
_user_info.new
( . $EVENT_HANDLERS_DIR/$Unknown macro: {NAS_SCRIPT_NAME%.sh}.d/user_info ) >> /tmp/$
Unknown macro: {user_id}_user_info.new || true
echo '</pre>' >> /tmp/$_user_info.new
- echo "User-Name=\"$login\",Cisco-Account-Info=\"S$
mv -f /tmp/$
_user_info.new /tmp/$
_user_info
chown apache:apache /tmp/$
_user_info
[ "$
" != 1 ] && cat /tmp/$
_user_info
}
- Приходит при нажатии кнопки тест в учетной записи
user_test() {
echo > "/tmp/$Unknown macro: {user_id}_user_info"
echo "User-Name=\"$login\",Cisco-Account-Info=\"S$Unknown macro: {ip}:vrf-id=$
Unknown macro: {vrf}\",cisco-avpair+=\"subscriber:command=profile-status-query\"" | __radclient coa &>>"/tmp/$
_user_info"
cat /tmp/$Unknown macro: {user_id}_user_info
}- Хук - вызывается перед каждым событием
user_event_before() {
:
}
- Хук - вызывается после каждого события
user_event_after() {
:
}
- Приходит при добавлении услуги абоненту
usluga_add(){ - Доступ к социально значимым ресурсам для физиков
if [ "$usluga_system_type_id" == "15" ]; then
echo "Cisco-Account-Info=\"S$Unknown macro: {ip}:vrf-id=$
Unknown macro: {vrf}\",\
Cisco-Account-Info=\"AFWPOL_FREE_INTERNET\"" | __radclient coa
fi
}- Приходит при удалении услуги у абонента
usluga_del(){ - Отмена доступа к социально значимым ресурсам для физиков
if [ "$usluga_system_type_id" == "15" ]; then
echo "Cisco-Account-Info=\"S$
:vrf-id=$
Unknown macro: {vrf}\",\
cisco-avpair+=\"subscriber:service-name=FWPOL_FREE_INTERNET\",\
cisco-avpair+=\"subscriber:command=deactivate-service\"" | __radclient coa
fi
} - Приходит при удалении услуги у абонента
users_from_nas(){
:
}- Приходит при активации услуги
usluga_activated(){
:
}
- Приходит при деактивации услуги
usluga_deactivated(){
:
}
send_cmd() {
ip=$1
cmd=user_$Unknown macro: {2}set -x
echo "env $env_str"
$cmd
set +x
}main() {
. /usr/local/bin/user_env $ip
. $oss_pathname/main.ini[ -z "$vrf" ] && vrf="global"
abonent_log_dir="/var/log/abonents/$Unknown macro: {abonent_id}/"
mkdir -p "$abonent_log_dir"PS4=" \D
Unknown macro: {%Y-%m-%d %T}ssh $
Unknown macro: {SSH_CLIENT%% *}$HOSTNAME rtsh session "$@"[$$]: "
echo '' >> "$
Unknown macro: {abonent_log_dir}/rtsh_$
.log"
send_cmd "$@" 2>&1 | tee -a "$Unknown macro: {abonent_log_dir}/rtsh_$
Unknown macro: {user_id}.log"
} - Хук - вызывается перед каждым событием
-
-
- Все функции должны быть определены до подключения ubin_session
bin_session=$BASH_SOURCE
ubin_session="$Unknown macro: {bin_session//bin/ubin}.hook"
[ -f "$ubin_session" ] && source "$Unknown macro: {ubin_session}"
- Все функции должны быть определены до подключения ubin_session
-
- пока временно
if [ "$Unknown macro: {is_daemon}" != 1 ]; then
main "$@"
exit $?
fi
oss_pathname=$Unknown macro: {EVENT_HANDLERS_DIR%/*}#todo export from daemon
. $oss_pathname/main.ini