Commit graph

288 commits

Author SHA1 Message Date
nickfelt
70fbdccea2 Restrict domain transfer pricing to 1 year
This CL restricts domain transfer pricing lookups (on domain check and info) to
only support a 1-year period for inquiring about transfer fees.  That treatment
matches what we do for domain restores, which are also always one year.  This is
a followup to [] which disallowed actual transfer request flows from
specifying multi-year periods.

Since it's no longer necessary, this CL also changes the domain transfer pricing
logic to drop the years parameter, including removing the parameter from the
custom pricing logic TransferPriceParameters object.

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=150367839
2017-03-21 15:33:29 -04:00
ctingue
443e260f91 Disallow renaming of external hosts
EPP host spec section 3.2.5 requires that attempts to update hosts that are linked to different registrars must fail with error code 2305. This is complicated to do, as linked status is eventually consistent, and even more painful when checking links to those of different registrars.

This change forbids external-to-anything renames entirely.

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=150336754
2017-03-21 15:24:28 -04:00
nickfelt
e1c9395749 Simplify blocking of renews for domains in pending transfer
This tweaks the logic that prohibits domain renews during pending transfers to just use the regular verifyNoDisallowedStatuses() check instead of a special check on TransferData with a custom exception.  This is simpler and produces a better error message: we get "Operation disallowed by status: pendingTransfer" instead of "Object with given ID (foo.com) already has a pending transfer" (which is intended for use when denying a transfer request for an object already being transferred, not for this case).

For the record, we originally prohibited renews for domains in pending transfer because there's no good reason to do such a renew: b/12533793.  But in fact our transfer server-approve logic relies heavily on this behavior, because otherwise the domain's expiration time computed in cloneProjectedAtTime() will reflect the transfer year added to the post-renew expiration time, whereas all the transfer server approve entities (e.g. new autorenew billing event) will reflect the pre-renew expiration time at the moment the transfer was requested.  As such, it would be quite difficult to ever support a renew during pending transfer, since it would need to change many fields within the transfer server approve entities.

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=150325501
2017-03-21 15:21:28 -04:00
nickfelt
6a8b25360c Use StatusValue XML names in EPP error messages
This changes ResourceStatusProhibitsOperationException so that we print out the list of StatusValues using their XML names rather than the literal enum name, i.e. we use "pendingDelete" rather than "PENDING_DELETE".

This seems more correct given that EPP clients will be used to seeing the status values in the XML representation, and it also matches the existing ResourceHasClientUpdateProhibitedException that hardcodes "clientUpdateProhibited":
http://[]/third_party/java_src/gtld/java/google/registry/flows/exceptions/ResourceHasClientUpdateProhibitedException.java?l=22&rcl=146111211

Also reorganized related test methods and added some missing tests, including for ContactTransferRequestFlow which previously had none.  I also renamed the "clientProhibitedStatusValue" tests to instead say "statusValueNotClientSettable" to be clearer about what's being tested, and that it's not related to the "clientXXProhibited" statuses.

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=150248562
2017-03-21 15:14:02 -04:00
nickfelt
f28104ad03 Restrict domain transfer periods to 1 year
It turns out that this ICANN policy appears to prohibit transfers with
registration extensions other than 1 year (section A.8):
https://www.icann.org/resources/pages/policy-2012-03-07-en

This is backed up by the practical fact that we've never seen a registrar
request a transfer for any period other than one year.

And removing the support for multi-year transfers vastly simplifies
transfer logic and eliminates a bunch of annoying corner cases.  Users
still can achieve the same thing by doing a 1-year transfer plus a
manual renewal afterwards for the remainder of the desired extension.

This change leaves in place lots of infrastructure to support multi-year
transfers that is now obsolete (e.g. TransferData.extendedRegistrationYears).
This should all be cleaned up, but it's a lower priority than fixing the
gap itself and insulating ourselves against needing to handle any real
multi-year transfer case.  Once this CL goes in, we can start ignoring
extendedRegistrationYears entirely because it'll always be 1 year, which
makes the cleanup process easier.

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=150212864
2017-03-21 15:11:07 -04:00
jianglai
c426a80563 Add a new reservation type to support nameserver restrictions
A new field (allowedNameservers) is added to ReservedListEntry that stores the allow nameservers for the label. The field itself is a comma separated string, but the actual lines within a reserved list file (from which the field is parsed) uses colon to separate nameservers, to avoid conflicting with the commas used as primary separators in a CSV file.

Combined with upcoming update(s) that enables locking down an entire TLD to only delegate domains with a nameserver restricted reservation type, this change will enable us to restrict domain delegation to nameservers specifically specified in the allowed nameservers list, in order to prevent malicious delegation in case the registrar for a brand TLD is compromised.

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=149989330
2017-03-21 14:56:31 -04:00
cgoldfeder
9174855a47 Remove the ofy().load() inside of HostResource.cloneProjectedAtTime
In fact, completely eviscerate cloneProjectedAtTime (to be removed in
a followup CL) in favor of doing the projection of transfers and the
loading of values from the superordinate domain at call sites. This
is one of the issues that blocked the memcache audit work, since the
load inside of cloneProjectedAtTime could not be controlled by the
caller.

Note: fixed a minor bug where a subordinate host created after its superordinate domain was last transferred should have lastTransferTime==null but was previously reporting the domain's lastTransferTime.

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=149769125
2017-03-13 11:22:55 -04:00
Wolfgang Meyers
d4a428fc24 Document TLD import architecture
-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=149575471
2017-03-13 11:22:38 -04:00
mcilwain
9c33245200 Add Markdown documentation for WHOIS metrics
-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=149551067
2017-03-13 10:36:52 -04:00
mcilwain
dd400f30f5 Don't allow duplicates in premium/reserved lists
-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=148458642
2017-02-27 11:17:58 -05:00
mcilwain
cdadb54acd Refer to Datastore everywhere correctly by its capitalized form
-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=147479683
2017-02-17 12:12:12 -05:00
ctingue
53262d82bb Add period restriction to domain flows
Specifically, Domain[Create,Allocate,ApplicationCreate]Flow

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=147458283
2017-02-14 12:14:04 -05:00
Wolfgang Meyers
090983cc7f Add usage documentation for RDE imports
-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=147034684
2017-02-09 14:24:38 -05:00
mcilwain
bf068e61d9 Move the environment configuration YAML files into the main JAR
This allows configuration to work properly from the nomulus tool.

TESTED=I built and ran it against several environments, and all worked
properly.

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=146697124
2017-02-06 16:46:52 -05:00
mcilwain
636da9f7f0 Convert yet more configuration options to YAML
With a particular focus on custom logic and caching.

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=146258446
2017-02-02 17:05:28 -05:00
mcilwain
a061f74ee7 Move more environment-specific settings into YAML configuration
-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=146164592
2017-02-02 16:57:13 -05:00
jianglai
7f3941a843 Correct small grammatical error
-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=146155052
2017-02-02 16:44:35 -05:00
mcilwain
bfc4841761 Document YAML configuration in Markdown files
-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=145832118
2017-01-30 15:03:53 -05:00
jianglai
4fed3a9ae6 Daggerize ExportSnapshotServlet and CheckSnapshotServlet
Eradicate the last remnants of un-injectable servlets!

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=145598002
2017-01-30 15:03:53 -05:00
cgoldfeder
4e34fd53f4 Update documentation about manually creating RDE commands
-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=144451211
2017-01-18 11:05:06 -05:00
mcilwain
d3397e991e Remove the old RegistryConfig paradigm entirely
We are now ready to begin configuration using YAML, mediated by ConfigModule.

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=143818507
2017-01-09 12:01:09 -05:00
jart
734130aa73 Restructure Maven dependencies in build
We're now using java_import_external instead of maven_jar. This allows
us to specify the relationships between jars, thereby allowing us to
eliminate scores of vendor BUILD files that did nothing but re-export
@foo//jar targets, thus addressing the concerns of djhworld on Hacker
News: https://news.ycombinator.com/item?id=12738072

We now have redundant failover mirrors, which is a feature I added to
Bazel 0.4.2 in ed7ced0018

A new standard naming convention is now being used for all Maven repos.
Those names are calculated from the group_artifact name using the
following algorithm that eliminates redundancy:
https://gist.github.com/jart/41bfd977b913c2301627162f1c038e55

The JSR330 dep has been removed from java targets if they also depend
on Dagger, since Dagger always exports JSR330.

Annotation processor dependencies should now be leaner and meaner, by
more appropriately managing what needs to be on the classpath at
runtime. This should trim down the production jar by >1MB. As it stands
currently in the open source world:

- backend_jar_deploy.jar: 50MB
- frontend_jar_deploy.jar: 30MB
- tools_jar_deploy.jar: 45MB

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=143487929
2017-01-09 11:59:04 -05:00
mountford
98bbf8e7a2 Add documentation about the initial setting of RDE cursors
-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=143112635
2017-01-09 11:59:04 -05:00
mcilwain
9d9c527917 Reconcile FeesAndCredits handling in price customization
Also adds a mechanism to ensure that fee extensions are included when custom
pricing logic adds a custom fee, and fixes up the domain restore flow to
properly use the restore price.

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=142715136
2016-12-22 16:09:14 -05:00
mountford
348cea9d8d Clarify documentation about RDE cursors
-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=142286219
2016-12-19 11:09:20 -05:00
mcilwain
3740171bbf Update create logic to ignore signed marks unless in sunrise
This addresses an issue where the existing logic assumed that the presence of a
signed mark means the current flow is a sunrise/sunrush request, when this isn't
necessarily true. It's safe to ignore signed marks in other circumstances.

This is a combination of work by Justin Graham <justin.af.graham@gmail.com>,
Nick Felt, and me (Ben). It is based on the original PR located at:
https://github.com/google/nomulus/pull/41

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=140784461
2016-12-06 11:52:46 -05:00
jart
59f4984083 Upgrade Nomulus to latest Closure Rules
Significant technical debt has been eliminated. The latest best
practices are also now adopted for dealing with runfiles and dealing
with files across repositories.

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=140762937
2016-12-06 11:52:46 -05:00
mcilwain
e0dbc1cb12 Add link to final ReferenceUnion migration commit in Developing doc
-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=139219744
2016-11-15 15:15:55 -05:00
mcilwain
9aa2f3b96e Make host flows only accept canonicalized host names as input
This now throws errors when a non-lower-cased, non-puny-coded, or non-canonicalized host name is passed in as an input parameter.

The approach we'll take is to first notify registrars which hosts we'll be renaming, then
issue EPP host update commands to effect those renames as superuser, then push this code
live to production.

This fixes #38 on GitHub.

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=138441130
2016-11-10 11:29:03 -05:00
mountford
baaaacd4f5 Add extra flow logic hooks for application delete and update
-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=138393251
2016-11-10 11:24:32 -05:00
mcilwain
cef07f6bc5 Use cursor to track updating of registrar sheet
-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=138221931
2016-11-10 11:21:29 -05:00
mcilwain
050e734f6f Add information to doc on which app the nomulus tool connects to
-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=137998955
2016-11-10 11:12:23 -05:00
ctingue
4ae9f6a107 Add documentation for ForeignKeyIndex and EppResourceIndex
-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=137536233
2016-11-02 15:19:34 -04:00
cgoldfeder
1dbc5f6bb0 Replace command.applyTo() with inlined builder operations
These are much easier to understand.

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=137446273
2016-11-02 15:19:34 -04:00
ctingue
5f8a95d853 Add additional LRP tests for non-application phases
-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=137292394
2016-11-02 15:19:34 -04:00
mountford
fad0aa4ffa Add coding FAQ with answers from mailing list
We have answered various questions on the mailing list over time. Some of those answers are gathered into a file, in case they might be useful to others.

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=136831550
2016-10-24 11:57:00 -04:00
mountford
975f574256 Add Registrar FAQ document
-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=136765156
2016-10-24 10:55:37 -04:00
ctingue
4feb8b695f Add code structure documentation
Added overviews for EPP resources, billing events, history entries.

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=136732236
2016-10-24 10:42:37 -04:00
cgoldfeder
475203532e Flatten the domain and application create flows
-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=136601151
2016-10-19 13:08:33 -04:00
mcilwain
43821f650e Explain how to perform Datastore schema migrations in developing doc
-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=136522383
2016-10-19 11:07:52 -04:00
mountford
d355424f72 Add summary of support for ICANN reporting
-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=136487545
2016-10-19 11:06:24 -04:00
nickfelt
8c1021f8cb Add temporary extra steps to "first steps tutorial" in docs
These are needed for now to get all nomulus tool commands working.  Also some other minor doc cleanup.

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=136471375
2016-10-18 10:59:39 -04:00
mcilwain
00234a1038 Remove empty section headers from Markdown docs
The section headers can be re-added later along with their actual content.

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=136349771
2016-10-17 17:54:52 -04:00
mountford
2d11f12115 Post-submit changes to BRDA and RDE documentation
-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=136196437
2016-10-14 17:49:14 -04:00
mountford
afcd04f190 Add open source documentation about BRDA deposits
Also contains some fixes to the RDE documentation, and adds some site map entries.

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=136193503
2016-10-14 17:44:53 -04:00
mcilwain
6636e02d57 Clean up and consolidate some unused queues
-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=136170276
2016-10-14 17:37:21 -04:00
mcilwain
148270a813 Split premium/reserved list management into separate docs
-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=136089439
2016-10-14 17:00:33 -04:00
mountford
86dde1d976 Add open source RDE operational documentation
Taken from the SRE procedures page.

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=136083695
2016-10-14 17:00:32 -04:00
shikhman
7794fb04d1 Add documentation on Bazel to the code structure docs
-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=136083155
2016-10-14 17:00:32 -04:00
shikhman
9695024f1b Add Stackdriver Monitoring info to the operational documentation
-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=136066350
2016-10-14 16:58:07 -04:00