diff --git a/classes/context/Context.class.php b/classes/context/Context.class.php index 6e5ed3695..adf6bd6c5 100644 --- a/classes/context/Context.class.php +++ b/classes/context/Context.class.php @@ -21,7 +21,6 @@ var $db_info = NULL; ///< @brief DB 정보 var $ftp_info = NULL; ///< @brief FTP 정보 - var $ssl_port = NULL; ///< @brief SSL Port number var $ssl_actions = array(); ///< @brief ssl로 전송해야 할 action등록 (common/js/xml_handler.js에서 ajax통신시 활용) var $js_files = array(); ///< @brief display시에 사용하게 되는 js files의 목록 var $css_files = array(); ///< @brief display시에 사용하게 되는 css files의 목록 @@ -204,11 +203,21 @@ else $db_info->use_optimizer = 'N'; if(!$db_info->qmail_compatibility || $db_info->qmail_compatibility != 'Y') $db_info->qmail_compatibility = 'N'; else $db_info->qmail_compatibility = 'Y'; + if(!$db_info->use_ssl) $db_info->use_ssl = 'none'; $this->_setDBInfo($db_info); $GLOBALS['_time_zone'] = $db_info->time_zone; $GLOBALS['_qmail_compatibility'] = $db_info->qmail_compatibility; + $GLOBALS['_use_ssl'] = $db_info->use_ssl; + if($db_info->http_port) + { + $GLOBALS['_http_port'] = $db_info->http_port; + } + if($db_info->https_port) + { + $GLOBALS['_https_port'] = $db_info->https_port; + } } /** @@ -801,8 +810,17 @@ } $url_info = parse_url('http://'.$target_url); - if($use_ssl && $this->ssl_port && $this->ssl_port != 443) { - $url_info['port'] = $this->ssl_port; + if($use_ssl) + { + if($GLOBALS["_https_port"] && $GLOBALS["_https_port"] != 443) { + $url_info['port'] = $GLOBALS["_https_port"]; + } + } + else + { + if($GLOBALS["_http_port"] && $GLOBALS["_http_port"] != 80) { + $url_info['port'] = $GLOBALS["_http_port"]; + } } $url[$ssl_mode][$domain_key] = sprintf("%s://%s%s%s",$use_ssl?'https':$url_info['scheme'], $url_info['host'], $url_info['port']&&$url_info['port']!=80?':'.$url_info['port']:'',$url_info['path']); @@ -1261,13 +1279,5 @@ return dirname($_SERVER['PHP_SELF']) . "/" . $url; } - function setSSLPort($port) { - $oContext = &Context::getInstance(); - $oContext->_setSSLPort($port); - } - - function _setSSLPort($port) { - $this->ssl_port = (int) $port; - } } ?> diff --git a/common/js/common.js b/common/js/common.js index a90c55a31..1d1345589 100644 --- a/common/js/common.js +++ b/common/js/common.js @@ -317,12 +317,33 @@ String.prototype.setQuery = function(key, val) { if(val.toString().trim()) uri = uri+"?"+key+"="+val; } - uri = uri.replace(/^https:\/\//i,'http://'); + var re = /https:\/\/([^:\/]+)(:\d+|)/i; + var check = re.exec(uri); + if(check) + { + var toReplace = "http://"+check[1]; + if(typeof(http_port)!='undefined' && http_port != 80) + { + toReplace += ":" + http_port; + } + uri = uri.replace(re,toReplace); + } + if(typeof(ssl_actions)!='undefined' && typeof(ssl_actions.length)!='undefined' && uri.getQuery('act')) { var act = uri.getQuery('act'); for(i=0;i + + + +JSSpec results + + + + + + + +

A

B

+ + diff --git a/common/tpl/common_layout.html b/common/tpl/common_layout.html index 81caf7640..15d4c315f 100644 --- a/common/tpl/common_layout.html +++ b/common/tpl/common_layout.html @@ -51,6 +51,8 @@ var current_mid = "{$mid}"; var waiting_message = "{$lang->msg_call_server}"; var ssl_actions = new Array("{implode('","',$ssl_actions)}"); + var http_port = {$GLOBALS["_http_port"]}; + var https_port = {$GLOBALS["_https_port"]}; //]]> {Context::getHtmlHeader()} diff --git a/modules/admin/admin.admin.view.php b/modules/admin/admin.admin.view.php index 444b64e70..f5e17314d 100644 --- a/modules/admin/admin.admin.view.php +++ b/modules/admin/admin.admin.view.php @@ -44,6 +44,15 @@ Context::set('use_rewrite', $db_info->use_rewrite=='Y'?'Y':'N'); Context::set('use_optimizer', $db_info->use_optimizer!='N'?'Y':'N'); Context::set('qmail_compatibility', $db_info->qmail_compatibility=='Y'?'Y':'N'); + Context::set('use_ssl', $db_info->use_ssl?$db_info->use_ssl:"none"); + if($db_info->http_port) + { + Context::set('http_port', $db_info->http_port); + } + if($db_info->https_port) + { + Context::set('https_port', $db_info->https_port); + } Context::setBrowserTitle("XE Admin Page"); } @@ -205,6 +214,7 @@ **/ function dispAdminConfig() { $db_info = Context::getDBInfo(); + debugPrint($db_info); Context::set('selected_lang', $db_info->lang_type); Context::set('lang_supported', Context::loadLangSupported()); diff --git a/modules/admin/lang/ko.lang.php b/modules/admin/lang/ko.lang.php index 916181cdb..b52acdacb 100644 --- a/modules/admin/lang/ko.lang.php +++ b/modules/admin/lang/ko.lang.php @@ -57,4 +57,13 @@ $lang->cmd_lang_select = "언어선택"; $lang->about_cmd_lang_select = "선택된 언어들만 서비스 됩니다"; $lang->about_recompile_cache = "쓸모 없어졌거나 잘못된 캐시파일들을 정리할 수 있습니다"; + $lang->use_ssl = "SSL 사용"; + $lang->ssl_options = array( + 'none' => "사용안함", + 'optional' => "선택적으로", + 'always' => "항상사용" + ); + $lang->about_use_ssl = "선택적으로에서는 회원가입/정보수정등의 지정된 action에서 SSL을 사용하고 항상 사용은 모든 서비스가 SSL을 이용하게 됩니다."; + $lang->server_ports = "서버포트지정"; + $lang->about_server_ports = "HTTP는 80, HTTPS는 443이외의 다른 포트를 사용하는 경우에 포트를 지정해주어야합니다."; ?> diff --git a/modules/admin/tpl/config.html b/modules/admin/tpl/config.html index a0bc434f8..81c1b2c8e 100644 --- a/modules/admin/tpl/config.html +++ b/modules/admin/tpl/config.html @@ -53,6 +53,25 @@

{$lang->about_qmail_compatibility}

+ +
{$lang->use_ssl}
+ + +

{$lang->about_use_ssl}

+ + + +
{$lang->server_ports}
+ + HTTP : , + HTTPS: +

{$lang->about_server_ports}

+ + diff --git a/modules/install/install.admin.controller.php b/modules/install/install.admin.controller.php index 5218c03b6..442241f4f 100644 --- a/modules/install/install.admin.controller.php +++ b/modules/install/install.admin.controller.php @@ -56,12 +56,37 @@ $qmail_compatibility = Context::get('qmail_compatibility'); if($qmail_compatibility!='Y') $qmail_compatibility = 'N'; + $use_ssl = Context::get('use_ssl'); + if(!$use_ssl) $use_ssl = 'none'; + + $http_port = Context::get('http_port'); + $https_port = Context::get('https_port'); + $db_info = Context::getDBInfo(); $db_info->time_zone = $time_zone; $db_info->qmail_compatibility = $qmail_compatibility; $db_info->use_rewrite = $use_rewrite; $db_info->use_optimizer = $use_optimizer; $db_info->lang_type = Context::get('lang_type'); + $db_info->use_ssl = $use_ssl; + if($http_port) + { + $db_info->http_port = (int) $http_port; + } + else if($db_info->http_port) + { + unset($db_info->http_port); + } + + if($https_port) + { + $db_info->https_port = (int) $https_port; + } + else if($db_info->https_port) + { + unset($db_info->https_port); + } + Context::setDBInfo($db_info); $oInstallController = &getController('install'); diff --git a/modules/member/member.admin.controller.php b/modules/member/member.admin.controller.php index e10273045..c70c74636 100644 --- a/modules/member/member.admin.controller.php +++ b/modules/member/member.admin.controller.php @@ -83,13 +83,12 @@ **/ function procMemberAdminInsertConfig() { // 기본 정보를 받음 - $args = Context::gets('webmaster_name','webmaster_email','skin','colorset','enable_openid','enable_join','enable_confirm','enable_ssl','limit_day','after_login_url','after_logout_url','redirect_url','agreement','profile_image','profile_image_max_width','profile_image_max_height','image_name','image_mark', 'image_name_max_width', 'image_name_max_height','image_mark_max_width','image_mark_max_height','signature_max_height','editor_skin','editor_colorset', 'ssl_port'); + $args = Context::gets('webmaster_name','webmaster_email','skin','colorset','enable_openid','enable_join','enable_confirm','limit_day','after_login_url','after_logout_url','redirect_url','agreement','profile_image','profile_image_max_width','profile_image_max_height','image_name','image_mark', 'image_name_max_width', 'image_name_max_height','image_mark_max_width','image_mark_max_height','signature_max_height','editor_skin','editor_colorset'); if(!$args->skin) $args->skin = "default"; if(!$args->colorset) $args->colorset = "white"; if(!$args->editor_skin) $args->editor_skin= "default"; if(!$args->editor_colorset) $args->editor_colorset = "white"; if($args->enable_join!='Y') $args->enable_join = 'N'; - if($args->enable_ssl!='Y') $args->enable_ssl = 'N'; if($args->enable_openid!='Y') $args->enable_openid= 'N'; if($args->profile_image !='Y') $args->profile_image = 'N'; if($args->image_name!='Y') $args->image_name = 'N'; diff --git a/modules/member/member.class.php b/modules/member/member.class.php index 0b770b516..394c239ce 100644 --- a/modules/member/member.class.php +++ b/modules/member/member.class.php @@ -28,10 +28,6 @@ Context::addSSLAction('procMemberInsert'); Context::addSSLAction('procMemberModifyInfo'); Context::addSSLAction('procMemberOpenIDLogin'); - if($member_config->ssl_port) - { - Context::setSSLPort($member_config->ssl_port); - } } } diff --git a/modules/member/tpl/member_config.html b/modules/member/tpl/member_config.html index 826747a01..32fbfc544 100644 --- a/modules/member/tpl/member_config.html +++ b/modules/member/tpl/member_config.html @@ -43,14 +43,6 @@ {$lang->about_enable_confirm} - -
{$lang->enable_ssl}
- - enable_ssl=='Y')-->checked="checked" class="checkbox" /> - {$lang->about_enable_ssl}
- {$lang->about_ssl_port} - -
{$lang->limit_day}