U E D R , A S I H C RSS

AngelsCamp/2015/MagetDownloader (rev. 1.11)

Angels Camp/2015/Maget Downloader

개요

설계

  • Zerobot은 실제 토렌트 클라이언트가 구동될 서버에 httprequest를 보내어 마그넷과 사용자 정보 전달
  • 웹서버(Flask)는 이 magnet과 user의 정보를 저장(메모리에) transmission에 rpc로 torrent 다운로드를 시작
  • 사용자는 zerobot에 status, eta 명령어를 입력함으로 다운로드의 진행상황을 알 수 있으며 다운 완료시 파일 링크 제공
  • transmission은 빠른 다운로드를 위한 일반 회선과 안전한 다운로드를 위한 vpn회선 두가지가 있다.
  • 파일은 http의 형태로 nginx를 통해 다운로드 및 스트리밍 가능

구현

zerobot_code.png
[PNG image (100.56 KB)]

제로봇의 코드는 간단하다. 사용자로부터 명령을 받고 그 결과를 웹서버에 전달하고 결과를 받아와 사용자에게 보여준다.
command에는 down, status, eta가 있으며 각각 다운로드 시작, 다운로드 상태, 예상시간이다.

main_code.png
[PNG image (59.63 KB)]

Flask서버의 코드다. 제로봇으로부터 마그넷주소, 커맨드, 유저 이름을 전달받아 transmission rpc래퍼인 transhelper class로 토렌트를 조작한다.

transhelper_code.png
[PNG image (63.71 KB)]

transhelper는 flask서버로부터 전달받은 마그넷으로 transmission rpc를 이용해 다운로드를 시작하며 유저정보와 토렌트의 해쉬값으로 정보를 저장한다.

transmission_setting.png
[PNG image (65.76 KB)]

vpn회선의 transmission의 설정은 위와같다. bind-address-ipv4에 vpn의 ip를 적어준다. 그리고 rpc를 사용하기위해 rpc-enabled를 true로 설정한다.

nginx_config.png
[PNG image (58.02 KB)]

nginx의 설정은 다음과 같다. 대용량의 파일을 http로 전송하기 위해 사용되었으며 추후 https추가를 하기위해 flask서버와 리버스프록시로 구성되어있다.

structure.png
[PNG image (37.4 KB)]

전체적인 구조는 위와같다.
Valid XHTML 1.0! Valid CSS! powered by MoniWiki
last modified 2021-02-07 05:22:29
Processing time 0.0291 sec