如何从RADIUS服务器读取返回的参数

时间:2012-01-17 13:11:01

标签: scripting tcl cisco ivr cisco-ios

我已将Cisco语音网关配置为在Windows Server 2003上使用Cisco ACS。同时,我通过与MSSQL服务器的ODBC连接配置了外部数据库。如TCLIVR文档中所述,我必须在名为CSNTAuthUserPap的Mirosoft SQL服务器上使用存储过程来响应来自语音网关的授权请求。存储过程具有以下格式:

  

CREATE PROCEDURE [dbo]。[CSNTAuthUserPap]

     

@username varchar(64),@ pass varchar(255)

     

AS SET NOCOUNT ON

     

如果存在(

     

SELECT username FROM users WHERE username = @username AND   Returnparam = @pass)

     

SELECT 0,'1','1','No Error'

     

ELSE

     

SELECT 3,0,'odbc','ODBC Authen Error'

我的问题是关于读取返回ACS服务器的参数。返回的记录具有以下格式:

  1. 返回结果:0表示auth成功,1至4表示auth unsucessfull
  2. 授权组号
  3. 帐户信息
  4. 错误字符串
  5.   

    如何在我的TCL代码中阅读ACS返回的帐户信息?

1 个答案:

答案 0 :(得分:0)

我找到了。 答案在于AVPairs和创建自定义avpairs。我必须为从radius服务器返回的每个组指定avpair,并在TCL代码中读取它们,如下所示:

    if { [infotag get aaa_avpair_exists h323-ivr-in] } {
        set CustomerStatus [infotag get aaa_avpair h323-ivr-in]
foreach pairs [split $CustomerStatus]  {
                           set value_list [split $pairs :]
                           set key [lindex $value_list 0]
                           set value [lindex $value_list 1]
                           if { $key == "contractType" } {
                                set contractType $value
                           } 
                   }