11import cn from "classnames" ;
22import { Field , useFormikContext } from "formik" ;
3- import { DNSProviderFields } from "src/components" ;
3+ import { DNSProviderFields , DomainNamesField } from "src/components" ;
44import { intl } from "src/locale" ;
55
6- export function SSLOptionsFields ( ) {
6+ interface Props {
7+ forHttp ?: boolean ; // the sslForced, http2Support, hstsEnabled, hstsSubdomains fields
8+ forceDNSForNew ?: boolean ;
9+ requireDomainNames ?: boolean ; // used for streams
10+ }
11+ export function SSLOptionsFields ( { forHttp = true , forceDNSForNew, requireDomainNames } : Props ) {
712 const { values, setFieldValue } = useFormikContext ( ) ;
813 const v : any = values || { } ;
914
@@ -12,6 +17,10 @@ export function SSLOptionsFields() {
1217 const { sslForced, http2Support, hstsEnabled, hstsSubdomains, meta } = v ;
1318 const { dnsChallenge } = meta || { } ;
1419
20+ if ( forceDNSForNew && newCertificate && ! dnsChallenge ) {
21+ setFieldValue ( "meta.dnsChallenge" , true ) ;
22+ }
23+
1524 const handleToggleChange = ( e : any , fieldName : string ) => {
1625 setFieldValue ( fieldName , e . target . checked ) ;
1726 if ( fieldName === "meta.dnsChallenge" && ! e . target . checked ) {
@@ -24,8 +33,8 @@ export function SSLOptionsFields() {
2433 const toggleClasses = "form-check-input" ;
2534 const toggleEnabled = cn ( toggleClasses , "bg-cyan" ) ;
2635
27- return (
28- < >
36+ const getHttpOptions = ( ) => (
37+ < div >
2938 < div className = "row" >
3039 < div className = "col-6" >
3140 < Field name = "sslForced" >
@@ -102,6 +111,12 @@ export function SSLOptionsFields() {
102111 </ Field >
103112 </ div >
104113 </ div >
114+ </ div >
115+ ) ;
116+
117+ return (
118+ < div >
119+ { forHttp ? getHttpOptions ( ) : null }
105120 { newCertificate ? (
106121 < >
107122 < Field name = "meta.dnsChallenge" >
@@ -110,7 +125,8 @@ export function SSLOptionsFields() {
110125 < input
111126 className = { dnsChallenge ? toggleEnabled : toggleClasses }
112127 type = "checkbox"
113- checked = { ! ! dnsChallenge }
128+ checked = { forceDNSForNew ? true : ! ! dnsChallenge }
129+ disabled = { forceDNSForNew }
114130 onChange = { ( e ) => handleToggleChange ( e , field . name ) }
115131 />
116132 < span className = "form-check-label" >
@@ -119,10 +135,10 @@ export function SSLOptionsFields() {
119135 </ label >
120136 ) }
121137 </ Field >
122-
138+ { requireDomainNames ? < DomainNamesField /> : null }
123139 { dnsChallenge ? < DNSProviderFields /> : null }
124140 </ >
125141 ) : null }
126- </ >
142+ </ div >
127143 ) ;
128144}
0 commit comments