encrypt download url

This commit is contained in:
xiaomlove
2021-06-01 23:33:28 +08:00
parent 87817de415
commit 0852509084
5 changed files with 55 additions and 4 deletions
+5 -2
View File
@@ -7,6 +7,7 @@ use App\Models\ExamProgress;
use App\Models\ExamUser; use App\Models\ExamUser;
use App\Models\User; use App\Models\User;
use App\Repositories\ExamRepository; use App\Repositories\ExamRepository;
use App\Repositories\TorrentRepository;
use Carbon\Carbon; use Carbon\Carbon;
use Illuminate\Console\Command; use Illuminate\Console\Command;
use Illuminate\Support\Facades\DB; use Illuminate\Support\Facades\DB;
@@ -61,8 +62,10 @@ class Test extends Command
// $r = $disk->put('/', base_path('composer.json')); // $r = $disk->put('/', base_path('composer.json'));
// $r = DB::table('users')->where('id', 1)->update(['modcomment' => DB::raw("concat_ws(',', 'ddddd', modcomment)")]); // $r = DB::table('users')->where('id', 1)->update(['modcomment' => DB::raw("concat_ws(',', 'ddddd', modcomment)")]);
$r = format_description('[em4] [em27]'); $rep = new TorrentRepository();
dd($r); $r1 = $rep->encryptDownHash(1, 1);
$r2 = $rep->decryptDownHash($r1);
dd($r1, $r2);
} }
} }
+5 -1
View File
@@ -2,11 +2,14 @@
namespace App\Repositories; namespace App\Repositories;
use Illuminate\Encryption\Encrypter;
use Illuminate\Support\Str; use Illuminate\Support\Str;
class BaseRepository class BaseRepository
{ {
protected function getSortFieldAndType(array $params) private static $enctyper;
protected function getSortFieldAndType(array $params): array
{ {
$field = $params['sort_field'] ?? 'id'; $field = $params['sort_field'] ?? 'id';
$type = 'desc'; $type = 'desc';
@@ -15,4 +18,5 @@ class BaseRepository
} }
return [$field, $type]; return [$field, $type];
} }
} }
+17
View File
@@ -2,11 +2,14 @@
namespace App\Repositories; namespace App\Repositories;
use App\Models\Setting; use App\Models\Setting;
use Illuminate\Encryption\Encrypter;
use Illuminate\Support\Facades\DB; use Illuminate\Support\Facades\DB;
use Illuminate\Support\Facades\Storage; use Illuminate\Support\Facades\Storage;
use Illuminate\Support\Str;
class ToolRepository extends BaseRepository class ToolRepository extends BaseRepository
{ {
private static $encrypter;
public function backupWeb(): array public function backupWeb(): array
{ {
@@ -142,4 +145,18 @@ class ToolRepository extends BaseRepository
do_log("Final result: " . json_encode($backupResult)); do_log("Final result: " . json_encode($backupResult));
return $backupResult; return $backupResult;
} }
public function getEncrypter(): Encrypter
{
if (!is_null(self::$encrypter)) {
return self::$encrypter;
}
$key = nexus_env('APP_KEY');
$prefix = 'base64:';
if (Str::startsWith($key,$prefix)) {
$key = substr($key, strlen($prefix));
$key = base64_decode($key);
}
return self::$encrypter = new Encrypter($key, 'AES-256-CBC');
}
} }
+19
View File
@@ -254,4 +254,23 @@ class TorrentRepository extends BaseRepository
return "$speed/s"; return "$speed/s";
} }
public function encryptDownHash($id, $uid): string
{
$toolRep = new ToolRepository();
$payload = [
'id' => $id,
'uid' => $uid,
'date' => date('Ymd'),
];
return $toolRep->getEncrypter()->encrypt($payload);
}
public function decryptDownHash($downHash)
{
$toolRep = new ToolRepository();
return $toolRep->getEncrypter()->decrypt($downHash);
}
} }
+9 -1
View File
@@ -423,9 +423,12 @@ function isHttps()
function getSchemeAndHttpHost() function getSchemeAndHttpHost()
{ {
global $BASEURL;
if (isRunningInConsole()) {
return $BASEURL;
}
$isHttps = isHttps(); $isHttps = isHttps();
$protocol = $isHttps ? 'https' : 'http'; $protocol = $isHttps ? 'https' : 'http';
$port = $_SERVER['SERVER_PORT'];
$result = "$protocol://" . $_SERVER['HTTP_HOST']; $result = "$protocol://" . $_SERVER['HTTP_HOST'];
return $result; return $result;
@@ -574,3 +577,8 @@ function nexus_trans($key, $replace = [], $locale = null)
} }
return $result; return $result;
} }
function isRunningInConsole(): bool
{
return php_sapi_name() == 'cli';
}