Skip to content

Commit

Permalink
Finished black/white list regular expression add-on
Browse files Browse the repository at this point in the history
  • Loading branch information
tm1000 committed Jul 18, 2011
1 parent f0df38e commit 7e9ddc3
Show file tree
Hide file tree
Showing 7 changed files with 144 additions and 30 deletions.
32 changes: 29 additions & 3 deletions agi/bwlist.agi
Original file line number Diff line number Diff line change
Expand Up @@ -5,8 +5,34 @@

$agi = new AGI();
$thenumber = $agi->request['agi_callerid'];

file_put_contents('/var/www/html/admin/modules/sak/agi/test.txt',$thenumber);

$sql = 'SELECT * FROM `sak_bwlist` ORDER BY `sort` ASC';

$list = $db->getAll($sql,array(), DB_FETCHMODE_ASSOC);

$matchfound = false;
foreach($list as $data) {
$count = 0;
if(preg_match("/".$data['nn']."/",$thenumber,$matches)) {
if($matches[0] == $thenumber) {
if($data['permit']) {
$matchfound = true;
$sql = 'SELECT count FROM sak_bwlist WHERE id = '.$data['id'];
$count = $db->getOne($sql);
$count++;
$sql = "UPDATE sak_bwlist SET count = '".$count."' WHERE id = ".$data['id'];
$db->query($sql);
break;
} else {
$agi->hangup();
break;
}
}
}
}

if(!$matchfound) {
$agi->hangup();
}

//$agi->hangup();

1 change: 0 additions & 1 deletion agi/test.txt

This file was deleted.

34 changes: 33 additions & 1 deletion functions.inc.php
Original file line number Diff line number Diff line change
Expand Up @@ -324,4 +324,36 @@ function sak_blacklist_chk($post){
return true;
}

?>
function sak_hookGet_config($engine) {
// TODO: integrating with direct extension <-> DID association
// TODO: add option to avoid callerid lookup if the telco already supply a callerid name (GosubIf)
global $ext; // is this the best way to pass this?
switch($engine) {
case "asterisk":
// Code from modules/core/functions.inc.php core_get_config inbound routes
$didlist = core_did_list();
if (is_array($didlist)) {
foreach ($didlist as $item) {

$exten = trim($item['extension']);
$cidnum = trim($item['cidnum']);

if ($cidnum != '' && $exten == '') {
$exten = 's';
$pricid = ($item['pricid']) ? true:false;
} else if (($cidnum != '' && $exten != '') || ($cidnum == '' && $exten == '')) {
$pricid = true;
} else {
$pricid = false;
}
$context = ($pricid) ? "ext-did-0001":"ext-did-0002";

$exten = (empty($exten)?"s":$exten);
$exten = $exten.(empty($cidnum)?"":"/".$cidnum); //if a CID num is defined, add it

$ext->splice($context, $exten, 2, new ext_agi(dirname(__FILE__).'/agi/bwlist.agi')); }
} // else no DID's defined. Not even a catchall.
break;
}
}
38 changes: 38 additions & 0 deletions install.php
Original file line number Diff line number Diff line change
Expand Up @@ -47,6 +47,44 @@ function outn($text) {
(1, 'dial_plan', '0'),
(2, 'dial_plan_exp', '0')";
$db->query($sql);

out('Creating New Black/White List Table');
$sql = "CREATE TABLE IF NOT EXISTS `sak_bwlist` (
`id` int(11) NOT NULL auto_increment,
`nn` varchar(50) NOT NULL,
`permit` int(1) NOT NULL,
`sort` int(11) NOT NULL,
`count` int(11) NOT NULL default '0',
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=10";
$db->query($sql);

out('Inserting Data Into Table');
$sql = "INSERT INTO `sak_bwlist` (`id`, `nn`, `permit`, `sort`, `count`) VALUES (0, '.*', 1, 0, 0)";
$db->query($sql);

$sql = 'UPDATE `asterisk`.`sak_bwlist` SET `id` = \'0\' WHERE `sak_bwlist`.`id` = 10 LIMIT 1;';
$db->query($sql);
} elseif($ver < '2.0') {
out('Version Identified as '. $ver);

out('Creating New Black/White List Table');
$sql = "CREATE TABLE IF NOT EXISTS `sak_bwlist` (
`id` int(11) NOT NULL auto_increment,
`nn` varchar(50) NOT NULL,
`permit` int(1) NOT NULL,
`sort` int(11) NOT NULL,
`count` int(11) NOT NULL default '0',
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=10";
$db->query($sql);

out('Inserting Data Into Table');
$sql = "INSERT INTO `sak_bwlist` (`id`, `nn`, `permit`, `sort`, `count`) VALUES (0, '.*', 1, 0, 0)";
$db->query($sql);

$sql = 'UPDATE `asterisk`.`sak_bwlist` SET `id` = \'0\' WHERE `sak_bwlist`.`id` = 10 LIMIT 1;';
$db->query($sql);
} else {
out('Version Identified as '. $ver);
}
Expand Down
6 changes: 4 additions & 2 deletions module.xml
Original file line number Diff line number Diff line change
Expand Up @@ -2,18 +2,20 @@
<rawname>sak</rawname>
<repo>standard</repo>
<name>Swiss Army Knife</name>
<version>1.1.3</version>
<version>2.0</version>
<publisher>Andrew Nagy</publisher>
<license>MPLv1.1</license>
<type>tool</type>
<category>Swiss Army Knife!!</category>
<menuitems>
<sak_blacklist_mod needsenginedb="yes" sort="1">Blacklist (Modified)</sak_blacklist_mod>
<sak_advanced_settings sort="9">Settings</sak_advanced_settings>
<sak_blacklist_adv needsenginedb="yes" sort="2">Black/White List</sak_blacklist_adv>
<sak_blacklist_adv needsenginedb="yes" sort="2">Black/White List Advanced</sak_blacklist_adv>
</menuitems>
<description>I miss a feature. So it winds up here</description>
<changelog>
*2.0* Added new black/white list Regular Expression Module
*1.1.3* Completely hid and replaced dial pattern area
*1.1.2* dward: makes dial pattern wizards drop down work
*1.1.1* dward: Fixed Blank Page, Helped to Disable 'new dial patterns that will use this route'
*1.1.0* dward adjusted the display and parsing of numbers with prepend/prefix/callerid
Expand Down
60 changes: 37 additions & 23 deletions page.sak_blacklist_adv.php
Original file line number Diff line number Diff line change
@@ -1,8 +1,13 @@
<?php
if((isset($_REQUEST['submit'])) && (!empty($_REQUEST['nn']))) {
if((isset($_REQUEST['submit'])) && ((!empty($_REQUEST['nn'])) OR (isset($_REQUEST['edit'])))) {
$permit = ($_REQUEST['permit']) ? '1' : '0';

$db->query("INSERT INTO sak_bwlist (nn, permit, sort) VALUES ('".$_REQUEST['nn']."', '".$permit."', 1)");
if(isset($_REQUEST['edit'])) {
$_REQUEST['nn'] = (isset($_REQUEST['nn'])) ? $_REQUEST['nn'] : '.*';
$db->query("UPDATE sak_bwlist SET nn = '".$_REQUEST['nn']."', permit = '".$permit."' WHERE id = ".$_REQUEST['edit']);
} else {
$db->query("INSERT INTO sak_bwlist (nn, permit, sort) VALUES ('".$_REQUEST['nn']."', '".$permit."', 1)");
}
}

if(isset($_REQUEST['delete'])) {
Expand All @@ -16,53 +21,62 @@
}

if(isset($_REQUEST['sortdown'])) {
$order = $db->getOne('SELECT sort FROM sak_bwlist WHERE id = '.$_REQUEST['sortup']);
$order = $db->getOne('SELECT sort FROM sak_bwlist WHERE id = '.$_REQUEST['sortdown']);
$order++;
$db->query("UPDATE sak_bwlist SET sort = '".$order."' WHERE id = ".$_REQUEST['sortup']);
$db->query("UPDATE sak_bwlist SET sort = '".$order."' WHERE id = ".$_REQUEST['sortdown']);
}

if(isset($_REQUEST['edit'])) {
$data = $db->getRow('SELECT * FROM sak_bwlist WHERE id = '.$_REQUEST['edit'], array(), DB_FETCHMODE_ASSOC);
$permit = ($data['permit']) ? 'selected' : '';
$deny = ($data['permit']) ? '' : 'selected';
$nn = $data['nn'];
$id = $data['id'];
} else {
$permit = $deny = $nn = '';
$id = 0;
}

$list = $db->getAll('SELECT * FROM sak_bwlist ORDER BY sort ASC',array(), DB_FETCHMODE_ASSOC);
?>
<script language="javascript">
function sak_change_option(select,id)
{
alert(select + id);
{
$('form:first').submit();
}
</script>
<form method="post" action="">
<h3>Regular Expression White/Black List</h3>
<form id="all" method="post" action="">
<table CELLPADDING="5" CELLSPACING="5">
<thead>
<td><strong><u>Name/Number</strong></u></td><td><strong><u>Permit/Deny</strong></u></td><td><strong><u>Order</strong></u></td><td><strong><u>Delete</strong></u></td>
<td><strong><u>Name/Number</strong></u></td><td><strong><u>Permit/Deny</strong></u></td><td><strong><u>Order</strong></u></td><td><strong><u>Edit</strong></u></td><td><strong><u>Delete</strong></u></td><td><strong><u>Times Matched</strong></u></td>
</thead>
<?php
$i = 0;
$end = count($list);
foreach($list as $data) {
$permit = ($data['permit']) ? 'selected' : '';
$deny = ($data['permit']) ? '' : 'selected';

$permit = ($data['permit']) ? 'Permit' : 'Deny';
?>
<tr>
<td align="center"><?=$data['nn']?></td>
<td align="center">
<select onchange="sak_change_option(this.options[this.selectedIndex].value,1)">
<option value="permit" <?=$permit?>>Permit</option>
<option value="deny" <?=$deny?>>Deny</option>
</select>
</td>
<td align="center"><?=$permit?></td>
<td align="center"><a href="config.php?type=tool&amp;display=sak_blacklist_adv&amp;sortdown=<?=$data['id']?>"><img src="images/scrolldown.gif"></a><a href="config.php?type=tool&amp;display=sak_blacklist_adv&amp;sortup=<?=$data['id']?>"><img src="images/scrollup.gif"></a></td>
<td align="center"><a href="config.php?type=tool&amp;display=sak_blacklist_adv&amp;delete=<?=$data['id']?>"><img src="images/delete.gif"></a></td>
<td align="center"><a href="config.php?type=tool&amp;display=sak_blacklist_adv&amp;edit=<?=$data['id']?>"><img src="images/edit.png"></a></td>
<td align="center"><?php if($data['id']) {?><a href="config.php?type=tool&amp;display=sak_blacklist_adv&amp;delete=<?=$data['id']?>"><img src="images/delete.gif"></a><?php } ?></td>
<td align="center"><?=$data['count']?></td>
</tr>
<?php $i++;} ?>
</table>
<br />
<br />
Name/Number: <input type="text" name="nn" />
Name/Number: <input type="text" name="nn" value="<?=$nn?>" <?php if((isset($_REQUEST['edit'])) && (!$id)) { echo 'disabled'; }?>/>
<select name="permit">
<option value="1">Permit</option>
<option value="0">Deny</option>
<option value="1" <?=$permit?>>Permit</option>
<option value="0" <?=$deny?>>Deny</option>
</select>
<br />
<input type="hidden" id="id" name="id" value="<?=$id?>" />
<input type="submit" name="submit" value="Submit" />

</form>
</form>
<br />
Need help building Regular Expressions? Check Out <a href="http://regexpal.com/" target="_blank">http://regexpal.com/</a>
3 changes: 3 additions & 0 deletions uninstall.php
Original file line number Diff line number Diff line change
@@ -1,4 +1,7 @@
<?php

$sql = 'DROP TABLE `sak_settings`';
$db->query($sql);

$sql = 'DROP TABLE `sak_bwlist`';
$db->query($sql);

0 comments on commit 7e9ddc3

Please sign in to comment.