HomeHelpTrac

Changeset 14560 for trunk/administration


Ignore:
Timestamp:
10/27/10 23:33:19 (19 months ago)
Author:
Alexander Trofimov
Message:

Ticket #2250

Location:
trunk/administration
Files:
5 added
2 deleted
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/administration/antispam.php

    r14546 r14560  
    107107                    'type' => 'text', 
    108108                    'name' => 'recheck', 
    109                     'caption' => _t('_sys_adm_fld_dnsbl_recheck'), 
     109                    'caption' => _t('_sys_adm_fld_dnsbl_recheck_url'), 
    110110                    'db' => array ( 
    111111                        'pass' => 'Xss',  
     
    146146} 
    147147     
     148 
     149 
     150class BxDolAdmFormDnsblRecheck extends BxTemplFormView { 
     151 
     152    function BxDolAdmFormDnsblRecheck ($sTitle, $sId) { 
     153 
     154        $aCustomForm = array( 
     155 
     156            'form_attrs' => array( 
     157                'id' => 'sys-adm-dnsbl-recheck', 
     158                'name' => 'sys-adm-dnsbl-recheck', 
     159                'onsubmit' => "return bs_sys_adm_dbsbl_recheck($('#$sId').val());", 
     160                'method' => 'post', 
     161            ),       
     162                   
     163            'inputs' => array( 
     164 
     165                'test' => array( 
     166                    'type' => 'text', 
     167                    'attrs' => array('id' => $sId), 
     168                    'name' => $sId, 
     169                    'caption' => $sTitle, 
     170                    'required' => true, 
     171                ), 
     172 
     173                'Submit' => array ( 
     174                    'type' => 'submit', 
     175                    'name' => 'dnsbl_recheck', 
     176                    'value' => _t('_Submit'), 
     177                    'colspan' => true, 
     178                ), 
     179            ),             
     180        ); 
     181 
     182        parent::BxTemplFormView ($aCustomForm); 
     183    } 
     184} 
     185 
    148186$logged['admin'] = member_auth( 1, true, true ); 
    149187 
     
    154192 
    155193    switch ($_GET['popup']) { 
     194 
     195        case 'dnsbl_log': 
     196            $sPopupTitle = _t('_sys_adm_title_dnsbl_log');   
     197            $sPopupContent = PageCodeLog ('dnsbl'); 
     198            break; 
     199 
     200        case 'dnsbluri_log': 
     201            $sPopupTitle = _t('_sys_adm_title_dnsbluri_log');   
     202            $sPopupContent = PageCodeLog ('dnsbluri'); 
     203            break; 
     204 
     205        case 'akismet_log': 
     206            $sPopupTitle = _t('_sys_adm_title_akismet_log');   
     207            $sPopupContent = PageCodeLog ('akismet'); 
     208            break; 
     209 
     210        case 'dnsbl_recheck': 
     211            $sPopupTitle = _t('_sys_adm_title_dnsbl_recheck'); 
     212            $aChains = array(BX_DOL_DNSBL_CHAIN_SPAMMERS, BX_DOL_DNSBL_CHAIN_WHITELIST); 
     213            $sPopupContent = PageCodeRecheckPopup ($aChains, _t('_sys_adm_fld_dnsbl_recheck'), 'sys-adm-dnsbl-test', 'dnsbl-recheck-ip'); 
     214            break; 
     215 
     216        case 'dnsbluri_recheck': 
     217            $sPopupTitle = _t('_sys_adm_title_dnsbluri_recheck'); 
     218            $aChains = array(BX_DOL_DNSBL_CHAIN_URIDNS); 
     219            $sPopupContent = PageCodeRecheckPopup ($aChains, _t('_sys_adm_fld_dnsbluri_recheck'), 'sys-adm-dnsbl-test', 'dnsbl-recheck-uri'); 
     220            break; 
     221 
    156222        case 'dnsbl_help': 
    157223            $sPopupTitle = _t('_sys_adm_btn_dnsbl_help'); 
    158             $sPopupContent = $GLOBALS['oAdmTemplate']->parseHtmlByName('dnsbl_help.html', array('text' => _t('_sys_adm_btn_dnsbl_help_text'))); 
     224            $sPopupContent = $GLOBALS['oAdmTemplate']->parseHtmlByName('antispam_dnsbl_help.html', array('text' => _t('_sys_adm_btn_dnsbl_help_text'))); 
    159225            break; 
    160226        case 'dnsbluri_help': 
    161227            $sPopupTitle = _t('_sys_adm_btn_dnsbl_help'); 
    162             $sPopupContent = $GLOBALS['oAdmTemplate']->parseHtmlByName('dnsbl_help.html', array('text' => _t('_sys_adm_btn_dnsbluri_help_text'))); 
     228            $sPopupContent = $GLOBALS['oAdmTemplate']->parseHtmlByName('antispam_dnsbl_help.html', array('text' => _t('_sys_adm_btn_dnsbluri_help_text'))); 
    163229            break; 
    164230        case 'dnsbl_add': 
     
    184250// Process actions 
    185251switch (true) { 
     252 
     253    case (isset($_GET['action']) && $_GET['action'] == 'log' && isset($_GET['type'])): 
     254        header("Content-type: text/html; charset=utf-8"); 
     255        echo PageCodeLog ($_GET['type']); 
     256        exit; 
     257 
     258    case (isset($_POST['action']) && isset($_POST['id']) && isset($_POST['test'])): 
     259 
     260        $o = bx_instance('BxDolDNSBlacklists'); 
     261        $aChain = $GLOBALS['MySQL']->getAll("SELECT `zonedomain`, `postvresp` FROM `sys_dnsbl_rules` WHERE `id` = '".(int)$_POST['id']."' AND `active` = 1"); 
     262         
     263        $iRet = BX_DOL_DNSBL_FAILURE; 
     264        if ($aChain) { 
     265            if ($_POST['action'] == 'dnsbl-recheck-ip') { 
     266                $iRet = $o->dnsbl_lookup_ip($aChain, $_POST['test']); 
     267            } elseif ($_POST['action'] == 'dnsbl-recheck-uri') { 
     268                $sUrl = preg_replace('/^\w+:\/\//', '', $_POST['test']); 
     269                $sUrl = preg_replace('/^www\./', '', $sUrl); 
     270                $oBxDolDNSURIBlacklists = bx_instance('BxDolDNSURIBlacklists'); 
     271                $aUrls = $oBxDolDNSURIBlacklists->validateUrls(array($sUrl));  
     272                if ($aUrls) 
     273                    $iRet = $o->dnsbl_lookup_uri($aUrls[0], $aChain); 
     274            } 
     275        } 
     276 
     277        switch ($iRet) { 
     278            case BX_DOL_DNSBL_POSITIVE: 
     279                echo 'LISTED'; 
     280                exit; 
     281            case BX_DOL_DNSBL_NEGATIVE: 
     282                echo 'NOT LISTED'; 
     283                exit; 
     284            default: 
     285            case BX_DOL_DNSBL_FAILURE: 
     286                echo 'FAIL'; 
     287                exit; 
     288        } 
    186289 
    187290    case (isset($_POST['adm-dnsbl-activate'])): 
     
    217320$aPages = array ( 
    218321    'dnsbl' => array ( 
     322        'option' => 'sys_dnsbl_enable', 
    219323        'title' => _t('_sys_adm_page_cpt_dnsbl'), 
    220324        'url' => BX_DOL_URL_ADMIN . 'antispam.php?mode=dnsbl', 
     
    223327    ), 
    224328    'dnsbluri' => array ( 
     329        'option' => 'sys_uridnsbl_enable', 
    225330        'title' => _t('_sys_adm_page_cpt_uridnsbl'), 
    226331        'url' => BX_DOL_URL_ADMIN . 'antispam.php?mode=dnsbluri', 
     
    229334    ), 
    230335    'akismet' => array ( 
     336        'option' => 'sys_akismet_enable', 
    231337        'title' => _t('_sys_adm_page_cpt_akismet'), 
    232338        'url' => BX_DOL_URL_ADMIN . 'antispam.php?mode=akismet', 
    233339        'func' => 'PageCodeAkismet', 
     340        'func_params' => array('akismet'), 
    234341    ), 
    235342); 
     
    271378function PageCodeDNSBL($aChains, $sMode) { 
    272379 
     380    global $aPages; 
     381 
    273382    $sControls = BxTemplSearchResult::showAdminActionsPanel('adm-dnsbl-form', array( 
    274383        'adm-dnsbl-delete' => _t('_sys_adm_btn_dnsbl_delete'), 
     
    284393    } 
    285394 
    286     $s = $GLOBALS['oAdmTemplate']->parseHtmlByName('manage_dnsbl.html', array( 
    287         'bx_repeat:items' => is_array($aRules) && !empty($aRules) ? $aRules : MsgBox(_t('_Empty')), 
    288         'controls' => $sControls, 
    289         'admin_url' => BX_DOL_URL_ADMIN, 
    290         'global_message' => $GLOBALS['sGlMsg'], 
    291         'mode' => $sMode, 
    292     )); 
     395    if (is_array($aRules) && !empty($aRules)) { 
     396        $s = $GLOBALS['oAdmTemplate']->parseHtmlByName('antispam_manage_dnsbl.html', array( 
     397            'bx_repeat:items' => $aRules, 
     398            'controls' => $sControls, 
     399            'admin_url' => BX_DOL_URL_ADMIN, 
     400            'global_message' => $GLOBALS['sGlMsg'], 
     401            'mode' => $sMode, 
     402            'status' => 'on' == getParam($aPages[$sMode]['option']) ? _t('_sys_adm_enabled') : _t('_sys_adm_disabled'), 
     403            'status_class' => 'sys-adm-' . ('on' == getParam($aPages[$sMode]['option']) ? 'enabled' : 'disabled'), 
     404        )); 
     405    } else { 
     406        $s = MsgBox(_t('_Empty')); 
     407    } 
    293408     
    294409    return DesignBoxContent ($GLOBALS['sPageTitle'], $s, 1, $GLOBALS['sActions']); 
    295410} 
    296411 
    297 function PageCodeAkismet() { 
    298     $s = 'TODO:'; 
     412function PageCodeAkismet($sMode) { 
     413 
     414    global $aPages; 
     415 
     416    $sKeyStatusClass = ''; 
     417    $sKeyStatus = _t('_sys_adm_akismet_key_empty'); 
     418    if (getParam('sys_akismet_api_key')) { 
     419 
     420        $oBxDolAkismet = bx_instance('BxDolAkismet'); 
     421        if ($oBxDolAkismet->oAkismet->isKeyValid()) { 
     422            $sKeyStatusClass = 'sys-adm-enabled'; 
     423            $sKeyStatus = _t('_sys_adm_akismet_key_valid'); 
     424        } else { 
     425            $sKeyStatusClass = 'sys-adm-disabled'; 
     426            $sKeyStatus = _t('_sys_adm_akismet_key_invalid'); 
     427        } 
     428    } 
     429 
     430    $s = $GLOBALS['oAdmTemplate']->parseHtmlByName('antispam_akismet.html', array( 
     431        'admin_url' => BX_DOL_URL_ADMIN, 
     432        'key_status' => $sKeyStatus, 
     433        'key_status_class' => $sKeyStatusClass, 
     434        'status' => 'on' == getParam($aPages[$sMode]['option']) ? _t('_sys_adm_enabled') : _t('_sys_adm_disabled'), 
     435        'status_class' => 'sys-adm-' . ('on' == getParam($aPages[$sMode]['option']) ? 'enabled' : 'disabled'), 
     436    )); 
     437 
    299438    return DesignBoxContent ($GLOBALS['sPageTitle'], $s, 1, $GLOBALS['sActions']); 
    300439} 
    301440 
    302441 
     442function PageCodeRecheckPopup ($aChains, $sFieldTitle, $sId, $sAction) { 
     443             
     444    $sChains = "'" . implode("','", $aChains) . "'"; 
     445    $aRules = $GLOBALS['MySQL']->getAll("SELECT * FROM `sys_dnsbl_rules` WHERE `chain` IN($sChains) AND `active` = 1 ORDER BY `chain`, `added` ");             
     446    $oForm = new BxDolAdmFormDnsblRecheck($sFieldTitle, $sId); 
     447    return $GLOBALS['oAdmTemplate']->parseHtmlByName('antispam_dnsbl_recheck.html', array( 
     448        'txt_listed' => bx_js_string(_t('_sys_adm_dnsbl_listed')), 
     449        'txt_not_listed' => bx_js_string(_t('_sys_adm_dnsbl_not_listed')), 
     450        'txt_failed' => bx_js_string(_t('_sys_adm_dnsbl_failed')), 
     451        'form' => $oForm->getCode(), 
     452        'action' => $sAction, 
     453        'admin_url' => BX_DOL_URL_ADMIN, 
     454        'bx_repeat:items' => $aRules, 
     455    )); 
     456} 
     457 
     458function PageCodeLog ($sMode) {  
     459     
     460    switch ($sMode) { 
     461        case 'dnsbl': 
     462        case 'dnsbluri': 
     463        case 'akismet': 
     464            break; 
     465        default: 
     466            $sMode = 'dnsbl'; 
     467    } 
     468 
     469    $iPage = isset($_GET['page']) && (int)$_GET['page'] > 0 ? (int)$_GET['page'] : 1;  
     470    $iPerPage = 12; 
     471    $iStart = ($iPage-1) * $iPerPage; 
     472     
     473    $aLog = $GLOBALS['MySQL']->getAll("SELECT SQL_CALC_FOUND_ROWS * FROM `sys_antispam_block_log` WHERE `type` = '$sMode' ORDER BY `added` DESC LIMIT $iStart, $iPerPage"); 
     474    $iCount = $GLOBALS['MySQL']->getOne("SELECT FOUND_ROWS()"); 
     475    foreach ($aLog as $k => $r) { 
     476        $aLog[$k]['ip'] = long2ip ($r['ip']); 
     477        $aLog[$k]['member_url'] = $r['member_id'] ? getProfileLink($r['member_id']) : 'javascript:void(0);'; 
     478        $aLog[$k]['member_nickname'] = $r['member_id'] ? getNickName($r['member_id']) : _t('_Guest'); 
     479        $aLog[$k]['extra'] = bx_html_attribute ($r['extra']); 
     480        $aLog[$k]['ago'] = _format_when (time() - $r['added']); 
     481    } 
     482 
     483    $sPaginate = ''; 
     484    if ($iCount > $iPerPage) { 
     485        $sUrlStart = BX_DOL_URL_ADMIN . 'antispam.php?action=log&type='.$sMode; 
     486        $oPaginate = new BxDolPaginate(array( 
     487            'page_url' => 'javascript:void(0);', 
     488            'count' => $iCount, 
     489            'per_page' => $iPerPage, 
     490            'page' => $iPage, 
     491            'on_change_page' => "getHtmlData('sys-adm-antispam-log', '{$sUrlStart}&page={page}');", 
     492        )); 
     493 
     494        $sPaginate = $oPaginate->getSimplePaginate(false, -1, -1, false); 
     495    } 
     496 
     497    if (is_array($aLog) && !empty($aLog)) { 
     498        return $GLOBALS['oAdmTemplate']->parseHtmlByName('antispam_log.html', array( 
     499            'bx_repeat:items' => $aLog, 
     500            'paginate' => $sPaginate, 
     501        )); 
     502    } else { 
     503        return MsgBox(_t('_Empty')); 
     504    } 
     505} 
     506 
    303507?> 
  • trunk/administration/templates/base/css/general.css

    r14544 r14560  
    485485    color:#999; 
    486486} 
     487 
     488.sys-adm-enabled {     
     489    color:#fff; 
     490    background-color:#0b0; 
     491} 
     492 
     493.sys-adm-disabled {     
     494    color:#fff; 
     495    background-color:#d00; 
     496} 
     497 
Note: See TracChangeset for help on using the changeset viewer.