fix(server-transfer): harden import on Cloud and stop archives from using server slots

- Rate limit the import check probe and refuse private, loopback, and
  link-local targets on Cloud.
- Rate limit the SSH validation that an import starts, like other
  server validations.
- Count only managed servers for the server limit, the limit check job,
  and the subscription page. Archives of transferred servers are left out.
- Do not show the name of another team's archived server in the import check.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
Andras Bacsai
2026-10-23 20:12:59 +02:00
co-authored by Claude Opus 5.5
parent 30d840f1c6
commit 95a3a22fdf
9 changed files with 106 additions and 9 deletions
+10
View File
@@ -1333,6 +1333,16 @@ $siteAddress {
return $this->proxy->modelScope();
}
/**
* Servers that this instance manages. A transferred server is only an archive and does not use a server slot.
*/
public function scopeNotTransferredAway(Builder $query): Builder
{
return $query->where(fn (Builder $query) => $query
->whereNull('server_metadata->transfer->status')
->orWhere('server_metadata->transfer->status', '!=', 'transferred'));
}
public function scopeWhereProxyType(Builder $query, string $proxyType): Builder
{
return $query->where('proxy->type', $proxyType);