2007-12-11 12:01:51 -05:00
|
|
|
#!/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 = {
|
2007-12-11 14:56:40 -05:00
|
|
|
"1" => "FWD",
|
|
|
|
"2" => "SP",
|
|
|
|
"3" => "IS",
|
|
|
|
"4" => "AL",
|
|
|
|
"5" => "SB",
|
|
|
|
"6" => "VU"
|
|
|
|
};
|
2007-12-11 12:01:51 -05:00
|
|
|
|
|
|
|
|
|
|
|
my $FWD = {
|
2007-12-11 14:56:40 -05:00
|
|
|
"type" => "network",
|
|
|
|
"register" => "true",
|
|
|
|
"fields" => [number, password, extension],
|
|
|
|
"domain" => "pulver.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"
|
|
|
|
};
|
2007-12-11 12:01:51 -05:00
|
|
|
|
|
|
|
my $TEMPLATES = {
|
2007-12-11 14:56:40 -05:00
|
|
|
"FWD" => $FWD,
|
|
|
|
"SP" => $SIPPHONE,
|
|
|
|
"IS" => $IDEASIP,
|
|
|
|
"AL" => $ASTERLINK,
|
|
|
|
"SB" => $SIPBROKER,
|
|
|
|
"VU" => $VOIPUSER
|
|
|
|
};
|
2007-12-11 12:01:51 -05:00
|
|
|
|
|
|
|
print "\n" x 60;
|
|
|
|
&welcome;
|
|
|
|
|
|
|
|
sub welcome {
|
2007-12-11 14:56:40 -05:00
|
|
|
print <<WELCOME
|
2007-12-11 12:01:51 -05:00
|
|
|
|
2007-12-11 14:56:40 -05:00
|
|
|
Welcome to the FreeSWITCH setup assistant.
|
2007-12-11 12:01:51 -05:00
|
|
|
|
2007-12-11 14:56:40 -05:00
|
|
|
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
|
2007-12-11 12:01:51 -05:00
|
|
|
|
2007-12-11 14:56:40 -05:00
|
|
|
X. Exit
|
2007-12-11 12:01:51 -05:00
|
|
|
|
|
|
|
WELCOME
|
2007-12-11 14:56:40 -05:00
|
|
|
;
|
|
|
|
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 > 6) {
|
|
|
|
print "Invalid Choice\n"; &welcome;
|
|
|
|
} else {
|
|
|
|
if (exists($providers->{$i})) {
|
|
|
|
configure_sip_provider($providers->{$i});
|
|
|
|
}
|
|
|
|
};
|
|
|
|
&welcome;
|
2007-12-11 12:01:51 -05:00
|
|
|
}
|
|
|
|
|
|
|
|
sub configure_sip_provider($) {
|
2007-12-11 14:56:40 -05:00
|
|
|
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;
|
2007-12-11 12:01:51 -05:00
|
|
|
}
|
|
|
|
|
|
|
|
sub enable_extension($$) {
|
2007-12-11 14:56:40 -05:00
|
|
|
my $provider = shift;
|
|
|
|
my $config = shift;
|
2007-12-11 12:01:51 -05:00
|
|
|
|
2007-12-11 14:56:40 -05:00
|
|
|
my $todo = $TEMPLATES->{$provider};
|
2007-12-11 12:01:51 -05:00
|
|
|
|
2007-12-11 14:56:40 -05:00
|
|
|
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";
|
2007-12-11 12:01:51 -05:00
|
|
|
}
|
|
|
|
|
|
|
|
sub do_config($$) {
|
2007-12-11 14:56:40 -05:00
|
|
|
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;
|
2007-12-11 12:01:51 -05:00
|
|
|
}
|
2007-12-11 14:56:40 -05:00
|
|
|
close(CONFIG);
|
|
|
|
print "Config Created...\n";
|
2007-12-11 12:01:51 -05:00
|
|
|
}
|
|
|
|
|
|
|
|
sub are_you_sure {
|
2007-12-11 14:56:40 -05:00
|
|
|
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;
|
|
|
|
}
|
2007-12-11 12:01:51 -05:00
|
|
|
}
|
|
|
|
}
|