From 6ac7194d43fc78eea80f235dbc43b07936efa7ac Mon Sep 17 00:00:00 2001 From: xiaomlove Date: Wed, 6 Apr 2022 21:32:57 +0800 Subject: [PATCH] fix bugs --- app/Console/Commands/Test.php | 17 +- app/Http/Middleware/Locale.php | 2 +- app/Repositories/AttendanceRepository.php | 16 +- app/Repositories/SearchRepository.php | 2 +- app/Repositories/TorrentRepository.php | 16 +- composer.json | 3 +- composer.lock | 586 +++++++++++++++++++++- config/database.php | 2 +- config/octane.php | 6 +- include/constants.php | 11 +- include/globalfunctions.php | 17 +- lang/chs/lang_functions.php | 4 +- lang/chs/lang_settings.php | 4 +- lang/cht/lang_functions.php | 4 +- lang/cht/lang_settings.php | 4 +- lang/en/lang_functions.php | 4 +- lang/en/lang_settings.php | 4 +- nexus/Database/NexusDB.php | 4 +- nexus/Nexus.php | 3 +- public/download.php | 7 +- public/downloadnotice.php | 9 +- 21 files changed, 659 insertions(+), 66 deletions(-) diff --git a/app/Console/Commands/Test.php b/app/Console/Commands/Test.php index 68610f06..d15915c0 100644 --- a/app/Console/Commands/Test.php +++ b/app/Console/Commands/Test.php @@ -35,6 +35,7 @@ use Illuminate\Support\Facades\Redis; use Illuminate\Support\Facades\Storage; use JeroenG\Explorer\Domain\Syntax\Matching; use JeroenG\Explorer\Infrastructure\Scout\ElasticEngine; +use Nexus\Database\NexusDB; use Rhilip\Bencode\Bencode; class Test extends Command @@ -70,11 +71,11 @@ class Test extends Command */ public function handle() { - $searchRep = new SearchRepository(); - $r = $searchRep->deleteIndex(); - $r = $searchRep->createIndex(); - $r = $searchRep->import(); - dd($r); +// $searchRep = new SearchRepository(); +// $r = $searchRep->deleteIndex(); +// $r = $searchRep->createIndex(); +// $r = $searchRep->import(); +// dd($r); // // $arr = [ // 'cat' => 'category', @@ -129,6 +130,12 @@ class Test extends Command // dd($today->diffInDays($yesterday)); // $r = get_smile(12); // dd($r); + +// $key = "dddd1"; +// $model = \App\Models\TorrentSecret::query()->where('id', 1)->first(); +// \Nexus\Database\NexusDB::cache_put($key, $model); + $value = NexusDB::cache_get("tracker_report_authkey_secret:1:10002"); + dd($value); } diff --git a/app/Http/Middleware/Locale.php b/app/Http/Middleware/Locale.php index 336179f6..c16902ca 100644 --- a/app/Http/Middleware/Locale.php +++ b/app/Http/Middleware/Locale.php @@ -31,7 +31,7 @@ class Locale /** @var Response $response */ $response = $next($request); - $response->header('Request-Id', nexus()->getRequestId()); + $response->header('Request-Id', nexus()->getRequestId())->header('Running-In-Octane', RUNNING_IN_OCTANE ? 1 : 0); return $response; } diff --git a/app/Repositories/AttendanceRepository.php b/app/Repositories/AttendanceRepository.php index 9e18aa2b..5fdc182a 100644 --- a/app/Repositories/AttendanceRepository.php +++ b/app/Repositories/AttendanceRepository.php @@ -167,10 +167,10 @@ class AttendanceRepository extends BaseRepository while (true) { $rows = $query->forPage($page, $size)->get(); $log = "sql: " . last_query() . ", count: " . $rows->count(); - do_log($log, 'info', app()->runningInConsole()); + do_log($log, 'info', isRunningInConsole()); if ($rows->isEmpty()) { $log = "no more data...."; - do_log($log, 'info', app()->runningInConsole()); + do_log($log, 'info', isRunningInConsole()); break; } foreach ($rows as $row) { @@ -182,7 +182,7 @@ class AttendanceRepository extends BaseRepository ->delete(); $log = "delete: $deleted by sql: " . last_query(); $deleteCounts += $deleted; - do_log($log, 'info', app()->runningInConsole()); + do_log($log, 'info', isRunningInConsole()); } while ($deleted > 0); } $page++; @@ -199,7 +199,7 @@ class AttendanceRepository extends BaseRepository public function migrateAttendanceLogs($uid = 0): int { $cleanUpCounts = $this->cleanup(); - do_log("cleanup count: $cleanUpCounts", 'info', app()->runningInConsole()); + do_log("cleanup count: $cleanUpCounts", 'info', isRunningInConsole()); $page = 1; $size = 10000; @@ -214,7 +214,7 @@ class AttendanceRepository extends BaseRepository $query->where('uid', $uid); } $result = $query->get(); - do_log("$logPrefix, " . last_query() . ", count: " . $result->count(), 'info', app()->runningInConsole()); + do_log("$logPrefix, " . last_query() . ", count: " . $result->count(), 'info', isRunningInConsole()); if ($result->isEmpty()) { do_log("$logPrefix, no more data..."); break; @@ -234,16 +234,16 @@ class AttendanceRepository extends BaseRepository $page++; } if (empty($insert)) { - do_log("no data to insert...", 'info', app()->runningInConsole()); + do_log("no data to insert...", 'info', isRunningInConsole()); return 0; } $sql = sprintf( - "insert into `%s` (`uid`, `points`, `date`) values %s on duplicate key update `points` = values(`points`)", + "insert into `%s` (`uid`, `points`, `date`) values %s on duplicate key update `uid` = values(`uid`)", $table, implode(',', $insert) ); NexusDB::statement($sql); $insertCount = count($insert); - do_log("[MIGRATE_ATTENDANCE_LOGS] DONE! insert sql: " . $sql, 'info', app()->runningInConsole()); + do_log("[MIGRATE_ATTENDANCE_LOGS] DONE! insert sql: " . $sql, 'info', isRunningInConsole()); return $insertCount; } diff --git a/app/Repositories/SearchRepository.php b/app/Repositories/SearchRepository.php index 9ac06763..dffb1f17 100644 --- a/app/Repositories/SearchRepository.php +++ b/app/Repositories/SearchRepository.php @@ -374,7 +374,7 @@ class SearchRepository extends BaseRepository if (isset($response['errors']) && $response['errors'] == true) { $msg .= var_export($response, true); } - do_log($msg, 'info', app()->runningInConsole()); + do_log($msg, 'info', isRunningInConsole()); } private function getTorrentId($id): string diff --git a/app/Repositories/TorrentRepository.php b/app/Repositories/TorrentRepository.php index 9c336486..b80a12e3 100644 --- a/app/Repositories/TorrentRepository.php +++ b/app/Repositories/TorrentRepository.php @@ -373,14 +373,13 @@ class TorrentRepository extends BaseRepository private function getTrackerReportAuthKeySecret($id, $uid, $initializeIfNotExists = false) { - $secret = NexusDB::remember("tracker_report_authkey_secret:$id:$uid", 3600*24, function () use ($id, $uid) { - return TorrentSecret::query() - ->where('uid', $uid) - ->whereIn('torrent_id', [0, $id]) - ->orderBy('torrent_id', 'desc') - ->orderBy('id', 'desc') - ->first(); - }); + $secret = TorrentSecret::query() + ->where('uid', $uid) + ->whereIn('torrent_id', [0, $id]) + ->orderBy('torrent_id', 'desc') + ->orderBy('id', 'desc') + ->first(); + if ($secret) { return $secret->secret; } @@ -390,6 +389,7 @@ class TorrentRepository extends BaseRepository 'torrent_id' => 0, 'secret' => Str::random(), ]; + do_log("[INSERT_TORRENT_SECRET] " . json_encode($insert)); TorrentSecret::query()->insert($insert); return $insert['secret']; } diff --git a/composer.json b/composer.json index 77934720..61f47c5d 100644 --- a/composer.json +++ b/composer.json @@ -43,7 +43,8 @@ "masbug/flysystem-google-drive-ext": "^2.0", "orangehill/iseed": "^3.0", "phpgangsta/googleauthenticator": "dev-master", - "rhilip/bencode": "^2.0" + "rhilip/bencode": "^2.0", + "spiral/roadrunner": "^2.8" }, "require-dev": { "spatie/laravel-ignition": "^1.0", diff --git a/composer.lock b/composer.lock index c75e1d42..2578bba4 100644 --- a/composer.lock +++ b/composer.lock @@ -4,7 +4,7 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "b02476e07cdf83dfaf5a0006876a4b6d", + "content-hash": "c2165ad329850252029a213cde98e131", "packages": [ { "name": "asm89/stack-cors", @@ -216,6 +216,93 @@ ], "time": "2021-10-28T20:44:15+00:00" }, + { + "name": "composer/semver", + "version": "3.3.1", + "source": { + "type": "git", + "url": "https://github.com/composer/semver.git", + "reference": "5d8e574bb0e69188786b8ef77d43341222a41a71" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/composer/semver/zipball/5d8e574bb0e69188786b8ef77d43341222a41a71", + "reference": "5d8e574bb0e69188786b8ef77d43341222a41a71", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] + }, + "require": { + "php": "^5.3.2 || ^7.0 || ^8.0" + }, + "require-dev": { + "phpstan/phpstan": "^1.4", + "symfony/phpunit-bridge": "^4.2 || ^5" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "3.x-dev" + } + }, + "autoload": { + "psr-4": { + "Composer\\Semver\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nils Adermann", + "email": "naderman@naderman.de", + "homepage": "http://www.naderman.de" + }, + { + "name": "Jordi Boggiano", + "email": "j.boggiano@seld.be", + "homepage": "http://seld.be" + }, + { + "name": "Rob Bast", + "email": "rob.bast@gmail.com", + "homepage": "http://robbast.nl" + } + ], + "description": "Semver library that offers utilities, version constraint parsing and validation.", + "keywords": [ + "semantic", + "semver", + "validation", + "versioning" + ], + "support": { + "irc": "irc://irc.freenode.org/composer", + "issues": "https://github.com/composer/semver/issues", + "source": "https://github.com/composer/semver/tree/3.3.1" + }, + "funding": [ + { + "url": "https://packagist.com", + "type": "custom" + }, + { + "url": "https://github.com/composer", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/composer/composer", + "type": "tidelift" + } + ], + "time": "2022-03-16T11:22:07+00:00" + }, { "name": "dflydev/dot-access-data", "version": "v3.0.1", @@ -5125,6 +5212,329 @@ }, "time": "2022-03-29T11:33:16+00:00" }, + { + "name": "spiral/goridge", + "version": "v3.1.2", + "source": { + "type": "git", + "url": "https://github.com/spiral/goridge-php.git", + "reference": "2c50b649b4296a3733f2ff5de339f41b9db57b04" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/spiral/goridge-php/zipball/2c50b649b4296a3733f2ff5de339f41b9db57b04", + "reference": "2c50b649b4296a3733f2ff5de339f41b9db57b04", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] + }, + "require": { + "ext-json": "*", + "ext-sockets": "*", + "php": ">=7.4", + "symfony/polyfill-php80": "^1.22" + }, + "require-dev": { + "google/protobuf": "^3.17", + "infection/infection": "^0.26.1", + "jetbrains/phpstorm-attributes": "^1.0", + "phpunit/phpunit": "^9.5", + "rybakit/msgpack": "^0.7", + "vimeo/psalm": "^4.18.1" + }, + "suggest": { + "ext-msgpack": "MessagePack codec support", + "ext-protobuf": "Protobuf codec support", + "google/protobuf": "(^3.0) Protobuf codec support", + "rybakit/msgpack": "(^0.7) MessagePack codec support" + }, + "type": "goridge", + "extra": { + "branch-alias": { + "dev-master": "3.2.x-dev" + } + }, + "autoload": { + "psr-4": { + "Spiral\\Goridge\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Anton Titov / Wolfy-J", + "email": "wolfy.jd@gmail.com" + } + ], + "description": "High-performance PHP-to-Golang RPC bridge", + "support": { + "issues": "https://github.com/spiral/goridge-php/issues", + "source": "https://github.com/spiral/goridge-php/tree/v3.1.2" + }, + "time": "2022-01-13T08:13:33+00:00" + }, + { + "name": "spiral/roadrunner", + "version": "v2.8.7", + "source": { + "type": "git", + "url": "https://github.com/roadrunner-server/roadrunner.git", + "reference": "de7b748278b9b626aa1dcf608b916a2b4e342f9b" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/roadrunner-server/roadrunner/zipball/de7b748278b9b626aa1dcf608b916a2b4e342f9b", + "reference": "de7b748278b9b626aa1dcf608b916a2b4e342f9b", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] + }, + "require": { + "spiral/roadrunner-cli": "^2.0", + "spiral/roadrunner-http": "^2.0", + "spiral/roadrunner-worker": "^2.0" + }, + "type": "metapackage", + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Anton Titov / Wolfy-J", + "email": "wolfy.jd@gmail.com" + }, + { + "name": "RoadRunner Community", + "homepage": "https://github.com/roadrunner-server/roadrunner/graphs/contributors" + } + ], + "description": "RoadRunner: High-performance PHP application server, load-balancer and process manager written in Golang", + "support": { + "issues": "https://github.com/roadrunner-server/roadrunner/issues", + "source": "https://github.com/roadrunner-server/roadrunner/tree/v2.8.7" + }, + "time": "2022-03-24T15:28:39+00:00" + }, + { + "name": "spiral/roadrunner-cli", + "version": "v2.1.0", + "source": { + "type": "git", + "url": "https://github.com/spiral/roadrunner-cli.git", + "reference": "8a42aeed24939c64bccbaa179d473f9c57393dc1" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/spiral/roadrunner-cli/zipball/8a42aeed24939c64bccbaa179d473f9c57393dc1", + "reference": "8a42aeed24939c64bccbaa179d473f9c57393dc1", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] + }, + "require": { + "composer/semver": "^3.2", + "ext-json": "*", + "php": ">=7.4", + "spiral/roadrunner-worker": ">=2.0.2", + "symfony/console": "^4.4|^5.0|^6.0", + "symfony/http-client": "^4.4|^5.0|^6.0", + "symfony/polyfill-php80": "^1.22" + }, + "require-dev": { + "jetbrains/phpstorm-attributes": "^1.0", + "symfony/var-dumper": "^4.4|^5.0", + "vimeo/psalm": "^4.4" + }, + "bin": [ + "bin/rr" + ], + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.1.x-dev" + } + }, + "autoload": { + "psr-4": { + "Spiral\\RoadRunner\\Console\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Anton Titov (wolfy-j)", + "email": "wolfy-j@spiralscout.com" + }, + { + "name": "RoadRunner Community", + "homepage": "https://github.com/spiral/roadrunner/graphs/contributors" + } + ], + "description": "RoadRunner: Command Line Interface", + "support": { + "issues": "https://github.com/spiral/roadrunner-cli/issues", + "source": "https://github.com/spiral/roadrunner-cli/tree/v2.1.0" + }, + "time": "2022-01-20T07:51:22+00:00" + }, + { + "name": "spiral/roadrunner-http", + "version": "v2.0.4", + "source": { + "type": "git", + "url": "https://github.com/spiral/roadrunner-http.git", + "reference": "2d76b779fba35036f3e8861dec2dad200a557970" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/spiral/roadrunner-http/zipball/2d76b779fba35036f3e8861dec2dad200a557970", + "reference": "2d76b779fba35036f3e8861dec2dad200a557970", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] + }, + "require": { + "ext-json": "*", + "php": ">=7.4", + "psr/http-factory": "^1.0.1", + "psr/http-message": "^1.0.1", + "spiral/roadrunner-worker": "^2.0" + }, + "require-dev": { + "jetbrains/phpstorm-attributes": "^1.0", + "nyholm/psr7": "^1.3", + "phpstan/phpstan": "~0.12", + "phpunit/phpunit": "~8.0", + "symfony/var-dumper": "^5.1", + "vimeo/psalm": "^4.4" + }, + "suggest": { + "spiral/roadrunner-cli": "Provides RoadRunner installation and management CLI tools" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.1.x-dev" + } + }, + "autoload": { + "psr-4": { + "Spiral\\RoadRunner\\Http\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Anton Titov / Wolfy-J", + "email": "wolfy.jd@gmail.com" + }, + { + "name": "RoadRunner Community", + "homepage": "https://github.com/spiral/roadrunner/graphs/contributors" + } + ], + "description": "RoadRunner: HTTP and PSR-7 worker", + "support": { + "issues": "https://github.com/spiral/roadrunner-http/issues", + "source": "https://github.com/spiral/roadrunner-http/tree/v2.0.4" + }, + "time": "2021-09-29T11:28:39+00:00" + }, + { + "name": "spiral/roadrunner-worker", + "version": "v2.1.5", + "source": { + "type": "git", + "url": "https://github.com/spiral/roadrunner-worker.git", + "reference": "2247e374736506f5cf32295e15bee74b8e582031" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/spiral/roadrunner-worker/zipball/2247e374736506f5cf32295e15bee74b8e582031", + "reference": "2247e374736506f5cf32295e15bee74b8e582031", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] + }, + "require": { + "composer-runtime-api": "^2.0", + "ext-json": "*", + "ext-sockets": "*", + "php": ">=7.4", + "psr/log": "^1.0|^2.0|^3.0", + "spiral/goridge": "^3.0", + "symfony/polyfill-php80": "^1.23" + }, + "require-dev": { + "jetbrains/phpstorm-attributes": "^1.0", + "symfony/var-dumper": "^5.1", + "vimeo/psalm": "^4.4" + }, + "suggest": { + "spiral/roadrunner-cli": "Provides RoadRunner installation and management CLI tools" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.1.x-dev" + } + }, + "autoload": { + "psr-4": { + "Spiral\\RoadRunner\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Anton Titov (wolfy-j)", + "email": "wolfy-j@spiralscout.com" + }, + { + "name": "RoadRunner Community", + "homepage": "https://github.com/spiral/roadrunner/graphs/contributors" + } + ], + "description": "RoadRunner: PHP worker", + "support": { + "issues": "https://github.com/spiral/roadrunner-worker/issues", + "source": "https://github.com/spiral/roadrunner-worker/tree/v2.1.5" + }, + "time": "2021-11-30T08:54:52+00:00" + }, { "name": "symfony/console", "version": "v6.0.5", @@ -5688,6 +6098,180 @@ ], "time": "2022-01-26T17:23:29+00:00" }, + { + "name": "symfony/http-client", + "version": "v6.0.5", + "source": { + "type": "git", + "url": "https://github.com/symfony/http-client.git", + "reference": "a8f87328930932c455cffd048f965d1223d91915" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/http-client/zipball/a8f87328930932c455cffd048f965d1223d91915", + "reference": "a8f87328930932c455cffd048f965d1223d91915", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] + }, + "require": { + "php": ">=8.0.2", + "psr/log": "^1|^2|^3", + "symfony/http-client-contracts": "^3", + "symfony/service-contracts": "^1.0|^2|^3" + }, + "provide": { + "php-http/async-client-implementation": "*", + "php-http/client-implementation": "*", + "psr/http-client-implementation": "1.0", + "symfony/http-client-implementation": "3.0" + }, + "require-dev": { + "amphp/amp": "^2.5", + "amphp/http-client": "^4.2.1", + "amphp/http-tunnel": "^1.0", + "amphp/socket": "^1.1", + "guzzlehttp/promises": "^1.4", + "nyholm/psr7": "^1.0", + "php-http/httplug": "^1.0|^2.0", + "psr/http-client": "^1.0", + "symfony/dependency-injection": "^5.4|^6.0", + "symfony/http-kernel": "^5.4|^6.0", + "symfony/process": "^5.4|^6.0", + "symfony/stopwatch": "^5.4|^6.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\HttpClient\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Provides powerful methods to fetch HTTP resources synchronously or asynchronously", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/http-client/tree/v6.0.5" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2022-02-27T08:47:28+00:00" + }, + { + "name": "symfony/http-client-contracts", + "version": "v3.0.1", + "source": { + "type": "git", + "url": "https://github.com/symfony/http-client-contracts.git", + "reference": "f7525778c712be78ad5b6ca31f47fdcfd404c280" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/http-client-contracts/zipball/f7525778c712be78ad5b6ca31f47fdcfd404c280", + "reference": "f7525778c712be78ad5b6ca31f47fdcfd404c280", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] + }, + "require": { + "php": ">=8.0.2" + }, + "suggest": { + "symfony/http-client-implementation": "" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "3.0-dev" + }, + "thanks": { + "name": "symfony/contracts", + "url": "https://github.com/symfony/contracts" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Contracts\\HttpClient\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Generic abstractions related to HTTP clients", + "homepage": "https://symfony.com", + "keywords": [ + "abstractions", + "contracts", + "decoupling", + "interfaces", + "interoperability", + "standards" + ], + "support": { + "source": "https://github.com/symfony/http-client-contracts/tree/v3.0.1" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2022-03-13T20:10:05+00:00" + }, { "name": "symfony/http-foundation", "version": "v6.0.7", diff --git a/config/database.php b/config/database.php index aeabec6f..94f16040 100644 --- a/config/database.php +++ b/config/database.php @@ -123,7 +123,7 @@ return [ 'options' => [ 'cluster' => env('REDIS_CLUSTER', 'redis'), - 'prefix' => env('REDIS_PREFIX', Str::slug(env('APP_NAME', 'laravel'), '_').'_database_'), + 'prefix' => '', ], 'default' => [ diff --git a/config/octane.php b/config/octane.php index e05c6479..72b82d78 100644 --- a/config/octane.php +++ b/config/octane.php @@ -35,7 +35,7 @@ return [ | */ - 'server' => env('OCTANE_SERVER', 'swoole'), + 'server' => env('OCTANE_SERVER', 'roadrunner'), /* |-------------------------------------------------------------------------- @@ -74,11 +74,11 @@ return [ ], RequestHandled::class => [ - // + ], RequestTerminated::class => [ - // + ], TaskReceived::class => [ diff --git a/include/constants.php b/include/constants.php index 7319127c..353adae1 100644 --- a/include/constants.php +++ b/include/constants.php @@ -9,9 +9,12 @@ defined('VERSION') || define("VERSION","Powered by ". defined('THISTRACKER') || define("THISTRACKER","General"); defined('ROOT_PATH') || define('ROOT_PATH', dirname(__DIR__) . '/'); if (!defined('RUNNING_IN_OCTANE')) { - if (!empty($_SERVER['PWD']) && str_contains($_SERVER['PWD'], 'vendor/laravel/octane/bin')) { - define('RUNNING_IN_OCTANE', true); - } else { - define('RUNNING_IN_OCTANE', false); + $runningInOctane = false; + foreach (($_SERVER['argv'] ?? []) as $command) { + if (preg_match('/swoole|roadrunner/i', $command)) { + $runningInOctane = true; + break; + } } + define('RUNNING_IN_OCTANE', $runningInOctane); } diff --git a/include/globalfunctions.php b/include/globalfunctions.php index 3b9a72a9..919d3efc 100644 --- a/include/globalfunctions.php +++ b/include/globalfunctions.php @@ -181,15 +181,20 @@ function do_log($log, $level = 'info', $echo = false) if (($fd = fopen($logFile, 'a')) === false) { $fd = fopen(sys_get_temp_dir() . '/nexus.log', 'a'); } + $uid = 0; if (IN_NEXUS) { global $CURUSER; $user = $CURUSER; $uid = $user['id'] ?? 0; $passkey = $user['passkey'] ?? $_REQUEST['passkey'] ?? $_REQUEST['authkey'] ?? ''; } else { - $user = \Illuminate\Support\Facades\Auth::user(); - $uid = $user->id ?? 0; - $passkey = $user->passkey ?? request('passkey', request('authkey', '')); + try { + $user = \Illuminate\Support\Facades\Auth::user(); + $uid = $user->id ?? 0; + $passkey = $user->passkey ?? request('passkey', request('authkey', '')); + } catch (\Throwable $exception) { + $passkey = "!IN_NEXUS:" . $exception->getMessage(); + } } $backtrace = debug_backtrace(DEBUG_BACKTRACE_IGNORE_ARGS, 2); $content = sprintf( @@ -225,11 +230,7 @@ function getLogFile() if (!is_null($logFile)) { return $logFile; } - if (IN_NEXUS) { - $config = nexus_config('nexus'); - } else { - $config = config('nexus'); - } + $config = nexus_config('nexus'); $logFile = sys_get_temp_dir() . '/nexus_' . date('Y-m-d') . '.log'; if (!empty($config['log_file'])) { $logFile = $config['log_file']; diff --git a/lang/chs/lang_functions.php b/lang/chs/lang_functions.php index cbe0bb7f..feed7f62 100644 --- a/lang/chs/lang_functions.php +++ b/lang/chs/lang_functions.php @@ -316,8 +316,8 @@ $lang_functions = array 'text_tag_hdr' => 'HDR', 'text_required' => '不能为空', 'text_invalid' => '非法', - 'text_technical_info' => '技术信息', - 'text_technical_info_help_text' => '文件技术信息来自软件 MediaInfo,用该软件打开文件,点击菜单视图(View)->文件(Text),在框中右键->全选,再右键->复制,粘贴到这里来。', + 'text_technical_info' => 'MediaInfo', + 'text_technical_info_help_text' => '文件 MediaInfo 来自软件 MediaInfo,用该软件打开文件,点击菜单视图(View)->文件(Text),在框中右键->全选,再右键->复制,粘贴到这里来。', 'text_management_system' => '管理系统', 'text_seed_points' => '做种积分', ); diff --git a/lang/chs/lang_settings.php b/lang/chs/lang_settings.php index 0d15a678..265fe194 100644 --- a/lang/chs/lang_settings.php +++ b/lang/chs/lang_settings.php @@ -706,8 +706,8 @@ $lang_settings = array 'text_login_secret_lifetime_unit' => '分钟', 'row_login_secret_lifetime' => '登录密钥有效期', 'text_login_secret_lifetime_deadline' => '当前密钥有效期至', - 'row_enable_technical_info' => '启用技术信息', - 'text_enable_technical_info' => "默认'否'。技术信息来自软件 MediaInfo Text 视图的结果", + 'row_enable_technical_info' => '启用 MediaInfo', + 'text_enable_technical_info' => "默认'否'。MediaInfo 来自软件 MediaInfo Text 视图的结果", 'row_sticky_first_level_background_color' => '一级置顶背景颜色', 'text_sticky_first_level_background_color_note' => '一级置顶背景颜色,不设置则无背景色。', 'row_sticky_second_level_background_color' => '二级置顶背景颜色', diff --git a/lang/cht/lang_functions.php b/lang/cht/lang_functions.php index 529b9f7d..3b5fb11f 100644 --- a/lang/cht/lang_functions.php +++ b/lang/cht/lang_functions.php @@ -317,8 +317,8 @@ $lang_functions = array 'text_tag_hdr' => 'HDR', 'text_required' => '不能為空', 'text_invalid' => '非法', - 'text_technical_info' => '技術信息', - 'text_technical_info_help_text' => '文件技術信息來自軟件 MediaInfo,用該軟件打開文件,點擊菜單視圖(View)->文件(Text),在框中右鍵->全選,再右鍵->復制,粘貼到這裏來。', + 'text_technical_info' => 'MediaInfo', + 'text_technical_info_help_text' => '文件 MediaInfo 來自軟件 MediaInfo,用該軟件打開文件,點擊菜單視圖(View)->文件(Text),在框中右鍵->全選,再右鍵->復制,粘貼到這裏來。', 'text_management_system' => '管理系統', 'text_seed_points' => '做種積分', ); diff --git a/lang/cht/lang_settings.php b/lang/cht/lang_settings.php index 80f85888..788bbd13 100644 --- a/lang/cht/lang_settings.php +++ b/lang/cht/lang_settings.php @@ -705,8 +705,8 @@ $lang_settings = array 'text_login_secret_lifetime_unit' => '分鐘', 'row_login_secret_lifetime' => '登錄密鑰有效期', 'text_login_secret_lifetime_deadline' => '當前密鑰有效期至', - 'row_enable_technical_info' => '啟用技術信息', - 'text_enable_technical_info' => "默認'否'。技術信息來自軟件 MediaInfo Text 視圖的結果", + 'row_enable_technical_info' => '啟用 MediaInfo', + 'text_enable_technical_info' => "默認'否'。MediaInfo 來自軟件 MediaInfo Text 視圖的結果", 'row_sticky_first_level_background_color' => '一級置頂背景顏色', 'text_sticky_first_level_background_color_note' => '一級置頂背景顏色,不設置則無背景色。', 'row_sticky_second_level_background_color' => '二級置頂背景顏色', diff --git a/lang/en/lang_functions.php b/lang/en/lang_functions.php index 0f027bf8..9355ffa1 100644 --- a/lang/en/lang_functions.php +++ b/lang/en/lang_functions.php @@ -318,8 +318,8 @@ $lang_functions = array 'text_tag_hdr' => 'HDR', 'text_required' => 'Required', 'text_invalid' => 'Invalid', - 'text_technical_info' => 'Technical Info', - 'text_technical_info_help_text' => 'Technical Information comes from software MediaInfo,open file, click the view menu > text > right click in the box > select all > copy > past into this box.', + 'text_technical_info' => 'MediaInfo', + 'text_technical_info_help_text' => 'MediaInfo comes from software MediaInfo,open file, click the view menu > text > right click in the box > select all > copy > past into this box.', 'text_management_system' => 'Management system', 'text_seed_points' => 'Seed points', ); diff --git a/lang/en/lang_settings.php b/lang/en/lang_settings.php index 25713877..4f72eeb5 100644 --- a/lang/en/lang_settings.php +++ b/lang/en/lang_settings.php @@ -705,8 +705,8 @@ $lang_settings = array 'text_login_secret_lifetime_unit' => 'minute', 'row_login_secret_lifetime' => 'Login secret lifetime', 'text_login_secret_lifetime_deadline' => 'Current login secret deadline', - 'row_enable_technical_info' => 'Enable Technical Information', - 'text_enable_technical_info' => "Default 'No'. Technical Information comes from software MediaInfo Text view", + 'row_enable_technical_info' => 'Enable MediaInfo', + 'text_enable_technical_info' => "Default 'No'. MediaInfo comes from software MediaInfo Text view", 'row_sticky_first_level_background_color' => 'Sticky first level bg color', 'text_sticky_first_level_background_color_note' => 'Sticky first level bg color, it will be none if not set.', 'row_sticky_second_level_background_color' => 'Sticky second level bg color', diff --git a/nexus/Database/NexusDB.php b/nexus/Database/NexusDB.php index 2e45faf0..c434677b 100644 --- a/nexus/Database/NexusDB.php +++ b/nexus/Database/NexusDB.php @@ -275,11 +275,11 @@ class NexusDB global $Cache; $result = $Cache->get_value($key); if ($result === false) { - do_log("cache miss [$key], get from database."); $result = $callback(); + do_log("cache miss [$key]" ); $Cache->cache_value($key, $result, $ttl); } else { - do_log("cache hit [$key]."); + do_log("cache hit [$key]"); } return $result; } else { diff --git a/nexus/Nexus.php b/nexus/Nexus.php index b068c687..e4a229b1 100644 --- a/nexus/Nexus.php +++ b/nexus/Nexus.php @@ -113,8 +113,10 @@ final class Nexus public static function boot() { if (self::$booted) { +// file_put_contents('/tmp/reset.log', "booted\n",FILE_APPEND); return; } +// file_put_contents('/tmp/reset.log', "booting\n",FILE_APPEND); $instance = new self(); $instance->setStartTimestamp(); $instance->setRequestId(); @@ -127,7 +129,6 @@ final class Nexus public static function flush() { self::$booted = false; - } private function setRequestId() diff --git a/public/download.php b/public/download.php index d4470851..7fcff3ab 100644 --- a/public/download.php +++ b/public/download.php @@ -44,15 +44,15 @@ if (!empty($_REQUEST['downhash'])) { $letdown = intval($_GET['letdown'] ?? 0); if (!$letdown && $CURUSER['showdlnotice'] == 1) { - header("Location: " . get_protocol_prefix() . "$BASEURL/downloadnotice.php?torrentid=".$id."&type=firsttime"); + nexus_redirect(getSchemeAndHttpHost() . "/downloadnotice.php?torrentid=".$id."&type=firsttime"); } elseif (!$letdown && $CURUSER['showclienterror'] == 'yes') { - header("Location: " . get_protocol_prefix() . "$BASEURL/downloadnotice.php?torrentid=".$id."&type=client"); + nexus_redirect(getSchemeAndHttpHost() . "/downloadnotice.php?torrentid=".$id."&type=client"); } elseif (!$letdown && $CURUSER['leechwarn'] == 'yes') { - header("Location: " . get_protocol_prefix() . "$BASEURL/downloadnotice.php?torrentid=".$id."&type=ratio"); + nexus_redirect(getSchemeAndHttpHost() . "/downloadnotice.php?torrentid=".$id."&type=ratio"); } } //User may choose to download torrent from RSS. So log ip changes when downloading torrents. @@ -113,7 +113,6 @@ if (strlen($CURUSER['passkey']) != 32) { $CURUSER['passkey'] = md5($CURUSER['username'].date("Y-m-d H:i:s").$CURUSER['passhash']); sql_query("UPDATE users SET passkey=".sqlesc($CURUSER['passkey'])." WHERE id=".sqlesc($CURUSER['id'])); } - $trackerReportAuthKey = $torrentRep->getTrackerReportAuthKey($id, $CURUSER['id'], true); $dict = \Rhilip\Bencode\Bencode::load($fn); $dict['announce'] = $ssl_torrent . $base_announce_url . "?authkey=$trackerReportAuthKey"; diff --git a/public/downloadnotice.php b/public/downloadnotice.php index f6b05b1a..235d9a74 100644 --- a/public/downloadnotice.php +++ b/public/downloadnotice.php @@ -15,21 +15,18 @@ if ($_SERVER["REQUEST_METHOD"] == "POST") if ($hidenotice){ sql_query("UPDATE users SET showdlnotice=0 WHERE id=".sqlesc($CURUSER['id'])); } - header("Location: " . get_protocol_prefix() . "$BASEURL/download.php?id=".$torrentid."&letdown=1"); - die; + nexus_redirect(getSchemeAndHttpHost(). "/download.php?id=".$torrentid."&letdown=1"); } elseif ($type == 'client') { if ($hidenotice){ sql_query("UPDATE users SET showclienterror='no' WHERE id=".sqlesc($CURUSER['id'])); } - header("Location: " . get_protocol_prefix() . "$BASEURL/download.php?id=".$torrentid."&letdown=1"); - die; + nexus_redirect(getSchemeAndHttpHost() . "/download.php?id=".$torrentid."&letdown=1"); } else { - header("Location: " . get_protocol_prefix() . "$BASEURL/download.php?id=".$torrentid."&letdown=1"); - die; + nexus_redirect(getSchemeAndHttpHost() . "/download.php?id=".$torrentid."&letdown=1"); } } else