diff --git a/modules/admin/admin.admin.view.php b/modules/admin/admin.admin.view.php index 90dea6c00..dd95887ce 100644 --- a/modules/admin/admin.admin.view.php +++ b/modules/admin/admin.admin.view.php @@ -54,7 +54,7 @@ function dispAdminIndex() { // 공식사이트에서 최신 뉴스를 가져옴 $newest_news_url = sprintf("http://news.zeroboard.com/%s/news.php", Context::getLangType()); - $cache_file = sprintf("./files/cache/newest_news.%s.cache.php", Context::getLangType()); + $cache_file = sprintf("%sfiles/cache/newest_news.%s.cache.php", _XE_PATH_,Context::getLangType()); // 1시간 단위로 캐싱 체크 if(!file_exists($cache_file) || filemtime($cache_file)+ 60*60 < time()) { diff --git a/modules/lifepod/skins/xe_official/.temp.swp b/modules/lifepod/skins/xe_official/.temp.swp deleted file mode 100644 index c6e28cb67..000000000 Binary files a/modules/lifepod/skins/xe_official/.temp.swp and /dev/null differ diff --git a/modules/point/tpl/.action_config.html.swp b/modules/point/tpl/.action_config.html.swp deleted file mode 100644 index 156b9fe58..000000000 Binary files a/modules/point/tpl/.action_config.html.swp and /dev/null differ diff --git a/tools/validator/index.php b/tools/validator/index.php new file mode 100644 index 000000000..1d8081950 --- /dev/null +++ b/tools/validator/index.php @@ -0,0 +1,135 @@ + + * @brief 현재 설치된 버전에 해당하는 XE 파일 비교 + **/ + + /** + * @brief 기본적인 상수 선언, 웹에서 직접 호출되는 것을 막기 위해 체크하는 상수 선언 + **/ + define('__ZBXE__', true); + + /** + * @brief 필요한 설정 파일들을 include + **/ + require_once('../../config/config.inc.php'); + + // id/ password 구함 + $id = $_POST['id']; + $pw = $_POST['pw']; + + // 저장되어 있는 비밀번호와 비교 + $oContext = &Context::getInstance(); + $oContext->init(); + $db_info = $oContext->getDBInfo(); + + // install 모듈의 언어파일을 로드 + Context::loadLang(_XE_PATH_.'modules/install/lang'); + Context::loadLang(_XE_PATH_.'modules/admin/lang'); + Context::loadLang(_XE_PATH_.'tools/validator/lang'); + + // 설치가 되어 있지 않을 경우 + if(!Context::isInstalled()) { + + $msg = Context::getLang('msg_db_not_setted'); + + // 인증 정보가 없을 경우 + } elseif(!isset($id) || !isset($pw)) { + + + // 입력된 정보와 저장된 정보 비교 + } else if($id !== $db_info->db_userid || $pw !== $db_info->db_password) { + + if($id !== $db_info->db_userid) $msg = sprintf($lang->filter->equalto, Context::getLang('user_id')); + else $msg = sprintf($lang->filter->equalto, Context::getLang('password')); + + // 출력 + } else if($id === $db_info->db_userid && $pw === $db_info->db_password) { + + // 현재 버전을 구함 + $ver = __ZBXE_VERSION__; + + // 현재 버전에 맞는 배포 정보를 구함 + $header = "GET /validatorLogs/{$ver}.log HTTP/1.0\r\nHost: news.zeroboard.com\r\n\r\n"; + $is_started = false; + $f = fsockopen('news.zeroboard.com', 80); + fputs($f, $header); + while($buff = fgets($f, 1024)) { + if(!trim($buff)) $is_started = true; + if($is_started && trim($buff)) { + $buff = trim($buff); + $pos = strpos($buff,','); + $size = (int)substr($buff,0,$pos); + $filename = substr($buff,$pos+1); + if($filename && $size) $source[$filename] = $size; + } + } + fclose($f); + + if(!count($source)) $msg = Context::getLang('msg_cannot_get_source_files'); + else { + + // 현재 설치된 디렉토리와 비교 + $avoid_path = array(_XE_PATH_.'files'); + getFiles(_XE_PATH_, _XE_PATH_, $avoid_path, $target); + if(!count($target)) $msg = Context::getLang('msg_cannot_get_target_files'); + else { + // 파일 수를 지정 + Context::set('source_cnt', count($source)); + Context::set('target_cnt', count($target)); + + // 최신 버전 정보 구함 + $oAdminView = &getAdminView('admin'); + $oAdminView->dispAdminIndex(); + + // 누락된 파일 구함 + $leaveouts = array(); + foreach($source as $key => $val) { + if(!isset($target[$key])) $leaveouts[] = $key; + } + Context::set('leaveouts', $leaveouts); + + // 수정된 파일 구함 + $modified = array(); + foreach($source as $key => $val) { + if(isset($target[$key]) && $val!=$target[$key]) $modified[] = $key; + } + Context::set('modified', $modified); + + // 추가된 파일 구함 + $added = array(); + foreach($target as $key => $val) { + if(!isset($source[$key])) $added[] = $key; + } + Context::set('added', $added); + } + } + } + + Context::set('msg', $msg); + + $oTemplate = &TemplateHandler::getInstance(); + print $oTemplate->compile('./tools/validator/','validator'); + + // recursive하게 돌면서 파일 정보 수집 + function getFiles($path, $base_path, $avoid_path, &$buff) { + if(substr($path,-1)=='/') $path = substr($path,0,-1); + if(substr($base_path,-1)=='/') $base_path = substr($base_path,0,-1); + if(in_array($path, $avoid_path)) return; + + $oDir = dir($path); + while($item = $oDir->read()) { + if(substr($item,0,1)=='.' && $item != '.htaccess' ) continue; + $new_path = $path.'/'.$item; + if(!is_dir($new_path)) { + $filesize = filesize($new_path); + $filename = substr($new_path, strlen($base_path)+1); + $buff[$filename] = $filesize; + } else { + getFiles($new_path, $base_path, $avoid_path, $buff); + } + } + $oDir->close(); + } +?> diff --git a/tools/validator/lang/ko.lang.php b/tools/validator/lang/ko.lang.php new file mode 100644 index 000000000..9abd02b6f --- /dev/null +++ b/tools/validator/lang/ko.lang.php @@ -0,0 +1,13 @@ +msg_cannot_get_source_files = '원본 파일을 다운로드 하지 못했습니다'; + $lang->msg_cannot_get_target_files = '설치된 대상 파일의 목록을 구하지 못했습니다'; + + $lang->files_count = '파일 수'; + $lang->source_files = '원본 파일'; + $lang->target_files = '대상 파일'; + + $lang->leaveout_files = '누락된 파일'; + $lang->modified_files = '수정된 파일'; + $lang->additional_files = '추가된 파일'; +?> diff --git a/tools/validator/style.css b/tools/validator/style.css new file mode 100644 index 000000000..68e48c237 --- /dev/null +++ b/tools/validator/style.css @@ -0,0 +1,18 @@ +h1 { font-size:1.5em; font-family:tahoma; margin:0; padding:0; } +hr { border:none; border-top:1px solid #555555; border-bottom:1px solid #888888; margin:0; margin-bottom:10px; padding:0; } +blockquote { border:1px solid red; color:red; width:280px; margin:0 0 10px 0; padding:10px;} + +code { display:block; clear:both; margin-bottom:10px;} +code label { float:left; display:block; width:150px; } +code input { display:block; width:150px; border:1px solid #AAAAAA; } + +input.submit { width:300px; border:1px solid #AAAAAA;} + +div.back { font-size:9pt; text-align:right; margin-bottom:10px; } +div.back a { text-decoration:none; color:#888888; } + +table { width:100%; border:none; font-size:9pt; background-color:#CCCCCC; } +table thead th { background-color:#EFEFEF; padding:3px 0 3px 0; } +table tbody th { background-color:#F3F3F3; vertical-align:top; color:#888888; padding:3px 0 3px 0; } +table tbody td { background-color:#FFFFFF; font-family:verdana; padding:3px; } + diff --git a/tools/validator/validator.html b/tools/validator/validator.html new file mode 100644 index 000000000..05c6877d8 --- /dev/null +++ b/tools/validator/validator.html @@ -0,0 +1,92 @@ + + + + + + XE Cache Cleaner + + + + +

XE File Validator

+
+ + +
{$msg}
+ + + +
[{$lang->cmd_back}]
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
 {$lang->source_files}{$lang->target_files}
{$lang->current_version}{__ZBXE_VERSION__}
{$lang->released_version}{$released_version}
{$lang->current_path}{_XE_PATH_}
{$lang->files_count}{$source_cnt}{$target_cnt}
{$lang->leaveout_files} ({count($leaveouts)}) + + {$val}
+ +
{$lang->modified_files} ({count($modified)})  + + {$val}
+ +
{$lang->additional_files} ({count($added)})  + + {$val}
+ +
+ +
+ + + + + + + + + + + +
+ + +