* @author StealThisShow <*****@*****.**> * @license https://opensource.org/licenses/BSD-3-Clause BSD 3-Clause */ use StealThisShow\StealThisTracker\Persistence\Pdo; use StealThisShow\StealThisTracker\Seeder\Peer; use StealThisShow\StealThisTracker\Seeder\Server; use StealThisShow\StealThisTracker\Logger\File; // -------------------------------------- // This is how to start a seeding server. // -------------------------------------- // [!] Run this file in CLI only! // /usr/bin/php example_seeder.php // Composer autoloader require dirname(__FILE__) . '/../vendor/autoload.php'; // Persistence object implementing PersistenceInterface. // We use Pdo here. $persistence = new Pdo('sqlite:sqlite_example.db'); // Setting up seeder peer. This will listen to connections and serve files. $peer = new Peer($persistence); $peer->setInternalAddress('192.168.2.123')->setExternalAddress('192.168.2.123')->setPort(6881)->setPeerForks(10)->setSeedersStopSeeding(5)->setLogger(new File()); // We set up a seeding server which starts the seeding peer, and makes regular // announcements to the database adding itself to the peer list for all // active torrents. $server = new Server($peer, $persistence); // Initializing file logger with default file path (/var/log/stealthistracker.log). $server->setLogger(new File()); // Starting "detached" means that process // will unrelate from terminal and run as daemon. // To run in terminal, you can use start(). // Detached running requires php-posix. $server->startDetached();
<?php /** * Simple seed server implementation for system test. * @package StealThisTracker * @author StealThisShow <*****@*****.**> * @license https://opensource.org/licenses/BSD-3-Clause BSD 3-Clause * @see SeedServerTest */ // No tolerance for errors - it's a test. set_error_handler(function ($errno, $errstr, $errfile = null, $errline = null) { throw new Exception("Error {$errno}: {$errstr} in {$errfile}:{$errline}"); }); require dirname(__FILE__) . '/../../vendor/autoload.php'; use StealThisShow\StealThisTracker\Persistence\Pdo; use StealThisShow\StealThisTracker\Seeder\Peer; use StealThisShow\StealThisTracker\Seeder\Server; $ip = $argv[1]; $port = $argv[2]; fwrite(STDERR, "Starting seed server at {$ip}:{$port}"); $persistence = new Pdo('sqlite:' . sys_get_temp_dir() . '/sqlite_test.db'); $peer = new Peer($persistence); $peer->setExternalAddress($ip)->setInternalAddress($ip)->setPort($port)->setPeerForks(5)->setSeedersStopSeeding(5); $server = new Server($peer, $persistence); $server->start();