function form_config_init()

in src/js/index.js [95:155]


function form_config_init() {
    if (window.location.hash.length === 0) {
      gHaveSettingsChanged = true;
      const server = document.getElementById('form-generator').server;
      if (server.value !== '') {
        document.getElementById(`server-${server.value}`).checked = false;
      }
      document.getElementById('version').value = '';
      document.getElementById('openssl').value = '';
      gHaveSettingsChanged = false;
      return;
    }

    const mappings = {
      'true': true,
      'false': false,
    };

    const params = new URLSearchParams(window.location.hash.substr(1));

    // some parameters have been renamed from the old SSL Configuration Generator
    if (params.get('server-version') !== null) {
      params.set('version', params.get('server-version'));
    }
    if (params.get('openssl-version') !== null) {
      params.set('openssl', params.get('openssl-version'));
    }

    gHaveSettingsChanged = true;

    // set the default server version, if we're loading and have "server" but not "version"
    if (params.get('server') !== null && params.get('version') === null) {
      const e_version = document.getElementById('version')
      e_version.value = configs[params.get('server')].latestVersion;
    }

    for (let entry of params.entries()) {
      if (validHashKeys.includes(entry[0])) {
        // find the element
        let e = document.getElementById(entry[0]) || document.querySelector(`input[name="${entry[0]}"][value="${entry[1]}"]`);

        if (!e || !e.type) {
          continue;
        }

        switch (e.type) {
          case 'radio':
          case 'checkbox':
            // if it's in the mappings, we should do a find/replace
            e.checked = mappings[entry[1]] === undefined ? !!entry[1] : mappings[entry[1]];
            break;
          case 'text':
          case 'hidden':
            e.value = xmlEntities(entry[1]);
        }

      }
    }

    gHaveSettingsChanged = false;
}