Страница 1 из 2

Входящие от gateway с авторизацией по ip и логину/паролю

Добавлено: 18 сен 2013, 17:33
Indeec
Добрый день.
Кому нибудь удалось разобраться как freeswitch обрабатывает входящие вызовы от gateway?
На данный момент мне не удалось придумать ничего лучше чем разрешать входящие в apply-inbound-acl для всего sip профиля.
При этом не работают документированные фичи, такие как установка переменных для звонков пришедших от шлюза, да и проверить в диалплане с какого шлюза пришел звонок - становится сложно.
https://wiki.freeswitch.org/wiki/Clarif ... #Variables

Re: Входящие от gateway с авторизацией по ip и логину/паролю

Добавлено: 18 сен 2013, 17:50
Vlad1983
профиль шлюза покажите

Re: Входящие от gateway с авторизацией по ip и логину/паролю

Добавлено: 18 сен 2013, 18:11
Indeec
internal профиль в vanila конфиге, к примеру.
Вот выжимка баз коментариев

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

<profile name="internal">
  <aliases>
  </aliases>
  <gateways>
    <X-PRE-PROCESS cmd="include" data="internal/*.xml"/>
  </gateways>
  <domains>
    <domain name="all" alias="true" parse="false"/>
  </domains>
  <settings>
    <param name="debug" value="0"/>
    <param name="sip-trace" value="no"/>
    <param name="sip-capture" value="no"/>
    <param name="watchdog-enabled" value="no"/>
    <param name="watchdog-step-timeout" value="30000"/>
    <param name="watchdog-event-timeout" value="30000"/>
    <param name="log-auth-failures" value="false"/>
    <param name="forward-unsolicited-mwi-notify" value="false"/>
    <param name="rfc2833-pt" value="101"/>
    <param name="sip-port" value="$${internal_sip_port}"/>
    <param name="dialplan" value="XML"/>
    <param name="dtmf-duration" value="2000"/>
    <param name="inbound-codec-prefs" value="$${global_codec_prefs}"/>
    <param name="outbound-codec-prefs" value="$${global_codec_prefs}"/>
    <param name="rtp-timer-name" value="soft"/>
    <param name="rtp-ip" value="$${local_ip_v4}"/>
    <param name="sip-ip" value="$${local_ip_v4}"/>
    <param name="hold-music" value="$${hold_music}"/>
    <param name="apply-nat-acl" value="nat.auto"/>
    <param name="apply-inbound-acl" value="domains"/>
    <param name="local-network-acl" value="localnet.auto"/>
    <param name="record-path" value="$${recordings_dir}"/>
    <param name="record-template" value="${caller_id_number}.${target_domain}.${strftime(%Y-%m-%d-%H-%M-%S)}.wav"/>
    <param name="manage-presence" value="true"/>
    <param name="presence-hosts" value="$${domain},$${local_ip_v4}"/>
    <param name="presence-privacy" value="$${presence_privacy}"/>
    <param name="inbound-codec-negotiation" value="generous"/>
    <param name="tls" value="$${internal_ssl_enable}"/>
    <param name="tls-only" value="false"/>
    <param name="tls-bind-params" value="transport=tls"/>
    <param name="tls-sip-port" value="$${internal_tls_port}"/>
    <param name="tls-cert-dir" value="$${internal_ssl_dir}"/>
    <param name="tls-passphrase" value=""/>
    <param name="tls-verify-date" value="true"/>
    <param name="tls-verify-policy" value="none"/>
    <param name="tls-verify-depth" value="2"/>
    <param name="tls-verify-in-subjects" value=""/>
    <param name="tls-version" value="$${sip_tls_version}"/>
    <param name="inbound-late-negotiation" value="true"/>
    <param name="inbound-zrtp-passthru" value="true"/>
    <param name="nonce-ttl" value="60"/>
    <param name="auth-calls" value="$${internal_auth_calls}"/>
    <param name="inbound-reg-force-matching-username" value="true"/>
    <param name="auth-all-packets" value="false"/>
    <param name="ext-rtp-ip" value="auto-nat"/>
    <param name="ext-sip-ip" value="auto-nat"/>
    <param name="rtp-timeout-sec" value="300"/>
    <param name="rtp-hold-timeout-sec" value="1800"/>
    <param name="force-register-domain" value="$${domain}"/>
    <param name="force-subscription-domain" value="$${domain}"/>
    <param name="force-register-db-domain" value="$${domain}"/>
    <param name="challenge-realm" value="auto_from"/>
  </settings>
</profile>                                                                  

Re: Входящие от gateway с авторизацией по ip и логину/паролю

Добавлено: 18 сен 2013, 18:29
Vlad1983
сам конфиг шлюза тот что в internal/

Re: Входящие от gateway с авторизацией по ip и логину/паролю

Добавлено: 18 сен 2013, 18:33
Indeec
Вот:

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

<include>
  <gateway name="test">
    <param name="username" value="unused"/>
    <param name="realm" value="gatewayip"/>
    <param name="password" value="unused"/>
    <param name="register" value="false"/>
    <param name="caller-id-in-from" value="true"/>
    <param name="ping" value="25"/>
    <param name="from-domain" value="gatewayip"/>
    <variables>
       <variable name="call_direction"  value="incoming"  direction="inbound"/>
       <variable name="call_direction" value="outgoing" direction="outbound"/>
       <variable name="gateway_name"     value="test"/>
    </variables>
  </gateway>
</include>

Re: Входящие от gateway с авторизацией по ip и логину/паролю

Добавлено: 18 сен 2013, 19:00
Vlad1983
<param name="register" value="false"/>
такой шлюз обычно по acl заводят

если сделаете
<param name="register" value="true"/>
в заголовке Contact запросов REGISTER увидите подстроку "gw-test"
когда она содержится во входящих INVITE (не помню в каких именно заголовках, т.к. не держу таких шлюзов), тогда FS может определить что вызов пришел именно на этот шлюз

если встречный софтсвич поддерживает обратную авторизацию заводите шлюзы через directory пример https://wiki.freeswitch.org/wiki/XML_Us ... c_Gateways
там же и проверка по IP <user id="1000" cidr="12.34.56.78/32,20.0.0.0/8"> <!--ID is the sip username. CIDR is optional -- if specified, these IPs with automatically auth to this user-->
только в этом случае и получите по "ip и логину/паролю"

можно чекать по acl в диалплане http://wiki.freeswitch.org/wiki/Acl#check_acl
обычно так и делаю, если требуется четкое разделение

Re: Входящие от gateway с авторизацией по ip и логину/паролю

Добавлено: 18 сен 2013, 19:16
Indeec
Это всё понятно.
Тоесть всё-таки gateway в профиле применим только для исходящих звонков.
Для входящих с авторизацией по логину/паролю нужно заводить пользователя в directory. Для входящих с авторизацией по ip в apply-inbound-acl, и дальше уже в диалплане пытаться понять от куда звонок пришел.
И следовательно параметры установки переменных для входящих звонков в настройках gateway бесполезны.

Re: Входящие от gateway с авторизацией по ip и логину/паролю

Добавлено: 18 сен 2013, 20:50
Vlad1983
полезны только при <param name="register" value="true"/>
и то не со всех встречных софтсвичей это нормально работает

Re: Входящие от gateway с авторизацией по ip и логину/паролю

Добавлено: 19 сен 2013, 10:52
jugatsu
Так что надо сделать то?

Re: Входящие от gateway с авторизацией по ip и логину/паролю

Добавлено: 19 сен 2013, 11:13
Vlad1983
не знаю в чем ТС вообще проблему нашел

1. мы не регаемся
  • логину/паролю - тогда directory (можно выставить индивидуальные переменные в профиле шлюза)
  • логину/паролю + IP - directory c cidr (можно выставить индивидуальные переменные в профиле шлюза)
  • IP без разбора кто, например для входящих - по acl в профиле sofia
  • IP с разбором - acl в профиле и acl в диалплане (можно выставить индивидуальные переменные, но задавать их в диалплане)
2. Мы регаемся
  • IP без разбора кто - по acl в профиле sofia
  • IP с разбором - acl в профиле и acl в диалплане или по заголовкам содержащим "gw-" (можно выставить индивидуальные переменные в профиле шлюза)