v2ray-core icon indicating copy to clipboard operation
v2ray-core copied to clipboard

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

Open yin1999 opened this issue 1 year ago • 3 comments

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>

yin1999 avatar Dec 25 '23 01:12 yin1999

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 :warning:
infra/conf/v4/vless.go 60.00% 3 Missing and 1 partial :warning:
infra/conf/v4/v2ray.go 0.00% 1 Missing :warning:
infra/conf/v5cfg/inbound.go 0.00% 1 Missing :warning:

:exclamation: 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     

:umbrella: View full report in Codecov by Sentry.
:loudspeaker: Have feedback on the report? Share it here.

codecov-commenter avatar Dec 25 '23 01:12 codecov-commenter

  • 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?

dyhkwong avatar Dec 25 '23 04:12 dyhkwong

  • 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: c6d89efad3229cc9bb5d54805a8b4564fa60dbf7

yin1999 avatar Dec 25 '23 05:12 yin1999

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

xiaokangwang avatar Mar 10 '24 10:03 xiaokangwang