freeswitch/scripts/sipsetup

192 lines
3.9 KiB
Perl
Executable File

#!/usr/bin/perl
#
# FreeSWITCH SIP Setup Assistant v1.0
# Brian K. West <brian.west@mac.com>
#
#
use Data::Dumper;
use File::Copy;
my $PREFIX = "/usr/local/freeswitch";
my $providers = {
"1" => "FWD",
"2" => "SP",
"3" => "IS",
"4" => "AL",
"5" => "SB",
"6" => "VU",
"7" => "BV"
};
my $FWD = {
"type" => "network",
"register" => "true",
"fields" => [number, password, extension],
"domain" => "pulver.com",
"dialprefix" => "1-393"
};
my $BROADVOICE = {
"type" => "network",
"register" => "true",
"fields" => [username, password, extension],
"domain" => "sip.broadvoice.com",
"dialprefix" => "1-393"
};
my $SIPHONE = {
"type" => "network",
"register" => "true",
"fields" => [username, password, extension],
"domain" => "sipphone.com",
"dialprefix" => "1-747, 1-222"
};
my $IDEASIP = {
"type" => "network",
"register" => "true",
"fields" => [username, password, extension],
"domain" => "ideasip.com",
"dialprefix" => "1-101"
};
my $VOIPUSER = {
"type" => "network",
"register" => "true",
"fields" => [username, password, extension],
"domain" => "voipuser.org"
};
my $ASTERLINK = {
"type" => "pstn",
"register" => "true",
"fields" => [username, password, extension],
"domain" => "asterlink.com",
};
my $SIPBROKER = {
"type" => "peer",
"domain" => "sipbroker.com",
"dialprefix" => "*XXX"
};
my $TEMPLATES = {
"FWD" => $FWD,
"SP" => $SIPPHONE,
"IS" => $IDEASIP,
"AL" => $ASTERLINK,
"SB" => $SIPBROKER,
"VU" => $VOIPUSER,
"BV" => $BROADVOICE
};
print "\n" x 60;
&welcome;
sub welcome {
print <<WELCOME
Welcome to the FreeSWITCH setup assistant.
1. Configure Free World Dialup
2. Configure SIPPhone.com
3. Configure ideaSIP.com
4. Configure Asterlink.com
5. Configure SIPBroker.com
6. Configure voipuser.org
7. Configure broadvoice.com
X. Exit
WELCOME
;
print "Which provider do you wish to setup? ";
my $i = <STDIN>;
chomp($i);
if ($i =~ m/X|x/) {
print "Thanks you!\n"; exit;
} elsif ($i > 7) {
print "Invalid Choice\n"; &welcome;
} else {
if (exists($providers->{$i})) {
configure_sip_provider($providers->{$i});
}
};
&welcome;
}
sub configure_sip_provider($) {
my $provider = shift;
my $template = $TEMPLATES->{$provider};
my $config;
my $check = 1;
foreach $field (@{$template->{fields}}) {
print "\nPlease your $template->{domain} $field: ";
$tmp = "$provider" . uc($field);
$i = <STDIN>;
chomp($i);
$config->{$tmp} = $i;
}
while($check) {
$check = &are_you_sure;
};
if ($template->{type} eq "network" || $template->{type} eq "pstn") {
do_config($provider, $config);
}
if ($template->{dialprefix}) {
enable_extension($provider, $config);
}
print "\n\n\nConfiguration Complete!!!\n\n\n\n\n";
sleep(2);
&welcome;
}
sub enable_extension($$) {
my $provider = shift;
my $config = shift;
my $todo = $TEMPLATES->{$provider};
copy("$PREFIX/conf/dialplan/extensions/$todo->{domain}.noload", "$PREFIX/conf/dialplan/extensions/$todo->{domain}.xml");
print "\nExtension prefix $todo->{dialprefix} enabled for dialing $todo->{domain}...\n";
}
sub do_config($$) {
my $provider = shift;
my $config = shift;
my $todo = $TEMPLATES->{$provider};
open(TEMPLATE, "<$PREFIX/conf/directory/default/$todo->{domain}.noload");
@lines = <TEMPLATE>;
close(TEMPLATE);
open(CONFIG, ">$PREFIX/conf/directory/default/$todo->{domain}.xml");
foreach $line (@lines) {
foreach $key (sort keys %{$config}) {
$line =~ s/%$key%/$config->{$key}/g;
}
print CONFIG $line;
}
close(CONFIG);
print "Config Created...\n";
}
sub are_you_sure {
my $sure = 1;
while($sure) {
print "Are you sure? (yes/no)";
$i = <STDIN>;
chomp($i);
if($i =~ m/No|no|NO|n/) {
&welcome;
} elsif ($i =~ m/Yes|yes|YES|y/) {
return 0;
}
}
}