Commit Graph
48 Commits
Author SHA1 Message Date
Max Lv 201e70c4bd Modernize C builds with offline dependencies and portable runtime helpers (#3050)
Bundle pinned offline dependencies, remove libcork/libipset and submodule requirements, and add portable runtime helpers with relocatable static/shared library installations.

Add Clang static build validation for Linux/musl, macOS and Windows, real TCP/UDP and SIP003 interoperability coverage, and recorded performance tradeoffs. All 21 hosted checks pass at the reviewed PR head 8d504e6218.
2026-09-11 13:42:11 +08:00
Max LvandClaude Fable 5 ba7b9ad4cc Add code quality tooling: clang-tidy, sanitizers, coverage (#3046)
- Export compile_commands.json for tooling
- .clang-tidy: clang-analyzer + bugprone + cert checks scoped to src/,
  with stylistic/false-positive-prone checks disabled
- ENABLE_SANITIZERS CMake option (ASan + UBSan)
- ENABLE_COVERAGE CMake option with an lcov/genhtml 'coverage' target
- CI: asan job (ctest + stress test under ASan/UBSan), clang-tidy job
  (warning-count ratchet, baseline 29 with pinned clang-tidy-18),
  coverage job (lcov summary + HTML report artifact)

Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
2026-07-15 12:24:57 +08:00
mesher2024 d8c3004c97 Update .gitignore
Add obj-* in .gitignore
2026-02-08 09:59:34 +08:00
zonyitoo 01dd7df1da Redir UDP send back sockets should always be IPv6
ref shadowsocks/shadowsocks-rust#855

When receiving UDP packets from remote servers, Redir will have to
create transparent sockets to bind() on those target addresses and then
relay data back to the local client. Target addresses may be IPv4 or
IPv6 addresses, so we may have to create that transprent sockets based
on the target addresses' family.

The most simpliest and easiest way is to always create IPv6 sockets and
converts IPv4 binding addresses and peer addresses to IPv4-mapped-IPv6.
2022-06-04 16:48:45 +08:00
Max Lv 850473aa90 Add snapcraft.yml 2019-05-07 16:50:42 +08:00
Mygod 09fbae1d3f Refine .gitignore 2018-07-30 20:45:58 +08:00
Max Lv 380cb81234 Revert "Create srpm and rpm targets to the Autotools build"
This reverts commit 395515d1f7.
2018-05-08 15:26:39 +08:00
Yuxiang Zhu 395515d1f7 Create srpm and rpm targets to the Autotools build
The new `srpm` target can be handled by Fedora Copr for
automated builds. A `rpm` target is also added for alignment.
2018-05-04 18:12:49 +08:00
星野ハジメ 44027da326 enable TCP_NODELAY from config file (#1757)
* Fix #1739

Refine #1739

* enable TCP_NODELAY from config file
2017-10-30 10:35:14 +08:00
Yuxiang Zhu feeaff85e1 Provides separated service files for RPM packages
As discussed with @librehat in #1604, maintaining a separate set of systemd
files for RPM distributions will be convenient to build on Copr.

This patch will also change some lines in rpm/genrpm.sh to archive the
source code using `git archive` because the old logic doesn't respect
`.gitignore`.
2017-08-22 08:53:56 +08:00
Max Lv fb53630b20 Fix some building issues 2017-03-16 14:04:05 +08:00
Rayson zhu ea947db74d fix rpm SPEC file
1. add missing build and runtime dependencies
2. change minimal version requirement for libsodium to 1.0.4, which
should work fine with ss-libev and EPEL7 users will not have to compile a
later version.
3. add more entries to .gitignore
2017-03-16 13:06:09 +08:00
Dijkstra 726f11048c Update .gitignore (#1204) 2017-02-06 12:01:03 +08:00
Max Lv ff07676f47 Update .gitignore 2017-01-18 11:12:31 +08:00
Max Lv 9fb0b86218 Ignore generated spec 2016-10-19 15:46:52 +08:00
Boyuan Yang c12e450e98 Update Debian dependency and bump library soname (#814)
* debian: add libpcre3-dev as build dependency.

* Bump soname of libshadowsocks-libev.

Soname for libshadowsocks-libev is bumped
from 1:0:0 to 2:0:0 due to ABI breakage
between shadowsocks-libev 2.5.0 and 2.5.1.
2016-09-08 22:35:27 +08:00
Max Lv 34b9036b5b Add MTU option 2016-08-03 11:53:28 +08:00
荒野无灯 b65e63ed38 src/ss-nat should be excluded from rule src/ss-* (#751)
otherwise someone copy the repo from local computer and add to other repo as depend source , will encounter:
No rule to make target 'ss-nat', needed by 'all-am'.  Stop.

to reproduce this error:
git clone https://github.com/shadowsocks/shadowsocks-libev.git
cd my_exist_repo
cp -rv ../shadowsocks-libev ./
rm -rf ./shadowsocks-libev/.git
git add ./shadowsocks-libev  #now the src/ss-nat will silently be ignored ...
2016-08-02 22:52:20 -05:00
Max Lv 09b55d476d Add Makefile.am to doc 2016-07-10 15:42:51 +08:00
Max Lv 2643de44f2 Clean up 2016-07-04 18:23:17 +08:00
anonymous-contributor f793d2666c Asciidoc man page rework (#699)
* Add 'tunnel_address' support for json config parser

And allow ss-tunnel to use the newly introduced parser.

Signed-off-by: Adam Anonymous <anonymous_temp_user@yahoo.co.jp>

* Add "mode" support for jconf

Now jconf supports "mode" setting, allowed values are "tcp_only",
"tcp_and_udp" and "udp_only".

Signed-off-by: Adam Anonymous <anonymous_temp_mail@yahoo.co.jp>

* Use jconf "mode" for server/local/tunnel/manager

Signed-off-by: Adam Anonymous <anonymous_temp_mail@yahoo.co.jp>

* Add per-project vimrc to gitignore

As the coding style differs from kernel and other projects, so such
project vimrc should be helpful.

Signed-off-by: Adam Anonymous <anonymous_temp_mail@yahoo.co.jp>

* Doc: Introduce asciidoc based documentation framework

Use asciidoc for new documentation framework, which could not only
output man pages, but also htmls.

And asciidoc documentation is much more human-readable than roff man
pages.

Signed-off-by: Adam Anonymous <anonymous_temp_mail@yahoo.co.jp>

* Doc: Convert shadowsocks-libev man page to asciidoc

The port to asciidoc has some format change compared to old one.

The most obvious one is the options listed in SYNOPSIS.
Now the options list is not split into 2/3 columns, or we must use
asciidoc tables and introduce table frames.

Other small change includes the removal of AUTHOR sector, as it's not
an expendable method to update AUTHOR sector every time it gets updated.

Signed-off-by: Adam Anonymous <anonymous_temp_mail@yahoo.co.jp>

* Doc: Convert ss-local man page to asciidoc

Also modify gitignore, since it use too generic rules to ignore such
documentation.

Signed-off-by: Adam Anonymous <anonymous_temp_mail@yahoo.co.jp>

* Doc: Convert ss-manager man page to asciidoc

Signed-off-by: Adam Anonymous <anonymous_temp_mail@yahoo.co.jp>

* Doc: Convert ss-nat man page to asciidoc

Signed-off-by: Adam Anonymous <anonymous_temp_mail@yahoo.co.jp>

* Doc: Convert ss-redir man page to asciidoc

Signed-off-by: Adam Anonymous <anonymous_temp_mail@yahoo.co.jp>

* Doc: Convert ss-server man page to asciidoc

Signed-off-by: Adam Anonymous <anonymous_temp_mail@yahoo.co.jp>

* Doc: Convert ss-tunnel man page to asciidoc

Signed-off-by: Adam Anonymous <anonymous_temp_mail@yahoo.co.jp>

* Doc: Remove old roff man pages

Welcome to the new age of asciidoc.

Signed-off-by: Adam Anonymous <anonymous_temp_mail@yahoo.co.jp>

* Doc: Add equivalent tables for command line options and config file

Now user can get a more clear view of config file and command line
options.

Signed-off-by: Adam Anonymous <anonymous_temp_mail@yahoo.co.jp>
2016-07-04 05:11:50 -05:00
anonymous-contributor af69798355 New jconf parameters (#695)
* Add 'tunnel_address' support for json config parser

And allow ss-tunnel to use the newly introduced parser.

Signed-off-by: Adam Anonymous <anonymous_temp_user@yahoo.co.jp>

* Add "mode" support for jconf

Now jconf supports "mode" setting, allowed values are "tcp_only",
"tcp_and_udp" and "udp_only".

Signed-off-by: Adam Anonymous <anonymous_temp_mail@yahoo.co.jp>

* Use jconf "mode" for server/local/tunnel/manager

Signed-off-by: Adam Anonymous <anonymous_temp_mail@yahoo.co.jp>

* Add per-project vimrc to gitignore

As the coding style differs from kernel and other projects, so such
project vimrc should be helpful.

Signed-off-by: Adam Anonymous <anonymous_temp_mail@yahoo.co.jp>
2016-06-30 23:19:13 -05:00
Boyuan Yang 835a50fece Another fix for #668 (#671) 2016-06-10 08:50:05 -05:00
Max Lv 22fb756d23 ignore symbol files 2015-10-18 10:03:37 +08:00
Max Lv e5289e9ba4 Replace libasyncns with libudns 2015-01-10 12:31:13 +09:00
Max Lv f84c40dac3 update gitignore 2014-12-13 14:51:34 +08:00
Max Lv d4781f9359 bump version and fix #157 2014-11-17 14:16:18 +08:00
Max Lv 5cc77c066b add missing files 2014-11-10 13:26:03 +08:00
Max Lv 182c81d14d fix #80 2014-06-19 20:44:23 +08:00
Max Lv 7e19218411 ignore Makefile in libcork and libipset 2014-05-24 12:12:26 +08:00
Max Lv 25ba5cd0b6 fix build 2014-05-09 09:35:30 +08:00
Max Lv 173681171b fix build 2014-05-09 09:34:00 +08:00
Linus Yang 21b9258d77 Add initial support for native win32 platform
Should be built against MinGW, and please note that
only ss-local is ported due to lack win32 support of
libasyncns. And libev doesn't support IOCP but only
supports select
2013-09-09 20:59:22 +08:00
Max Lv 4a0656b1c0 add missing json config 2013-04-07 18:06:32 +08:00
Max Lv d25a3f5f1d update manual 2013-04-07 12:09:32 +08:00
Max Lv 75b2db33a1 update manual 2013-04-07 11:25:59 +08:00
Max Lv 890c181278 add init.d scripts 2013-04-07 09:52:49 +08:00
Max Lv 5e7de77f8a update ignore 2013-04-07 09:23:12 +08:00
Max Lv 840ed2b7cc add openwrt Makefile 2013-04-06 20:31:00 +08:00
Max Lv d68ba499f4 add openwrt package description 2013-04-06 18:21:29 +08:00
Max Lv ddcf5929a3 update ignore 2013-04-06 18:05:46 +08:00
Max Lv ff08838a19 add debian package description 2013-04-06 18:00:46 +08:00
Max Lv cdcf527c77 static link 2013-04-04 11:26:37 +08:00
Max Lv 5df9644823 fix issues 2013-04-02 16:33:50 +08:00
Max Lv da906cf480 add server implementation 2013-03-31 10:52:26 +08:00
Max Lv 81baf2137d fix configure 2013-01-06 10:32:04 +04:00
Max Lv bdbed8f898 fix autoconf 2013-01-06 10:09:59 +04:00
Max Lv 8edd8b4f45 add gitignore file 2013-01-01 16:47:01 +08:00