Configuration Files (AEN 4.1.0)
===============================

.. raw:: html

    <div class="section" id="configuration-files">
    <h1>Configuration Files<a class="headerlink" href="#configuration-files" title="Permalink to this headline">¶</a></h1>
    <p id="aen-configuration-files-config">The default locations for service configuration files are:</p>
    <ul class="simple">
    <li>server: <code class="docutils literal"><span class="pre">/opt/wakari/wakari-server/etc/wakari/config.json</span></code></li>
    <li>gateway: <code class="docutils literal"><span class="pre">/opt/wakari/wakari-gateway/etc/wakari/config.json</span></code></li>
    <li>compute: <code class="docutils literal"><span class="pre">/opt/wakari/wakari-compute/etc/wakari/config.json</span></code></li>
    </ul>
    <p>For each of these, an additional service-specific configuration file may
    optionally or alternatively be present:</p>
    <ul class="simple">
    <li>server:
    <code class="docutils literal"><span class="pre">/opt/wakari/wakari-server/etc/wakari/wk-server-config.json</span></code></li>
    <li>gateway:
    <code class="docutils literal"><span class="pre">/opt/wakari/wakari-gateway/etc/wakari/wk-gateway-config.json</span></code></li>
    <li>compute:
    <code class="docutils literal"><span class="pre">/opt/wakari/wakari-compute/etc/wakari/wk-compute-config.json</span></code></li>
    </ul>
    <p>Each service will load all configuration files in the following order,
    updating the configuration at each step:</p>
    <div class="highlight-default"><div class="highlight"><pre><span></span><span class="o">/</span><span class="n">etc</span><span class="o">/</span><span class="n">wakari</span><span class="o">/</span><span class="n">config</span><span class="o">.</span><span class="n">json</span>
    <span class="o">/</span><span class="n">etc</span><span class="o">/</span><span class="n">wakari</span><span class="o">/</span><span class="n">wk</span><span class="o">-</span><span class="n">gateway</span><span class="o">-</span><span class="n">config</span><span class="o">.</span><span class="n">json</span>
    <span class="o">/</span><span class="n">opt</span><span class="o">/</span><span class="n">wakari</span><span class="o">/</span><span class="n">wakari</span><span class="o">-</span><span class="n">SERVICE</span><span class="o">/</span><span class="n">etc</span><span class="o">/</span><span class="n">wakari</span><span class="o">/</span><span class="n">config</span><span class="o">.</span><span class="n">json</span>
    <span class="o">/</span><span class="n">opt</span><span class="o">/</span><span class="n">wakari</span><span class="o">/</span><span class="n">wakari</span><span class="o">-</span><span class="n">SERVICE</span><span class="o">/</span><span class="n">etc</span><span class="o">/</span><span class="n">wakari</span><span class="o">/</span><span class="n">wk</span><span class="o">-</span><span class="n">SERVICE</span><span class="o">-</span><span class="n">config</span><span class="o">.</span><span class="n">json</span>
    <span class="o">./</span><span class="n">config</span><span class="o">.</span><span class="n">json</span>
    <span class="o">./</span><span class="n">wk</span><span class="o">-</span><span class="n">gateway</span><span class="o">-</span><span class="n">config</span><span class="o">.</span><span class="n">json</span>
    </pre></div>
    </div>
    <p>See the list of supported configuration keys below for more information.</p>
    <table border="1" class="docutils" id="id1">
    <caption><span class="caption-text">Server Configuration Keys</span><a class="headerlink" href="#id1" title="Permalink to this table">¶</a></caption>
    <colgroup>
    <col width="21%" />
    <col width="21%" />
    <col width="57%" />
    </colgroup>
    <thead valign="bottom">
    <tr class="row-odd"><th class="head">Key</th>
    <th class="head">Default</th>
    <th class="head">Description</th>
    </tr>
    </thead>
    <tbody valign="top">
    <tr class="row-even"><td><code class="docutils literal"><span class="pre">WAKARI_SERVER</span></code></td>
    <td>&nbsp;</td>
    <td>URL of this Anaconda Enterprise Notebooks server</td>
    </tr>
    <tr class="row-odd"><td><code class="docutils literal"><span class="pre">DEFAULT</span></code> <code class="docutils literal"><span class="pre">_PRIVACY</span></code></td>
    <td><code class="docutils literal"><span class="pre">public</span></code></td>
    <td>Default project privacy setting: either <code class="docutils literal"><span class="pre">public</span></code> or <code class="docutils literal"><span class="pre">private</span></code></td>
    </tr>
    <tr class="row-even"><td><code class="docutils literal"><span class="pre">SESSION</span></code> <code class="docutils literal"><span class="pre">_COOKIE_NAME</span></code></td>
    <td><code class="docutils literal"><span class="pre">wakari</span></code> <code class="docutils literal"><span class="pre">.enterprise.session</span></code></td>
    <td>Cookie name used to maintain Anaconda Enterprise Notebooks Enterprise login sessions</td>
    </tr>
    <tr class="row-odd"><td><code class="docutils literal"><span class="pre">USE_SES</span></code></td>
    <td><code class="docutils literal"><span class="pre">false</span></code></td>
    <td>Use Amazon SES to send emails</td>
    </tr>
    <tr class="row-even"><td><code class="docutils literal"><span class="pre">SMTP</span></code></td>
    <td>&nbsp;</td>
    <td>SMTP email settings. See subkeys below.</td>
    </tr>
    <tr class="row-odd"><td><code class="docutils literal"><span class="pre">-</span> <span class="pre">host</span></code></td>
    <td>&nbsp;</td>
    <td>SMTP mail server hostname</td>
    </tr>
    <tr class="row-even"><td><code class="docutils literal"><span class="pre">-</span> <span class="pre">user</span></code></td>
    <td>&nbsp;</td>
    <td>username for SMTP server authentication</td>
    </tr>
    <tr class="row-odd"><td><code class="docutils literal"><span class="pre">-</span> <span class="pre">password</span></code></td>
    <td>&nbsp;</td>
    <td>password for SMTP server authentication</td>
    </tr>
    <tr class="row-even"><td><code class="docutils literal"><span class="pre">-</span> <span class="pre">from_addr</span></code></td>
    <td>&nbsp;</td>
    <td>From address for emails sent through SMTP</td>
    </tr>
    <tr class="row-odd"><td><code class="docutils literal"><span class="pre">verify</span></code> <code class="docutils literal"><span class="pre">_gateway</span></code> <code class="docutils literal"><span class="pre">_certificate</span></code></td>
    <td><code class="docutils literal"><span class="pre">true</span></code></td>
    <td>Boolean indicating whether the server should verify the gateway SSL certificate</td>
    </tr>
    <tr class="row-even"><td><code class="docutils literal"><span class="pre">accounts</span></code></td>
    <td><code class="docutils literal"><span class="pre">wk_server.plugins</span></code> <code class="docutils literal"><span class="pre">.accounts.cloud</span></code></td>
    <td>Account provider class. Set to <code class="docutils literal"><span class="pre">wk_server.plugins</span></code> <code class="docutils literal"><span class="pre">.accounts.ldap_accounts</span></code> for LDAP.</td>
    </tr>
    <tr class="row-odd"><td><code class="docutils literal"><span class="pre">uniqueEmail</span></code></td>
    <td><code class="docutils literal"><span class="pre">true</span></code></td>
    <td>Boolean indicating whether unique user email addresses are required</td>
    </tr>
    <tr class="row-even"><td><code class="docutils literal"><span class="pre">LDAP</span></code></td>
    <td>389</td>
    <td>LDAP Configurations</td>
    </tr>
    <tr class="row-odd"><td><code class="docutils literal"><span class="pre">-</span> <span class="pre">SERVER</span></code></td>
    <td>&nbsp;</td>
    <td>List of LDAP servers. At least one server name must be listed. The primary server should be listed first. All secondary or fail-over servers should be list next.</td>
    </tr>
    <tr class="row-even"><td><code class="docutils literal"><span class="pre">-</span> <span class="pre">PORT</span></code></td>
    <td>389</td>
    <td>The LDAP port on the LDAP server</td>
    </tr>
    <tr class="row-odd"><td><code class="docutils literal"><span class="pre">-</span> <span class="pre">AUTH_TYPE</span></code></td>
    <td>&nbsp;</td>
    <td>LDAP Authentication types: <code class="docutils literal"><span class="pre">simple</span></code>: no encryption not secure or <code class="docutils literal"><span class="pre">TLS</span></code>: encrypted secure requires the TLS_CERT to be set.</td>
    </tr>
    <tr class="row-even"><td><code class="docutils literal"><span class="pre">-</span> <span class="pre">TLS_CERT</span></code></td>
    <td>&nbsp;</td>
    <td>Full path to the TLS certificate file. The cert file must also be provided by the Enterprise</td>
    </tr>
    <tr class="row-odd"><td><code class="docutils literal"><span class="pre">-</span> <span class="pre">BASEDN</span></code></td>
    <td>&nbsp;</td>
    <td>The LDAP Base DN value</td>
    </tr>
    <tr class="row-even"><td><code class="docutils literal"><span class="pre">-</span> <span class="pre">OU</span></code></td>
    <td>&nbsp;</td>
    <td>List of Organizational Units. Some Enterprises group users by OUs in their LDAP server records. Anaconda Enterprise Notebooks will loop over the list of OUs when authenticating a user. The OU value is a list of lists to support multiple OUs where each OU is a single name or a hierarchy of names.</td>
    </tr>
    </tbody>
    </table>
    <table border="1" class="docutils" id="id2">
    <caption><span class="caption-text">Gateway Configuration Keys</span><a class="headerlink" href="#id2" title="Permalink to this table">¶</a></caption>
    <colgroup>
    <col width="21%" />
    <col width="21%" />
    <col width="57%" />
    </colgroup>
    <thead valign="bottom">
    <tr class="row-odd"><th class="head">Key</th>
    <th class="head">Default</th>
    <th class="head">Description</th>
    </tr>
    </thead>
    <tbody valign="top">
    <tr class="row-even"><td><code class="docutils literal"><span class="pre">WAKARI_SERVER</span></code></td>
    <td>&nbsp;</td>
    <td>URL of Anaconda Enterprise Notebooks <code class="docutils literal"><span class="pre">WAKARI_SERVER</span></code></td>
    </tr>
    <tr class="row-odd"><td><code class="docutils literal"><span class="pre">port</span></code></td>
    <td>8089</td>
    <td>Port number used by the gateway application. Must be a non-privileged port (&gt;= 1024)</td>
    </tr>
    <tr class="row-even"><td><code class="docutils literal"><span class="pre">client_id</span></code></td>
    <td>&nbsp;</td>
    <td>Client ID assigned to this gateway by the server during <code class="docutils literal"><span class="pre">wk-gateway-configure</span></code></td>
    </tr>
    <tr class="row-odd"><td><code class="docutils literal"><span class="pre">client_secret</span></code></td>
    <td>&nbsp;</td>
    <td>Client secret assigned to this gateway by the server during <code class="docutils literal"><span class="pre">wk-gateway-configure</span></code></td>
    </tr>
    </tbody>
    </table>
    <table border="1" class="docutils" id="id3">
    <caption><span class="caption-text">Compute Node Configuration Keys</span><a class="headerlink" href="#id3" title="Permalink to this table">¶</a></caption>
    <colgroup>
    <col width="31%" />
    <col width="23%" />
    <col width="46%" />
    </colgroup>
    <thead valign="bottom">
    <tr class="row-odd"><th class="head">Key</th>
    <th class="head">Default</th>
    <th class="head">Description</th>
    </tr>
    </thead>
    <tbody valign="top">
    <tr class="row-even"><td><code class="docutils literal"><span class="pre">WAKARI_SERVER</span></code></td>
    <td>&nbsp;</td>
    <td>URL of Anaconda Enterprise Notebooks <code class="docutils literal"><span class="pre">WAKARI_SERVER</span></code></td>
    </tr>
    <tr class="row-odd"><td><code class="docutils literal"><span class="pre">MANAGE</span></code> <code class="docutils literal"><span class="pre">_ACCOUNTS</span></code></td>
    <td><code class="docutils literal"><span class="pre">true</span></code></td>
    <td>Boolean indicating whether Anaconda Enterprise Notebooks should manage system user accounts. Set to false for LDAP installations</td>
    </tr>
    <tr class="row-even"><td><code class="docutils literal"><span class="pre">port</span></code></td>
    <td>2227</td>
    <td>Port number used by the compute-launcher application. Note that individual applications use dynamic ports</td>
    </tr>
    <tr class="row-odd"><td><code class="docutils literal"><span class="pre">projectRoot</span></code></td>
    <td><code class="docutils literal"><span class="pre">/projects</span></code></td>
    <td>Location of project file storage</td>
    </tr>
    <tr class="row-even"><td><code class="docutils literal"><span class="pre">appIdleTime</span></code></td>
    <td>172800000 (48 hours)</td>
    <td>Idle time before applications will be auto-terminated (in msec)</td>
    </tr>
    <tr class="row-odd"><td><code class="docutils literal"><span class="pre">idleCheckInterval</span></code></td>
    <td>3600000 (1 hour)</td>
    <td>Frequency of idle checks</td>
    </tr>
    <tr class="row-even"><td><code class="docutils literal"><span class="pre">numericUsernames</span></code></td>
    <td><code class="docutils literal"><span class="pre">false</span></code></td>
    <td>Boolean indicating whether numeric usernames are permitted</td>
    </tr>
    </tbody>
    </table>
    <table border="1" class="docutils" id="id4">
    <caption><span class="caption-text">Server Unsupported Configuration Keys - Do not change</span><a class="headerlink" href="#id4" title="Permalink to this table">¶</a></caption>
    <colgroup>
    <col width="31%" />
    <col width="23%" />
    <col width="46%" />
    </colgroup>
    <thead valign="bottom">
    <tr class="row-odd"><th class="head">Key</th>
    <th class="head">Default</th>
    <th class="head">Description</th>
    </tr>
    </thead>
    <tbody valign="top">
    <tr class="row-even"><td><code class="docutils literal"><span class="pre">CDN</span></code></td>
    <td><code class="docutils literal"><span class="pre">$WAKARI_SERVER/static/</span></code></td>
    <td>Location of static assets</td>
    </tr>
    <tr class="row-odd"><td><code class="docutils literal"><span class="pre">MONGO_DB</span></code></td>
    <td><code class="docutils literal"><span class="pre">wakari</span></code></td>
    <td>Name of Anaconda Enterprise Notebooks database in mongodb</td>
    </tr>
    <tr class="row-even"><td><code class="docutils literal"><span class="pre">MONGO_URL</span></code></td>
    <td><code class="docutils literal"><span class="pre">mongodb://localhost/</span></code></td>
    <td>URL of server&#8217;s mongodb instance</td>
    </tr>
    <tr class="row-odd"><td><code class="docutils literal"><span class="pre">PROVIDERS</span></code></td>
    <td><code class="docutils literal"><span class="pre">[&quot;wk_server.plugins</span></code> <code class="docutils literal"><span class="pre">.providers.enterprise&quot;]</span></code></td>
    <td>List of compute provider classes</td>
    </tr>
    <tr class="row-even"><td><code class="docutils literal"><span class="pre">LOGFILE</span></code></td>
    <td><code class="docutils literal"><span class="pre">/opt/wakari/wakari-server/</span></code> <code class="docutils literal"><span class="pre">var/log/wakari/</span></code> <code class="docutils literal"><span class="pre">wakari-server.application.log</span></code></td>
    <td>Path to server log file</td>
    </tr>
    <tr class="row-odd"><td><code class="docutils literal"><span class="pre">MONGO_ACTION</span></code> <code class="docutils literal"><span class="pre">_LOG_SIZE</span></code></td>
    <td>262144000</td>
    <td>Size of Mongo action log in bytes</td>
    </tr>
    <tr class="row-even"><td><code class="docutils literal"><span class="pre">SITE_ADMINS</span></code></td>
    <td>&nbsp;</td>
    <td>List of site administrator email addresses. Used for crash notifications and LDAP password reset requests</td>
    </tr>
    <tr class="row-odd"><td><code class="docutils literal"><span class="pre">FROM</span></code> <code class="docutils literal"><span class="pre">_EMAIL_ADDR</span></code></td>
    <td>&nbsp;</td>
    <td>From address for notification emails sent by Anaconda Enterprise Notebooks</td>
    </tr>
    <tr class="row-even"><td><code class="docutils literal"><span class="pre">uniqueUserName</span></code></td>
    <td><code class="docutils literal"><span class="pre">true</span></code></td>
    <td>Boolean indicating whether unique usernames are required</td>
    </tr>
    </tbody>
    </table>
    <table border="1" class="docutils" id="id5">
    <caption><span class="caption-text">Gateway Unsupported Configuration Keys - Do not change</span><a class="headerlink" href="#id5" title="Permalink to this table">¶</a></caption>
    <colgroup>
    <col width="31%" />
    <col width="23%" />
    <col width="46%" />
    </colgroup>
    <thead valign="bottom">
    <tr class="row-odd"><th class="head">Key</th>
    <th class="head">Default</th>
    <th class="head">Description</th>
    </tr>
    </thead>
    <tbody valign="top">
    <tr class="row-even"><td><code class="docutils literal"><span class="pre">CDN</span></code></td>
    <td><code class="docutils literal"><span class="pre">$WAKARI_SERVER/static/</span></code></td>
    <td>Location of static assets</td>
    </tr>
    <tr class="row-odd"><td><code class="docutils literal"><span class="pre">SUBDOMAIN_ROUTING</span></code></td>
    <td><code class="docutils literal"><span class="pre">false</span></code></td>
    <td>Boolean indicating whether subdomains are being used</td>
    </tr>
    </tbody>
    </table>
    <table border="1" class="docutils" id="id6">
    <caption><span class="caption-text">Compute Node Unsupported Configuration Keys - Do not change</span><a class="headerlink" href="#id6" title="Permalink to this table">¶</a></caption>
    <colgroup>
    <col width="31%" />
    <col width="23%" />
    <col width="46%" />
    </colgroup>
    <thead valign="bottom">
    <tr class="row-odd"><th class="head">Key</th>
    <th class="head">Default</th>
    <th class="head">Description</th>
    </tr>
    </thead>
    <tbody valign="top">
    <tr class="row-even"><td><code class="docutils literal"><span class="pre">CDN</span></code></td>
    <td><code class="docutils literal"><span class="pre">$WAKARI_SERVER/static/</span></code></td>
    <td>Location of static assets</td>
    </tr>
    <tr class="row-odd"><td><code class="docutils literal"><span class="pre">USE_SES</span></code></td>
    <td><code class="docutils literal"><span class="pre">false</span></code></td>
    <td>Use Amazon SES to send emails</td>
    </tr>
    <tr class="row-even"><td><code class="docutils literal"><span class="pre">multiUser</span></code></td>
    <td><code class="docutils literal"><span class="pre">true</span></code></td>
    <td>Boolean indicating whether multi-user support is enabled</td>
    </tr>
    <tr class="row-odd"><td><code class="docutils literal"><span class="pre">multi-project</span></code></td>
    <td><code class="docutils literal"><span class="pre">true</span></code></td>
    <td>Boolean indicating whether multi-project support is enabled</td>
    </tr>
    <tr class="row-even"><td><code class="docutils literal"><span class="pre">ANACONDA_ROOT</span></code></td>
    <td><code class="docutils literal"><span class="pre">/opt/wakari/anaconda</span></code></td>
    <td>Location of Anaconda installation</td>
    </tr>
    <tr class="row-odd"><td><code class="docutils literal"><span class="pre">logLevel</span></code></td>
    <td><code class="docutils literal"><span class="pre">debug</span></code></td>
    <td>Log verbosity. One of: &#8216;error&#8217; &#8216;warn&#8217; &#8216;info&#8217; &#8216;debug&#8217;</td>
    </tr>
    <tr class="row-even"><td><code class="docutils literal"><span class="pre">appLogs</span></code></td>
    <td><code class="docutils literal"><span class="pre">/opt/wakari/wakari-compute/</span></code> <code class="docutils literal"><span class="pre">var/log/wakari/compute-launcher-apps</span></code></td>
    <td>Directory where application logs will be stored</td>
    </tr>
    <tr class="row-odd"><td><code class="docutils literal"><span class="pre">appPIDs</span></code></td>
    <td><code class="docutils literal"><span class="pre">/opt/wakari/wakari-compute/</span></code> <code class="docutils literal"><span class="pre">var/run/compute-launcher-apps</span></code></td>
    <td>Directory where application PID files will be stored</td>
    </tr>
    <tr class="row-even"><td><code class="docutils literal"><span class="pre">applicationLog</span></code></td>
    <td><code class="docutils literal"><span class="pre">/opt/wakari/wakari-compute/</span></code> <code class="docutils literal"><span class="pre">var/log/wakari/</span></code> <code class="docutils literal"><span class="pre">compute-launcher.application.log</span></code></td>
    <td>Path to compute launcher log</td>
    </tr>
    <tr class="row-odd"><td><code class="docutils literal"><span class="pre">accessLog</span></code></td>
    <td><code class="docutils literal"><span class="pre">opt/wakari/wakari-compute/</span></code> <code class="docutils literal"><span class="pre">var/log/wakari/</span></code> <code class="docutils literal"><span class="pre">compute-launcher.access.log</span></code></td>
    <td>Path to compute launcher access log</td>
    </tr>
    </tbody>
    </table>
    </div>
    <div class="section" id="dns-changes">
    <h1>DNS Changes<a class="headerlink" href="#dns-changes" title="Permalink to this headline">¶</a></h1>
    <p>It is possible to change the domain names of the various Anaconda
    Enterprise Notebooks services, however their configuration files need to
    be updated and the services restarted. Locations of configuration files
    are documented <a class="reference internal" href="#aen-configuration-files-config"><span class="std std-ref">here</span></a>. Once these are updated the associated
    services need to be restarted.</p>
    <p>Using the Web interface go to <em>Admin</em> Control Panel, then <em>Data
    Centers</em>, then click the <em>edit</em> button in order to edit the information
    of all the data-centers that are changing their <em>Base Domain Name</em>.
    <strong>NOTE:</strong> This must include the service port if it is different from the
    default (80 for HTTP and 443 for HTTPS).</p>
    <p>Now from the <em>Admin</em> Control Panel go to <em>Enterprise Resources</em> and edit
    each Compute Node that has changed its domain name. These are URLs with
    protocol, hostname, and port.</p>
    </div>
    <div class="section" id="example-ldap-configuration">
    <h1>Example LDAP Configuration<a class="headerlink" href="#example-ldap-configuration" title="Permalink to this headline">¶</a></h1>
    <p>Edit the /opt/wakari/wakari-server/etc/wakari/wk-server-config.json file:</p>
    <div class="highlight-default"><div class="highlight"><pre><span></span><span class="p">{</span>
      <span class="s2">&quot;accounts&quot;</span><span class="p">:</span><span class="s2">&quot;wk_server.plugins.accounts.ldap2&quot;</span><span class="p">,</span>
      <span class="s2">&quot;LDAP&quot;</span> <span class="p">:</span> <span class="p">{</span>
          <span class="s2">&quot;URI&quot;</span><span class="p">:</span> <span class="s2">&quot;ldap://openldap.EXAMPLE.COM&quot;</span><span class="p">,</span>
          <span class="s2">&quot;BIND_DN&quot;</span><span class="p">:</span> <span class="s2">&quot;cn=Bob Jones,ou=Users,DC=EXAMPLE,DC=COM&quot;</span><span class="p">,</span>
          <span class="s2">&quot;BIND_AUTH&quot;</span><span class="p">:</span> <span class="s2">&quot;secretpass&quot;</span><span class="p">,</span>
          <span class="s2">&quot;USER_SEARCH&quot;</span><span class="p">:</span> <span class="p">{</span><span class="s2">&quot;base&quot;</span><span class="p">:</span> <span class="s2">&quot;DC=EXAMPLE,DC=COM&quot;</span><span class="p">,</span>
                          <span class="s2">&quot;filter&quot;</span><span class="p">:</span> <span class="s2">&quot;(| (&amp; (ou=Payroll)</span>
                                           <span class="p">(</span><span class="n">uid</span><span class="o">=%</span><span class="p">(</span><span class="n">username</span><span class="p">)</span><span class="n">s</span><span class="p">))</span>
                                        <span class="p">(</span><span class="o">&amp;</span> <span class="p">(</span><span class="n">ou</span><span class="o">=</span><span class="n">Facilities</span><span class="p">)</span>
                                           <span class="p">(</span><span class="n">uid</span><span class="o">=%</span><span class="p">(</span><span class="n">username</span><span class="p">)</span><span class="n">s</span><span class="p">)))</span><span class="s2">&quot;</span>
                          <span class="p">},</span>
          <span class="s2">&quot;KEY_MAP&quot;</span><span class="p">:</span> <span class="p">{</span><span class="s2">&quot;email&quot;</span><span class="p">:</span> <span class="s2">&quot;mail&quot;</span><span class="p">,</span>
                      <span class="s2">&quot;name&quot;</span><span class="p">:</span> <span class="s2">&quot;cn&quot;</span>
                  <span class="p">}</span>
      <span class="p">}</span>
    <span class="p">}</span>
    </pre></div>
    </div>
    </div>
