| 
									
										
										
										
											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} }"> | 
					
						
							| 
									
										
										
										
											2023-12-19 09:36:36 +00:00
										 |  |  |     <a-divider style="margin:3px 0;"></a-divider> | 
					
						
							| 
									
										
										
										
											2023-12-13 15:57: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> | 
					
						
							|  |  |  |             <a-tooltip> | 
					
						
							|  |  |  |                 <template slot="title"> | 
					
						
							|  |  |  |                     <span>{{ i18n "pages.inbounds.xtlsDesc" }}</span> | 
					
						
							| 
									
										
										
										
											2023-12-09 17:13:36 +00:00
										 |  |  |                 </template> | 
					
						
							| 
									
										
										
										
											2023-12-13 15:57:36 +00:00
										 |  |  |                 <a-radio-button v-if="inbound.canEnableXtls()" value="xtls">XTLS</a-radio-button> | 
					
						
							|  |  |  |             </a-tooltip> | 
					
						
							|  |  |  |             <a-tooltip> | 
					
						
							|  |  |  |                 <template slot="title"> | 
					
						
							|  |  |  |                     <span>{{ i18n "pages.inbounds.realityDesc" }}</span> | 
					
						
							| 
									
										
										
										
											2023-12-09 17:13:36 +00:00
										 |  |  |                 </template> | 
					
						
							| 
									
										
										
										
											2024-01-12 14:24:42 +00:00
										 |  |  |                 <a-radio-button v-if="inbound.canEnableReality()" value="reality">REALITY</a-radio-button> | 
					
						
							| 
									
										
										
										
											2023-12-13 15:57:36 +00:00
										 |  |  |             </a-tooltip> | 
					
						
							|  |  |  |             <a-radio-button value="tls">TLS</a-radio-button> | 
					
						
							|  |  |  |         </a-radio-group> | 
					
						
							|  |  |  |     </a-form-item> | 
					
						
							| 
									
										
										
										
											2023-04-18 18:04:06 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-12-13 15:57: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> | 
					
						
							| 
									
										
										
										
											2024-01-09 09:10:40 +00:00
										 |  |  |         <a-form-item label="Cipher Suites"> | 
					
						
							| 
									
										
										
										
											2023-12-13 15:57:36 +00:00
										 |  |  |             <a-select v-model="inbound.stream.tls.cipherSuites" :dropdown-class-name="themeSwitcher.currentTheme"> | 
					
						
							| 
									
										
										
										
											2024-01-09 09:10:40 +00:00
										 |  |  |                 <a-select-option value="">Auto</a-select-option> | 
					
						
							| 
									
										
										
										
											2023-12-13 15:57:36 +00:00
										 |  |  |                 <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> | 
					
						
							|  |  |  |                 <a-select v-model="inbound.stream.tls.minVersion" :dropdown-class-name="themeSwitcher.currentTheme"> | 
					
						
							|  |  |  |                     <a-select-option v-for="key in TLS_VERSION_OPTION" :value="key">[[ key ]]</a-select-option> | 
					
						
							|  |  |  |                 </a-select> | 
					
						
							|  |  |  |                 <a-select v-model="inbound.stream.tls.maxVersion" :dropdown-class-name="themeSwitcher.currentTheme"> | 
					
						
							|  |  |  |                     <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"> | 
					
						
							|  |  |  |             <a-select v-model="inbound.stream.tls.settings.fingerprint" | 
					
						
							|  |  |  |                 :dropdown-class-name="themeSwitcher.currentTheme"> | 
					
						
							|  |  |  |                 <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> | 
					
						
							| 
									
										
										
										
											2023-12-19 09:36:36 +00:00
										 |  |  |         <a-form-item label="Allow Insecure"> | 
					
						
							| 
									
										
										
										
											2023-12-13 15:57:36 +00:00
										 |  |  |             <a-switch v-model="inbound.stream.tls.settings.allowInsecure"></a-switch> | 
					
						
							|  |  |  |         </a-form-item> | 
					
						
							|  |  |  |         <a-form-item label="Reject Unknown SNI"> | 
					
						
							|  |  |  |             <a-switch v-model="inbound.stream.tls.rejectUnknownSni"></a-switch> | 
					
						
							|  |  |  |         </a-form-item> | 
					
						
							|  |  |  |         <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> | 
					
						
							|  |  |  |                 <a-button v-if="index === 0" type="primary" size="small" @click="inbound.stream.tls.addCert()" | 
					
						
							|  |  |  |                     style="margin-left: 10px">+</a-button> | 
					
						
							|  |  |  |                 <a-button v-if="inbound.stream.tls.certs.length>1" type="primary" size="small" | 
					
						
							|  |  |  |                     @click="inbound.stream.tls.removeCert(index)" style="margin-left: 10px">-</a-button> | 
					
						
							|  |  |  |             </a-form-item> | 
					
						
							|  |  |  |             <template v-if="cert.useFile"> | 
					
						
							|  |  |  |                 <a-form-item label='{{ i18n "pages.inbounds.publicKeyPath" }}'> | 
					
						
							| 
									
										
										
										
											2023-12-17 15:16:50 +00:00
										 |  |  |                     <a-input v-model.trim="cert.certFile"></a-input> | 
					
						
							| 
									
										
										
										
											2023-12-13 15:57:36 +00:00
										 |  |  |                 </a-form-item> | 
					
						
							|  |  |  |                 <a-form-item label='{{ i18n "pages.inbounds.keyPath" }}'> | 
					
						
							| 
									
										
										
										
											2023-12-17 15:16:50 +00:00
										 |  |  |                     <a-input v-model.trim="cert.keyFile"></a-input> | 
					
						
							| 
									
										
										
										
											2023-12-13 15:57:36 +00:00
										 |  |  |                 </a-form-item> | 
					
						
							|  |  |  |                 <a-form-item label=" "> | 
					
						
							|  |  |  |                     <a-button type="primary" icon="import" @click="setDefaultCertData(index)">{{ i18n | 
					
						
							|  |  |  |                         "pages.inbounds.setDefaultCert" }}</a-button> | 
					
						
							|  |  |  |                 </a-form-item> | 
					
						
							|  |  |  |             </template> | 
					
						
							|  |  |  |             <template v-else> | 
					
						
							|  |  |  |                 <a-form-item label='{{ i18n "pages.inbounds.publicKeyContent" }}'> | 
					
						
							| 
									
										
										
										
											2023-12-17 15:16:50 +00:00
										 |  |  |                     <a-input type="textarea" :rows="3" v-model="cert.cert"></a-input> | 
					
						
							| 
									
										
										
										
											2023-12-13 15:57:36 +00:00
										 |  |  |                 </a-form-item> | 
					
						
							|  |  |  |                 <a-form-item label='{{ i18n "pages.inbounds.keyContent" }}'> | 
					
						
							| 
									
										
										
										
											2023-12-17 15:16:50 +00:00
										 |  |  |                     <a-input type="textarea" :rows="3" v-model="cert.key"></a-input> | 
					
						
							| 
									
										
										
										
											2023-12-13 15:57:36 +00:00
										 |  |  |                 </a-form-item> | 
					
						
							| 
									
										
										
										
											2023-12-09 17:13:36 +00:00
										 |  |  |             </template> | 
					
						
							| 
									
										
										
										
											2024-01-09 09:10:40 +00:00
										 |  |  |             <a-form-item label='OCSP stapling'> | 
					
						
							| 
									
										
										
										
											2023-12-13 15:57:36 +00:00
										 |  |  |                 <a-input-number v-model.number="cert.ocspStapling" :min="0"></a-input-number> | 
					
						
							|  |  |  |             </a-form-item> | 
					
						
							| 
									
										
										
										
											2023-12-09 17:13:36 +00:00
										 |  |  |         </template> | 
					
						
							| 
									
										
										
										
											2023-12-13 15:57:36 +00:00
										 |  |  |     </template> | 
					
						
							| 
									
										
										
										
											2023-04-18 18:04:06 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-12-13 15:57:36 +00:00
										 |  |  |     <!-- xtls settings --> | 
					
						
							|  |  |  |     <template v-else-if="inbound.xtls"> | 
					
						
							|  |  |  |         <a-form-item label="SNI" placeholder="Server Name Indication"> | 
					
						
							|  |  |  |             <a-input v-model.trim="inbound.stream.xtls.sni"></a-input> | 
					
						
							|  |  |  |         </a-form-item> | 
					
						
							|  |  |  |         <a-form-item label="ALPN"> | 
					
						
							|  |  |  |             <a-select mode="multiple" :dropdown-class-name="themeSwitcher.currentTheme" | 
					
						
							|  |  |  |                 v-model="inbound.stream.xtls.alpn"> | 
					
						
							|  |  |  |                 <a-select-option v-for="alpn in ALPN_OPTION" :value="alpn">[[ alpn ]]</a-select-option> | 
					
						
							|  |  |  |             </a-select> | 
					
						
							|  |  |  |         </a-form-item> | 
					
						
							| 
									
										
										
										
											2023-12-19 09:36:36 +00:00
										 |  |  |         <a-form-item label="Allow Insecure"> | 
					
						
							| 
									
										
										
										
											2023-12-13 15:57:36 +00:00
										 |  |  |             <a-switch v-model="inbound.stream.xtls.settings.allowInsecure"></a-switch> | 
					
						
							|  |  |  |         </a-form-item> | 
					
						
							|  |  |  |         <template v-for="cert,index in inbound.stream.xtls.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> | 
					
						
							|  |  |  |                 <a-button v-if="index === 0" type="primary" size="small" @click="inbound.stream.xtls.addCert()" | 
					
						
							|  |  |  |                     style="margin-left: 10px">+</a-button> | 
					
						
							|  |  |  |                 <a-button v-if="inbound.stream.xtls.certs.length>1" type="primary" size="small" | 
					
						
							|  |  |  |                     @click="inbound.stream.xtls.removeCert(index)" style="margin-left: 10px">-</a-button> | 
					
						
							|  |  |  |             </a-form-item> | 
					
						
							|  |  |  |             <template v-if="cert.useFile"> | 
					
						
							|  |  |  |                 <a-form-item label='{{ i18n "pages.inbounds.publicKeyPath" }}'> | 
					
						
							| 
									
										
										
										
											2023-12-17 15:16:50 +00:00
										 |  |  |                     <a-input v-model.trim="cert.certFile"></a-input> | 
					
						
							| 
									
										
										
										
											2023-12-13 15:57:36 +00:00
										 |  |  |                 </a-form-item> | 
					
						
							|  |  |  |                 <a-form-item label='{{ i18n "pages.inbounds.keyPath" }}'> | 
					
						
							| 
									
										
										
										
											2023-12-17 15:16:50 +00:00
										 |  |  |                     <a-input v-model.trim="cert.keyFile"></a-input> | 
					
						
							| 
									
										
										
										
											2023-12-13 15:57:36 +00:00
										 |  |  |                 </a-form-item> | 
					
						
							|  |  |  |                 <a-form-item label=" "> | 
					
						
							|  |  |  |                     <a-button type="primary" icon="import" @click="setDefaultCertXtls(index)">{{ i18n | 
					
						
							|  |  |  |                         "pages.inbounds.setDefaultCert" }}</a-button> | 
					
						
							|  |  |  |                 </a-form-item> | 
					
						
							|  |  |  |             </template> | 
					
						
							|  |  |  |             <template v-else> | 
					
						
							|  |  |  |                 <a-form-item label='{{ i18n "pages.inbounds.publicKeyContent" }}'> | 
					
						
							| 
									
										
										
										
											2023-12-17 15:16:50 +00:00
										 |  |  |                     <a-input type="textarea" :rows="3" v-model="cert.cert"></a-input> | 
					
						
							| 
									
										
										
										
											2023-12-13 15:57:36 +00:00
										 |  |  |                 </a-form-item> | 
					
						
							|  |  |  |                 <a-form-item label='{{ i18n "pages.inbounds.keyContent" }}'> | 
					
						
							| 
									
										
										
										
											2023-12-17 15:16:50 +00:00
										 |  |  |                     <a-input type="textarea" :rows="3" v-model="cert.key"></a-input> | 
					
						
							| 
									
										
										
										
											2023-12-13 15:57:36 +00:00
										 |  |  |                 </a-form-item> | 
					
						
							|  |  |  |             </template> | 
					
						
							| 
									
										
										
										
											2023-12-09 17:13:36 +00:00
										 |  |  |         </template> | 
					
						
							| 
									
										
										
										
											2023-12-13 15:57:36 +00:00
										 |  |  |     </template> | 
					
						
							|  |  |  |     <!-- reality settings --> | 
					
						
							|  |  |  |     <template v-if="inbound.stream.isReality"> | 
					
						
							|  |  |  |         <a-form-item label='Show'> | 
					
						
							|  |  |  |             <a-switch v-model="inbound.stream.reality.show"></a-switch> | 
					
						
							|  |  |  |         </a-form-item> | 
					
						
							|  |  |  |         <a-form-item label='Xver'> | 
					
						
							|  |  |  |             <a-input-number v-model.number="inbound.stream.reality.xver" :min="0"></a-input-number> | 
					
						
							|  |  |  |         </a-form-item> | 
					
						
							|  |  |  |         <a-form-item label='uTLS'> | 
					
						
							|  |  |  |             <a-select v-model="inbound.stream.reality.settings.fingerprint" | 
					
						
							|  |  |  |                 :dropdown-class-name="themeSwitcher.currentTheme"> | 
					
						
							|  |  |  |                 <a-select-option v-for="key in UTLS_FINGERPRINT" :value="key">[[ key ]]</a-select-option> | 
					
						
							|  |  |  |             </a-select> | 
					
						
							|  |  |  |         </a-form-item> | 
					
						
							|  |  |  |         <a-form-item label='Dest'> | 
					
						
							|  |  |  |             <a-input v-model.trim="inbound.stream.reality.dest"></a-input> | 
					
						
							|  |  |  |         </a-form-item> | 
					
						
							| 
									
										
										
										
											2024-01-09 09:10:40 +00:00
										 |  |  |         <a-form-item label='SNI'> | 
					
						
							| 
									
										
										
										
											2023-12-13 15:57:36 +00:00
										 |  |  |             <a-input v-model.trim="inbound.stream.reality.serverNames"></a-input> | 
					
						
							|  |  |  |         </a-form-item> | 
					
						
							|  |  |  |         <a-form-item> | 
					
						
							|  |  |  |             <template slot="label"> | 
					
						
							|  |  |  |                 <a-tooltip> | 
					
						
							|  |  |  |                     <template slot="title"> | 
					
						
							| 
									
										
										
										
											2024-01-10 12:44:37 +00:00
										 |  |  |                         <span>{{ i18n "reset" }}</span> | 
					
						
							| 
									
										
										
										
											2023-12-13 15:57:36 +00:00
										 |  |  |                     </template> | 
					
						
							| 
									
										
										
										
											2024-01-09 13:43:18 +00:00
										 |  |  |                     Short ID | 
					
						
							| 
									
										
										
										
											2023-12-13 16:25:20 +00:00
										 |  |  |                     <a-icon @click="inbound.stream.reality.shortIds = RandomUtil.randomShortId()" type="sync"> </a-icon> | 
					
						
							| 
									
										
										
										
											2023-12-13 15:57:36 +00:00
										 |  |  |                     </a-icon> | 
					
						
							|  |  |  |             </template> | 
					
						
							| 
									
										
										
										
											2023-12-17 15:16:50 +00:00
										 |  |  |             <a-input v-model.trim="inbound.stream.reality.shortIds"></a-input> | 
					
						
							| 
									
										
										
										
											2023-12-13 15:57:36 +00:00
										 |  |  |         </a-form-item> | 
					
						
							|  |  |  |         <a-form-item label='SpiderX'> | 
					
						
							| 
									
										
										
										
											2023-12-17 15:16:50 +00:00
										 |  |  |             <a-input v-model.trim="inbound.stream.reality.settings.spiderX"></a-input> | 
					
						
							| 
									
										
										
										
											2023-12-13 15:57:36 +00:00
										 |  |  |         </a-form-item> | 
					
						
							|  |  |  |         <a-form-item label='Private Key'> | 
					
						
							|  |  |  |             <a-input v-model.trim="inbound.stream.reality.privateKey"></a-input> | 
					
						
							|  |  |  |         </a-form-item> | 
					
						
							|  |  |  |         <a-form-item label='Public Key'> | 
					
						
							|  |  |  |             <a-input v-model.trim="inbound.stream.reality.settings.publicKey"></a-input> | 
					
						
							|  |  |  |         </a-form-item> | 
					
						
							|  |  |  |         <a-form-item label=" "> | 
					
						
							| 
									
										
										
										
											2024-01-09 09:10:40 +00:00
										 |  |  |             <a-button type="primary" icon="import" @click="getNewX25519Cert">Get New Cert</a-button> | 
					
						
							| 
									
										
										
										
											2023-12-13 15:57:36 +00:00
										 |  |  |         </a-form-item> | 
					
						
							|  |  |  |     </template> | 
					
						
							| 
									
										
										
										
											2023-04-10 16:28:52 +00:00
										 |  |  | </a-form> | 
					
						
							| 
									
										
										
										
											2023-12-17 15:16:50 +00:00
										 |  |  | {{end}} |