Done: ./htdocs/admin/modules/core/etc/extensions.conf:exten => DONTCALL,n,Zapateller() ./htdocs/admin/modules/core/functions.inc.php: $files[] = 'zapata_additional.conf'; ./htdocs/admin/modules/core/functions.inc.php: return $this->generate_zapata_additional($version); ./htdocs/admin/modules/core/functions.inc.php: case 'zapata_additional.conf': ./htdocs/admin/modules/core/functions.inc.php: return $this->generate_zapata_additional($version); ./htdocs/admin/modules/core/functions.inc.php: function generate_zapata_additional($ast_version) { ./htdocs/admin/modules/core/functions.inc.php: $table_name = "zap"; ./htdocs/admin/modules/core/functions.inc.php: $zapchannel=""; ./htdocs/admin/modules/core/functions.inc.php: $zapchannel = $result2['data']; ./htdocs/admin/modules/core/functions.inc.php: // These are not zapata.conf variables so keep out of file ./htdocs/admin/modules/core/functions.inc.php: $output .= "channel=>$zapchannel\n"; ./htdocs/admin/modules/core/functions.inc.php: $extens[] = array('destination' => 'app-blackhole,zapateller,1', 'description' => 'Play SIT Tone (Zapateller)', 'category' => $category); ./htdocs/admin/modules/core/functions.inc.php: case 'zapateller': ./htdocs/admin/modules/core/functions.inc.php: $description = 'Play SIT Tone (Zapateller)'; ./htdocs/admin/modules/core/functions.inc.php: $fcc = new featurecode($modulename, 'zapbarge'); ./htdocs/admin/modules/core/functions.inc.php: $fc_zapbarge = $fcc->getCodeActive(); ./htdocs/admin/modules/core/functions.inc.php: // zap barge ./htdocs/admin/modules/core/functions.inc.php: if ($fc_zapbarge != '') { ./htdocs/admin/modules/core/functions.inc.php: $ext->addInclude('from-internal-additional', 'app-zapbarge'); // Add the include from from-internal ./htdocs/admin/modules/core/functions.inc.php: $ext->add('app-zapbarge', $fc_zapbarge, '', new ext_macro('user-callerid')); ./htdocs/admin/modules/core/functions.inc.php: $ext->add('app-zapbarge', $fc_zapbarge, '', new ext_setvar('GROUP()','${CALLERID(number)}')); ./htdocs/admin/modules/core/functions.inc.php: $ext->add('app-zapbarge', $fc_zapbarge, '', new ext_answer('')); ./htdocs/admin/modules/core/functions.inc.php: $ext->add('app-zapbarge', $fc_zapbarge, '', new ext_wait(1)); ./htdocs/admin/modules/core/functions.inc.php: $ext->add('app-zapbarge', $fc_zapbarge, '', new ext_zapbarge('')); ./htdocs/admin/modules/core/functions.inc.php: $ext->add('app-zapbarge', $fc_zapbarge, '', new ext_hangup('')); ./htdocs/admin/modules/core/functions.inc.php: // Now create macro-from-zaptel-nnn for each defined channel to route it to the DID routing ./htdocs/admin/modules/core/functions.inc.php: foreach (core_zapchandids_list() as $row) { ./htdocs/admin/modules/core/functions.inc.php: $zap_context = "macro-from-zaptel-{$channel}"; ./htdocs/admin/modules/core/functions.inc.php: $ext->add($zap_context, 's', '', new ext_noop('Entering '.$zap_context.' with DID = ${DID} and setting to: '.$did)); ./htdocs/admin/modules/core/functions.inc.php: $ext->add($zap_context, 's', '', new ext_setvar('__FROM_DID',$did)); ./htdocs/admin/modules/core/functions.inc.php: $ext->add($zap_context, 's', '', new ext_goto('1',$did,'from-trunk')); ./htdocs/admin/modules/core/functions.inc.php: // value of on is disabled and for zap we don't create a context ./htdocs/admin/modules/core/functions.inc.php: $ext->add('app-blackhole', 'zapateller', '', new ext_noop('Blackhole Dest: Play SIT Tone')); ./htdocs/admin/modules/core/functions.inc.php: $ext->add('app-blackhole', 'zapateller', '', new ext_answer()); ./htdocs/admin/modules/core/functions.inc.php: $ext->add('app-blackhole', 'zapateller', '', new ext_zapateller()); ./htdocs/admin/modules/core/functions.inc.php: // $ext->add('app-blackhole', 'zapateller', '', new ext_hangup()); ./htdocs/admin/modules/core/functions.inc.php: $context = 'from-zaptel'; ./htdocs/admin/modules/core/functions.inc.php: $ext->add($context, $exten, '', new ext_noop('Entering from-zaptel with DID == ${DID}')); ./htdocs/admin/modules/core/functions.inc.php: $ext->add($context, $exten, '', new ext_gotoif('$["${CHANNEL:0:5}"="Dahdi"]', 'zapok', 'notzap')); ./htdocs/admin/modules/core/functions.inc.php: $ext->add($context, $exten, '', new ext_gotoif('$["${CHANNEL:0:3}"="Zap"]', 'zapok', 'notzap')); ./htdocs/admin/modules/core/functions.inc.php: $ext->add($context, $exten, 'notzap', new ext_goto('1', '${DID}', 'from-pstn')); ./htdocs/admin/modules/core/functions.inc.php: $ext->add($context, $exten, 'zapok', new ext_noop('Is a Zaptel Channel')); ./htdocs/admin/modules/core/functions.inc.php: $ext->add($context, $exten, '', new ext_macro('from-zaptel-${CHAN}', '${DID},1')); ./htdocs/admin/modules/core/functions.inc.php: $ext->add($context, $exten, '', new ext_noop('Returned from Macro from-zaptel-${CHAN}')); ./htdocs/admin/modules/core/functions.inc.php: [from-zaptel] ./htdocs/admin/modules/core/functions.inc.php:exten => s,1,NoOp(Entering from-zaptel with DID == ${DID}) ./htdocs/admin/modules/core/functions.inc.php:exten => s,n,GotoIf($["${CHANNEL:0:3}"="Zap"]?zapok:notzap) ./htdocs/admin/modules/core/functions.inc.php:exten => s,n(notzap),Goto(from-pstn,${DID},1) ./htdocs/admin/modules/core/functions.inc.php:exten => s,n(zapok),NoOp(Is a Zaptel Channel) ./htdocs/admin/modules/core/functions.inc.php:exten => s,n,Macro(from-zaptel-${CHAN},${DID},1) ./htdocs/admin/modules/core/functions.inc.php:exten => s,n,NoOp(Returned from Macro from-zaptel-${CHAN}) ./htdocs/admin/modules/core/functions.inc.php: case "ZAP": ./htdocs/admin/modules/core/functions.inc.php: //zap is an exception ./htdocs/admin/modules/core/functions.inc.php: if ( strtolower($tech) == "zap" ) { ./htdocs/admin/modules/core/functions.inc.php: $zapchan = $_REQUEST['devinfo_channel'] != '' ? $_REQUEST['devinfo_channel'] : $_REQUEST['channel']; ./htdocs/admin/modules/core/functions.inc.php: $dial = 'ZAP/'.$zapchan; ./htdocs/admin/modules/core/functions.inc.php: $dial = 'DAHDI/'.$zapchan; ./htdocs/admin/modules/core/functions.inc.php: //take care of sip/iax/zap config ./htdocs/admin/modules/core/functions.inc.php: //take care of sip/iax/zap config ./htdocs/admin/modules/core/functions.inc.php: //take care of sip/iax/zap config ./htdocs/admin/modules/core/functions.inc.php:function core_devices_addzap($account) { ./htdocs/admin/modules/core/functions.inc.php: $zapchan = $_REQUEST['devinfo_channel'] != '' ? $_REQUEST['devinfo_channel'] : $_REQUEST['channel']; ./htdocs/admin/modules/core/functions.inc.php: $zapfields[] = array($account, $keyword, 'ZAP/'.$zapchan); ./htdocs/admin/modules/core/functions.inc.php: $zapfields[] = array($account,'mailbox',$account.'@device'); ./htdocs/admin/modules/core/functions.inc.php: $zapfields[] = array($account, $keyword, $data); ./htdocs/admin/modules/core/functions.inc.php: if ( !is_array($zapfields) ) { // left for compatibilty....lord knows why ! ./htdocs/admin/modules/core/functions.inc.php: $zapfields = array( ./htdocs/admin/modules/core/functions.inc.php: $zapfields[] = array($account,'account',$account); ./htdocs/admin/modules/core/functions.inc.php: $zapfields[] = array($account,'callerid',($_REQUEST['description'])?$_REQUEST['description']." <".$account.'>':'device'." <".$account.'>'); ./htdocs/admin/modules/core/functions.inc.php: $zapfields[] = array($account,'record_in',($_REQUEST['record_in'])?$_REQUEST['record_in']:'On-Demand'); ./htdocs/admin/modules/core/functions.inc.php: $zapfields[] = array($account,'record_out',($_REQUEST['record_out'])?$_REQUEST['record_out']:'On-Demand'); ./htdocs/admin/modules/core/functions.inc.php: $compiled = $db->prepare('INSERT INTO zap (id, keyword, data) values (?,?,?)'); ./htdocs/admin/modules/core/functions.inc.php: $result = $db->executeMultiple($compiled,$zapfields); ./htdocs/admin/modules/core/functions.inc.php: die_freepbx($result->getMessage()."

error adding to ZAP table"); ./htdocs/admin/modules/core/functions.inc.php:function core_devices_delzap($account) { ./htdocs/admin/modules/core/functions.inc.php: $sql = "DELETE FROM zap WHERE id = '$account'"; ./htdocs/admin/modules/core/functions.inc.php:function core_devices_getzap($account) { ./htdocs/admin/modules/core/functions.inc.php: $sql = "SELECT keyword,data FROM zap WHERE id = '$account'"; ./htdocs/admin/modules/core/functions.inc.php:function core_zapchandids_add($description, $channel, $did) { ./htdocs/admin/modules/core/functions.inc.php: $sql = "INSERT INTO zapchandids (channel, description, did) VALUES ($channel, $description, $did)"; ./htdocs/admin/modules/core/functions.inc.php:function core_zapchandids_edit($description, $channel, $did) { ./htdocs/admin/modules/core/functions.inc.php: $sql = "UPDATE zapchandids SET description = $description, did = $did WHERE channel = $channel"; ./htdocs/admin/modules/core/functions.inc.php:function core_zapchandids_delete($channel) { ./htdocs/admin/modules/core/functions.inc.php: $sql = "DELETE FROM zapchandids WHERE channel = $channel"; ./htdocs/admin/modules/core/functions.inc.php:function core_zapchandids_list() { ./htdocs/admin/modules/core/functions.inc.php: $sql = "SELECT * FROM zapchandids ORDER BY channel"; ./htdocs/admin/modules/core/functions.inc.php:function core_zapchandids_get($channel) { ./htdocs/admin/modules/core/functions.inc.php: $sql = "SELECT * FROM zapchandids WHERE channel = $channel"; ./htdocs/admin/modules/core/functions.inc.php: $tech = strtolower( strtok($results[0][0],'/') ); // the technology. ie: ZAP/g0 is ZAP ./htdocs/admin/modules/core/functions.inc.php: //if no trunks have ever been defined, then create the proper variables with the default zap trunk ./htdocs/admin/modules/core/functions.inc.php: $glofields = array(array('OUT_1','ZAP/g0'), ./htdocs/admin/modules/core/functions.inc.php: $unique_trunks[] = array('OUT_1','ZAP/g0'); ./htdocs/admin/modules/core/functions.inc.php: $tname = strtok('/'); // the text _after_ technology. ie: ZAP/g0 is g0 ./htdocs/admin/modules/core/functions.inc.php: if ($tech == "zap") return ""; // zap has no details ./htdocs/admin/modules/core/functions.inc.php: if ($tech == "zap") return ""; // zap has no account ./htdocs/admin/modules/core/functions.inc.php: if ($tech == "zap") return ""; // zap has no details ./htdocs/admin/modules/core/functions.inc.php: if ($tech == "zap") return ""; // zap has no register ./htdocs/admin/modules/core/functions.inc.php: // zap ./htdocs/admin/modules/core/functions.inc.php: $currentcomponent->addgeneralarrayitem('devtechs', 'zap', $tmparr); ./htdocs/admin/modules/core/functions.inc.php: $currentcomponent->addoptlistitem('devicelist', 'zap_generic', _("Generic ZAP Device")); ./htdocs/admin/modules/callback/bin/callback://$channel = "zap/g0/".$uservm[$vmcontext][$vmextension]['options']['callme']; ./htdocs/admin/modules/asteriskinfo/page.asteriskinfo.php: "Zaptel driver info" => "zap show channels", ./htdocs/admin/modules/asteriskinfo/page.asteriskinfo.php: unset($arr_all['Zaptel driver info']); ./htdocs/admin/extensions.class.php:class ext_zapbarge extends extension { ./htdocs/admin/extensions.class.php: $command = 'ZapBarge'; ./htdocs/admin/extensions.class.php:class ext_zapateller extends extension { ./htdocs/admin/extensions.class.php: return "Zapateller(".$this->data.")"; ./htdocs/admin/extensions.class.php:$ext->add('default','123', 'dial1', new ext_dial('ZAP/1234')); ./htdocs/admin/extensions.class.php:exten => 123,1(dial1),Dial(ZAP/1234) ./htdocs/admin/modules/cidlookup/install.php:outn("Migrating channel routing to Zap DID routing.."); ./htdocs/admin/modules/cidlookup/install.php: $chan_prefix = 'zapchan'; ./htdocs/admin/modules/blacklist/module.xml: *2.5.0* #2956 no need to try and splice from-zaptel macros anymore ./htdocs/admin/modules/blacklist/module.xml: *1.1.2* #1638 remove duplicate of zapateller instruction ./htdocs/admin/modules/blacklist/functions.inc.php: $ext->add($id, $c, '', new ext_zapateller('')); ./bin/freepbx_engine: [ -e /dev/zap ] && chown -R $AMPDEVUSER:$AMPDEVGROUP /dev/zap ./bin/libfreepbx.confgen.php:function generate_configurations_zap($ast_version) { ./bin/libfreepbx.confgen.php: $zap_conf = $amp_conf['ASTETCDIR']."/zapata_additional.conf"; ./bin/libfreepbx.confgen.php: $channel_name = 'ZAP'; ./bin/libfreepbx.confgen.php: $zap_conf = $amp_conf['ASTETCDIR']."/chan_dahdi_additional.conf"; ./bin/libfreepbx.confgen.php: $table_name = "zap"; ./bin/libfreepbx.confgen.php: $zap_conf_fh = fopen($zap_conf,"w"); ./bin/libfreepbx.confgen.php: if ($zap_conf_fh === false) { ./bin/libfreepbx.confgen.php: fatal(_("Cannot write $channel_name configurations"),sprintf(_("Failed creating/overwriting $channel_name extensions file: %s"),$zap_conf)); ./bin/libfreepbx.confgen.php: fwrite($zap_conf_fh, $warning_banner); ./bin/libfreepbx.confgen.php: fwrite($zap_conf_fh,";;;;;;[$account]\n"); ./bin/libfreepbx.confgen.php: $zapchannel=""; ./bin/libfreepbx.confgen.php: $zapchannel = $result2['data']; ./bin/libfreepbx.confgen.php: fwrite($zap_conf_fh,$result2['keyword']."=".$result2['data']."\n"); ./bin/libfreepbx.confgen.php: fwrite($zap_conf_fh, "channel=>$zapchannel\n"); ./bin/libfreepbx.confgen.php: fwrite($zap_conf_fh, $additional."\n"); ./bin/libfreepbx.confgen.php: fclose($zap_conf_fh); ./bin/retrieve_conf: generate_configurations_zap($version); ./htdocs/admin/modules/dundicheck/functions.inc.php: // value of on is disabled and for zap we don't create a context ./htdocs/admin/modules/dundicheck/functions.inc.php: // value of on is disabled and for zap we don't create a context ./htdocs/admin/modules/backup/bin/ampbackup.pl: system ("/bin/tar -Pcz -f /tmp/ampbackups.$Stamp/configurations.tar.gz ".$ast{'astvarlibdir'}."/agi-bin/ ".$ast{'astvarlibdir'}."/bin/ /etc/asterisk $webroot/admin /etc/amportal.conf /etc/zaptel.conf /tmp/ampbackups.$Stamp/astdb.dump "); ./htdocs/admin/modules/backup/module.xml: *2.5.0.1* #2884 include zaptel.conf in backup ./agi-bin/phpagi.php: * agi_type - channel type (SIP, ZAP, IAX, ...) We wait with this (GUI stuff): ./htdocs/admin/modules/core/page.trunks.php: array('url'=> $baseURL.'tech=ZAP', 'tlabel' => _("Add Zap Trunk")), ./htdocs/admin/modules/core/page.trunks.php: if ($tech == "zap") { ./htdocs/admin/modules/core/page.trunks.php:
./htdocs/admin/modules/core/page.trunks.php: case "zap": ./htdocs/admin/modules/core/page.trunks.php:

The default setting is g0 (group zero).")?>

: ./htdocs/admin/modules/core/page.zapchandids.php:/** Zap Channel DIDs display for FreePBX 2.4 ./htdocs/admin/modules/core/page.zapchandids.php:$display = 'zapchandids'; ./htdocs/admin/modules/core/page.zapchandids.php: if (core_zapchandids_add($description, $channel, $did)) { ./htdocs/admin/modules/core/page.zapchandids.php: if (core_zapchandids_edit($description, $channel, $did)) { ./htdocs/admin/modules/core/page.zapchandids.php: core_zapchandids_delete($channel); ./htdocs/admin/modules/core/page.zapchandids.php:foreach (core_zapchandids_list() as $row) { ./htdocs/admin/modules/core/page.zapchandids.php: $row = core_zapchandids_get($extdisplay); ./htdocs/admin/modules/core/page.zapchandids.php: echo "

"._("Edit Zap Channel: ").$channel."

"; ./htdocs/admin/modules/core/page.zapchandids.php: echo "

"._("Add Zap Channel")."

"; ./htdocs/admin/modules/core/page.zapchandids.php:$helptext = _("Zap Channel DIDs allow you to assign a DID to specific Zap Channels. You can supply the same DID to multiple channels. This would be a common scenario if you have multiple POTS lines that are on a hunt group from your provider. You MUST assign the channel's context to from-zaptel for these settings to have effect. It will be a line that looks like:

context = from-zaptel

in your zapata.conf configuration effecting the specified channel(s). Once you have assigned DIDs you can use standard Inbound Routes with the specified DIDs to route your calls."); ./htdocs/admin/modules/core/page.zapchandids.php:
./htdocs/admin/modules/core/page.zapchandids.php: : ./htdocs/admin/modules/core/page.zapchandids.php:function checkZapchandid(theForm) { ./htdocs/admin/modules/core/page.zapchandids.php: var msgConfirmConvertDID = ""; ./htdocs/admin/modules/core/page.zapchandids.php: if (theForm.did.value.substring(0,7) == "zapchan") { ./htdocs/admin/modules/core/page.did.php: : ./htdocs/admin/modules/core/page.did.php: