// 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}
/>
);
}
}