Merge pull request #47 from kijin/pr/installer-misc-fixes

설치모듈의 mod_rewrite 및 SSL 사용 여부 검사를 개선
This commit is contained in:
Kijin Sung 2016-01-10 16:14:19 +09:00
commit 826d37766a
6 changed files with 111 additions and 79 deletions

View file

@ -100,7 +100,7 @@ class installController extends install
// Save rewrite and time zone settings
if(!Context::get('install_config'))
{
$config_info = Context::gets('use_rewrite','time_zone');
$config_info = Context::gets('use_rewrite','time_zone', 'use_ssl');
if($config_info->use_rewrite!='Y') $config_info->use_rewrite = 'N';
if(!$this->makeEtcConfigFile($config_info))
{
@ -452,52 +452,6 @@ class installController extends install
}
}
/**
* check this server can use rewrite module
* make a file to files/config and check url approach by ".htaccess" rules
*
* @return bool
*/
function checkRewriteUsable() {
$checkString = "isApproached";
$checkFilePath = 'files/config/tmpRewriteCheck.txt';
FileHandler::writeFile(_XE_PATH_.$checkFilePath, trim($checkString));
$scheme = ($_SERVER['HTTPS'] === 'on') ? 'https' : 'http';
$hostname = $_SERVER['SERVER_NAME'];
$port = $_SERVER['SERVER_PORT'];
$str_port = '';
if($port)
{
$str_port = ':' . $port;
}
$tmpPath = $_SERVER['DOCUMENT_ROOT'];
//if DIRECTORY_SEPARATOR is not /(IIS)
if(DIRECTORY_SEPARATOR !== '/')
{
//change to slash for compare
$tmpPath = str_replace(DIRECTORY_SEPARATOR, '/', $_SERVER['DOCUMENT_ROOT']);
}
$query = "/JUST/CHECK/REWRITE/" . $checkFilePath;
$currentPath = str_replace($tmpPath, "", _XE_PATH_);
if($currentPath != "")
{
$query = $currentPath . $query;
}
$requestUrl = sprintf('%s://%s%s%s', $scheme, $hostname, $str_port, $query);
$requestConfig = array();
$requestConfig['ssl_verify_peer'] = false;
$buff = FileHandler::getRemoteResource($requestUrl, null, 3, 'GET', null, array(), array(), array(), $requestConfig);
FileHandler::removeFile(_XE_PATH_.$checkFilePath);
return (trim($buff) == $checkString);
}
/**
* @brief Create files and subdirectories
* Local evironment setting before installation by using DB information

View file

@ -7,7 +7,10 @@
*/
class installView extends install
{
var $install_enable = false;
public $install_enable = false;
public static $rewriteCheckFilePath = 'files/cache/tmpRewriteCheck.txt';
public static $rewriteCheckString = '';
/**
* @brief Initialization
@ -97,12 +100,11 @@ class installView extends install
function dispInstallCheckEnv()
{
$oInstallController = getController('install');
$useRewrite = $oInstallController->checkRewriteUsable() ? 'Y' : 'N';
$_SESSION['use_rewrite'] = $useRewrite;
Context::set('use_rewrite', $useRewrite);
// nginx 체크, rewrite 사용법 안내
if($useRewrite == 'N' && stripos($_SERVER['SERVER_SOFTWARE'], 'nginx') !== false) Context::set('use_nginx', 'Y');
self::$rewriteCheckString = Password::createSecureSalt(32);
FileHandler::writeFile(_XE_PATH_ . self::$rewriteCheckFilePath, self::$rewriteCheckString);;
Context::set('use_rewrite', $_SESSION['use_rewrite'] = 'N');
Context::set('use_nginx', stripos($_SERVER['SERVER_SOFTWARE'], 'nginx') !== false);
$this->setTemplateFile('check_env');
}
@ -114,6 +116,16 @@ class installView extends install
{
// Display check_env if it is not installable
if(!$this->install_enable) return $this->dispInstallCheckEnv();
// Delete mod_rewrite check file
FileHandler::removeFile(_XE_PATH_ . self::$rewriteCheckFilePath);
// Save mod_rewrite check status
if(Context::get('rewrite') === 'Y')
{
Context::set('use_rewrite', $_SESSION['use_rewrite'] = 'Y');
}
// Enter ftp information
if(ini_get('safe_mode') && !Context::isFTPRegisted())
{
@ -169,7 +181,8 @@ class installView extends install
include _XE_PATH_.'files/config/tmpDB.config.php';
Context::set('use_rewrite', $_SESSION['use_rewrite']);
Context::set('use_rewrite', $_SESSION['use_rewrite']);
Context::set('use_ssl', $_SERVER['HTTPS'] === 'on' ? 'always' : 'none');
Context::set('time_zone', $GLOBALS['time_zone']);
Context::set('db_type', $db_info->db_type);
$this->setTemplateFile('admin_form');

View file

@ -722,6 +722,11 @@
<value xml:lang="tr"><![CDATA[Eğer websunucusu yenidenyazma(rewritemod) destekliyorsa, http://ornek/?dosya_no=123 gibi URLler http://ornek/123 olarak kısaltılabilir]]></value>
<value xml:lang="vi"><![CDATA[Nếu Host của bạn hỗ trợ Mod Rewrite, khi địa chỉ có dạng <b>http://blah/?document_srl=123</b> sẽ được rút ngắn thành <b>http://blah/123</b>]]></value>
</item>
<item name="checking_rewrite">
<value xml:lang="ko"><![CDATA[짧은 주소를 사용할 수 있는지 확인하는 중입니다...]]></value>
<value xml:lang="en"><![CDATA[Checking whether "Friendly URL" feature is available...]]></value>
<value xml:lang="jp"><![CDATA[短縮アドレスを使用できるかどうかを確認しています...]]></value>
</item>
<item name="disable_rewrite">
<value xml:lang="ko"><![CDATA[짧은 주소를 사용할 수 없습니다. 웹 서버 담당자에게 mod_rewrite 지원 여부를 확인 바랍니다.]]></value>
<value xml:lang="en"><![CDATA["Friendly URL" feature is not available. Please check with the server administrator about mod_rewrite module support.]]></value>
@ -761,27 +766,50 @@
<value xml:lang="tr"><![CDATA[Eğer sunucu zaman dilimi ve bulunduğunuz yerin zaman dilimi uyumlu değilse; zaman dilimi özelliğini kullanarak zamanı bulunduğunuz yere göre ayarlayabilirsiniz ]]></value>
<value xml:lang="vi"><![CDATA[Nếu thời gian của khu vực bạn không tự động cập nhật. Bạn có thể chọn thời gian để hiển thị cho Website.]]></value>
</item>
<item name="qmail_compatibility">
<value xml:lang="ko"><![CDATA[Qmail 호환]]></value>
<value xml:lang="en"><![CDATA[Enable Qmail]]></value>
<value xml:lang="jp"><![CDATA[Qmail 互換]]></value>
<value xml:lang="zh-CN"><![CDATA[Qmail互换]]></value>
<value xml:lang="zh-TW"><![CDATA[Qmail互換]]></value>
<value xml:lang="fr"><![CDATA[Compatible avec Qmail]]></value>
<value xml:lang="es"><![CDATA[Compatible con Qmail]]></value>
<value xml:lang="tr"><![CDATA[Qmail'i Etkinleştir]]></value>
<value xml:lang="vi"><![CDATA[Mở Qmail]]></value>
<item name="use_ssl">
<value xml:lang="ko"><![CDATA[SSL 사용]]></value>
<value xml:lang="en"><![CDATA[SSL]]></value>
<value xml:lang="jp"><![CDATA[SSLを使用]]></value>
<value xml:lang="zh-CN"><![CDATA[是否使用SSL安全连接?]]></value>
<value xml:lang="tr"><![CDATA[SSL'i kullanmak istiyor musunuz?]]></value>
</item>
<item name="about_qmail_compatibility">
<value xml:lang="ko"><![CDATA[Qmail등 CRLF를 줄 구분자로 인식하지 못하는 MTA에서 메일이 발송되도록 합니다.]]></value>
<value xml:lang="en"><![CDATA[It will enable sending mails from MTA which cannot distinguish CRLF like Qmail.]]></value>
<value xml:lang="jp"><![CDATA[Qmail等、CRLFを改行コードとして認識できないMTAMessage Transfer Agentで、メールの送信ができるようにします。]]></value>
<value xml:lang="zh-CN"><![CDATA[支持不能识别CRLF为换行符的Qmail等MTA也能发送电子邮件。]]></value>
<value xml:lang="zh-TW"><![CDATA[支援無法識別 CRLF 為換行符的 Qmail 等 MTA也能發送電子郵件。]]></value>
<value xml:lang="fr"><![CDATA[Le mél sera envoyé en MTA qui ne peut pas reconnaître le CRLF comme délimiteur des lignes comme le Qmail.]]></value>
<value xml:lang="es"><![CDATA[Qmail como MTA no reconoce CRLF como la línea de separación que se enviará por correo.]]></value>
<value xml:lang="tr"><![CDATA[Bu size QMail gibi CRLF'den ayırt edilemeyen MTA'dan mail gönderme imkanı sağlayacaktır.]]></value>
<value xml:lang="vi"><![CDATA[Nó sẽ cho phép gửi thư từ MTA mà không phân biệt CRLF.]]></value>
<item name="ssl_options" type="array">
<item name="none">
<value xml:lang="ko"><![CDATA[사용 안함]]></value>
<value xml:lang="en"><![CDATA[Never]]></value>
<value xml:lang="jp"><![CDATA[使わない]]></value>
<value xml:lang="zh-CN"><![CDATA[不使用]]></value>
<value xml:lang="zh-TW"><![CDATA[關閉]]></value>
<value xml:lang="fr"><![CDATA[Ne Pas utiliser]]></value>
<value xml:lang="ru"><![CDATA[Никогда]]></value>
<value xml:lang="es"><![CDATA[Desactivar]]></value>
<value xml:lang="tr"><![CDATA[Hiçbir zaman]]></value>
<value xml:lang="vi"><![CDATA[Không sử dụng]]></value>
</item>
<item name="optional">
<value xml:lang="ko"><![CDATA[선택적으로]]></value>
<value xml:lang="en"><![CDATA[Optional]]></value>
<value xml:lang="jp"><![CDATA[部分的に使う]]></value>
<value xml:lang="zh-CN"><![CDATA[选择性]]></value>
<value xml:lang="zh-TW"><![CDATA[手動]]></value>
<value xml:lang="fr"><![CDATA[Optionnel]]></value>
<value xml:lang="ru"><![CDATA[На выбор]]></value>
<value xml:lang="es"><![CDATA[Opcionalmente el]]></value>
<value xml:lang="tr"><![CDATA[İsteğe Bağlı]]></value>
<value xml:lang="vi"><![CDATA[Tùy chỉnh]]></value>
</item>
<item name="always">
<value xml:lang="ko"><![CDATA[항상 사용]]></value>
<value xml:lang="en"><![CDATA[Always]]></value>
<value xml:lang="jp"><![CDATA[常に使う]]></value>
<value xml:lang="zh-CN"><![CDATA[使用]]></value>
<value xml:lang="zh-TW"><![CDATA[開啟]]></value>
<value xml:lang="fr"><![CDATA[Toujours]]></value>
<value xml:lang="ru"><![CDATA[Всегда]]></value>
<value xml:lang="es"><![CDATA[Utilice siempre el]]></value>
<value xml:lang="tr"><![CDATA[Her zaman]]></value>
<value xml:lang="vi"><![CDATA[Luôn luôn]]></value>
</item>
</item>
<item name="about_database_file">
<value xml:lang="ko"><![CDATA[Sqlite는 파일에 데이터를 저장합니다. 데이터베이스 파일의 위치를 웹에서 접근할 수 없는 곳으로 해야 합니다.<br/><span style="color:red">데이터 파일은 777퍼미션 설정된 곳으로 지정해주세요.</span>]]></value>

View file

@ -48,6 +48,16 @@
</div>
</div>
<p class="install_help">{$lang->about_time_zone}</p>
<div class="x_control-group">
<label class="x_control-label">{$lang->use_ssl}</label>
<div class="x_controls">
<select name="use_ssl">
<!--@foreach($lang->ssl_options as $key => $val)-->
<option value="{$key}" selected="selected"|cond="$use_ssl==$key" />{$val}</option>
<!--@endforeach-->
</select>
</div>
</div>
</div>
<div id="buttons">
<div class="align-left">

View file

@ -29,12 +29,17 @@
</block>
<tr>
<td class="check_env_item">mod_rewrite</td>
<td class="check_env_status">
<span cond="$use_rewrite === 'Y'" class="ok">OK</span>
<span cond="$use_rewrite === 'N'">&mdash;</span>
<td class="check_env_status" id="mod_write_status">
<span class="ok" style="display:none">OK</span>
<span class="no">&mdash;</span>
</td>
</tr>
<tr cond="$use_rewrite === 'N'">
<tr id="mod_rewrite_checking" data-url="{Context::getRequestUri()}REWRITE/CHECK/SRSLY/ANYTHING/GOES/{InstallView::$rewriteCheckFilePath}" data-verify="{InstallView::$rewriteCheckString}">
<td colspan="2" class="error_description">
{$lang->checking_rewrite}
</td>
</tr>
<tr id="mod_rewrite_no_support" style="display:none">
<td colspan="2" class="error_description">
{$lang->disable_rewrite}
<block cond="$use_nginx == 'Y'"><br />{$lang->about_nginx_rewrite}</block>

View file

@ -6,6 +6,28 @@ jQuery(function($){
$("p.db_type_" + $(this).val()).show();
}).triggerHandler("click");
}
if($("#mod_rewrite_checking").size()) {
var checking = $("#mod_rewrite_checking");
$.ajax({
url: checking.data("url"),
cache : false,
dataType: "text",
success: function(data) {
if($.trim(data) === checking.data("verify")) {
$("#mod_write_status span.ok").show();
$("#mod_write_status span.no").hide();
$("#task-checklist-confirm").attr("href", $("#task-checklist-confirm").attr("href") + "&rewrite=Y");
} else {
$("#mod_rewrite_no_support").show();
}
checking.hide();
},
error: function() {
$("#mod_rewrite_no_support").show();
checking.hide();
}
});
}
if($("input[name='user_id']").size() && $("input[name='email_address']").size()) {
var user_id_input = $("input[name='user_id']");
var email_input = $("input[name='email_address']");