кто подскажет?
-
- Сообщения: 68
- Зарегистрирован: Сб май 13, 2006 10:11
кто подскажет?
кто подскажет корректный скрипт к урфа клиенту для смены mac адреса пользователя?
Re: кто подскажет?
Нате, несколько дней мучался, никогда бы не подумал что операция редактирования IP группы настолько сложная. Просто говнокод какой то.Denis Samsonov писал(а):кто подскажет корректный скрипт к урфа клиенту для смены mac адреса пользователя?
Код: Выделить всё
-a olympus_change_ipgroup -user_id 37 -change_account 0 -ip_address_old 217.76.176.245 -login_new testers1 -cid_new 54443 -mac_new 333
-user_id 37 - Подопытный пользователь
-change_account 0 - это к смене IP не относится, сделано для того чтобы менять логин на статистику, одновременно со сменой логина в IP связке (0 - не менять, 1 - менять)
-ip_address_old 217.76.176.245 - обязательный параметр, по нему ищем нужную IP группу среди IP групп подключенных к пользователю
-login_new testers1 - необязательный параметр, толкьо если надо изменить
-cid_new 54443 - необязательный параметр, толкьо если надо изменить
-mac_new 333 - необязательный параметр, толкьо если надо изменить
Код: Выделить всё
<?xml version="1.0"?>
<urfa>
<!-- Dlia poluchenia info polzovatelia -->
<parameter name="user_id"/>
<parameter name="account_id"/>
<parameter name="slink_id"/>
<parameter name="service_type"/>
<set dst="return_type" value="integer_return"/>
<!-- Parametri dopustimie k izmeneniu -->
<parameter name="change_account" value="0"/>
<parameter name="ip_address_old" value=""/>
<parameter name="login_new" value=""/>
<parameter name="cid_new" value="!unset"/>
<parameter name="mac_new" value="!unset"/>
<!-- Poluchaem informatciu o polzovatele -->
<call function="rpcf_get_userinfo" output="0"/>
<set src="basic_account" dst="account_id"/>
<call function="rpcf_get_accountinfo"/>
<set dst="is_blocked" value="256"/>
<call function="rpcf_save_account"/>
<!-- Vnosim izmenenia s proverkoy i soxranaem -->
<if variable="change_account" value="1" condition="eq">
<set src="login_new" dst="login"/>
<call function="rpcf_add_user" output="0"/>
</if>
<!-- Search and change login in ip groups -->
<call function="rpcf_get_all_services_for_user" output="0"/>
<!-- Perebiraem vse slink_id s tipom iptraffic -->
<for name="i" from="0" count="slink_id_count">
<set src="service_type_array" src_index="i" dst="service_type"/>
<if variable="service_type" value="3" condition="eq">
<set src="slink_id_array" src_index="i" dst="slink_id"/>
<call function="rpcf_get_iptraffic_service_link" output="0"/>
<!-- Ishem nujniy ip v sviazke -->
<for name="j" from="0" count="ip_groups_count">
<set src="ip_address" src_index="j" dst="ip_address_tmp2"/>
<if variable="ip_address_tmp2" value="ip_address_old" condition="eq">
<set src="ip_address" src_index="j" dst="ip_address_tmp"/>
<set src="mask" src_index="j" dst="mask_tmp"/>
<set src="iptraffic_login" src_index="j" dst="iptraffic_login_tmp"/>
<set src="mac" src_index="j" dst="mac_tmp"/>
<set src="iptraffic_password" src_index="j" dst="iptraffic_password_tmp"/>
<set src="iptraffic_allowed_cid" src_index="j" dst="iptraffic_allowed_cid_tmp"/>
<set src="ip_not_vpn" src_index="j" dst="ip_not_vpn_tmp"/>
<set src="dont_use_fw" src_index="j" dst="dont_use_fw_tmp"/>
<set src="router_id" src_index="j" dst="router_id_tmp"/>
</if>
</for>
<remove name="ip_address"/>
<remove name="mask"/>
<remove name="mac"/>
<remove name="iptraffic_login"/>
<remove name="iptraffic_password"/>
<remove name="iptraffic_allowed_cid"/>
<remove name="ip_not_vpn"/>
<remove name="dont_use_fw"/>
<remove name="router_id"/>
<remove name="tclass_id"/>
<remove name="tclass_name"/>
<remove name="quota"/>
<if variable="ip_address_tmp" value="ip_address_old" condition="eq">
<set src="ip_address_tmp" dst="ip_address"/>
<set src="mask_tmp" dst="mask"/>
<call function="rpcf_delete_from_ipgroup" output="0"/>
<call function="rpcf_get_iptraffic_service_link" output="0"/>
<set src="ip_address_tmp" dst="ip_address"/>
<set src="mac_tmp" dst="mac"/>
<set src="iptraffic_login_tmp" dst="iptraffic_login"/>
<set src="iptraffic_password_tmp" dst="iptraffic_password"/>
<set src="iptraffic_allowed_cid_tmp" dst="iptraffic_allowed_cid"/>
<set src="ip_not_vpn_tmp" dst="ip_not_vpn"/>
<set src="dont_use_fw_tmp" dst="dont_use_fw"/>
<set src="router_id_tmp" dst="router_id"/>
<if variable="login_new" value="" condition="ne">
<set src="login_new" dst="iptraffic_login"/>
</if>
<if variable="cid_new" value="!unset" condition="ne">
<set src="cid_new" dst="iptraffic_allowed_cid"/>
</if>
<if variable="mac_new" value="!unset" condition="ne">
<set src="mac_new" dst="mac"/>
</if>
<call function="rpcf_add_service_to_user" output="0"/>
</if>
</if>
</for>
<call function="rpcf_get_accountinfo"/>
<set dst="is_blocked" value="0"/>
<call function="rpcf_save_account"/>
</urfa>