diff --git a/client/src/__locales/en.json b/client/src/__locales/en.json index a4f2293e..27d3dd7f 100644 --- a/client/src/__locales/en.json +++ b/client/src/__locales/en.json @@ -199,6 +199,8 @@ "query_log_disabled": "The query log is disabled and can be configured in the <0>settings</0>", "query_log_strict_search": "Use double quotes for strict search", "query_log_retention_confirm": "Are you sure you want to change query log retention? If you decrease the interval value, some data will be lost", + "anonymize_client_ip": "Anonymize client IP", + "anonymize_client_ip_desc": "Don't save the full IP address of the client in logs and statistics", "dns_config": "DNS server configuration", "blocking_mode": "Blocking mode", "default": "Default", diff --git a/client/src/components/Settings/LogsConfig/Form.js b/client/src/components/Settings/LogsConfig/Form.js index 3daf2b8d..a05c4f10 100644 --- a/client/src/components/Settings/LogsConfig/Form.js +++ b/client/src/components/Settings/LogsConfig/Form.js @@ -42,6 +42,16 @@ const Form = (props) => { disabled={processing} /> </div> + <div className="form__group form__group--settings"> + <Field + name="anonymize_client_ip" + type="checkbox" + component={renderSelectField} + placeholder={t('anonymize_client_ip')} + subtitle={t('anonymize_client_ip_desc')} + disabled={processing} + /> + </div> <label className="form__label"> <Trans>query_log_retention</Trans> </label> diff --git a/client/src/components/Settings/LogsConfig/index.js b/client/src/components/Settings/LogsConfig/index.js index e45b785c..a4af6d36 100644 --- a/client/src/components/Settings/LogsConfig/index.js +++ b/client/src/components/Settings/LogsConfig/index.js @@ -30,7 +30,7 @@ class LogsConfig extends Component { render() { const { - t, enabled, interval, processing, processingClear, + t, enabled, interval, processing, processingClear, anonymize_client_ip, } = this.props; return ( @@ -44,6 +44,7 @@ class LogsConfig extends Component { initialValues={{ enabled, interval, + anonymize_client_ip, }} onSubmit={this.handleFormSubmit} processing={processing} @@ -59,6 +60,7 @@ class LogsConfig extends Component { LogsConfig.propTypes = { interval: PropTypes.number.isRequired, enabled: PropTypes.bool.isRequired, + anonymize_client_ip: PropTypes.bool.isRequired, processing: PropTypes.bool.isRequired, processingClear: PropTypes.bool.isRequired, setLogsConfig: PropTypes.func.isRequired, diff --git a/client/src/components/Settings/index.js b/client/src/components/Settings/index.js index 0603f2cd..33901605 100644 --- a/client/src/components/Settings/index.js +++ b/client/src/components/Settings/index.js @@ -106,6 +106,7 @@ class Settings extends Component { <LogsConfig enabled={queryLogs.enabled} interval={queryLogs.interval} + anonymize_client_ip={queryLogs.anonymize_client_ip} processing={queryLogs.processingSetConfig} processingClear={queryLogs.processingClear} setLogsConfig={setLogsConfig} diff --git a/client/src/reducers/queryLogs.js b/client/src/reducers/queryLogs.js index 52f98fd0..de384461 100644 --- a/client/src/reducers/queryLogs.js +++ b/client/src/reducers/queryLogs.js @@ -134,6 +134,7 @@ const queryLogs = handleActions( oldest: '', filter: DEFAULT_LOGS_FILTER, isFiltered: false, + anonymize_client_ip: false, }, );