Commit Graph
87 Commits
Author SHA1 Message Date
yuhan6665 aa846b8420 Update v1.6.4 and dependencies 2022-11-13 12:21:18 -05:00
yuhan6665 8006430c15 Add logic to filter TLS_AES_128_CCM_8_SHA256 2022-11-13 12:18:23 -05:00
yuhan6665 04278a8940 Refactor some variable names 2022-11-13 12:18:23 -05:00
yuhan6665 48f7cc2132 Reshape multi buffer to fix the padding when buffer is full 2022-11-13 12:18:23 -05:00
yuhan6665 15d66974cc Update v1.6.3 and dependencies 2022-11-06 22:15:41 -05:00
yuhan6665 8ef609ff46 Enable UTLS fingerprint for XTLS Vision 2022-11-06 21:50:19 -05:00
yuhan6665 fffd908db2 Fix direct and splice flow 2022-11-06 21:50:19 -05:00
yuhan6665 9b293013e6 Update v1.6.2 and dependencies 2022-10-29 00:57:00 -04:00
yuhan6665 5e695327b1 Add XTLS RPRX's Vision (#1235)
* Add XTLS RPRX's Vision

* Add helpful warning when security is wrong

* Add XTLS padding (draft)

* Fix  number of packet to filter

* Xtls padding version 1.0 and unpadding logic
2022-10-29 00:51:59 -04:00
yuhan6665 2637970976 Update version 1.6.1
Also update dependencies
2022-10-21 21:13:17 -04:00
yuhan6665 8117b66949 Generate all protos 2022-10-10 13:17:32 -04:00
yuhan6665 6bb735d103 Update version 1.6.0 2022-09-18 10:46:21 -04:00
yuhan6665 c21595a937 Fix an issue with ss2022 generics 2022-09-16 21:54:37 -04:00
yuhan6665 92795677f9 Update dependencies 2022-09-16 21:47:06 -04:00
yuhan6665 debd2e3ba8 Remove compatibility code
The minimum support go version is already 1.18
2022-09-16 20:39:07 -04:00
yuhan6665 84537e98c4 Update xtls and go to 1.19 2022-09-15 22:06:59 -04:00
yuhan6665 35d5a7fe93 Update version 1.5.10 2022-08-27 22:57:35 -04:00
yuhan6665 71a9a6dd55 Update dependencies
- Sync with sing upstream
2022-08-27 22:57:14 -04:00
yuhan6665 b67314796f Add shadowsocks 2022 relay config 2022-08-09 10:37:21 -04:00
340234166b Add TCPKeepAliveIdle in Sockopt option (#1166)
* Add TCP keep alive idle setting

* Add TCP keep alive idle setting: auto generated

* Add TCP keep alive support in Linux

* Add TCP keep alive support in MacOS, FreeBSD

* Add TCP keep alive support in Windows

* fix bug introduced in adding tcp keep alive adjustment

* embed macOS const to avoid platform inconsistency

* embed macOS const to avoid platform inconsistency(again)

* add TCP Keep Alive support in config

* use sys/unix instead of syscall

Suggestion from:
https://github.com/v2fly/v2ray-core/pull/1395#issuecomment-974761647

* use sys/unix instead of syscall

Suggestion from:
https://github.com/v2fly/v2ray-core/pull/1395#issuecomment-974761647

* Separate TcpKeepAliveIdle and TcpKeepAliveInterval check logic

* Disable tcp keepAlive when TcpKeepAliveIdle < 0 and  TcpKeepAliveInterval <= 0

Co-authored-by: xqzr <34030394+xqzr@users.noreply.github.com>

Co-authored-by: ValdikSS <iam@valdikss.org.ru>
Co-authored-by: Shelikhoo <xiaokangwang@outlook.com>
Co-authored-by: xqzr <34030394+xqzr@users.noreply.github.com>
2022-07-31 09:55:40 -04:00
yuhan6665 5e323958b6 Unify dns log 2022-07-24 23:54:58 -04:00
yuhan6665 05483cc729 Update version 1.5.9 2022-07-15 22:05:40 -04:00
yuhan6665 b4e11e1856 Update other dependencies 2022-07-15 22:05:40 -04:00
yuhan6665 f956b142d8 Use protojson for marshal api output 2022-07-15 22:05:40 -04:00
yuhan6665anddependabot[bot] 00230a74d5 Fix new Quic lib: KeepAlivePeriod (#1139)
* Bump github.com/lucas-clemente/quic-go from 0.27.2 to 0.28.0

Bumps [github.com/lucas-clemente/quic-go](https://github.com/lucas-clemente/quic-go) from 0.27.2 to 0.28.0.
- [Release notes](https://github.com/lucas-clemente/quic-go/releases)
- [Changelog](https://github.com/lucas-clemente/quic-go/blob/master/Changelog.md)
- [Commits](https://github.com/lucas-clemente/quic-go/compare/v0.27.2...v0.28.0)

---
updated-dependencies:
- dependency-name: github.com/lucas-clemente/quic-go
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>

* Fix new Quic lib: KeepAlivePeriod

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-07-10 21:38:39 -04:00
yuhan6665 9480bc0379 Fix ss2022 user stat for single user 2022-07-02 11:27:26 -04:00
yuhan6665 7d946562eb Update version 1.5.8 2022-06-19 19:14:53 -04:00
yuhan6665 cc67e83a8f Update version 1.5.7 2022-06-05 07:46:18 -04:00
yuhan6665 f0b58d9ee0 Update version 1.5.6 2022-05-28 12:07:11 -04:00
yuhan6665 d56f38d38e Break shadowsocks2022 test into Tcp and Udp
- make test smaller
- pickPort is more reliable for only Tcp or Udp
2022-05-28 12:05:54 -04:00
yuhan6665 7b72e19e16 Update dependencies 2022-05-28 11:47:41 -04:00
3f64f3206c Quic sniffer (#1074)
* Add quic sniffer

* Fix quic sniffer

* Add uTP sniffer

* rename buf pool membership status to unmanaged

* rename buf type adaptor into FromBytes

Co-authored-by: 世界 <i@sekai.icu>
Co-authored-by: Shelikhoo <xiaokangwang@outlook.com>
2022-05-22 23:48:10 -04:00
yuhan6665 5e18ae68b7 Update version 1.5.5 2022-04-23 19:38:50 -04:00
yuhan6665 8caf690680 Update dependencies and Go 1.18 2022-04-23 19:36:07 -04:00
yuhan6665andhmol233 b413066012 Fakedns fix xUDP destination override (#1011)
* Fix UDP destination override

* Fix code style

* Fix fakedns object init

Do type convertion at runtime in case if user don't use fakedns in config.
Since dispatcher now depend on fakedns object, move the injection order of
fakedns to top (As a temporary solution)

* Amend logic for handing fakedns client

A map is used by server side when client turn on fakedns
Client will send domain address in the buffer.UDP.Address, server record all possible target IP addrs.
When target replies, server will restore the domain and send back to client.

Co-authored-by: hmol233 <82594500+hmol233@users.noreply.github.com>
2022-04-23 19:24:46 -04:00
yuhan6665 c9df755426 Add quic qlog to debug logs 2022-04-23 19:23:15 -04:00
yuhan6665 4fb4dacae7 Reapply optimized log 2022-04-15 18:42:17 -04:00
yuhan6665 e8400e65f0 Update readme 2022-04-09 00:48:02 -04:00
yuhan6665and秋のかえで 393d211d1e Rename quic session to connection
Co-authored-by: 秋のかえで <autmaple@protonmail.com>
2022-04-09 00:48:02 -04:00
yuhan6665 3d3801fc25 Update version 1.5.4 2022-03-12 20:39:54 -05:00
yuhan6665 7f00df4f02 Update dependencies 2022-03-12 12:12:52 -05:00
yuhan6665 94c249a8c8 Fix some flaky tests related to pick port (#985)
* Fix some tests to PickPort correctly

* Add retry logic for two socks tests

Two socks tests listen for both TCP and UDP with same port number, in some cases the port is not available
Add retry logic for server core, start server core and client core separately
Extract a common method

* Add retry logic for two dokodemo tests

Two dokodemo tests listen for 5 ports, in some cases they are not available
Add retry logic for client core, start server and client separately
2022-03-12 11:56:40 -05:00
yuhan6665 c1a54ae58e Fix a concurrency issue in fakedns
In rare cases different domains asking for dns will return the same IP. Add a mutex.
2022-03-12 10:54:59 -05:00
496b2c02c5 Fix context api and document (#727)
* Fix Dial function crash instance when there is no instance context in the ctx

* check ctx to fix. (#841)

* Feat: core.ToContext(ctx, v) for ctx initialization (#852)

* remove exported API: toContext

* Remove unnecessary API

* rework document for API

* fix: make sure the ctx is propagated to connections by detached connection

Co-authored-by: Shelikhoo <xiaokangwang@outlook.com>
Co-authored-by: rurirei <72071920+rurirei@users.noreply.github.com>
2022-02-19 22:45:41 -05:00
yuhan6665 41ce6ccf9f Make reverse proxy compatible with v2fly (#924)
* Make reverse proxy compatible with v2fly

* Fix gitignore

* Regenerate proto files

- fix v2ray name in loopback

* Fix fly.org in unit tests
2022-02-04 21:59:50 -05:00
yuhan6665 d51db9469e Update version 1.5.3 2022-01-28 18:13:15 -05:00
yuhan6665 aa554871ef Update dependencies 2022-01-28 18:13:15 -05:00
yuhan6665 578d903a9e Quic related improvements (#915)
* DialSystem for Quic

DialSystem() is needed in case of Android client,
where the raw conn is protected for vpn service

* Fix client dialer log

Log such as:
tunneling request to tcp:www.google.com:80 via tcp:x.x.x.x:443
the second "tcp" is misleading when using mKcp or quic transport

Remove the second "tcp" and add the correct logging for transport dialer:
- transport/internet/tcp: dialing TCP to tcp:x.x.x.x:443
- transport/internet/quic: dialing quic to udp:x.x.x.x:443

* Quic new stream allocation mode

Currently this is how Quic works: client muxing all tcp and udp traffic through a single session, when there are more than 32 running streams in the session,
the next stream request will fail and open with a new session (port). Imagine lineup the session from left to right:
 |
 |  |
 |  |  |

As the streams finishes, we still open stream from the left, original session. So the base session will always be there and new sessions on the right come and go.
However, either due to QOS or bugs in Quic implementation, the traffic "wear out" the base session. It will become slower and in the end not receiving any data from server side.
I couldn't figure out a solution for this problem at the moment, as a workaround:
       |  |
    |  |  |
 |  |  |

I came up with this new stream allocation mode, that it will never open new streams in the old sessions, but only from current or new session from right.
The keeplive config is turned off from server and client side. This way old sessions will natually close and new sessions keep generating.
Note the frequency of new session is still controlled by the server side. Server can assign a large max stream limit. In this case the new allocation mode will be similar to the current mode.
2022-01-28 18:11:30 -05:00
yuhan6665 b4cdb6075b Remove a missed alterId in test 2022-01-14 17:52:12 -05:00
yuhan6665 980b35b3fe Update version 1.5.2 2021-12-24 09:19:17 -05:00
yuhan6665 9ea1bf7c1d Fix shadowsocks xchacha cipher nonce size 2021-12-19 21:18:35 -05:00
yuhan6665 b0a08d3ed3 Update version 1.5.1 2021-12-14 20:34:07 -05:00
yuhan6665 0d292e0dcd Update dependencies 2021-12-14 20:33:15 -05:00
yuhan6665andJebbs dd9da23a59 Add statistics in conn testing
Occasional error is observed when we execute long test
Print time and memory for better troubleshooting in the future

Co-authored-by: Jebbs <qjebbs@gmail.com>
2021-12-14 20:15:05 -05:00
yuhan6665 4e88a369c4 Fix vmess test with portList 2021-12-14 20:01:53 -05:00
yuhan6665 e93da4bd02 Fix some tests and format code (#830)
* Increase some tls test timeout

* Fix TestUserValidator

* Change all tests to VMessAEAD

Old VMess MD5 tests will be rejected and fail in 2022

* Chore: auto format code
2021-12-14 19:28:47 -05:00
yuhan6665andShelikhoo d5a7901601 Unified drain support for vmess and shadowsocks (#791)
* Added test for no terminate signal

* unified drain support for vmess and shadowsockets

* drain: add generated file

Co-authored-by: Shelikhoo <xiaokangwang@outlook.com>
2021-12-14 19:27:31 -05:00
yuhan6665 7c240e8630 Fix null pointer exception for observatory
Core setup router object first, when InjectContext() is called, observatory object is still null,
so observatory need to be injected after InjectContext()
2021-11-20 00:48:02 -05:00
abb8ba8b0e Observatory related fixes (#788)
* fix:observatory not supported by multi-json

* Fix: observatory starts with empty config & fails to close (#957)

* Update strategy_leastping.go (#1019)

* add custom probe URL support for observatory

* add custom probe interval for observer

* apply coding style

* Fix: observatory log & JSON config(#1211)

Co-authored-by: ihotte <ihotte@yeah.net>

* Change default probe url from api.v2fly.org to www.google.com

* Cherry-pick missing code from branch 'dev-advloadblancer-2'

Co-authored-by: Shelikhoo <xiaokangwang@outlook.com>
Co-authored-by: Loyalsoldier <10487845+Loyalsoldier@users.noreply.github.com>
Co-authored-by: fanyiguan <52657276+fanyiguang@users.noreply.github.com>
Co-authored-by: ihotte <3087168217@qq.com>
Co-authored-by: ihotte <ihotte@yeah.net>
2021-10-26 13:00:31 +08:00
yuhan6665andShelikhoo acb81ebe3d Verify peer cert function for better man in the middle prevention (#746)
* verify peer cert function for better man in the middle prevention

* publish cert chain hash generation algorithm

* added calculation of certificate hash as separate command and tlsping, use base64 to represent fingerprint to align with jsonPb

* apply coding style

* added test case for pinned certificates

* refactored cert pin

* pinned cert test

* added json loading of the PinnedPeerCertificateChainSha256

* removed tool to prepare for v5

* Add server cert pinning for Xtls

Change command "xray tls certChainHash" to xray style

Co-authored-by: Shelikhoo <xiaokangwang@outlook.com>
2021-10-22 12:38:40 +08:00
yuhan6665andKslr 6a60332700 Create CODE_OF_CONDUCT.md (#941) (#749)
Co-authored-by: Kslr <kslrwang@gmail.com>
2021-10-22 12:38:40 +08:00
45dc97e2b6 Use shadowsocket's bloomring for shadowsocket's replay protection (#764)
* use shadowsocket's bloomring for shadowsocket's replay protection

* added shadowsockets iv check for tcp socket

* Rename to shadowsockets iv check

* shadowsocks iv check config file

* iv check should proceed after decryption

* use shadowsocket's bloomring for shadowsocket's replay protection

* Chore: format code (#842)

Co-authored-by: Shelikhoo <xiaokangwang@outlook.com>
Co-authored-by: Loyalsoldier <10487845+Loyalsoldier@users.noreply.github.com>
2021-10-22 12:38:40 +08:00
yuhan6665andLoyalsoldier 0f0a424e8c Fix: use sorted cidr list (#1156) (#773)
Co-authored-by: Loyalsoldier <10487845+Loyalsoldier@users.noreply.github.com>
2021-10-22 12:38:40 +08:00
yuhan6665andShelikhoo c4fc277758 add comment for gRPC TLS silent failure behavior (#779)
When gRPC transport have been configured to use TLS, it may silently ignore TLS failure. This may make it harder to diagnose TLS setting issues when gRPC transport is used. This comment is added to help other developers be aware of this caveat.

Co-authored-by: Shelikhoo <xiaokangwang@outlook.com>
2021-10-22 12:38:40 +08:00
yuhan6665andLoyalsoldier 3bf3d96472 Fix: JSON tag case (#1212) (#778)
JSON unmarshal is case insensitive in Golang

Co-authored-by: Loyalsoldier <10487845+Loyalsoldier@users.noreply.github.com>
2021-10-22 12:38:40 +08:00
yuhan6665andShelikhoo 76a3f24169 fix concurrent access crash for handler creator (#772)
Co-authored-by: Shelikhoo <xiaokangwang@outlook.com>
2021-10-20 19:30:34 +08:00
6b6974c804 Fakedns improvements (#731)
Co-authored-by: Shelikhoo <xiaokangwang@outlook.com>
Co-authored-by: sixg0000d <sixg0000d@gmail.com>
Co-authored-by: Loyalsoldier <10487845+Loyalsoldier@users.noreply.github.com>
2021-10-20 13:15:49 +08:00
yuhan6665 e286cdcaa8 Style: format code by gofumpt (#761) 2021-10-20 00:57:14 +08:00
yuhan6665andLoyalsoldier d77be80b40 Refinement: LRU (#1142) (#775)
Co-authored-by: Loyalsoldier <10487845+Loyalsoldier@users.noreply.github.com>
2021-10-20 00:53:29 +08:00
yuhan6665 a229a7f85e Revert "cancel failed grpc connection (#707)" (#768)
This reverts commit 0f79126379.
2021-10-16 21:07:45 +08:00
yuhan6665andShelikhoo e6711d1b48 Add header and method support to http2 transport (#755)
Co-authored-by: Shelikhoo <xiaokangwang@outlook.com>
2021-10-12 15:58:12 +00:00
4bb61701b5 Add tcpKeepAliveInterval in transport sockopt (#754)
Co-authored-by: Ahmad Karimi <ak12hastam@gmail.com>
Co-authored-by: Shelikhoo <xiaokangwang@outlook.com>
2021-10-12 15:39:08 +00:00
yuhan6665andrurirei ef4c63812b Fix: nullcheck on alternative systemDialer (#752)
* fix: null-check on alternative systemDialer
* delete deprecated option DualStack

Co-authored-by: rurirei <72071920+rurirei@users.noreply.github.com>
2021-10-12 15:32:45 +00:00
yuhan6665 e50f2af418 Fix flaky TestServiceSubscribeRoutingStats (#750) 2021-10-12 15:29:56 +00:00
yuhan6665andLoyalsoldier 3554886ce1 vformat supports multi-core processing (#757)
* Feat: vformat supports multi-core processing (#996)

Co-authored-by: Loyalsoldier <10487845+Loyalsoldier@users.noreply.github.com>
2021-10-12 15:29:22 +00:00
yuhan6665andQxQ a97d45c93a grammar fix (#745)
Co-authored-by: QxQ <59914293+U-v-U@users.noreply.github.com>
2021-09-30 20:50:46 +08:00
yuhan6665 1ef824c0b4 Fix go generate core/format.go (#725) 2021-09-27 13:45:02 +08:00
yuhan6665 ed39fc3b79 Fix some tests to use udp.PickPort() (#739) 2021-09-27 13:40:56 +08:00
yuhan6665 9f9059c7b1 Fix flaky TestVMessDynamicPort (#723) 2021-09-24 11:59:00 +08:00
f2cb13a8ec Deprecate legacy VMess header with a planned decommission (#712)
* Deprecate legacy VMess header with a planned decommission
* show legacy warning only once

Co-authored-by: Xiaokang Wang <xiaokangwang@outlook.com>
Co-authored-by: hmol233 <82594500+hmol233@users.noreply.github.com>
2021-09-20 14:46:05 +08:00
yuhan6665andLoyalsoldier dbcbb519e3 Feat: format code in one-key (#719)
Co-authored-by: Loyalsoldier <10487845+Loyalsoldier@users.noreply.github.com>
2021-09-20 14:22:52 +08:00
yuhan6665andLoyalsoldier 8a5bf06925 Chore: refine errorgen (#721)
Co-authored-by: Loyalsoldier <10487845+Loyalsoldier@users.noreply.github.com>
2021-09-20 13:51:55 +08:00
yuhan6665andLoyalsoldier 42d158bd85 vprotogen refine (#717)
* Update all proto files with existing vprotogen
* Chore: remove protoc-gen-gofast
* Feat: vprotogen adds version detector to block generation code from old protobuf version
* Feat: vprotogen refine logic

Co-authored-by: Loyalsoldier <10487845+Loyalsoldier@users.noreply.github.com>
2021-09-18 01:16:14 +08:00
yuhan6665andKslr 00bcd40c34 remove deprecate ciphers in shadowsocks (#710)
* remove deprecate ciphers in shadowsocks

Co-authored-by: Kslr <kslrwang@gmail.com>
2021-09-17 04:13:07 +08:00
yuhan6665andShelikhoo 1adfc2720a Allow bulk definition of domain matcher at parent level (#713)
Co-authored-by: Shelikhoo <xiaokangwang@outlook.com>
2021-09-17 04:07:35 +08:00
yuhan6665andShelikhoo 0f79126379 cancel failed grpc connection (#707)
Co-authored-by: Shelikhoo <xiaokangwang@outlook.com>
2021-09-15 01:40:38 +08:00
f50eff5ebb Add Fake DNS support (#309)
Co-authored-by: Xiaokang Wang <xiaokangwang@outlook.com>
Co-authored-by: loyalsoldier <10487845+Loyalsoldier@users.noreply.github.com>
Co-authored-by: kslr <kslrwang@gmail.com>
2021-03-07 04:39:50 +00:00