Просмотр Исходного

h3. Пример стандартного скрипта, который создается автоматически.

{code}
#!/bin/bash

__coa_send() {
echo "$@"
return 0
echo "$@" | radclient -x $nas_ip coa $coa_psw &>$TMPDIR/radclient.$$
ret=$?
# exit 254 отложить передачу, todo возможно и другие схожие busy context и тд
grep "no response from server" $TMPDIR/radclient.$$ && exit 254
cat $TMPDIR/radclient.$$
return $ret
}

# Приходит при создании пользователя в биллинге
# И при смене критичных параметров(ip, vlan, port etc.)(с новыми значениями)
# Обычно используется для ip авторизации
user_add() {
user_accept
}

# Приходит при удалении пользователя из биллинга
# И при смене критичных параметров(ip, vlan, port etc.)(со старыми значениями)
# Обычно используется для ВСЕХ видов авторизации
user_del() {
__coa_send session remove $ip
}

# Приходит после авторизации пользователя
# Рекомендуется политику пользователя передавать в радиус replay параметрах, А НЕ В ЭТОМ СОБЫТИИ,
# т.к. у любого оборудования есть ограничения на колличество отправляемых команд в секунду
user_accept() {
__coa_send ip forward_allow add $ip
__coa_send ip snat add $ip $snatip
}

# Приходит при отключении пользователя
# Рекомендуется избегать удаления пользователя из списков, для экономии очереди команд на оборудовании
user_drop() {
__coa_send ip forward_allow del $ip
__coa_send ip snat del $ip
}

# Приходит при превышении лимита, либо при отключении услуги
user_redirect() {
__coa_send ip redirect add $ip
}

# Приходит после оплаты, если хватило денег на включение услуги
user_redirect_cancel() {
__coa_send ip redirect del $ip
}

# Приходит при изменении скорости подключения
# Или включения\выключении услуги(турбокнопка, ночной форсаж и т.д.)
user_rate_set() {
__coa_send policy set $ip in $rate_in $ceil_in $burst_in out $rate_out $ceil_out $burst_out
}

# Приходит при отключении пользователя администратором
# либо при добровольной блокировке.
user_disconnect() {
__coa_send session disconnect $ip
}

# Приходит при нажатии кнопки info в учетной записи
user_info() {
__coa_send session info $ip
}

# Приходит при нажатии кнопки тест в учетной записи
user_test() {
__coa_send session test $ip
}

# Хук - вызывается перед каждым событием
user_event_before() {
:
}

# Хук - вызывается после каждого события
user_event_after() {
:
}

# Приходит при добавлении услуги абоненту
usluga_add(){
:
}

# Приходит при удалении услуги у абонента
usluga_del(){
:
}

# Приходит при активации услуги
usluga_activated(){
:
}

# Приходит при деактивации услуги
usluga_deactivated(){
:
}

{code}

h3. Доступные переменные

\- abonent_id
\- id(user_id)
\- ip
\- host_ip
\- logged
\- deleted
\- enabled
\- acct_session_id

\- activate_string
\- auth_type
\- balance
\- burst_in
\- burst_out
\- ceil_in
\- ceil_out
\- contract_number
\- deactivate_string
\- disabled_date
\- ius_secret
\- login
\- mac
\- nas_id
\- nas_ip
\- nas_type
\- rate_in
\- rate_out
\- switch_p_id
\- switch_id
\- switch_ip
\- switch_port
\- switch_vlan
\- sms
\- tarif_id
\- user_psw (Пароль в учетной записи)
Для того, чтобы пароль передавался в скрипт событий, необходимо выставить опцию "Передавать пароль в скрипт событий" в настройках Nas'a на вкладке Дополнительно

!user_psw.png|border=1!