본문 바로가기
PC/Programming

[Telegram-bot] File-management를 위한 NAS_bot

by dragom 2020. 10. 30.
반응형

이 글 본문은 프로그램의 기능을 설명하는 내용입니다.

프로그램 다운로드는 아래 링크 문서에서 가능합니다.

2020/11/09 - [PC] - [Telegram-bot] NAS_bot(윈도우OS실행파일)

 

[Telegram-bot] NAS_bot(윈도우OS실행파일)

기능설명은 이전 글 참고 부탁드립니다. 2020/10/30 - [PC] - [Telegram-bot] File-management를 위한 NAS_bot [Telegram-bot] File-management를 위한 NAS_bot 최근 telegram-bot이라는 telegram의 너무나도 고맙..

dragom.tistory.com

소스 코드는 아래 문서 참고 부탁드립니다.

2020/11/09 - [PC] - [Telegram-bot] NAS_bot(소스 코드)

 

[Telegram-bot] NAS_bot(소스 코드)

2020/10/30 - [PC] - [Telegram-bot] File-management를 위한 NAS_bot [Telegram-bot] File-management를 위한 NAS_bot 이 글 본문은 프로그램의 기능을 설명하는 내용입니다. 프로그램 다운로드는 아래 링크 문서..

dragom.tistory.com

 


최근 telegram-bot이라는 telegram의 너무나도 고맙고 재밌는 기능을 알게 되었다.

Synology NAS의 알림을 telegram으로 받는 bot과 Synology NAS의 download station에 torrent 등록/상태 확인하는 bot 등을 사용해보면서, NAS 내의 파일을 다운로드/업로드 할 수 있는 봇이 없나 계속 찾아보았으나 찾을 수 없었고

결국 만들게 되었다.

  

Bot 작동 예시

  

Python3 버전에서 python-telegram-bot module을 사용하여 제작하였다.

 

원래는 docker로 만들어 많은 사람들이 쉽게 쓸 수 있도록 배포하고 싶었으나, 아직 docker에 대해 잘 모르겠어서 현재는 그냥 python 단일 파일인 상태이다. 

 Window 기반 PC에서도, linux 기반 서버/NAS에서도 python과 python-telegram-bot만 설치 되어있다면 사용할 수 있다.

 텔레그램 메신저를 통해 file management 기능을 실행시키면 위 예시와 같이 경로가 text로 표시되고 경로 내 폴더/파일들은 Inline 버튼으로 뜨도록 처리하였다.

 폴더를 선택한 경우 경로가 이동되고 history를 알 수 있도록 경로 text는 남겨놓는다.
위 예시 스크린샷에도 경로가 여러 줄 떠 있는 이유다.

 

 

파일 선택 예시

 

 폴더가 아닌 파일을 선택하는 경우 위 스크린샷과 같이 5가지 메뉴가 표시된다.

 [다운로드]를 선택하는 경우 20MB2GB이내의 파일은 메신저 창을 통해 보내준다.
* 20MB2GB 이상 파일의 경우 텔레그램 메신저를 통해 보낼 수 없다.
** 내가 사용하는 환경에서는 NAS에 web-server가 구동 중이기에 20MB2GB이상의 파일은 /volume1/web/telegram_bot에 복사한 뒤 "http://서버주소/telegram_bot/파일명"를 주소로하는 다운로드 링크를 보내도록 구현해 놓았다.

 [복사], [이동]을 선택하는 경우 현재 경로의 폴더만 버튼으로 떠 복사/이동 할 위치를 선택할 수 있도록 구현하였다.

다만 덮어쓰기는 되지 않도록 동일 이름이 이미 있는 경우 "_(1)"을 파일이름에 붙이도록 하였다.

물론 [삭제]의 경우 그냥 삭제해버린다. OK/Cancel 확인 창 만들고 싶었으나 시간을 이미 너무 쓴 듯하여 만들지 않았다.

[업로드]의 경우 폴더/파일 선택 등을 통해 이동하고 싶은 경로로 이동한 뒤 메신저의 파일 첨부 기능을 이용해 파일을 보내면 해당 경로로 업로드 된다.
복사/이동과 동일하게 덮어쓰기는 허용되지 않고 이름을 변경한다.
* 20MB2GB 이상의 파일을 보낼 수 없어 업로드는 20MB2GB 이하만 된다고 생각할 수 있다.
** 메신저에서는 미디어 파일의 경우 사진/음성/영상 등으로 (앱에서는 사진/영상을 갤러리에서 선택하는 경우) 보낼지 파일로 보낼지 선택할 수 있도록 되어있는데, 파일로 보내는 경우만 처리할 수 있도록 하였다. 따라서, 사진도 "파일 보내기"로 보내면 잘 업로드 된다.
(미디어 타입으로 보내는 경우 파일명이 사라져 처리하기 까다로워서..)

 * 추후 tar, zip, gz, rar 등의 압축파일을 푸는 옵션도 넣을까 싶다.

 


 

일반적인 봇이야 접속 주소를 누군가 때려맞춰 아무나 들어와서 본다한들 별 문제가 없을 수 있겠지만,
이 봇의 경우 NAS 등 파일서버에서 사용하기 위해 만들어졌기에 다수의 사람들이 접속하게 되어있고
파일을 다루는 만큼 보안이 신경쓰여 관리자를 두고 관리자가 허용해준 user에게만 기능이 동작되도록 하였다.

 따라서 처음 접속하는 사람은 아래 스크린샷처럼 권한을 요청하도록 해 놓았다. 
권한 요청이라 함은 단순히 텔레그램의 연락처 전송 기능을 이용해 관리자에게 요청하는 user 계정의 이름, 전화번호 등이 전달되도록 해 놓은 것이다.

 관리자가 [허용], [거부]를 통해 해당 ID를 처리하면 승인 여부도 유저에게 보내주도록 되어있다.

 

처음 접속 시

  

권한 요청 시 관리자가 받는 메시지

 

  앞서 python 단일 파일로 되어있다고는 했지만, 이러한 승인된 유저 구분 등을 위해 구동하는데 앞서 ini 파일에 저장되어있는 설정을 읽어드리게 되어있다.

 이 ini 파일 내에는 bot에 대한 token이나 관리자의 chat_ID, 사용 허가된 user_ID와 user_ID의 신원을 확인할 수 있도록 전화번호 등이 저장되어있다.

 또한 파일 매니저가 구동 될 위치인 base_path나 20MB2GB이상의 파일 다운로드할 링크 생성에 활용되는 uri_path, http_uri 등의 변수를 저장해 놓았다.

 

설정 파일

 


실행파일 다운로드

2020/11/02 - [PC] - [Telegram-bot] File-management를 위한 NAS_bot(실행파일)

 

[Telegram-bot] File-management를 위한 NAS_bot(실행파일)

기능설명은 이전 글 참고 부탁드립니다. 2020/10/30 - [PC] - [Telegram-bot] File-management를 위한 NAS_bot [Telegram-bot] File-management를 위한 NAS_bot 최근 telegram-bot이라는 telegram의 너무나도 고맙..

dragom.tistory.com

소스코드

2020/11/04 - [PC] - [Telegram-bot] File-management를 위한 NAS_bot(소스 코드)

 

[Telegram-bot] File-management를 위한 NAS_bot(소스 코드)

2020/10/30 - [PC] - [Telegram-bot] File-management를 위한 NAS_bot [Telegram-bot] File-management를 위한 NAS_bot 이 글 본문은 프로그램의 기능을 설명하는 내용입니다. 프로그램 다운로드는 아래 링크 문서..

dragom.tistory.com

 

반응형

댓글