// Copyright (c) 2015 Mattermost, Inc. All Rights Reserved. // See License.txt for license information. import React from 'react'; import {FormattedMessage} from 'react-intl'; import ErrorStore from 'stores/error_store.jsx'; import * as Utils from 'utils/utils.jsx'; import AdminSettings from './admin_settings.jsx'; import BooleanSetting from './boolean_setting.jsx'; import {ConnectionSecurityDropdownSettingWebserver} from './connection_security_dropdown_setting.jsx'; import PurgeCachesButton from './purge_caches.jsx'; import ReloadConfigButton from './reload_config.jsx'; import SettingsGroup from './settings_group.jsx'; import TextSetting from './text_setting.jsx'; import WebserverModeDropdownSetting from './webserver_mode_dropdown_setting.jsx'; export default class ConfigurationSettings extends AdminSettings { constructor(props) { super(props); this.getConfigFromState = this.getConfigFromState.bind(this); this.handleSaved = this.handleSaved.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 }; } handleSaved(newConfig) { const lastError = ErrorStore.getLastError(); if (lastError && lastError.message === 'error_bar.site_url' && newConfig.ServiceSettings.SiteURL) { ErrorStore.clearLastError(true); } } renderTitle() { return ( ); } renderSettings() { return (
} placeholder={Utils.localizeMessage('admin.service.siteURLExample', 'Ex "https://mattermost.example.com:1234"')} helpText={ } value={this.state.siteURL} onChange={this.handleChange} /> } placeholder={Utils.localizeMessage('admin.service.listenExample', 'Ex ":8065"')} helpText={ } value={this.state.listenAddress} onChange={this.handleChange} /> } helpText={ } disabled={this.state.useLetsEncrypt} value={this.state.TLSCertFile} onChange={this.handleChange} /> } helpText={ } disabled={this.state.useLetsEncrypt} value={this.state.TLSKeyFile} onChange={this.handleChange} /> } helpText={ } value={this.state.useLetsEncrypt} onChange={this.handleChange} /> } helpText={ } disabled={!this.state.useLetsEncrypt} value={this.state.letsEncryptCertificateCacheFile} onChange={this.handleChange} /> } helpText={ } value={this.state.forward80To443} onChange={this.handleChange} /> } helpText={ } value={this.state.readTimeout} onChange={this.handleChange} /> } helpText={ } value={this.state.writeTimeout} onChange={this.handleChange} />
); } }