Hi,
I want to ask someone to explain to me the syntax below. This syntax is a TCL script. And I want to modify it in order for it to work with my RADIUS Billing Server.
Code:
proc do_get_card_number {} {
global state
global account
global pin
global promptFlag
global count
global accountLen
global pinLen
global retryCnt
global prefix
global param1
global param2
set cardLen [expr $accountLen + $pinLen]
set param1(maxDigits) $cardLen
if {$count == 0} {
set ev [playPrompt param1 info [set prefix]_enter_card_num.au]
} else {
switch -regexp $promptFlag {
{1} {set ev [playPrompt param1 info [set prefix]_invalid_digits.au]}
{2} {set ev [playPrompt param1 info [set prefix]_auth_fail.au]}
{3} {set ev [playPrompt param1 info [set prefix]_no_card_entered.au]}
}
}
switch -regexp $ev {
{collect success} {set number $info(digits)
set numberlen [string length $number]
if {$numberlen == $cardLen} {
set account [ string range $number 0 [expr $accountLen -1]]
set pin [ string range $number $accountLen [expr $cardLen -1]]
set state do_first_authorize
} else {
incr count
set promptFlag 1
if {$count < $retryCnt} {
set state do_get_card_number
} else {
# no more tries
set ev [playPrompt param2 info [set prefix]_final.au]
set state end
}
}
}
{collect aborted} {set state do_get_card_number}
{collect fail} -
{collect timeout} {incr count
set promptFlag 3
if {$count < $retryCnt} {
set state do_get_card_number
} else {
set ev [playPrompt param2 info [set prefix]_final.au]
set state end
}
}
default {set state end}
}
return 0
}
proc do_first_authorize {} {
global state
global pin
global account
global count
global retryCnt
global promptFlag
global prefix
global param2
global amt
global returncode
set ev [authorize $account $pin "" [ani] info]
set returncode [getVariable radius returnCode]
switch -regexp $ev {
{authorized} {set amt [getVariable radius creditAmount]
set state do_get_dest
}
{authorization failed} {incr count
set promptFlag 2
if {$returncode == "Uknown variable name"} {
set ev [playPrompt param2 info [set prefix]_no_aaa.au]
set state end
return 0
}
if { $count < $retryCnt } {
set state do_get_card_number
} else {
set state do_first_authorize_fail
}
}
default {set state end}
}
return 0
}