= 개요 = * 1팀 팀원: [김동환] [이민규] [이태균] * 마그넷으로 다운받는 기능 구현 * 정보보호를 위해 vpn사용 = 설계 = * Zerobot은 실제 토렌트 클라이언트가 구동될 서버에 httprequest를 보내어 마그넷과 사용자 정보 전달 * 웹서버(Flask)는 이 magnet과 user의 정보를 저장(메모리에) transmission에 rpc로 torrent 다운로드를 시작 * 사용자는 zerobot에 status, eta 명령어를 입력함으로 다운로드의 진행상황을 알 수 있으며 다운 완료시 파일 링크 제공 * transmission은 빠른 다운로드를 위한 일반 회선과 안전한 다운로드를 위한 vpn회선 두가지가 있다. * 파일은 http의 형태로 nginx를 통해 다운로드 및 스트리밍 가능 = 구현 = attachment:zerobot_code.png 제로봇의 코드는 간단하다. 사용자로부터 명령을 받고 그 결과를 웹서버에 전달하고 결과를 받아와 사용자에게 보여준다. command에는 down, status, eta가 있으며 각각 다운로드 시작, 다운로드 상태, 예상시간이다. attachment:main_code.png Flask서버의 코드다. 제로봇으로부터 마그넷주소, 커맨드, 유저 이름을 전달받아 transmission rpc래퍼인 transhelper class로 토렌트를 조작한다. attachment:transhelper_code.png transhelper는 flask서버로부터 전달받은 마그넷으로 transmission rpc를 이용해 다운로드를 시작하며 유저정보와 토렌트의 해쉬값으로 정보를 저장한다. attachment:transmission_setting.png vpn회선의 transmission의 설정은 위와같다. bind-address-ipv4에 vpn의 ip를 적어준다. 그리고 rpc를 사용하기위해 rpc-enabled를 true로 설정한다.