• <strike id="fdgpu"><input id="fdgpu"></input></strike>
    <label id="fdgpu"></label>
    <s id="fdgpu"><code id="fdgpu"></code></s>

  • <label id="fdgpu"></label>
  • <span id="fdgpu"><u id="fdgpu"></u></span>

    <s id="fdgpu"><sub id="fdgpu"></sub></s>
     首頁(yè) > 新聞 > 專家觀點(diǎn) >

    《FreeSWITCH: VoIP實(shí)戰(zhàn)》:萬(wàn)能FreeSWITCH directory腳本

    2013-01-24 09:32:04   作者:杜金房    來(lái)源:FreeSWITCH   評(píng)論:0  點(diǎn)擊:


    好多人問(wèn)我如何使用 mod_xml_curl 進(jìn)行用戶驗(yàn)證,每次回答指導(dǎo)都很費(fèi)勁。今天用 PHP 寫(xiě)了一個(gè)萬(wàn)能腳本,希望對(duì)大家有幫助。

    FreeSWITCH 默認(rèn)使用靜態(tài)的 XML 文件配置用戶,但如果需要?jiǎng)討B(tài)認(rèn)證,就需要跟數(shù)據(jù)庫(kù)關(guān)聯(lián)。FreeSWITCH 通過(guò)使用 mod_xml_curl 模塊完美解決了這個(gè)問(wèn)題。實(shí)現(xiàn)思路是你自己提供一個(gè) WEB 服務(wù)器,當(dāng)有用戶注冊(cè)(或 INVITE)請(qǐng)求時(shí),F(xiàn)reeSWITCH 向你的WEB服務(wù)器發(fā)送請(qǐng)求,你查詢數(shù)據(jù)庫(kù)生成一個(gè)標(biāo)準(zhǔn)的XML文件,F(xiàn)reeSWITCH 進(jìn)而通過(guò)這一文件對(duì)用戶進(jìn)行認(rèn)證。

    好了,別的不多說(shuō)了,看腳本(用PHP實(shí)現(xiàn)):

    <?php $user = $POST['user']; $domain = $POST['domain']; $context = $_POST['Hunt-Context']; $password = "1234"; ?>

    <domain name="<?php echo $domain;?>">
      <params>
        <param name="dial-string" value="{presence_id=${dialed_user}@${dialed_domain}}${sofia_contact(${dialed_user}@${dialed_domain})}"/>
      </params>
      <groups>
        <group name="default">
          <users>
            <user id="<?php echo $user; ?>">
              <params>
                <param name="password" value="<?php echo $password; ?>"/>
                <param name="vm-password" value="<?php echo $password; ?>"/>
                </params>
              <variables>
                <variable name="toll_allow" value="domestic,international,local"/>
                <variable name="accountcode" value="<?php echo $user; ?>"/>
                <variable name="user_context" value="<?php echo $context ?>"/>
                <variable name="effective_caller_id_name" value="FreeSWITCH-CN"/>
                <variable name="effective_caller_id_number" value="<?php echo $user;?>"/>
                <!-- <variable name="outbound_caller_id_name" value="$${outbound_caller_name}"/> -->
                <!-- <variable name="outbound_caller_id_number" value="$${outbound_caller_id}"/> -->
                <variable name="callgroup" value="default"/>
                <variable name="sip-force-contact" value="NDLB-connectile-dysfunction"/>
                <variable name="x-powered-by" value="http://www.freeswitch.org.cn"/>
              </variables>
            </user>
          </users>
        </group>
      </groups>
    </domain>

    之所以稱這是萬(wàn)能腳本,是因?yàn)樗静徊樵償?shù)據(jù)庫(kù),任何注冊(cè)請(qǐng)求只要密碼是 1234 就都能通過(guò)注冊(cè)。

    好了,把上述PHP文件放到你的服務(wù)器上,確保它能正確執(zhí)行。

    接下來(lái)配置你的 FreeSWITCH, conf/autoload_configs/xml_curl.conf.xml

    <binding name="directory">
      <param name="gateway-url" value="http://localhost/~seven/freeswitch/directory.php" bindings="directory"/>
    </binding>

    然后

    reloadxml
    reload mod_xml_curl

    拿起你的SIP電話注冊(cè)試試吧,別忘了萬(wàn)能密碼是 1234。

    然后怎么辦?把最開(kāi)頭的幾行換能你的業(yè)務(wù)邏輯(查詢數(shù)據(jù)庫(kù)等),就實(shí)現(xiàn)你自己的認(rèn)證了。

    上面的 php 腳本也放到 github 上了:https://gist.github.com/1086122

    調(diào)試:

    load mod_xml_curl 錯(cuò)誤
    mod_xml_curl 默認(rèn)是不編譯的,到你的源代碼目錄中執(zhí)行 make mod_xml_curl-install

    分享到: 收藏

    專題

    亚洲精品网站在线观看不卡无广告,国产a不卡片精品免费观看,欧美亚洲一区二区三区在线,国产一区二区三区日韩 嘉定区| 且末县| 中江县| 红桥区| 玉田县| 普安县| 巍山| 长沙县| 宁化县| 文安县| 灌南县| 昭通市| 大石桥市| 石家庄市| 忻州市| 茌平县| 栾川县| 慈溪市| 马尔康县| 佛坪县| 肇东市| 嵊州市| 龙南县| 呈贡县| 敦化市| 两当县| 皋兰县| 寿光市| 通海县| 娱乐| 林西县| 噶尔县| 莱芜市| 桂林市| 平陆县| 灵武市| 新蔡县| 白朗县| 榆社县| 瓦房店市| 枣庄市| http://444 http://444 http://444 http://444 http://444 http://444