urfaclient автоматически выдать ИП

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

urfaclient автоматически выдать ИП

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

Кто даст идею, как урфаклиентом при присвоении тарифа и услуги автоматически выдать свободный IP адрес из присвоенной дому зоны?

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

Re: urfaclient автоматически выдать ИП

Сообщение Magnum72 »

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

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

rpcf_get_free_ips_for_house

Denis Samsonov
Сообщения: 68
Зарегистрирован: Сб май 13, 2006 10:11

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

а если SQL запросом выполнить? есть возможность?

очень не нравится что в ответе функции даются все прописанные дом дом IP зоны. как-бы выдать первую из них...

<call function="rpcf_get_free_ips_for_house">
<output>
<integer name="ips_size" value="3"/>
<array name="i">
<item>
<ip_address name="ips_ip" value="10.249.16.16"/>
<string name="zone_name" value="Local &#x411;&#x43E;&#x433;&#x430;&#x442;-51.1"/>
</item>
<item>
<ip_address name="ips_ip" value="xxx.xxx.xxx.87"/>
<string name="zone_name" value="&#x412;&#x43D;&#x435;&#x448;&#x43D;&#x438;&#x435; IP (&#x411;&#x435;&#x437;&#x412;&#x41F;&#x41D;88)"/>
</item>
<item>
<ip_address name="ips_ip" value="10.88.51.21"/>
<string name="zone_name" value="Local &#x411;&#x43E;&#x433;&#x430;&#x442;-51.1"/>
</item>
</array>
<string name="error" value=""/>
</output>
</call>

P.S. Сорри, не програмер.. приходится во всем разбираться походу разработки ((

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

Сообщение Magnum72 »

Denis Samsonov писал(а):а если SQL запросом выполнить? есть возможность?

очень не нравится что в ответе функции даются все прописанные дом дом IP зоны. как-бы выдать первую из них...

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

  <call function="rpcf_get_free_ips_for_house">
    <output>
      <integer name="ips_size" value="3"/>
      <array name="i">
        <item>
          <ip_address name="ips_ip" value="10.249.16.16"/>
          <string name="zone_name" value="Local &#x411;&#x43E;&#x433;&#x430;&#x442;-51.1"/>
        </item>
        <item>
          <ip_address name="ips_ip" value="xxx.xxx.xxx.87"/>
          <string name="zone_name" value="&#x412;&#x43D;&#x435;&#x448;&#x43D;&#x438;&#x435; IP &#40;&#x411;&#x435;&#x437;&#x412;&#x41F;&#x41D;88&#41;"/>
        </item>
        <item>
          <ip_address name="ips_ip" value="10.88.51.21"/>
          <string name="zone_name" value="Local &#x411;&#x43E;&#x433;&#x430;&#x442;-51.1"/>
        </item>
      </array>
      <string name="error" value=""/>
    </output>
  </call>
P.S. Сорри, не програмер.. приходится во всем разбираться походу разработки ((
Во первых: А зачем ты дому навесил три зоны? У меня например две :) Внешние ипы (в зоне перечислены все внешние подсетки) и серые (сеть размера /24 на несколько домов) поэтому подключая пользователя я просто беру каждый отданный скриптом ип и добавляю пользователю.

Во вторых если те не принципиально какой из этих ипов отдавать пользователю:

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

  <call function="rpcf_get_free_ips_for_house">
  <set src="ips_ip" src_index="1" dst="ips_ip_tmp"/>

Denis Samsonov
Сообщения: 68
Зарегистрирован: Сб май 13, 2006 10:11

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

Magnum72 писал(а): Во первых: А зачем ты дому навесил три зоны? У меня например две :) Внешние ипы (в зоне перечислены все внешние подсетки) и серые (сеть размера /24 на несколько домов) поэтому подключая пользователя я просто беру каждый отданный скриптом ип и добавляю пользователю.

Во вторых если те не принципиально какой из этих ипов отдавать пользователю:

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

  <call function="rpcf_get_free_ips_for_house">
  <set src="ips_ip" src_index="1" dst="ips_ip_tmp"/>
Спасибо, помогло)
дык. зона 1 - внутренние ипы, зона 2 - внешники, зона 3... так сложилось) не будет ее на этом доме скоро)

Denis Samsonov
Сообщения: 68
Зарегистрирован: Сб май 13, 2006 10:11

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

Кстати, а есть возможность urfa клиентом сделать запись на каком свиче и порту сидит пользователь? в api.xml не нашел. или без UPDATE в бд не обойтись?

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

Сообщение Magnum72 »

Denis Samsonov писал(а):Кстати, а есть возможность urfa клиентом сделать запись на каком свиче и порту сидит пользователь? в api.xml не нашел. или без UPDATE в бд не обойтись?

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

  <function name="rpcf_save_user_othersets" id="0x9022">
    <input>
      <integer name="user_id" />
      <integer name="count" />
      <for name="i" from="0" count="count">
        <integer name="type" array_index="i" />
        <if variable="type" value="1" condition="eq">
          <integer name="id"/>
          <integer name="port" />
        </if>
        <if variable="type" value="3" condition="eq">
          <integer name="currency_id"/>
        </if>
      </for>
    </input>
    <output/>
  </function>

Denis Samsonov
Сообщения: 68
Зарегистрирован: Сб май 13, 2006 10:11

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

угу. уже чуть позже нашел
cat edit_swport.xml

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

<?xml version="1.0"?>
<urfa>
    <call function="rpcf_save_user_othersets">
        <parameter name="user_id" comment="user id"/>
        <parameter name="id" comment="sw id"/>
        <parameter name="port" comment="sw_port"/>
    </call>
</urfa>
остается только понять что в параметре count должно быть для достижения цели?)

J.C.
Сообщения: 2
Зарегистрирован: Пн авг 08, 2011 09:34
Откуда: Chelyabinsk

Сообщение J.C. »

Не стал создавать новую тему, спрошу здесь…

А есть какая-то возможность получить из биллинга не отдельный IP, а подсеть из IP-группы?

Например, функция rpcf_get_free_ips_for_house возвращает несколько IP-адресов с маской «255.255.255.255»
а мне нужно выдать клиенту подсеть (минимум /30), есть какая-то возможность «легально» получить набор свободных /30 ?
Или придётся самому писать функцию и лезть в MySQL ?

Ответить