define("ADMIN_MODULE_NAME", "security"); require_once($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/include/prolog_admin_before.php"); CModule::IncludeModule('security'); IncludeModuleLangFile(__FILE__); /** * @global CUser $USER * @global CMain $APPLICATION **/ $canRead = $USER->CanDoOperation('security_iprule_settings_read'); $canWrite = $USER->CanDoOperation('security_iprule_settings_write'); if(!$canRead && !$canWrite) $APPLICATION->AuthForm(GetMessage("ACCESS_DENIED")); $arAccessTypes = array( "M" => GetMessage("SEC_IP_LIST_RULE_TYPE_M"), "A" => GetMessage("SEC_IP_LIST_RULE_TYPE_A"), ); $sTableID = "tbl_security_iprule_list"; $oSort = new CAdminSorting($sTableID, "SORT", "asc"); $lAdmin = new CAdminList($sTableID, $oSort); $FilterArr = Array( "find", "find_type", "find_rule_type", "find_active", "find_admin_section", "find_site_id", "find_name", "find_ip", "find_path", ); $lAdmin->InitFilter($FilterArr); $arFilter = Array( "=RULE_TYPE" => $find_rule_type, "=ACTIVE" => $find_active, "=ADMIN_SECTION" => $find_admin_section, "=SITE_ID" => $find_site_id, "%NAME" => ($find!="" && $find_type == "name"? $find: $find_name), "IP" => ($find!="" && $find_type == "ip"? $find: $find_ip), "PATH" => ($find!="" && $find_type == "path"? $find: $find_path), ); foreach($arFilter as $key=>$value) if(!$value) unset($arFilter[$key]); if($lAdmin->EditAction() && $canWrite) { foreach($FIELDS as $ID=>$arFields) { if(!$lAdmin->IsUpdated($ID)) continue; $cData = new CSecurityIPRule; if(!$cData->Update($ID, $arFields)) $lAdmin->AddGroupError(GetMessage("SEC_IP_LIST_UPDATE_ERROR")." ".$cData->LAST_ERROR, $ID); } } if(($arID = $lAdmin->GroupAction()) && $canWrite) { if($_REQUEST['action_target']=='selected') { $cData = new CSecurityIPRule; $rsData = $cData->GetList(array('ID'), $arFilter, array()); while($arRes = $rsData->Fetch()) $arID[] = $arRes['ID']; } foreach($arID as $ID) { if($ID == '') continue; $ID = intval($ID); switch($_REQUEST['action']) { case "delete": if(!CSecurityIPRule::Delete($ID)) $lAdmin->AddGroupError(GetMessage("SEC_IP_LIST_DELETE_ERROR"), $ID); break; } } } $arHeaders = array( array( "id" => "ID", "content" => GetMessage("SEC_IP_LIST_ID"), "align" => "right", "sort" => "ID", // "default" => true, ), array( "id" => "RULE_TYPE", "content" => GetMessage("SEC_IP_LIST_RULE_TYPE"), "align" => "left", "sort" => "RULE_TYPE", // "default" => true, ), array( "id" => "ACTIVE", "content" => GetMessage("SEC_IP_LIST_ACTIVE"), "align" => "center", "default" => true, ), array( "id" => "ADMIN_SECTION", "content" => GetMessage("SEC_IP_LIST_ADMIN_SECTION"), "align" => "center", // "default" => true, ), array( "id" => "SITE_ID", "content" => GetMessage("SEC_IP_LIST_SITE_ID"), "align" => "center", // "default" => true, ), array( "id" => "SORT", "content" => GetMessage("SEC_IP_LIST_SORT"), "align" => "right", "sort" => "SORT", "default" => true, ), array( "id" => "NAME", "content" => GetMessage("SEC_IP_LIST_NAME"), "align" => "left", "sort" => "NAME", "default" => true, ), array( "id" => "ACTIVE_FROM", "content" => GetMessage("SEC_IP_LIST_ACTIVE_FROM"), "align" => "left", "sort" => "ACTIVE_FROM", // "default" => true, ), array( "id" => "ACTIVE_TO", "content" => GetMessage("SEC_IP_LIST_ACTIVE_TO"), "align" => "left", "sort" => "ACTIVE_TO", // "default" => true, ), array( "id" => "INCL_PATH", "content" => GetMessage("SEC_IP_LIST_INCL_PATH"), "align" => "left", "default" => true, ), array( "id" => "EXCL_PATH", "content" => GetMessage("SEC_IP_LIST_EXCL_PATH"), "align" => "left", "default" => true, ), array( "id" => "INCL_IP", "content" => GetMessage("SEC_IP_LIST_INCL_IP"), "align" => "left", "default" => true, ), array( "id" => "EXCL_IP", "content" => GetMessage("SEC_IP_LIST_EXCL_IP"), "align" => "left", "default" => true, ), ); $lAdmin->AddHeaders($arHeaders); $arSelectedFields = $lAdmin->GetVisibleHeaderColumns(); if(!is_array($arSelectedFields) || (count($arSelectedFields) < 1)) $arSelectedFields = array( "ID", "RULE_TYPE", "ACTIVE", "ADMIN_SECTION", "SITE_ID", "SORT", "NAME", "ACTIVE_FROM", "ACTIVE_TO", ); $arVisibleColumnsMap = array(); foreach($arSelectedFields as $value) $arVisibleColumnsMap[$value] = true; if(array_key_exists("ACTIVE_FROM", $arVisibleColumnsMap)) $arSelectedFields[] = "ACTIVE_FROM_TIMESTAMP"; if(array_key_exists("ACTIVE_TO", $arVisibleColumnsMap)) $arSelectedFields[] = "ACTIVE_TO_TIMESTAMP"; $cData = new CSecurityIPRule; $rsData = $cData->GetList($arSelectedFields, $arFilter, array($by => $order, "ID" => "DESC")); $rsData = new CAdminResult($rsData, $sTableID); $rsData->NavStart(); $lAdmin->NavText($rsData->GetNavPrint(GetMessage("SEC_IP_LIST_PAGER"))); $current_time = time(); while($arRes = $rsData->NavNext(true, "f_")): $row =& $lAdmin->AddRow($f_ID, $arRes); if (isset($f_ADMIN_SECTION)) { $row->AddViewField("ADMIN_SECTION", $f_ADMIN_SECTION=="Y"? GetMessage("MAIN_YES"): GetMessage("MAIN_NO")); } if (isset($f_RULE_TYPE)) { $row->AddViewField("RULE_TYPE", $arAccessTypes[$f_RULE_TYPE]); } if( $f_ACTIVE == "Y" && ($f_ACTIVE_FROM == "" || intval($f_ACTIVE_FROM_TIMESTAMP) < $current_time) && ($f_ACTIVE_TO == "" || intval($f_ACTIVE_TO_TIMESTAMP) > $current_time) ) { $row->AddViewField("ACTIVE", '
'); } else { $row->AddViewField("ACTIVE", ''); } if(array_key_exists("INCL_PATH", $arVisibleColumnsMap)) { $arMasks = CSecurityIPRule::GetRuleInclMasks($f_ID); foreach($arMasks as $i => $mask) $arMasks[$i] = htmlspecialcharsex($mask); $row->AddViewField("INCL_PATH", implode("