CLIEN

본문 바로가기 메뉴 바로가기 보기설정 테마설정
톺아보기 공감글
커뮤니티 커뮤니티전체 C 모두의광장 F 모두의공원 I 사진게시판 Q 아무거나질문 D 정보와자료 N 새로운소식 T 유용한사이트 P 자료실 E 강좌/사용기 L 팁과강좌 U 사용기 · 체험단사용기 W 사고팔고 J 알뜰구매 S 회원중고장터 B 직접홍보 · 보험상담실 H 클리앙홈
소모임 소모임전체 ·굴러간당 ·아이포니앙 ·주식한당 ·MaClien ·일본산당 ·방탄소년당 ·개발한당 ·자전거당 ·AI당 ·이륜차당 ·안드로메당 ·콘솔한당 ·소시당 ·PC튜닝한당 ·키보드당 ·테니스친당 ·육아당 ·소셜게임한당 ·갖고다닌당 ·노젓는당 ·VR당 ·창업한당 ·나혼자산당 ·바다건너당 ·골프당 ·물고기당 ·ADHD당 ·나스당 ·위스키당 ·클다방 ·IoT당 ·어학당 ·라즈베리파이당 ·달린당 ·여행을떠난당 ·냐옹이당 ·레고당 ·방송한당 ·3D메이킹 ·X세대당 ·AI그림당 ·날아간당 ·사과시계당 ·배드민턴당 ·야구당 ·농구당 ·블랙베리당 ·곰돌이당 ·비어있당 ·FM당구당 ·블록체인당 ·보드게임당 ·활자중독당 ·볼링친당 ·캠핑간당 ·문명하셨당 ·클래시앙 ·요리한당 ·쿠키런당 ·대구당 ·DANGER당 ·뚝딱뚝당 ·디아블로당 ·개판이당 ·동숲한당 ·날아올랑 ·전기자전거당 ·e북본당 ·이브한당 ·패셔니앙 ·도시어부당 ·FM한당 ·맛있겠당 ·포뮬러당 ·젬워한당 ·걸그룹당 ·안경쓴당 ·차턴당 ·총쏜당 ·땀흘린당 ·하스스톤한당 ·히어로즈한당 ·인스타한당 ·KARA당 ·꼬들한당 ·덕질한당 ·가죽당 ·리눅서당 ·LOLien ·Mabinogien ·임시소모임 ·미드당 ·밀리터리당 ·땅판당 ·헌팅한당 ·오른당 ·영화본당 ·MTG한당 ·소리당 ·노키앙 ·적는당 ·찰칵찍당 ·그림그린당 ·소풍간당 ·심는당 ·패스오브엑자일당 ·품앱이당 ·리듬탄당 ·Sea마당 ·SimSim하당 ·심야식당 ·윈태블릿당 ·미끄러진당 ·축구당 ·스타한당 ·스팀한당 ·파도탄당 ·퐁당퐁당 ·테스트당 ·빨콩이당 ·공대시계당 ·터치패드당 ·트윗당 ·가상화폐당 ·시계찬당 ·WebOs당 ·와인마신당 ·WOW당 ·윈폰이당
임시소모임
고객지원
  • 게시물 삭제 요청
  • 불법촬영물등 신고
  • 쪽지 신고
  • 닉네임 신고
  • 제보 및 기타 제안
© CLIEN.NET
공지[점검] 잠시후 서비스 점검을 위해 약 30분간 접속이 차단됩니다. (금일 18:15 ~ 18:45)

나스당

강좌
Synology Download Station 연동 Telegram 봇 만들기 17

3
newtype
7,237
2020-03-15 17:47:28 수정일 : 2022-01-01 20:27:29 124.♡.168.93

제 개인 블로그이 내용 그대로 옮겨왔습니다.


재택근무를 하면서 q10에서 타오 나스를 구매했습니다. 주 용도는 마크 서버 및 torrent 머신인데, 헤놀로지 세팅을 하다 보니 욕심이 생겨서 외부에서도 텔레그램 봇을 통해 torrent파일이나 마그넷 링크로 다운로드할 수 있게 했습니다. 여기서는 그 방법을 공유하려고 합니다.

 

목표

  • Telegram bot: 예전에 python으로는 만들어본 적이 있는데, 이번에는 Golang으로 만들어 보려고 합니다. Torrent 파일은 disk station의 감시 경로에 넣어주면 되고, magnet은 Synology API(SYNO API)에서 지원하네요.
  • 시놀로지 세팅: Download Station 감시 설정, API 설정, API 연동용 계정 생성 등을 해야 합니다. 그리고 시놀로지에서는 Golang을 지원하지 않아서 Docker를 사용하려고 합니다.

 

Telegram bot

  1. Telegram bot을 먼저 생생해야 합니다. 봇 생성 방법은 검색해보면 많이 나오므로 여기서는 설명하지 않습니다.

https://core.telegram.org/bots#6-botfather

  • 봇을 생성하고 토큰값을 사용해야 하므로 기록해둡니다.

 

  1. 봇과 연동할 App 소스 코드는 아래 경로에서 다운로드합니다.

https://github.com/lmk/tgbot-ds

  • Telegram bot 연동은 아래 경로를 참고했습니다.

    https://github.com/go-telegram-bot-api/telegram-bot-api

  • SYNO API 연동은 아래 경로를 참고했습니다.

    https://global.download.synology.com/download/Document/Software/DeveloperGuide/Package/DownloadStation/All/enu/Synology_Download_Station_Web_API.pdf

 

시놀로지 세팅

 

  1. 공유 폴더 생성:
  • Download Station에서 감시할 'watch'라는 새 공유 폴더를 생성합니다.
  • Telegram bot 소스 코드를 넣을 'system/tgbot-ds' 폴더를 생성합니다.

     

  1. Synology API 연동용 계정 생성
  • 'tt_api'라는 계정을 만들고 watch 폴더의 읽고/쓰기 권한을 줍니다.
  • Synology API에서 연동할 수 있도록 Download Station 응용프로그램 허용 권한을 줍니다.
  • 계정을 생성했으면 현재 계정을 로그 아웃하고, 생성한 계정으로 로그인을 해봅니다.

 

  1. Download Station 감시 설정
  • Download Station 설정에서 Torrent 파일 감시할 수 있도록 합니다.

     

  1. Synology API 설정
  • 제어판 > 응용 프로그램 포털에서 'Download Station'을 선택하고 [편집] 버튼을 눌러 사용자 지정 포트를 활성화합니다.

     

  1. Docker 설정
  • Docker 설치가 안 되어 있으면, 패키지 센터에서 Docker를 먼저 설치합니다.
  • Docker를 열어서 '이미지' 메뉴 > [추가] 버튼 > URL에서 추가 > 'golang' 입력 > '1-alpine' 태그 선택을 합니다.
  • 잠시 후 이미지가 생성되면 이미지를 선택하고 [실행] 버튼을 누릅니다.
  • 컨테이너 생성 화면에서 [고급 설정] 버튼을 누릅니다.
  • 고급 설정 창 > 고급 설정 > 자동 재시작 활성화를 누릅니다.
  • 컨테이너가 폴더 접근을 할 수 있도록 볼륨을 설정합니다.
  • App에서 환경 변수를 추가합니다.
    • BOTTOKEN에는 봇을 생성할 때 기록해둔 토큰 값을 입력합니다.
    • MYTGNAME에는 봇과 대화할 내 텔레그램 이름입니다.
    • DESTINATION에는 Download Station에서 감시할 '/watch' 경로입니다.
    • SYNOHOST는 Synology API 설정에서 지정한 사용자 지정 URL과 포트입니다.
    • SYNOID는 위에서 생성한 Synology API 연동 ID입니다.
    • SYNOPWD는 위에서 생성한 Synology API 연동 ID의 암호입니다.
  • 명령에는 /bin/sh /go/src/run.sh를 입력합니다.
  • 이렇게 하면 시놀에서 Golang을 실행할 수 있는 환경이 만들어집니다.

 

테스트

  1. Docker > 컨테이너 메뉴에서 생성한 Golang을 실행해주고, [세부사항] 버튼을 눌러 창을 엽니다.
  2. '로그'탭으로 이동해서 로그를 확인합니다. 아래와 같은 로그가 올라오면 준비가 된 것입니다.
  3. Telegram에서 봇 에게 Torrent 파일을 전송하거나, magent URI를 메시지로 보내면 Download Station에서 다운이 됩니다.

 

사족, 

SYNO API 연동하는데, 이것저것 테스트해보느라 시간이 좀 오려 걸렸네요. 그리고, Golang으로 만들려는 욕심 때문에 Docker를 사용해야 했고, 이 과정에서 외부 패키지 연동이 안돼서 한참을 고생했습니다. 결국엔 외부 패키지 전체를 복사해서 실행에 성공을 했네요. 이 부분이 깔끔하지 못해 아쉽습니다. 크로스 컴파일을 해서 바이너리를 직접 올릴까도 생각해봤는데, 시놀과 헤놀 모두를 지원하려면 직접 실행하는 방법이 나을 것 같아서 진행했습니다.


출처 : https://newtype.pe.kr/464
newtype 님의 게시글 댓글
  • 주소복사
  • Facebook
  • X(Twitter)
댓글 • [17] 을 클릭하면 간단한 회원메모를 할 수 있습니다.
ski9444
IP 211.♡.15.60
03-15 2020-03-15 18:02:24
·
한번 해봐야 겠네요 감사
ski9444
IP 211.♡.15.60
03-15 2020-03-15 19:59:55 / 수정일: 2020-03-15 20:31:31
·
도커 작동은 성공을 했는데... 시드 올리면 I am not yours 라고 나옵니다. 어떤게 문제 일까요?

ps : 해결했습니다. ^^
ski9444
IP 211.♡.15.60
03-15 2020-03-15 20:49:17
·
한가지만 더 문의 드리자면 시드는 되는데 마그넷이 fail 이 뜨네요. 해결 할수 있을까요? 괜찮은 솔루션 인거 같은데요.
dsget 앱 필요 없이 사용할수 있을듯 해서
newtype
IP 210.♡.181.78
03-16 2020-03-16 08:56:26
·
@aliaskorea님 마그넷 fail일때, 텔레그램으로 나오는 메시지와 도커 로그에 어떤 메시지가 뜨는지 알수있을까요?
ski9444
IP 211.♡.15.60
03-16 2020-03-16 09:00:01 / 수정일: 2020-03-16 09:00:52
·
@newtype님 감사합니다. 이미지 올립니다. ^^ 요렇게 뜨네요... Sh는 제 텔레그램 이름이라
뒷부분은 삭제 했습니다.
ski9444
IP 211.♡.15.60
03-16 2020-03-16 09:00:13 / 수정일: 2020-03-16 09:01:16
·
@newtype님 제가 뭔가 놓친게 있는지도 모르겠네요.
newtype
IP 210.♡.181.78
03-16 2020-03-16 09:12:28 / 수정일: 2020-03-16 09:44:42
·
@aliaskorea님 로그가 명확하지 않네요. 소스 코드에서 로그 출력 부분을 보강해야할 듯 합니다.
소스코드의 SynoAPI.go 파일을 열여서,
57, 62, 63, 90, 94, 96 줄의 //log.xxxxxx 이런 부분에 "//" 이걸 빼고 저장하셔서, 소스 경로에 덮어쓰세요.
그러면 로그가 좀 더 상세하게 남거든요.
도커 컨테이너를 재시작, 마그넷 링크 보내보시고, 남겨진 로그를 알려주시겠어요?
ski9444
IP 211.♡.15.60
03-16 2020-03-16 10:24:33
·
@newtype님 로그 주석을 지우니까 컨테이너가 아예 작동을 안하네요. ㅠㅠ
newtype
IP 210.♡.181.78
03-16 2020-03-16 12:29:50 / 수정일: 2020-03-16 12:31:29
·
@aliaskorea님
죄송합니다. 제가 하나를 빼먹었네요.
SynoAPI.go 파일 상단에 "log"를 추가해주세요.
ski9444
IP 211.♡.15.60
03-16 2020-03-16 12:45:50 / 수정일: 2020-03-16 12:46:54
·
@newtype님 로그 피일 다시 올려 드립니다. 그리고 이런 좋은 솔루션 만들어 주셔서 감사합니다. ^^ 저는 마그넷만 해결되면 정말 좋을거 같습니다.
삭제 되었습니다.
ski9444
IP 211.♡.15.60
03-16 2020-03-16 12:47:15 / 수정일: 2020-03-16 12:47:32
·
텔레그램 메시지 입니다. 말씀드린대로 아무거나 받았어요,
newtype
IP 124.♡.168.93
03-16 2020-03-16 13:32:37 / 수정일: 2022-01-01 20:26:43
·
@님 @님 로그를 보니,
SYNO API로그인에 실패 했습니다. 에러 내용은 파라미터오류(101)고요.
도커 환경변수에 SYNOID, SYNOPWD 가 제대로 설정되어 있는지 보시고요.
그래도 안되시면, 텔레그램 추가해주세요. 출근중이라 클리앙 확인하기가 쉽지 않네요
ski9444
IP 211.♡.15.60
03-16 2020-03-16 14:06:05
·
@newtype님 감사합니다. 확인 해 보겠습니다.
ski9444
IP 1.♡.28.156
03-28 2020-03-28 01:13:01
·
개발자님 덕분에 잘 셋팅 했습니다 ^^ 감사합니다 다시 올리셔도 되겠는 걸요
라트라팡테
IP 218.♡.37.147
07-01 2020-07-01 03:55:07
·
상기 방법을 따라 도커에서 golang 을 실행 하였구 텔레그램에서 마그넷으로 추가는 잘 되는데, torrent 시드파일을 추가하면 Not torrent file 이라는 메시지가 나오네요.. 원인이 무엇일까요?.. 당연히 시드파일은 토렌트 사이트에서 다운로드한 ******************2020.1080p.KOR.FHDRip.H264.AAC-RTM.torrent 파일입니다..
DoDoii
IP 118.♡.175.142
07-31 2020-07-31 14:21:00
·
덕분에 잘 쓰고있습니다. DS Mobile이 어떻게 해도 안되서.. 감사합니다!
-justin-
IP 211.♡.70.61
08-05 2020-08-05 11:47:10
·
좋은 프로그램 공유 감사합니다.

저도 처음에 "Fail create magnet" 오류가 나서 확인해 봤더니..
위 본문에 SYNID, SYNPWD를 환경변수로 설정하라고 되어 있는데 이게 오타네요.
SYNOID, SYNOPWD로 변경해야 잘 동작합니다.
본문 수정해 두시면 다음에 시도하시는 분이 시행착오 없으실 것 같아요^^
새로운 댓글이 없습니다.
이미지 최대 업로드 용량 15 MB
업로드 가능 확장자 jpg,gif,png,jpeg,webp
지나치게 큰 이미지의 크기는 조정될 수 있습니다.
목록으로
글쓰기
목록으로 댓글보기 이전글 다음글
아이디  ·  비밀번호 찾기 회원가입
이용규칙 운영알림판 운영소통 재검토요청 도움말 버그신고
개인정보처리방침 이용약관 책임의 한계와 법적고지 청소년 보호정책
©   •  CLIEN.NET
보안 강화를 위한 이메일 인증
안전한 서비스 이용을 위해 이메일 인증을 완료해 주세요. 현재 회원님은 이메일 인증이 완료되지 않은 상태입니다.
최근 급증하는 해킹 및 도용 시도로부터 계정을 보호하기 위해 인증 절차가 강화되었습니다.

  • 이메일 미인증 시 글쓰기, 댓글 작성 등 게시판 활동이 제한됩니다.
  • 이후 새로운 기기에서 로그인할 때마다 반드시 이메일 인증을 거쳐야 합니다.
  • 2단계 인증 사용 회원도 최초 1회는 반드시 인증하여야 합니다.
  • 개인정보에서도 이메일 인증을 할 수 있습니다.
지금 이메일 인증하기
등록된 이메일 주소를 확인하고 인증번호를 입력하여
인증을 완료해 주세요.