@@ -445,45 +445,38 @@ def unresolve_domain(self, domain):
445
445
subdomain , * root_domain = domain .split ("." , maxsplit = 1 )
446
446
root_domain = root_domain [0 ] if root_domain else ""
447
447
448
- if public_domain in domain :
449
- # Serve from the PUBLIC_DOMAIN, ensuring it looks like `foo.PUBLIC_DOMAIN`.
450
- if public_domain == root_domain :
451
- project_slug = subdomain
452
- log .debug ("Public domain." , domain = domain )
448
+ # Serve from the PUBLIC_DOMAIN, ensuring it looks like `foo.PUBLIC_DOMAIN`.
449
+ if public_domain == root_domain :
450
+ project_slug = subdomain
451
+ log .debug ("Public domain." , domain = domain )
452
+ return UnresolvedDomain (
453
+ source_domain = domain ,
454
+ source = DomainSourceType .public_domain ,
455
+ project = self ._resolve_project_slug (project_slug , domain ),
456
+ )
457
+
458
+ # Serve from the RTD_EXTERNAL_VERSION_DOMAIN, ensuring it looks like
459
+ # `project--version.RTD_EXTERNAL_VERSION_DOMAIN`.
460
+ if external_domain == root_domain :
461
+ try :
462
+ project_slug , version_slug = subdomain .rsplit ("--" , maxsplit = 1 )
463
+ log .debug ("External versions domain." , domain = domain )
453
464
return UnresolvedDomain (
454
465
source_domain = domain ,
455
- source = DomainSourceType .public_domain ,
466
+ source = DomainSourceType .external_domain ,
456
467
project = self ._resolve_project_slug (project_slug , domain ),
468
+ external_version_slug = version_slug ,
457
469
)
470
+ except ValueError :
471
+ log .info ("Invalid format of external versions domain." , domain = domain )
472
+ raise InvalidExternalDomainError (domain = domain )
458
473
474
+ if public_domain in domain or external_domain in domain :
459
475
# NOTE: This can catch some possibly valid domains (docs.readthedocs.io.com)
460
476
# for example, but these might be phishing, so let's block them for now.
461
477
log .warning ("Weird variation of our domain." , domain = domain )
462
478
raise SuspiciousHostnameError (domain = domain )
463
479
464
- # Serve PR builds on external_domain host.
465
- if external_domain in domain :
466
- if external_domain == root_domain :
467
- try :
468
- project_slug , version_slug = subdomain .rsplit ("--" , maxsplit = 1 )
469
- log .debug ("External versions domain." , domain = domain )
470
- return UnresolvedDomain (
471
- source_domain = domain ,
472
- source = DomainSourceType .external_domain ,
473
- project = self ._resolve_project_slug (project_slug , domain ),
474
- external_version_slug = version_slug ,
475
- )
476
- except ValueError :
477
- log .info (
478
- "Invalid format of external versions domain." , domain = domain
479
- )
480
- raise InvalidExternalDomainError (domain = domain )
481
-
482
- # NOTE: This can catch some possibly valid domains (docs.readthedocs.build.com)
483
- # for example, but these might be phishing, so let's block them for now.
484
- log .warning ("Weird variation of our domain." , domain = domain )
485
- raise SuspiciousHostnameError (domain = domain )
486
-
487
480
# Custom domain.
488
481
domain_object = (
489
482
Domain .objects .filter (domain = domain ).select_related ("project" ).first ()
0 commit comments