mirror of
https://github.com/torrentpier/torrentpier
synced 2025-08-21 22:03:49 -07:00
feat: sunset legacy system - good night sweet prince
This commit marks the end of an era as we retire the old system in favor of the new implementation.
This commit is contained in:
parent
ae418d4b6a
commit
9ddfd768cc
824 changed files with 239 additions and 378 deletions
47
.gitignore
vendored
47
.gitignore
vendored
|
@ -1,47 +0,0 @@
|
|||
### IDE ###
|
||||
.idea
|
||||
.vscode
|
||||
|
||||
### TorrentPier ###
|
||||
*.log
|
||||
install.php_*
|
||||
composer-setup.php
|
||||
.env
|
||||
.php_cs.cache
|
||||
data/avatars
|
||||
data/uploads
|
||||
internal_data/atom
|
||||
internal_data/cache
|
||||
internal_data/log
|
||||
internal_data/updater.json
|
||||
sitemap
|
||||
internal_data/triggers
|
||||
library/config.local.php
|
||||
vendor
|
||||
|
||||
### Archives ###
|
||||
*.phar
|
||||
*.rar
|
||||
*.tar
|
||||
*.gz
|
||||
*.zip
|
||||
*.7z
|
||||
*.torrent
|
||||
*.pak
|
||||
|
||||
### Windows ###
|
||||
Thumbs.db
|
||||
Desktop.ini
|
||||
$RECYCLE.BIN/
|
||||
*.lnk
|
||||
*.bat
|
||||
|
||||
### OSX ###
|
||||
.DS_Store
|
||||
.AppleDouble
|
||||
.LSOverride
|
||||
._*
|
||||
.Spotlight-V100
|
||||
.Trashes
|
||||
*.orig
|
||||
*.rej
|
331
install.php
331
install.php
|
@ -1,331 +0,0 @@
|
|||
<?php
|
||||
/**
|
||||
* TorrentPier – Bull-powered BitTorrent tracker engine
|
||||
*
|
||||
* @copyright Copyright (c) 2005-2025 TorrentPier (https://torrentpier.com)
|
||||
* @link https://github.com/torrentpier/torrentpier for the canonical source repository
|
||||
* @license https://github.com/torrentpier/torrentpier/blob/master/LICENSE MIT License
|
||||
*/
|
||||
|
||||
define('BB_ROOT', __DIR__ . DIRECTORY_SEPARATOR);
|
||||
define('BB_PATH', BB_ROOT);
|
||||
|
||||
// Check CLI mode
|
||||
if (PHP_SAPI != 'cli') {
|
||||
die('Please run <code style="background:#222;color:#00e01f;padding:2px 6px;border-radius:3px;">php ' . basename(__FILE__) . '</code> in CLI mode');
|
||||
}
|
||||
|
||||
// Get all constants
|
||||
require_once BB_ROOT . 'library/defines.php';
|
||||
|
||||
// Include CLI functions
|
||||
require INC_DIR . '/functions_cli.php';
|
||||
|
||||
/**
|
||||
* System requirements
|
||||
*/
|
||||
const CHECK_REQUIREMENTS = [
|
||||
'php_min_version' => '8.3.0',
|
||||
'ext_list' => [
|
||||
'json',
|
||||
'curl',
|
||||
'readline',
|
||||
'mysqli',
|
||||
'bcmath',
|
||||
'mbstring',
|
||||
'intl',
|
||||
'xml',
|
||||
'xmlwriter',
|
||||
'zip',
|
||||
'gd'
|
||||
],
|
||||
];
|
||||
|
||||
// Welcoming message
|
||||
out("--- TorrentPier Installer ---\n", 'info');
|
||||
|
||||
// Checking extensions
|
||||
out("- Checking installed extensions...", 'info');
|
||||
|
||||
// [1] Check PHP Version
|
||||
if (!version_compare(PHP_VERSION, CHECK_REQUIREMENTS['php_min_version'], '>=')) {
|
||||
out("- TorrentPier requires PHP version " . CHECK_REQUIREMENTS['php_min_version'] . "+ Your PHP version " . PHP_VERSION, 'warning');
|
||||
}
|
||||
|
||||
// [2] Check installed PHP Extensions on server
|
||||
foreach (CHECK_REQUIREMENTS['ext_list'] as $ext) {
|
||||
if (!extension_loaded($ext)) {
|
||||
out("- ext-$ext not installed. Check out php.ini file", 'error');
|
||||
if (!defined('EXTENSIONS_NOT_INSTALLED')) {
|
||||
define('EXTENSIONS_NOT_INSTALLED', true);
|
||||
}
|
||||
} else {
|
||||
out("- ext-$ext installed!");
|
||||
}
|
||||
}
|
||||
if (!defined('EXTENSIONS_NOT_INSTALLED')) {
|
||||
out("- All extensions are installed!\n", 'success');
|
||||
} else {
|
||||
exit;
|
||||
}
|
||||
|
||||
// Check if already installed
|
||||
if (is_file(BB_ROOT . '.env')) {
|
||||
out('- TorrentPier already installed', 'warning');
|
||||
echo 'Are you sure want to re-install TorrentPier? [y/N]: ';
|
||||
if (str_starts_with(mb_strtolower(trim(readline())), 'y')) {
|
||||
out("\n- Re-install process started...", 'info');
|
||||
// environment
|
||||
if (is_file(BB_ROOT . '.env')) {
|
||||
if (unlink(BB_ROOT . '.env')) {
|
||||
out('- Environment file successfully removed!');
|
||||
} else {
|
||||
out('- Cannot remove environment (.env) file. Delete it manually', 'error');
|
||||
exit;
|
||||
}
|
||||
}
|
||||
// composer.phar
|
||||
if (is_file(BB_ROOT . 'composer.phar')) {
|
||||
if (unlink(BB_ROOT . 'composer.phar')) {
|
||||
out("- composer.phar file successfully removed!");
|
||||
} else {
|
||||
out('- Cannot remove composer.phar file. Delete it manually', 'error');
|
||||
exit;
|
||||
}
|
||||
}
|
||||
// composer dir
|
||||
if (is_dir(BB_ROOT . 'vendor')) {
|
||||
removeDir(BB_ROOT . 'vendor', true);
|
||||
if (!is_dir(BB_ROOT . 'vendor')) {
|
||||
out("- Composer directory successfully removed!");
|
||||
} else {
|
||||
out('- Cannot remove Composer directory. Delete it manually', 'error');
|
||||
exit;
|
||||
}
|
||||
}
|
||||
out("- Re-install process completed!\n", 'success');
|
||||
out('- Starting installation...', 'info');
|
||||
} else {
|
||||
exit;
|
||||
}
|
||||
}
|
||||
|
||||
// Applying permissions
|
||||
out("- Applying permissions for folders...", 'info');
|
||||
chmod_r(BB_ROOT . 'data', 0755, 0644);
|
||||
chmod_r(BB_ROOT . 'internal_data', 0755, 0644);
|
||||
chmod_r(BB_ROOT . 'sitemap', 0755, 0644);
|
||||
out("- Permissions successfully applied!\n", 'success');
|
||||
|
||||
// Check composer installation
|
||||
if (!is_file(BB_ROOT . 'vendor/autoload.php')) {
|
||||
out('- Hmm, it seems there are no Composer dependencies', 'info');
|
||||
|
||||
// Downloading composer
|
||||
if (!is_file(BB_ROOT . 'composer.phar')) {
|
||||
out('- Downloading Composer...', 'info');
|
||||
if (copy('https://getcomposer.org/installer', BB_ROOT . 'composer-setup.php')) {
|
||||
out("- Composer successfully downloaded!\n", 'success');
|
||||
runProcess('php ' . BB_ROOT . 'composer-setup.php --install-dir=' . BB_ROOT);
|
||||
} else {
|
||||
out('- Cannot download Composer. Please, download it (composer.phar) manually', 'error');
|
||||
exit;
|
||||
}
|
||||
if (is_file(BB_ROOT . 'composer-setup.php')) {
|
||||
if (unlink(BB_ROOT . 'composer-setup.php')) {
|
||||
out("- Composer installation file successfully removed!\n", 'success');
|
||||
} else {
|
||||
out('- Cannot remove Composer installation file (composer-setup.php). Please, delete it manually', 'warning');
|
||||
}
|
||||
}
|
||||
} else {
|
||||
out("- composer.phar file found!\n", 'success');
|
||||
}
|
||||
|
||||
// Installing dependencies
|
||||
if (is_file(BB_ROOT . 'composer.phar')) {
|
||||
out('- Installing dependencies...', 'info');
|
||||
|
||||
runProcess('php ' . BB_ROOT . 'composer.phar install --no-interaction --no-ansi');
|
||||
define('COMPOSER_COMPLETED', true);
|
||||
} else {
|
||||
out('- composer.phar not found. Please, download it (composer.phar) manually', 'error');
|
||||
exit;
|
||||
}
|
||||
} else {
|
||||
out('- Composer dependencies are present!', 'success');
|
||||
out("- Note: Remove 'vendor' folder if you want to re-install dependencies\n");
|
||||
}
|
||||
|
||||
// Check composer dependencies
|
||||
if (defined('COMPOSER_COMPLETED')) {
|
||||
if (is_file(BB_ROOT . 'vendor/autoload.php')) {
|
||||
out("- Completed! Composer dependencies are installed!\n", 'success');
|
||||
} else {
|
||||
exit;
|
||||
}
|
||||
}
|
||||
|
||||
// Preparing ENV
|
||||
if (is_file(BB_ROOT . '.env.example') && !is_file(BB_ROOT . '.env')) {
|
||||
if (copy(BB_ROOT . '.env.example', BB_ROOT . '.env')) {
|
||||
out("- Environment file created!\n", 'success');
|
||||
} else {
|
||||
out('- Cannot create environment file', 'error');
|
||||
exit;
|
||||
}
|
||||
}
|
||||
|
||||
// Editing ENV file
|
||||
$DB_HOST = 'localhost';
|
||||
$DB_PORT = 3306;
|
||||
$DB_DATABASE = '';
|
||||
$DB_USERNAME = '';
|
||||
$DB_PASSWORD = '';
|
||||
|
||||
if (is_file(BB_ROOT . '.env')) {
|
||||
out("--- Configuring TorrentPier ---", 'info');
|
||||
|
||||
$envContent = file_get_contents(BB_ROOT . '.env');
|
||||
if ($envContent === false) {
|
||||
out('- Cannot open environment file', 'error');
|
||||
exit;
|
||||
}
|
||||
$envLines = explode("\n", $envContent);
|
||||
|
||||
$editedLines = [];
|
||||
foreach ($envLines as $line) {
|
||||
if (trim($line) !== '' && !str_starts_with($line, '#')) {
|
||||
$parts = explode('=', $line, 2);
|
||||
$key = trim($parts[0]);
|
||||
$value = (!empty($parts[1]) && $key !== 'DB_PASSWORD') ? trim($parts[1]) : '';
|
||||
|
||||
out("\nCurrent value of $key: $value", 'debug');
|
||||
echo "Enter a new value for $key (or leave empty to not change): ";
|
||||
$newValue = trim(readline());
|
||||
|
||||
if (!empty($newValue) || $key === 'DB_PASSWORD') {
|
||||
if ($key === 'TP_HOST') {
|
||||
if (!preg_match('/^https?:\/\//', $newValue)) {
|
||||
$newValue = 'https://' . $newValue;
|
||||
}
|
||||
$newValue = parse_url($newValue, PHP_URL_HOST);
|
||||
}
|
||||
$line = "$key=$newValue";
|
||||
$$key = $newValue;
|
||||
} else {
|
||||
$$key = $value;
|
||||
}
|
||||
}
|
||||
|
||||
$editedLines[] = $line;
|
||||
}
|
||||
|
||||
$newEnvContent = implode("\n", $editedLines);
|
||||
if (file_put_contents(BB_ROOT . '.env', $newEnvContent)) {
|
||||
out("- TorrentPier successfully configured!\n", 'success');
|
||||
} else {
|
||||
out('- Cannot save environment file', 'error');
|
||||
exit;
|
||||
}
|
||||
} else {
|
||||
out('- Environment file not found', 'error');
|
||||
exit;
|
||||
}
|
||||
|
||||
if (!empty($DB_HOST) && !empty($DB_DATABASE) && !empty($DB_USERNAME)) {
|
||||
out("--- Checking environment settings ---\n", 'info');
|
||||
// Connecting to database
|
||||
out("- Trying connect to MySQL...", 'info');
|
||||
|
||||
// Checking mysqli extension installed
|
||||
if (!extension_loaded('mysqli')) {
|
||||
out('- ext-mysqli not found. Check out php.ini file', 'error');
|
||||
exit;
|
||||
}
|
||||
|
||||
// Connect to MySQL server
|
||||
try {
|
||||
$conn = new mysqli($DB_HOST, $DB_USERNAME, $DB_PASSWORD, port: $DB_PORT);
|
||||
} catch (mysqli_sql_exception $exception) {
|
||||
out("- Connection failed: {$exception->getMessage()}", 'error');
|
||||
exit;
|
||||
}
|
||||
if (!$conn->connect_error) {
|
||||
out('- Connected successfully!', 'success');
|
||||
}
|
||||
|
||||
// Creating database if not exist
|
||||
if ($conn->query("CREATE DATABASE IF NOT EXISTS $DB_DATABASE CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci")) {
|
||||
out('- Database created successfully!', 'success');
|
||||
} else {
|
||||
out("- Cannot create database: $DB_DATABASE", 'error');
|
||||
exit;
|
||||
}
|
||||
$conn->select_db($DB_DATABASE);
|
||||
|
||||
// Close database connection - migrations will handle their own connections
|
||||
$conn->close();
|
||||
|
||||
// Run database migrations
|
||||
out('- Setting up database using migrations...', 'info');
|
||||
|
||||
// Check if phinx.php exists
|
||||
if (!is_file(BB_ROOT . 'phinx.php')) {
|
||||
out('- Migration configuration (phinx.php) not found', 'error');
|
||||
exit;
|
||||
}
|
||||
|
||||
// Run migrations
|
||||
$migrationResult = runProcess('php vendor/bin/phinx migrate --configuration=' . BB_ROOT . 'phinx.php');
|
||||
if ($migrationResult !== 0) {
|
||||
out('- Database migration failed', 'error');
|
||||
exit;
|
||||
}
|
||||
|
||||
out("- Database setup completed!\n", 'success');
|
||||
|
||||
// Autofill host in robots.txt
|
||||
$robots_txt_file = BB_ROOT . 'robots.txt';
|
||||
if (isset($TP_HOST) && is_file($robots_txt_file)) {
|
||||
$content = file_get_contents($robots_txt_file);
|
||||
$content = str_replace('example.com', $TP_HOST, $content);
|
||||
file_put_contents($robots_txt_file, $content);
|
||||
}
|
||||
|
||||
if (isset($APP_ENV) && $APP_ENV === 'local') {
|
||||
if (!is_file(BB_ROOT . 'library/config.local.php')) {
|
||||
if (copy(BB_ROOT . 'library/config.php', BB_ROOT . 'library/config.local.php')) {
|
||||
out('- Local configuration file created!', 'success');
|
||||
} else {
|
||||
out('- Cannot create library/config.local.php file. You can create it manually, just copy config.php and rename it to config.local.php', 'warning');
|
||||
}
|
||||
}
|
||||
} else {
|
||||
if (rename(__FILE__, __FILE__ . '_' . hash('xxh128', time()))) {
|
||||
out("- Installation file renamed!", 'success');
|
||||
} else {
|
||||
out('- Cannot rename installation file (' . __FILE__ . '). Please, rename it manually for security reasons', 'warning');
|
||||
}
|
||||
}
|
||||
|
||||
// Cleanup...
|
||||
if (is_file(BB_ROOT . '_cleanup.php')) {
|
||||
out("\n--- Finishing installation (Cleanup) ---\n", 'info');
|
||||
out('The cleanup process will remove:');
|
||||
out('- Development documentation (README, CHANGELOG)', 'debug');
|
||||
out('- Git configuration files', 'debug');
|
||||
out('- CI/CD pipelines and code analysis tools', 'debug');
|
||||
out('- Translation and contribution guidelines', 'debug');
|
||||
echo 'Do you want to delete these files permanently? [y/N]: ';
|
||||
if (str_starts_with(mb_strtolower(trim(readline())), 'y')) {
|
||||
out("\n- Cleanup...", 'info');
|
||||
require_once BB_ROOT . '_cleanup.php';
|
||||
unlink(BB_ROOT . '_cleanup.php');
|
||||
} else {
|
||||
out('- Skipping...', 'info');
|
||||
}
|
||||
}
|
||||
|
||||
out("\n- Voila! Good luck & have fun!", 'success');
|
||||
}
|
47
legacy/.gitignore
vendored
Normal file
47
legacy/.gitignore
vendored
Normal file
|
@ -0,0 +1,47 @@
|
|||
### IDE ###
|
||||
.idea
|
||||
.vscode
|
||||
|
||||
### TorrentPier ###
|
||||
*.log
|
||||
install.php_*
|
||||
composer-setup.php
|
||||
.env
|
||||
.php_cs.cache
|
||||
data/avatars
|
||||
data/uploads
|
||||
internal_data/atom
|
||||
internal_data/cache
|
||||
internal_data/log
|
||||
internal_data/updater.json
|
||||
sitemap
|
||||
internal_data/triggers
|
||||
library/config.local.php
|
||||
vendor
|
||||
|
||||
### Archives ###
|
||||
*.phar
|
||||
*.rar
|
||||
*.tar
|
||||
*.gz
|
||||
*.zip
|
||||
*.7z
|
||||
*.torrent
|
||||
*.pak
|
||||
|
||||
### Windows ###
|
||||
Thumbs.db
|
||||
Desktop.ini
|
||||
$RECYCLE.BIN/
|
||||
*.lnk
|
||||
*.bat
|
||||
|
||||
### OSX ###
|
||||
.DS_Store
|
||||
.AppleDouble
|
||||
.LSOverride
|
||||
._*
|
||||
.Spotlight-V100
|
||||
.Trashes
|
||||
*.orig
|
||||
*.rej
|
192
legacy/README.md
Normal file
192
legacy/README.md
Normal file
|
@ -0,0 +1,192 @@
|
|||
<p align="center"><a href="https://torrentpier.com"><img src="https://torrentpier.com/styles/default/xenforo/bull-logo.svg" width="400px" alt="TorrentPier" /></a></p>
|
||||
|
||||
<p align="center">
|
||||
Bull-powered BitTorrent tracker engine
|
||||
<br/>
|
||||
</p>
|
||||
|
||||
<p align="center">
|
||||
<a href="https://github.com/torrentpier/torrentpier/blob/master/LICENSE"><img src="https://img.shields.io/github/license/torrentpier/torrentpier" alt="License"></a>
|
||||
<a href="https://packagist.org/packages/torrentpier/torrentpier"><img src="https://img.shields.io/packagist/stars/torrentpier/torrentpier" alt="Stars Packagist"></a>
|
||||
<a href="https://crowdin.com/project/torrentpier"><img src="https://badges.crowdin.net/torrentpier/localized.svg" alt="Crowdin"></a>
|
||||
<a href="https://nightly.link/torrentpier/torrentpier/workflows/ci/master/TorrentPier-master"><img src="https://img.shields.io/badge/Nightly%20release-gray?logo=hackthebox&logoColor=fff" alt="TorrentPier nightly"></a>
|
||||
<a href="https://packagist.org/packages/torrentpier/torrentpier"><img src="https://img.shields.io/packagist/dt/torrentpier/torrentpier" alt="Downloads"></a>
|
||||
<a href="https://packagist.org/packages/torrentpier/torrentpier"><img src="https://img.shields.io/packagist/v/torrentpier/torrentpier" alt="Version"></a>
|
||||
<a href="https://github.com/torrentpier/torrentpier/releases"><img src="https://img.shields.io/github/release-date/torrentpier/torrentpier" alt="Last release"></a>
|
||||
<img src="https://img.shields.io/github/repo-size/torrentpier/torrentpier" alt="Size">
|
||||
<a href="https://github.com/SamKirkland/FTP-Deploy-Action"><img src="https://img.shields.io/badge/Deployed to TorrentPier Demo with-FTP DEPLOY ACTION-%3CCOLOR%3E?color=2b9348" alt="Deployed to TorrentPier Demo with FTP Deploy Action"></a>
|
||||
</p>
|
||||
|
||||
## 🐂 About TorrentPier
|
||||
|
||||
TorrentPier — bull-powered BitTorrent Public/Private tracker engine, written in PHP. High speed, simple modifications, load-balanced
|
||||
architecture. In addition, we have a very helpful
|
||||
[official support forum](https://torrentpier.com), where it's possible to get support and download modifications for the engine.
|
||||
|
||||
## 🌈 Current status
|
||||
|
||||
TorrentPier is currently undergoing a **major 3.0 rewrite** to remove all legacy code and modernize the codebase to current PHP standards. **Backward compatibility is not a priority** - this release focuses on moving forward with clean, modern architecture. If you want to delve deep into the code, check our [issues](https://github.com/torrentpier/torrentpier/issues) and go from there.
|
||||
|
||||
> [!NOTE]
|
||||
> TorrentPier 3.0 will introduce breaking changes. Existing installations should remain on 2.x versions until ready to migrate to the new architecture.
|
||||
|
||||
## ✨ Features
|
||||
* Rich forum with browsing/moderation tools
|
||||
* High-load capable, heavily configurable announcer
|
||||
* Scrape support
|
||||
* FreeLeech
|
||||
* [TorrServer integration](https://github.com/YouROK/TorrServer) support
|
||||
* BitTorrent v2 support
|
||||
* Event-based invite system
|
||||
* Bonus points
|
||||
* Polling system
|
||||
* PM/DM system
|
||||
* Multilingual support (Russian and English are currently fully supported, with others in the future)
|
||||
* Atom/RSS feeds
|
||||
* ... and so MUCH MORE!
|
||||
|
||||
## 🖥️ Demo
|
||||
|
||||
* URL: https://torrentpier.duckdns.org
|
||||
* Username: `admin`
|
||||
* Password: `admin`
|
||||
|
||||
> [!NOTE]
|
||||
> Demo resets every 24 hours!
|
||||
|
||||
## 🔧 Requirements
|
||||
|
||||
* Apache / nginx ([example config](install/nginx.conf)) / caddy ([example config](install/Caddyfile))
|
||||
* MySQL 5.5.3 or above (including MySQL 8.0+) / MariaDB 10.0 or above / Percona
|
||||
* PHP: 8.3 / 8.4
|
||||
* PHP Extensions: mbstring, gd, bcmath, intl, tidy (optional), xml, xmlwriter
|
||||
* Crontab (Recommended)
|
||||
|
||||
## 💾 Installation
|
||||
|
||||
For the installation, select one of the installation variants below:
|
||||
|
||||
### Quick (Clean install) 🚀
|
||||
|
||||
Check out our [autoinstall](https://github.com/torrentpier/autoinstall) repository with detailed instructions.
|
||||
|
||||
> [!NOTE]
|
||||
> Thanks to [Sergei Solovev](https://github.com/SeAnSolovev) for this installation script ❤️
|
||||
|
||||
### Quick (For web-panels) ☕️
|
||||
|
||||
1. Select the folder where you want TorrentPier installed
|
||||
```shell
|
||||
cd /path/to/public_html
|
||||
```
|
||||
2. Download the latest version of TorrentPier
|
||||
```shell
|
||||
sudo git clone https://github.com/torrentpier/torrentpier.git .
|
||||
```
|
||||
3. After completing, execute the command below and follow the instructions
|
||||
```shell
|
||||
php install.php
|
||||
```
|
||||
4. Voila! ✨
|
||||
|
||||
### Manual 🔩
|
||||
|
||||
1. Install [Composer](https://getcomposer.org/)
|
||||
2. Run the following command to create the TorrentPier project
|
||||
```shell
|
||||
composer create-project torrentpier/torrentpier
|
||||
```
|
||||
3. [Check our system requirements](#-requirements)
|
||||
4. After, run this command in the project directory to install Composer dependencies
|
||||
```shell
|
||||
composer install
|
||||
```
|
||||
5. Edit database configuration settings in the environment (`.env.example`), after, rename to `.env`
|
||||
6. Create a database and run migrations to set up the schema
|
||||
```shell
|
||||
php vendor/bin/phinx migrate --configuration=phinx.php
|
||||
```
|
||||
7. Provide write permissions to the specified folders:
|
||||
* `data/avatars`, `data/uploads`, `data/uploads/thumbs`
|
||||
* `internal_data/atom`, `internal_data/cache`, `internal_data/log`, `internal_data/triggers`
|
||||
* `sitemap`
|
||||
8. Voila! ✨
|
||||
|
||||
> [!TIP]
|
||||
> You can automate steps 4-7 by running `php install.php` instead, which will guide you through the setup process interactively.
|
||||
|
||||
> [!IMPORTANT]
|
||||
> The specific settings depend on the server you are using, but in general we recommend chmod **0755** for folders, and chmod **0644** for the files in them.
|
||||
|
||||
### Additional steps 👣
|
||||
|
||||
1. Edit these files:
|
||||
* `favicon.png` (change to your own)
|
||||
* `robots.txt` (change the addresses in lines `Host` and `Sitemap` to your own)
|
||||
2. Log in to the forum using the **admin/admin** login/password, and finish setting up via admin panel. Don't forget to change your password!
|
||||
|
||||
## 🔐 Security vulnerabilities
|
||||
|
||||
If you discover a security vulnerability within TorrentPier, please follow our [security policy](https://github.com/torrentpier/torrentpier/security/policy), so we can address it promptly.
|
||||
|
||||
## 🧪 Testing
|
||||
|
||||
TorrentPier includes a comprehensive testing suite built with **Pest PHP**. Run tests to ensure code quality and system reliability:
|
||||
|
||||
```shell
|
||||
# Run all tests
|
||||
./vendor/bin/pest
|
||||
|
||||
# Run with coverage
|
||||
./vendor/bin/pest --coverage
|
||||
```
|
||||
|
||||
For detailed testing documentation, see [tests/README.md](tests/README.md).
|
||||
|
||||
## 📌 Our recommendations
|
||||
|
||||
* *It's recommended to run `cron.php`.* - For significant tracker speed increase it may be required to replace the built-in cron.php with an operating system daemon.
|
||||
* *Local configuration copy.* - You can override the settings using the local configuration file `library/config.local.php`.
|
||||
|
||||
## 💚 Contributing / Contributors
|
||||
|
||||
Please read our [contributing policy](CONTRIBUTING.md) and [code of conduct](CODE_OF_CONDUCT.md) for details, and the process for
|
||||
submitting pull requests to us. But we are always ready to review your pull-request for compliance with
|
||||
these requirements. Just send it!
|
||||
|
||||
<a href="https://github.com/torrentpier/torrentpier/graphs/contributors">
|
||||
<img src="https://contrib.rocks/image?repo=torrentpier/torrentpier" alt="Contributors"/>
|
||||
</a>
|
||||
|
||||
Made with [contrib.rocks](https://contrib.rocks).
|
||||
|
||||
## 💞 Sponsoring
|
||||
|
||||
Support this project by becoming a sponsor or a backer.
|
||||
|
||||
[](https://opencollective.com/torrentpier)
|
||||
[](https://opencollective.com/torrentpier)
|
||||
|
||||
<details>
|
||||
<summary>Monero</summary>
|
||||
|
||||
```
|
||||
42zJE3FDvN8foP9QYgDrBjgtd7h2FipGCGmAcmG5VFQuRkJBGMbCvoLSmivepmAMEgik2E8MPWUzKaoYsGCtmhvL7ZN73jh
|
||||
```
|
||||
</details>
|
||||
|
||||
<details>
|
||||
<summary>YooMoney</summary>
|
||||
|
||||
```
|
||||
4100118022415720
|
||||
```
|
||||
</details>
|
||||
|
||||
## 📦 Versioning
|
||||
|
||||
We use [SemVer](http://semver.org/) for versioning. For the versions available, see the [tags on this repository](https://github.com/torrentpier/torrentpier/tags).
|
||||
|
||||
## 📖 License
|
||||
|
||||
This project is licensed under the MIT License - see the [LICENSE](https://github.com/torrentpier/torrentpier/blob/master/LICENSE) file for details.
|
0
composer.lock → legacy/composer.lock
generated
0
composer.lock → legacy/composer.lock
generated
Before Width: | Height: | Size: 13 KiB After Width: | Height: | Size: 13 KiB |
Before Width: | Height: | Size: 7.7 KiB After Width: | Height: | Size: 7.7 KiB |
Before Width: | Height: | Size: 22 KiB After Width: | Height: | Size: 22 KiB |
Some files were not shown because too many files have changed in this diff Show more
Loading…
Add table
Add a link
Reference in a new issue