mirror of
https://github.com/google/nomulus.git
synced 2025-06-30 00:03:37 +02:00
Flatten the domain check flows
Also pull out a small bit of common functionality across contact and host checks. ------------- Created by MOE: https://github.com/google/moe MOE_MIGRATED_REVID=133977324
This commit is contained in:
parent
b5e421cee3
commit
025a4ae012
7 changed files with 161 additions and 101 deletions
|
@ -14,69 +14,86 @@
|
|||
|
||||
package google.registry.flows.domain;
|
||||
|
||||
import static google.registry.flows.ResourceFlowUtils.verifyTargetIdCount;
|
||||
import static google.registry.flows.domain.DomainFlowUtils.checkAllowedAccessToTld;
|
||||
import static google.registry.flows.domain.DomainFlowUtils.validateDomainName;
|
||||
import static google.registry.flows.domain.DomainFlowUtils.validateDomainNameWithIdnTables;
|
||||
import static google.registry.model.domain.launch.LaunchPhase.CLAIMS;
|
||||
import static google.registry.model.eppoutput.Result.Code.SUCCESS;
|
||||
import static google.registry.util.DateTimeUtils.isAtOrAfter;
|
||||
|
||||
import com.google.common.collect.ImmutableList;
|
||||
import com.google.common.collect.ImmutableSet;
|
||||
import com.google.common.collect.Sets;
|
||||
import com.google.common.net.InternetDomainName;
|
||||
import google.registry.config.ConfigModule.Config;
|
||||
import google.registry.flows.EppException;
|
||||
import google.registry.flows.LoggedInFlow;
|
||||
import google.registry.flows.exceptions.BadCommandForRegistryPhaseException;
|
||||
import google.registry.model.domain.DomainCommand.Check;
|
||||
import google.registry.model.domain.launch.LaunchCheckExtension;
|
||||
import google.registry.model.domain.launch.LaunchCheckResponseExtension;
|
||||
import google.registry.model.domain.launch.LaunchCheckResponseExtension.LaunchCheck;
|
||||
import google.registry.model.domain.launch.LaunchCheckResponseExtension.LaunchCheckName;
|
||||
import google.registry.model.eppoutput.CheckData;
|
||||
import google.registry.model.eppoutput.EppResponse.ResponseExtension;
|
||||
import google.registry.model.eppinput.ResourceCommand;
|
||||
import google.registry.model.eppoutput.EppOutput;
|
||||
import google.registry.model.registry.Registry;
|
||||
import google.registry.model.registry.Registry.TldState;
|
||||
import google.registry.model.tmch.ClaimsListShard;
|
||||
import java.util.Map.Entry;
|
||||
import java.util.HashSet;
|
||||
import java.util.List;
|
||||
import java.util.Set;
|
||||
import javax.inject.Inject;
|
||||
|
||||
/**
|
||||
* An EPP flow that checks whether strings are trademarked.
|
||||
*
|
||||
* @error {@link google.registry.flows.ResourceCheckFlow.TooManyResourceChecksException}
|
||||
* @error {@link google.registry.flows.ResourceFlow.BadCommandForRegistryPhaseException}
|
||||
* @error {@link google.registry.flows.domain.DomainFlowUtils.NotAuthorizedForTldException}
|
||||
* @error {@link google.registry.flows.exceptions.BadCommandForRegistryPhaseException}
|
||||
* @error {@link google.registry.flows.exceptions.TooManyResourceChecksException}
|
||||
* @error {@link DomainFlowUtils.TldDoesNotExistException}
|
||||
*/
|
||||
public class ClaimsCheckFlow extends BaseDomainCheckFlow {
|
||||
public final class ClaimsCheckFlow extends LoggedInFlow {
|
||||
|
||||
public static final ImmutableSet<TldState> DISALLOWED_TLD_STATES = Sets.immutableEnumSet(
|
||||
TldState.PREDELEGATION, TldState.SUNRISE);
|
||||
public static final ImmutableSet<TldState> DISALLOWED_TLD_STATES =
|
||||
Sets.immutableEnumSet(TldState.PREDELEGATION, TldState.SUNRISE);
|
||||
|
||||
@Inject ResourceCommand resourceCommand;
|
||||
@Inject @Config("maxChecks") int maxChecks;
|
||||
@Inject ClaimsCheckFlow() {}
|
||||
|
||||
@Override
|
||||
protected void initDomainCheckFlow() throws EppException {
|
||||
protected final void initLoggedInFlow() throws EppException {
|
||||
registerExtensions(LaunchCheckExtension.class);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected CheckData getCheckData() {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected ImmutableList<? extends ResponseExtension> getResponseExtensions() throws EppException {
|
||||
public EppOutput run() throws EppException {
|
||||
List<String> targetIds = ((Check) resourceCommand).getTargetIds();
|
||||
verifyTargetIdCount(targetIds, maxChecks);
|
||||
Set<String> seenTlds = new HashSet<>();
|
||||
ImmutableList.Builder<LaunchCheck> launchChecksBuilder = new ImmutableList.Builder<>();
|
||||
for (Entry<String, InternetDomainName> entry : domainNames.entrySet()) {
|
||||
InternetDomainName domainName = entry.getValue();
|
||||
if (isAtOrAfter(now, Registry.get(domainName.parent().toString()).getClaimsPeriodEnd())) {
|
||||
throw new BadCommandForRegistryPhaseException();
|
||||
for (String targetId : ImmutableSet.copyOf(targetIds)) {
|
||||
InternetDomainName domainName = validateDomainName(targetId);
|
||||
validateDomainNameWithIdnTables(domainName);
|
||||
String tld = domainName.parent().toString();
|
||||
// Only validate access to a TLD the first time it is encountered.
|
||||
if (seenTlds.add(tld)) {
|
||||
checkAllowedAccessToTld(getAllowedTlds(), tld);
|
||||
Registry registry = Registry.get(tld);
|
||||
if ((!isSuperuser && DISALLOWED_TLD_STATES.contains(registry.getTldState(now)))
|
||||
|| isAtOrAfter(now, registry.getClaimsPeriodEnd())) {
|
||||
throw new BadCommandForRegistryPhaseException();
|
||||
}
|
||||
}
|
||||
String claimKey = ClaimsListShard.get().getClaimKey(domainName.parts().get(0));
|
||||
launchChecksBuilder.add(LaunchCheck.create(
|
||||
LaunchCheckName.create(claimKey != null, entry.getKey()), claimKey));
|
||||
launchChecksBuilder.add(
|
||||
LaunchCheck.create(
|
||||
LaunchCheckName.create(claimKey != null, targetId), claimKey));
|
||||
}
|
||||
return ImmutableList.of(
|
||||
LaunchCheckResponseExtension.create(CLAIMS, launchChecksBuilder.build()));
|
||||
}
|
||||
|
||||
@Override
|
||||
protected final ImmutableSet<TldState> getDisallowedTldStates() {
|
||||
return DISALLOWED_TLD_STATES;
|
||||
return createOutput(
|
||||
SUCCESS,
|
||||
null,
|
||||
ImmutableList.of(LaunchCheckResponseExtension.create(CLAIMS, launchChecksBuilder.build())));
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue