立项背景
拖大文件离不了迅雷离线,但公司下载不方便,而家里的网络又足够好。于是我采用过如下方案:
1 路由DMZ或者转发端口,直接远程家里的机器(VNC/RDP),开迅雷,登录会员,添加链接。
2 Wyse PocketCloud Pro,在家里电脑上(Win/Mac)安装WYSE的电脑端,iOS上装WYSE的移动端,使用Google账号实现互通。
两种方案本质都是远程桌面的实现。远程桌面对网络的要求相对较高(虽然可以8bit的颜色显示,但是终究麻烦),而且需要特定的终端软件,并且URL的复制受限于客户端实现。方案2能很好地解决方案1中运营商限制导致的网络不可连,但是也经常面临着被墙的风险。
项目构想
借着有Mac Mini和一个WD的小NAS,希望开发一个web服务,能提交URL,添加任务到迅雷离线,下载完成后拖回本地。方案暂不考虑运营商限制导致的网络连接不畅,直接使用DDNS+端口转发访问内网Web服务调用下载功能。
调研的结论是,aria2是最适合于我的构想的一个下载后端。
项目地址
https://github.com/sskaje/xunlei
项目环境
硬件:LinkSys EA6500(192.168.1.1) + WD MyBookLive(192.168.1.135)
软件:Debian 5.0.4 powerpc(on WD MyBookLive), aria2 1.15.1, Apache 2.2.9, PHP 5.2.6
准备工作
(这部分根据不同的NAS平台自行配置)
1 NAS 开SSH
MBL为例,http://192.168.1.135/UI/ssh,按说明配置即可,默认root密码为 welc0me。
2 安装aria2
MBL为例,ssh登录NAS,apt-get update, apt-get install aria2。其他平台可以根据自己的需求编译安装或使用平台包管理软件的二进制包。
3 配置Apache, PHP
MBL为例,编辑 /etc/apache2/sites-available/xunlei
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
<VirtualHost *:80> ServerAdmin webmaster@localhost ServerName xunlei.rst.im DocumentRoot /DataVolume/shares/webapp/xunlei/web <Directory /> Options FollowSymLinks AllowOverride None </Directory> <Directory /DataVolume/shares/webapp/xunlei> Options -Indexes FollowSymLinks MultiViews AllowOverride None Order allow,deny allow from all </Directory> ErrorLog /var/log/apache2/xl.error.log LogLevel warn CustomLog /var/log/apache2/xl.access.log combined </VirtualHost> |
保存后再执行如下命令以激活虚拟主机配置
a2ensite xunlei; /etc/init.d/apache2 reload
配置步骤
1 配置aria2
1 |
mkdir ~/.aria2/; touch ~/.aria2/aria2.conf ~/.aria2/aria2.session |
编辑~/.aria2/aria2.conf,并输入如下内容
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 |
# rpc options enable-rpc=true rpc-listen-all=true rpc-listen-port=6801 rpc-max-request-size=2M rpc-passwd=31343540 rpc-user=sskaje # download options max-concurrent-downloads=5 continue=true max-connection-per-server=5 min-split-size=10M split=10 max-overall-download-limit=0 max-download-limit=0 max-overall-upload-limit=0 max-upload-limit=0 input-file=/root/.aria2/aria2.session save-session=/root/.aria2/aria2.session force-save=false dir=/DataVolume/shares/Public/Downloads/aria2 daemon=true |
配置项介绍请参考官方文档,其中下载目录在php代码中也有配置,请两端保证一致,并提前创建好目录、处理好访问权限。
2 配置项目
从项目目录https://github.com/sskaje/xunlei
clone一份代码部署到NAS,并把web服务的根目录指向项目目录下的web目录,配置index文件为index.php。
config目录下,example.ini 复制为 sskaje.ini(或随意命名,自己改代码里的加载路径)。
配置文件示例如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 |
[global] cookie_file = /tmp/.xl.sskaje.cookie download_dir = /tmp/xunlei log_file = /tmp/.xl.log [login] username=sskaje@gmail.com password=sskaje [webui] auth=1 auth_user=sskaje auth_pass=sskaje [plugin] enable=1 list=kuaichuan, [plugin:kuaichuan] [downloader] engine=aria2 [downloader:aria2] rpc_url=http://127.0.0.1:6801/jsonrpc rpc_user=sskaje rpc_pass=sskaje download_dir = /tmp/xunlei |
其中有迅雷会员账号密码、aria2的RPC访问账号密码、web服务的验证用账号密码。
请配置download_dir 与aria2的下载目录配置一致。
3 配置路由及DDNS
请按自己的网络环境自行配置。
# EOF