Total Pageviews

Sunday 8 February 2015

安装transmission-daemon


debian系统,没啥难度,就是直接装上这个:
apt-get install transmission-daemon
接下来要停止运行状态:

/etc/init.d/transmission-daemon stop
这个一定要停止,否则接下来的修改不会生效。

nano /etc/transmission-daemon/settings.json

看到一堆自定义的参数,为了简单生效,只需要修改几条就算了。

"download-dir": "/down",  #下载放置绝对路径
"incomplete-dir": "/down/temp",#下载临时文件防止路径
"rpc-authentication-required": true,#验证选项打开
"rpc-enabled": true, #打开网页访问
"rpc-password": "123",#123是自定义密码,这里直接输入明文即可
"rpc-port": 8932,#这个是访问端口设置 自定义一个
"rpc-username": "1268",#这个用户名 自定义
"rpc-whitelist-enabled": false,#白名单取消 方便公网访问
修改完成之后,就需要权限问题了,设定为755就够了,如果还有其他网盘程序要想直接删除权限的话,可以777

mkdir -p /down/temp
chmod -R 755 /down
chown -R debian-transmission:debian-transmission /down
 /etc/init.d/transmission-daemon start

接下来就直接访问地址例如:

http://公网IP:8932

接下来就是上传种子了

当然,这里是为了PT,所以呢还要得把DHT关掉,如果是公共的bt的话,为了防止迅雷吸血可以选择要求加密:


黑名单的话,国外有脚本可以快速制作出来。

https://github.com/walshie4/Ultimate-Blocklist

apt-get install python2.7 python-pip unzip zip -y
wget https://github.com/walshie4/Ultimate-Blocklist/archive/master.zip
unzip master.zip
cd Ultimate-Blocklis*
pip install -r requirements.pip
python UltimateBlockList.py
然后在当前目录下会出现blocklist.txt,这个就是我们需要的黑名单实体了,挂到某些网站上,输入网址,更新名单就可以了。
-------------------------
在VPS上安装BT软件Transmission
VPS 還能怎玩?! 裝Proxy,裝VPN,這還不夠,我還用來掛種子夠狠吧  反正頻寬閒也是閒者,不過安裝前最好事先問問主機商是否允許,合法的文件大多都是OK的。偶用YUM裝了幾個軟體總覺都怪怪的,畢竟不是該軟體最新的版本,再加上CentOS是一套強調安全的系統,當然對P2P這玩意不會太支援,我裝過了純網頁介面的Torrentflux,很多人推薦的rTorrent,但是最後還是選擇了Transmission
Transmission是 一套Linux底下的BT Client,除了有繁體中文介面、支援UTF-8、介面簡潔又漂亮、佔用資源少之外也有很多熱心人士寫方便的外掛加強他的方便性,程式本身支援DHT、 PEX,也能加密以及線上更新黑名單功能,可以在桌面運行也可以在console下跑,並且內建了網頁管理模組,完全不需要架設伺服器,裝好Transmission就可以遠端控制了!
這邊簡單滴把安裝過程做個紀錄,環境是CentOS 5.5的系統,開始自己編譯吧!
*********更新歷史*********
2009/12/04 – 首次發表
2010/09/22 – 更新版本為1.93
2010/10/17 – 更新版本為2.10(已增加CentOS專用的啟動腳本)
2010/11/12 – 更新版本為2.11(好像跑的快一點)
2010/11/22 – 更新版本為2.12(主要應該是修正了偶而程式會突然耍冷當掉,其他更新了什麼看這吧→官網維基)
2011/10/20 – 更新版本為2.41
Step.1 首先安裝基本套件
如果沒有安裝rpmforge跟EPEL這2個官方認可的第三方套件庫的話就要手動安裝perl-XML-Parser唷!所以要記得先安裝。
i386 / 32位元
rpm --import http://download.fedora.redhat.com/pub/epel/RPM-GPG-KEY-EPEL-5
rpm --import http://apt.sw.be/RPM-GPG-KEY.dag.txt
rpm -ihv http://download.fedora.redhat.com/pub/epel/5/i386/epel-release-5-4.noarch.rpm
rpm -ihv http://apt.sw.be/redhat/el5/en/i386/rpmforge/RPMS/rpmforge-release-0.5.2-2.el5.rf.i386.rpm

x84_64 / 64位元
rpm --import http://download.fedora.redhat.com/pub/epel/RPM-GPG-KEY-EPEL-5
rpm --import http://apt.sw.be/RPM-GPG-KEY.dag.txt
rpm -ihv http://download.fedora.redhat.com/pub/epel/5/x86_64/epel-release-5-4.noarch.rpm
rpm -ihv http://apt.sw.be/redhat/el5/en/x86_64/rpmforge/RPMS/rpmforge-release-0.5.2-2.el5.rf.x86_64.rpm

然後開始利用YUM做簡便安裝,指令就下面這串啦
yum -y install gcc gcc-c++ m4 make automake libtool gettext openssl-devel pkgconfig perl-libwww-perl perl-XML-Parser curl curl-devel libevent-devel libevent libidn-devel zlib-devel which
Step.2 下載Transmission以及必備套件然後開始安裝
cd /usr/src
wget http://ftp.gnome.org/pub/gnome/sources/intltool/0.40/intltool-0.40.6.tar.gz
wget http://ftp.gnu.org/gnu/libiconv/libiconv-1.14.tar.gz
wget http://download.transmissionbt.com/files/transmission-2.41.tar.bz2

這邊開始要按照順序安裝唷!
tar zxf libiconv-*.tar.gz
cd libiconv-*
./configure --prefix=/usr/local/libiconv
make && make install
cd ..

tar zxf intltool-*.tar.gz
cd intltool-*
./configure --prefix=/usr
make -s
make -s install
cd ..

tar xjf transmission-*.tar.bz2
cd transmission-*
/sbin/ldconfig
export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig:$PKG_CONFIG_PATH
./configure --prefix=/usr --enable-lightweight
make -s
make -s install
cd ..

Step.3 再來新增Transmission啟動腳本要用到的使用者,***密碼部分要輸入兩次!***
useradd transmission
passwd transmission

Step.4 建立 Transmission 的設定檔目錄以及下載目錄
mkdir -p /usr/local/transmission/
mkdir -p /web/www/transmission/incomplete/
chown -R www:www /web/www/transmission/
chmod 777 /web/www/transmission/

Step.5 啟動Transmission產生Transmission的設定檔 ***此步驟要執行2次***
/usr/bin/transmission-daemon -g /usr/local/transmission
killall transmission-daemon

Step.6 編輯Transmission設定檔,這邊我有把遠控的port改成5566。
cp /usr/local/transmission/settings.json /usr/local/transmission/settings.json.bak
vi /usr/local/transmission/settings.json

比較重要的設定如下:
"download-dir": "/web/www/transmission",, // 下載完成儲存的位置
"incomplete-dir": "/web/www/transmission/incomplete",, // 尚未下載完成儲存的位置
"blocklist-enabled": true, // 啟用黑名單
"dht-enabled": true, // 啟用DHT支援
"encryption": 1, // 傳輸加密
"open-file-limit": 64, // 最大開啟檔案數量
"peer-limit-global": 240, // 最大連接數
"peer-limit-per-torrent": 60, // 單一任務連接數
"peer-port": 59999, // Transmission連接使用的port
"ratio-limit": 2.0000, // 上下傳比例達到多少停止做種
"ratio-limit-enabled": false, // 啟用上下傳比例
"rpc-enabled": true, // 啟用網頁管理模組
"rpc-bind-address": "0.0.0.0", // 指定IP位置
"rpc-port": 5566, // 指定網頁管理模組的port
"rpc-authentication-required": true, // 啟用使用者認證方式
"rpc-username": "lulala", // 登入的使用者名稱
"rpc-password": "balala", // 登入的使用者密碼
"rpc-whitelist-enabled": false, // 啟用IP認證模式,這個模式是認IP的唷! 有安全需要再啟動
"rpc-whitelist": "127.0.0.1,其他可以連的IP", // 指定認可的IP位置,以,區隔
"speed-limit-down": 100, // 限制下載速度,以KB/Sec計算
"speed-limit-down-enabled": false, // 啟用限制下載速度
"speed-limit-up": 100, // 限制上傳速度,以KB/Sec計算
"speed-limit-up-enabled": false, // 啟用限制上傳速度
"upload-slots-per-torrent": 30 // 每個Torrent的上傳連接數量,台灣跛腳的網路請設10

如果是用在動物機上開啟檔案數量和連接數就不可以調太高,免得負載太高而罷工,除了以上的設定值之外其他參數也可以參考官網的維基都有說明
Step.7 最後在編輯一下iptables規則,加入Transmission使用的port
/etc/init.d/iptables stop
iptables -A INPUT -p tcp --dport 5566 -j ACCEPT
iptables -A INPUT -p tcp --dport 59999:61000 -j ACCEPT
/etc/init.d/iptables save
/etc/init.d/iptables restart

Step.8 全部搞定了,然後新增一個Transmission啟動腳本,內容如下
vi /etc/init.d/transmission

01#!/bin/bash
02#
03# chkconfig: - 16 84
04# description: Start up transmission-daemon
05#
06# processname: transmission-daemon
07# config: /etc/sysconfig/transmission
08
09# source function library
10. /etc/rc.d/init.d/functions
11
12# Get network config
13. /etc/sysconfig/network
14
15"${NETWORKING}" "no" ] && exit 0
16
17# Defaults
18TRANSMISSION_HOME=/usr/bin/transmission-daemon
19
20DAEMON_USER="transmission"
21DAEMON_ARGS="-g /usr/local/transmission"
22
23# Daemon
24NAME=transmission-daemon
25
26DAEMON=$(which $NAME)
27DAEMON_PIDFILE=/var/run/$NAME.pid
28DAEMON_LOCKFILE=/var/lock/subsys/$NAME
29DAEMON_SCRIPTNAME=/etc/init.d/$NAME
30DAEMON_LOGFILE=/var/log/$NAME.log
31
32[ -x "$DAEMON" ] || exit 0
33
34start() {
35    echo -n $"Starting ${NAME}: "
36
37    if [ -n "$TRANSMISSION_HOME" ]; then
38        export TRANSMISSION_HOME
39    fi
40
41    su - $DAEMON_USER -c "$DAEMON $DAEMON_ARGS"
42
43    sleep 2
44
45    status $NAME &> /dev/null && echo_success || echo_failure
46    RETVAL=$?
47
48    if [ $RETVAL -eq 0 ]; then
49        touch $DAEMON_LOCKFILE
50        pidof -o %PPID -x $NAME > $DAEMON_PIDFILE
51    fi
52
53    echo
54}
55
56stop() {
57    echo -n $"Shutting down ${NAME}: "
58
59    killproc $NAME
60    RETVAL=$?
61
62    [ $RETVAL -eq 0 ] && /bin/rm -f $DAEMON_LOCKFILE $DAEMON_PIDFILE
63
64    echo
65}
66
67case "$1" in
68    start)
69        start
70    ;;
71    stop)
72        stop
73    ;;
74    restart)
75        stop
76        start
77    ;;
78    status)
79        status $NAME
80    ;;
81
82    *)
83        echo "Usage: $SCRIPTNAME {start|stop|restart|status}" >&2
84        exit 3
85    ;;
86esac
然後給權限,啟動之後打開瀏覽器輸入http://IP或域名:5566/就能遠控Transmission了。
chmod +x /etc/init.d/transmission
chkconfig --level 345 transmission on
chown -R transmission:transmission /usr/local/transmission/
service transmission start

測試完畢,打包收工啦!
cd /usr/src
rm -rf libiconv-*
rm -rf intltool-*
rm -rf transmission-*

--------------
下載Transmission啟動腳本範本檔
搭配FlexGet來實現讀取RSS自動下載功能
Transmission除了網頁介面之外還有非常好用的遠控軟體,我現在就是在用transmission-remote-dotnet(需要加裝Microsoft .NET Framework 2.0)來搭配使用,transmission-remote-dotnet這套雖然只有支援Win系列的OS,但是有支援UTF-8,就算是簡體中文的檔名也能正確的顯示,而且掛10幾個種子也只吃20多MB記憶體。

另外transmisson-remote-gui這套提供了Mac OS、Windows、-i386 binary、Source code,不過這套沒有中文介面,不支援UTF-8,我使用時中文都會變亂碼。
其他的Transmission使用教學
圖解 Transmission 入門
Transmission安裝方法
推薦好用的多平台BT工具
from http://520.be/1452-%E5%9C%A8vps%E4%B8%8A%E5%AE%89%E8%A3%9Dbt%E8%BB%9F%E9%AB%94transmission.html
----------------------------------

Transmission daemon的安装与配置

网上有大量的BitTorrent资源,很多电影、书籍和音乐的资源非常好,让人很想把它们都收集起来。但是如果开着自己的个人电脑来下载这些资源效率比较低,一是个人电脑不可能7×24小时开着不关机,二是个人电脑的网络环境不稳定,网速一般不够快,如果是笔记本随身携带还会随时更换上网信号。而服务器这种24小时不关机,网速好的条件特别适合用来下载这些BT资源。
因此,我决定在我的Linode服务器上部署一个BitTorrent下载器。目前有很多款Linux下的BitTorrent客户端软件,例如rTorrent、Vuze等等。这些软件种类繁多,其性能和对BT协议的支持也不尽相同,在WikiPedia上还有这些软件的比较。根据网上很多博客的分析,和我自己的使用感受,我感觉Transmission是其中较好的一款软件,而且Transmission还是Ubuntu桌面版的默认BT下载软件。因此我选择将Transmission部署到服务器上。

1. Transmission介绍

Transmission是一个强大的BitTorrent开源客户端,实现了BT协议中描述的大多数功能。目前,在它的官方网站上提供了多个版本可以下载,包括:Mac、GTK+、QT版本,还有Daemon版本。
Transmission支持DHT、Magnet Link、uTP以及PEX等特性。尤其是支持Magnet Link磁力链接下载十分重要,因为目前网上很多资源都是采用这种方式来分享的,而不是传统的.torrent文件,例如TPBBTDigg
在Ubuntu的发行版中,Transmission软件包下面包含多个套件,这些套件的名字很容易搞混淆,它们分别是:
  • transmission-gtk: GTK+界面的Transmission BT客户端。
  • transmission-qt: QT界面的Transmission BT客户端。
  • transmission-cli: 命令行界面的Transmission BT客户端,与QT、GTK+版本功能一样,是命令行下一个完备的BT客户端。
  • transmission-daemon: 是一个Transmission的后台守护程序,本身不具备操作指令,只能通过Web客户端或者transmission-remote-cli来进行控制。这个程序特别适合安装在服务器上或者嵌入式系统中,以及一些没有显示器的设备上。
  • transmission-remote-cli: 用来控制transmission-daemon的命令套件,本身不具备下载BT的功能,只能够配合daemon使用。
这些套件不必都安装上,根据我的需求,只需要安装transmission-daemon即可。接下来讲详细介绍daemon的安装和配置。

2. Transmission的安装

在Ubuntu中,打开终端,输入以下命令安装:
sudo apt-get install transmission-daemon
安装过程中会顺带把transmission-cli也安装上,安装完毕后系统会多出如下一些命令行工具
  • transmission-cli: 独立的命令行客户端。
  • transmission-create: 用来建立.torrent种子文件的命令行工具。
  • transmission-daemon: 后台守护程序。
  • transmission-edit: 用来修改.torrent种子文件的announce URL。
  • transmission-remote: 控制daemon的程序。
  • transmission-show:查看.torrent文件的信息。
安装好后,Transmission-daemon有一些默认设置(参考链接)。

默认配置目录清单

ItemLoccation
启动初始化脚本/etc/init.d/transmission-daemon
基本配置文件/etc/default/transmission-daemon
详细配置文件目录/var/lib/transmsision-daemon/info
下载存储目录/var/lib/transmission-daemon/downloads
配置文件目录里面包含如下一些文件:
  • settings.json: 主要的配置文件,设置daemon的各项参数,包括RPC的用户名密码配置。它实际上是一个符号链接,指向的原始文件是/etc/transmission-daemon/settings.json。里面的参数解释可以参考官网的配置说明
  • torrents/: 用户存放.torrent种子文件的目录,凡是添加到下载任务的种子,都存放在这里。.torrent的命名包含,种子文件本身的名字和种子的SHA1 HASH值。
  • resume/: 该存放了.resume文件,.resume文件包含了一个种子的信息,例如该文件哪些部分被下载了,下载的数据存储的位置等等。
  • blocklists/: 存储被屏蔽的peer的地址。
  • dht.dat: 存储DHT节点信息。

默认用户

默认创建一个用户来专门运行transmission-daemon,用户名为:debian-transmission
注意: 如果使用另外一个用户来运行transmission-daemon的话,会在该用户的目录下,创建一个.config/transmission-daemon的文件夹,在这个文件夹里有单独的settings.json配置文件来配置这个用户对应的daemon进程,下载目录也会变为$HOME/Download。
按照默认用户和默认配置目录来正确启动和停止transmission-daemon的方式如下。我也将采用这种方式。
# 启动
sudo service transmission-daemon start
# 停止
sudo service transmission-daemon stop
启动成功后,可以看到daemon的进程如下
$ ps aux | grep 'transmission-daemon'
debian-+  5509  0.0  0.6 250700  6456 ?  Ssl  04:31   0:00 /usr/bin/transmission-daemon -f --config-dir /var/lib/transmission-daemon/info

3. Transmission的配置

配置主要是通过修改/var/lib/transmission-daemon/info/settings.json文件中的参数来实现的。
注意:在编辑Transmission的配置文件的时候,需要先关闭daemon进程,否则编辑的参数将会被恢复到原来的状态。

配置RPC

最关键的就是要配置RPC,因为无论是Web界面还是CLI都是通过RPC协议和daemon来进行交互的。在settings.json中与RPC相关的参数有以下几个:
  • rpc-authentication-required: Boolean (default = false)
  • rpc-bind-address: String (default = “0.0.0.0”) Where to listen for RPC connections
  • rpc-enabled: Boolean (default = true)
  • rpc-password: String
  • rpc-port: Number (default = 9091)
  • rpc-url: String (default = /transmission/. Added in v2.2)
  • rpc-username: String
  • rpc-whitelist: String (Comma-delimited list of IP addresses. Wildcards allowed using ‘‘. Example: “127.0.0.,192.168..“, Default: “127.0.0.1” )
  • rpc-whitelist-enabled: Boolean (default = true)
打开文件/var/lib/transmission-daemon/info/settings.json,修改配置参数如下:
{
    ......
    "rpc-authentication-required": true
    "rpc-bind-address": "0.0.0.0", 
    "rpc-enabled": true, 
    "rpc-password": "123456", 
    "rpc-port": 9091, 
    "rpc-url": "/transmission/", 
    "rpc-username": "transmission", 
    "rpc-whitelist": "*", 
    "rpc-whitelist-enabled": true, 
    ......
}
我将用户名设置为了transmission,密码设置为了123456,whitelist设置成了”*”,表示任何IP都可以通过RPC协议访问这个daemon。需要注意的是password设置成了明文。当启动daemon之后,daemon会自动检测密码设置。如果发现密码配置被修改了,daemon会自动计算修改后的密码的HASH值,并用这个HASH值替换掉配置文件中的明文密码,这样会更安全。
输入service transmission-daemon start启动程序后,打开settings.json,会看到rpc-password一项被改为了HASH值。
"rpc-password": "{5f4bd5498bddd9aa2ad8f4d475dcebe23e9d8c8bsorspnUE",  

配置其它参数

settings.json里面还有很多参数可以配置,包括上传/下载速度的限制、DHT的配置、端口设置等等,详细的参数解释可以参考官网的配置说明,这里不再赘述。

4. 使用Web界面控制Transmission daemon

经过上述配置后,我们就可以通过Web界面来访问和控制Transmission daemon了。在浏览器里面输入以下地址
http://<your.server.ip.addr>:9091/transmission/web/
浏览器提示你输入刚才配置的用户名和密码,就可以成功登陆Web管理界面。界面和桌面版的GUI程序有点像,操作起来很方便。

比较热们的种子下载速度达到了几兆每秒,可以24小时无人值守地下载,而且不论你在哪里,输入一个URL就可以管理下载了,非常的方便。如果您也想试试,那就快买个服务器来按照本文部署一下吧。推荐使用Linode的服务器,速度还蛮快的。
-------------------------------------

安装transmission,实现BT下载服务器

前言:

不推荐使用一键安装脚本进行安装,通常这类脚本容易出现问题,譬如脚本中的链接失效,就会造成安装失败.
而且脚本安装的transmission多数都是旧版,很旧的那种= = 旧版的transmission没有transmission-create功能,无法在终端创建torrent,web端更不能
因此推荐有一定linux基础的同志们~自己进行安装

1.登录终端
2.安装transmission web控制段的基层程序,输入以下命令:
yum -y install gcc gcc-c++ m4 make automake libtool gettext openssl-devel pkgconfig perl-libwww-perl perl-XML-Parser curl curl-devel vsftpd libevent-devel libevent libidn-devel zlib-devel
安装所用时间取决于服务器的配置。。。。
3.安装intltool,此处安装的是0.40.6版本,若要使用新版,请从文末给出的链接寻找下载地址
cd /tmp
wget http://ftp.gnome.org/pub/gnome/sources/intltool/0.40/intltool-0.40.6.tar.gz
tar zxvf intltool-*.tar.gz
cd intltool-*
./configure --prefix=/usr
make
make install
4.安装libevent,并配置pkg-config,此处使用目前最新stable版
wget https://github.com/downloads/libevent/libevent/libevent-2.0.21-stable.tar.gz
tar -zxvf libevent-2.0.21-stable.tar.gz
cd libevent-2.0.21-stable
./configure --prefix=/usr
make
make install

vim /etc/profile     //使用vim编辑该文件
export PKG_CONFIG_PATH="/usr/local/lib/pkgconfig"     //在该文件最后加入这行代码
5.正题来了~安装transmission客户端
wget http://download-origin.transmissionbt.com/files/transmission-2.77.tar.bz2
tar -xvf transmission-2.77.tar.bz2
cd transmission-2.77/
./configure --prefix=/usr
make && make install     //linux下使用&&可以运行多个命令
补充内容:
如在安装过程中遇到以下问题,需要在./configure 的时候加上CFLAGS=-liconv
make1: Entering directory /export/home/olaf/tools/transmission-2.77/libtransmission' CCLD bitfield-test Undefined first referenced symbol in file libiconv_close ./libtransmission.a(utils.o) libiconv_open ./libtransmission.a(utils.o) libiconv ./libtransmission.a(utils.o) ld: fatal: symbol referencing errors. No output written to bitfield-test collect2: ld returned 1 exit status make[1]: *** [bitfield-test] Error 1 make[1]: Leaving directory/export/home/olaf/tools/transmission-2.77/libtransmission’
make: * [all-recursive] Error 1
详细方法
cd transmission-2.77/
./configure --prefix=/usr CFLAGS=-liconv
make -s
make -s install
6.添加新用户来运行transmission
useradd -mr transmission
chmod g+rwx /home/transmission/
7.创建init行脚本,用于运行Transmission(直接注册为服务,方便使用service xxxxx start|stop|restart)
wget -O /etc/init.d/transmissiond http://pastie.org/pastes/962731/download
chmod 755 /etc/init.d/transmissiond
8.设置开机自启
chkconfig --add transmissiond
chkconfig --level 345 transmissiond on
9.设置transmission
service transmissiond start
输入以上命令后会出现[OK],并自动生成配置文件,此时输入以下命令停止transmission(transmission结束时会覆盖配置文件,不停止就编辑的话就是在做无用功…..)
service transmissiond stop
同样也会出现[OK],输入下面的命令编辑配置文件(settings.json)
vim /home/transmission/.config/transmission/settings.json
配置文件部分详解~(真的只是部分=w=
"rpc-authentication-required": true,           //开启web登录验证
"rpc-enabled": true,            //开启web端操作
"rpc-password": "{e62f5ae3a1df1563049deeee1f2e4ebe4dc7106dSJFoVuEb",         //web端登录密码(已加密),修改后自动加密,可以直接修改
"rpc-port": 9091,             //web端登录端口
"rpc-username": "username",              //web端登录用户名
"rpc-whitelist": "127.0.0.1",           //登录IP白名单
"rpc-whitelist-enabled": false,         //登录验证IP,安装后默认开启,记得关闭,或者设置IP白名单
其它配置web端就可以设置。。。。就不介绍了

附录:transmission命令行常用命令(无详细使用方法)

transmission-create——-创建torrent文件
transmission-edit———编辑torrent文件
transmission-cli———-限速功能
transmission-remote———-上传种子
transmission-show—————查询服务器上的种子详情

1)intltool下载地址
2)libevent
3)transmission-2.77.tar.bz2
------------------------------------

A remote web interface for MLdonkey, aMule, rTorrent, Transmission and giFT. 

P2P-GUI

P2P-GUI is a grahical web interface to control multiple P2P-applications. It also added a layer to support multiple user accounts Some Screenshots.
This project was big and a mostly complete (multiple protocols/GUIs/Skins/Translations). But it was abandoned because the the D environment changed a lot and the authors interests changed. Still, this project has a lot of interesting code.
  • Supports MLDonkey/aMule/rTorrent and giFT (uses the remote GUI protocol!)
  • Integrated web server
  • Everything combined in a single binary (!)
  • No installation needed
  • Download & Run
  • Multi user account support
  • HTTPS support
  • UTF-8 support
  • Written in D + CSS/JS/HTML
  • Download unfinished files for preview
  • Three different web GUIs
    • Plex:
      • Server side and HTML based.
      • Languages:
        • English
        • French
        • German
        • Italian
        • Spanish
        • Polish
        • Galician
        • Brazilian Portuguese
        • Dutch
        • Danish
        • Swedish
      • Themes.
      • File browser.
      • User management.
      • Country flags for IPs
      • rot13 and l33t text transform ;-)
    • Clutch:
      • Browser side Javascript gui.
      • Copied from the Transmission web interface.
      • Slick design.
      • English only.
    • Jay:
      • Browser side JavaScript gui.
      • Uses the JSON rpc api.
      • Country flags for IP addresses.
      • Still alpha.

About

P2P-GUI is licensed under GNU General Public License.
See gpl-3.0.txt for license details.
Parts of this program may rely on other (GPL compatible) licenses.
Authors:

Compiling:

Following programs and libraries are needed in order to compile P2P-GUI:
  - a D compiler: DMD (v1.041+, v1.047 doesn't work, http://digitalmars.com/d), LDC (http://dsource.prg/projects/ldc) or GDC-svn
  - the Tango library (svn version, http://dsource.org/projects/tango)
  - zlib library
  - OpenSSL library
  - make or rebuild (http://dsource.org/projects/DSSS)

Building using make

Linux

For compiling you need to use the Makefile. make dmd-linux

Windows

You also need to use MinGW+MSYS to build the binary. In the MSYS enviroment: make dmd-win

DSSS

You can also use DSSS (http://dsource.org/projects/dsss/): dsss build

Including theme files into binary

To include all files from theme directory into the binary, you need to compile the ./utils/Includer.d helper program. Then execute it from inside of the ./webroot/ folder: ./Includer ../webcore/Webroot.d *
All visible files will now included in core/Webroot.d. After compiling P2P-GUI, there will be no more disk access to ./webroot by default.

Change Translations:

You have two ways to alter/add translations:

Use the HTML GUI.

Enable the Translator panel in the html gui and alter translations there.
To contribute new languages or improvements, please send back the exported string.

Alter the source code.

Translations are keep in ./core/Dictionary.d. The Phrase enum definitions list all phrases used in P2P-GUI. To alter translations just imitate the structure as for the other languages.
In order to add a new language, you must modify ./core/Dictionary.d:
  • add a Phrase for your new language to the Phrase enum declarartion
  • add the language Phrase to all_languages
  • create a new translation by imitating the structure of the other languages
Compile the program from your altered source. The new language can now be selected in the web gui.

Modify Included files

Included files are CSS, image, (static) HTML or JavaScript GUI files. For every release all files from the ./webroot/ directory are included into the binary. This is done by writing the file data into a D source file (./webcore/Webroot.d) with a helper tool (./utils/Includer.d).
P2P-GUI ignores included files and uses an external directory if it's specified on the command line ("p2p-gui -d ") or if a directory called ./webroot/ is located in the settings directory. This is comfortable to edit these files and to see changes immediately.
If you want to get the files out of the binary. Use "p2p-gui --write-out-files [<target_directory>]" to write all files to the disk.

Source Code Structure

P2P-GUI consists of several parts
  • ./api/ an API to describe the p2p network environment entities and relationships
    • /clients/ - several client interfaces on top of the api
    • ./webserver/ - a webserver to serve data
    • ./webroot/ - repository of files in for html, css, js or image files to be severed by the webserver
    • ./webguis/ - server side code for GUIs
      • ./clutch/: interface for the Transmission web ui
      • ...
  • ./webcore/ - core files
    • Main.d: glues everything together
    • MainUser.d: implements accounts
    • MainSettings.d: wrapper for settings that conforms the api
    • DiskFile.d: wrapper for file system access that conforms the api
    • Dictionary.d: translations
    • Webroot.d: a container/accessor for files to be included into the binary
    • JsonRPC.d: a JSON RPC interface for the api (not JSON-RPC compatible)
    • ...
  • ./utils/ - several helpful stuff
    • Selector.d: a socket handler to watch over socket events
    • Timer.d: a timer to call functions in x seconds or in intervals
    • GeoIP.d: an interface for GeoIP databases
    • Utils.d: a collection of helpful tools
    • Includer.d: a helper program to copy files and directories into a source file (Webroot.d)
    • Storage.d: wrapper around a JSON based storage to store settings in files

from https://github.com/mwarning/p2p-gui
-------------------------------------------
跨平台BT客户端Transmission

Transmission BitTorrent 客户端是一款以快速、轻量为显著特点的BT下载软件。跨平台支持包括Linux、BSD、Solaris、Mac OS X等多种操作系统, 支持GTK+、命令行等多种界面。支持加密、并且拥有一个Web管理界面。可以通过浏览器进行控制,比如针对每个种子作出不同的限速。

特色:
绝无各种广告及浏览器工具栏插件等
数据加密、损坏修复
来源交换 (支持Bittorrent、Ares、迅雷、Vuze和μTorrent等等)
硬件资源消耗低
可以选择种子中要下载的文件
支持encryption、web界面、远程控制、磁力链接、DHT、uTP、uPnP、NAT-PMP
支持目录监控、全局或单一速度限制
制作种子、快速继续
黑名单,可按时升级(数据来自PeerGuardian和PeerBlock)
单一监听端口、带宽计划、整理(过滤)
HTTPS tracker支持以及tracker编辑功能支持
IPv6支持

[repo owner=”transmission” name=”transmission”]