diff --git a/modules/admin/admin.admin.controller.php b/modules/admin/admin.admin.controller.php index 01cbfd337..cdff0d549 100644 --- a/modules/admin/admin.admin.controller.php +++ b/modules/admin/admin.admin.controller.php @@ -987,6 +987,145 @@ class adminAdminController extends admin $this->setRedirectUrl(Context::get('success_return_url') ?: getNotEncodedUrl('', 'module', 'admin', 'act', 'dispAdminConfigSitelock')); } + /** + * Insert or update domain info + * @return void + */ + function procAdminInsertDomain() + { + $vars = Context::getRequestVars(); + $domain_srl = strval($vars->domain_srl); + $domain_info = null; + if ($domain_srl !== '') + { + $output = executeQuery('module.getDomainInfo', (object)array('domain_srl' => $domain_srl)); + if ($output->toBool() && $output->data) + { + $domain_info = $output->data; + } + } + + // Validate the domain. + if (!preg_match('@^https?://@', $vars->domain)) + { + $vars->domain = 'http://' . $vars->domain; + } + try + { + $vars->domain = Rhymix\Framework\URL::getDomainFromUrl(strtolower($vars->domain)); + } + catch (Exception $e) + { + $vars->domain = ''; + } + if (!$vars->domain) + { + return new Object(-1, 'msg_invalid_domain'); + } + $existing_domain = getModel('module')->getSiteInfoByDomain($vars->domain); + if ($existing_domain && $existing_domain->domain == $vars->domain && (!$domain_info || $existing_domain->domain_srl != $domain_info->domain_srl)) + { + return new Object(-1, 'msg_domain_already_exists'); + } + + // Validate the ports. + if ($vars->http_port == 80 || !$vars->http_port) + { + $vars->http_port = 0; + } + if ($vars->https_port == 443 || !$vars->https_port) + { + $vars->https_port = 0; + } + if ($vars->http_port !== 0 && ($vars->http_port < 1 || $vars->http_port > 65535 || $vars->http_port == 443)) + { + return new Object(-1, 'msg_invalid_http_port'); + } + if ($vars->https_port !== 0 && ($vars->https_port < 1 || $vars->https_port > 65535 || $vars->https_port == 80)) + { + return new Object(-1, 'msg_invalid_http_port'); + } + + // Validate the security setting. + $valid_security_options = array('none', 'optional', 'always'); + if (!in_array($vars->domain_security, $valid_security_options)) + { + $vars->domain_security = 'none'; + } + + // Validate the index module setting. + $module_info = getModel('module')->getModuleInfoByModuleSrl(intval($vars->index_module_srl)); + if (!$module_info || $module_info->module_srl != $vars->index_module_srl) + { + return new Object(-1, 'msg_invalid_index_module_srl'); + } + + // Validate the index document setting. + if ($vars->index_document_srl) + { + $oDocument = getModel('document')->getDocument($vars->index_document_srl); + if (!$oDocument || !$oDocument->isExists()) + { + return new Object(-1, 'msg_invalid_index_document_srl'); + } + } + else + { + $vars->index_document_srl = 0; + } + + // Validate the default language. + $enabled_lang = Rhymix\Framework\Config::get('locale.enabled_lang'); + if (!in_array($vars->default_lang, $enabled_lang)) + { + return new Object(-1, 'msg_lang_is_not_enabled'); + } + + // Insert or update the domain. + if (!$domain_info) + { + $args = new stdClass(); + $args->domain_srl = getNextSequence(); + $args->domain = $vars->domain; + $args->index_module_srl = $vars->index_module_srl; + $args->index_document_srl = $vars->index_document_srl; + $args->http_port = $vars->http_port; + $args->https_port = $vars->https_port; + $args->security = $vars->domain_security; + $args->description = ''; + $args->settings = json_encode(array('language' => $vars->default_lang, 'timezone' => null)); + $output = executeQuery('module.insertDomain', $args); + if (!$output->toBool()) + { + return $output; + } + } + else + { + $args = new stdClass(); + $args->domain_srl = $domain_info->domain_srl; + $args->domain = $vars->domain; + $args->index_module_srl = $vars->index_module_srl; + $args->index_document_srl = $vars->index_document_srl; + $args->http_port = $vars->http_port; + $args->https_port = $vars->https_port; + $args->security = $vars->domain_security; + $args->settings = json_encode(array_merge($domain_info->settings, array('language' => $vars->default_lang))); + $output = executeQuery('module.updateDomain', $args); + if (!$output->toBool()) + { + return $output; + } + + } + + // Clear cache. + Rhymix\Framework\Cache::clearGroup('site_and_module'); + + // Redirect to the domain list. + $this->setRedirectUrl(Context::get('success_return_url') ?: getNotEncodedUrl('', 'module', 'admin', 'act', 'dispAdminConfigDomains')); + } + /** * Update FTP configuration. */ diff --git a/modules/admin/admin.admin.view.php b/modules/admin/admin.admin.view.php index addf8cb4d..4b2144323 100644 --- a/modules/admin/admin.admin.view.php +++ b/modules/admin/admin.admin.view.php @@ -691,6 +691,54 @@ class adminAdminView extends admin $this->setTemplateFile('config_sitelock'); } + /** + * Display domain edit screen + * @return void + */ + function dispAdminInsertDomain() + { + // Get selected domain. + $domain_srl = strval(Context::get('domain_srl')); + $domain_info = null; + if ($domain_srl !== '') + { + $output = executeQuery('module.getDomainInfo', (object)array('domain_srl' => $domain_srl)); + if ($output->toBool() && $output->data) + { + $domain_info = $output->data; + } + } + Context::set('domain_info', $domain_info); + + // Get modules. + $module_list = getModel('module')->getMidList(); + if ($domain_info && $domain_info->index_module_srl) + { + $index_module_srl = $domain_info->index_module_srl; + } + else + { + $index_module_srl = 0; + } + Context::set('module_list', $module_list); + Context::set('index_module_srl', $index_module_srl); + + // Get language list. + Context::set('supported_lang', Rhymix\Framework\Lang::getSupportedList()); + Context::set('enabled_lang', Rhymix\Framework\Config::get('locale.enabled_lang')); + if ($domain_info && $domain_info->settings->language) + { + $domain_lang = $domain_info->settings->language; + } + else + { + $domain_lang = Rhymix\Framework\Config::get('locale.default_lang'); + } + Context::set('domain_lang', $domain_lang); + + $this->setTemplateFile('config_domains_edit'); + } + /** * Display FTP Configuration(settings) page * @return void diff --git a/modules/admin/conf/module.xml b/modules/admin/conf/module.xml index 16709df91..b24cfd36e 100644 --- a/modules/admin/conf/module.xml +++ b/modules/admin/conf/module.xml @@ -12,6 +12,7 @@ + @@ -33,6 +34,7 @@ + diff --git a/modules/admin/lang/ko.php b/modules/admin/lang/ko.php index fbcc6bffa..bd5f1650f 100644 --- a/modules/admin/lang/ko.php +++ b/modules/admin/lang/ko.php @@ -106,8 +106,8 @@ $lang->about_auto_select_lang = '방문자의 브라우저 언어에 따라 자 $lang->about_recompile_cache = '쓸모 없어졌거나 잘못된 캐시파일들을 지우시겠습니까?'; $lang->confirm_run = '오랜 시간이 걸릴 수 있습니다. 실행하시겠습니까?'; $lang->use_ssl = 'HTTPS 사용'; -$lang->ssl_options['none'] = '사용 안함'; -$lang->ssl_options['optional'] = '선택적으로 (권장하지 않음)'; +$lang->ssl_options['none'] = '사용하지 않음'; +$lang->ssl_options['optional'] = '선택적으로 사용 (권장하지 않음)'; $lang->ssl_options['always'] = '항상 사용 (권장)'; $lang->cmd_http_port = 'HTTP 포트'; $lang->cmd_https_port = 'HTTPS 포트'; @@ -115,9 +115,9 @@ $lang->cmd_index_module_srl = '메인 모듈'; $lang->cmd_index_document_srl = '메인 문서'; $lang->cmd_default_language = '기본 언어'; $lang->cmd_new_domain = '새 도메인 추가'; -$lang->about_use_ssl = '\'선택적으로\'는 회원가입, 정보수정 등의 지정된 동작(action)에서 보안접속(SSL)을 사용합니다. \'항상 사용\'은 모든 서비스에 SSL을 사용 합니다. SSL 환경이 갖춰지지 않은 상태에서 SSL을 사용할 경우 접속이 되지 않을 수 있으니 주의 바랍니다.'; -$lang->about_use_ssl = '

\'선택적으로\'는 회원가입, 정보수정 등의 일부 동작에서만 선택적으로 보안접속(SSL)을 사용합니다.
\'항상 사용\'은 모든 서비스에 SSL을 사용 합니다.

SSL 환경이 갖춰지지 않은 상태에서 SSL을 사용할 경우, 접속이 되지 않을 수 있습니다. SSL 인증서가 정상적으로 설치되었는지 반드시 확인하고 설정하시기 바랍니다.

'; -$lang->server_ports = '서버 포트 지정'; +$lang->cmd_edit_domain = '도메인 정보 수정'; +$lang->about_use_ssl = '\'선택적으로 사용\'은 회원가입, 정보수정 등의 지정된 동작(action)에서만 보안접속(HTTPS)을 사용합니다.
\'항상 사용\'은 사이트 전체에 HTTPS를 사용합니다.
SSL 인증서가 설치되지 않은 상태에서 HTTPS 사용을 시도하면 접속이 되지 않을 수 있으니 주의하시기 바랍니다.'; +$lang->server_ports = '포트'; $lang->about_server_ports = 'HTTP는 80, HTTPS는 443 이 아닌, 다른 포트를 사용할 경우에 포트를 지정해 주어야 합니다.'; $lang->use_db_session = '인증 세션 DB 사용'; $lang->about_db_session = '세션을 DB에 저장합니다. 현재 접속자를 파악하려면 이 기능을 켜야 합니다.
불필요하게 사용하면 서버 성능에 악영향을 줄 수 있으니 주의하십시오.'; diff --git a/modules/admin/tpl/config_domains_edit.html b/modules/admin/tpl/config_domains_edit.html new file mode 100644 index 000000000..7a6002f0a --- /dev/null +++ b/modules/admin/tpl/config_domains_edit.html @@ -0,0 +1,79 @@ + +
+

{$XE_VALIDATOR_MESSAGE}

+
+
+
+ + + + + +
+ +
+ +
+
+ +
+ +
+ +
+
+ +
+ +
+ +
+
+ +
+ +
+ +
{lang('admin.about_use_ssl')}
+
+
+ +
+ +
+ +
+
+ +
+ +
+ +
+
+ +
+ +
+ +
+
+ +
+
+ +
+
+ +
+
diff --git a/modules/admin/tpl/config_header.html b/modules/admin/tpl/config_header.html index 0a9aba5f8..14bf4679f 100644 --- a/modules/admin/tpl/config_header.html +++ b/modules/admin/tpl/config_header.html @@ -8,7 +8,7 @@
  • {$lang->subtitle_notification}
  • {$lang->subtitle_security}
  • {$lang->subtitle_advanced}
  • -
  • {$lang->subtitle_domains}
  • +
  • {$lang->subtitle_domains}
  • {$lang->subtitle_debug}
  • {$lang->subtitle_seo}
  • {$lang->subtitle_sitelock}
  • diff --git a/modules/admin/tpl/css/admin.css b/modules/admin/tpl/css/admin.css index 77a34ef05..d27ecc967 100644 --- a/modules/admin/tpl/css/admin.css +++ b/modules/admin/tpl/css/admin.css @@ -434,7 +434,7 @@ margin-bottom: 10px; height: 25px; } .x input[type="number"] { - width: 50px; + width: 90px; } .x select { padding: 0;