_oTemplate->addJs('jquery.form.min.js');
bx_import('BxTemplFormView');
$oForm = new BxTemplFormView(array());
$oForm->addCssJs();
}
/**
* 'help' action handler
*/
public function performActionHelp()
{
bx_import('BxTemplFunctions');
$s = BxTemplFunctions::getInstance()->popupBox(
'bx_antispam_poppup_help',
_t('_bx_antispam_popup_help'),
_t('_bx_antispam_help_dnsbl')
);
$this->_echoResultJson(array('popup' => array('html' => $s)), true);
}
/**
* 'log' action handler
*/
public function performActionLog()
{
bx_import('BxDolModule');
$oModule = BxDolModule::getInstance('bx_antispam');
$sGrid = $oModule->serviceBlockLog();
if (!$sGrid) {
$this->_echoResultJson(array('msg' => _t('_sys_txt_error_occured')), true);
exit;
}
bx_import('BxTemplFunctions');
$s = BxTemplFunctions::getInstance()->popupBox(
'bx_antispam_popup_block_log',
_t('_bx_antispam_popup_block_log'),
$sGrid . ''
);
$this->_echoResultJson(array('popup' => array('html' => $s)), true);
}
/**
* 'recheck' action handler
*/
public function performActionRecheckItem()
{
bx_import('BxDolModule');
$oModule = BxDolModule::getInstance('bx_antispam');
$o = bx_instance('BxAntispamDNSBlacklists', array(), $oModule->_aModule);
$aChain = $o->getRule((int)bx_get('id'));
$iRet = BX_DOL_DNSBL_FAILURE;
if ($aChain) {
if (bx_get('chain') == 'dnsbl') {
$iRet = $o->dnsbl_lookup_ip($aChain, bx_process_input(bx_get('test')));
} elseif (bx_get('chain') == 'uridnsbl') {
$sUrl = preg_replace('/^\w+:\/\//', '', bx_process_input(bx_get('test')));
$sUrl = preg_replace('/^www\./', '', $sUrl);
$oBxDolDNSURIBlacklists = bx_instance('BxAntispamDNSURIBlacklists', array(), $oModule->_aModule);
$aUrls = $oBxDolDNSURIBlacklists->validateUrls(array($sUrl));
if ($aUrls)
$iRet = $o->dnsbl_lookup_uri($aUrls[0], $aChain);
}
}
$s = '';
switch ($iRet) {
case BX_DOL_DNSBL_POSITIVE:
$s = 'LISTED';
break;
case BX_DOL_DNSBL_NEGATIVE:
$s = 'NOT LISTED';
break;
default:
case BX_DOL_DNSBL_FAILURE:
$s = 'FAIL';
}
echo $s;
exit;
}
/**
* 'recheck' action handler
*/
public function performActionRecheck()
{
bx_import('BxDolModule');
$oModule = BxDolModule::getInstance('bx_antispam');
$oDNSBlacklists = bx_instance('BxAntispamDNSBlacklists', array(), $oModule->_aModule);
$aForm = array(
'form_attrs' => array(
'id' => 'bx_antispam_form_dnsbl_recheck',
'action' => BX_DOL_URL_ROOT . 'grid.php?o=bx_antispam_grid_dnsbl&a=recheck',
'onsubmit' => "return bx_antispam_recheck($('#bx_antispam_ip_url').val(), $('[name=dnsbl_uridnsbl]:checked').val());",
'method' => 'post',
),
'params' => array (
'db' => array(
'submit_name' => 'do_submit',
),
),
'inputs' => array(
'ip_url' => array(
'type' => 'text',
'name' => 'ip_url',
'value' => getVisitorIP(),
'caption' => _t('_bx_antispam_field_ip_url'),
'attrs' => array('id' => 'bx_antispam_ip_url'),
),
'dnsbl_uridnsbl' => array(
'type' => 'radio_set',
'name' => 'dnsbl_uridnsbl',
'caption' => _t('_bx_antispam_field_dnsbl_uridnsbl'),
'values' => array ('dnsbl' => _t('_bx_antispam_dnsbl'), 'uridnsbl' => _t('_bx_antispam_uri_dnsbl')),
'value' => 'dnsbl',
),
'submit' => array(
'type' => 'input_set',
0 => array (
'type' => 'submit',
'name' => 'do_submit',
'value' => _t('_sys_submit'),
),
1 => array (
'type' => 'reset',
'name' => 'close',
'value' => _t('_sys_close'),
'attrs' => array('class' => 'bx-def-margin-sec-left', 'onclick' => '$(\'.bx-popup-applied:visible\').dolPopupHide();'),
),
),
),
);
bx_import('BxTemplFormView');
$oForm = new BxTemplFormView($aForm);
$s = $oModule->_oTemplate->parseHtmlByName('recheck.html', array (
'form' => $oForm->getCode(),
'url_recheck_item' => BX_DOL_URL_ROOT . 'grid.php?o=bx_antispam_grid_dnsbl&a=recheck_item',
'bx_repeat:items' => $oDNSBlacklists->getRules(array(BX_DOL_DNSBL_CHAIN_SPAMMERS, BX_DOL_DNSBL_CHAIN_WHITELIST, BX_DOL_DNSBL_CHAIN_URIDNS)),
));
bx_import('BxTemplFunctions');
$s = BxTemplFunctions::getInstance()->popupBox($oForm->getId() . '_form', _t('_bx_antispam_popup_dnsbl_recheck'), $s);
$this->_echoResultJson(array('popup' => array('html' => $s, 'options' => array('closeOnOuterClick' => false))), true);
}
/**
* 'recheck' action handler
*/
public function performActionAdd()
{
bx_import('BxTemplFormView');
$aForm = array(
'form_attrs' => array(
'id' => 'bx_antispam_form_dnsbl_add',
'action' => BX_DOL_URL_ROOT . 'grid.php?o=bx_antispam_grid_dnsbl&a=add',
'method' => 'post',
),
'params' => array (
'db' => array(
'table' => 'bx_antispam_dnsbl_rules',
'key' => 'id',
'submit_name' => 'do_submit',
),
),
'inputs' => array(
'country' => array(
'type' => 'select',
'name' => 'country',
'caption' => _t('_bx_antispam_field_country'),
'values' => BxDolForm::getDataItems('Country'),
),
'chain' => array(
'type' => 'radio_set',
'name' => 'chain',
'caption' => _t('_bx_antispam_field_action'),
'values' => array ('spammers' => _t('_bx_antispam_chain_spammers'), 'whitelist' => _t('_bx_antispam_chain_whitelist')),
'value' => 'spammers',
),
'submit' => array(
'type' => 'input_set',
0 => array (
'type' => 'submit',
'name' => 'do_submit',
'value' => _t('_sys_submit'),
),
1 => array (
'type' => 'reset',
'name' => 'close',
'value' => _t('_sys_close'),
'attrs' => array('class' => 'bx-def-margin-sec-left', 'onclick' => '$(\'.bx-popup-applied:visible\').dolPopupHide();'),
),
),
),
);
$oForm = new BxTemplFormView($aForm);
$oForm->initChecker();
if ($oForm->isSubmittedAndValid()) { // if form is submitted and all fields are valid
$aCustomValues = array(
'chain' => $oForm->getCleanValue('chain'),
'zonedomain' => sprintf("%s.countries.nerd.dk.", strtolower($oForm->getCleanValue('country'))),
'postvresp' => '127.0.0.2',
'url' => 'http://countries.nerd.dk/',
'comment' => '_bx_antispam_rule_note_country',
'added' => time(),
'active' => 1,
);
$iRecentId = $oForm->insert ($aCustomValues, true); // insert new record
if ($iRecentId)
$aRes = array('grid' => $this->getCode(false), 'blink' => $iRecentId); // if record is successfully added, reload grid and highlight added row
else
$aRes = array('msg' => _t('_sys_txt_error_occured')); // if record adding failed, display error message
$this->_echoResultJson($aRes, true);
} else { // if form is not submitted or some fields are invalid, display popup with form
bx_import('BxTemplFunctions');
$s = BxTemplFunctions::getInstance()->popupBox($oForm->getId() . '_form', _t('_bx_antispam_popup_dnsbl_add'), $oForm->getCode() . '
');
$this->_echoResultJson(array('popup' => array('html' => $s, 'options' => array('closeOnOuterClick' => false))), true);
}
}
protected function _getCellChain ($mixedValue, $sKey, $aField, $aRow)
{
return parent::_getCellDefault (_t('_bx_antispam_chain_' . $mixedValue), $sKey, $aField, $aRow);
}
protected function _getCellZonedomain ($mixedValue, $sKey, $aField, $aRow)
{
$s = $mixedValue;
if ($aRow['url'])
$s = '' . $mixedValue . '';
return parent::_getCellDefault ($s, $sKey, $aField, $aRow);
}
protected function _getCellComment ($mixedValue, $sKey, $aField, $aRow)
{
$sCountry = '';
$aMatches = array();
if (preg_match('/^(\w{2})\.countries\.nerd\.dk\.$/', $aRow['zonedomain'], $aMatches) && isset($aMatches[1])) {
$sCountry = $aMatches[1];
}
return parent::_getCellDefault (_t($mixedValue, $sCountry), $sKey, $aField, $aRow);
}
protected function _getCellActions ($mixedValue, $sKey, $aField, $aRow)
{
if (preg_match('/^(\w{2})\.countries\.nerd\.dk\.$/', $aRow['zonedomain'], $aMatches)) {
$aRow['active'] = 1;
return parent::_getCellActions ($mixedValue, $sKey, $aField, $aRow);
}
return parent::_getCellDefault ('', $sKey, $aField, $aRow);
}
}
/** @} */