Toggle menu
Toggle personal menu
Not logged in
Your IP address will be publicly visible if you make any edits.

AngelsCamp/2015/MagetDownloader

From ZeroWiki
Revision as of 21:06, 1 May 2015 by imported>elwlwlwk

개요

설계

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

구현

Zerobot code.png 제로봇의 코드는 간단하다. 사용자로부터 명령을 받고 그 결과를 웹서버에 전달한다. command에는 down, status, eta가 있다.

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

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

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