%PDF- %PDF-
| Direktori : /home/bitrix/www/bitrix/modules/security/admin/ |
| Current File : //home/bitrix/www/bitrix/modules/security/admin/security_iprule_edit.php |
<?
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
* @global CDataBase $DB
**/
$canRead = $USER->CanDoOperation('security_iprule_settings_read');
$canWrite = $USER->CanDoOperation('security_iprule_settings_write');
if(!$canRead && !$canWrite)
$APPLICATION->AuthForm(GetMessage("ACCESS_DENIED"));
$aTabs = array(
array(
"DIV" => "edit1",
"TAB" => GetMessage("SEC_IP_EDIT_TAB"),
"ICON"=>"main_user_edit",
"TITLE"=>GetMessage("SEC_IP_EDIT_TAB_TITLE"),
),
);
$tabControl = new CAdminTabControl("tabControl", $aTabs, true, true);
$ID = intval($_REQUEST["ID"]); // Id of the edited record
$strError = "";
$bVarsFromForm = false;
$bShowForce = false;
$message = CSecurityIPRule::CheckAntiFile(true);
if($_SERVER["REQUEST_METHOD"] == "POST" && $_REQUEST["save"].$_REQUEST["apply"] !="" && $canWrite && check_bitrix_sessid())
{
if(!is_array($_POST["INCL_IPS"]))
$inclIps = array($_POST["INCL_IPS"]);
else
$inclIps = $_POST["INCL_IPS"];
$filteredInclIps = preg_grep("#^\d{1,3}(\.\d{1,3}){3}#", $inclIps);
if(empty($filteredInclIps))
$APPLICATION->ThrowException(GetMessage("SEC_IP_EDIT_SAVE_ERROR_EMPTY_INCL_IPS"));
unset($inclIps);
if(!is_array($_POST["INCL_MASKS"]))
$inclMasks = array($_POST["INCL_MASKS"]);
else
$inclMasks = $_POST["INCL_MASKS"];
$filteredInclMasks = preg_grep("#^/#", $inclMasks);
if(empty($filteredInclMasks))
$APPLICATION->ThrowException(GetMessage("SEC_IP_EDIT_SAVE_ERROR_EMPTY_INCL_MASKS"));
unset($inclMasks);
if($e = $APPLICATION->GetException())
{
$message = new CAdminMessage(GetMessage("SEC_IP_EDIT_SAVE_ERROR"), $APPLICATION->GetException());
$bVarsFromForm = true;
}
else
{
$ob = new CSecurityIPRule;
$selfBlock = $ob->CheckIP($_POST["INCL_IPS"], $_POST["EXCL_IPS"]);
if($selfBlock && (COption::GetOptionString("security", "ipcheck_allow_self_block")!=="Y"))
{
if($e = $APPLICATION->GetException())
$message = new CAdminMessage(GetMessage("SEC_IP_EDIT_SAVE_ERROR"), $e);
$bVarsFromForm = true;
}
elseif($selfBlock && $_POST["USE_THE_FORCE_LUK"]!=="Y")
{
if($e = $APPLICATION->GetException())
$message = new CAdminMessage(GetMessage("SEC_IP_EDIT_SAVE_ERROR"), $e);
$bVarsFromForm = true;
$bShowForce = true;
}
else
{
$arFields = array(
"RULE_TYPE" => "M",
"ACTIVE" => $_POST["ACTIVE"],
"ADMIN_SECTION" => $_POST["ADMIN_SECTION"],
"SITE_ID" => $_POST["SITE_ID"]=="NOT_REF"? false: $_POST["SITE_ID"],
"SORT" => $_POST["SORT"],
"NAME" => $_POST["NAME"],
"ACTIVE_FROM" => $_POST["ACTIVE_FROM"],
"ACTIVE_TO" => $_POST["ACTIVE_TO"],
"INCL_IPS" => $_POST["INCL_IPS"],
"EXCL_IPS" => $_POST["EXCL_IPS"],
"INCL_MASKS" => $_POST["INCL_MASKS"],
"EXCL_MASKS" => $_POST["EXCL_MASKS"],
);
if($ID > 0)
{
$res = $ob->Update($ID, $arFields);
}
else
{
$ID = $ob->Add($arFields);
$res = ($ID>0);
}
if($res)
{
if($_REQUEST["apply"] != "")
LocalRedirect("/bitrix/admin/security_iprule_edit.php?ID=".$ID."&lang=".LANG."&".$tabControl->ActiveTabParam());
else
LocalRedirect("/bitrix/admin/security_iprule_list.php?lang=".LANG);
}
else
{
if($e = $APPLICATION->GetException())
$message = new CAdminMessage(GetMessage("SEC_IP_EDIT_SAVE_ERROR"), $e);
$bVarsFromForm = true;
}
}
}
}
ClearVars("str_");
$str_ACTIVE = "Y";
$str_ADMIN_SECTION = "Y";
$str_SITE_ID = "";
$str_SORT = "500";
$str_NAME = "";
$str_ACTIVE_FROM = "";
$str_ACTIVE_TO = "";
if($ID>0)
{
$rs = CSecurityIPRule::GetList(array(), array("=ID"=>$ID), array());
if(!$rs->ExtractFields("str_"))
$ID = 0;
}
if($bVarsFromForm)
$DB->InitTableVarsForEdit("b_sec_iprule", "", "str_");
$APPLICATION->SetTitle(($ID>0? GetMessage("SEC_IP_EDIT_EDIT_TITLE") : GetMessage("SEC_IP_EDIT_ADD_TITLE")));
CUtil::InitJSCore();
$APPLICATION->AddHeadScript('/bitrix/js/security/admin/interface.js');
require($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/include/prolog_admin_after.php");
$aMenu = array(
array(
"TEXT" => GetMessage("SEC_IP_EDIT_MENU_LIST"),
"TITLE" => GetMessage("SEC_IP_EDIT_MENU_LIST_TITLE"),
"LINK" => "security_iprule_list.php?lang=".LANG,
"ICON" => "btn_list",
)
);
if($ID > 0)
{
$aMenu[] = array("SEPARATOR"=>"Y");
$aMenu[] = array(
"TEXT" => GetMessage("SEC_IP_EDIT_MENU_ADD"),
"TITLE" => GetMessage("SEC_IP_EDIT_MENU_ADD_TITLE"),
"LINK" => "security_iprule_edit.php?lang=".LANG,
"ICON" => "btn_new",
);
$aMenu[] = array(
"TEXT" => GetMessage("SEC_IP_EDIT_MENU_DELETE"),
"TITLE" => GetMessage("SEC_IP_EDIT_MENU_DELETE_TITLE"),
"LINK" => "javascript:if(confirm('".GetMessage("SEC_IP_EDIT_MENU_DELETE_CONF")."'))window.location='security_iprule_list.php?ID=".$ID."&action=delete&lang=".LANG."&".bitrix_sessid_get()."';",
"ICON" => "btn_delete",
);
}
$context = new CAdminContextMenu($aMenu);
$context->Show();
if($message)
echo $message->Show();
?>
<form method="POST" action="<?echo $APPLICATION->GetCurPage()?>" enctype="multipart/form-data" name="editform">
<?
$tabControl->Begin();
?>
<?
$tabControl->BeginNextTab();
?>
<?if($ID > 0):?>
<tr>
<td><?echo GetMessage("SEC_IP_EDIT_ID")?>:</td>
<td><?echo $str_ID;?></td>
</tr>
<?endif?>
<tr>
<td width="40%"><?echo GetMessage("SEC_IP_EDIT_ACTIVE")?>:</td>
<td width="60%"><input type="checkbox" name="ACTIVE" value="Y"<?if($str_ACTIVE == "Y") echo " checked"?>></td>
</tr>
<tr>
<td width="40%"><?echo GetMessage("SEC_IP_EDIT_ADMIN_SECTION")?>:</td>
<td width="60%"><input type="checkbox" name="ADMIN_SECTION" value="Y"<?if($str_ADMIN_SECTION == "Y") echo " checked"?>></td>
</tr>
<tr>
<td width="40%"><?echo GetMessage("SEC_IP_EDIT_SITE_ID")?>:</td>
<td width="60%"><?echo CLang::SelectBox("SITE_ID", $str_SITE_ID, GetMessage("MAIN_ALL"));?></td>
</tr>
<tr>
<td><?echo GetMessage("SEC_IP_EDIT_SORT")?>:</td>
<td><input type="text" size="5" name="SORT" value="<?echo $str_SORT?>"></td>
</tr>
<tr>
<td><?echo GetMessage("SEC_IP_EDIT_NAME")?>:</td>
<td><input type="text" size="45" name="NAME" value="<?echo $str_NAME?>"></td>
</tr>
<tr>
<td><?echo GetMessage("SEC_IP_EDIT_ACTIVE_FROM")?>:</td>
<td><?echo CAdminCalendar::CalendarDate("ACTIVE_FROM", $str_ACTIVE_FROM, 19, true)?></td>
</tr>
<tr>
<td><?echo GetMessage("SEC_IP_EDIT_ACTIVE_TO")?>:</td>
<td><?echo CAdminCalendar::CalendarDate("ACTIVE_TO", $str_ACTIVE_TO, 19, true)?></td>
</tr>
<tr class="adm-detail-required-field">
<td class="adm-detail-valign-top"><?echo GetMessage("SEC_IP_EDIT_INCL_IPS")?>:<br><?echo GetMessage("SEC_IP_EDIT_INCL_IPS_SAMPLE")?></td>
<td>
<table cellpadding="0" cellspacing="0" border="0" class="nopadding" width="100%" id="tbINCL_IPS">
<?if($bVarsFromForm)
$arIPs = $_POST["INCL_IPS"];
else
$arIPs = CSecurityIPRule::GetRuleInclIPs($ID);
foreach($arIPs as $i => $ip):?>
<tr><td style="padding-bottom: 3px;">
<input type="text" size="30" value="<?echo htmlspecialcharsbx($ip)?>" name="INCL_IPS[<?echo htmlspecialcharsbx($i)?>]">
</td></tr>
<?endforeach;
if(!$bVarsFromForm):?>
<tr class="security-addable-row"><td style="padding-bottom: 3px;">
<input type="text" size="30" value="" name="INCL_IPS[n0]">
</td></tr>
<?endif;?>
<tr><td>
<input type="button" id="add-button-incl-ips" value="<?echo GetMessage("SEC_IP_EDIT_ROW_ADD")?>">
</td></tr>
</table>
</td>
</tr>
<tr>
<td class="adm-detail-valign-top" style="padding-top:12px;"><?echo GetMessage("SEC_IP_EDIT_EXCL_IPS")?>:</td>
<td>
<table cellpadding="0" cellspacing="0" border="0" class="nopadding" width="100%" id="tbEXCL_IPS">
<?if($bVarsFromForm)
$arIPs = $_POST["EXCL_IPS"];
else
$arIPs = CSecurityIPRule::GetRuleExclIPs($ID);
foreach($arIPs as $i => $ip):?>
<tr><td style="padding-bottom: 3px;">
<input type="text" size="30" value="<?echo htmlspecialcharsbx($ip)?>" name="EXCL_IPS[<?echo htmlspecialcharsbx($i)?>]">
</td></tr>
<?endforeach;
if(!$bVarsFromForm):?>
<tr class="security-addable-row"><td style="padding-bottom: 3px;">
<input type="text" size="30" value="" name="EXCL_IPS[n0]">
</td></tr>
<?endif;?>
<tr><td>
<input type="button" id="add-button-excl-ips" value="<?echo GetMessage("SEC_IP_EDIT_ROW_ADD")?>">
</td></tr>
</table>
</td>
</tr>
<tr class="adm-detail-required-field">
<td class="adm-detail-valign-top"><?echo GetMessage("SEC_IP_EDIT_INCL_MASKS")?>:<br><?echo GetMessage("SEC_IP_EDIT_INCL_MASKS_SAMPLE")?></td>
<td>
<table cellpadding="0" cellspacing="0" border="0" class="nopadding" width="100%" id="tbINCL_PATH">
<?if($bVarsFromForm)
$arMasks = $_POST["INCL_MASKS"];
else
$arMasks = CSecurityIPRule::GetRuleInclMasks($ID);
foreach($arMasks as $i => $mask):?>
<tr><td style="padding-bottom: 3px;">
<input type="text" size="45" value="<?echo htmlspecialcharsbx($mask)?>" name="INCL_MASKS[<?echo htmlspecialcharsbx($i)?>]">
</td></tr>
<?endforeach;
if(!$bVarsFromForm):?>
<tr class="security-addable-row"><td style="padding-bottom: 3px;">
<input type="text" size="45" value="" name="INCL_MASKS[n0]">
</td></tr>
<?endif;?>
<tr><td>
<input type="button" id="add-button-incl-masks" value="<?echo GetMessage("SEC_IP_EDIT_ROW_ADD")?>">
</td></tr>
</table>
</td>
</tr>
<tr>
<td class="adm-detail-valign-top" style="padding-top:12px;"><?echo GetMessage("SEC_IP_EDIT_EXCL_MASKS")?>:</td>
<td>
<table cellpadding="0" cellspacing="0" border="0" class="nopadding" width="100%" id="tbEXCL_PATH">
<?if($bVarsFromForm)
$arMasks = $_POST["EXCL_MASKS"];
else
$arMasks = CSecurityIPRule::GetRuleExclMasks($ID);
foreach($arMasks as $i => $mask):?>
<tr><td style="padding-bottom: 3px;">
<input type="text" size="45" value="<?echo htmlspecialcharsbx($mask)?>" name="EXCL_MASKS[<?echo htmlspecialcharsbx($i)?>]">
</td></tr>
<?endforeach;
if(!$bVarsFromForm):?>
<tr class="security-addable-row"><td style="padding-bottom: 3px;">
<input type="text" size="45" value="" name="EXCL_MASKS[n0]">
</td></tr>
<?endif;?>
<tr><td>
<input type="button" id="add-button-excl-masks" value="<?echo GetMessage("SEC_IP_EDIT_ROW_ADD")?>">
</td></tr>
</table>
</td>
</tr>
<script id="security-interface-settings" type="application/json">
{
"addableRows": [
{
"tableId": "tbINCL_IPS",
"buttonId": "add-button-incl-ips"
},
{
"tableId": "tbEXCL_IPS",
"buttonId": "add-button-excl-ips"
},
{
"tableId": "tbINCL_PATH",
"buttonId": "add-button-incl-masks"
},
{
"tableId": "tbEXCL_PATH",
"buttonId": "add-button-excl-masks"
}
]
}
</script>
<?
$tabControl->Buttons(
array(
"disabled"=>(!$canWrite),
"back_url"=>"security_iprule_list.php?lang=".LANG,
)
);
?>
<?echo bitrix_sessid_post();?>
<input type="hidden" name="lang" value="<?echo LANG?>">
<?if($ID>0):?>
<input type="hidden" name="ID" value="<?=$ID?>">
<?endif;?>
<?if($bShowForce && (COption::GetOptionString("security", "ipcheck_allow_self_block")==="Y")):?>
<input type="hidden" name="USE_THE_FORCE_LUK" value="Y">
<?endif;?>
<?
$tabControl->End();
?>
</form>
<?
$tabControl->ShowWarnings("editform", $message);
?>
<?/*echo BeginNote();?>
<span class="required">*</span><?echo GetMessage("REQUIRED_FIELDS")?>
<?echo EndNote();*/?>
<?
require($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/include/epilog_admin.php");
?>