All pastes #56756 Raw Edit

Unnamed

public text v1 · immutable
#56756 ·published 2006-05-18 02:05 UTC
rendered paste body
; Disa using voicemail passowords via agi
[custom-disa]
exten => s,1,Set(LOOPCOUNT=0)
exten => s,n,Answer
exten => s,n,Wait(1)
exten => s,n(begin),Set(TIMEOUT(digit)=3)
exten => s,n,Set(TIMEOUT(response)=10)
exten => s,n,Playback(please-enter-the&extension)
exten => s,n,Read(ext_num,then-press-pound,,) 
exten => s,n,Wait(1) 
exten => s,n,Playback(pls-enter-vm-password)
exten => s,n,Read(ext_pwd,then-press-pound,,) 
exten => s,n,Wait(1) 
exten => s,n,agi,chk_vm_pwd.agi|/etc/asterisk/voicemail.conf|${ext_num}|${ext_pwd} 
exten => s,n,GotoIf($["${result}" = "0"]?D:custom-disa,i,1) 
exten => s,n,Set(CALLERIDNUM=${ext_num})
exten => s,n(D),DISA(no-password|from-internal)
exten => h,1,Hangup
exten => i,1,Playback(invalid)
exten => i,n,Goto(loop,1)
exten => t,1,Goto(loop,1)
exten => loop,1,Set(LOOPCOUNT=$[${LOOPCOUNT} + 1])
exten => loop,n,GotoIf($[${LOOPCOUNT} > 2]?hang,1)
exten => loop,n,Goto(custom-disa,s,begin)
exten => hang,1,Playback(vm-goodbye)
exten => hang,n,Hangup

---------------------------------cut here-------------------------------------------------

#!/usr/bin/perl 
 
# AGI script that searchs for a match on an extension and password in  
# a voicemail.conf file 
# 
# Parameters: <voicemail config file path> | <extension> | <password> 
# 
# 
# Written by: Andre D. Correa <andre(at)pobox.com> (03/jun/2005) 
# 
 
 
use Asterisk::AGI; 
$AGI = new Asterisk::AGI; 
my %input = $AGI->ReadParse(); 
 
# Set variables according to supplied arquments 
# Variables sanitation is not an issue as it is being run from extentions.conf 
$vmconf = $ARGV[0]; 
$exten = $ARGV[1]; 
$pwd = $ARGV[2]; 
 
# Open VoiceMail configuration file read only 
open VMCONF, "<$vmconf"; 
       @vmconf_lines = <VMCONF>; 
close VMCONF; 
&error_msg("Cannot open $vmconf file read only.") if $#vmconf_lines eq -1; 
 
foreach (@vmconf_lines){ 
       next if $_ !~ /^\d/; 
       $_ =~ s/\s//iog; 
       $_ =~ s/=>/=/iog; 
       $_ =~ s/=/\,/; 
       (@line_args) = split(/\,/, $_); 
       if ($exten eq $line_args[0]){ # We got the right extension 
               if ($pwd eq $line_args[1]){ # User provided the right pwd 
                       $AGI->set_variable('result','0'); 
               } else { # Wrong password - bye! 
                       $AGI->set_variable('result','1'); 
               } 
       } 
} 
 
exit; 
 
 
sub error_msg() { 
       my($err_msg) = @_; 
       $AGI->verbose($err_msg); 
       $AGI->hangup(); 
       die $err_msg; 
}