summaryrefslogtreecommitdiff
path: root/xpp/utils/zapconf
diff options
context:
space:
mode:
Diffstat (limited to 'xpp/utils/zapconf')
-rwxr-xr-xxpp/utils/zapconf74
1 files changed, 55 insertions, 19 deletions
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