Changeset 3625

Show
Ignore:
Timestamp:
01/24/07 10:00:11 (2 years ago)
Author:
p_lindheimer
Message:

added disable trunk feature to disable but not remove it. Added hook to insert user provided monitoring/reporting mechanism on turnk failures, per trunk. Change hagnupcall to not have a delay

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • freepbx/trunk/amp_conf/astetc/extensions.conf

    r3622 r3625  
    312312exten => s,n,DBDel(FM/DND/${FMGRP}/${CHANNEL}) 
    313313 
    314 exten => s,n(theend),Wait(2) 
    315 exten => s,n,Hangup 
     314exten => s,n(theend),Hangup 
    316315 
    317316[macro-faxreceive] 
     
    357356[macro-dialout-trunk] 
    358357exten => s,1,Set(DIAL_TRUNK=${ARG1}) 
     358exten => s,n,GotoIf($["x${OUTDISABLE_${ARG1}}" = "xon"]?disabletrunk,1) 
    359359 
    360360; If NODEST is set, clear it. No point in remembering since dialout-trunk will just end in the 
     
    412412exten => s-CANCEL,3,Congestion(20) 
    413413 
    414 exten => _s-.,1,NoOp(Dial failed due to ${DIALSTATUS} - failing through to other trunks) 
     414exten => _s-.,1,GotoIf($["x${OUTFAIL_${ARG1}}" = "x"]?noreport) 
     415exten => _s-.,n,DeadAGI(${OUTFAIL_${ARG1}}) 
     416exten => _s-.,n(noreport),Noop(TRUNK Dial failed due to ${DIALSTATUS} - failing through to other trunks) 
     417 
     418exten => disabletrunk,1,Noop(TRUNK: ${OUT_${DIAL_TRUNK}} DISABLED - falling through to next trunk) 
    415419 
    416420exten => h,1,Macro(hangupcall) 
  • freepbx/trunk/amp_conf/htdocs/admin/modules/core/functions.inc.php

    r3621 r3625  
    12761276 
    12771277// we're adding ,don't require a $trunknum 
    1278 function core_trunks_add($tech, $channelid, $dialoutprefix, $maxchans, $outcid, $peerdetails, $usercontext, $userconfig, $register, $keepcid) { 
     1278function core_trunks_add($tech, $channelid, $dialoutprefix, $maxchans, $outcid, $peerdetails, $usercontext, $userconfig, $register, $keepcid, $failtrunk, $disabletrunk) { 
    12791279        global $db; 
    12801280         
     
    12871287        } 
    12881288         
    1289         core_trunks_backendAdd($trunknum, $tech, $channelid, $dialoutprefix, $maxchans, $outcid, $peerdetails, $usercontext, $userconfig, $register, $keepcid); 
     1289        core_trunks_backendAdd($trunknum, $tech, $channelid, $dialoutprefix, $maxchans, $outcid, $peerdetails, $usercontext, $userconfig, $register, $keepcid, $failtrunk, $disabletrunk); 
    12901290         
    12911291        return $trunknum; 
     
    13001300 
    13011301        //delete from globals table 
    1302         sql("DELETE FROM globals WHERE variable LIKE '%OUT_$trunknum' OR variable IN ('OUTCID_$trunknum','OUTMAXCHANS_$trunknum','OUTPREFIX_$trunknum','OUTKEEPCID_$trunknum')"); 
     1302        sql("DELETE FROM globals WHERE variable LIKE '%OUT_$trunknum' OR variable IN ('OUTCID_$trunknum','OUTMAXCHANS_$trunknum','OUTPREFIX_$trunknum','OUTKEEPCID_$trunknum','OUTFAIL_$trunknum','OUTDISABLE_$trunknum')"); 
    13031303         
    13041304        //write outids 
     
    13171317} 
    13181318 
    1319 function core_trunks_edit($trunknum, $channelid, $dialoutprefix, $maxchans, $outcid, $peerdetails, $usercontext, $userconfig, $register, $keepcid) { 
     1319function core_trunks_edit($trunknum, $channelid, $dialoutprefix, $maxchans, $outcid, $peerdetails, $usercontext, $userconfig, $register, $keepcid, $failtrunk, $disabletrunk) { 
    13201320        //echo "editTrunk($trunknum, $channelid, $dialoutprefix, $maxchans, $outcid, $peerdetails, $usercontext, $userconfig, $register)"; 
    13211321        $tech = core_trunks_getTrunkTech($trunknum); 
    13221322        core_trunks_del($trunknum, $tech); 
    1323         core_trunks_backendAdd($trunknum, $tech, $channelid, $dialoutprefix, $maxchans, $outcid, $peerdetails, $usercontext, $userconfig, $register, $keepcid); 
     1323        core_trunks_backendAdd($trunknum, $tech, $channelid, $dialoutprefix, $maxchans, $outcid, $peerdetails, $usercontext, $userconfig, $register, $keepcid, $failtrunk, $disabletrunk); 
    13241324} 
    13251325 
    13261326// just used internally by addTrunk() and editTrunk() 
    13271327//obsolete 
    1328 function core_trunks_backendAdd($trunknum, $tech, $channelid, $dialoutprefix, $maxchans, $outcid, $peerdetails, $usercontext, $userconfig, $register, $keepcid) { 
     1328function core_trunks_backendAdd($trunknum, $tech, $channelid, $dialoutprefix, $maxchans, $outcid, $peerdetails, $usercontext, $userconfig, $register, $keepcid, $failtrunk, $disabletrunk) { 
    13291329        global $db; 
    13301330         
     
    13431343                        array('OUTCID_'.$trunknum, $outcid), 
    13441344                        array('OUTKEEPCID_'.$trunknum, $keepcid), 
     1345                        array('OUTFAIL_'.$trunknum, $failtrunk), 
     1346                        array('OUTDISABLE_'.$trunknum, $disabletrunk), 
    13451347                        ); 
    13461348                         
     
    13541356         
    13551357        core_trunks_writeoutids(); 
     1358 
     1359        $disable_flag = ($disabletrunk == "on")?1:0; 
    13561360         
    13571361        switch (strtolower($tech)) { 
    13581362                case "iax": 
    13591363                case "iax2": 
    1360                         core_trunks_addSipOrIax($peerdetails,'iax',$channelid,$trunknum); 
     1364                        core_trunks_addSipOrIax($peerdetails,'iax',$channelid,$trunknum,$disable_flag); 
    13611365                        if ($usercontext != ""){ 
    1362                                 core_trunks_addSipOrIax($userconfig,'iax',$usercontext,'9'.$trunknum); 
     1366                                core_trunks_addSipOrIax($userconfig,'iax',$usercontext,'9'.$trunknum,$disable_flag); 
    13631367                        } 
    13641368                        if ($register != ""){ 
    1365                                 core_trunks_addRegister($trunknum,'iax',$register); 
     1369                                core_trunks_addRegister($trunknum,'iax',$register,$disable_flag); 
    13661370                        } 
    13671371                break; 
    13681372                case "sip": 
    1369                         core_trunks_addSipOrIax($peerdetails,'sip',$channelid,$trunknum); 
     1373                        core_trunks_addSipOrIax($peerdetails,'sip',$channelid,$trunknum,$disable_flag); 
    13701374                        if ($usercontext != ""){ 
    1371                                 core_trunks_addSipOrIax($userconfig,'sip',$usercontext,'9'.$trunknum); 
     1375                                core_trunks_addSipOrIax($userconfig,'sip',$usercontext,'9'.$trunknum,$disable_flag); 
    13721376                        } 
    13731377                        if ($register != ""){ 
    1374                                 core_trunks_addRegister($trunknum,'sip',$register); 
     1378                                core_trunks_addRegister($trunknum,'sip',$register,$disable_flag); 
    13751379                        } 
    13761380                break; 
     
    13951399 
    13961400//add trunk info to sip or iax table 
    1397 function core_trunks_addSipOrIax($config,$table,$channelid,$trunknum) { 
     1401function core_trunks_addSipOrIax($config,$table,$channelid,$trunknum,$disable_flag=0) { 
    13981402        global $db; 
    13991403         
     
    14161420                $dbconfitem[]=array($k,$v); 
    14171421        } 
    1418         $compiled = $db->prepare("INSERT INTO $table (id, keyword, data) values ('9999$trunknum',?,?)"); 
     1422        $compiled = $db->prepare("INSERT INTO $table (id, keyword, data, flags) values ('9999$trunknum',?,?,'$disable_flag')"); 
    14191423        $result = $db->executeMultiple($compiled,$dbconfitem); 
    14201424        if(DB::IsError($result)) { 
    1421                 die($result->getMessage()."<br><br>INSERT INTO $table (id, keyword, data) values ('9999$trunknum',?,?)");      
     1425                die($result->getMessage()."<br><br>INSERT INTO $table (id, keyword, data, flags) values ('9999$trunknum',?,?,'$disable_flag')");       
    14221426        } 
    14231427} 
     
    14321436                // TODO: sqlite work arround - diego  
    14331437                // need to reorder the trunks in PHP code 
    1434                 $unique_trunks = sql("SELECT * FROM globals WHERE variable LIKE 'OUT_%' ORDER BY variable","getAll");  
     1438                $sqlstr  = "SELECT t.variable, t.value, d.value state FROM `globals` t "; 
     1439                $sqlstr .= "JOIN (SELECT x.variable, x.value FROM globals x WHERE x.variable LIKE 'OUTDISABLE\_%') d "; 
     1440                $sqlstr .= "ON substring(t.variable,5) = substring(d.variable,12) WHERE t.variable LIKE 'OUT\_%' "; 
     1441                $sqlstr .= "UNION ALL "; 
     1442                $sqlstr .= "SELECT v.variable, v.value, concat(substring(v.value,1,0),'off') state  FROM `globals` v "; 
     1443                $sqlstr .= "WHERE v.variable LIKE 'OUT\_%' AND concat('OUTDISABLE_',substring(v.variable,5)) NOT IN "; 
     1444                $sqlstr .= " ( SELECT variable from globals WHERE variable LIKE 'OUTDISABLE\_%' ) "; 
     1445                $sqlstr .= "ORDER BY variable"; 
     1446 
     1447                //$unique_trunks = sql("SELECT * FROM globals WHERE variable LIKE 'OUT_%' ORDER BY variable","getAll");  
     1448                $unique_trunks = sql($sqlstr,"getAll");  
    14351449        } 
    14361450        else 
    14371451        { 
    14381452                // we have to escape _ for mysql: normally a wildcard 
    1439                 $unique_trunks = sql("SELECT * FROM globals WHERE variable LIKE 'OUT\\\_%' ORDER BY RIGHT( variable, LENGTH( variable ) - 4 )+0","getAll");  
     1453                $sqlstr  = "SELECT t.variable, t.value, d.value state FROM `globals` t "; 
     1454                $sqlstr .= "JOIN (SELECT x.variable, x.value FROM globals x WHERE x.variable LIKE 'OUTDISABLE\\\_%') d "; 
     1455                $sqlstr .= "ON substring(t.variable,5) = substring(d.variable,12) WHERE t.variable LIKE 'OUT\\\_%' "; 
     1456                $sqlstr .= "UNION ALL "; 
     1457                $sqlstr .= "SELECT v.variable, v.value, concat(substring(v.value,1,0),'off') state  FROM `globals` v "; 
     1458                $sqlstr .= "WHERE v.variable LIKE 'OUT\\\_%' AND concat('OUTDISABLE_',substring(v.variable,5)) NOT IN "; 
     1459                $sqlstr .= " ( SELECT variable from globals WHERE variable LIKE 'OUTDISABLE\\\_%' ) "; 
     1460                $sqlstr .= "ORDER BY RIGHT( variable, LENGTH( variable ) - 4 )+0"; 
     1461 
     1462                //$unique_trunks = sql("SELECT * FROM globals WHERE variable LIKE 'OUT\\\_%' ORDER BY RIGHT( variable, LENGTH( variable ) - 4 )+0","getAll");  
     1463                $unique_trunks = sql($sqlstr,"getAll");  
    14401464        } 
    14411465 
     
    14761500} 
    14771501 
    1478 function core_trunks_addRegister($trunknum,$tech,$reg) { 
    1479         sql("INSERT INTO $tech (id, keyword, data) values ('9999999$trunknum','register','$reg')"); 
     1502function core_trunks_addRegister($trunknum,$tech,$reg,$disable_flag=0) { 
     1503        sql("INSERT INTO $tech (id, keyword, data, flags) values ('9999999$trunknum','register','$reg','$disable_flag')"); 
    14801504} 
    14811505 
  • freepbx/trunk/amp_conf/htdocs/admin/modules/core/page.routing.php

    r3621 r3625  
    268268foreach (core_trunks_list() as $temp) { 
    269269        $trunks[$temp[0]] = $temp[1]; 
     270        $trunkstate[$temp[0]] = $temp[2]; 
    270271} 
    271272 
     
    506507                        </td> 
    507508                        <td> 
    508                                <select id='trunkpri<?php echo $key ?>' name="trunkpriority[<?php echo $key ?>]"> 
    509                                 <option value=""></option> 
     509                <select id='trunkpri<?php echo $key ?>' name="trunkpriority[<?php echo $key ?>]" style="background: <?php echo $trunkstate[$trunk]=="off"?"#FFF":"#DDD" ?> ;" onChange="showDisable(<?php echo $key ?>); return true;"> 
     510                                <option value="" style="background: #FFF;"></option> 
    510511                                <?php  
    511512                                foreach ($trunks as $name=>$display) { 
    512                                         echo "<option id=\"trunk".$key."\" value=\"".$name."\" ".($name == $trunk ? "selected" : "").">".(strpos($display,'AMP:')===0 ? substr($display,4) : $display)."</option>"; 
     513                                        if ($trunkstate[$name] == 'off') { 
     514                                                echo "<option id=\"trunk".$key."\" name=\"trunk".$key."\" value=\"".$name."\" style=\"background: #FFF;\" ".($name == $trunk ? "selected" : "").">".$display."</option>"; 
     515                                        } else { 
     516                                                echo "<option id=\"trunk".$key."\" name=\"trunk".$key."\" value=\"".$name."\" style=\"background: #DDD;\" ".($name == $trunk ? "selected" : "").">".$display."</option>"; 
     517                                        } 
    513518                                } 
    514519                                ?> 
     
    550555                                <?php  
    551556                                foreach ($trunks as $name=>$display) { 
    552                                         echo "<option value=\"".$name."\">".(strpos($display,'AMP:')===0 ? substr($display,4) : $display)."</option>"; 
     557                                        if ($trunkstate[$name] == 'off') { 
     558                                        echo "<option value=\"".$name."\">".ltrim($display,"AMP:")."</option>"; 
     559                                        } else { 
     560                                        echo "<option value=\"".$name."\" style=\"background: #DDD;\" >*".ltrim($display,"AMP:")."*</option>"; 
     561                                        } 
    553562                                } 
    554563                                ?> 
     
    586595} else { 
    587596        theForm.routepass.focus(); 
     597} 
     598 
     599function showDisable(key) { 
     600<?php 
     601        $bgmap = 'bgc = {'; 
     602        foreach ($trunks as $name=>$display) { 
     603                $bgmap .= " \"$name\":"; 
     604                $bgmap .= ($trunkstate[$name] == 'off')?'"#FFF",':'"#DDD",'; 
     605        } 
     606        echo rtrim($bgmap,',')." };\n"; 
     607?> 
     608        if (document.getElementById('trunkpri'+key).value =='') { 
     609                document.getElementById('trunkpri'+key).style.background = '#FFF'; 
     610        } else { 
     611                document.getElementById('trunkpri'+key).style.background = bgc[document.getElementById('trunkpri'+key).value]; 
     612        } 
    588613} 
    589614 
  • freepbx/trunk/amp_conf/htdocs/admin/modules/core/page.trunks.php

    r3624 r3625  
    2525 
    2626// populate some global variables from the request string 
    27 $set_globals = array("outcid","maxchans","dialoutprefix","channelid","peerdetails","usercontext","userconfig","register","keepcid"); 
     27$set_globals = array("outcid","maxchans","dialoutprefix","channelid","peerdetails","usercontext","userconfig","register","keepcid","failtrunk","disabletrunk"); 
    2828foreach ($set_globals as $var) { 
    2929        if (isset($_REQUEST[$var])) { 
     
    3535if (!isset($keepcid)) { 
    3636        $keepcid = "off"; 
     37} 
     38// ensure that failtrunk is set to something: 
     39if (!isset($failtrunk)) { 
     40        $failtrunk = ""; 
     41} 
     42if (!isset($disabletrunk)) { 
     43        $disabletrunk = "off"; 
    3744} 
    3845 
     
    6067switch ($action) { 
    6168        case "addtrunk": 
    62                 $trunknum = core_trunks_add($tech, $channelid, $dialoutprefix, $maxchans, $outcid, $peerdetails, $usercontext, $userconfig, $register, $keepcid); 
     69                if (!isset($failtrunk)) 
     70                    $failtrunk=""; 
     71                $trunknum = core_trunks_add($tech, $channelid, $dialoutprefix, $maxchans, $outcid, $peerdetails, $usercontext, $userconfig, $register, $keepcid, trim($failtrunk),$disabletrunk); 
    6372                 
    6473                core_trunks_addDialRules($trunknum, $dialrules); 
     
    6776        break; 
    6877        case "edittrunk": 
    69                 core_trunks_edit($trunknum, $channelid, $dialoutprefix, $maxchans, $outcid, $peerdetails, $usercontext, $userconfig, $register, $keepcid); 
     78                if (!isset($failtrunk)) 
     79                    $failtrunk=""; 
     80                core_trunks_edit($trunknum, $channelid, $dialoutprefix, $maxchans, $outcid, $peerdetails, $usercontext, $userconfig, $register, $keepcid, trim($failtrunk), $disabletrunk); 
    7081                 
    7182                /* //DIALRULES 
     
    184195 
    185196foreach ($tresults as $tresult) { 
    186     echo "\t<li><a ".($extdisplay==$tresult[0] ? 'class="current"':'')." href=\"config.php?display=".urlencode($display)."&amp;extdisplay=".urlencode($tresult[0])."\" title=\"".urlencode($tresult[1])."\">"._("Trunk")." ".(strpos($tresult[1],'AMP:')===0 ? substr($tresult[1],4,15) : substr($tresult[1],0,15))."</a></li>\n"; 
     197        $background = ($tresult[2] == 'on')?'#DDD':'#FFF'; 
     198        echo "\t<li><a ".($extdisplay==$tresult[0] ? 'class="current"':'')." href=\"config.php?display=".urlencode($display)."&amp;extdisplay=".urlencode($tresult[0])."\" title=\"".urlencode($tresult[1])."\" style=\"background: $background;\" >"._("Trunk")." ".substr(ltrim($tresult[1],"AMP:"),0,15)."</a></li>\n"; 
    187199} 
    188200 
     
    214226                $dialoutprefix = ${"OUTPREFIX_".$trunknum}; 
    215227                $keepcid = isset(${"OUTKEEPCID_".$trunknum})?${"OUTKEEPCID_".$trunknum}:''; 
     228                $failtrunk = isset(${"OUTFAIL_".$trunknum})?${"OUTFAIL_".$trunknum}:''; 
     229                $failtrunk_enable = ($failtrunk == "")?'':'CHECKED'; 
     230                $disabletrunk = isset(${"OUTDISABLE_".$trunknum})?${"OUTDISABLE_".$trunknum}:''; 
    216231                 
    217232                if ($tech!="enum") { 
     
    340355                                </td> 
    341356                        </tr> 
     357 
     358                        <tr> 
     359                            <td><a class="info" href="#"><?php echo _("Disable Trunk")?><span><?php echo _("Check this to disable this trunk in all routes where it is used.")?></span></a>: 
     360                            </td> 
     361                            <td> 
     362                                <input type='checkbox' name='disabletrunk' id="disabletrunk" <?php if ($disabletrunk=="on") { echo 'CHECKED'; }?> OnClick='disable_verify(disabletrunk); return true;'><small><?php echo _("Disable")?></small> 
     363                            </td> 
     364                        </tr> 
     365 
     366                        <tr> 
     367                            <td><a class="info" href="#"><?php echo _("Monitor Trunk Failures")?><span><?php echo _("If checked, supply the name of a custom AGI Script that will be called to report, log, email or otherwise take some action on trunk failures that are not caused by either NOANSWER or CANCEL.")?></span></a>: 
     368                            </td> 
     369                            <td> 
     370                                <input <?php if (!$failtrunk_enable) echo "disabled style='background: #DDD;'"?> type="text" size="20" name="failtrunk" value="<?php echo htmlspecialchars($failtrunk)?>"/> 
     371                                <input type='checkbox' name='failtrunk_enable' id="failtrunk_enable" value='1' <?php if ($failtrunk_enable) { echo 'CHECKED'; }?> OnClick='disable_field(failtrunk,failtrunk_enable); return true;'><small><?php echo _("Enable")?></small> 
     372                            </td> 
     373                        </tr> 
     374 
    342375                        <tr> 
    343376                                <td colspan="2"> 
     
    388421                        <script language="javascript"> 
    389422                         
     423                        function disable_field(field, field_enable) { 
     424                            if (field_enable.checked) { 
     425                                field.style.backgroundColor = '#FFF'; 
     426                                field.disabled = false; 
     427                            } 
     428                            else { 
     429                                field.style.backgroundColor = '#DDD'; 
     430                                field.disabled = true; 
     431                            } 
     432                        } 
     433 
     434                        function disable_verify(field) { 
     435                            if (field.checked) { 
     436                                var answer=confirm("Are you sure you want to disable this trunk in all routes it is used?"); 
     437                                if (!answer) { 
     438                                    field.checked = false; 
     439                                } 
     440                            } 
     441                            else { 
     442                                alert("You have enabled this trunk in all routes it is used"); 
     443                            } 
     444                        } 
     445 
    390446                        function populateLookup(digits) { 
    391447<?php  
Donate



Support
Download
Develop
Forums
News
Documentation
Paid Support
About

Paid Ads