// Copyright (c) 2015-present 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 BooleanSetting from './boolean_setting.jsx'; import {FormattedMessage} from 'react-intl'; import SettingsGroup from './settings_group.jsx'; import TextSetting from './text_setting.jsx'; export default class RateSettings extends AdminSettings { constructor(props) { super(props); this.getConfigFromState = this.getConfigFromState.bind(this); this.renderSettings = this.renderSettings.bind(this); } getConfigFromState(config) { config.RateLimitSettings.Enable = this.state.enable; config.RateLimitSettings.PerSec = this.parseIntNonZero(this.state.perSec); config.RateLimitSettings.MaxBurst = this.parseIntNonZero(this.state.maxBurst); config.RateLimitSettings.MemoryStoreSize = this.parseIntNonZero(this.state.memoryStoreSize); config.RateLimitSettings.VaryByRemoteAddr = this.state.varyByRemoteAddr; config.RateLimitSettings.VaryByHeader = this.state.varyByHeader; return config; } getStateFromConfig(config) { return { enable: config.RateLimitSettings.Enable, perSec: config.RateLimitSettings.PerSec, maxBurst: config.RateLimitSettings.MaxBurst, memoryStoreSize: config.RateLimitSettings.MemoryStoreSize, varyByRemoteAddr: config.RateLimitSettings.VaryByRemoteAddr, varyByHeader: config.RateLimitSettings.VaryByHeader }; } renderTitle() { return ( ); } renderSettings() { return (
} helpText={ } value={this.state.enable} onChange={this.handleChange} /> } placeholder={Utils.localizeMessage('admin.rate.queriesExample', 'Ex "10"')} helpText={ } value={this.state.perSec} onChange={this.handleChange} disabled={!this.state.enable} /> } placeholder={Utils.localizeMessage('admin.rate.maxBurstExample', 'Ex "100"')} helpText={ } value={this.state.maxBurst} onChange={this.handleChange} disabled={!this.state.enable} /> } placeholder={Utils.localizeMessage('admin.rate.memoryExample', 'Ex "10000"')} helpText={ } value={this.state.memoryStoreSize} onChange={this.handleChange} disabled={!this.state.enable} /> } helpText={ } value={this.state.varyByRemoteAddr} onChange={this.handleChange} disabled={!this.state.enable} /> } placeholder={Utils.localizeMessage('admin.rate.httpHeaderExample', 'Ex "X-Real-IP", "X-Forwarded-For"')} helpText={ } value={this.state.varyByHeader} onChange={this.handleChange} disabled={!this.state.enable || this.state.varyByRemoteAddr} />
); } }