Repository navigation
Conversation
|
@miyunda is attempting to deploy a commit to the 7sageer's projects Team on Vercel. A member of the Team first needs to authorize it. |
This branch has not been deployed
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Problem and observed impact
VLESS Reality share links containing
support-x25519mlkem768=truelose that option when converted to Mihomo/Clash YAML. A node that needs the option can therefore fail Reality handshakes even though its server TCP port is reachable.This was found in the following workflow:
An existing node worked, while a newly added VLESS + TCP + Reality +
xtls-rprx-visionnode repeatedly failed delay tests. Mihomo's API returned{"message":"An error occurred in the delay test"}, withalive: falseand a zero-delay history entry. Testing more than one URL produced the same failure.During the original troubleshooting session, adding only
support-x25519mlkem768: trueto that node's generatedreality-opts, then hot-reloading the configuration, produced a successful delay result of 404 ms. This isolated the missing field as a sufficient fix for that tested client/server combination.Versions recorded during that initial diagnosis: 3x-ui v3.11.0, Xray-core v26.10.21, OpenClash v0.47.001, and Mihomo
alpha-gbc76c13(linux-amd64-v2).Minimal reproduction
Synthetic input; the UUID, domains and public-key placeholder below are not live node credentials:
Before this change, the generated node has only:
After this change:
The output value is a YAML boolean, not a string. The field is documented in Mihomo's TLS configuration.
Root cause and changes
There were two loss points:
createTlsConfig()discarded the URI parameter while constructing the internal Reality object, andClashConfigBuildermapped only the public key and short ID.parseBool()to store recognized values as optionaltls.reality.support_x25519mlkem768.reality-opts.support-x25519mlkem768for VLESS and the existing Trojan Reality branch.SingboxConfigBuilder, since this option is outside the sing-box Reality TLS schema. Copy the nested objects before removing it so the parsed proxy is not mutated.Explicit
falseremains false;1/0and case-insensitivetrue/falsefollow the existing boolean parser. Missing, empty or unrecognized values do not add the option. Legacy links retain their existing output, and no default is forced onto all Reality nodes. No dependencies are added.This preserves a Reality TLS option; it does not add support for VLESS post-quantum
encryptionvalues or guarantee compatibility across all Xray/Mihomo versions.Validation
Automated checks:
true,false,1,0, uppercase values, omitted values, empty values and invalid values.npm test: 39 test files, 315 tests passed.npm run buildandnpm run build:node: passed.git diff --check: passed. No lint script is configured.Manual integration:
Related: #417 describes other VLESS conversion field-loss problems. This PR is limited to the Reality ML-KEM option and does not close that broader issue.