Skip to content
Server
2015.03.03 09:07

웹하드 서버 구축하기

조회 수 3409 추천 수 0 댓글 2
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄 첨부
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄 첨부

 

http://www.xpressengine.com/?mid=download&package_id=20466120

 

https://www.xpressengine.com/index.php?mid=download&package_id=21643227

http://tuwlab.com/ece/9086


질문:xe에 질문

ELFINDERXE 가 한글파일명 및 한글폴더에 문제가 발생된다.

인코딩에 문제가 생기나?

enfinder/include/php/elFinderVolumeMySQL.class.php


관세납부.PNG



java1.PNG




 2.7v500f.PNG


 

 

 protected function _mkdir($path, $name) {
  return $this->make($path, $name, 'directory') ? $this->_joinPath($path, $name) : false;
 }
 
 /**
  * Create file and return it's path or false on failed
  *
  * @param  string  $path  parent dir path
  * @param string  $name  new file name
  * @return string|bool
  * @author Dmitry (dio) Levashov
  **/
 protected function _mkfile($path, $name) {
  return $this->make($path, $name, 'text/plain') ? $this->_joinPath($path, $name) : false;
 }
 
 /**
  * Create symlink. FTP driver does not support symlinks.
  *
  * @param  string  $target  link target
  * @param  string  $path    symlink path
  * @return bool
  * @author Dmitry (dio) Levashov
  **/

 

 

 

enfinder/include/php/elFinderVolumeDriver.class.php

 protected function encode($path) {
  if ($path !== '') {

   // cut ROOT from $path for security reason, even if hacker decodes the path he will not know the root
   $p = $this->_relpath($path);
   // if reqesting root dir $path will be empty, then assign '/' as we cannot leave it blank for crypt
   if ($p === '') {
    $p = DIRECTORY_SEPARATOR;
   }

   // TODO crypt path and return hash
   $hash = $this->crypt($p);
   // hash is used as id in HTML that means it must contain vaild chars
   // make base64 html safe and append prefix in begining
   $hash = strtr(base64_encode($hash), '+/=', '-_.');
   // remove dots '.' at the end, before it was '=' in base64
   $hash = rtrim($hash, '.');
   // append volume id to make hash unique
   return $this->id.$hash;
  }
 }
 
 /**
  * Decode path from hash
  *
  * @param  string  file hash
  * @return string
  * @author Dmitry (dio) Levashov
  * @author Troex Nevelin
  **/



1.PNG




(수년간 XE 들락날락하고, 이런저런 사이트들도 만들어봤지만,, 이 모듈이 가장 '팍' 하는 느낌이 있네요. 체감상 ㅎ;;)




0. 저는 프로그래밍을 배워본적이 한번도 없는 초보이기 때문에, 아마 아래의 코드에 엄청난 헛점이 있을겁니다. 분명.


1. XE 회원들 이름으로 자동으로 폴더를 생성하게 하고, 해당 폴더에만 권한을 준다. ($grant->manager 회원은 루트 디렉토리를 자유롭게 이용할 수 있다.)



/modules/elfinderxe/elfinderxe.controller.php

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
// User 별 폴더 지정 및 폴더 생성 : DesignSORI Custom
        $logged_info = Context::get('logged_info');
        $grant = Context::get('grant');
        if(!$grant->manager){
            $webhard_user_folder $this->module_info->root_path.'/'.$logged_info->user_id;
            if(!is_dir($webhard_user_folder)){
                $webhard_user_folder_old_umask = umask(0);
                mkdir($webhard_user_folder,0707);
                umask ($webhard_user_folder_old_umask);
            }
            $this->module_info->root_path = $webhard_user_folder;
            $this->module_info->root_url = $this->module_info->root_url.'/'.$logged_info->user_id;
            $this->module_info->root_alias = $this->module_info->root_alias.' / '.$logged_info->user_id;
        }
 
 
        // ElfinderXE Conntector 시작 (요 위에 저 코드를 삽입합니다.)
(뭔가 이상없이 작동은 되지만, 보안상 엄청 허접한게 아닐까??)



2. 비회원인 경우, 에러를 만들어서, 접속 불가능하게 한다. (모듈 설정 -> 권한관리 에서 할 수도 있지만. 이렇게 완전 차단도 가능할 듯 요??)


/modules/elfinderxe/elfinderxe.controller.php

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
// User 별 폴더 지정 및 폴더 생성 : DesignSORI Custom
        $logged_info = Context::get('logged_info');
        $grant = Context::get('grant');
        if(!$logged_info){
            $this->module_info->root_path = '';
            $this->module_info->root_url = '';
            $this->module_info->root_alias = '';
        }
        elseif(!$grant->manager){
            $webhard_user_folder $this->module_info->root_path.'/'.$logged_info->user_id;
            if(!is_dir($webhard_user_folder)){
                $webhard_user_folder_old_umask = umask(0);
                mkdir($webhard_user_folder,0707);
                umask ($webhard_user_folder_old_umask);
            }
            $this->module_info->root_path = $webhard_user_folder;
            $this->module_info->root_url = $this->module_info->root_url.'/'.$logged_info->user_id;
            $this->module_info->root_alias = $this->module_info->root_alias.' / '.$logged_info->user_id;
        }
 
 
        // ElfinderXE Conntector 시작 (요 위에 저 코드를 삽입합니다.)
(이런식으로 무식하게 에러를 일부러 만드는게 과연 맞는 짓인건가? / 로그 등등 문제 생기지 않을까?)



3. 그룹별, 회원별, 혹은 등등등? 의 구분을 둬서

3-1. 폴더 용량 제한을 둔다.

3-2. 전송속도 제한을 둔다.


4. 회원 개인메뉴 (회원정보 변경, 내가 쓴 글 보기 등등) 영역에 '내 웹하드' 라는 메뉴를 추가하게 한다.


5. 뭔가 다른 기능들을 더 상상해볼 수 있지 않을까??





..................... 이런식으로 발전시켜보는건 어떨까요?!





 

elfinder 란?

jQuery로 구현되어 있는 웹 기반 파일 관리자 입니다.

손쉽게 폴더 및 파일 브라우징을 할 수 있으며,

업로드 및 다운로드, 미리보기, 압축 등 여러가지 강력한 기능을 포함하고 있습니다.

또한 유용한 여러가지의 단축키를 제공합니다.

 

 

■ 설치 및 환경 설정 안내

elfinder 를 사용함에 있어서 상당히 많은 옵션으로 사용할 수 있습니다만..

크게는 기본 옵션으로 모든것을 편리하게 사용할 수 있기 때문에,

반드시 필요한 루트 폴더 경로와 URL 그리고 취향에 따라 독(dock) 기능을 켜고 끌 수 있는 옵션만을

XE 에서 조작할 수 있도록 하였습니다.

elfinder 애드온을 xe 애드온 폴더에 설치합니다.

본 애드온은 xe core 1.5.x 에서 동작하게끔 만들어져 있습니다. 


■ 웹에서 접근할 폴더 만들기

url로 접근 가능한 폴더를 하나 생성하여 쓰기 권한을 줍니다.

저는 우분투 리눅스를 서버로 사용하는데 www-data 그룹과 유저로 주었습니다.

잘 모르시는 분은 707 권한을 주세요!

설정 화면에서 폴더 경로와 URL 을 예와 같이 작성하여 줍니다.

xe 자체 폴더나 기타 권한 없는 폴더도 설정할 수 있습니다만..

권한이 없기 때문에 쓰기같은것은 되지 않는데다가, xe 의 file 폴더에는 권한을 가지고 있으며

여러가지 보안상의 위험성이 있다고 판단되므로 임의의 폴더를 사용하는 것을 추천합니다.


■ 확인사항

애드온 폴더 elfinder/include/connector.php 파일은 쓰기 권한을 가지고 있어야 합니다.

본 애드온을 다운로드 받으시면 기본적으로 쓰기 권한을 가진 채 압축되어 있으나,

압축프로그램 또는 ftp로 올리시는 과정에서 권한이 없어질 수 있으니 오류 발생 시 권한을 확인해 주세요!


■ 사용법

사이트 내 어디에서든 <div id="elfinder"></div> 로 사용할 수 있지만,

퍼포먼스의 향상을 위해서 기왕이면 대상 모듈을 선택해서 사용하는 것을 추천합니다.

또한 엘리먼트 아이디를 open,close,dock,undock 네가지를 사용하여,

elfinder 자체를 컨트롤 할 수 있습니다.

예를 들면, <div id="open" class="button"></div>

이러한 버튼을 만들었다면, 이 버튼을 누르면 elfinder 파일 관리자가 열립니다.

close 는 파일 관리자를 닫습니다.

dock / undock 은 elfinder 를 페이지에서 떼어내어 이동할 수 있게 하거나 고정시킵니다.

(설정에서 독 기능을 활성화 하셔야 합니다.)



■ 옵션

추가적인 옵션을 사용하고 싶으신 분은 애드온 폴더 elfinder/include/connector_ori.php 파일을

수정하시면 됩니다.



■ 기타 한마디

태어나서 처음으로 만들어본 애드온 입니다.

엄청 거창해 보이지만 사실 거창한것은 elfinder 이고,

그것을 사용하게 끔 애드온으로 만든것은 무척 허접합니다..

초보이기 때문에 무척 간결하고 말도 안되는 방법으로 만들었습니다.

고수분들이 파일을 열어볼 것을 생각하면 참 부끄럽습니다.

공부가 많이 되었는데 더욱 열심히 공부할께요~ ^^


참고로 한글화는 제가 직접 하였습니다.

상황에 안맞는 단어나 오탈자가 있으면 알려주세요.

프로젝트 사이트에 올렸는데 다음 릴리즈때 정식으로 포함하여 준다니까

elfinder를 직접 받아서 다른곳에 사용하실 분은 참고하세요~

그리고 elfinder 에서 제공하는 파일과는 일부 구성이라던가.. 약간 다릅니다.


위의 스크린샷 중 강아지 사진은 초상권이 있습니다.

제 여동생 보리입니다 ^^;;;


■ 버전 업데이트 0.1.1

한글화 중 '업로드 파일'을 '파일 업로드'로 의미에 맞게 수정하였습니다.

StyleRoot 님께서 알려주셨습니다. 감사합니다


시간대를 정상적으로 한국 시간대로 나오게 수정하였습니다.

해피신 님께서 알려주셨습니다. 감사합니다 ^^


■ 문의에 대한 답변


1.사이트가 백지가 되는 문제

혹시 XE 코어 버전이 1.4.x 가 아닌지 확인해 주세요!

이 애드온은 1.5.x 버전에서 정상적으로 사용이 가능합니다!


2.백엔드의 설정이 올바르지 않다고 표시되는 것은,

elfinder가 애드온 설정에서 설정한 폴더 및 URL 경로로 접근할 수 없기 때문에 발생합니다.

(권한이 없다고 하더라도 읽기 권한만 있다면 정상적으로 표시는 됩니다.)

그러므로 애드온을 설치하시면 꼭 설정에 들어가셔서 정상적인 폴더 경로 및 URL을

입력하신 후 테스트 해보시기 바랍니다!

 

 

개인 서버에 나만의 전용 웹하드(클라우드) 구축하기 Pydio편

 

 

개인 서버 전용 웹하드(클라우드) 비교

 

 

 

 

http://www.kbench.com/?q=node/83135&page=8

 

https://www.xpressengine.com/forum/22618942

 

 

 

 

 

 

 

 

로그인 후 댓글쓰기가 가능합니다.

?
  • ?
    Progress 2015.03.03 18:34
    http://tuwlab.com/computer/9086
  • ?
    서버님 2019.04.09 06:57
    안녕하세요~

    저가 별도로 elfinderxe의 업데이트 판을 만들었는데요~

    해당 소스를 추가하여 별도 배포 해도 될까요?

    답변 부탁드릴께요~

http://urin79.com

우린친구블로그

sketchbook5, 스케치북5

sketchbook5, 스케치북5

나눔글꼴 설치 안내


이 PC에는 나눔글꼴이 설치되어 있지 않습니다.

이 사이트를 나눔글꼴로 보기 위해서는
나눔글꼴을 설치해야 합니다.

설치 취소