#43 사이트 잠금기능 추가.

This commit is contained in:
bnu 2013-11-21 07:17:22 +09:00
parent a00f2d1033
commit 6ebf867277
9 changed files with 203 additions and 0 deletions

View file

@ -480,6 +480,31 @@ class adminAdminController extends admin
$this->setMessage('success_deleted');
}
function procAdminUpdateSitelock()
{
$vars = Context::getRequestVars();
$oInstallController = &getController('install');
$config_file = Context::getConfigFile();
$db_info = Context::getDbInfo();
$db_info->use_sitelock = ($vars->use_sitelock) ? $vars->use_sitelock : 'N';
$db_info->sitelock_title = $vars->sitelock_title;
$db_info->sitelock_message = $vars->sitelock_message;
$db_info->sitelock_whitelist = preg_replace("/[\r\n|\r|\n]+/", ",", $vars->sitelock_whitelist);
$buff = $oInstallController->_getDBConfigFileContents($db_info);
FileHandler::writeFile($config_file, $buff);
if(!in_array(Context::getRequestMethod(),array('XMLRPC','JSON')))
{
$returnUrl = Context::get('success_return_url') ? Context::get('success_return_url') : getNotEncodedUrl('', 'act', 'dispAdminConfigGeneral');
header('location:'.$returnUrl);
return;
}
}
}
/* End of file admin.admin.controller.php */
/* Location: ./modules/admin/admin.admin.controller.php */

View file

@ -412,6 +412,15 @@ class adminAdminView extends admin
Context::set('default_url', $db_info->default_url);
Context::set('langs', Context::loadLangSupported());
// site lock
if(!$db_info->sitelock_title) $db_info->sitelock_title = 'Maintenance in progress...';
if(!in_array($_SERVER['REMOTE_ADDR'], $db_info->sitelock_whitelist)) $db_info->sitelock_whitelist[] = $_SERVER['REMOTE_ADDR'];
Context::set('remote_addr', $_SERVER['REMOTE_ADDR']);
Context::set('use_sitelock', $db_info->use_sitelock);
Context::set('sitelock_title', $db_info->sitelock_title);
Context::set('sitelock_message', $db_info->sitelock_message);
Context::set('sitelock_whitelist', implode(PHP_EOL, $db_info->sitelock_whitelist));
Context::set('lang_selected', Context::loadLangSelected());
$admin_ip_list = preg_replace("/[,]+/", "\r\n", $db_info->admin_ip_list);

View file

@ -17,6 +17,7 @@
<action name="procAdminUpdateConfig" type="controller" />
<action name="procAdminDeleteLogo" type="controller" />
<action name="procAdminMenuReset" type="controller" />
<action name="procAdminUpdateSitelock" type="controller" />
<action name="getAdminFTPList" type="model" />
<action name="getAdminFTPPath" type="model" />

View file

@ -1503,4 +1503,23 @@
<value xml:lang="ko"><![CDATA[일]]></value>
<value xml:lang="en"><![CDATA[Sun]]></value>
</item>
<!-- site lock -->
<item name="use_sitelock">
<value xml:lang="ko"><![CDATA[사이트 잠금 사용]]></value>
</item>
<item name="sitelock_whitelist">
<value xml:lang="ko"><![CDATA[접근 허용 IP]]></value>
</item>
<item name="sitelock_title">
<value xml:lang="ko"><![CDATA[안내문 제목]]></value>
</item>
<item name="sitelock_message">
<value xml:lang="ko"><![CDATA[안내문 내용]]></value>
</item>
<item name="sitelock_warning_whitelist">
<value xml:lang="ko"><![CDATA[이곳에 관리자의 IP가 반드시 포함되어야 합니다.<br>만약 접근이 차단된 경우 './files/config/db.config.php' 파일에서 `$db_info->use_sitelock`를 'N'으로 변경하여 차단을 해제할 수 있습니다.]]></value>
</item>
<item name="your_ip">
<value xml:lang="ko"><![CDATA[접속하신 IP]]></value>
</item>
</lang>

View file

@ -0,0 +1,15 @@
<?xml version="1.0" encoding="utf-8"?>
<ruleset version="1.5.0">
<fields>
<field name="use_sitelock" required="true" />
<field name="sitelock_whitelist">
<if test="$use_sitelock == 'Y'" attr="required" value="true" />
</field>
<field name="sitelock_title">
<if test="$use_sitelock == 'Y'" attr="required" value="true" />
</field>
<field name="sitelock_message">
<if test="$use_sitelock == 'Y'" attr="required" value="true" />
</field>
</fields>
</ruleset>

View file

@ -199,6 +199,52 @@
</div>
</form>
</section>
<section class="section !collapsed">
<h1>사이트 잠금</h1>
<form action="./" method="post" enctype="multipart/form-data" class="x_form-horizontal" ruleset="sitelock">
<input type="hidden" name="module" value="admin" />
<input type="hidden" name="act" value="procAdminUpdateSitelock" />
<input type="hidden" name="xe_validator_id" value="modules/admin/tpl/config_general/1" />
<div class="x_control-group">
<label class="x_control-label">{$lang->use_sitelock} <a class="x_icon-question-sign" href="./admin/help/index.html#UMAN_config_general_sitelock" target="_blank">{$lang->help}</a></label>
<div class="x_controls">
<label for="use_sitelock_y" class="x_inline"><input type="radio" name="use_sitelock" id="use_sitelock_y" value="Y" checked="checked"|cond="$use_sitelock=='Y'" /> {$lang->cmd_yes}</label>
<label for="use_sitelock_n" class="x_inline"><input type="radio" name="use_sitelock" id="use_sitelock_n" value="N" checked="checked"|cond="$use_sitelock!='Y'" /> {$lang->cmd_no}</label>
</div>
</div>
<div class="x_control-group">
<label class="x_control-label" for="sitelock_whitelist">{$lang->sitelock_whitelist} <a class="x_icon-question-sign" href="./admin/help/index.html#UMAN_config_general_sitelock_whitelist" target="_blank">{$lang->help}</a></label>
<div class="x_controls">
<textarea name="sitelock_whitelist" id="sitelock_whitelist" rows="4" cols="42" placeholder="{$IP}({$lang->local_ip_address})" style="margin-right:10px">{$sitelock_whitelist}</textarea>
<span class="x_help-block">{$lang->sitelock_warning_whitelist}</span>
<span class="x_help-block">{$lang->your_ip} : {$remote_addr}</span>
</div>
</div>
<div class="x_control-group">
<label class="x_control-label" for="sitelock_title">{$lang->sitelock_title}</label>
<div class="x_controls">
<input type="text" name="sitelock_title" id="sitelock_title" value="{$sitelock_title}"/>
</div>
</div>
<div class="x_control-group">
<label class="x_control-label" for="sitelock_message">{$lang->sitelock_message}</label>
<div class="x_controls" style="margin-right:14px">
<textarea name="sitelock_message" id="sitelock_message" rows="4" cols="42" style="width:100%;">{$sitelock_message}</textarea>
</div>
</div>
<div class="x_clearfix btnArea">
<div class="x_pull-right">
<button type="submit" class="x_btn x_btn-primary">{$lang->cmd_save}</button>
</div>
</div>
</form>
</section>
<iframe name="hiddenIframe" src="about:blank" hidden></iframe>
<script>
function afterUploadConfigImage(name, fileName, tmpFileName)