Example #1
0
 /**
  * @brief 외부 http로 요청되는 파일일 경우 파일을 받아와서 저장 후 return
  **/
 function getHtmlPage($path, $caching_interval, $cache_file)
 {
     // 캐시 검사
     if ($caching_interval > 0 && file_exists($cache_file) && filemtime($cache_file) + $caching_interval * 60 > time()) {
         $content = FileHandler::readFile($cache_file);
     } else {
         FileHandler::getRemoteFile($path, $cache_file);
         $content = FileHandler::readFile($cache_file);
     }
     // opage controller 생성
     $oOpageController =& getController('opage');
     // 외부 서버의 페이지 일 경우 이미지, css, javascript등의 url을 변경
     $content = $oOpageController->replaceSrc($content, $path);
     // 해당 문서를 utf-8로 변경
     $buff->content = $content;
     $buff = Context::convertEncoding($buff);
     $content = $buff->content;
     // title 추출
     $title = $oOpageController->getTitle($content);
     if ($title) {
         Context::setBrowserTitle($title);
     }
     // header script 추출
     $head_script = $oOpageController->getHeadScript($content);
     if ($head_script) {
         Context::addHtmlHeader($head_script);
     }
     // body 내용 추출
     $body_script = $oOpageController->getBodyScript($content);
     if (!$body_script) {
         $body_script = $content;
     }
     return $content;
 }
Example #2
0
 function getInstallFTPList()
 {
     $ftp_info = Context::getRequestVars();
     if (!$ftp_info->ftp_user || !$ftp_info->ftp_password) {
         return new Object(-1, 'msg_ftp_invalid_auth_info');
     }
     $this->pwd = $ftp_info->ftp_root_path;
     if (!$ftp_info->ftp_host) {
         $ftp_info->ftp_host = "127.0.0.1";
     }
     if ($ftp_info->sftp == 'Y') {
         return $this->getSFTPList();
     }
     if (function_exists(ftp_connect)) {
         $connection = ftp_connect($ftp_info->ftp_host, $ftp_info->ftp_port);
         if (!$connection) {
             return new Object(-1, sprintf(Context::getLang('msg_ftp_not_connected'), $ftp_info->ftp_host));
         }
         $login_result = @ftp_login($connection, $ftp_info->ftp_user, $ftp_info->ftp_password);
         if (!$login_result) {
             ftp_close($connection);
             return new Object(-1, 'msg_ftp_invalid_auth_info');
         }
         if ($ftp_info->ftp_pasv != "N") {
             ftp_pasv($connection, true);
         }
         $_list = ftp_rawlist($connection, $this->pwd);
         ftp_close($connection);
     } else {
         require_once _XE_PATH_ . 'libs/ftp.class.php';
         $oFtp = new ftp();
         if ($oFtp->ftp_connect($ftp_info->ftp_host, $ftp_info->ftp_port)) {
             if ($oFtp->ftp_login($ftp_info->ftp_user, $ftp_info->ftp_password)) {
                 $_list = $oFtp->ftp_rawlist($this->pwd);
                 $oFtp->ftp_quit();
             } else {
                 $oFtp->ftp_quit();
                 return new Object(-1, 'msg_ftp_invalid_auth_info');
             }
         }
     }
     $list = array();
     if ($_list) {
         foreach ($_list as $k => $v) {
             $src = null;
             $src->data = $v;
             $res = Context::convertEncoding($src);
             $v = $res->data;
             if (strpos($v, 'd') === 0 || strpos($v, '<DIR>')) {
                 $list[] = substr(strrchr($v, ' '), 1) . '/';
             }
         }
     }
     $this->add('list', $list);
 }
Example #3
0
 /**
  * Add file list to Object after ftp connect
  * @return void|Object
  */
 function getAdminFTPList()
 {
     Context::loadLang(_XE_PATH_ . 'modules/autoinstall/lang');
     @set_time_limit(5);
     $ftp_info = Context::getRequestVars();
     if (!$ftp_info->ftp_user || !$ftp_info->ftp_password) {
         return new Object(-1, 'msg_ftp_invalid_auth_info');
     }
     $this->pwd = $ftp_info->ftp_root_path;
     if (!$ftp_info->ftp_host) {
         $ftp_info->ftp_host = "127.0.0.1";
     }
     if (!$ftp_info->ftp_port || !is_numeric($ftp_info->ftp_port)) {
         $ftp_info->ftp_port = "21";
     }
     if ($ftp_info->sftp == 'Y') {
         if (!function_exists('ssh2_sftp')) {
             return new Object(-1, 'disable_sftp_support');
         }
         return $this->getSFTPList();
     }
     $oFtp = new ftp();
     if ($oFtp->ftp_connect($ftp_info->ftp_host, $ftp_info->ftp_port)) {
         if ($oFtp->ftp_login($ftp_info->ftp_user, $ftp_info->ftp_password)) {
             $_list = $oFtp->ftp_rawlist($this->pwd);
             $oFtp->ftp_quit();
         } else {
             return new Object(-1, 'msg_ftp_invalid_auth_info');
         }
     }
     $list = array();
     if ($_list) {
         foreach ($_list as $k => $v) {
             $src = new stdClass();
             $src->data = $v;
             $res = Context::convertEncoding($src);
             $v = $res->data;
             if (strpos($v, 'd') === 0 || strpos($v, '<DIR>')) {
                 $list[] = substr(strrchr($v, ' '), 1) . '/';
             }
         }
     } else {
         return new Object(-1, 'msg_ftp_no_directory');
     }
     $this->add('list', $list);
 }
Example #4
0
 /**
  * @brief Save the file and return if a file is requested by http
  */
 function getHtmlPage($path, $caching_interval, $cache_file)
 {
     // Verify cache
     if ($caching_interval > 0 && file_exists($cache_file) && filemtime($cache_file) + $caching_interval * 60 > $_SERVER['REQUEST_TIME']) {
         $content = FileHandler::readFile($cache_file);
     } else {
         FileHandler::getRemoteFile($path, $cache_file);
         $content = FileHandler::readFile($cache_file);
     }
     // Create opage controller
     $oPageController = getController('page');
     // change url of image, css, javascript and so on if the page is from external server
     $content = $oPageController->replaceSrc($content, $path);
     // Change the document to utf-8 format
     $buff = new stdClass();
     $buff->content = $content;
     $buff = Context::convertEncoding($buff);
     $content = $buff->content;
     // Extract a title
     $title = $oPageController->getTitle($content);
     if ($title) {
         Context::setBrowserTitle($title);
     }
     // Extract header script
     $head_script = $oPageController->getHeadScript($content);
     if ($head_script) {
         Context::addHtmlHeader($head_script);
     }
     // Extract content from the body
     $body_script = $oPageController->getBodyScript($content);
     if (!$body_script) {
         $body_script = $content;
     }
     return $content;
 }
Example #5
0
 /**
  * Convert strings into UTF-8
  *
  * @param string $str String to convert
  * @return string converted string
  */
 function convertEncodingStr($str)
 {
     $obj->str = $str;
     $obj = Context::convertEncoding($obj);
     return $obj->str;
 }
 function insertTrackback($obj, $manual_inserted = false)
 {
     // 엮인글 정리
     $obj = Context::convertEncoding($obj);
     if (!$obj->blog_name) {
         $obj->blog_name = $obj->title;
     }
     $obj->excerpt = strip_tags($obj->excerpt);
     // trigger 호출 (before)
     $output = ModuleHandler::triggerCall('trackback.insertTrackback', 'before', $obj);
     if (!$output->toBool()) {
         return $output;
     }
     // GET으로 넘어온 document_srl을 참조, 없으면 오류~
     $document_srl = $obj->document_srl;
     if (!$manual_inserted) {
         // document model 객체 생성후 원본글을 가져옴
         $oDocumentModel =& getModel('document');
         $oDocument = $oDocumentModel->getDocument($document_srl);
         // 원본글이 없거나 트랙백 허용을 하지 않으면 오류 표시
         if (!$oDocument->isExists()) {
             return $this->stop('fail');
         }
         if (!$oDocument->allowTrackback()) {
             return new Object(-1, 'fail');
         }
         $obj->module_srl = $oDocument->get('module_srl');
     }
     // 엮인글을 입력
     $obj->trackback_srl = getNextSequence();
     $obj->list_order = $obj->trackback_srl * -1;
     $output = executeQuery('trackback.insertTrackback', $obj);
     if (!$output->toBool()) {
         return $output;
     }
     // 입력에 이상이 없으면 해당 글의 엮인글 수를 올림
     if (!$manual_inserted) {
         // trackback model 객체 생성
         $oTrackbackModel =& getModel('trackback');
         // 해당 글의 전체 엮인글 수를 구해옴
         $trackback_count = $oTrackbackModel->getTrackbackCount($document_srl);
         // document controller 객체 생성
         $oDocumentController =& getController('document');
         // 해당글의 엮인글 수를 업데이트
         $output = $oDocumentController->updateTrackbackCount($document_srl, $trackback_count);
         // 결과 return
         if (!$output->toBool()) {
             return $output;
         }
     }
     // 원본글에 알림(notify_message)가 설정되어 있으면 메세지 보냄
     if (!$manual_inserted) {
         $oDocument->notify(Context::getLang('trackback'), $obj->excerpt);
     }
     // trigger 호출 (after)
     $output = ModuleHandler::triggerCall('trackback.insertTrackback', 'after', $obj);
     if (!$output->toBool()) {
         return $output;
     }
     return new Object();
 }
Example #7
0
 /**
  * Trackback inserted
  * @param object $obj
  * @param bool $manual_inserted
  * @return Object
  */
 function insertTrackback($obj, $manual_inserted = false)
 {
     // List trackback
     $obj = Context::convertEncoding($obj);
     if (!$obj->blog_name) {
         $obj->blog_name = $obj->title;
     }
     $obj->excerpt = strip_tags($obj->excerpt);
     // Call a trigger (before)
     $output = ModuleHandler::triggerCall('trackback.insertTrackback', 'before', $obj);
     if (!$output->toBool()) {
         return $output;
     }
     // Document_srl see passed in GET, if an error ~
     $document_srl = $obj->document_srl;
     if (!$manual_inserted) {
         // Imported document model object, it permits you to wonbongeul
         $oDocumentModel =& getModel('document');
         $oDocument = $oDocumentModel->getDocument($document_srl);
         // If you do not allow two or trackback wonbongeul error display
         if (!$oDocument->isExists()) {
             return $this->stop('fail');
         }
         if (!$oDocument->allowTrackback()) {
             return new Object(-1, 'fail');
         }
         $obj->module_srl = $oDocument->get('module_srl');
     }
     // Enter Trackbacks
     $obj->trackback_srl = getNextSequence();
     $obj->list_order = $obj->trackback_srl * -1;
     $output = executeQuery('trackback.insertTrackback', $obj);
     if (!$output->toBool()) {
         return $output;
     }
     // If there is more to enter the article number yeokingeul Rounds
     if (!$manual_inserted) {
         // trackback model object creation
         $oTrackbackModel =& getModel('trackback');
         // All the article number yeokingeul guhaeom
         $trackback_count = $oTrackbackModel->getTrackbackCount($document_srl);
         // document controller object creation
         $oDocumentController =& getController('document');
         // Update the number of posts that yeokingeul
         $output = $oDocumentController->updateTrackbackCount($document_srl, $trackback_count);
         // Return result
         if (!$output->toBool()) {
             return $output;
         }
     }
     // Notify wonbongeul (notify_message) if there is a Send a message
     if (!$manual_inserted) {
         $oDocument->notify(Context::getLang('trackback'), $obj->excerpt);
     }
     // Call a trigger (after)
     $output = ModuleHandler::triggerCall('trackback.insertTrackback', 'after', $obj);
     if (!$output->toBool()) {
         return $output;
     }
     return new Object();
 }