port patches
dockers/pixelfed/pipeline/head There was a failure building this commit Details

This commit is contained in:
chris 2024-04-06 11:47:38 +02:00
parent dd3488fa0c
commit 1f8db65cbc
6 changed files with 99 additions and 69 deletions

View File

@ -1,22 +1,24 @@
From f2d5017497ba69f0e7f364640f3e04b18e8373e9 Mon Sep 17 00:00:00 2001 From 9472451aa9abd8476dc7b7c8852bd139a8ccda89 Mon Sep 17 00:00:00 2001
From: chris <cg@zknt.org> From: chris <cg@zknt.org>
Date: Tue, 12 Mar 2024 17:07:10 +0100 Date: Sat, 6 Apr 2024 11:37:29 +0200
Subject: [PATCH 1/6] remove IP logging Subject: [PATCH 1/6] remove IP logging
Replace unneeded logging of IPs and User-Agent strings with meaningless static data. Replace unneeded logging of IPs and User-Agent strings with hashed data.
--- ---
app/Http/Controllers/Api/ApiV1Dot1Controller.php | 16 ++++++++-------- app/Http/Controllers/Api/ApiV1Dot1Controller.php | 12 ++++++------
app/Http/Controllers/Auth/LoginController.php | 4 ++-- app/Http/Controllers/Auth/LoginController.php | 4 ++--
app/Http/Controllers/RemoteAuthController.php | 4 ++-- app/Http/Controllers/Auth/RegisterController.php | 2 +-
app/Http/Controllers/SeasonalController.php | 4 ++-- app/Http/Controllers/CuratedRegisterController.php | 2 +-
app/Http/Controllers/Settings/HomeSettings.php | 8 ++++---- app/Http/Controllers/RemoteAuthController.php | 4 ++--
.../Controllers/UserEmailForgotController.php | 4 ++-- app/Http/Controllers/SeasonalController.php | 4 ++--
app/Listeners/AuthLogin.php | 4 ++-- app/Http/Controllers/Settings/HomeSettings.php | 8 ++++----
app/Listeners/LogFailedLogin.php | 4 ++-- app/Http/Controllers/UserEmailForgotController.php | 4 ++--
8 files changed, 24 insertions(+), 24 deletions(-) app/Listeners/AuthLogin.php | 4 ++--
app/Listeners/LogFailedLogin.php | 4 ++--
10 files changed, 24 insertions(+), 24 deletions(-)
diff --git a/app/Http/Controllers/Api/ApiV1Dot1Controller.php b/app/Http/Controllers/Api/ApiV1Dot1Controller.php diff --git a/app/Http/Controllers/Api/ApiV1Dot1Controller.php b/app/Http/Controllers/Api/ApiV1Dot1Controller.php
index 6d051866..e75b3a1e 100644 index 6d051866..7c2e0b9d 100644
--- a/app/Http/Controllers/Api/ApiV1Dot1Controller.php --- a/app/Http/Controllers/Api/ApiV1Dot1Controller.php
+++ b/app/Http/Controllers/Api/ApiV1Dot1Controller.php +++ b/app/Http/Controllers/Api/ApiV1Dot1Controller.php
@@ -285,8 +285,8 @@ class ApiV1Dot1Controller extends Controller @@ -285,8 +285,8 @@ class ApiV1Dot1Controller extends Controller
@ -25,8 +27,8 @@ index 6d051866..e75b3a1e 100644
$log->link = null; $log->link = null;
- $log->ip_address = $request->ip(); - $log->ip_address = $request->ip();
- $log->user_agent = $request->userAgent(); - $log->user_agent = $request->userAgent();
+ $log->ip_address = "127.0.0.23"; + $log->ip_address = sha1($request->ip());
+ $log->user_agent = "Pixelfed.de"; + $log->user_agent = sha1($request->userAgent());
$log->save(); $log->save();
Mail::to($request->user())->send(new PasswordChange($user)); Mail::to($request->user())->send(new PasswordChange($user));
@ -35,27 +37,16 @@ index 6d051866..e75b3a1e 100644
} }
$agent = new Agent(); $agent = new Agent();
- $currentIp = $request->ip(); - $currentIp = $request->ip();
+ $currentIp = "127.0.0.23"; + $currentIp = sha1($request->ip());
$activity = AccountLog::whereUserId($user->id) $activity = AccountLog::whereUserId($user->id)
->whereAction('auth.login') ->whereAction('auth.login')
@@ -323,8 +323,8 @@ class ApiV1Dot1Controller extends Controller
return [
'id' => $item->id,
'action' => $item->action,
- 'ip' => $item->ip_address,
- 'ip_current' => $item->ip_address === $currentIp,
+ 'ip' => "127.0.0.23",
+ 'ip_current' => "127.0.0.23" === $currentIp,
'is_mobile' => $agent->isMobile(),
'device' => $agent->device(),
'browser' => $agent->browser(),
@@ -487,7 +487,7 @@ class ApiV1Dot1Controller extends Controller @@ -487,7 +487,7 @@ class ApiV1Dot1Controller extends Controller
abort_if(BouncerService::checkIp($request->ip()), 404); abort_if(BouncerService::checkIp($request->ip()), 404);
} }
- $rl = RateLimiter::attempt('pf:apiv1.1:iar:'.$request->ip(), config('pixelfed.app_registration_rate_limit_attempts', 3), function(){}, config('pixelfed.app_registration_rate_limit_decay', 1800)); - $rl = RateLimiter::attempt('pf:apiv1.1:iar:'.$request->ip(), config('pixelfed.app_registration_rate_limit_attempts', 3), function(){}, config('pixelfed.app_registration_rate_limit_decay', 1800));
+ $rl = RateLimiter::attempt('pf:apiv1.1:iar:'.Str::Random(10), config('pixelfed.app_registration_rate_limit_attempts', 3), function(){}, config('pixelfed.app_registration_rate_limit_decay', 1800)); + $rl = RateLimiter::attempt('pf:apiv1.1:iar:'.sha1($request->ip()), config('pixelfed.app_registration_rate_limit_attempts', 3), function(){}, config('pixelfed.app_registration_rate_limit_decay', 1800));
abort_if(!$rl, 400, 'Too many requests'); abort_if(!$rl, 400, 'Too many requests');
$this->validate($request, [ $this->validate($request, [
@ -64,7 +55,7 @@ index 6d051866..e75b3a1e 100644
$user->password = Hash::make($password); $user->password = Hash::make($password);
$user->register_source = 'app'; $user->register_source = 'app';
- $user->app_register_ip = $request->ip(); - $user->app_register_ip = $request->ip();
+ $user->app_register_ip = "127.0.0.23"; + $user->app_register_ip = sha1($request->ip());
$user->app_register_token = Str::random(40); $user->app_register_token = Str::random(40);
$user->save(); $user->save();
@ -73,12 +64,12 @@ index 6d051866..e75b3a1e 100644
} }
- $rl = RateLimiter::attempt('pf:apiv1.1:iarc:'.$request->ip(), config('pixelfed.app_registration_confirm_rate_limit_attempts', 20), function(){}, config('pixelfed.app_registration_confirm_rate_limit_decay', 1800)); - $rl = RateLimiter::attempt('pf:apiv1.1:iarc:'.$request->ip(), config('pixelfed.app_registration_confirm_rate_limit_attempts', 20), function(){}, config('pixelfed.app_registration_confirm_rate_limit_decay', 1800));
+ $rl = RateLimiter::attempt('pf:apiv1.1:iarc:'.Str::Random(10), config('pixelfed.app_registration_confirm_rate_limit_attempts', 20), function(){}, config('pixelfed.app_registration_confirm_rate_limit_decay', 1800)); + $rl = RateLimiter::attempt('pf:apiv1.1:iarc:'.sha1($request->ip()), config('pixelfed.app_registration_confirm_rate_limit_attempts', 20), function(){}, config('pixelfed.app_registration_confirm_rate_limit_decay', 1800));
abort_if(!$rl, 429, 'Too many requests'); abort_if(!$rl, 429, 'Too many requests');
$this->validate($request, [ $this->validate($request, [
diff --git a/app/Http/Controllers/Auth/LoginController.php b/app/Http/Controllers/Auth/LoginController.php diff --git a/app/Http/Controllers/Auth/LoginController.php b/app/Http/Controllers/Auth/LoginController.php
index 627a879c..1d7af486 100644 index 86ee52c8..3e6a9c4f 100644
--- a/app/Http/Controllers/Auth/LoginController.php --- a/app/Http/Controllers/Auth/LoginController.php
+++ b/app/Http/Controllers/Auth/LoginController.php +++ b/app/Http/Controllers/Auth/LoginController.php
@@ -109,8 +109,8 @@ class LoginController extends Controller @@ -109,8 +109,8 @@ class LoginController extends Controller
@ -87,35 +78,61 @@ index 627a879c..1d7af486 100644
$log->link = null; $log->link = null;
- $log->ip_address = $request->ip(); - $log->ip_address = $request->ip();
- $log->user_agent = $request->userAgent(); - $log->user_agent = $request->userAgent();
+ $log->ip_address = "127.0.0.23"; + $log->ip_address = sha1($request->ip());
+ $log->user_agent = "Pixelfed.de"; + $log->user_agent = sha1($request->userAgent());
$log->save(); $log->save();
} }
diff --git a/app/Http/Controllers/Auth/RegisterController.php b/app/Http/Controllers/Auth/RegisterController.php
index 7568fca0..72c8b741 100644
--- a/app/Http/Controllers/Auth/RegisterController.php
+++ b/app/Http/Controllers/Auth/RegisterController.php
@@ -163,7 +163,7 @@ class RegisterController extends Controller
'username' => $data['username'],
'email' => $data['email'],
'password' => Hash::make($data['password']),
- 'app_register_ip' => request()->ip()
+ 'app_register_ip' => sha1(request()->ip())
]);
}
diff --git a/app/Http/Controllers/CuratedRegisterController.php b/app/Http/Controllers/CuratedRegisterController.php
index 58bddb49..83e2e120 100644
--- a/app/Http/Controllers/CuratedRegisterController.php
+++ b/app/Http/Controllers/CuratedRegisterController.php
@@ -389,7 +389,7 @@ class CuratedRegisterController extends Controller
$cr->email = $request->email;
$cr->username = $request->session()->get('cur-reg.form-username');
$cr->password = bcrypt($request->session()->get('cur-reg.form-password'));
- $cr->ip_address = $request->ip();
+ $cr->ip_address = sha1($request->ip());
$cr->reason_to_join = $request->session()->get('cur-reg.form-reason');
$cr->verify_code = Str::random(40);
$cr->save();
diff --git a/app/Http/Controllers/RemoteAuthController.php b/app/Http/Controllers/RemoteAuthController.php diff --git a/app/Http/Controllers/RemoteAuthController.php b/app/Http/Controllers/RemoteAuthController.php
index e068f5d7..37e4dfad 100644 index e0afd82e..7e58eec5 100644
--- a/app/Http/Controllers/RemoteAuthController.php --- a/app/Http/Controllers/RemoteAuthController.php
+++ b/app/Http/Controllers/RemoteAuthController.php +++ b/app/Http/Controllers/RemoteAuthController.php
@@ -320,7 +320,7 @@ class RemoteAuthController extends Controller @@ -329,7 +329,7 @@ class RemoteAuthController extends Controller
'webfinger' => $res['_webfinger'], 'webfinger' => $res['_webfinger'],
], [ ], [
'software' => 'mastodon', 'software' => 'mastodon',
- 'ip_address' => $request->ip(), - 'ip_address' => $request->ip(),
+ 'ip_address' => "127.0.0.23", + 'ip_address' => sha1($request->ip()),
'bearer_token' => $token, 'bearer_token' => $token,
'verify_credentials' => $res, 'verify_credentials' => $res,
'last_verify_credentials_at' => now(), 'last_verify_credentials_at' => now(),
@@ -702,7 +702,7 @@ class RemoteAuthController extends Controller @@ -712,7 +712,7 @@ class RemoteAuthController extends Controller
'email' => $data['email'], 'email' => $data['email'],
'password' => Hash::make($data['password']), 'password' => Hash::make($data['password']),
'email_verified_at' => config('remote-auth.mastodon.contraints.skip_email_verification') ? now() : null, 'email_verified_at' => config('remote-auth.mastodon.contraints.skip_email_verification') ? now() : null,
- 'app_register_ip' => request()->ip(), - 'app_register_ip' => request()->ip(),
+ 'app_register_ip' => "127.0.0.23", + 'app_register_ip' => sha1(request()->ip()),
'register_source' => 'mastodon' 'register_source' => 'mastodon',
]))); ])));
diff --git a/app/Http/Controllers/SeasonalController.php b/app/Http/Controllers/SeasonalController.php diff --git a/app/Http/Controllers/SeasonalController.php b/app/Http/Controllers/SeasonalController.php
index a9f1f98c..c3c4cc43 100644 index a9f1f98c..352eb102 100644
--- a/app/Http/Controllers/SeasonalController.php --- a/app/Http/Controllers/SeasonalController.php
+++ b/app/Http/Controllers/SeasonalController.php +++ b/app/Http/Controllers/SeasonalController.php
@@ -230,8 +230,8 @@ class SeasonalController extends Controller @@ -230,8 +230,8 @@ class SeasonalController extends Controller
@ -124,13 +141,13 @@ index a9f1f98c..c3c4cc43 100644
[ [
- 'ip_address' => $request->ip(), - 'ip_address' => $request->ip(),
- 'user_agent' => $request->userAgent() - 'user_agent' => $request->userAgent()
+ 'ip_address' => "127.0.0.23", + 'ip_address' => sha1($request->ip()),
+ 'user_agent' => "Pixelfed.de" + 'user_agent' => sha1($request->userAgent())
] ]
]); ]);
return response()->json(200); return response()->json(200);
diff --git a/app/Http/Controllers/Settings/HomeSettings.php b/app/Http/Controllers/Settings/HomeSettings.php diff --git a/app/Http/Controllers/Settings/HomeSettings.php b/app/Http/Controllers/Settings/HomeSettings.php
index 99326c09..6fc5030b 100644 index 99326c09..1434cf66 100644
--- a/app/Http/Controllers/Settings/HomeSettings.php --- a/app/Http/Controllers/Settings/HomeSettings.php
+++ b/app/Http/Controllers/Settings/HomeSettings.php +++ b/app/Http/Controllers/Settings/HomeSettings.php
@@ -139,8 +139,8 @@ trait HomeSettings @@ -139,8 +139,8 @@ trait HomeSettings
@ -139,8 +156,8 @@ index 99326c09..6fc5030b 100644
$log->link = null; $log->link = null;
- $log->ip_address = $request->ip(); - $log->ip_address = $request->ip();
- $log->user_agent = $request->userAgent(); - $log->user_agent = $request->userAgent();
+ $log->ip_address = "127.0.0.23"; + $log->ip_address = sha1($request->ip());
+ $log->user_agent = "Pixelfed.de"; + $log->user_agent = sha1($request->userAgent());
$log->save(); $log->save();
Mail::to($request->user())->send(new PasswordChange($user)); Mail::to($request->user())->send(new PasswordChange($user));
@ -150,13 +167,13 @@ index 99326c09..6fc5030b 100644
$log->link = null; $log->link = null;
- $log->ip_address = $request->ip(); - $log->ip_address = $request->ip();
- $log->user_agent = $request->userAgent(); - $log->user_agent = $request->userAgent();
+ $log->ip_address = "127.0.0.23"; + $log->ip_address = sha1($request->ip());
+ $log->user_agent = "Pixelfed.de"; + $log->user_agent = sha1($request->userAgent());
$log->save(); $log->save();
} }
diff --git a/app/Http/Controllers/UserEmailForgotController.php b/app/Http/Controllers/UserEmailForgotController.php diff --git a/app/Http/Controllers/UserEmailForgotController.php b/app/Http/Controllers/UserEmailForgotController.php
index 33378c4d..e6f1be45 100644 index 3889b980..c2622d10 100644
--- a/app/Http/Controllers/UserEmailForgotController.php --- a/app/Http/Controllers/UserEmailForgotController.php
+++ b/app/Http/Controllers/UserEmailForgotController.php +++ b/app/Http/Controllers/UserEmailForgotController.php
@@ -80,8 +80,8 @@ class UserEmailForgotController extends Controller @@ -80,8 +80,8 @@ class UserEmailForgotController extends Controller
@ -165,13 +182,13 @@ index 33378c4d..e6f1be45 100644
'user_id' => $user->id, 'user_id' => $user->id,
- 'ip_address' => $request->ip(), - 'ip_address' => $request->ip(),
- 'user_agent' => $request->userAgent(), - 'user_agent' => $request->userAgent(),
+ 'ip_address' => "127.0.0.23", + 'ip_address' => sha1($request->ip()),
+ 'user_agent' => "Pixelfed.de", + 'user_agent' => sha1($request->userAgent()),
'email_sent_at' => now() 'email_sent_at' => now()
]); ]);
diff --git a/app/Listeners/AuthLogin.php b/app/Listeners/AuthLogin.php diff --git a/app/Listeners/AuthLogin.php b/app/Listeners/AuthLogin.php
index 90806965..ffc67d79 100644 index 90806965..90d6591b 100644
--- a/app/Listeners/AuthLogin.php --- a/app/Listeners/AuthLogin.php
+++ b/app/Listeners/AuthLogin.php +++ b/app/Listeners/AuthLogin.php
@@ -122,8 +122,8 @@ class AuthLogin @@ -122,8 +122,8 @@ class AuthLogin
@ -180,13 +197,13 @@ index 90806965..ffc67d79 100644
'user_id' => $user->id, 'user_id' => $user->id,
- 'ip' => request()->ip(), - 'ip' => request()->ip(),
- 'user_agent' => str_limit(request()->userAgent(), 180), - 'user_agent' => str_limit(request()->userAgent(), 180),
+ 'ip' => "127.0.0.23", + 'ip' => sha1(request()->ip()),
+ 'user_agent' => "Pixelfed.de", + 'user_agent' => sha1(request()->userAgent()),
]); ]);
}); });
} }
diff --git a/app/Listeners/LogFailedLogin.php b/app/Listeners/LogFailedLogin.php diff --git a/app/Listeners/LogFailedLogin.php b/app/Listeners/LogFailedLogin.php
index c6ba3305..9442bfd0 100644 index c6ba3305..eff0cf71 100644
--- a/app/Listeners/LogFailedLogin.php --- a/app/Listeners/LogFailedLogin.php
+++ b/app/Listeners/LogFailedLogin.php +++ b/app/Listeners/LogFailedLogin.php
@@ -41,8 +41,8 @@ class LogFailedLogin @@ -41,8 +41,8 @@ class LogFailedLogin
@ -195,8 +212,8 @@ index c6ba3305..9442bfd0 100644
$log->link = null; $log->link = null;
- $log->ip_address = $request->ip(); - $log->ip_address = $request->ip();
- $log->user_agent = $request->userAgent(); - $log->user_agent = $request->userAgent();
+ $log->ip_address = "127.0.0.23"; + $log->ip_address = sha1($request->ip());
+ $log->user_agent = "Pixelfed.de"; + $log->user_agent = sha1($request->userAgent());
$log->save(); $log->save();
} }
} }

View File

@ -1,6 +1,6 @@
From 8437a0ec04713939137e5d3cdce912d7ffecd992 Mon Sep 17 00:00:00 2001 From 2957a298a9a12683fd667faf5b1356135942ff48 Mon Sep 17 00:00:00 2001
From: chris <cg@zknt.org> From: chris <cg@zknt.org>
Date: Tue, 12 Mar 2024 17:08:14 +0100 Date: Sat, 6 Apr 2024 11:38:51 +0200
Subject: [PATCH 2/6] hardcode discovery settings Subject: [PATCH 2/6] hardcode discovery settings
force enable discovery (as dynamic settings are not saved properly) force enable discovery (as dynamic settings are not saved properly)

View File

@ -1,6 +1,6 @@
From e5c94b4eaac8c246d22fb5a85f70bda4ad1d162d Mon Sep 17 00:00:00 2001 From 62e640512c5951611682c22995840c74c3982222 Mon Sep 17 00:00:00 2001
From: chris <cg@zknt.org> From: chris <cg@zknt.org>
Date: Tue, 12 Mar 2024 17:08:37 +0100 Date: Sat, 6 Apr 2024 11:39:17 +0200
Subject: [PATCH 3/6] point to modified sourcecode Subject: [PATCH 3/6] point to modified sourcecode
as per AGPL license of original source, modifications must be disclosed. as per AGPL license of original source, modifications must be disclosed.

View File

@ -1,6 +1,6 @@
From e00187bc43511a6f21d2486834e44900f5b64bae Mon Sep 17 00:00:00 2001 From d2f2949c8f1662fb0c7840ce99de34ee9d76d613 Mon Sep 17 00:00:00 2001
From: chris <cg@zknt.org> From: chris <cg@zknt.org>
Date: Tue, 12 Mar 2024 17:09:52 +0100 Date: Sat, 6 Apr 2024 11:45:04 +0200
Subject: [PATCH 4/6] disable beagle service Subject: [PATCH 4/6] disable beagle service
beagle is a remote API service provided by dansup and used for centralised lookups. beagle is a remote API service provided by dansup and used for centralised lookups.
@ -8,7 +8,8 @@ Using the beagle service without users explicit consent violates GDPR.
As it's not configurable at the moment this patch disables remote communication with beagle. As it's not configurable at the moment this patch disables remote communication with beagle.
--- ---
app/Services/Account/RemoteAuthService.php | 4 ++++ app/Services/Account/RemoteAuthService.php | 4 ++++
1 file changed, 4 insertions(+) app/Services/Internal/BeagleService.php | 1 +
2 files changed, 5 insertions(+)
diff --git a/app/Services/Account/RemoteAuthService.php b/app/Services/Account/RemoteAuthService.php diff --git a/app/Services/Account/RemoteAuthService.php b/app/Services/Account/RemoteAuthService.php
index 4412352a..0c69959f 100644 index 4412352a..0c69959f 100644
@ -44,6 +45,18 @@ index 4412352a..0c69959f 100644
try { try {
$url = 'https://beagle.pixelfed.net/api/v1/raa/submit'; $url = 'https://beagle.pixelfed.net/api/v1/raa/submit';
$res = Http::throw()->timeout(10)->get($url, [ $res = Http::throw()->timeout(10)->get($url, [
diff --git a/app/Services/Internal/BeagleService.php b/app/Services/Internal/BeagleService.php
index 60a4f78e..f8c9442c 100644
--- a/app/Services/Internal/BeagleService.php
+++ b/app/Services/Internal/BeagleService.php
@@ -13,6 +13,7 @@ class BeagleService
public static function getDefaultRules()
{
+ return [];
return Cache::remember(self::DEFAULT_RULES_CACHE_KEY, now()->addDays(7), function() {
try {
$res = Http::withOptions(['allow_redirects' => false])
-- --
2.44.0 2.44.0

View File

@ -1,6 +1,6 @@
From 533b441a88602ab8ab8e047f0d5c52ab25486aed Mon Sep 17 00:00:00 2001 From 66cb2b46c6015b5efe1c06c24ea59853eb9dadbc Mon Sep 17 00:00:00 2001
From: chris <cg@zknt.org> From: chris <cg@zknt.org>
Date: Tue, 12 Mar 2024 17:10:13 +0100 Date: Sat, 6 Apr 2024 11:45:42 +0200
Subject: [PATCH 5/6] allow 30 char usernames Subject: [PATCH 5/6] allow 30 char usernames
raise maximum username length, because why not? raise maximum username length, because why not?
@ -9,7 +9,7 @@ raise maximum username length, because why not?
1 file changed, 1 insertion(+), 1 deletion(-) 1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/app/Http/Controllers/Auth/RegisterController.php b/app/Http/Controllers/Auth/RegisterController.php diff --git a/app/Http/Controllers/Auth/RegisterController.php b/app/Http/Controllers/Auth/RegisterController.php
index 8bdd57bf..ed029ea6 100644 index 72c8b741..2c8a26b4 100644
--- a/app/Http/Controllers/Auth/RegisterController.php --- a/app/Http/Controllers/Auth/RegisterController.php
+++ b/app/Http/Controllers/Auth/RegisterController.php +++ b/app/Http/Controllers/Auth/RegisterController.php
@@ -70,7 +70,7 @@ class RegisterController extends Controller @@ -70,7 +70,7 @@ class RegisterController extends Controller

View File

@ -1,6 +1,6 @@
From b0e9b2cf0fd8ec264ed7240a6102eef018794001 Mon Sep 17 00:00:00 2001 From d5c6249217a1d85c765a59823274f41234f8d3c1 Mon Sep 17 00:00:00 2001
From: chris <cg@zknt.org> From: chris <cg@zknt.org>
Date: Tue, 12 Mar 2024 17:10:30 +0100 Date: Sat, 6 Apr 2024 11:46:02 +0200
Subject: [PATCH 6/6] Link legal notice Subject: [PATCH 6/6] Link legal notice
local jurisdiction requires a prominent link to a legal notice at the frontpage. local jurisdiction requires a prominent link to a legal notice at the frontpage.