кто подскажет?

Технические вопросы по UTM 5.0
Ответить
Denis Samsonov
Сообщения: 68
Зарегистрирован: Сб май 13, 2006 10:11

кто подскажет?

Сообщение Denis Samsonov »

кто подскажет корректный скрипт к урфа клиенту для смены mac адреса пользователя?

Аватара пользователя
Magnum72
Сообщения: 1947
Зарегистрирован: Чт сен 22, 2005 06:54
Контактная информация:

Re: кто подскажет?

Сообщение Magnum72 »

Denis Samsonov писал(а):кто подскажет корректный скрипт к урфа клиенту для смены mac адреса пользователя?
Нате, несколько дней мучался, никогда бы не подумал что операция редактирования IP группы настолько сложная. Просто говнокод какой то.

Код: Выделить всё

-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>

Ответить