From a8e252f64f7205b7bb24739ab637144c6fb022d6 Mon Sep 17 00:00:00 2001
From: Roman Kelesidis
Date: Thu, 19 Jun 2025 10:50:26 +0300
Subject: [PATCH 01/20] chore: Changed branch name from `master` to `v2.4`
(#1968)
---
.github/workflows/ci.yml | 36 ++--------------------------------
.github/workflows/phpmd.yml | 4 ++--
.github/workflows/schedule.yml | 6 +++---
cliff.toml | 2 +-
4 files changed, 8 insertions(+), 40 deletions(-)
diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml
index e92dfe326..e38c0ad2a 100644
--- a/.github/workflows/ci.yml
+++ b/.github/workflows/ci.yml
@@ -3,7 +3,7 @@ name: Continuous Integration
on:
push:
branches:
- - master
+ - v2.4
jobs:
nightly:
@@ -44,37 +44,5 @@ jobs:
- name: Upload Archive ๐ค
uses: actions/upload-artifact@v4
with:
- name: TorrentPier-master
+ name: TorrentPier-v2.4
path: ${{ steps.create-zip.outputs.ZIP_NAME }}
-
- deploy:
- name: ๐ Deploy
- runs-on: ubuntu-22.04
- steps:
- - name: ๐ Get latest code
- uses: actions/checkout@v4
-
- - name: ๐ฉ Setup PHP
- uses: shivammathur/setup-php@v2
- with:
- php-version: '8.1'
-
- - name: Update composer.lock file
- run: composer update --no-install
-
- - name: ๐ Install Composer dependencies
- run: composer install --no-progress --prefer-dist --optimize-autoloader
-
- - name: ๐ Sync files
- uses: SamKirkland/FTP-Deploy-Action@v4.3.5
- with:
- server: ${{ secrets.FTP_SERVER }}
- username: ${{ secrets.FTP_USERNAME }}
- password: ${{ secrets.FTP_PASSWORD }}
- server-dir: ${{ secrets.FTP_DIR }}
- protocol: ${{ secrets.FTP_PROTOCOL }}
- port: ${{ secrets.FTP_PORT }}
- exclude: |
- **/.git*
- **/.git*/**
- .env
diff --git a/.github/workflows/phpmd.yml b/.github/workflows/phpmd.yml
index 3e06d7538..0bc28da28 100644
--- a/.github/workflows/phpmd.yml
+++ b/.github/workflows/phpmd.yml
@@ -17,10 +17,10 @@ name: PHPMD
on:
push:
- branches: [ "master" ]
+ branches: [ "v2.4" ]
pull_request:
# The branches below must be a subset of the branches above
- branches: [ "master" ]
+ branches: [ "v2.4" ]
schedule:
- cron: '40 0 * * 3'
diff --git a/.github/workflows/schedule.yml b/.github/workflows/schedule.yml
index 209512552..1bd8f0bdb 100644
--- a/.github/workflows/schedule.yml
+++ b/.github/workflows/schedule.yml
@@ -14,7 +14,7 @@ jobs:
uses: actions/checkout@v4
with:
fetch-depth: 0
- ref: master
+ ref: v2.4
token: ${{ secrets.REPO_TOKEN }}
- name: Generate a changelog
@@ -32,10 +32,10 @@ jobs:
- name: Commit changelog
run: |
- git checkout master
+ git checkout v2.4
git config --local user.name 'belomaxorka'
git config --local user.email 'roman25052006.kelesh@gmail.com'
set +e
git add CHANGELOG.md
git commit -m "Update CHANGELOG.md ๐"
- git push https://${{ secrets.GITHUB_TOKEN }}@github.com/${{ github.repository }}.git master
+ git push https://${{ secrets.GITHUB_TOKEN }}@github.com/${{ github.repository }}.git v2.4
diff --git a/cliff.toml b/cliff.toml
index 1753dd8a4..0fedab5e7 100644
--- a/cliff.toml
+++ b/cliff.toml
@@ -23,7 +23,7 @@ body = """
{%- endmacro -%}
{%- macro nightly_url() -%}
- https://nightly.link/{{ remote.github.owner }}/{{ remote.github.repo }}/workflows/ci/master/TorrentPier-master
+ https://nightly.link/{{ remote.github.owner }}/{{ remote.github.repo }}/workflows/ci/v2.4/TorrentPier-v2.4
{%- endmacro -%}
{% macro print_commit(commit) -%}
From ce1f35c2b5db7ae89c225d58f19786f5625fd5f3 Mon Sep 17 00:00:00 2001
From: belomaxorka
Date: Thu, 19 Jun 2025 07:52:50 +0000
Subject: [PATCH 02/20] =?UTF-8?q?Update=20CHANGELOG.md=20=F0=9F=93=96?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
CHANGELOG.md | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 19f1dc9f6..bb384da2c 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -2,7 +2,7 @@
# ๐ Change Log
-## [nightly](https://nightly.link/torrentpier/torrentpier/workflows/ci/master/TorrentPier-master)
+## [nightly](https://nightly.link/torrentpier/torrentpier/workflows/ci/v2.4/TorrentPier-v2.4)
### ๐ฆ Dependencies
@@ -11,6 +11,7 @@
### โ๏ธ Miscellaneous
- *(_release.php)* Finally! Removed some useless params ([#1947](https://github.com/torrentpier/torrentpier/pull/1947)) - ([9c7d270](https://github.com/torrentpier/torrentpier/commit/9c7d270598c0153fb82f4b7ad96f5b59399b2159))
+- Changed branch name from `master` to `v2.4` ([#1968](https://github.com/torrentpier/torrentpier/pull/1968)) - ([a8e252f](https://github.com/torrentpier/torrentpier/commit/a8e252f64f7205b7bb24739ab637144c6fb022d6))
## [v2.4.6-alpha.4](https://github.com/torrentpier/torrentpier/compare/v2.4.6-alpha.3..v2.4.6-alpha.4) (2025-06-13)
From 15f994840331b135cd64c0cd61de95fecfc29db8 Mon Sep 17 00:00:00 2001
From: Roman Kelesidis
Date: Thu, 19 Jun 2025 10:59:18 +0300
Subject: [PATCH 03/20] fix(installer): Strip protocol from TP_HOST to keep
only hostname (#1969)
---
install.php | 6 ++++++
1 file changed, 6 insertions(+)
diff --git a/install.php b/install.php
index 009098420..327c0fb5d 100644
--- a/install.php
+++ b/install.php
@@ -206,6 +206,12 @@ if (is_file(BB_ROOT . '.env')) {
$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 {
From 7d9594eedab1b2c81d888dfba68ded1b8a142282 Mon Sep 17 00:00:00 2001
From: Roman Kelesidis
Date: Thu, 19 Jun 2025 11:01:52 +0300
Subject: [PATCH 04/20] chore(cliff): Add conventional commit prefix to
changelog message (#1970)
---
.github/workflows/schedule.yml | 2 +-
cliff.toml | 2 +-
2 files changed, 2 insertions(+), 2 deletions(-)
diff --git a/.github/workflows/schedule.yml b/.github/workflows/schedule.yml
index 1bd8f0bdb..d0ab3b5a9 100644
--- a/.github/workflows/schedule.yml
+++ b/.github/workflows/schedule.yml
@@ -37,5 +37,5 @@ jobs:
git config --local user.email 'roman25052006.kelesh@gmail.com'
set +e
git add CHANGELOG.md
- git commit -m "Update CHANGELOG.md ๐"
+ git commit -m "changelog: Update CHANGELOG.md ๐"
git push https://${{ secrets.GITHUB_TOKEN }}@github.com/${{ github.repository }}.git v2.4
diff --git a/cliff.toml b/cliff.toml
index 0fedab5e7..858d0a4db 100644
--- a/cliff.toml
+++ b/cliff.toml
@@ -105,7 +105,7 @@ commit_parsers = [
{ message = "^refactor", group = "๐ Refactor" },
{ message = "^style", group = "๐จ Styling" },
{ message = "^test", group = "๐งช Testing" },
- { message = "^ignore|^release", skip = true },
+ { message = "^ignore|^release|^changelog", skip = true },
{ message = "^chore|^ci|^misc", group = "โ๏ธ Miscellaneous" },
{ body = ".*security", group = "๐ก๏ธ Security" },
{ message = "^revert", group = "โ๏ธ Revert" },
From 2a8b6daecf63752b8a852c950e9a7fd08e17f57c Mon Sep 17 00:00:00 2001
From: Roman Kelesidis
Date: Thu, 19 Jun 2025 11:05:23 +0300
Subject: [PATCH 05/20] fix: SQL queries in online_userlist.php to use MAX()
for session data and adjusted GROUP BY clause for better accuracy (#1971)
Co-authored-by: Yury Pikhtarev
---
library/includes/online_userlist.php | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/library/includes/online_userlist.php b/library/includes/online_userlist.php
index ffa0cd2e4..7434f79ea 100644
--- a/library/includes/online_userlist.php
+++ b/library/includes/online_userlist.php
@@ -36,11 +36,11 @@ $online = $online_short = ['userlist' => ''];
$sql = "
SELECT
u.username, u.user_id, u.user_opt, u.user_rank, u.user_level,
- s.session_logged_in, s.session_ip, (s.session_time - s.session_start) AS ses_len, COUNT(s.session_id) AS sessions, COUNT(DISTINCT s.session_ip) AS ips
+ MAX(s.session_logged_in) AS session_logged_in, MAX(s.session_ip) AS session_ip, MAX(s.session_time - s.session_start) AS ses_len, COUNT(s.session_id) AS sessions, COUNT(DISTINCT s.session_ip) AS ips
FROM " . BB_SESSIONS . " s, " . BB_USERS . " u
WHERE s.session_time > $time_online
AND u.user_id = s.session_user_id
- GROUP BY s.session_user_id
+ GROUP BY s.session_user_id, u.username, u.user_id, u.user_opt, u.user_rank, u.user_level
ORDER BY u.username
";
From 7dc69ba699c75d87c709a799291c4b544b3e92aa Mon Sep 17 00:00:00 2001
From: Roman Kelesidis
Date: Thu, 19 Jun 2025 11:08:58 +0300
Subject: [PATCH 06/20] chore: Changed active branch name in `_release.php`
(#1972)
* chore: Changed active branch name in `_release.php`
* Update _release.php
---
_release.php | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/_release.php b/_release.php
index a09f3c718..bb3364439 100644
--- a/_release.php
+++ b/_release.php
@@ -124,7 +124,8 @@ runProcess("git tag -a \"$version\" -m \"Release $version\"");
runProcess("git tag -v \"$version\"");
// Git push
-runProcess("git push origin master");
+runProcess("git checkout v2.4");
+runProcess("git push origin v2.4");
runProcess("git push origin $version");
out("\n- Release $version has been successfully prepared, committed and pushed!", 'success');
From faf3d7919249d869d8ca8d41617dd4356dc0ac48 Mon Sep 17 00:00:00 2001
From: Roman Kelesidis
Date: Thu, 19 Jun 2025 11:11:35 +0300
Subject: [PATCH 07/20] fix(sql): Resolve `only_full_group_by` compatibility
issues in tracker cleanup
- Replace non-aggregated 'seeder' column with MAX(seeder) in GROUP BY query
- Remove ORDER BY clause incompatible with GROUP BY in seeder update query
Fixes MySQL 5.7+ strict SQL mode errors in tr_cleanup_and_dlstat cron job.
Co-Authored-By: Yury Pikhtarev
---
library/includes/cron/jobs/tr_cleanup_and_dlstat.php | 3 +--
1 file changed, 1 insertion(+), 2 deletions(-)
diff --git a/library/includes/cron/jobs/tr_cleanup_and_dlstat.php b/library/includes/cron/jobs/tr_cleanup_and_dlstat.php
index a0d7efd25..a0a64251f 100644
--- a/library/includes/cron/jobs/tr_cleanup_and_dlstat.php
+++ b/library/includes/cron/jobs/tr_cleanup_and_dlstat.php
@@ -39,7 +39,7 @@ if ($bb_cfg['tracker']['update_dlstat']) {
INSERT INTO " . NEW_BB_BT_LAST_TORSTAT . "
(topic_id, user_id, dl_status, up_add, down_add, release_add, speed_up, speed_down)
SELECT
- topic_id, user_id, IF(releaser, $releaser, seeder), SUM(up_add), SUM(down_add), IF(releaser, SUM(up_add), 0), SUM(speed_up), SUM(speed_down)
+ topic_id, user_id, IF(MAX(releaser), $releaser, MAX(seeder)), SUM(up_add), SUM(down_add), IF(MAX(releaser), SUM(up_add), 0), SUM(speed_up), SUM(speed_down)
FROM " . BB_BT_TRACKER . "
WHERE (up_add != 0 OR down_add != 0)
GROUP BY topic_id, user_id
@@ -61,7 +61,6 @@ DB()->query("
FROM " . BB_BT_TRACKER . "
WHERE seeder = 1
GROUP BY topic_id, user_id
- ORDER BY update_time DESC
");
// Clean peers table
From 6a1d6823856dd7c3cef45bea2681828526d1b9f8 Mon Sep 17 00:00:00 2001
From: Roman Kelesidis
Date: Thu, 19 Jun 2025 11:16:17 +0300
Subject: [PATCH 08/20] fix: Duplicate column SQL query issues in
`viewtopic.php` (#1973)
Co-authored-by: Yury Pikhtarev
---
viewtopic.php | 10 +++++-----
1 file changed, 5 insertions(+), 5 deletions(-)
diff --git a/viewtopic.php b/viewtopic.php
index 82d39e685..c059c1b68 100644
--- a/viewtopic.php
+++ b/viewtopic.php
@@ -85,17 +85,17 @@ if ($topic_id && isset($_GET['view']) && ($_GET['view'] == 'next' || $_GET['view
// Get forum/topic data
if ($topic_id) {
- $sql = "SELECT t.*, f.*, tw.notify_status
+ $sql = "SELECT t.*, f.cat_id, f.forum_name, f.forum_desc, f.forum_status, f.forum_order, f.forum_posts, f.forum_topics, f.forum_last_post_id, f.forum_tpl_id, f.prune_days, f.auth_view, f.auth_read, f.auth_post, f.auth_reply, f.auth_edit, f.auth_delete, f.auth_sticky, f.auth_announce, f.auth_vote, f.auth_pollcreate, f.auth_attachments, f.auth_download, f.allow_reg_tracker, f.allow_porno_topic, f.self_moderated, f.forum_parent, f.show_on_index, f.forum_display_sort, f.forum_display_order, tw.notify_status
FROM " . BB_TOPICS . " t
- LEFT JOIN " . BB_FORUMS . " f USING(forum_id)
+ LEFT JOIN " . BB_FORUMS . " f ON t.forum_id = f.forum_id
LEFT JOIN " . BB_TOPICS_WATCH . " tw ON(tw.topic_id = t.topic_id AND tw.user_id = {$userdata['user_id']})
WHERE t.topic_id = $topic_id
";
} elseif ($post_id) {
- $sql = "SELECT t.*, f.*, p.post_time, tw.notify_status
+ $sql = "SELECT t.*, f.cat_id, f.forum_name, f.forum_desc, f.forum_status, f.forum_order, f.forum_posts, f.forum_topics, f.forum_last_post_id, f.forum_tpl_id, f.prune_days, f.auth_view, f.auth_read, f.auth_post, f.auth_reply, f.auth_edit, f.auth_delete, f.auth_sticky, f.auth_announce, f.auth_vote, f.auth_pollcreate, f.auth_attachments, f.auth_download, f.allow_reg_tracker, f.allow_porno_topic, f.self_moderated, f.forum_parent, f.show_on_index, f.forum_display_sort, f.forum_display_order, p.post_time, tw.notify_status
FROM " . BB_TOPICS . " t
- LEFT JOIN " . BB_FORUMS . " f USING(forum_id)
- LEFT JOIN " . BB_POSTS . " p USING(topic_id)
+ LEFT JOIN " . BB_FORUMS . " f ON t.forum_id = f.forum_id
+ LEFT JOIN " . BB_POSTS . " p ON t.topic_id = p.topic_id
LEFT JOIN " . BB_TOPICS_WATCH . " tw ON(tw.topic_id = t.topic_id AND tw.user_id = {$userdata['user_id']})
WHERE p.post_id = $post_id
";
From de9f5e2cb18f9054eb3bfd7c4e2b72792f6efbcb Mon Sep 17 00:00:00 2001
From: Roman Kelesidis
Date: Thu, 19 Jun 2025 11:19:30 +0300
Subject: [PATCH 09/20] =?UTF-8?q?release:=20v2.4.6=20=F0=9F=A6=9C?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
CHANGELOG.md | 15 ++++++++++++++-
library/config.php | 4 ++--
2 files changed, 16 insertions(+), 3 deletions(-)
diff --git a/CHANGELOG.md b/CHANGELOG.md
index bb384da2c..a96b57792 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -2,7 +2,14 @@
# ๐ Change Log
-## [nightly](https://nightly.link/torrentpier/torrentpier/workflows/ci/v2.4/TorrentPier-v2.4)
+## [v2.4.6](https://github.com/torrentpier/torrentpier/compare/v2.4.6-alpha.4..v2.4.6) (2025-06-19)
+
+### ๐ Bug Fixes
+
+- *(installer)* Strip protocol from TP_HOST to keep only hostname ([#1969](https://github.com/torrentpier/torrentpier/pull/1969)) - ([15f9948](https://github.com/torrentpier/torrentpier/commit/15f994840331b135cd64c0cd61de95fecfc29db8))
+- *(sql)* Resolve `only_full_group_by` compatibility issues in tracker cleanup - ([faf3d79](https://github.com/torrentpier/torrentpier/commit/faf3d7919249d869d8ca8d41617dd4356dc0ac48))
+- Duplicate column SQL query issues in `viewtopic.php` ([#1973](https://github.com/torrentpier/torrentpier/pull/1973)) - ([6a1d682](https://github.com/torrentpier/torrentpier/commit/6a1d6823856dd7c3cef45bea2681828526d1b9f8))
+- SQL queries in online_userlist.php to use MAX() for session data and adjusted GROUP BY clause for better accuracy ([#1971](https://github.com/torrentpier/torrentpier/pull/1971)) - ([2a8b6da](https://github.com/torrentpier/torrentpier/commit/2a8b6daecf63752b8a852c950e9a7fd08e17f57c))
### ๐ฆ Dependencies
@@ -11,8 +18,14 @@
### โ๏ธ Miscellaneous
- *(_release.php)* Finally! Removed some useless params ([#1947](https://github.com/torrentpier/torrentpier/pull/1947)) - ([9c7d270](https://github.com/torrentpier/torrentpier/commit/9c7d270598c0153fb82f4b7ad96f5b59399b2159))
+- *(cliff)* Add conventional commit prefix to changelog message ([#1970](https://github.com/torrentpier/torrentpier/pull/1970)) - ([7d9594e](https://github.com/torrentpier/torrentpier/commit/7d9594eedab1b2c81d888dfba68ded1b8a142282))
+- Changed active branch name in `_release.php` ([#1972](https://github.com/torrentpier/torrentpier/pull/1972)) - ([7dc69ba](https://github.com/torrentpier/torrentpier/commit/7dc69ba699c75d87c709a799291c4b544b3e92aa))
- Changed branch name from `master` to `v2.4` ([#1968](https://github.com/torrentpier/torrentpier/pull/1968)) - ([a8e252f](https://github.com/torrentpier/torrentpier/commit/a8e252f64f7205b7bb24739ab637144c6fb022d6))
+## New Contributors โค๏ธ
+
+* @belomaxorka made their first contribution
+* @dependabot[bot] made their first contribution in [#1948](https://github.com/torrentpier/torrentpier/pull/1948)
## [v2.4.6-alpha.4](https://github.com/torrentpier/torrentpier/compare/v2.4.6-alpha.3..v2.4.6-alpha.4) (2025-06-13)
diff --git a/library/config.php b/library/config.php
index 866c8ed75..e9e31af30 100644
--- a/library/config.php
+++ b/library/config.php
@@ -18,8 +18,8 @@ $reserved_port = env('TP_PORT', 80);
$bb_cfg = [];
// Version info
-$bb_cfg['tp_version'] = 'v2.4.6-alpha.4';
-$bb_cfg['tp_release_date'] = '13-06-2025';
+$bb_cfg['tp_version'] = 'v2.4.6';
+$bb_cfg['tp_release_date'] = '19-06-2025';
$bb_cfg['tp_release_codename'] = 'Cattle';
// Increase version number after changing JS or CSS
From 403fcf2aca4b2d70bfca194107f4b4f5c5ba7f03 Mon Sep 17 00:00:00 2001
From: Roman Kelesidis
Date: Thu, 19 Jun 2025 14:47:06 +0300
Subject: [PATCH 10/20] docs: Fixed some typos in `README.md` (#1974)
---
README.md | 34 +++++++++++++++++-----------------
1 file changed, 17 insertions(+), 17 deletions(-)
diff --git a/README.md b/README.md
index 8397b363b..1b28c0526 100644
--- a/README.md
+++ b/README.md
@@ -14,20 +14,20 @@
-
+
## ๐ 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
+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 in active development. The goal is to remove all legacy code and rewrite the existing code to
-modern specifications. If you want delve deep into the code, check our [issues](https://github.com/torrentpier/torrentpier/issues)
-and go from there. The documentation will be translated to english in the near future, currently russian is the main language of it.
+TorrentPier is currently in active development. The goal is to remove all legacy code and rewrite the existing code to
+modern specifications. If you want to delve deep into the code, check our [issues](https://github.com/torrentpier/torrentpier/issues)
+and go from there. The documentation will be translated to English in the near future; currently Russian is the main language.
## โจ Features
* Rich forum with browsing/moderation tools
@@ -40,7 +40,7 @@ and go from there. The documentation will be translated to english in the near f
* Bonus points
* Polling system
* PM/DM system
-* Multilingual support (Russian and English is currently fully supported, with others in the future)
+* Multilingual support (Russian and English are currently fully supported, with others in the future)
* Atom/RSS feeds
* ... and so MUCH MORE!
@@ -103,9 +103,9 @@ Check out our [autoinstall](https://github.com/torrentpier/autoinstall) reposito
5. Create a database and import the dump located at `install/sql/mysql.sql`
6. Edit database configuration settings in the environment (`.env.example`), after, rename to `.env`
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`
+ * `data/avatars`, `data/uploads`, `data/uploads/thumbs`
+ * `internal_data/atom`, `internal_data/cache`, `internal_data/log`, `internal_data/triggers`
+ * `sitemap`
8. Voila! โจ
> [!IMPORTANT]
@@ -114,8 +114,8 @@ Check out our [autoinstall](https://github.com/torrentpier/autoinstall) reposito
### 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)
+ * `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
@@ -124,13 +124,13 @@ If you discover a security vulnerability within TorrentPier, please follow our [
## ๐ Our recommendations
-* *It's recommended to run `cron.php`.* - For significant tracker speed increase it ay be required to replace the built-in cron.php in operating system daemon.
+* *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 renew your pull-request for compliance with
+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!
@@ -141,7 +141,7 @@ Made with [contrib.rocks](https://contrib.rocks).
## ๐ Sponsoring
-Support this project by becoming a sponsor or a backer.
+Support this project by becoming a sponsor or a backer.
[](https://opencollective.com/torrentpier)
[](https://opencollective.com/torrentpier)
@@ -164,7 +164,7 @@ Support this project by becoming a sponsor or a backer.
## ๐ฆ 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).
+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
From b7bc7f91662b050082843d18b03376dc67efa3e0 Mon Sep 17 00:00:00 2001
From: Roman Kelesidis
Date: Thu, 19 Jun 2025 14:52:07 +0300
Subject: [PATCH 11/20] docs: Updated `Requirements` sections in README.md
(#1975)
---
README.md | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/README.md b/README.md
index 1b28c0526..44c93375c 100644
--- a/README.md
+++ b/README.md
@@ -56,7 +56,7 @@ and go from there. The documentation will be translated to English in the near f
## ๐ง Requirements
* Apache / nginx ([example config](install/nginx.conf)) / caddy ([example config](install/Caddyfile))
-* MySQL 5.5.3 or above / MariaDB 10.0 or above / Percona
+* MySQL 5.5.3 or above (including MySQL 8.0+) / MariaDB 10.0 or above / Percona
* PHP: 8.1 / 8.2 / 8.3 / 8.4
* PHP Extensions: mbstring, gd, bcmath, intl, tidy (optional), xml, xmlwriter
* Crontab (Recommended)
From dc64426574087e69bc7e056a89ff367438e37344 Mon Sep 17 00:00:00 2001
From: Roman Kelesidis
Date: Thu, 19 Jun 2025 18:34:15 +0300
Subject: [PATCH 12/20] docs: Changed nightly.link url in `README.md` (#1977)
---
README.md | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/README.md b/README.md
index 44c93375c..3a699f78a 100644
--- a/README.md
+++ b/README.md
@@ -9,7 +9,7 @@
-
+
From 896cf6c3d604ef4326268cb7e7fb90dfb29cc2e7 Mon Sep 17 00:00:00 2001
From: belomaxorka
Date: Fri, 20 Jun 2025 06:12:19 +0000
Subject: [PATCH 13/20] =?UTF-8?q?changelog:=20Update=20CHANGELOG.md=20?=
=?UTF-8?q?=F0=9F=93=96?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
CHANGELOG.md | 9 +++++++++
1 file changed, 9 insertions(+)
diff --git a/CHANGELOG.md b/CHANGELOG.md
index a96b57792..ce2a94d5c 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -2,6 +2,15 @@
# ๐ Change Log
+## [nightly](https://nightly.link/torrentpier/torrentpier/workflows/ci/v2.4/TorrentPier-v2.4)
+
+### ๐ Documentation
+
+- Changed nightly.link url in `README.md` ([#1977](https://github.com/torrentpier/torrentpier/pull/1977)) - ([dc64426](https://github.com/torrentpier/torrentpier/commit/dc64426574087e69bc7e056a89ff367438e37344))
+- Updated `Requirements` sections in README.md ([#1975](https://github.com/torrentpier/torrentpier/pull/1975)) - ([b7bc7f9](https://github.com/torrentpier/torrentpier/commit/b7bc7f91662b050082843d18b03376dc67efa3e0))
+- Fixed some typos in `README.md` ([#1974](https://github.com/torrentpier/torrentpier/pull/1974)) - ([403fcf2](https://github.com/torrentpier/torrentpier/commit/403fcf2aca4b2d70bfca194107f4b4f5c5ba7f03))
+
+
## [v2.4.6](https://github.com/torrentpier/torrentpier/compare/v2.4.6-alpha.4..v2.4.6) (2025-06-19)
### ๐ Bug Fixes
From 8c161ceae0f80a3ffe57da06dbadd1f9a53272f3 Mon Sep 17 00:00:00 2001
From: Roman Kelesidis
Date: Mon, 23 Jun 2025 21:49:53 +0300
Subject: [PATCH 14/20] fix(filelist): `Undefined property: FileTree::$length`
when v2 torrent only (#2004)
---
filelist.php | 15 +--------------
styles/templates/default/filelist.tpl | 24 ------------------------
2 files changed, 1 insertion(+), 38 deletions(-)
diff --git a/filelist.php b/filelist.php
index 8e256dc67..2cfd9d418 100644
--- a/filelist.php
+++ b/filelist.php
@@ -82,7 +82,7 @@ if (IS_GUEST && $torrent->isPrivate()) {
// Get torrent files
$files = $torrent->$t_version_field()->$t_files_field();
-if ($meta_v1 && $meta_v2) {
+if ($meta_v2) {
$files = new \RecursiveIteratorIterator($files); // Flatten the list
}
@@ -102,19 +102,6 @@ foreach ($files as $file) {
$torrent_name = !empty($t_name = $torrent->getName()) ? str_short(htmlCHR($t_name), 200) : $lang['UNKNOWN'];
$torrent_size = humn_size($row['size'], 2);
-// Get announcers list
-$announcers_list = $torrent->getAnnounceList()->toArray();
-$announcers_count = 0;
-foreach ($announcers_list as $announcer) {
- $announcers_count++;
- $row_class = ($announcers_count % 2) ? 'row1' : 'row2';
- $template->assign_block_vars('announcers', [
- 'ROW_NUMBER' => $announcers_count,
- 'ROW_CLASS' => $row_class,
- 'ANNOUNCER' => $announcer[0]
- ]);
-}
-
// Output page
$template->assign_vars([
'PAGE_TITLE' => "$torrent_name (" . $torrent_size . ")",
diff --git a/styles/templates/default/filelist.tpl b/styles/templates/default/filelist.tpl
index 9e6bc4eb4..149a98acc 100644
--- a/styles/templates/default/filelist.tpl
+++ b/styles/templates/default/filelist.tpl
@@ -6,30 +6,6 @@
-{L_BT_FLIST_ANNOUNCERS_LIST}
-
-
-
- # |
- {L_BT_FLIST_ANNOUNCERS} |
-
-
-
-
-
- {announcers.ROW_NUMBER} |
- {announcers.ANNOUNCER} |
-
-
-
-
-
- {L_BT_FLIST_ANNOUNCERS_NOTICE} |
-
-
-
-
-
{L_BT_FLIST}
From 12ce6e783ec97a6c3df0e11273944a3e6cfe466d Mon Sep 17 00:00:00 2001
From: Roman Kelesidis
Date: Tue, 24 Jun 2025 12:55:41 +0300
Subject: [PATCH 15/20] fix(ip-api): Add error handling and logging for
freeipapi.com requests (#2006)
---
library/attach_mod/displaying_torrent.php | 2 ++
library/includes/functions.php | 27 ++++++++++++++---------
2 files changed, 19 insertions(+), 10 deletions(-)
diff --git a/library/attach_mod/displaying_torrent.php b/library/attach_mod/displaying_torrent.php
index 06a670266..ce6bf669a 100644
--- a/library/attach_mod/displaying_torrent.php
+++ b/library/attach_mod/displaying_torrent.php
@@ -475,6 +475,8 @@ if ($tor_reged && $tor_info) {
if ($infoByIP = infoByIP((!empty($peer['ipv6']) ? $peer['ipv6'] : $peer['ip']), $peer['port'])) {
if (!empty($infoByIP['countryCode'])) {
$peerCountry = render_flag($infoByIP['countryCode'], false);
+ } else {
+ $peerCountry = $lang['NOT_AVAILABLE'];
}
}
}
diff --git a/library/includes/functions.php b/library/includes/functions.php
index 67256eb1f..948208667 100644
--- a/library/includes/functions.php
+++ b/library/includes/functions.php
@@ -2210,19 +2210,26 @@ function infoByIP(string $ipAddress, int $port = 0): array
}
$context = stream_context_create($contextOptions);
- $response = file_get_contents($bb_cfg['ip2country_settings']['endpoint'] . $ipAddress, context: $context);
- if ($response !== false) {
- $json = json_decode($response, true);
+ try {
+ $response = file_get_contents($bb_cfg['ip2country_settings']['endpoint'] . $ipAddress, context: $context);
- if (is_array($json) && !empty($json)) {
- $data = [
- 'ipVersion' => $json['ipVersion'],
- 'countryCode' => $json['countryCode'],
- 'continent' => $json['continent'],
- 'continentCode' => $json['continentCode']
- ];
+ if ($response !== false) {
+ $json = json_decode($response, true);
+
+ if (is_array($json) && !empty($json)) {
+ $data = [
+ 'ipVersion' => $json['ipVersion'],
+ 'countryCode' => $json['countryCode'],
+ 'continent' => $json['continent'],
+ 'continentCode' => $json['continentCode']
+ ];
+ }
+ } else {
+ bb_log("[FreeIPAPI] Failed to get IP info for: $ipAddress");
}
+ } catch (Exception $e) {
+ bb_log("[FreeIPAPI] " . $e->getMessage());
}
if (empty($data)) {
From 986d198aaf858b949a9c4fa2291ec7da90010bbf Mon Sep 17 00:00:00 2001
From: Roman Kelesidis
Date: Tue, 24 Jun 2025 13:23:52 +0300
Subject: [PATCH 16/20] release: v2.4.7
---
CHANGELOG.md | 7 ++++++-
library/config.php | 4 ++--
2 files changed, 8 insertions(+), 3 deletions(-)
diff --git a/CHANGELOG.md b/CHANGELOG.md
index ce2a94d5c..e2a8d061e 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -2,7 +2,12 @@
# ๐ Change Log
-## [nightly](https://nightly.link/torrentpier/torrentpier/workflows/ci/v2.4/TorrentPier-v2.4)
+## [v2.4.7](https://github.com/torrentpier/torrentpier/compare/v2.4.6..v2.4.7) (2025-06-24)
+
+### ๐ Bug Fixes
+
+- *(filelist)* `Undefined property: FileTree::$length` when v2 torrent only ([#2004](https://github.com/torrentpier/torrentpier/pull/2004)) - ([8c161ce](https://github.com/torrentpier/torrentpier/commit/8c161ceae0f80a3ffe57da06dbadd1f9a53272f3))
+- *(ip-api)* Add error handling and logging for freeipapi.com requests ([#2006](https://github.com/torrentpier/torrentpier/pull/2006)) - ([12ce6e7](https://github.com/torrentpier/torrentpier/commit/12ce6e783ec97a6c3df0e11273944a3e6cfe466d))
### ๐ Documentation
diff --git a/library/config.php b/library/config.php
index e9e31af30..e9ce4fe56 100644
--- a/library/config.php
+++ b/library/config.php
@@ -18,8 +18,8 @@ $reserved_port = env('TP_PORT', 80);
$bb_cfg = [];
// Version info
-$bb_cfg['tp_version'] = 'v2.4.6';
-$bb_cfg['tp_release_date'] = '19-06-2025';
+$bb_cfg['tp_version'] = 'v2.4.7';
+$bb_cfg['tp_release_date'] = '24-06-2025';
$bb_cfg['tp_release_codename'] = 'Cattle';
// Increase version number after changing JS or CSS
From 134b3dfa5cd8e8e5ce3f10912b58afecc4f118e0 Mon Sep 17 00:00:00 2001
From: Roman Kelesidis
Date: Thu, 26 Jun 2025 13:07:42 +0300
Subject: [PATCH 17/20] fix(redirect): add no-cache headers to prevent browser
caching of redirects (#2010)
---
library/includes/functions.php | 3 +++
1 file changed, 3 insertions(+)
diff --git a/library/includes/functions.php b/library/includes/functions.php
index 948208667..dde48be28 100644
--- a/library/includes/functions.php
+++ b/library/includes/functions.php
@@ -1450,6 +1450,9 @@ function redirect($url)
$redirect_url = $server_protocol . $server_name . $server_port . $script_name . preg_replace('#^\/?(.*?)\/?$#', '/\1', $url);
+ // Send no-cache headers to prevent browsers from caching redirects
+ send_no_cache_headers();
+
// Behave as per HTTP/1.1 spec for others
header('Location: ' . $redirect_url, response_code: 301);
exit;
From c2cbc77b144057d3d37cd58b635eabc6280fe137 Mon Sep 17 00:00:00 2001
From: Roman Kelesidis
Date: Thu, 26 Jun 2025 13:31:41 +0300
Subject: [PATCH 18/20] refactor: Use `DEFAULT_CHARSET` constant instead of
hardcoded string (#2011)
---
bt/announce.php | 4 ++--
bt/scrape.php | 4 ++--
2 files changed, 4 insertions(+), 4 deletions(-)
diff --git a/bt/announce.php b/bt/announce.php
index 91d9d1e23..245b7c0dd 100644
--- a/bt/announce.php
+++ b/bt/announce.php
@@ -117,7 +117,7 @@ $stopped = ($event === 'stopped');
// Check info_hash length
if (strlen($info_hash) !== 20) {
- msg_die('Invalid info_hash: ' . (mb_check_encoding($info_hash, 'UTF8') ? $info_hash : $info_hash_hex));
+ msg_die('Invalid info_hash: ' . (mb_check_encoding($info_hash, DEFAULT_CHARSET) ? $info_hash : $info_hash_hex));
}
/**
@@ -259,7 +259,7 @@ if ($lp_info) {
// Verify if torrent registered on tracker and user authorized
if (empty($row['topic_id'])) {
- msg_die('Torrent not registered, info_hash = ' . (mb_check_encoding($info_hash, 'UTF8') ? $info_hash : $info_hash_hex));
+ msg_die('Torrent not registered, info_hash = ' . (mb_check_encoding($info_hash, DEFAULT_CHARSET) ? $info_hash : $info_hash_hex));
}
if (empty($row['user_id'])) {
msg_die('Please LOG IN and RE-DOWNLOAD this torrent (user not found)');
diff --git a/bt/scrape.php b/bt/scrape.php
index 534cd57fd..e2c2676ec 100644
--- a/bt/scrape.php
+++ b/bt/scrape.php
@@ -34,7 +34,7 @@ $info_hash_hex = bin2hex($info_hash);
// Check info_hash length
if (strlen($info_hash) !== 20) {
- msg_die('Invalid info_hash: ' . (mb_check_encoding($info_hash, 'UTF8') ? $info_hash : $info_hash_hex));
+ msg_die('Invalid info_hash: ' . (mb_check_encoding($info_hash, DEFAULT_CHARSET) ? $info_hash : $info_hash_hex));
}
// Handle multiple hashes
@@ -99,7 +99,7 @@ if (!empty($info_hash_count)) {
// Verify if torrent registered on tracker
if (empty($torrents)) {
- msg_die('Torrent not registered, info_hash = ' . (mb_check_encoding($info_hash, 'UTF8') ? $info_hash : $info_hash_hex));
+ msg_die('Torrent not registered, info_hash = ' . (mb_check_encoding($info_hash, DEFAULT_CHARSET) ? $info_hash : $info_hash_hex));
}
die(\Arokettu\Bencode\Bencode::encode($torrents));
From a5fbc2ffc7389c30ffbb98d253ff8e936528fec1 Mon Sep 17 00:00:00 2001
From: Roman Kelesidis
Date: Sun, 29 Jun 2025 15:01:20 +0300
Subject: [PATCH 19/20] fix(TorrentFileList): Avoid `array_merge` reindexing
for numeric folder names (#2014)
Co-authored-by: zxc <17812947+metalwarrior88@users.noreply.github.com>
---
src/Legacy/TorrentFileList.php | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/src/Legacy/TorrentFileList.php b/src/Legacy/TorrentFileList.php
index fd600d015..32cc25ad6 100644
--- a/src/Legacy/TorrentFileList.php
+++ b/src/Legacy/TorrentFileList.php
@@ -54,7 +54,7 @@ class TorrentFileList
if ($this->multiple) {
if (!empty($this->files_ary['/'])) {
- $this->files_ary = array_merge($this->files_ary, $this->files_ary['/']);
+ $this->files_ary = $this->files_ary + $this->files_ary['/'];
unset($this->files_ary['/']);
}
$filelist = $html->array2html($this->files_ary);
From 76b191ff4129f2915b949ecb8dc919fe693ad6c2 Mon Sep 17 00:00:00 2001
From: Roman Kelesidis
Date: Mon, 30 Jun 2025 10:48:29 +0300
Subject: [PATCH 20/20] release: v2.4.8
---
CHANGELOG.md | 12 ++++++++++++
library/config.php | 4 ++--
2 files changed, 14 insertions(+), 2 deletions(-)
diff --git a/CHANGELOG.md b/CHANGELOG.md
index e2a8d061e..bf4b6a527 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -2,6 +2,18 @@
# ๐ Change Log
+## [v2.4.8](https://github.com/torrentpier/torrentpier/compare/v2.4.7..v2.4.8) (2025-06-30)
+
+### ๐ Bug Fixes
+
+- *(TorrentFileList)* Avoid `array_merge` reindexing for numeric folder names ([#2014](https://github.com/torrentpier/torrentpier/pull/2014)) - ([a5fbc2f](https://github.com/torrentpier/torrentpier/commit/a5fbc2ffc7389c30ffbb98d253ff8e936528fec1))
+- *(redirect)* Add no-cache headers to prevent browser caching of redirects ([#2010](https://github.com/torrentpier/torrentpier/pull/2010)) - ([134b3df](https://github.com/torrentpier/torrentpier/commit/134b3dfa5cd8e8e5ce3f10912b58afecc4f118e0))
+
+### ๐ Refactor
+
+- Use `DEFAULT_CHARSET` constant instead of hardcoded string ([#2011](https://github.com/torrentpier/torrentpier/pull/2011)) - ([c2cbc77](https://github.com/torrentpier/torrentpier/commit/c2cbc77b144057d3d37cd58b635eabc6280fe137))
+
+
## [v2.4.7](https://github.com/torrentpier/torrentpier/compare/v2.4.6..v2.4.7) (2025-06-24)
### ๐ Bug Fixes
diff --git a/library/config.php b/library/config.php
index e9ce4fe56..4d934bae0 100644
--- a/library/config.php
+++ b/library/config.php
@@ -18,8 +18,8 @@ $reserved_port = env('TP_PORT', 80);
$bb_cfg = [];
// Version info
-$bb_cfg['tp_version'] = 'v2.4.7';
-$bb_cfg['tp_release_date'] = '24-06-2025';
+$bb_cfg['tp_version'] = 'v2.4.8';
+$bb_cfg['tp_release_date'] = '30-06-2025';
$bb_cfg['tp_release_codename'] = 'Cattle';
// Increase version number after changing JS or CSS