Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[feat] add an API to get the final url after following redirect responses #1698

Open
wants to merge 27 commits into
base: dev-next
Choose a base branch
from

Conversation

k3-cat
Copy link

@k3-cat k3-cat commented Apr 21, 2024

Description

This change adds a new Method getFinalURL() -> string to experimental/libbox.HTTPResponse, which allows the caller obtain the final URL after been redirected.

Motivation

This change should bring the following benefits:

  • performance improvement
  • enhance robustness
  • server can have more flexible update strategies
  • reduce reconfiguration work for user

Expected influences

None
According to Ref1, net/http.Client will follows a redirect response (if less than 10 times) by default. From my test, all existing sing-box apps follow this default behaviour, and this change will not break this behaviour. In addition, the connection can be protected by TLS, so this change should not introduce extra security issue.

nekohasekai and others added 27 commits April 12, 2024 09:04
The `process_path` rule of sing-box is inherited from Clash,
the original code uses the local system's path format (e.g. `\Device\HarddiskVolume1\folder\program.exe`),
but when the device has multiple disks, the HarddiskVolume serial number is not stable.

This change make QueryFullProcessImageNameW output a Win32 path (such as `C:\folder\program.exe`),
which will disrupt the existing `process_path` use cases in Windows.
For historical reasons, sing-box's `domain_suffix` rule matches literal prefixes instead of the same as other projects.

This change modifies the behavior of `domain_suffix`: If the rule value is prefixed with `.`,
the behavior is unchanged, otherwise it matches `(domain|.+\.domain)` instead.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants