mirror of
https://github.com/google/nomulus.git
synced 2025-05-07 23:38:21 +02:00
This also updates to a newer version of Closure Rules and fixes a protobuf dep compile issue. Full description of the change: Soy supports 2 kinds of loops: * foreach- for iterating over items in a collection, e.g. {foreach $item in $list}...{/foreach} * for - for indexed iteration, e.g. {for $i in range(0, 10)}...{/for} The reason Soy has two different loops is an accident of history; Soy didn’t use to have a proper grammar for expressions and so the alternate ‘for...range’ syntax was added to make it possible to write indexed loops. As the grammar has improved having the two syntaxes is no longer necessary and so we are eliminating one of them. ------------- Created by MOE: https://github.com/google/moe MOE_MIGRATED_REVID=182843207
184 lines
7.9 KiB
Text
184 lines
7.9 KiB
Text
// Copyright 2017 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.
|
|
|
|
{namespace registry.soy.registrar.security}
|
|
|
|
|
|
/** Registrar security settings page for view and edit. */
|
|
{template .settings}
|
|
{@param ipAddressWhitelist: list<string>}
|
|
{@param phonePasscode: string}
|
|
{@param? clientCertificate: string}
|
|
{@param? clientCertificateHash: string}
|
|
{@param? failoverClientCertificate: string}
|
|
{@param readonly: bool}
|
|
<form name="item" class="{css('item')} {css('registrar')}">
|
|
<h1>Security settings</h1>
|
|
{if $readonly}
|
|
<p>Use the 'Edit' button above to switch to enable editing the information below.
|
|
{/if}
|
|
<table>
|
|
<tr class="{css('kd-settings-pane-section')}">
|
|
<td>
|
|
<label class="{css('setting-label')}">Web console access</label>
|
|
<td class="{css('setting')}">
|
|
<p>Your web console account is managed through
|
|
<a href="https://www.google.com/accounts"
|
|
target="_blank" rel="noopener">Google account settings</a>.
|
|
|
|
<tr class="{css('kd-settings-pane-section')}">
|
|
<td>
|
|
<label class="{css('setting-label')}">IP whitelist</label>
|
|
<span class="{css('description')}">Restrict access to EPP
|
|
production servers to the following IP/IPv6 addresses, or
|
|
ranges like 1.1.1.1/24</span>
|
|
</td>
|
|
<td class="{css('setting')}">
|
|
<div class="{css('info')} {css('summary')}">
|
|
<div id="ips">
|
|
{for $ip in $ipAddressWhitelist}
|
|
{call .ip}
|
|
{param name: 'ipAddressWhitelist[' + index($ip) + ']' /}
|
|
{param ip: $ip /}
|
|
{/call}
|
|
{/for}
|
|
</div>
|
|
<div class="{css('hidden')}">
|
|
<input id="newIp" value="" placeholder="Enter IP address..."/>
|
|
<button id="btn-add-ip" type="button"
|
|
class="{css('kd-button')} {css('btn-add')}">Add</button>
|
|
</div>
|
|
</div>
|
|
</td>
|
|
|
|
<tr class="{css('kd-settings-pane-section')}">
|
|
<td>
|
|
<label class="{css('setting-label')}">Telephone passcode</label>
|
|
<span class="{css('description')}">Use this for support calls to the Registry.</span>
|
|
</td>
|
|
<td class="{css('setting')}">
|
|
<div id="domain-registrar-phone-passcode">
|
|
{if isNonnull($phonePasscode)}
|
|
<input id="phonePasscode"
|
|
name="phonePasscode"
|
|
value="{$phonePasscode}" readonly>
|
|
{else}
|
|
<p><em>Your phone passcode is pending allocation.</em>
|
|
{/if}
|
|
</div>
|
|
</td>
|
|
|
|
<tr class="{css('kd-settings-pane-section')}">
|
|
<td>
|
|
<label class="{css('setting-label')}">SSL Certificate</label>
|
|
<span class="{css('description')}">X.509 PEM certificate for EPP production access.</span>
|
|
</td>
|
|
<td class="{css('setting')}">
|
|
{if isNonnull($clientCertificate)}
|
|
<textarea
|
|
name="clientCertificate"
|
|
rows="16"
|
|
cols="64"
|
|
{if $readonly}readonly{/if}>{$clientCertificate}</textarea>
|
|
{elseif isNonnull($clientCertificateHash)}
|
|
{if $readonly}
|
|
<p>
|
|
You submitted your SSL certificate before full certificates
|
|
were stored. Currently only the hash of your certificate may
|
|
be viewed. Please re-submit or update your certificate by
|
|
using the Edit button on the top of this page.
|
|
|
|
<p class="{css('certhash')}">
|
|
<span class="{css('description')}">Existing certificate SHA256 base64 hash:</span>
|
|
{$clientCertificateHash}
|
|
{else}
|
|
<textarea name="clientCertificate" rows="16" cols="64"></textarea>
|
|
{/if}
|
|
{else}
|
|
{if $readonly}
|
|
<p>No certificate on file. Use the Edit button on the top of this page to add one.
|
|
{else}
|
|
<p>No certificate on file. Please enter your certificate below.
|
|
<textarea id="clientCertificate"
|
|
name="clientCertificate"
|
|
rows="16" cols="64"></textarea>
|
|
<div class="{css('description')}">
|
|
Example format:
|
|
<textarea id="exampleCert" rows="17" cols="64" readonly>
|
|
-----BEGIN CERTIFICATE-----{\n}
|
|
MIIDvTCCAqWgAwIBAgIJAK/PgPT0jTwRMA0GCSqGSIb3DQEBCwUAMHUxCzAJBgNV{\n}
|
|
BAYTAlVTMREwDwYDVQQIDAhOZXcgWW9yazERMA8GA1UEBwwITmV3IFlvcmsxDzAN{\n}
|
|
BgNVBAoMBkdvb2dsZTEdMBsGA1UECwwUZG9tYWluLXJlZ2lzdHJ5LXRlc3QxEDAO{\n}
|
|
BgNVBAMMB2NsaWVudDEwHhcNMTUwODI2MTkxODA4WhcNNDMwMTExMTkxODA4WjB1{\n}
|
|
MQswCQYDVQQGEwJVUzERMA8GA1UECAwITmV3IFlvcmsxETAPBgNVBAcMCE5ldyBZ{\n}
|
|
b3JrMQ8wDQYDVQQKDAZHb29nbGUxHTAbBgNVBAsMFGRvbWFpbi1yZWdpc3RyeS10{\n}
|
|
ZXN0MRAwDgYDVQQDDAdjbGllbnQxMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIB{\n}
|
|
CgKCAQEAvoE/IoFJyzb0dU4NFhL8FYgy+B/GnUd5aA66CMx5xKRMbEAtIgxU8TTO{\n}
|
|
W+9jdTsE00Grk3Ct4KdY73CYW+6IFXL4O0K/m5S+uajh+I2UMVZJV38RAIqNxue0{\n}
|
|
Egv9M4haSsCVIPcX9b+6McywfYSF1bzPb2Gb2FAQO7Jb0BjlPhPMIROCrbG40qPg{\n}
|
|
LWrl33dz+O52kO+DyZEzHqI55xH6au77sMITsJe+X23lzQcMFUUm8moiOw0EKrj/{\n}
|
|
GaMTZLHP46BCRoJDAPTNx55seIwgAHbKA2VVtqrvmA2XYJQA6ipdhfKRoJFy8Z8H{\n}
|
|
DYsorGtazQL2HhF/5uJD25z1m5eQHQIDAQABo1AwTjAdBgNVHQ4EFgQUParEmiSR{\n}
|
|
U/Oqy8hr7k+MBKhZwVkwHwYDVR0jBBgwFoAUParEmiSRU/Oqy8hr7k+MBKhZwVkw{\n}
|
|
DAYDVR0TBAUwAwEB/zANBgkqhkiG9w0BAQsFAAOCAQEAojsUhF6PtZrStnHBFWNR{\n}
|
|
ryzvANB8krZlYeX9Hkqn8zIVfAkpbVmL8aZQ7yj17jSpw47PQh3x5gwA9yc/SS0G{\n}
|
|
E1rGuxYH02UGbua8G0+vviSQfLtskPQzK7EIR63WNhHEo/Q9umLJkZ0LguWEBf3L{\n}
|
|
q8CoXv2i/RNvqVPcTNp/zCKXJZAa8wAjNRJs834AZj4k5xwyYZ3F8D5PGz+YMOmV{\n}
|
|
M9Qd+NdXSC/Qn7HQzFhE8p5elBV35P8oX5dXEfn0S7zOXDenp5JvvLoggOWOcKsq{\n}
|
|
KiWDQrsT+TMKmHL94/h4t7FghtQLMzY5SGYJsYTv/LG8tewrz6KRb/Wj3JNojyEw{\n}
|
|
Ug=={\n}
|
|
-----END CERTIFICATE-----
|
|
</textarea>
|
|
</div>
|
|
{/if}
|
|
{/if}
|
|
</td>
|
|
|
|
<tr class="{css('kd-settings-pane-section')}">
|
|
<td>
|
|
<label class="{css('setting-label')}">
|
|
Failover SSL Certificate
|
|
</label>
|
|
<span class="{css('description')}">
|
|
X.509 PEM backup certificate for EPP Production Access.
|
|
</span>
|
|
<td class="{css('setting')}">
|
|
{if $readonly and not isNonnull($failoverClientCertificate)}
|
|
<p>No failover certificate on file.
|
|
{else}
|
|
<textarea id="failoverClientCertificate"
|
|
name="failoverClientCertificate"
|
|
rows="16"
|
|
cols="64"
|
|
{if $readonly}readonly{/if}>
|
|
{$failoverClientCertificate ?: ''}
|
|
</textarea>
|
|
{/if}
|
|
|
|
</table>
|
|
</form>
|
|
{/template}
|
|
|
|
|
|
/** IP address form input. */
|
|
{template .ip}
|
|
{@param name: string}
|
|
{@param ip: string}
|
|
<div class="{css('ip')}">
|
|
<button type="button" class="{css('kd-button')} {css('btn-remove')} {css('hidden')}">
|
|
<i class="{css('icon-remove')} {css('edit')}">x</i>
|
|
</button>
|
|
<input name="{$name}" value="{$ip}" readonly>
|
|
</div>
|
|
{/template}
|