Transmission RPC 활용 하여 Torrent 추가 하기.
안녕하세요.
현재 OpenMediaVault 를 활용하여서 집에서 NAS를 돌리고 있습니다.
일전에 만들었던 어플중 하나가 TorrentProject에서 검색된 결과의 Seed파일을 받아서,
uTorrent 실행 하여 자동으로 다운로드 하는 것 이였는데요.
Transmission demon을 활용하여 원격으로 다운로드 시키는 방법으로 확장 된 것으로 보시면 됩니다.
우선 Transmission의 경우 RPC가 직접 정의가 되어 있습니다.
https://trac.transmissionbt.com/wiki/rpc
해당 내용중 Example을 보니 아래와 같네요.
형태는 Json을 활용 하는 것 같고, 오픈소스가 있나 서치를 해보니 있길래 다운로드 하여 처리 해봤습니다.
https://github.com/Beatlegger/Transmission.API.RPC
소스를 다운로드 받아서 살펴 보니, Json을 Dynamic으로 처리 하는 부분이 있습니다.
위의 인자를 ToJson합니다.
닷넷 최신 버전or 4.0 or 4.5 이상이면 될 듯 합니다.
위의 라이브러리를 사용한 코드 입니다.
OpenMediavault의 기본 Password는 openmediavault 입니다.
패스워드는 바꿔서 사용하는게 보안상 좋습니다.
결과 입니다.
Fiddler2로 패킷캡쳐를 해봤습니다.
총 2개가 나갔는데요.
내용을 살펴 봅니다.
첫번째 패킷의 경우 세션 ID가 없다고 나옵니다.
그래서 해당 함수를 찾아서 들어가봅니다.
요 함수가 요청 하는 함수 입니다.
여기 있네요. Exception 이 떨어졌을 때 , 세션이 없다면 다시 SendRequest를 보냅니다.
2번째 패킷입니다.
세션 ID가 있으니 , 다운로드 진행중인 목록을 받아 옵니다.
이제 다운로드를 추가 해 봅니다.
리눅스를 검색해서 나온 첫번째 결과 입니다.
Torrent link를 저장 합니다.
http://torrentproject.se/torrent/CE9BF47718C8CE2EA5144DF938C7AC2AF8A191CE.torrent
이 후 코드를 수정 합니다.
핵심은 HTTP 파일을 다운로드 후 Base64String으로 바꾸는 것입니다.
이렇게 처리 한 후 Transmission의 WebUI에서 추가 유무를 확인 합니다.
추가 되었네요.
Fiddler2로 패킷을 봅니다.
위의 tag가 2인 이유는 클라이언트가 Session Id가 없어서 1번째는 무시되고 2번째 시도 된게 성공했기때문입니다.
향후 일전의 어플에 요 기능을 추가 하게 되면 집에 NAS라든지, 원격으로 파일 추가가 좀더 용이 하지 않을까 합니다.
감사 합니다.
'습작 및 R&D' 카테고리의 다른 글
Orange pi one 설치 해봤습니다. (0) | 2018.02.10 |
---|---|
ESP8266, ESP12로 8 채널 relay 제어 하기 (0) | 2016.03.08 |
OPENMEDIAVALUT 윈도우 PC에 설치. (0) | 2016.03.02 |
Selenium에서 Iframe 집어 내는 방법 (0) | 2016.02.27 |
Selenium 으로 alert 조작 방법. (0) | 2016.02.27 |