海运的博客

transmission rpc api php

发布时间:December 29, 2018 // 分类:PT // No Comments

<?php
class transmission {
  public $url;
  public $user;
  public $pass;
  public $session_id = '';
  public $header = array(
    //'User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:62.0) Gecko/20100101 Firefox/62.0',
    'Connection: keep-alive'
  );

  public function __construct($url, $user, $pass) {
    $this->url = $url;
    $this->user = $user;
    $this->pass = $pass;
    $this->request();
  }

  function request($post = "") {
    //echo $url.PHP_EOL;
    $url = $this->url;
    $curl = curl_init();
    curl_setopt($curl, CURLOPT_URL, $url);
    curl_setopt($curl, CURLOPT_HEADER, 1);
    curl_setopt($curl, CURLOPT_TIMEOUT, 10);
    curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($curl, CURLOPT_FOLLOWLOCATION, 1);
    curl_setopt($curl, CURLOPT_MAXREDIRS, 5);
    curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, 0);
    $header = $this->header;
    if ($this->session_id) {
      $header[] = 'X-Transmission-Session-Id: '.$this->session_id;
    }
    $header[] = "Authorization: Basic ".base64_encode($this->user.':'.$this->pass);
    curl_setopt($curl, CURLOPT_HTTPHEADER, $header);
    if ($post) {
      echo $post.PHP_EOL;
      curl_setopt($curl, CURLOPT_POST, 1);
      curl_setopt($curl, CURLOPT_POSTFIELDS, $post);
    }
    $data = curl_exec($curl);
    $code = curl_getinfo($curl)["http_code"];
    $header_size = curl_getinfo($curl, CURLINFO_HEADER_SIZE);
    //var_dump(curl_getinfo($curl));
    curl_close($curl);
    $header = substr($data, 0, $header_size);
    $body = substr($data, $header_size);
    //var_dump($header);
    //var_dump($body);
    if ($code == 409 && preg_match('/<code>X-Transmission-Session-Id: (.*?)<\/code>/', $data, $mh)) {
      $this->session_id = $mh[1];
    } elseif ($code == 401) {
      die("Authorization error".PHP_EOL);
    } elseif ($code == 200) {
      return json_decode($body, 1);
    }
  }

  function build_request($method, $arguments) {
    $post_data = json_encode(array('method' => $method, 'arguments' => $arguments));
    return $this->request($post_data);
  }

  public function get($ids = null, $fields = null) {
    $fields = $fields ? $fields : array( "id", "name", "status", "doneDate", "haveValid", "totalSize", "trackers", "uploadLimited", "uploadLimit");
    $arguments = $ids ? array("fields" => $fields, "ids" => $ids) : array("fields" => $fields);
    return $this->build_request( "torrent-get", $arguments );
  }

  public function reannounce($ids = null) {
    $arguments = $ids ? array("ids" => $ids) : array();
    return $this->build_request( "torrent-reannounce", $arguments);
  }
}

/*
$rpc = new transmission("http://192.168.168.6:9091/transmission/rpc", "admin", "pass");
$data = $rpc->get(array(1), array('id'));
//$data = $rpc->get();
$data = $rpc->reannounce();
var_dump($data);
 */

更多参数:
https://github.com/transmission/transmission/blob/master/extras/rpc-spec.txt

ubuntu18.04编译使用transmission2.92跳过校验

发布时间:November 16, 2018 // 分类:PT // No Comments

安装编译环境及transmission依赖:

apt-get install ca-certificates libcurl4-openssl-dev libssl-dev pkg-config build-essential checkinstall libevent-dev intltool

下载编译transmission:

wget http://archive.ubuntu.com/ubuntu/pool/main/t/transmission/transmission_2.92.orig.tar.gz
tar zxvf transmission_2.92.orig.tar.gz 
cd transmission-2.92
wget http://archive.ubuntu.com/ubuntu/pool/main/t/transmission/transmission_2.92-3ubuntu2.debian.tar.xz
tar Jxvf transmission_2.92-3ubuntu2.debian.tar.xz 
#打openssl补丁,不然编译失败
patch -p 1 < debian/patches/f91cf5ad8c677b61ceb0bf5877b87f9e93256dd7.patch 
#patch -p 1 < debian/patches/8c8386a7f3f482a9c917f51d28e0042e55f56b3e.patch 
#patch -p 1 < debian/patches/transmission-fix-dns-rebinding-vuln.patch 
#transmission跳过校验patch
wget https://github.com/superlukia/transmission-2.92_skiphashcheck/commit/56e327d1dacb5b3453954b76a6d0edd30edb7a34.patch
patch -p 1 < 56e327d1dacb5b3453954b76a6d0edd30edb7a34.patch
./configure 
make 
#替换已安装的transmission-daemon
mv /usr/bin/transmission-daemon /usr/bin/transmission-daemon.bak
cp daemon/transmission-daemon /usr/bin/transmission-daemon

修改下systemd服务,不然通过systemctl启动transmission会卡住:

cat /etc/systemd/system/multi-user.target.wants/transmission-daemon.service
[Unit]
Description=Transmission BitTorrent Daemon
After=network.target

[Service]
User=debian-transmission
#Type=notify
Type=simple
ExecStart=/usr/bin/transmission-daemon -f --log-error -g /var/lib/transmission-daemon/.config/transmission-daemon/
ExecStop=/bin/kill -s STOP $MAINPID
ExecReload=/bin/kill -s HUP $MAINPID

[Install]
WantedBy=multi-user.target

在WEB界面添加种子后校验时右键点击种子Ask tracker for more peers即可跳过校验。
另类方法:
https://www.jianshu.com/p/ab2df4282e59
参考:
https://github.com/superlukia/transmission-2.92_skiphashcheck
https://blog.csdn.net/Sardkit/article/details/79911925

此内容被密码保护

发布时间:October 11, 2018 // 分类:PT // No Comments

请输入密码访问

php使用deluge

发布时间:October 10, 2018 // 分类:PT // No Comments

使用https://github.com/kaysond/deluge-php 提供的类,简单使用:

$host = "192.168.168.5:8112";
$password = "deluge";
$d = new deluge($host, $password);
//返回只包含当前状态Downloading中的
$filter = array('state' => "Downloading");
//返回指定的这此参数的值
$params = array('name', 'hash', 'max_upload_speed', 'eta');
$list = $d->getTorrentsStatus($filter, $params, '');
var_dump($list);
$url = 'http://www.haiyun.me/deluge.torrent';
$options = array('max_upload_speed' => 100, 'max_download_speed' => 100);
$res = $d->addTorrentUrl($url, $options, '');
var_dump($res);

参考:
https://media.readthedocs.org/pdf/deluge/develop/deluge.pdf

ubuntu18.04编译安装deluge

发布时间:October 10, 2018 // 分类:PT // No Comments

安装编译环境及libtorrent依赖:

apt-get install build-essential checkinstall pkg-config automake libtool git
apt-get install libboost-system-dev libboost-python-dev libboost-chrono-dev libboost-random-dev libssl-dev

使用最新版libtorrent:

wget https://github.com/arvidn/libtorrent/releases/download/libtorrent-1_1_10/libtorrent-rasterbar-1.1.10.tar.gz
tar zxvf libtorrent-rasterbar-1.1.10.tar.gz 
cd libtorrent-rasterbar-1.1.10/
./configure --prefix=/usr/local/libtorrent --enable-python-binding --with-libiconv
make clean && make -j$(nproc) && make install
echo '/usr/local/libtorrent/lib' > /etc/ld.so.conf.d/libtorrent-x86_64.conf 
ldconfig
export PYTHONPATH=$PYTHONPATH:/usr/local/libtorrent/lib/python2.7/site-packages/
echo 'export PYTHONPATH=$PYTHONPATH:/usr/local/libtorrent/lib/python2.7/site-packages/' >> ~/.bashrc

查看python能否调用libtorrent:

python -c "import libtorrent; print libtorrent.version"

安装deluge依赖:

apt-get install python python-twisted python-openssl python-setuptools intltool python-xdg python-chardet geoip-database python-libtorrent python-notify python-pygame python-glade2 librsvg2-common xdg-utils python-mako 

安装deluge:

wget http://download.deluge-torrent.org/source/deluge-1.3.15.tar.gz
tar -xzvf deluge-1.3.15.tar.gz
cd deluge-1.3.15
mkdir -p /usr/local/deluge/lib/python2.7/site-packages/
export PYTHONPATH=$PYTHONPATH:/usr/local/deluge/lib/python2.7/site-packages/
echo 'export PYTHONPATH=$PYTHONPATH:/usr/local/deluge/lib/python2.7/site-packages/' >> ~/.bashrc
python setup.py build
python setup.py install --prefix /usr/local/deluge
export PATH=$PATH:/usr/local/deluge/bin/
echo 'export PATH=$PATH:/usr/local/deluge/bin/' >> ~/.bashrc

使用libtorrent1.0.11版本:

git clone https://github.com/arvidn/libtorrent.git
cd libtorrent
git checkout origin/RC_1_0
./autotool.sh
./configure --prefix=/usr/local/libtorrent --enable-python-binding --with-libiconv
make clean && make -j$(nproc) && make install

ubuntu编译安装qbittorrent:https://www.haiyun.me/archives/1253.html
centos7编译安装deluge:https://www.haiyun.me/archives/1240.html
参考:
https://dev.deluge-torrent.org/wiki/Building/libtorrent
https://dev.deluge-torrent.org/wiki/Installing/Source

分类
最新文章
最近回复
  • 海运: 正常情况下编译整个内核执行make menuconfig后就不会出现此提示,当单独编译单个模块...
  • oijq: 就是用的armbian的配置文件哈,按你的教程做的,在执行make LOCALVERSION=...
  • 海运: 使用armbian的配置文件,其它添加或修改自己懂的部分,不懂的就不要碰了。
  • oijq: 编译时这些选项全部选Y吗?Actions Semi Platforms (ARCH_ACTIO...
  • 海运: n1编译bbr内核模块参考这个:https://www.haiyun.me/archives/...
  • jiqz: make M=net/ipv4/ CONFIG_TCP_CONG_BBR=m modules编...
  • ruralhunter: 哦,文档里应该是对的,是.config
  • ruralhunter: cp /mnt/boot/config-4.18.7-aml-s9xxx .config这里应...
  • 海运: 你是编译不成功呢?还是编译后不能运行呢?还是运行后不能访问web界面呢?
  • 白墨: 可能不清楚就是编译安装后启动后访问不了web界面