Parcourir la source

fix(outbounds): preserve TLS/Reality security on save

OutboundFormModal.onOk built the save payload from form.validateFields(),
which only returns REGISTERED Form.Item values. The security selector is a
Radio.Group that writes streamSettings.security via setFieldValue with no
bound Form.Item, so validateFields() dropped it — network, tlsSettings and
realitySettings (all registered) survived, but the security discriminator
vanished and xray-core fell back to security="none". This hit both new
outbounds and re-saved ones.

Read the full form store with getFieldsValue(true) for the payload (still
validating first), matching how the inbound modal already does it.

Closes #4634
MHSanaei il y a 18 heures
Parent
commit
df777c12d3
1 fichiers modifiés avec 2 ajouts et 2 suppressions
  1. 2 2
      frontend/src/pages/xray/OutboundFormModal.tsx

+ 2 - 2
frontend/src/pages/xray/OutboundFormModal.tsx

@@ -393,9 +393,8 @@ export default function OutboundFormModal({
 
   async function onOk() {
     if (activeKey === '2' && !applyJsonToForm()) return;
-    let values: OutboundFormValues;
     try {
-      values = await form.validateFields();
+      await form.validateFields();
     } catch {
       return;
     }
@@ -403,6 +402,7 @@ export default function OutboundFormModal({
       messageApi.error('Tag already used by another outbound');
       return;
     }
+    const values = form.getFieldsValue(true) as OutboundFormValues;
     onConfirm(formValuesToWirePayload(values));
   }