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

fix(conf): add Windows support for Unix Domain Socket #2826

Merged
merged 1 commit into from
Mar 10, 2024

Conversation

yin1999
Copy link
Contributor

@yin1999 yin1999 commented Dec 25, 2023

Description

add Windows support for Unix Domain Socket

Supports

Windows Insider Build 17063 and later does support Unix Domain Socket, but the UDS check logic has blocked using UDS in windows.

Tests

config (yaml format):

log:
  loglevel: warning

inbounds:
  - listen: "C:\\path\\to\\v2ray-core\\build_assets\\v2ray.sock"
    tag: v2ray
    protocol: http
    sniffing:
      enabled: true
      destOverride: ["http", "tls"]
    settings:
      auth: noauth
      allowTransparent: false

outbounds:
  - tag: freedom
    protocol: freedom

routing:
  domainStrategy: AsIs
  # all pass
  rules:
    - type: field
      inboundTag: v2ray
      outboundTag: freedom

Before

V2Ray 5.13.0 (V2Fly, a community-driven edition of V2Ray.) Custom (go1.21.2 windows/amd64)
A unified platform for anti-censorship.
Failed to start: main/commands: failed to load config: [.\config.yaml] > infra/conf/v4: unable to listen on domain address: C:\path\to\v2ray-core\build_assets\v2ray.sock

After

Run curl (with PowerShell Core) to test the http proxy server, testing shell:

curl -I --unix-socket 'C:\path\to\v2ray-core\build_assets\v2ray.sock' -X connect http://127.0.0.1/ --next https://www.baidu.com/

Output of curl:

HTTP/1.1 200 Connection established

<!DOCTYPE html>
<!--STATUS OK--><html> <head><meta http-equiv=content-type content=text/html;charset=utf-8><meta http-equiv=X-UA-Compatible content=IE=Edge><meta content=always name=referrer><link rel=stylesheet type=text/css href=https://ss1.bdstatic.com/5eN1bjq8AAUYm2zgoY3K/r/www/cache/bdorz/baidu.min.css><title>百度一下,你就知道</title></head> <body link=#0000cc> <div id=wrapper> <div id=head> <div class=head_wrapper> <div class=s_form> <div class=s_form_wrapper> <div id=lg> <img hidefocus=true src=//www.baidu.com/img/bd_logo1.png width=270 height=129> </div> <form id=form name=f action=//www.baidu.com/s class=fm> <input type=hidden name=bdorz_come value=1> <input type=hidden name=ie value=utf-8> <input type=hidden name=f value=8> <input type=hidden name=rsv_bp value=1> <input type=hidden name=rsv_idx value=1> <input type=hidden name=tn value=baidu><span class="bg s_ipt_wr"><input id=kw name=wd class=s_ipt value maxlength=255 autocomplete=off autofocus=autofocus></span><span class="bg s_btn_wr"><input type=submit id=su value=百度一下 class="bg s_btn" autofocus></span> </form> </div> </div> <div id=u1> <a href=http://news.baidu.com name=tj_trnews class=mnav>新闻</a> <a href=https://www.hao123.com name=tj_trhao123 class=mnav>hao123</a> <a href=http://map.baidu.com name=tj_trmap class=mnav>地图</a> <a href=http://v.baidu.com name=tj_trvideo class=mnav>视频</a> <a href=http://tieba.baidu.com name=tj_trtieba class=mnav>贴吧</a> <noscript> <a href=http://www.baidu.com/bdorz/login.gif?login&amp;tpl=mn&amp;u=http%3A%2F%2Fwww.baidu.com%2f%3fbdorz_come%3d1 name=tj_login class=lb>登录</a> </noscript> <script>document.write('<a href="http://www.baidu.com/bdorz/login.gif?login&tpl=mn&u='+ encodeURIComponent(window.location.href+ (window.location.search === "" ? "?" : "&")+ "bdorz_come=1")+ '" name="tj_login" class="lb">登录</a>');
                </script> <a href=//www.baidu.com/more/ name=tj_briicon class=bri style="display: block;">更多产品</a> </div> </div> </div> <div id=ftCon> <div id=ftConw> <p id=lh> <a href=http://home.baidu.com>关于百度</a> <a href=http://ir.baidu.com>About Baidu</a> </p> <p id=cp>&copy;2017&nbsp;Baidu&nbsp;<a href=http://www.baidu.com/duty/>使用百度前必读</a>&nbsp; <a href=http://jianyi.baidu.com/ class=cp-feedback>意见反馈</a>&nbsp;京ICP证030173号&nbsp; <img src=//www.baidu.com/img/gs.gif> </p> </div> </div> </div> </body> </html>

@codecov-commenter
Copy link

codecov-commenter commented Dec 25, 2023

Codecov Report

Attention: 16 lines in your changes are missing coverage. Please review.

Comparison is base (458db39) 36.12% compared to head (c6d89ef) 36.10%.

Files Patch % Lines
infra/conf/v4/trojan.go 0.00% 10 Missing ⚠️
infra/conf/v4/vless.go 60.00% 3 Missing and 1 partial ⚠️
infra/conf/v4/v2ray.go 0.00% 1 Missing ⚠️
infra/conf/v5cfg/inbound.go 0.00% 1 Missing ⚠️

❗ Your organization needs to install the Codecov GitHub app to enable full functionality.

Additional details and impacted files
@@            Coverage Diff             @@
##           master    #2826      +/-   ##
==========================================
- Coverage   36.12%   36.10%   -0.03%     
==========================================
  Files         715      715              
  Lines       40949    40945       -4     
==========================================
- Hits        14794    14783      -11     
- Misses      24521    24526       +5     
- Partials     1634     1636       +2     

☔ View full report in Codecov by Sentry.
📢 Have feedback on the report? Share it here.

@dyhkwong
Copy link
Contributor

  • infra/conf/v4/trojan.go and infra/conf/v4/vless.go have the same check logic that need fixes.
  • Windows file locker functions (transport/internet/filelocker_windows.go and transport/internet/domainsocket/listener.go) are stubs, are you sure they are not necessary for UDS?

@yin1999
Copy link
Contributor Author

yin1999 commented Dec 25, 2023

  • Windows file locker functions (transport/internet/filelocker_windows.go and transport/internet/domainsocket/listener.go) are stubs, are you sure they are not necessary for UDS?

No, when the file was bound by one process, another process could not bind with it.

  • infra/conf/v4/trojan.go and infra/conf/v4/vless.go have the same check logic that need fixes.

Fixed in: c6d89ef

@xiaokangwang
Copy link
Contributor

Thanks for your contribution. I think this merge request is ready to be merged.

@xiaokangwang xiaokangwang merged commit 527a12d into v2fly:master Mar 10, 2024
39 checks passed
@yin1999 yin1999 deleted the uds-windows-support branch March 10, 2024 10:58
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.

None yet

4 participants