// Copyright (c) 2015 Mattermost, Inc. All Rights Reserved. // See License.txt for license information. import React from 'react'; import * as Utils from 'utils/utils.jsx'; import AdminSettings from './admin_settings.jsx'; import {FormattedMessage, FormattedHTMLMessage} from 'react-intl'; import SettingsGroup from './settings_group.jsx'; import TextSetting from './text_setting.jsx'; import ReloadConfigButton from './reload_config.jsx'; import WebserverModeDropdownSetting from './webserver_mode_dropdown_setting.jsx'; import {ConnectionSecurityDropdownSettingWebserver} from './connection_security_dropdown_setting.jsx'; import BooleanSetting from './boolean_setting.jsx'; export default class ConfigurationSettings extends AdminSettings { constructor(props) { super(props); this.getConfigFromState = this.getConfigFromState.bind(this); this.renderSettings = this.renderSettings.bind(this); } componentWillReceiveProps(nextProps) { // special case for this page since we don't update AdminSettings components when the // stored config changes, but we want this page to update when you reload the config this.setState(this.getStateFromConfig(nextProps.config)); } getConfigFromState(config) { config.ServiceSettings.SiteURL = this.state.siteURL; config.ServiceSettings.ListenAddress = this.state.listenAddress; config.ServiceSettings.WebserverMode = this.state.webserverMode; config.ServiceSettings.ConnectionSecurity = this.state.connectionSecurity; config.ServiceSettings.TLSCertFile = this.state.TLSCertFile; config.ServiceSettings.TLSKeyFile = this.state.TLSKeyFile; config.ServiceSettings.UseLetsEncrypt = this.state.useLetsEncrypt; config.ServiceSettings.LetsEncryptCertificateCacheFile = this.state.letsEncryptCertificateCacheFile; config.ServiceSettings.Forward80To443 = this.state.forward80To443; config.ServiceSettings.ReadTimeout = this.parseIntNonZero(this.state.readTimeout); config.ServiceSettings.WriteTimeout = this.parseIntNonZero(this.state.writeTimeout); return config; } getStateFromConfig(config) { return { siteURL: config.ServiceSettings.SiteURL, listenAddress: config.ServiceSettings.ListenAddress, webserverMode: config.ServiceSettings.WebserverMode, connectionSecurity: config.ServiceSettings.ConnectionSecurity, TLSCertFile: config.ServiceSettings.TLSCertFile, TLSKeyFile: config.ServiceSettings.TLSKeyFile, useLetsEncrypt: config.ServiceSettings.UseLetsEncrypt, letsEncryptCertificateCacheFile: config.ServiceSettings.LetsEncryptCertificateCacheFile, forward80To443: config.ServiceSettings.Forward80To443, readTimeout: config.ServiceSettings.ReadTimeout, writeTimeout: config.ServiceSettings.WriteTimeout }; } renderTitle() { return (