| 
									
										
										
										
											2023-02-09 19:18:06 +00:00
										 |  |  | {{define "form/tlsSettings"}} | 
					
						
							|  |  |  | <!-- tls enable --> | 
					
						
							| 
									
										
										
										
											2023-12-13 15:57:36 +00:00
										 |  |  | <a-form v-if="inbound.canEnableTls()" :colon="false" :label-col="{ md: {span:8} }" :wrapper-col="{ md: {span:14} }"> | 
					
						
							| 
									
										
										
										
											2025-04-06 09:40:33 +00:00
										 |  |  |   <a-divider :style="{ margin: '3px 0' }"></a-divider> | 
					
						
							| 
									
										
										
										
											2024-04-20 18:45:36 +00:00
										 |  |  |   <a-form-item label='{{ i18n "security" }}'> | 
					
						
							|  |  |  |     <a-radio-group v-model="inbound.stream.security" button-style="solid"> | 
					
						
							|  |  |  |       <a-radio-button value="none">{{ i18n "none" }}</a-radio-button> | 
					
						
							| 
									
										
										
										
											2024-10-29 11:50:25 +00:00
										 |  |  |       <a-radio-button v-if="inbound.canEnableReality()" value="reality">Reality</a-radio-button> | 
					
						
							| 
									
										
										
										
											2024-04-20 18:45:36 +00:00
										 |  |  |       <a-radio-button value="tls">TLS</a-radio-button> | 
					
						
							|  |  |  |     </a-radio-group> | 
					
						
							|  |  |  |   </a-form-item> | 
					
						
							| 
									
										
										
										
											2023-04-18 18:04:06 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-04-20 18:45:36 +00:00
										 |  |  |   <!-- tls settings --> | 
					
						
							|  |  |  |   <template v-if="inbound.stream.isTls"> | 
					
						
							|  |  |  |     <a-form-item label="SNI" placeholder="Server Name Indication"> | 
					
						
							|  |  |  |       <a-input v-model.trim="inbound.stream.tls.sni"></a-input> | 
					
						
							|  |  |  |     </a-form-item> | 
					
						
							|  |  |  |     <a-form-item label="Cipher Suites"> | 
					
						
							|  |  |  |       <a-select v-model="inbound.stream.tls.cipherSuites" :dropdown-class-name="themeSwitcher.currentTheme"> | 
					
						
							|  |  |  |         <a-select-option value="">Auto</a-select-option> | 
					
						
							|  |  |  |         <a-select-option v-for="key,value in TLS_CIPHER_OPTION" :value="key">[[ value ]]</a-select-option> | 
					
						
							|  |  |  |       </a-select> | 
					
						
							|  |  |  |     </a-form-item> | 
					
						
							|  |  |  |     <a-form-item label="Min/Max Version"> | 
					
						
							|  |  |  |       <a-input-group compact> | 
					
						
							| 
									
										
										
										
											2025-04-06 09:40:33 +00:00
										 |  |  |         <a-select v-model="inbound.stream.tls.minVersion" :style="{ width: '50%' }" | 
					
						
							| 
									
										
										
										
											2024-09-26 13:55:56 +00:00
										 |  |  |           :dropdown-class-name="themeSwitcher.currentTheme"> | 
					
						
							| 
									
										
										
										
											2024-04-20 18:45:36 +00:00
										 |  |  |           <a-select-option v-for="key in TLS_VERSION_OPTION" :value="key">[[ key ]]</a-select-option> | 
					
						
							|  |  |  |         </a-select> | 
					
						
							| 
									
										
										
										
											2025-04-06 09:40:33 +00:00
										 |  |  |         <a-select v-model="inbound.stream.tls.maxVersion" :style="{ width: '50%' }" | 
					
						
							| 
									
										
										
										
											2024-09-26 13:55:56 +00:00
										 |  |  |           :dropdown-class-name="themeSwitcher.currentTheme"> | 
					
						
							| 
									
										
										
										
											2024-04-20 18:45:36 +00:00
										 |  |  |           <a-select-option v-for="key in TLS_VERSION_OPTION" :value="key">[[ key ]]</a-select-option> | 
					
						
							|  |  |  |         </a-select> | 
					
						
							|  |  |  |       </a-input-group> | 
					
						
							|  |  |  |     </a-form-item> | 
					
						
							|  |  |  |     <a-form-item label="uTLS"> | 
					
						
							| 
									
										
										
										
											2025-04-06 09:40:33 +00:00
										 |  |  |       <a-select v-model="inbound.stream.tls.settings.fingerprint" :style="{ width: '100%' }" | 
					
						
							| 
									
										
										
										
											2024-09-26 13:55:56 +00:00
										 |  |  |         :dropdown-class-name="themeSwitcher.currentTheme"> | 
					
						
							| 
									
										
										
										
											2024-04-20 18:45:36 +00:00
										 |  |  |         <a-select-option value=''>None</a-select-option> | 
					
						
							|  |  |  |         <a-select-option v-for="key in UTLS_FINGERPRINT" :value="key">[[ key ]]</a-select-option> | 
					
						
							|  |  |  |       </a-select> | 
					
						
							|  |  |  |     </a-form-item> | 
					
						
							|  |  |  |     <a-form-item label="ALPN"> | 
					
						
							|  |  |  |       <a-select mode="multiple" :dropdown-class-name="themeSwitcher.currentTheme" v-model="inbound.stream.tls.alpn"> | 
					
						
							|  |  |  |         <a-select-option v-for="alpn in ALPN_OPTION" :value="alpn">[[ alpn ]]</a-select-option> | 
					
						
							|  |  |  |       </a-select> | 
					
						
							|  |  |  |     </a-form-item> | 
					
						
							|  |  |  |     <a-form-item label="Allow Insecure"> | 
					
						
							|  |  |  |       <a-switch v-model="inbound.stream.tls.settings.allowInsecure"></a-switch> | 
					
						
							|  |  |  |     </a-form-item> | 
					
						
							| 
									
										
										
										
											2024-05-24 08:17:20 +00:00
										 |  |  |     <a-form-item label="Reject Unknown SNI"> | 
					
						
							|  |  |  |       <a-switch v-model="inbound.stream.tls.rejectUnknownSni"></a-switch> | 
					
						
							|  |  |  |     </a-form-item> | 
					
						
							| 
									
										
										
										
											2024-05-22 15:38:25 +00:00
										 |  |  |     <a-form-item label="Disable System Root"> | 
					
						
							| 
									
										
										
										
											2024-08-29 09:06:48 +00:00
										 |  |  |       <a-switch v-model="inbound.stream.tls.disableSystemRoot"></a-switch> | 
					
						
							| 
									
										
										
										
											2024-05-22 15:38:25 +00:00
										 |  |  |     </a-form-item> | 
					
						
							| 
									
										
										
										
											2024-05-24 08:17:20 +00:00
										 |  |  |     <a-form-item label="Session Resumption"> | 
					
						
							| 
									
										
										
										
											2024-08-29 09:06:48 +00:00
										 |  |  |       <a-switch v-model="inbound.stream.tls.enableSessionResumption"></a-switch> | 
					
						
							| 
									
										
										
										
											2024-04-20 18:45:36 +00:00
										 |  |  |     </a-form-item> | 
					
						
							| 
									
										
										
										
											2025-02-22 12:50:37 +00:00
										 |  |  |     <a-form-item label="VerifyPeerCertInNames"> | 
					
						
							|  |  |  |       <a-input v-model.trim="inbound.stream.tls.verifyPeerCertInNames"></a-input> | 
					
						
							| 
									
										
										
										
											2025-01-26 18:33:50 +00:00
										 |  |  |     </a-form-item> | 
					
						
							| 
									
										
										
										
											2024-04-20 18:45:36 +00:00
										 |  |  |     <template v-for="cert,index in inbound.stream.tls.certs"> | 
					
						
							|  |  |  |       <a-form-item label='{{ i18n "certificate" }}'> | 
					
						
							|  |  |  |         <a-radio-group v-model="cert.useFile" button-style="solid"> | 
					
						
							|  |  |  |           <a-radio-button :value="true">{{ i18n "pages.inbounds.certificatePath" }}</a-radio-button> | 
					
						
							|  |  |  |           <a-radio-button :value="false">{{ i18n "pages.inbounds.certificateContent" }}</a-radio-button> | 
					
						
							|  |  |  |         </a-radio-group> | 
					
						
							| 
									
										
										
										
											2024-09-26 13:55:56 +00:00
										 |  |  |         <a-button icon="plus" v-if="index === 0" type="primary" size="small" @click="inbound.stream.tls.addCert()" | 
					
						
							| 
									
										
										
										
											2025-04-06 09:40:33 +00:00
										 |  |  |           :style="{ marginLeft: '10px' }"></a-button> | 
					
						
							| 
									
										
										
										
											2024-09-26 13:55:56 +00:00
										 |  |  |         <a-button icon="minus" v-if="inbound.stream.tls.certs.length>1" type="primary" size="small" | 
					
						
							| 
									
										
										
										
											2025-04-06 09:40:33 +00:00
										 |  |  |           @click="inbound.stream.tls.removeCert(index)" :style="{ marginLeft: '10px' }"></a-button> | 
					
						
							| 
									
										
										
										
											2024-04-20 18:45:36 +00:00
										 |  |  |       </a-form-item> | 
					
						
							|  |  |  |       <template v-if="cert.useFile"> | 
					
						
							|  |  |  |         <a-form-item label='{{ i18n "pages.inbounds.publicKey" }}'> | 
					
						
							|  |  |  |           <a-input v-model.trim="cert.certFile"></a-input> | 
					
						
							| 
									
										
										
										
											2023-12-13 15:57:36 +00:00
										 |  |  |         </a-form-item> | 
					
						
							| 
									
										
										
										
											2024-04-20 18:45:36 +00:00
										 |  |  |         <a-form-item label='{{ i18n "pages.inbounds.privatekey" }}'> | 
					
						
							|  |  |  |           <a-input v-model.trim="cert.keyFile"></a-input> | 
					
						
							| 
									
										
										
										
											2023-12-13 15:57:36 +00:00
										 |  |  |         </a-form-item> | 
					
						
							| 
									
										
										
										
											2024-04-20 18:45:36 +00:00
										 |  |  |         <a-form-item label=" "> | 
					
						
							| 
									
										
										
										
											2024-09-26 13:55:56 +00:00
										 |  |  |           <a-button type="primary" icon="import" @click="setDefaultCertData(index)"> | 
					
						
							|  |  |  |             {{ i18n "pages.inbounds.setDefaultCert" }}</a-button> | 
					
						
							| 
									
										
										
										
											2023-12-13 15:57:36 +00:00
										 |  |  |         </a-form-item> | 
					
						
							| 
									
										
										
										
											2024-04-20 18:45:36 +00:00
										 |  |  |       </template> | 
					
						
							|  |  |  |       <template v-else> | 
					
						
							|  |  |  |         <a-form-item label='{{ i18n "pages.inbounds.publicKey" }}'> | 
					
						
							| 
									
										
										
										
											2025-08-03 22:57:06 +00:00
										 |  |  |           <a-textarea v-model="cert.cert"></a-textarea> | 
					
						
							| 
									
										
										
										
											2023-12-13 15:57:36 +00:00
										 |  |  |         </a-form-item> | 
					
						
							| 
									
										
										
										
											2024-04-20 18:45:36 +00:00
										 |  |  |         <a-form-item label='{{ i18n "pages.inbounds.privatekey" }}'> | 
					
						
							| 
									
										
										
										
											2025-08-03 22:57:06 +00:00
										 |  |  |           <a-textarea v-model="cert.key"></a-textarea> | 
					
						
							| 
									
										
										
										
											2023-12-13 15:57:36 +00:00
										 |  |  |         </a-form-item> | 
					
						
							| 
									
										
										
										
											2024-04-20 18:45:36 +00:00
										 |  |  |       </template> | 
					
						
							| 
									
										
										
										
											2024-05-22 15:12:37 +00:00
										 |  |  |       <a-form-item label="One Time Loading"> | 
					
						
							|  |  |  |         <a-switch v-model="cert.oneTimeLoading"></a-switch> | 
					
						
							|  |  |  |       </a-form-item> | 
					
						
							|  |  |  |       <a-form-item label='Usage Option'> | 
					
						
							| 
									
										
										
										
											2025-04-06 09:40:33 +00:00
										 |  |  |         <a-select v-model="cert.usage" :style="{ width: '50%' }" :dropdown-class-name="themeSwitcher.currentTheme"> | 
					
						
							| 
									
										
										
										
											2024-05-22 15:12:37 +00:00
										 |  |  |           <a-select-option v-for="key in USAGE_OPTION" :value="key">[[ key ]]</a-select-option> | 
					
						
							|  |  |  |         </a-select> | 
					
						
							|  |  |  |       </a-form-item> | 
					
						
							| 
									
										
										
										
											2024-10-03 08:48:01 +00:00
										 |  |  |       <a-form-item label="Build Chain" v-if="cert.usage === 'issue'"> | 
					
						
							| 
									
										
										
										
											2024-08-03 22:07:33 +00:00
										 |  |  |         <a-switch v-model="cert.buildChain"></a-switch> | 
					
						
							|  |  |  |       </a-form-item> | 
					
						
							| 
									
										
										
										
											2023-12-13 15:57:36 +00:00
										 |  |  |     </template> | 
					
						
							| 
									
										
										
										
											2025-08-04 14:27:57 +00:00
										 |  |  |     <a-form-item label='ECH key'> | 
					
						
							|  |  |  |         <a-input v-model="inbound.stream.tls.echServerKeys"></a-input> | 
					
						
							|  |  |  |     </a-form-item> | 
					
						
							|  |  |  |     <a-form-item label='ECH config'> | 
					
						
							|  |  |  |         <a-input v-model="inbound.stream.tls.settings.echConfigList"></a-input> | 
					
						
							|  |  |  |     </a-form-item> | 
					
						
							|  |  |  |     <a-form-item label='ECH force query'> | 
					
						
							|  |  |  |         <a-select v-model="inbound.stream.tls.echForceQuery" | 
					
						
							|  |  |  |             :dropdown-class-name="themeSwitcher.currentTheme"> | 
					
						
							|  |  |  |             <a-select-option v-for="key in ['none', 'half', 'full']" :value="key">[[ key ]]</a-select-option> | 
					
						
							|  |  |  |         </a-select> | 
					
						
							|  |  |  |     </a-form-item> | 
					
						
							|  |  |  |     <a-form-item label=" "> | 
					
						
							|  |  |  |         <a-button type="primary" icon="import" @click="getNewEchCert">Get New ECH Cert</a-button> | 
					
						
							|  |  |  |     </a-form-item> | 
					
						
							| 
									
										
										
										
											2024-04-20 18:45:36 +00:00
										 |  |  |   </template> | 
					
						
							| 
									
										
										
										
											2023-04-18 18:04:06 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-04-20 18:45:36 +00:00
										 |  |  |   <!-- reality settings --> | 
					
						
							|  |  |  |   <template v-if="inbound.stream.isReality"> | 
					
						
							| 
									
										
										
										
											2024-09-26 13:55:56 +00:00
										 |  |  |     {{template "form/realitySettings"}} | 
					
						
							| 
									
										
										
										
											2024-04-20 18:45:36 +00:00
										 |  |  |   </template> | 
					
						
							| 
									
										
										
										
											2023-04-10 16:28:52 +00:00
										 |  |  | </a-form> | 
					
						
							| 
									
										
										
										
											2024-09-26 13:55:56 +00:00
										 |  |  | {{end}} |