mirror of
https://github.com/google/nomulus.git
synced 2025-05-13 16:07:15 +02:00
Consolidate Dagger modules for utils classes
There was no reason to have several different modules all providing a single thing. This approach, which creates a single UtilsModule for everything in the util package, is cleaner. This also removes provisioning of Random and StringGenerator objects in RegistryConfig.ConfigModule, which don't belong there because they aren't configuration options. This also removes insecure random entirely; it was only used in a single place to generate 24 bytes a couple times per day. We can live with the lower speed if it means we don't have to worry about multiple types of Random, or possibly using an insecure random accidentally in a place that security actually does matter. ------------- Created by MOE: https://github.com/google/moe MOE_MIGRATED_REVID=229751915
This commit is contained in:
parent
9aa7b69921
commit
d2ee63cf69
22 changed files with 141 additions and 168 deletions
|
@ -29,19 +29,13 @@ import com.google.common.collect.ImmutableMap;
|
||||||
import com.google.common.collect.ImmutableSet;
|
import com.google.common.collect.ImmutableSet;
|
||||||
import dagger.Module;
|
import dagger.Module;
|
||||||
import dagger.Provides;
|
import dagger.Provides;
|
||||||
import google.registry.util.RandomStringGenerator;
|
|
||||||
import google.registry.util.StringGenerator;
|
|
||||||
import google.registry.util.TaskQueueUtils;
|
import google.registry.util.TaskQueueUtils;
|
||||||
import google.registry.util.YamlUtils;
|
import google.registry.util.YamlUtils;
|
||||||
import java.lang.annotation.Documented;
|
import java.lang.annotation.Documented;
|
||||||
import java.lang.annotation.Retention;
|
import java.lang.annotation.Retention;
|
||||||
import java.net.URI;
|
import java.net.URI;
|
||||||
import java.net.URL;
|
import java.net.URL;
|
||||||
import java.security.NoSuchAlgorithmException;
|
|
||||||
import java.security.ProviderException;
|
|
||||||
import java.security.SecureRandom;
|
|
||||||
import java.util.Optional;
|
import java.util.Optional;
|
||||||
import java.util.Random;
|
|
||||||
import java.util.stream.Collectors;
|
import java.util.stream.Collectors;
|
||||||
import javax.annotation.Nullable;
|
import javax.annotation.Nullable;
|
||||||
import javax.inject.Named;
|
import javax.inject.Named;
|
||||||
|
@ -57,6 +51,9 @@ import org.joda.time.Duration;
|
||||||
* meant for settings that need to be configured <i>once</i></b>. Settings which may be subject to
|
* meant for settings that need to be configured <i>once</i></b>. Settings which may be subject to
|
||||||
* change in the future, should instead be retrieved from Datastore. The {@link
|
* change in the future, should instead be retrieved from Datastore. The {@link
|
||||||
* google.registry.model.registry.Registry Registry} class is one such example of this.
|
* google.registry.model.registry.Registry Registry} class is one such example of this.
|
||||||
|
*
|
||||||
|
* <p>Note: Only settings that are actually configurable belong in this file. It's not a catch-all
|
||||||
|
* for anything widely used throughout the code base.
|
||||||
*/
|
*/
|
||||||
public final class RegistryConfig {
|
public final class RegistryConfig {
|
||||||
|
|
||||||
|
@ -1356,54 +1353,6 @@ public final class RegistryConfig {
|
||||||
.build())
|
.build())
|
||||||
.build();
|
.build();
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* Returns a singleton insecure random number generator that is fast.
|
|
||||||
*
|
|
||||||
* <p>This binding is intentionally qualified so that any requester must explicitly acknowledge
|
|
||||||
* that using an insecure random number generator is fine for its use case.
|
|
||||||
*/
|
|
||||||
@Singleton
|
|
||||||
@Provides
|
|
||||||
@Config("insecureRandom")
|
|
||||||
public static Random provideInsecureRandom() {
|
|
||||||
return new Random();
|
|
||||||
}
|
|
||||||
|
|
||||||
/** Returns a singleton secure random number generator this is slow. */
|
|
||||||
@Singleton
|
|
||||||
@Provides
|
|
||||||
public static SecureRandom provideSecureRandom() {
|
|
||||||
try {
|
|
||||||
return SecureRandom.getInstance("NativePRNG");
|
|
||||||
} catch (NoSuchAlgorithmException e) {
|
|
||||||
throw new ProviderException(e);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/** Returns a singleton random string generator that uses digits only. */
|
|
||||||
@Singleton
|
|
||||||
@Provides
|
|
||||||
@Config("digitOnlyStringGenerator")
|
|
||||||
public static StringGenerator provideDigitsOnlyStringGenerator(SecureRandom secureRandom) {
|
|
||||||
return new RandomStringGenerator(StringGenerator.Alphabets.DIGITS_ONLY, secureRandom);
|
|
||||||
}
|
|
||||||
|
|
||||||
/** Returns a singleton random string generator using Base58 encoding. */
|
|
||||||
@Singleton
|
|
||||||
@Provides
|
|
||||||
@Config("base58StringGenerator")
|
|
||||||
public static StringGenerator provideBase58StringGenerator(SecureRandom secureRandom) {
|
|
||||||
return new RandomStringGenerator(StringGenerator.Alphabets.BASE_58, secureRandom);
|
|
||||||
}
|
|
||||||
|
|
||||||
/** Returns a singleton random string generator using Base58 encoding. */
|
|
||||||
@Singleton
|
|
||||||
@Provides
|
|
||||||
@Config("base64StringGenerator")
|
|
||||||
public static StringGenerator provideBase64StringGenerator(SecureRandom secureRandom) {
|
|
||||||
return new RandomStringGenerator(StringGenerator.Alphabets.BASE_64, secureRandom);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -42,16 +42,13 @@ import google.registry.request.Modules.URLFetchServiceModule;
|
||||||
import google.registry.request.Modules.UrlFetchTransportModule;
|
import google.registry.request.Modules.UrlFetchTransportModule;
|
||||||
import google.registry.request.Modules.UserServiceModule;
|
import google.registry.request.Modules.UserServiceModule;
|
||||||
import google.registry.request.auth.AuthModule;
|
import google.registry.request.auth.AuthModule;
|
||||||
import google.registry.util.AppEngineServiceUtilsImpl.AppEngineServiceUtilsModule;
|
import google.registry.util.UtilsModule;
|
||||||
import google.registry.util.SystemClock.SystemClockModule;
|
|
||||||
import google.registry.util.SystemSleeper.SystemSleeperModule;
|
|
||||||
import javax.inject.Singleton;
|
import javax.inject.Singleton;
|
||||||
|
|
||||||
/** Dagger component with instance lifetime for "backend" App Engine module. */
|
/** Dagger component with instance lifetime for "backend" App Engine module. */
|
||||||
@Singleton
|
@Singleton
|
||||||
@Component(
|
@Component(
|
||||||
modules = {
|
modules = {
|
||||||
AppEngineServiceUtilsModule.class,
|
|
||||||
AuthModule.class,
|
AuthModule.class,
|
||||||
BackendRequestComponentModule.class,
|
BackendRequestComponentModule.class,
|
||||||
BigqueryModule.class,
|
BigqueryModule.class,
|
||||||
|
@ -73,12 +70,11 @@ import javax.inject.Singleton;
|
||||||
NetHttpTransportModule.class,
|
NetHttpTransportModule.class,
|
||||||
SheetsServiceModule.class,
|
SheetsServiceModule.class,
|
||||||
StackdriverModule.class,
|
StackdriverModule.class,
|
||||||
SystemClockModule.class,
|
|
||||||
SystemSleeperModule.class,
|
|
||||||
URLFetchServiceModule.class,
|
URLFetchServiceModule.class,
|
||||||
UrlFetchTransportModule.class,
|
UrlFetchTransportModule.class,
|
||||||
UserServiceModule.class,
|
UserServiceModule.class,
|
||||||
VoidDnsWriterModule.class,
|
VoidDnsWriterModule.class,
|
||||||
|
UtilsModule.class
|
||||||
})
|
})
|
||||||
interface BackendComponent {
|
interface BackendComponent {
|
||||||
BackendRequestHandler requestHandler();
|
BackendRequestHandler requestHandler();
|
||||||
|
|
|
@ -36,16 +36,13 @@ import google.registry.request.Modules.UrlFetchTransportModule;
|
||||||
import google.registry.request.Modules.UserServiceModule;
|
import google.registry.request.Modules.UserServiceModule;
|
||||||
import google.registry.request.auth.AuthModule;
|
import google.registry.request.auth.AuthModule;
|
||||||
import google.registry.ui.ConsoleDebug.ConsoleConfigModule;
|
import google.registry.ui.ConsoleDebug.ConsoleConfigModule;
|
||||||
import google.registry.util.AppEngineServiceUtilsImpl.AppEngineServiceUtilsModule;
|
import google.registry.util.UtilsModule;
|
||||||
import google.registry.util.SystemClock.SystemClockModule;
|
|
||||||
import google.registry.util.SystemSleeper.SystemSleeperModule;
|
|
||||||
import javax.inject.Singleton;
|
import javax.inject.Singleton;
|
||||||
|
|
||||||
/** Dagger component with instance lifetime for "default" App Engine module. */
|
/** Dagger component with instance lifetime for "default" App Engine module. */
|
||||||
@Singleton
|
@Singleton
|
||||||
@Component(
|
@Component(
|
||||||
modules = {
|
modules = {
|
||||||
AppEngineServiceUtilsModule.class,
|
|
||||||
AuthModule.class,
|
AuthModule.class,
|
||||||
ConfigModule.class,
|
ConfigModule.class,
|
||||||
ConsoleConfigModule.class,
|
ConsoleConfigModule.class,
|
||||||
|
@ -63,10 +60,9 @@ import javax.inject.Singleton;
|
||||||
NetHttpTransportModule.class,
|
NetHttpTransportModule.class,
|
||||||
ServerTridProviderModule.class,
|
ServerTridProviderModule.class,
|
||||||
StackdriverModule.class,
|
StackdriverModule.class,
|
||||||
SystemClockModule.class,
|
|
||||||
SystemSleeperModule.class,
|
|
||||||
UrlFetchTransportModule.class,
|
UrlFetchTransportModule.class,
|
||||||
UserServiceModule.class,
|
UserServiceModule.class,
|
||||||
|
UtilsModule.class
|
||||||
})
|
})
|
||||||
interface FrontendComponent {
|
interface FrontendComponent {
|
||||||
FrontendRequestHandler requestHandler();
|
FrontendRequestHandler requestHandler();
|
||||||
|
|
|
@ -35,16 +35,13 @@ import google.registry.request.Modules.NetHttpTransportModule;
|
||||||
import google.registry.request.Modules.UrlFetchTransportModule;
|
import google.registry.request.Modules.UrlFetchTransportModule;
|
||||||
import google.registry.request.Modules.UserServiceModule;
|
import google.registry.request.Modules.UserServiceModule;
|
||||||
import google.registry.request.auth.AuthModule;
|
import google.registry.request.auth.AuthModule;
|
||||||
import google.registry.util.AppEngineServiceUtilsImpl.AppEngineServiceUtilsModule;
|
import google.registry.util.UtilsModule;
|
||||||
import google.registry.util.SystemClock.SystemClockModule;
|
|
||||||
import google.registry.util.SystemSleeper.SystemSleeperModule;
|
|
||||||
import javax.inject.Singleton;
|
import javax.inject.Singleton;
|
||||||
|
|
||||||
/** Dagger component with instance lifetime for "pubapi" App Engine module. */
|
/** Dagger component with instance lifetime for "pubapi" App Engine module. */
|
||||||
@Singleton
|
@Singleton
|
||||||
@Component(
|
@Component(
|
||||||
modules = {
|
modules = {
|
||||||
AppEngineServiceUtilsModule.class,
|
|
||||||
AuthModule.class,
|
AuthModule.class,
|
||||||
ConfigModule.class,
|
ConfigModule.class,
|
||||||
CredentialModule.class,
|
CredentialModule.class,
|
||||||
|
@ -61,10 +58,9 @@ import javax.inject.Singleton;
|
||||||
PubApiRequestComponentModule.class,
|
PubApiRequestComponentModule.class,
|
||||||
ServerTridProviderModule.class,
|
ServerTridProviderModule.class,
|
||||||
StackdriverModule.class,
|
StackdriverModule.class,
|
||||||
SystemClockModule.class,
|
|
||||||
SystemSleeperModule.class,
|
|
||||||
UrlFetchTransportModule.class,
|
UrlFetchTransportModule.class,
|
||||||
UserServiceModule.class,
|
UserServiceModule.class,
|
||||||
|
UtilsModule.class
|
||||||
})
|
})
|
||||||
interface PubApiComponent {
|
interface PubApiComponent {
|
||||||
PubApiRequestHandler requestHandler();
|
PubApiRequestHandler requestHandler();
|
||||||
|
|
|
@ -38,16 +38,13 @@ import google.registry.request.Modules.NetHttpTransportModule;
|
||||||
import google.registry.request.Modules.UrlFetchTransportModule;
|
import google.registry.request.Modules.UrlFetchTransportModule;
|
||||||
import google.registry.request.Modules.UserServiceModule;
|
import google.registry.request.Modules.UserServiceModule;
|
||||||
import google.registry.request.auth.AuthModule;
|
import google.registry.request.auth.AuthModule;
|
||||||
import google.registry.util.AppEngineServiceUtilsImpl.AppEngineServiceUtilsModule;
|
import google.registry.util.UtilsModule;
|
||||||
import google.registry.util.SystemClock.SystemClockModule;
|
|
||||||
import google.registry.util.SystemSleeper.SystemSleeperModule;
|
|
||||||
import javax.inject.Singleton;
|
import javax.inject.Singleton;
|
||||||
|
|
||||||
/** Dagger component with instance lifetime for "tools" App Engine module. */
|
/** Dagger component with instance lifetime for "tools" App Engine module. */
|
||||||
@Singleton
|
@Singleton
|
||||||
@Component(
|
@Component(
|
||||||
modules = {
|
modules = {
|
||||||
AppEngineServiceUtilsModule.class,
|
|
||||||
AuthModule.class,
|
AuthModule.class,
|
||||||
ConfigModule.class,
|
ConfigModule.class,
|
||||||
CredentialModule.class,
|
CredentialModule.class,
|
||||||
|
@ -66,11 +63,10 @@ import javax.inject.Singleton;
|
||||||
NetHttpTransportModule.class,
|
NetHttpTransportModule.class,
|
||||||
ServerTridProviderModule.class,
|
ServerTridProviderModule.class,
|
||||||
StackdriverModule.class,
|
StackdriverModule.class,
|
||||||
SystemClockModule.class,
|
|
||||||
SystemSleeperModule.class,
|
|
||||||
ToolsRequestComponentModule.class,
|
ToolsRequestComponentModule.class,
|
||||||
UrlFetchTransportModule.class,
|
UrlFetchTransportModule.class,
|
||||||
UserServiceModule.class,
|
UserServiceModule.class,
|
||||||
|
UtilsModule.class
|
||||||
})
|
})
|
||||||
interface ToolsComponent {
|
interface ToolsComponent {
|
||||||
ToolsRequestHandler requestHandler();
|
ToolsRequestHandler requestHandler();
|
||||||
|
|
|
@ -60,6 +60,7 @@ import google.registry.xjc.rdedomain.XjcRdeDomain;
|
||||||
import google.registry.xjc.rdedomain.XjcRdeDomainElement;
|
import google.registry.xjc.rdedomain.XjcRdeDomainElement;
|
||||||
import java.util.Optional;
|
import java.util.Optional;
|
||||||
import javax.inject.Inject;
|
import javax.inject.Inject;
|
||||||
|
import javax.inject.Named;
|
||||||
import org.joda.money.Money;
|
import org.joda.money.Money;
|
||||||
import org.joda.time.DateTime;
|
import org.joda.time.DateTime;
|
||||||
|
|
||||||
|
@ -92,7 +93,7 @@ public class RdeDomainImportAction implements Runnable {
|
||||||
@Config("rdeImportBucket") String importBucketName,
|
@Config("rdeImportBucket") String importBucketName,
|
||||||
@Parameter(PATH) String importFileName,
|
@Parameter(PATH) String importFileName,
|
||||||
@Parameter(PARAM_MAP_SHARDS) Optional<Integer> mapShards,
|
@Parameter(PARAM_MAP_SHARDS) Optional<Integer> mapShards,
|
||||||
@Config("base64StringGenerator") StringGenerator stringGenerator) {
|
@Named("base64StringGenerator") StringGenerator stringGenerator) {
|
||||||
this.mrRunner = mrRunner;
|
this.mrRunner = mrRunner;
|
||||||
this.response = response;
|
this.response = response;
|
||||||
this.importBucketName = importBucketName;
|
this.importBucketName = importBucketName;
|
||||||
|
|
|
@ -52,6 +52,7 @@ import google.registry.util.TaskQueueUtils;
|
||||||
import google.registry.util.UrlFetchException;
|
import google.registry.util.UrlFetchException;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.net.URL;
|
import java.net.URL;
|
||||||
|
import java.security.SecureRandom;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Optional;
|
import java.util.Optional;
|
||||||
import java.util.Random;
|
import java.util.Random;
|
||||||
|
@ -90,7 +91,7 @@ public final class NordnUploadAction implements Runnable {
|
||||||
|
|
||||||
@Inject Clock clock;
|
@Inject Clock clock;
|
||||||
@Inject Retrier retrier;
|
@Inject Retrier retrier;
|
||||||
@Inject @Config("insecureRandom") Random random;
|
@Inject SecureRandom random;
|
||||||
@Inject LordnRequestInitializer lordnRequestInitializer;
|
@Inject LordnRequestInitializer lordnRequestInitializer;
|
||||||
@Inject URLFetchService fetchService;
|
@Inject URLFetchService fetchService;
|
||||||
@Inject @Config("tmchMarksdbUrl") String tmchMarksdbUrl;
|
@Inject @Config("tmchMarksdbUrl") String tmchMarksdbUrl;
|
||||||
|
|
|
@ -25,10 +25,10 @@ import com.beust.jcommander.Parameter;
|
||||||
import com.beust.jcommander.Parameters;
|
import com.beust.jcommander.Parameters;
|
||||||
import com.google.common.net.InternetDomainName;
|
import com.google.common.net.InternetDomainName;
|
||||||
import com.google.template.soy.data.SoyMapData;
|
import com.google.template.soy.data.SoyMapData;
|
||||||
import google.registry.config.RegistryConfig.Config;
|
|
||||||
import google.registry.tools.soy.CreateAnchorTenantSoyInfo;
|
import google.registry.tools.soy.CreateAnchorTenantSoyInfo;
|
||||||
import google.registry.util.StringGenerator;
|
import google.registry.util.StringGenerator;
|
||||||
import javax.inject.Inject;
|
import javax.inject.Inject;
|
||||||
|
import javax.inject.Named;
|
||||||
import org.joda.money.Money;
|
import org.joda.money.Money;
|
||||||
import org.joda.time.DateTime;
|
import org.joda.time.DateTime;
|
||||||
|
|
||||||
|
@ -73,7 +73,7 @@ final class CreateAnchorTenantCommand extends MutatingEppToolCommand {
|
||||||
private boolean fee;
|
private boolean fee;
|
||||||
|
|
||||||
@Inject
|
@Inject
|
||||||
@Config("base64StringGenerator")
|
@Named("base64StringGenerator")
|
||||||
StringGenerator passwordGenerator;
|
StringGenerator passwordGenerator;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
|
@ -20,12 +20,12 @@ import static com.google.common.base.Strings.isNullOrEmpty;
|
||||||
import com.beust.jcommander.Parameter;
|
import com.beust.jcommander.Parameter;
|
||||||
import com.beust.jcommander.Parameters;
|
import com.beust.jcommander.Parameters;
|
||||||
import com.google.template.soy.data.SoyMapData;
|
import com.google.template.soy.data.SoyMapData;
|
||||||
import google.registry.config.RegistryConfig.Config;
|
|
||||||
import google.registry.tools.params.PhoneNumberParameter;
|
import google.registry.tools.params.PhoneNumberParameter;
|
||||||
import google.registry.tools.soy.ContactCreateSoyInfo;
|
import google.registry.tools.soy.ContactCreateSoyInfo;
|
||||||
import google.registry.util.StringGenerator;
|
import google.registry.util.StringGenerator;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import javax.inject.Inject;
|
import javax.inject.Inject;
|
||||||
|
import javax.inject.Named;
|
||||||
|
|
||||||
/** A command to create a new contact via EPP. */
|
/** A command to create a new contact via EPP. */
|
||||||
@Parameters(separators = " =", commandDescription = "Create a new contact via EPP.")
|
@Parameters(separators = " =", commandDescription = "Create a new contact via EPP.")
|
||||||
|
@ -104,7 +104,7 @@ final class CreateContactCommand extends MutatingEppToolCommand {
|
||||||
private String password;
|
private String password;
|
||||||
|
|
||||||
@Inject
|
@Inject
|
||||||
@Config("base64StringGenerator")
|
@Named("base64StringGenerator")
|
||||||
StringGenerator passwordGenerator;
|
StringGenerator passwordGenerator;
|
||||||
|
|
||||||
private static final int PASSWORD_LENGTH = 16;
|
private static final int PASSWORD_LENGTH = 16;
|
||||||
|
|
|
@ -23,11 +23,11 @@ import static org.joda.time.DateTimeZone.UTC;
|
||||||
import com.beust.jcommander.Parameter;
|
import com.beust.jcommander.Parameter;
|
||||||
import com.beust.jcommander.Parameters;
|
import com.beust.jcommander.Parameters;
|
||||||
import com.google.template.soy.data.SoyMapData;
|
import com.google.template.soy.data.SoyMapData;
|
||||||
import google.registry.config.RegistryConfig.Config;
|
|
||||||
import google.registry.model.pricing.PremiumPricingEngine.DomainPrices;
|
import google.registry.model.pricing.PremiumPricingEngine.DomainPrices;
|
||||||
import google.registry.tools.soy.DomainCreateSoyInfo;
|
import google.registry.tools.soy.DomainCreateSoyInfo;
|
||||||
import google.registry.util.StringGenerator;
|
import google.registry.util.StringGenerator;
|
||||||
import javax.inject.Inject;
|
import javax.inject.Inject;
|
||||||
|
import javax.inject.Named;
|
||||||
import org.joda.money.Money;
|
import org.joda.money.Money;
|
||||||
import org.joda.time.DateTime;
|
import org.joda.time.DateTime;
|
||||||
|
|
||||||
|
@ -47,7 +47,7 @@ final class CreateDomainCommand extends CreateOrUpdateDomainCommand
|
||||||
private boolean forcePremiums;
|
private boolean forcePremiums;
|
||||||
|
|
||||||
@Inject
|
@Inject
|
||||||
@Config("base64StringGenerator")
|
@Named("base64StringGenerator")
|
||||||
StringGenerator passwordGenerator;
|
StringGenerator passwordGenerator;
|
||||||
|
|
||||||
private static final int PASSWORD_LENGTH = 16;
|
private static final int PASSWORD_LENGTH = 16;
|
||||||
|
|
|
@ -31,7 +31,6 @@ import com.google.common.base.Splitter;
|
||||||
import com.google.common.collect.ImmutableSet;
|
import com.google.common.collect.ImmutableSet;
|
||||||
import com.google.common.io.Files;
|
import com.google.common.io.Files;
|
||||||
import com.googlecode.objectify.Key;
|
import com.googlecode.objectify.Key;
|
||||||
import google.registry.config.RegistryConfig.Config;
|
|
||||||
import google.registry.model.domain.token.AllocationToken;
|
import google.registry.model.domain.token.AllocationToken;
|
||||||
import google.registry.util.NonFinalForTesting;
|
import google.registry.util.NonFinalForTesting;
|
||||||
import google.registry.util.Retrier;
|
import google.registry.util.Retrier;
|
||||||
|
@ -41,6 +40,7 @@ import java.io.IOException;
|
||||||
import java.util.Collection;
|
import java.util.Collection;
|
||||||
import java.util.Deque;
|
import java.util.Deque;
|
||||||
import javax.inject.Inject;
|
import javax.inject.Inject;
|
||||||
|
import javax.inject.Named;
|
||||||
|
|
||||||
/** Command to generate and persist {@link AllocationToken}s. */
|
/** Command to generate and persist {@link AllocationToken}s. */
|
||||||
@Parameters(
|
@Parameters(
|
||||||
|
@ -81,7 +81,7 @@ class GenerateAllocationTokensCommand implements CommandWithRemoteApi {
|
||||||
boolean dryRun;
|
boolean dryRun;
|
||||||
|
|
||||||
@Inject
|
@Inject
|
||||||
@Config("base58StringGenerator")
|
@Named("base58StringGenerator")
|
||||||
StringGenerator stringGenerator;
|
StringGenerator stringGenerator;
|
||||||
|
|
||||||
@Inject Retrier retrier;
|
@Inject Retrier retrier;
|
||||||
|
|
|
@ -34,9 +34,7 @@ import google.registry.request.Modules.URLFetchServiceModule;
|
||||||
import google.registry.request.Modules.UrlFetchTransportModule;
|
import google.registry.request.Modules.UrlFetchTransportModule;
|
||||||
import google.registry.request.Modules.UserServiceModule;
|
import google.registry.request.Modules.UserServiceModule;
|
||||||
import google.registry.tools.AuthModule.LocalCredentialModule;
|
import google.registry.tools.AuthModule.LocalCredentialModule;
|
||||||
import google.registry.util.AppEngineServiceUtilsImpl.AppEngineServiceUtilsModule;
|
import google.registry.util.UtilsModule;
|
||||||
import google.registry.util.SystemClock.SystemClockModule;
|
|
||||||
import google.registry.util.SystemSleeper.SystemSleeperModule;
|
|
||||||
import google.registry.whois.WhoisModule;
|
import google.registry.whois.WhoisModule;
|
||||||
import javax.annotation.Nullable;
|
import javax.annotation.Nullable;
|
||||||
import javax.inject.Named;
|
import javax.inject.Named;
|
||||||
|
@ -52,7 +50,6 @@ import javax.inject.Singleton;
|
||||||
@Component(
|
@Component(
|
||||||
modules = {
|
modules = {
|
||||||
AppEngineAdminApiModule.class,
|
AppEngineAdminApiModule.class,
|
||||||
AppEngineServiceUtilsModule.class,
|
|
||||||
AuthModule.class,
|
AuthModule.class,
|
||||||
BigqueryModule.class,
|
BigqueryModule.class,
|
||||||
ConfigModule.class,
|
ConfigModule.class,
|
||||||
|
@ -68,11 +65,10 @@ import javax.inject.Singleton;
|
||||||
LocalCredentialModule.class,
|
LocalCredentialModule.class,
|
||||||
RdeModule.class,
|
RdeModule.class,
|
||||||
RequestFactoryModule.class,
|
RequestFactoryModule.class,
|
||||||
SystemClockModule.class,
|
|
||||||
SystemSleeperModule.class,
|
|
||||||
URLFetchServiceModule.class,
|
URLFetchServiceModule.class,
|
||||||
UrlFetchTransportModule.class,
|
UrlFetchTransportModule.class,
|
||||||
UserServiceModule.class,
|
UserServiceModule.class,
|
||||||
|
UtilsModule.class,
|
||||||
VoidDnsWriterModule.class,
|
VoidDnsWriterModule.class,
|
||||||
WhoisModule.class,
|
WhoisModule.class,
|
||||||
})
|
})
|
||||||
|
|
|
@ -22,7 +22,6 @@ import com.beust.jcommander.Parameter;
|
||||||
import com.beust.jcommander.Parameters;
|
import com.beust.jcommander.Parameters;
|
||||||
import com.google.common.collect.ImmutableMap;
|
import com.google.common.collect.ImmutableMap;
|
||||||
import com.google.common.io.MoreFiles;
|
import com.google.common.io.MoreFiles;
|
||||||
import google.registry.config.RegistryConfig.Config;
|
|
||||||
import google.registry.config.RegistryEnvironment;
|
import google.registry.config.RegistryEnvironment;
|
||||||
import google.registry.model.OteAccountBuilder;
|
import google.registry.model.OteAccountBuilder;
|
||||||
import google.registry.tools.params.PathParameter;
|
import google.registry.tools.params.PathParameter;
|
||||||
|
@ -32,6 +31,7 @@ import java.nio.file.Path;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import javax.inject.Inject;
|
import javax.inject.Inject;
|
||||||
|
import javax.inject.Named;
|
||||||
|
|
||||||
/** Composite command to set up OT&E TLDs and accounts. */
|
/** Composite command to set up OT&E TLDs and accounts. */
|
||||||
@Parameters(separators = " =", commandDescription = "Set up OT&E TLDs and registrars")
|
@Parameters(separators = " =", commandDescription = "Set up OT&E TLDs and registrars")
|
||||||
|
@ -78,7 +78,7 @@ final class SetupOteCommand extends ConfirmingCommand implements CommandWithRemo
|
||||||
private boolean overwrite = false;
|
private boolean overwrite = false;
|
||||||
|
|
||||||
@Inject
|
@Inject
|
||||||
@Config("base64StringGenerator")
|
@Named("base64StringGenerator")
|
||||||
StringGenerator passwordGenerator;
|
StringGenerator passwordGenerator;
|
||||||
|
|
||||||
@Inject Clock clock;
|
@Inject Clock clock;
|
||||||
|
|
|
@ -50,6 +50,7 @@ import google.registry.util.StringGenerator;
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
import java.util.Optional;
|
import java.util.Optional;
|
||||||
import javax.inject.Inject;
|
import javax.inject.Inject;
|
||||||
|
import javax.inject.Named;
|
||||||
import javax.servlet.http.HttpServletRequest;
|
import javax.servlet.http.HttpServletRequest;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -97,7 +98,7 @@ public final class ConsoleOteSetupAction implements Runnable {
|
||||||
@Inject SendEmailUtils sendEmailUtils;
|
@Inject SendEmailUtils sendEmailUtils;
|
||||||
@Inject @Config("logoFilename") String logoFilename;
|
@Inject @Config("logoFilename") String logoFilename;
|
||||||
@Inject @Config("productName") String productName;
|
@Inject @Config("productName") String productName;
|
||||||
@Inject @Config("base58StringGenerator") StringGenerator passwordGenerator;
|
@Inject @Named("base58StringGenerator") StringGenerator passwordGenerator;
|
||||||
@Inject @Parameter("clientId") Optional<String> clientId;
|
@Inject @Parameter("clientId") Optional<String> clientId;
|
||||||
@Inject @Parameter("email") Optional<String> email;
|
@Inject @Parameter("email") Optional<String> email;
|
||||||
@Inject @Parameter("password") Optional<String> optionalPassword;
|
@Inject @Parameter("password") Optional<String> optionalPassword;
|
||||||
|
|
|
@ -59,6 +59,7 @@ import java.util.HashMap;
|
||||||
import java.util.Optional;
|
import java.util.Optional;
|
||||||
import java.util.stream.Stream;
|
import java.util.stream.Stream;
|
||||||
import javax.inject.Inject;
|
import javax.inject.Inject;
|
||||||
|
import javax.inject.Named;
|
||||||
import javax.servlet.http.HttpServletRequest;
|
import javax.servlet.http.HttpServletRequest;
|
||||||
import org.joda.money.CurrencyUnit;
|
import org.joda.money.CurrencyUnit;
|
||||||
|
|
||||||
|
@ -108,8 +109,8 @@ public final class ConsoleRegistrarCreatorAction implements Runnable {
|
||||||
@Inject SendEmailUtils sendEmailUtils;
|
@Inject SendEmailUtils sendEmailUtils;
|
||||||
@Inject @Config("logoFilename") String logoFilename;
|
@Inject @Config("logoFilename") String logoFilename;
|
||||||
@Inject @Config("productName") String productName;
|
@Inject @Config("productName") String productName;
|
||||||
@Inject @Config("base58StringGenerator") StringGenerator passwordGenerator;
|
@Inject @Named("base58StringGenerator") StringGenerator passwordGenerator;
|
||||||
@Inject @Config("digitOnlyStringGenerator") StringGenerator passcodeGenerator;
|
@Inject @Named("digitOnlyStringGenerator") StringGenerator passcodeGenerator;
|
||||||
@Inject @Parameter("clientId") Optional<String> clientId;
|
@Inject @Parameter("clientId") Optional<String> clientId;
|
||||||
@Inject @Parameter("name") Optional<String> name;
|
@Inject @Parameter("name") Optional<String> name;
|
||||||
@Inject @Parameter("billingAccount") Optional<String> billingAccount;
|
@Inject @Parameter("billingAccount") Optional<String> billingAccount;
|
||||||
|
|
|
@ -18,10 +18,6 @@ import static com.google.common.base.Preconditions.checkArgument;
|
||||||
import static google.registry.util.PreconditionsUtils.checkArgumentNotNull;
|
import static google.registry.util.PreconditionsUtils.checkArgumentNotNull;
|
||||||
|
|
||||||
import com.google.appengine.api.modules.ModulesService;
|
import com.google.appengine.api.modules.ModulesService;
|
||||||
import com.google.appengine.api.modules.ModulesServiceFactory;
|
|
||||||
import dagger.Binds;
|
|
||||||
import dagger.Module;
|
|
||||||
import dagger.Provides;
|
|
||||||
import javax.inject.Inject;
|
import javax.inject.Inject;
|
||||||
|
|
||||||
/** A wrapper for {@link ModulesService} that provides a saner API. */
|
/** A wrapper for {@link ModulesService} that provides a saner API. */
|
||||||
|
@ -60,20 +56,4 @@ public class AppEngineServiceUtilsImpl implements AppEngineServiceUtils {
|
||||||
checkArgument(numInstances > 0, "Number of instances must be greater than 0");
|
checkArgument(numInstances > 0, "Number of instances must be greater than 0");
|
||||||
modulesService.setNumInstances(service, version, numInstances);
|
modulesService.setNumInstances(service, version, numInstances);
|
||||||
}
|
}
|
||||||
|
|
||||||
/** Dagger module for AppEngineServiceUtils. */
|
|
||||||
@Module
|
|
||||||
public abstract static class AppEngineServiceUtilsModule {
|
|
||||||
|
|
||||||
private static final ModulesService modulesService = ModulesServiceFactory.getModulesService();
|
|
||||||
|
|
||||||
@Provides
|
|
||||||
static ModulesService provideModulesService() {
|
|
||||||
return modulesService;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Binds
|
|
||||||
abstract AppEngineServiceUtils provideAppEngineServiceUtils(
|
|
||||||
AppEngineServiceUtilsImpl appEngineServiceUtilsImpl);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -16,9 +16,8 @@ package google.registry.util;
|
||||||
|
|
||||||
import static org.joda.time.DateTimeZone.UTC;
|
import static org.joda.time.DateTimeZone.UTC;
|
||||||
|
|
||||||
import dagger.Module;
|
|
||||||
import dagger.Provides;
|
|
||||||
import javax.annotation.concurrent.ThreadSafe;
|
import javax.annotation.concurrent.ThreadSafe;
|
||||||
|
import javax.inject.Inject;
|
||||||
import org.joda.time.DateTime;
|
import org.joda.time.DateTime;
|
||||||
|
|
||||||
/** Clock implementation that proxies to the real system clock. */
|
/** Clock implementation that proxies to the real system clock. */
|
||||||
|
@ -27,20 +26,12 @@ public class SystemClock implements Clock {
|
||||||
|
|
||||||
private static final long serialVersionUID = 5165372013848947515L;
|
private static final long serialVersionUID = 5165372013848947515L;
|
||||||
|
|
||||||
|
@Inject
|
||||||
|
public SystemClock() {}
|
||||||
|
|
||||||
/** Returns the current time. */
|
/** Returns the current time. */
|
||||||
@Override
|
@Override
|
||||||
public DateTime nowUtc() {
|
public DateTime nowUtc() {
|
||||||
return DateTime.now(UTC);
|
return DateTime.now(UTC);
|
||||||
}
|
}
|
||||||
|
|
||||||
/** Dagger module for {@link SystemClock}. */
|
|
||||||
@Module
|
|
||||||
public static final class SystemClockModule {
|
|
||||||
private static final Clock clock = new SystemClock();
|
|
||||||
|
|
||||||
@Provides
|
|
||||||
static Clock provideClock() {
|
|
||||||
return clock;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -17,8 +17,6 @@ package google.registry.util;
|
||||||
import static com.google.common.base.Preconditions.checkArgument;
|
import static com.google.common.base.Preconditions.checkArgument;
|
||||||
|
|
||||||
import com.google.common.util.concurrent.Uninterruptibles;
|
import com.google.common.util.concurrent.Uninterruptibles;
|
||||||
import dagger.Module;
|
|
||||||
import dagger.Provides;
|
|
||||||
import java.io.Serializable;
|
import java.io.Serializable;
|
||||||
import java.util.concurrent.TimeUnit;
|
import java.util.concurrent.TimeUnit;
|
||||||
import javax.annotation.concurrent.ThreadSafe;
|
import javax.annotation.concurrent.ThreadSafe;
|
||||||
|
@ -45,15 +43,4 @@ public final class SystemSleeper implements Sleeper, Serializable {
|
||||||
checkArgument(duration.getMillis() >= 0);
|
checkArgument(duration.getMillis() >= 0);
|
||||||
Uninterruptibles.sleepUninterruptibly(duration.getMillis(), TimeUnit.MILLISECONDS);
|
Uninterruptibles.sleepUninterruptibly(duration.getMillis(), TimeUnit.MILLISECONDS);
|
||||||
}
|
}
|
||||||
|
|
||||||
/** Dagger module for {@link SystemSleeper}. */
|
|
||||||
@Module
|
|
||||||
public static final class SystemSleeperModule {
|
|
||||||
private static final Sleeper sleeper = new SystemSleeper();
|
|
||||||
|
|
||||||
@Provides
|
|
||||||
static Sleeper provideSleeper() {
|
|
||||||
return sleeper;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
82
java/google/registry/util/UtilsModule.java
Normal file
82
java/google/registry/util/UtilsModule.java
Normal file
|
@ -0,0 +1,82 @@
|
||||||
|
// Copyright 2019 The Nomulus Authors. All Rights Reserved.
|
||||||
|
//
|
||||||
|
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
// you may not use this file except in compliance with the License.
|
||||||
|
// You may obtain a copy of the License at
|
||||||
|
//
|
||||||
|
// http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
//
|
||||||
|
// Unless required by applicable law or agreed to in writing, software
|
||||||
|
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
// See the License for the specific language governing permissions and
|
||||||
|
// limitations under the License.
|
||||||
|
|
||||||
|
package google.registry.util;
|
||||||
|
|
||||||
|
import com.google.appengine.api.modules.ModulesService;
|
||||||
|
import com.google.appengine.api.modules.ModulesServiceFactory;
|
||||||
|
import dagger.Binds;
|
||||||
|
import dagger.Module;
|
||||||
|
import dagger.Provides;
|
||||||
|
import java.security.NoSuchAlgorithmException;
|
||||||
|
import java.security.ProviderException;
|
||||||
|
import java.security.SecureRandom;
|
||||||
|
import javax.inject.Named;
|
||||||
|
import javax.inject.Singleton;
|
||||||
|
|
||||||
|
/** Dagger module to provide instances of various utils classes. */
|
||||||
|
@Module
|
||||||
|
public abstract class UtilsModule {
|
||||||
|
|
||||||
|
@Binds
|
||||||
|
@Singleton
|
||||||
|
abstract Sleeper provideSleeper(SystemSleeper sleeper);
|
||||||
|
|
||||||
|
@Binds
|
||||||
|
@Singleton
|
||||||
|
abstract Clock provideClock(SystemClock clock);
|
||||||
|
|
||||||
|
@Provides
|
||||||
|
@Singleton
|
||||||
|
static ModulesService provideModulesService() {
|
||||||
|
return ModulesServiceFactory.getModulesService();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Binds
|
||||||
|
@Singleton
|
||||||
|
abstract AppEngineServiceUtils provideAppEngineServiceUtils(
|
||||||
|
AppEngineServiceUtilsImpl appEngineServiceUtilsImpl);
|
||||||
|
|
||||||
|
|
||||||
|
@Singleton
|
||||||
|
@Provides
|
||||||
|
public static SecureRandom provideSecureRandom() {
|
||||||
|
try {
|
||||||
|
return SecureRandom.getInstance("NativePRNG");
|
||||||
|
} catch (NoSuchAlgorithmException e) {
|
||||||
|
throw new ProviderException(e);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Singleton
|
||||||
|
@Provides
|
||||||
|
@Named("base58StringGenerator")
|
||||||
|
public static StringGenerator provideBase58StringGenerator(SecureRandom secureRandom) {
|
||||||
|
return new RandomStringGenerator(StringGenerator.Alphabets.BASE_58, secureRandom);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Singleton
|
||||||
|
@Provides
|
||||||
|
@Named("base64StringGenerator")
|
||||||
|
public static StringGenerator provideBase64StringGenerator(SecureRandom secureRandom) {
|
||||||
|
return new RandomStringGenerator(StringGenerator.Alphabets.BASE_64, secureRandom);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Singleton
|
||||||
|
@Provides
|
||||||
|
@Named("digitOnlyStringGenerator")
|
||||||
|
public static StringGenerator provideDigitsOnlyStringGenerator(SecureRandom secureRandom) {
|
||||||
|
return new RandomStringGenerator(StringGenerator.Alphabets.DIGITS_ONLY, secureRandom);
|
||||||
|
}
|
||||||
|
}
|
|
@ -20,18 +20,19 @@ import google.registry.cron.CronModule;
|
||||||
import google.registry.dns.writer.VoidDnsWriterModule;
|
import google.registry.dns.writer.VoidDnsWriterModule;
|
||||||
import google.registry.module.backend.BackendModule;
|
import google.registry.module.backend.BackendModule;
|
||||||
import google.registry.request.RequestModule;
|
import google.registry.request.RequestModule;
|
||||||
import google.registry.util.SystemClock.SystemClockModule;
|
import google.registry.util.UtilsModule;
|
||||||
import google.registry.util.SystemSleeper.SystemSleeperModule;
|
import javax.inject.Singleton;
|
||||||
|
|
||||||
@Component(modules = {
|
@Singleton
|
||||||
SystemClockModule.class,
|
@Component(
|
||||||
ConfigModule.class,
|
modules = {
|
||||||
BackendModule.class,
|
BackendModule.class,
|
||||||
|
ConfigModule.class,
|
||||||
|
CronModule.class,
|
||||||
DnsModule.class,
|
DnsModule.class,
|
||||||
RequestModule.class,
|
RequestModule.class,
|
||||||
|
UtilsModule.class,
|
||||||
VoidDnsWriterModule.class,
|
VoidDnsWriterModule.class,
|
||||||
SystemSleeperModule.class,
|
|
||||||
CronModule.class,
|
|
||||||
})
|
})
|
||||||
interface DnsTestComponent {
|
interface DnsTestComponent {
|
||||||
DnsQueue dnsQueue();
|
DnsQueue dnsQueue();
|
||||||
|
|
|
@ -63,9 +63,9 @@ import google.registry.util.Retrier;
|
||||||
import google.registry.util.TaskQueueUtils;
|
import google.registry.util.TaskQueueUtils;
|
||||||
import google.registry.util.UrlFetchException;
|
import google.registry.util.UrlFetchException;
|
||||||
import java.net.URL;
|
import java.net.URL;
|
||||||
|
import java.security.SecureRandom;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Optional;
|
import java.util.Optional;
|
||||||
import java.util.Random;
|
|
||||||
import org.joda.time.DateTime;
|
import org.joda.time.DateTime;
|
||||||
import org.junit.Before;
|
import org.junit.Before;
|
||||||
import org.junit.Rule;
|
import org.junit.Rule;
|
||||||
|
@ -125,7 +125,7 @@ public class NordnUploadActionTest {
|
||||||
action.taskQueueUtils = new TaskQueueUtils(new Retrier(new FakeSleeper(clock), 3));
|
action.taskQueueUtils = new TaskQueueUtils(new Retrier(new FakeSleeper(clock), 3));
|
||||||
action.tld = "tld";
|
action.tld = "tld";
|
||||||
action.tmchMarksdbUrl = "http://127.0.0.1";
|
action.tmchMarksdbUrl = "http://127.0.0.1";
|
||||||
action.random = new Random();
|
action.random = new SecureRandom();
|
||||||
action.retrier = new Retrier(new FakeSleeper(clock), 3);
|
action.retrier = new Retrier(new FakeSleeper(clock), 3);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -17,16 +17,15 @@ package google.registry.whois;
|
||||||
import dagger.Component;
|
import dagger.Component;
|
||||||
import google.registry.config.RegistryConfig.ConfigModule;
|
import google.registry.config.RegistryConfig.ConfigModule;
|
||||||
import google.registry.request.RequestModule;
|
import google.registry.request.RequestModule;
|
||||||
import google.registry.util.SystemClock.SystemClockModule;
|
import google.registry.util.UtilsModule;
|
||||||
import google.registry.util.SystemSleeper.SystemSleeperModule;
|
|
||||||
import javax.inject.Singleton;
|
import javax.inject.Singleton;
|
||||||
|
|
||||||
@Singleton
|
@Singleton
|
||||||
@Component(modules = {
|
@Component(
|
||||||
|
modules = {
|
||||||
ConfigModule.class,
|
ConfigModule.class,
|
||||||
RequestModule.class,
|
RequestModule.class,
|
||||||
SystemClockModule.class,
|
UtilsModule.class,
|
||||||
SystemSleeperModule.class,
|
|
||||||
WhoisModule.class,
|
WhoisModule.class,
|
||||||
})
|
})
|
||||||
interface WhoisTestComponent {
|
interface WhoisTestComponent {
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue