From c91b2cd29653da525d1a37cf680f4a75b2d3b208 Mon Sep 17 00:00:00 2001 From: tzafrir Date: Fri, 14 Sep 2007 22:29:36 +0000 Subject: New xpp release (Xorcom rev 4648): * New firmware protocol version: 2.8 . * New firmwares fix input ports offhook. * Cleanup INFO() messages during module loading. * USB: Receive queue with TASKLETS [r4600]. Controlled by rx_tasklet parameter to xpp_usb module (can be changed in runtime). * The pcm_tasklet parameter in xpp module is deprecated: - Does not actually do anything. - If set during module loading, shows an ERR() message. - Also appears in /proc/xpp/sync * FXS: Hardware DTMF detection by default, can be disabled by setting dtmf_detection=0 parameter to xpd_fxs. PCM is muted when DTMF key is pressed. * zapconf: - Can now generate users.conf compatible with asterisk-gui. - Optional command-line arguments denoting which files to generate. Possible values are 'zaptel', 'zapata' and 'users'. - Defaults to creating zaptel and zapata. git-svn-id: http://svn.digium.com/svn/zaptel/branches/1.2@3019 5390a7c7-147a-4af0-8ec9-7488f05a26cb --- xpp/utils/zapconf | 74 +++++++++++++++++++++++++++++++++++++++++-------------- 1 file changed, 55 insertions(+), 19 deletions(-) (limited to 'xpp/utils/zapconf') diff --git a/xpp/utils/zapconf b/xpp/utils/zapconf index 7cf1378..472c3af 100755 --- a/xpp/utils/zapconf +++ b/xpp/utils/zapconf @@ -41,16 +41,16 @@ my $fxs_default_start = 'ls'; my %default_zaptel_signalling = ( FXO => 'fxsks', - FXS => "fxo$fxs_default_start", - IN => "fxo$fxs_default_start", - OUT => "fxo$fxs_default_start", + FXS => "fxo{fxs_default_start}", + IN => "fxo{fxs_default_start}", + OUT => "fxo{fxs_default_start}", ); my %default_zapata_signalling = ( FXO => 'fxs_ks', - FXS => "fxo_$fxs_default_start", - IN => "fxo_$fxs_default_start", - OUT => "fxo_$fxs_default_start", + FXS => "fxo_{fxs_default_start}", + IN => "fxo_{fxs_default_start}", + OUT => "fxo_{fxs_default_start}", ); my $base_exten = 4000; @@ -106,13 +106,15 @@ sub map_zaptel_defaults { my $zapconf_file; -my $zapata_file; +my $zapatachannels_file; my $users_file; +my $zapataconf_file; my %files = ( zaptel => { file => \$zapconf_file, func => \&gen_zaptelconf }, - zapata => { file => \$zapata_file, func => \&gen_zapataconf }, + zapata => { file => \$zapatachannels_file, func => \&gen_zapatachannelsconf }, users => { file => \$users_file, func => \&gen_usersconf }, + zapataconf => { file => \$zapataconf_file, func => \&gen_zapataconf }, ); my @default_files = ("zaptel", "zapata"); @@ -246,7 +248,7 @@ sub gen_zapata_digital($) { my $sig = $span->signalling || die "missing signalling info for span #$num type $type"; grep($bri_sig_style eq $_, 'bri', 'bri_ptmp', 'pri') or die "unknown signalling style for BRI"; - if($bri_sig_style eq 'bri_ptmp') { + if($span->is_bri() and $bri_sig_style eq 'bri_ptmp') { $sig .= '_ptmp'; } $group .= "," . (10 + $num); # Invent unique group per span @@ -306,7 +308,7 @@ sub gen_zapata_channel($) { print "\n"; } -sub gen_zapataconf($) { +sub gen_zapatachannelsconf($) { my $file = shift || die; rename "$file", "$file.bak" or $! == 2 # ENOENT (No dependency on Errno.pm) @@ -344,14 +346,15 @@ sub gen_users_channel($) { die "channel $num type $type is not an analog channel\n" if $chan->is_digital(); my $exten = $base_exten + $num; my $sig = $default_zapata_signalling{$type}; + my $full_name = "$type $num"; - return unless grep { $_ eq $type} ( 'FXS', 'IN', 'OUT' ); die "missing default_zapata_signalling for chan #$num type $type" unless $sig; print << "EOF"; [$exten] callwaiting = yes context = numberplan-custom-1 -fullname = New User +fullname = $full_name +cid_number = $exten hasagent = yes hasdirectory = no hasiax = yes @@ -362,6 +365,8 @@ host = dynamic mailbox = $exten threewaycalling = yes vmsecret = 1234 +secret = 1234 +signalling = $sig zapchan = $num registeriax = yes registersip = yes @@ -438,12 +443,32 @@ localextenlength = 4 HEAD foreach my $span (@spans) { + next unless grep { $_ eq $span->type} ( 'FXS', 'IN', 'OUT' ); printf "; Span %d: %s %s\n", $span->num, $span->name, $span->description; - if($span->is_digital()) { - next; - } else { - foreach my $chan ($span->chans()) { - gen_users_channel($chan); + foreach my $chan ($span->chans()) { + gen_users_channel($chan); + } + print "\n"; + } + close F; + select $old; +} + +sub gen_zapataconf($) { + my $file = shift || die; + open(F, ">>$file") || die "$0: Failed to open $file: $!\n"; + my $old = select F; + foreach my $span (@spans) { + next unless $span->type eq 'FXO'; + my $current_sig = ""; + for my $chan ($span->chans()) { + my $chan_num = $chan->num; + if ($default_zapata_signalling{$chan->type} ne $current_sig) { + $current_sig = $default_zapata_signalling{$chan->type}; + print "\nsignalling = $current_sig"; + print "\nchannel => $chan_num"; + } else { + print ",$chan_num"; } } print "\n"; @@ -464,9 +489,14 @@ sub set_defaults { if -r $defaults; } map_zaptel_defaults(%source_defaults); + # Fixups + foreach my $val (values %default_zaptel_signalling, values %default_zapata_signalling) { + $val =~ s/{fxs_default_start}/$fxs_default_start/g; + } $zapconf_file = $ENV{ZAPCONF_FILE} || "/etc/zaptel.conf"; - $zapata_file = $ENV{ZAPATA_FILE} || "/etc/asterisk/zapata-channels.conf"; + $zapatachannels_file = $ENV{ZAPATA_FILE} || "/etc/asterisk/zapata-channels.conf"; $users_file = $ENV{USERS_FILE} || "/etc/asterisk/users.conf"; + $zapataconf_file = $ENV{ZAPATACONF_FILE} || "/etc/asterisk/zapata.conf"; } sub parse_args { @@ -500,7 +530,7 @@ zapconf [FILES...] =head1 DESCRIPTION This script generate configuration files for Zaptel hardware. -Currently it can generate three files: zaptel, zapata and users (see below). +Currently it can generate three files: zaptel, zapata, users and zapataconf (see below). Without arguments, it generates only zaptel and zapata. =over 4 @@ -520,4 +550,10 @@ It's location may be overriden by the environment variable ZAPATA_FILE. Configuration for asterisk(1) and AsteriskGUI. It's location may be overriden by the environment variable USERS_FILE. +=item zapataconf - /etc/asterisk/zapata.conf + +Configuration for asterisk(1) and AsteriskGUI. +It's location may be overriden by the environment variable ZAPATACONF_FILE. + + =back -- cgit v1.2.3