[Freeswitch-svn] [commit] r6647 - freeswitch/trunk/scripts

Freeswitch SVN brian at freeswitch.org
Tue Dec 11 12:01:51 EST 2007


Author: brian
Date: Tue Dec 11 12:01:51 2007
New Revision: 6647

Added:
   freeswitch/trunk/scripts/sipsetup   (contents, props changed)

Log:
sipsetup script to automatically configure the included providers.. please contribute your changes or rewrites

Added: freeswitch/trunk/scripts/sipsetup
==============================================================================
--- (empty file)
+++ freeswitch/trunk/scripts/sipsetup	Tue Dec 11 12:01:51 2007
@@ -0,0 +1,170 @@
+#!/usr/bin/perl
+#
+# FreeSWITCH SIP Setup Assistant v1.0
+# Brian K. West <brian.west at 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"
+		};
+
+
+my $FWD = {
+	   "type" => "network",
+	   "register" => "true",
+	   "fields" => [number, password, extension],
+	   "domain" => "pulver.com",
+	   "dialprefix" => "1-393"
+	  };
+
+my $SP = {
+	  "type" => "network",
+	  "register" => "true",
+	  "fields" => [username, password, extension],
+	  "domain" => "sipphone.com",
+	  "dialprefix" => "1-747, 1-222"
+	 };
+
+my $IS = {
+	  "type" => "network",
+	  "register" => "true",
+	  "fields" => [username, password, extension],
+	  "domain" => "ideasip.com",
+	  "dialprefix" => "1-101"
+	 };
+
+my $AL = {
+	  "type" => "pstn",
+	  "register" => "true",
+	  "fields" => [username, password, extension],
+	  "domain" => "asterlink.com",
+	 };
+
+my $SB = {
+	  "type" => "peer",
+	  "domain" => "sipbroker.com",
+	  "dialprefix" => "*XXX"
+	 };
+
+my $TEMPLATES = {
+		 "FWD" => $FWD,
+		 "SP" => $SP,
+		 "IS" => $IS,
+		 "AL" => $AL,
+		 "SB" => $SB
+		};
+
+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
+
+  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 > 5) {
+    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") {
+    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;
+    }
+  }
+}



More information about the Freeswitch-svn mailing list