mirror of
https://github.com/NginxProxyManager/nginx-proxy-manager.git
synced 2025-10-04 03:40:10 +00:00
DNS Provider configuration
This commit is contained in:
128
frontend/src/components/Form/SSLOptionsFields.tsx
Normal file
128
frontend/src/components/Form/SSLOptionsFields.tsx
Normal file
@@ -0,0 +1,128 @@
|
||||
import cn from "classnames";
|
||||
import { Field, useFormikContext } from "formik";
|
||||
import { DNSProviderFields } from "src/components";
|
||||
|
||||
export function SSLOptionsFields() {
|
||||
const { values, setFieldValue } = useFormikContext();
|
||||
const v: any = values || {};
|
||||
|
||||
const newCertificate = v?.certificateId === "new";
|
||||
const hasCertificate = newCertificate || (v?.certificateId && v?.certificateId > 0);
|
||||
const { sslForced, http2Support, hstsEnabled, hstsSubdomains, dnsChallenge } = v;
|
||||
|
||||
const handleToggleChange = (e: any, fieldName: string) => {
|
||||
setFieldValue(fieldName, e.target.checked);
|
||||
};
|
||||
|
||||
const toggleClasses = "form-check-input";
|
||||
const toggleEnabled = cn(toggleClasses, "bg-cyan");
|
||||
|
||||
return (
|
||||
<>
|
||||
<div className="row">
|
||||
<div className="col-6">
|
||||
<Field name="sslForced">
|
||||
{({ field }: any) => (
|
||||
<label className="form-check form-switch mt-1">
|
||||
<input
|
||||
className={sslForced ? toggleEnabled : toggleClasses}
|
||||
type="checkbox"
|
||||
checked={!!sslForced}
|
||||
onChange={(e) => handleToggleChange(e, field.name)}
|
||||
disabled={!hasCertificate}
|
||||
/>
|
||||
<span className="form-check-label">Force SSL</span>
|
||||
</label>
|
||||
)}
|
||||
</Field>
|
||||
</div>
|
||||
<div className="col-6">
|
||||
<Field name="http2Support">
|
||||
{({ field }: any) => (
|
||||
<label className="form-check form-switch mt-1">
|
||||
<input
|
||||
className={http2Support ? toggleEnabled : toggleClasses}
|
||||
type="checkbox"
|
||||
checked={!!http2Support}
|
||||
onChange={(e) => handleToggleChange(e, field.name)}
|
||||
disabled={!hasCertificate}
|
||||
/>
|
||||
<span className="form-check-label">HTTP/2 Support</span>
|
||||
</label>
|
||||
)}
|
||||
</Field>
|
||||
</div>
|
||||
</div>
|
||||
<div className="row">
|
||||
<div className="col-6">
|
||||
<Field name="hstsEnabled">
|
||||
{({ field }: any) => (
|
||||
<label className="form-check form-switch mt-1">
|
||||
<input
|
||||
className={hstsEnabled ? toggleEnabled : toggleClasses}
|
||||
type="checkbox"
|
||||
checked={!!hstsEnabled}
|
||||
onChange={(e) => handleToggleChange(e, field.name)}
|
||||
disabled={!hasCertificate || !sslForced}
|
||||
/>
|
||||
<span className="form-check-label">HSTS Enabled</span>
|
||||
</label>
|
||||
)}
|
||||
</Field>
|
||||
</div>
|
||||
<div className="col-6">
|
||||
<Field name="hstsSubdomains">
|
||||
{({ field }: any) => (
|
||||
<label className="form-check form-switch mt-1">
|
||||
<input
|
||||
className={hstsSubdomains ? toggleEnabled : toggleClasses}
|
||||
type="checkbox"
|
||||
checked={!!hstsSubdomains}
|
||||
onChange={(e) => handleToggleChange(e, field.name)}
|
||||
disabled={!hasCertificate || !hstsEnabled}
|
||||
/>
|
||||
<span className="form-check-label">HSTS Enabled</span>
|
||||
</label>
|
||||
)}
|
||||
</Field>
|
||||
</div>
|
||||
</div>
|
||||
{newCertificate ? (
|
||||
<>
|
||||
<Field name="dnsChallenge">
|
||||
{({ field }: any) => (
|
||||
<label className="form-check form-switch mt-1">
|
||||
<input
|
||||
className={dnsChallenge ? toggleEnabled : toggleClasses}
|
||||
type="checkbox"
|
||||
checked={!!dnsChallenge}
|
||||
onChange={(e) => handleToggleChange(e, field.name)}
|
||||
/>
|
||||
<span className="form-check-label">Use a DNS Challenge</span>
|
||||
</label>
|
||||
)}
|
||||
</Field>
|
||||
|
||||
{dnsChallenge ? <DNSProviderFields /> : null}
|
||||
|
||||
<Field name="letsencryptEmail">
|
||||
{({ field }: any) => (
|
||||
<div className="row mt-5">
|
||||
<label htmlFor="letsencryptEmail" className="form-label">
|
||||
Email Address for Let's Encrypt
|
||||
</label>
|
||||
<input
|
||||
id="letsencryptEmail"
|
||||
type="email"
|
||||
className="form-control"
|
||||
required
|
||||
{...field}
|
||||
/>
|
||||
</div>
|
||||
)}
|
||||
</Field>
|
||||
</>
|
||||
) : null}
|
||||
</>
|
||||
);
|
||||
}
|
Reference in New Issue
Block a user