better voip line design, handles incoming VOIP calls
authordrowe67 <drowe67@01035d8c-6547-0410-b346-abe4f91aad63>
Thu, 4 Feb 2010 01:31:14 +0000 (01:31 +0000)
committerdrowe67 <drowe67@01035d8c-6547-0410-b346-abe4f91aad63>
Thu, 4 Feb 2010 01:31:14 +0000 (01:31 +0000)
git-svn-id: https://svn.code.sf.net/p/freetel/code@139 01035d8c-6547-0410-b346-abe4f91aad63

mini-asterisk-gui/Makefile
mini-asterisk-gui/cgi-bin/set_voiplines.pl
mini-asterisk-gui/cgi-bin/set_voiplines.sh
mini-asterisk-gui/cgi-bin/voiplines.js
mini-asterisk-gui/cgi-bin/voiplines.pl
mini-asterisk-gui/etc/asterisk/sip.conf

index 24703e5a93b0137297d219a7d0c4936a09b3ae5c..7e9d0a071016674652b9631041ed2b79626e03eb 100644 (file)
@@ -14,7 +14,7 @@
 #    usage: make HOST=test.machine.ip static
 
 test:
-       rcp cgi-bin/*.html cgi-bin/*.sh cgi-bin/*.pl cgi-bin/*.js cgi-bin/*.css \
+       scp cgi-bin/*.html cgi-bin/*.sh cgi-bin/*.pl cgi-bin/*.js cgi-bin/*.css \
        cgi-bin/*.png root@$(HOST):/www
        scp etc/asterisk/*.conf root@$(HOST):/etc/asterisk
 
index 2cee2e13ed9161b7e8540b87c2f352a5d2b15e2b..114b7b067780c5f2b79ea3dffdaa840c1ecb6d4f 100644 (file)
@@ -7,7 +7,7 @@
 $user = $ARGV[0];
 $pass = $ARGV[1];
 $host = $ARGV[2];
-$stanza_new = $ARGV[3];
+$provider_new = $ARGV[3];
 
 # We need to slurp up the mini asterisk provider and spit them
 # back out.  All must be commented out except for the one that
@@ -29,24 +29,23 @@ while (<SIP>) {
 
     # look for commented or uncommented mini asterisk provider stanza
 
-    if (/\[(.*)\] .* mini-asterisk/) {
+    if (/\[(.*)\].* \"(.*)\" mini-asterisk/) {
        $stanza = $1;
+       $provider = $2;
     }
 
     if ($stanza eq "") {
        # we are not in an mini-asterisk provider stanza
        
-       if (/;*register => (\S*)@(\S*).*;.*(mini-asterisk.*)/) {
-           # an mini-asterisk register line
+        # however we may hit a mini-asterisk register line here
 
-           #print "XX stanza_new='$stanza_new' '$1' '$2' '$3'\n";
+       if (/.*register => (\S*)@(\S*).*;.*(mini-asterisk.*)/) {
+           # the mini-asterisk register line, not only one register supported
+           # at the moment (one VOIP line)
+
+           #print "XX provider_new='$provider_new' '$1' '$2' '$3'\n";
                    
-           if ($2 eq $stanza_new) {
-               print "register => $user\@$stanza_new; $3\n";
-           }
-           else {
-               print ";register => $1\@$2 ; $3\n";
-           }
+           print "register => $user\@$user/$user; $3\n";
        }
        else {
            # OK so this is a regular sip.conf line, just echo to stdout
@@ -60,14 +59,16 @@ while (<SIP>) {
 
        $_ =~ s/^\;//;
        
-       if ($stanza eq $stanza_new) {
+       if ($provider eq $provider_new) {
 
            # this stanza should be uncommented
 
-           if (/^user=/) {
-               print "user=$user\n";
+           if (/\[.*\].* \".*\" mini-asterisk/) {
+               # rename stanza name to user name
+               # this is required to make incoming calls work
+               print "[$user] ; \"$provider\" mini-asterisk do not remove this comment\n";
            }
-           if (/^username=/) {
+           elsif (/^username=/) {
                print "username=$user\n";
            }
            elsif (/^fromuser=/) {
index 18c339dfb24aaffbd3a326b02717e279912d73ff..1afe1ec386d12d740df42f4b09d86b054b42bb6e 100644 (file)
@@ -19,18 +19,18 @@ fi
 user=`echo "$QUERY_STRING" | grep -oe "user=[^&?]*" | sed -n "s/user=//p"`
 pass=`echo "$QUERY_STRING" | grep -oe "pass=[^&?]*" | sed -n "s/pass=//p"`
 host=`echo "$QUERY_STRING" | grep -oe "host=[^&?]*" | sed -n "s/host=//p"`
-stanza=`echo "$QUERY_STRING" | grep -oe "stanza=[^&?]*" | sed -n "s/stanza=//p"`
+provider=`echo "$QUERY_STRING" | grep -oe "provider=[^&?]*" | sed -n "s/provider=//p"`
 
 # create new sip.conf with selected provider uncommented
 
-echo "set_voiplines.sh" $user $pass $host $stanza >> /tmp/log.txt
-perl set_voiplines.pl $user $pass $host $stanza > /etc/asterisk/sip.conf.new
+echo "set_voiplines.sh" $user $pass $host $provider >> /tmp/log.txt
+perl set_voiplines.pl $user $pass $host $provider > /etc/asterisk/sip.conf.new
 mv /etc/asterisk/sip.conf /etc/asterisk/sip.conf.bak
 mv /etc/asterisk/sip.conf.new /etc/asterisk/sip.conf
 
 # modify extensions.conf for new provider
 
-sed -i "s#_1.,1,Dial(.*)#_1.,1,Dial(SIP/$stanza/\${EXTEN:1})#" /etc/asterisk/extensions.conf
+sed -i "s#_1.,1,Dial(.*)#_1.,1,Dial(SIP/$user/\${EXTEN:1})#" /etc/asterisk/extensions.conf
 asterisk -rx "dialplan reload" 2>/dev/null 1 > /dev/null
 
 # get asterisk to load changes
index 083838afa866487016a281c4fb982139b64a1523..12201255d5ea005661dcff9aade7048eec9578d0 100644 (file)
@@ -3,5 +3,4 @@ function changeProvider() {
        $('user').value = users[provider];
        $('pass').value = passwords[provider];
        $('host').value = hosts[provider];
-       $('stanza').value = stanzas[provider];
 }
index d8ccdca88dc5df413d3f85dc48a25027b61bece8..c910fb6347bedc5dfc8daec1d9e574bd9f0d4972 100644 (file)
@@ -10,7 +10,6 @@
 open SIP, "/etc/asterisk/sip.conf";
 my $provider = ""; # current provider bring parsed in sip.conf
 my @providers=();  # list of all providers
-my %stanza = ();   # stanza name keyed on provider
 my %user = ();     # user keyed on provider
 my %pass = ();     # password keyed on provider
 my %host = ();     # host name keyed on provider
@@ -27,11 +26,10 @@ while (<SIP>) {
 
     # currently disabled mini-asterisk provider
 
-    if (/^;\[(.*)\].* \"(.*)\" mini-asterisk/) {
-       push (@providers, $2);
-       $provider = $2;
-       $stanza{$2} = $1;
-       #print "'$1' '$2'\n";   
+    if (/^;\[.*\].* \"(.*)\" mini-asterisk/) {
+       push (@providers, $1);
+       $provider = $1;
+       #print "'$1'\n";        
     }
 
     # current mini-asterisk provider
@@ -40,16 +38,13 @@ while (<SIP>) {
        push (@providers, $2);
        $provider = $2;
        $provider_current = $2;
-       $stanza{$2} = $1;
+       $stanza_current = $1;
        #print "'$1' '$2'\n";
     }
 
     if ($provider ne "") {
        #print $_;
 
-       if (/^;*user=(.*)/) {
-           $user{$provider} = $1;
-       }
        if (/^;*username=(.*)/) {
            $user{$provider} = $1;
        }
@@ -93,7 +88,6 @@ foreach (@providers) {
     print "hosts[\'$_\'] = \'$host{$_}\';\n";
     print "users[\'$_\'] = \'$user{$_}\';\n";
     print "passwords[\'$_\'] = \'$pass{$_}\';\n";
-    print "stanzas[\'$_\'] = \'$stanza{$_}\';\n";
 }
 print "</script>\n";
 
@@ -121,9 +115,9 @@ print "<tr $tt_user><td>User:</td><td><input type=\"text\" name=\"user\" id=\"us
 print "<tr $tt_pass><td>Password:</td><td><input type=\"password\" name=\"pass\" id=\"pass\" value=\"$pass{$provider_current}\"></td></tr>\n";
 print "<tr $tt_host><td>Host:</td><td><input type=\"text\" name=\"host\" id=\"host\" value=\"$host{$provider_current}\"></td></tr>\n";
 
-#print "\nXXX $provider_current $stanza{$provider_current} $voip{$stanza{$provider_current}}\n";
+#print "\nXXX $provider_current $stanza_current} $voip{$stanza_current}\n";
 
-if ($voip{$stanza{$provider_current}} eq "Registered") {
+if ($voip{$stanza_current} eq "Registered") {
     $icon = "<img src=\"tick.png\" alt=\"OK\" />";
 }
 else {
@@ -131,6 +125,3 @@ else {
 }
 print "<tr $tt_status><td>Voip Line Status:</td><td>$icon</td></tr>\n";
 
-# hidden field to pass stanza with form
-
-print "<tr><td><input type=\"hidden\" name=\"stanza\" id=\"stanza\" value=\"$stanza{$provider_current}\"></td></tr>";
index ee3e1046483952d1e240c324824ec3d063cc8880..4e8e4cc239e6c7fdd0af906f0859d9719bfe80bf 100644 (file)
@@ -153,8 +153,7 @@ srvlookup=yes                       ; Enable DNS SRV lookups on outbound calls
 
 ; register mini-asterisk voip line providers here
 
-register => user@generic ; mini-asterisk - do not change this comment
-;register => user@oeg ; mini-asterisk - do not change this comment
+register => user@user ; mini-asterisk - do not change this comment
 
 ;----------------------------------------- NAT SUPPORT ------------------------
 ; The externip, externhost and localnet settings are used if you use Asterisk