fix(network-settings): convert DNS cache TTL values to numbers (#2299)
This PR ensures DNS cache TTL values are properly converted to numbers before being sent to the backend. fix #2294
This commit is contained in:
@@ -38,6 +38,8 @@ const messages = defineMessages('components.Settings.SettingsNetwork', {
|
|||||||
proxyBypassFilterTip:
|
proxyBypassFilterTip:
|
||||||
"Use ',' as a separator, and '*.' as a wildcard for subdomains",
|
"Use ',' as a separator, and '*.' as a wildcard for subdomains",
|
||||||
proxyBypassLocalAddresses: 'Bypass Proxy for Local Addresses',
|
proxyBypassLocalAddresses: 'Bypass Proxy for Local Addresses',
|
||||||
|
validationDnsCacheMinTtl: 'You must provide a valid minimum TTL',
|
||||||
|
validationDnsCacheMaxTtl: 'You must provide a valid maximum TTL',
|
||||||
validationProxyPort: 'You must provide a valid port',
|
validationProxyPort: 'You must provide a valid port',
|
||||||
networkDisclaimer:
|
networkDisclaimer:
|
||||||
'Network parameters from your container/system should be used instead of these settings. See the {docs} for more information.',
|
'Network parameters from your container/system should be used instead of these settings. See the {docs} for more information.',
|
||||||
@@ -64,6 +66,20 @@ const SettingsNetwork = () => {
|
|||||||
} = useSWR<NetworkSettings>('/api/v1/settings/network');
|
} = useSWR<NetworkSettings>('/api/v1/settings/network');
|
||||||
|
|
||||||
const NetworkSettingsSchema = Yup.object().shape({
|
const NetworkSettingsSchema = Yup.object().shape({
|
||||||
|
dnsCacheForceMinTtl: Yup.number().when('dnsCacheEnabled', {
|
||||||
|
is: true,
|
||||||
|
then: Yup.number()
|
||||||
|
.typeError(intl.formatMessage(messages.validationDnsCacheMinTtl))
|
||||||
|
.required(intl.formatMessage(messages.validationDnsCacheMinTtl))
|
||||||
|
.min(0),
|
||||||
|
}),
|
||||||
|
dnsCacheForceMaxTtl: Yup.number().when('dnsCacheEnabled', {
|
||||||
|
is: true,
|
||||||
|
then: Yup.number()
|
||||||
|
.typeError(intl.formatMessage(messages.validationDnsCacheMaxTtl))
|
||||||
|
.required(intl.formatMessage(messages.validationDnsCacheMaxTtl))
|
||||||
|
.min(0),
|
||||||
|
}),
|
||||||
proxyPort: Yup.number().when('proxyEnabled', {
|
proxyPort: Yup.number().when('proxyEnabled', {
|
||||||
is: (proxyEnabled: boolean) => proxyEnabled,
|
is: (proxyEnabled: boolean) => proxyEnabled,
|
||||||
then: Yup.number().required(
|
then: Yup.number().required(
|
||||||
@@ -120,8 +136,8 @@ const SettingsNetwork = () => {
|
|||||||
trustProxy: values.trustProxy,
|
trustProxy: values.trustProxy,
|
||||||
dnsCache: {
|
dnsCache: {
|
||||||
enabled: values.dnsCacheEnabled,
|
enabled: values.dnsCacheEnabled,
|
||||||
forceMinTtl: values.dnsCacheForceMinTtl,
|
forceMinTtl: Number(values.dnsCacheForceMinTtl),
|
||||||
forceMaxTtl: values.dnsCacheForceMaxTtl,
|
forceMaxTtl: Number(values.dnsCacheForceMaxTtl),
|
||||||
},
|
},
|
||||||
proxy: {
|
proxy: {
|
||||||
enabled: values.proxyEnabled,
|
enabled: values.proxyEnabled,
|
||||||
@@ -281,7 +297,7 @@ const SettingsNetwork = () => {
|
|||||||
<Field
|
<Field
|
||||||
id="dnsCacheForceMinTtl"
|
id="dnsCacheForceMinTtl"
|
||||||
name="dnsCacheForceMinTtl"
|
name="dnsCacheForceMinTtl"
|
||||||
type="text"
|
type="number"
|
||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
{errors.dnsCacheForceMinTtl &&
|
{errors.dnsCacheForceMinTtl &&
|
||||||
@@ -305,7 +321,7 @@ const SettingsNetwork = () => {
|
|||||||
<Field
|
<Field
|
||||||
id="dnsCacheForceMaxTtl"
|
id="dnsCacheForceMaxTtl"
|
||||||
name="dnsCacheForceMaxTtl"
|
name="dnsCacheForceMaxTtl"
|
||||||
type="text"
|
type="number"
|
||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
{errors.dnsCacheForceMaxTtl &&
|
{errors.dnsCacheForceMaxTtl &&
|
||||||
@@ -375,7 +391,7 @@ const SettingsNetwork = () => {
|
|||||||
<Field
|
<Field
|
||||||
id="proxyPort"
|
id="proxyPort"
|
||||||
name="proxyPort"
|
name="proxyPort"
|
||||||
type="text"
|
type="number"
|
||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
{errors.proxyPort &&
|
{errors.proxyPort &&
|
||||||
|
|||||||
@@ -1022,6 +1022,8 @@
|
|||||||
"components.Settings.SettingsNetwork.toastSettingsSuccess": "Settings saved successfully!",
|
"components.Settings.SettingsNetwork.toastSettingsSuccess": "Settings saved successfully!",
|
||||||
"components.Settings.SettingsNetwork.trustProxy": "Enable Proxy Support",
|
"components.Settings.SettingsNetwork.trustProxy": "Enable Proxy Support",
|
||||||
"components.Settings.SettingsNetwork.trustProxyTip": "Allow Seerr to correctly register client IP addresses behind a proxy",
|
"components.Settings.SettingsNetwork.trustProxyTip": "Allow Seerr to correctly register client IP addresses behind a proxy",
|
||||||
|
"components.Settings.SettingsNetwork.validationDnsCacheMaxTtl": "You must provide a valid maximum TTL",
|
||||||
|
"components.Settings.SettingsNetwork.validationDnsCacheMinTtl": "You must provide a valid minimum TTL",
|
||||||
"components.Settings.SettingsNetwork.validationProxyPort": "You must provide a valid port",
|
"components.Settings.SettingsNetwork.validationProxyPort": "You must provide a valid port",
|
||||||
"components.Settings.SettingsUsers.atLeastOneAuth": "At least one authentication method must be selected.",
|
"components.Settings.SettingsUsers.atLeastOneAuth": "At least one authentication method must be selected.",
|
||||||
"components.Settings.SettingsUsers.defaultPermissions": "Default Permissions",
|
"components.Settings.SettingsUsers.defaultPermissions": "Default Permissions",
|
||||||
|
|||||||
Reference in New Issue
Block a user