mirror of
https://github.com/NginxProxyManager/nginx-proxy-manager.git
synced 2025-12-06 00:16:49 +00:00
Merge pull request #4940 from vsc55/issues_4939
Fix issues #4939, #4938
This commit is contained in:
@@ -3,7 +3,7 @@ import cn from "classnames";
|
|||||||
import { useFormikContext } from "formik";
|
import { useFormikContext } from "formik";
|
||||||
import { useState } from "react";
|
import { useState } from "react";
|
||||||
import type { AccessListClient } from "src/api/backend";
|
import type { AccessListClient } from "src/api/backend";
|
||||||
import { T } from "src/locale";
|
import { intl, T } from "src/locale";
|
||||||
|
|
||||||
interface Props {
|
interface Props {
|
||||||
initialValues: AccessListClient[];
|
initialValues: AccessListClient[];
|
||||||
@@ -65,8 +65,8 @@ export function AccessClientFields({ initialValues, name = "clients" }: Props) {
|
|||||||
value={client.directive}
|
value={client.directive}
|
||||||
onChange={(e) => handleChange(idx, "directive", e.target.value)}
|
onChange={(e) => handleChange(idx, "directive", e.target.value)}
|
||||||
>
|
>
|
||||||
<option value="allow">Allow</option>
|
<option value="allow"><T id="action.allow" /></option>
|
||||||
<option value="deny">Deny</option>
|
<option value="deny"><T id="action.deny" /></option>
|
||||||
</select>
|
</select>
|
||||||
</span>
|
</span>
|
||||||
<input
|
<input
|
||||||
@@ -76,7 +76,7 @@ export function AccessClientFields({ initialValues, name = "clients" }: Props) {
|
|||||||
autoComplete="off"
|
autoComplete="off"
|
||||||
value={client.address}
|
value={client.address}
|
||||||
onChange={(e) => handleChange(idx, "address", e.target.value)}
|
onChange={(e) => handleChange(idx, "address", e.target.value)}
|
||||||
placeholder="192.168.1.100 or 192.168.1.0/24 or 2001:0db8::/32"
|
placeholder={intl.formatMessage({ id: "access-list.rule-source.placeholder" })}
|
||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@@ -112,7 +112,7 @@ export function AccessClientFields({ initialValues, name = "clients" }: Props) {
|
|||||||
value="deny"
|
value="deny"
|
||||||
disabled
|
disabled
|
||||||
>
|
>
|
||||||
<option value="deny">Deny</option>
|
<option value="deny"><T id="action.deny" /></option>
|
||||||
</select>
|
</select>
|
||||||
</span>
|
</span>
|
||||||
<input
|
<input
|
||||||
|
|||||||
@@ -5,7 +5,7 @@ import { useState } from "react";
|
|||||||
import Select, { type ActionMeta } from "react-select";
|
import Select, { type ActionMeta } from "react-select";
|
||||||
import type { DNSProvider } from "src/api/backend";
|
import type { DNSProvider } from "src/api/backend";
|
||||||
import { useDnsProviders } from "src/hooks";
|
import { useDnsProviders } from "src/hooks";
|
||||||
import { T } from "src/locale";
|
import { intl, T } from "src/locale";
|
||||||
import styles from "./DNSProviderFields.module.css";
|
import styles from "./DNSProviderFields.module.css";
|
||||||
|
|
||||||
interface DNSProviderOption {
|
interface DNSProviderOption {
|
||||||
@@ -57,7 +57,7 @@ export function DNSProviderFields({ showBoundaryBox = false }: Props) {
|
|||||||
id="dnsProvider"
|
id="dnsProvider"
|
||||||
closeMenuOnSelect={true}
|
closeMenuOnSelect={true}
|
||||||
isClearable={false}
|
isClearable={false}
|
||||||
placeholder="Select a Provider..."
|
placeholder={intl.formatMessage({ id: "certificates.dns.provider.placeholder" })}
|
||||||
isLoading={isLoading}
|
isLoading={isLoading}
|
||||||
isSearchable
|
isSearchable
|
||||||
onChange={handleChange}
|
onChange={handleChange}
|
||||||
|
|||||||
@@ -1,4 +1,7 @@
|
|||||||
{
|
{
|
||||||
|
"aaccess-list.rule-source.placeholder": {
|
||||||
|
"defaultMessage": "192.168.1.100 or 192.168.1.0/24 or 2001:0db8::/32"
|
||||||
|
},
|
||||||
"access-list": {
|
"access-list": {
|
||||||
"defaultMessage": "Access List"
|
"defaultMessage": "Access List"
|
||||||
},
|
},
|
||||||
@@ -38,12 +41,18 @@
|
|||||||
"action.add-location": {
|
"action.add-location": {
|
||||||
"defaultMessage": "Add Location"
|
"defaultMessage": "Add Location"
|
||||||
},
|
},
|
||||||
|
"action.allow": {
|
||||||
|
"defaultMessage": "Allow"
|
||||||
|
},
|
||||||
"action.close": {
|
"action.close": {
|
||||||
"defaultMessage": "Close"
|
"defaultMessage": "Close"
|
||||||
},
|
},
|
||||||
"action.delete": {
|
"action.delete": {
|
||||||
"defaultMessage": "Delete"
|
"defaultMessage": "Delete"
|
||||||
},
|
},
|
||||||
|
"action.deny": {
|
||||||
|
"defaultMessage": "Deny"
|
||||||
|
},
|
||||||
"action.disable": {
|
"action.disable": {
|
||||||
"defaultMessage": "Disable"
|
"defaultMessage": "Disable"
|
||||||
},
|
},
|
||||||
@@ -68,6 +77,9 @@
|
|||||||
"auditlogs": {
|
"auditlogs": {
|
||||||
"defaultMessage": "Audit Logs"
|
"defaultMessage": "Audit Logs"
|
||||||
},
|
},
|
||||||
|
"auto": {
|
||||||
|
"defaultMessage": "Auto"
|
||||||
|
},
|
||||||
"cancel": {
|
"cancel": {
|
||||||
"defaultMessage": "Cancel"
|
"defaultMessage": "Cancel"
|
||||||
},
|
},
|
||||||
@@ -128,6 +140,9 @@
|
|||||||
"certificates.dns.provider": {
|
"certificates.dns.provider": {
|
||||||
"defaultMessage": "DNS Provider"
|
"defaultMessage": "DNS Provider"
|
||||||
},
|
},
|
||||||
|
"certificates.dns.provider.placeholder": {
|
||||||
|
"defaultMessage": "Select a Provider..."
|
||||||
|
},
|
||||||
"certificates.dns.warning": {
|
"certificates.dns.warning": {
|
||||||
"defaultMessage": "This section requires some knowledge about Certbot and its DNS plugins. Please consult the respective plugins documentation."
|
"defaultMessage": "This section requires some knowledge about Certbot and its DNS plugins. Please consult the respective plugins documentation."
|
||||||
},
|
},
|
||||||
@@ -518,6 +533,24 @@
|
|||||||
"redirection-hosts.count": {
|
"redirection-hosts.count": {
|
||||||
"defaultMessage": "{count} {count, plural, one {Redirection Host} other {Redirection Hosts}}"
|
"defaultMessage": "{count} {count, plural, one {Redirection Host} other {Redirection Hosts}}"
|
||||||
},
|
},
|
||||||
|
"redirection-hosts.http-code.300": {
|
||||||
|
"defaultMessage": "300 Multiple Choices"
|
||||||
|
},
|
||||||
|
"redirection-hosts.http-code.301": {
|
||||||
|
"defaultMessage": "301 Moved permanently"
|
||||||
|
},
|
||||||
|
"redirection-hosts.http-code.302": {
|
||||||
|
"defaultMessage": "302 Moved temporarily"
|
||||||
|
},
|
||||||
|
"redirection-hosts.http-code.303": {
|
||||||
|
"defaultMessage": "303 See other"
|
||||||
|
},
|
||||||
|
"redirection-hosts.http-code.307": {
|
||||||
|
"defaultMessage": "307 Temporary redirect"
|
||||||
|
},
|
||||||
|
"redirection-hosts.http-code.308": {
|
||||||
|
"defaultMessage": "308 Permanent redirect"
|
||||||
|
},
|
||||||
"role.admin": {
|
"role.admin": {
|
||||||
"defaultMessage": "Administrator"
|
"defaultMessage": "Administrator"
|
||||||
},
|
},
|
||||||
@@ -575,6 +608,9 @@
|
|||||||
"stream.forward-host": {
|
"stream.forward-host": {
|
||||||
"defaultMessage": "Forward Host"
|
"defaultMessage": "Forward Host"
|
||||||
},
|
},
|
||||||
|
"stream.forward-host.placeholder": {
|
||||||
|
"defaultMessage": "example.com or 10.0.0.1 or 2001:db8:3333:4444:5555:6666:7777:8888"
|
||||||
|
},
|
||||||
"stream.incoming-port": {
|
"stream.incoming-port": {
|
||||||
"defaultMessage": "Incoming Port"
|
"defaultMessage": "Incoming Port"
|
||||||
},
|
},
|
||||||
|
|||||||
@@ -23,6 +23,9 @@
|
|||||||
"access-list.public.subtitle": {
|
"access-list.public.subtitle": {
|
||||||
"defaultMessage": "No se requiere autenticación básica"
|
"defaultMessage": "No se requiere autenticación básica"
|
||||||
},
|
},
|
||||||
|
"access-list.rule-source.placeholder": {
|
||||||
|
"defaultMessage": "192.168.1.100 o 192.168.1.0/24 o 2001:0db8::/32"
|
||||||
|
},
|
||||||
"access-list.satisfy-any": {
|
"access-list.satisfy-any": {
|
||||||
"defaultMessage": "Satisfacer Cualquiera"
|
"defaultMessage": "Satisfacer Cualquiera"
|
||||||
},
|
},
|
||||||
@@ -38,12 +41,18 @@
|
|||||||
"action.add-location": {
|
"action.add-location": {
|
||||||
"defaultMessage": "Añadir Ubicación"
|
"defaultMessage": "Añadir Ubicación"
|
||||||
},
|
},
|
||||||
|
"action.allow": {
|
||||||
|
"defaultMessage": "Permitir"
|
||||||
|
},
|
||||||
"action.close": {
|
"action.close": {
|
||||||
"defaultMessage": "Cerrar"
|
"defaultMessage": "Cerrar"
|
||||||
},
|
},
|
||||||
"action.delete": {
|
"action.delete": {
|
||||||
"defaultMessage": "Eliminar"
|
"defaultMessage": "Eliminar"
|
||||||
},
|
},
|
||||||
|
"action.deny": {
|
||||||
|
"defaultMessage": "Denegar"
|
||||||
|
},
|
||||||
"action.disable": {
|
"action.disable": {
|
||||||
"defaultMessage": "Deshabilitar"
|
"defaultMessage": "Deshabilitar"
|
||||||
},
|
},
|
||||||
@@ -68,6 +77,9 @@
|
|||||||
"auditlogs": {
|
"auditlogs": {
|
||||||
"defaultMessage": "Registros de Auditoría"
|
"defaultMessage": "Registros de Auditoría"
|
||||||
},
|
},
|
||||||
|
"auto": {
|
||||||
|
"defaultMessage": "Auto"
|
||||||
|
},
|
||||||
"cancel": {
|
"cancel": {
|
||||||
"defaultMessage": "Cancelar"
|
"defaultMessage": "Cancelar"
|
||||||
},
|
},
|
||||||
@@ -128,6 +140,9 @@
|
|||||||
"certificates.dns.provider": {
|
"certificates.dns.provider": {
|
||||||
"defaultMessage": "Proveedor DNS"
|
"defaultMessage": "Proveedor DNS"
|
||||||
},
|
},
|
||||||
|
"certificates.dns.provider.placeholder": {
|
||||||
|
"defaultMessage": "Selecciona un Proveedor..."
|
||||||
|
},
|
||||||
"certificates.dns.warning": {
|
"certificates.dns.warning": {
|
||||||
"defaultMessage": "Esta sección requiere algunos conocimientos sobre Certbot y sus plugins DNS. Consulta la documentación de los plugins respectivos."
|
"defaultMessage": "Esta sección requiere algunos conocimientos sobre Certbot y sus plugins DNS. Consulta la documentación de los plugins respectivos."
|
||||||
},
|
},
|
||||||
@@ -348,7 +363,7 @@
|
|||||||
"defaultMessage": "Soporte de Websockets"
|
"defaultMessage": "Soporte de Websockets"
|
||||||
},
|
},
|
||||||
"host.forward-port": {
|
"host.forward-port": {
|
||||||
"defaultMessage": "Puerto de Reenvío"
|
"defaultMessage": "Puerto"
|
||||||
},
|
},
|
||||||
"host.forward-scheme": {
|
"host.forward-scheme": {
|
||||||
"defaultMessage": "Esquema"
|
"defaultMessage": "Esquema"
|
||||||
@@ -518,6 +533,24 @@
|
|||||||
"redirection-hosts.count": {
|
"redirection-hosts.count": {
|
||||||
"defaultMessage": "{count} {count, plural, one {Host de Redirección} other {Hosts de Redirección}}"
|
"defaultMessage": "{count} {count, plural, one {Host de Redirección} other {Hosts de Redirección}}"
|
||||||
},
|
},
|
||||||
|
"redirection-hosts.http-code.300": {
|
||||||
|
"defaultMessage": "300 Multiples Opciones"
|
||||||
|
},
|
||||||
|
"redirection-hosts.http-code.301": {
|
||||||
|
"defaultMessage": "301 Movido permanentemente"
|
||||||
|
},
|
||||||
|
"redirection-hosts.http-code.302": {
|
||||||
|
"defaultMessage": "302 Movido temporalmente"
|
||||||
|
},
|
||||||
|
"redirection-hosts.http-code.303": {
|
||||||
|
"defaultMessage": "303 Ver otro"
|
||||||
|
},
|
||||||
|
"redirection-hosts.http-code.307": {
|
||||||
|
"defaultMessage": "307 Redirección temporal"
|
||||||
|
},
|
||||||
|
"redirection-hosts.http-code.308": {
|
||||||
|
"defaultMessage": "308 Redirección permanente"
|
||||||
|
},
|
||||||
"role.admin": {
|
"role.admin": {
|
||||||
"defaultMessage": "Administrador"
|
"defaultMessage": "Administrador"
|
||||||
},
|
},
|
||||||
@@ -575,6 +608,9 @@
|
|||||||
"stream.forward-host": {
|
"stream.forward-host": {
|
||||||
"defaultMessage": "Host de Reenvío"
|
"defaultMessage": "Host de Reenvío"
|
||||||
},
|
},
|
||||||
|
"stream.forward-host.placeholder": {
|
||||||
|
"defaultMessage": "example.com o 10.0.0.1 o 2001:db8:3333:4444:5555:6666:7777:8888"
|
||||||
|
},
|
||||||
"stream.incoming-port": {
|
"stream.incoming-port": {
|
||||||
"defaultMessage": "Puerto de Entrada"
|
"defaultMessage": "Puerto de Entrada"
|
||||||
},
|
},
|
||||||
|
|||||||
@@ -162,7 +162,7 @@ const RedirectionHostModal = EasyModal.create(({ id, visible, remove }: Props) =
|
|||||||
required
|
required
|
||||||
{...field}
|
{...field}
|
||||||
>
|
>
|
||||||
<option value="auto">Auto</option>
|
<option value="auto"><T id="auto" /></option>
|
||||||
<option value="http">http</option>
|
<option value="http">http</option>
|
||||||
<option value="https">https</option>
|
<option value="https">https</option>
|
||||||
</select>
|
</select>
|
||||||
@@ -224,12 +224,12 @@ const RedirectionHostModal = EasyModal.create(({ id, visible, remove }: Props) =
|
|||||||
required
|
required
|
||||||
{...field}
|
{...field}
|
||||||
>
|
>
|
||||||
<option value="300">300 Multiple choices</option>
|
<option value="300"><T id="redirection-hosts.http-code.300" /></option>
|
||||||
<option value="301">301 Moved permanently</option>
|
<option value="301"><T id="redirection-hosts.http-code.301" /></option>
|
||||||
<option value="302">302 Moved temporarily</option>
|
<option value="302"><T id="redirection-hosts.http-code.302" /></option>
|
||||||
<option value="303">303 See other</option>
|
<option value="303"><T id="redirection-hosts.http-code.303" /></option>
|
||||||
<option value="307">307 Temporary redirect</option>
|
<option value="307"><T id="redirection-hosts.http-code.307" /></option>
|
||||||
<option value="308">308 Permanent redirect</option>
|
<option value="308"><T id="redirection-hosts.http-code.308" /></option>
|
||||||
</select>
|
</select>
|
||||||
{form.errors.forwardHttpCode ? (
|
{form.errors.forwardHttpCode ? (
|
||||||
<div className="invalid-feedback">
|
<div className="invalid-feedback">
|
||||||
|
|||||||
@@ -5,7 +5,7 @@ import { Alert } from "react-bootstrap";
|
|||||||
import Modal from "react-bootstrap/Modal";
|
import Modal from "react-bootstrap/Modal";
|
||||||
import { Button, Loading, SSLCertificateField, SSLOptionsFields } from "src/components";
|
import { Button, Loading, SSLCertificateField, SSLOptionsFields } from "src/components";
|
||||||
import { useSetStream, useStream } from "src/hooks";
|
import { useSetStream, useStream } from "src/hooks";
|
||||||
import { T } from "src/locale";
|
import { intl, T } from "src/locale";
|
||||||
import { validateNumber, validateString } from "src/modules/Validations";
|
import { validateNumber, validateString } from "src/modules/Validations";
|
||||||
import { showObjectSuccess } from "src/notifications";
|
import { showObjectSuccess } from "src/notifications";
|
||||||
|
|
||||||
@@ -154,7 +154,7 @@ const StreamModal = EasyModal.create(({ id, visible, remove }: Props) => {
|
|||||||
type="text"
|
type="text"
|
||||||
className={`form-control ${form.errors.forwardingHost && form.touched.forwardingHost ? "is-invalid" : ""}`}
|
className={`form-control ${form.errors.forwardingHost && form.touched.forwardingHost ? "is-invalid" : ""}`}
|
||||||
required
|
required
|
||||||
placeholder="example.com or 10.0.0.1 or 2001:db8:3333:4444:5555:6666:7777:8888"
|
placeholder={intl.formatMessage({ id: "stream.forward-host.placeholder" })}
|
||||||
{...field}
|
{...field}
|
||||||
/>
|
/>
|
||||||
{form.errors.forwardingHost ? (
|
{form.errors.forwardingHost ? (
|
||||||
|
|||||||
@@ -103,7 +103,7 @@ export default function Login() {
|
|||||||
required
|
required
|
||||||
maxLength={255}
|
maxLength={255}
|
||||||
className={`form-control ${form.errors.password && form.touched.password ? " is-invalid" : ""}`}
|
className={`form-control ${form.errors.password && form.touched.password ? " is-invalid" : ""}`}
|
||||||
placeholder="Password"
|
placeholder={intl.formatMessage({ id: "password" })}
|
||||||
/>
|
/>
|
||||||
<div className="invalid-feedback">{form.errors.password}</div>
|
<div className="invalid-feedback">{form.errors.password}</div>
|
||||||
</label>
|
</label>
|
||||||
|
|||||||
Reference in New Issue
Block a user