mirror of
https://github.com/shadowsocks/shadowsocks-libev.git
synced 2026-09-24 00:45:06 +00:00
Rename project to shadowsocks-c with legacy library compatibility
This commit is contained in:
@@ -1,4 +1,4 @@
|
||||
# clang-tidy configuration for shadowsocks-libev project sources (src/ only).
|
||||
# clang-tidy configuration for shadowsocks-c project sources (src/ only).
|
||||
# Bundled sources under third_party/ and src/blake3/ are third-party code and
|
||||
# are excluded by the file regex used in CI:
|
||||
# run-clang-tidy -p build '/src/[^/]+\.c$'
|
||||
|
||||
14
.github/workflows/portability.yml
vendored
14
.github/workflows/portability.yml
vendored
@@ -37,6 +37,10 @@ jobs:
|
||||
cmake --build consumer
|
||||
./consumer/consumer_static
|
||||
./consumer/consumer_shared
|
||||
cmake -S tests/consumer -B consumer-legacy -DSS_PACKAGE_NAME=shadowsocks-libev -DCMAKE_PREFIX_PATH="$PWD/relocated"
|
||||
cmake --build consumer-legacy
|
||||
./consumer-legacy/consumer_static
|
||||
./consumer-legacy/consumer_shared
|
||||
|
||||
windows:
|
||||
runs-on: windows-latest
|
||||
@@ -67,6 +71,8 @@ jobs:
|
||||
cmake --install build --prefix "$PWD/install"
|
||||
cmake -S tests/consumer -B consumer -G Ninja -DCMAKE_PREFIX_PATH="$PWD/install"
|
||||
cmake --build consumer
|
||||
cmake -S tests/consumer -B consumer-legacy -G Ninja -DSS_PACKAGE_NAME=shadowsocks-libev -DCMAKE_PREFIX_PATH="$PWD/install"
|
||||
cmake --build consumer-legacy
|
||||
- name: Run installed consumers without toolchain DLLs
|
||||
shell: pwsh
|
||||
run: |
|
||||
@@ -75,6 +81,10 @@ jobs:
|
||||
if ($LASTEXITCODE -ne 0) { throw "Static consumer failed: $LASTEXITCODE" }
|
||||
& ./consumer/consumer_shared.exe
|
||||
if ($LASTEXITCODE -ne 0) { throw "Shared consumer failed: $LASTEXITCODE" }
|
||||
& ./consumer-legacy/consumer_static.exe
|
||||
if ($LASTEXITCODE -ne 0) { throw "Legacy static consumer failed: $LASTEXITCODE" }
|
||||
& ./consumer-legacy/consumer_shared.exe
|
||||
if ($LASTEXITCODE -ne 0) { throw "Legacy shared consumer failed: $LASTEXITCODE" }
|
||||
|
||||
static-macos:
|
||||
runs-on: macos-latest
|
||||
@@ -189,7 +199,7 @@ jobs:
|
||||
steps:
|
||||
- uses: actions/checkout@v6
|
||||
- name: Source archive
|
||||
run: python3 scripts/source_archive.py release/shadowsocks-libev.tar.gz
|
||||
run: python3 scripts/source_archive.py release/shadowsocks-c.tar.gz
|
||||
- name: Prepare compiler image
|
||||
run: |
|
||||
printf 'FROM alpine:3.24\nRUN apk add --no-cache build-base cmake python3 linux-headers\n' > /tmp/ss-toolchain.Dockerfile
|
||||
@@ -198,7 +208,7 @@ jobs:
|
||||
run: |
|
||||
docker run --rm --network none -v "$PWD/release:/release:ro" ss-toolchain sh -ec '
|
||||
mkdir /src
|
||||
tar xzf /release/shadowsocks-libev.tar.gz -C /src --strip-components=1
|
||||
tar xzf /release/shadowsocks-c.tar.gz -C /src --strip-components=1
|
||||
cmake -S /src -B /build -DCMAKE_DISABLE_FIND_PACKAGE_Python3=TRUE
|
||||
cmake --build /build --parallel 4
|
||||
ctest --test-dir /build -L "unit|vendor" --output-on-failure --no-tests=error
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
cmake_minimum_required(VERSION 3.20)
|
||||
|
||||
set(PROJECT_NAME shadowsocks-libev)
|
||||
set(PROJECT_NAME shadowsocks-c)
|
||||
set(RELEASE_DATE 2026-02-09)
|
||||
set(PROJECT_VERSION "3.3.6")
|
||||
set(PROJECT_DESC "a lightweight secured socks5 proxy")
|
||||
|
||||
15
README.md
15
README.md
@@ -1,10 +1,10 @@
|
||||
# shadowsocks-libev
|
||||
# shadowsocks-c
|
||||
|
||||
[](https://travis-ci.com/shadowsocks/shadowsocks-libev) [](https://snapcraft.io/shadowsocks-libev)
|
||||
|
||||
## Intro
|
||||
|
||||
[Shadowsocks-libev](https://shadowsocks.org) is a lightweight secured SOCKS5
|
||||
[shadowsocks-c](https://shadowsocks.org) is a lightweight secured SOCKS5
|
||||
proxy for embedded devices and low-end boxes.
|
||||
|
||||
It is a port of [Shadowsocks](https://github.com/shadowsocks/shadowsocks)
|
||||
@@ -15,12 +15,19 @@ Current version: 3.3.6 | [Changelog](debian/changelog)
|
||||
|
||||
## Features
|
||||
|
||||
Shadowsocks-libev is written in pure C and depends on [libuv](https://libuv.org/). It's designed
|
||||
shadowsocks-c is written in pure C and depends on [libuv](https://libuv.org/). It's designed
|
||||
to be a lightweight implementation of shadowsocks protocol, in order to keep the resource usage as low as possible.
|
||||
|
||||
For a full list of feature comparison between different versions of shadowsocks,
|
||||
refer to the [Wiki page](https://github.com/shadowsocks/shadowsocks/wiki/Feature-Comparison-across-Different-Versions).
|
||||
|
||||
The project is now **shadowsocks-c**. Commands (`ss-local`, `ss-server`, etc.)
|
||||
and the `shadowsocks.h` API remain compatible. New builds produce
|
||||
`libshadowsocks-c` with CMake/pkg-config package `shadowsocks-c`; legacy library
|
||||
filenames and package lookup names remain available as compatibility aliases.
|
||||
Existing configuration paths, distro package names and service names are retained.
|
||||
Repository links below still point to the current GitHub repository.
|
||||
|
||||
## Quick Start
|
||||
|
||||
Snap is the recommended way to install the latest binaries.
|
||||
@@ -110,7 +117,7 @@ Use `-DCMAKE_PREFIX_PATH=/opt/homebrew/opt/mbedtls@3` when needed on macOS.
|
||||
| `ENABLE_SANITIZERS` | `OFF` | AddressSanitizer and UndefinedBehaviorSanitizer |
|
||||
| `ENABLE_CONNMARKTOS` / `ENABLE_NFTABLES` | `OFF` | Optional Linux firewall integrations |
|
||||
|
||||
CMake consumers can use `find_package(shadowsocks-libev CONFIG REQUIRED)` and
|
||||
CMake consumers can use `find_package(shadowsocks-c CONFIG REQUIRED)` and
|
||||
link `shadowsocks::static`, `shadowsocks::shared`, or `shadowsocks::shadowsocks`
|
||||
(which prefers the shared library when installed). A pkg-config file is also
|
||||
installed. Dependency provenance and update instructions are in
|
||||
|
||||
@@ -24,13 +24,13 @@ if(SS_BUILD_STATIC_LIBRARY)
|
||||
string(APPEND SS_PC_PRIVATE " -lsodium -lmbedcrypto -lcares")
|
||||
install(FILES cmake/FindMbedTLS.cmake cmake/FindSodium.cmake
|
||||
cmake/FindCares.cmake cmake/FindPCRE2.cmake cmake/mbedtls_version_check.c
|
||||
DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/shadowsocks-libev/modules)
|
||||
DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/shadowsocks-c/modules)
|
||||
endif()
|
||||
foreach(target IN LISTS private_targets)
|
||||
install(FILES $<TARGET_FILE:${target}>
|
||||
DESTINATION ${CMAKE_INSTALL_LIBDIR}/shadowsocks-libev)
|
||||
list(APPEND private_links "\${_ss_libdir}/shadowsocks-libev/$<TARGET_FILE_NAME:${target}>")
|
||||
string(APPEND SS_PC_PRIVATE " \${libdir}/shadowsocks-libev/$<TARGET_FILE_NAME:${target}>")
|
||||
DESTINATION ${CMAKE_INSTALL_LIBDIR}/shadowsocks-c)
|
||||
list(APPEND private_links "\${_ss_libdir}/shadowsocks-c/$<TARGET_FILE_NAME:${target}>")
|
||||
string(APPEND SS_PC_PRIVATE " \${libdir}/shadowsocks-c/$<TARGET_FILE_NAME:${target}>")
|
||||
endforeach()
|
||||
if(SS_DEPENDENCY_MODE STREQUAL "system")
|
||||
list(APPEND private_links "\${SS_CONSUMER_UV}")
|
||||
@@ -52,35 +52,37 @@ if(SS_BUILD_STATIC_LIBRARY)
|
||||
string(APPEND SS_PC_PRIVATE " -lrt")
|
||||
endif()
|
||||
# Resolve libdir relative to this installed config, supporting --prefix relocation.
|
||||
file(RELATIVE_PATH libdir_from_config "${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_INSTALL_LIBDIR}/cmake/shadowsocks-libev" "${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_INSTALL_LIBDIR}")
|
||||
file(RELATIVE_PATH libdir_from_config "${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_INSTALL_LIBDIR}/cmake/shadowsocks-c" "${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_INSTALL_LIBDIR}")
|
||||
string(APPEND private_content "get_filename_component(_ss_libdir \"\${CMAKE_CURRENT_LIST_DIR}/${libdir_from_config}\" ABSOLUTE)\n")
|
||||
string(APPEND private_content "set_property(TARGET shadowsocks::static PROPERTY INTERFACE_LINK_LIBRARIES \"${private_links}\")\n")
|
||||
endif()
|
||||
file(GENERATE OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/package/shadowsocks-private.cmake" CONTENT "${private_content}")
|
||||
install(FILES "${CMAKE_CURRENT_BINARY_DIR}/package/shadowsocks-private.cmake"
|
||||
DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/shadowsocks-libev)
|
||||
DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/shadowsocks-c)
|
||||
|
||||
set(SS_STATIC_FILENAME "${CMAKE_STATIC_LIBRARY_PREFIX}shadowsocks-libev${CMAKE_STATIC_LIBRARY_SUFFIX}")
|
||||
set(SS_SHARED_FILENAME "${CMAKE_SHARED_LIBRARY_PREFIX}shadowsocks-libev${CMAKE_SHARED_LIBRARY_SUFFIX}")
|
||||
set(SS_SHARED_IMPLIB "${CMAKE_IMPORT_LIBRARY_PREFIX}shadowsocks-libev${CMAKE_IMPORT_LIBRARY_SUFFIX}")
|
||||
configure_package_config_file(cmake/shadowsocks-libev-config.cmake.in
|
||||
"${CMAKE_CURRENT_BINARY_DIR}/package/shadowsocks-libev-config.cmake"
|
||||
INSTALL_DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/shadowsocks-libev
|
||||
set(SS_STATIC_FILENAME "${CMAKE_STATIC_LIBRARY_PREFIX}shadowsocks-c${CMAKE_STATIC_LIBRARY_SUFFIX}")
|
||||
set(SS_SHARED_FILENAME "${CMAKE_SHARED_LIBRARY_PREFIX}shadowsocks-c${CMAKE_SHARED_LIBRARY_SUFFIX}")
|
||||
set(SS_SHARED_IMPLIB "${CMAKE_IMPORT_LIBRARY_PREFIX}shadowsocks-c${CMAKE_IMPORT_LIBRARY_SUFFIX}")
|
||||
configure_package_config_file(cmake/shadowsocks-c-config.cmake.in
|
||||
"${CMAKE_CURRENT_BINARY_DIR}/package/shadowsocks-c-config.cmake"
|
||||
INSTALL_DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/shadowsocks-c
|
||||
PATH_VARS CMAKE_INSTALL_LIBDIR CMAKE_INSTALL_BINDIR CMAKE_INSTALL_INCLUDEDIR)
|
||||
write_basic_package_version_file("${CMAKE_CURRENT_BINARY_DIR}/package/shadowsocks-libev-config-version.cmake"
|
||||
write_basic_package_version_file("${CMAKE_CURRENT_BINARY_DIR}/package/shadowsocks-c-config-version.cmake"
|
||||
VERSION ${PROJECT_VERSION} COMPATIBILITY SameMajorVersion)
|
||||
install(FILES "${CMAKE_CURRENT_BINARY_DIR}/package/shadowsocks-libev-config.cmake"
|
||||
"${CMAKE_CURRENT_BINARY_DIR}/package/shadowsocks-libev-config-version.cmake"
|
||||
DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/shadowsocks-libev)
|
||||
install(FILES "${CMAKE_CURRENT_BINARY_DIR}/package/shadowsocks-c-config.cmake"
|
||||
"${CMAKE_CURRENT_BINARY_DIR}/package/shadowsocks-c-config-version.cmake"
|
||||
DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/shadowsocks-c)
|
||||
file(RELATIVE_PATH SS_PC_PREFIX_RELATIVE "${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_INSTALL_LIBDIR}/pkgconfig" "${CMAKE_CURRENT_BINARY_DIR}")
|
||||
configure_file(cmake/shadowsocks-libev.pc.cmake "${CMAKE_CURRENT_BINARY_DIR}/package/shadowsocks-libev.pc.in" @ONLY)
|
||||
file(GENERATE OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/pkgconfig/shadowsocks-libev.pc"
|
||||
INPUT "${CMAKE_CURRENT_BINARY_DIR}/package/shadowsocks-libev.pc.in")
|
||||
install(FILES "${CMAKE_CURRENT_BINARY_DIR}/pkgconfig/shadowsocks-libev.pc" DESTINATION ${CMAKE_INSTALL_LIBDIR}/pkgconfig)
|
||||
configure_file(cmake/shadowsocks-c.pc.cmake "${CMAKE_CURRENT_BINARY_DIR}/package/shadowsocks-c.pc.in" @ONLY)
|
||||
file(GENERATE OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/pkgconfig/shadowsocks-c.pc"
|
||||
INPUT "${CMAKE_CURRENT_BINARY_DIR}/package/shadowsocks-c.pc.in")
|
||||
install(FILES "${CMAKE_CURRENT_BINARY_DIR}/pkgconfig/shadowsocks-c.pc" DESTINATION ${CMAKE_INSTALL_LIBDIR}/pkgconfig)
|
||||
endif()
|
||||
|
||||
install(FILES COPYING LICENSE third_party/README.md third_party/manifest.json
|
||||
DESTINATION ${CMAKE_INSTALL_DATADIR}/licenses/shadowsocks-libev)
|
||||
install(FILES third_party/bloom/LICENSE DESTINATION ${CMAKE_INSTALL_DATADIR}/licenses/shadowsocks-libev/bloom)
|
||||
install(DIRECTORY src/blake3/ DESTINATION ${CMAKE_INSTALL_DATADIR}/licenses/shadowsocks-libev/blake3
|
||||
DESTINATION ${CMAKE_INSTALL_DATADIR}/licenses/shadowsocks-c)
|
||||
install(FILES third_party/bloom/LICENSE DESTINATION ${CMAKE_INSTALL_DATADIR}/licenses/shadowsocks-c/bloom)
|
||||
install(DIRECTORY src/blake3/ DESTINATION ${CMAKE_INSTALL_DATADIR}/licenses/shadowsocks-c/blake3
|
||||
FILES_MATCHING PATTERN "LICENSE*")
|
||||
|
||||
include(${PROJECT_SOURCE_DIR}/cmake/LegacyPackage.cmake)
|
||||
|
||||
50
cmake/LegacyPackage.cmake
Normal file
50
cmake/LegacyPackage.cmake
Normal file
@@ -0,0 +1,50 @@
|
||||
# Preserve installed library filenames for existing build scripts and binaries.
|
||||
# Unix aliases are relative symlinks so the installation remains relocatable.
|
||||
# Windows uses copies because creating symlinks may require elevated privileges.
|
||||
function(ss_legacy_library target directory filename source)
|
||||
# filename is supplied with its canonical project name replaced below.
|
||||
string(REPLACE "shadowsocks-c" "shadowsocks-libev" legacy "${filename}")
|
||||
if(WIN32)
|
||||
install(FILES "${source}" DESTINATION "${directory}" RENAME "${legacy}")
|
||||
else()
|
||||
install(CODE "file(MAKE_DIRECTORY \"\$ENV{DESTDIR}\${CMAKE_INSTALL_PREFIX}/${directory}\")
|
||||
file(CREATE_LINK \"$<TARGET_FILE_NAME:${target}>\"
|
||||
\"\$ENV{DESTDIR}\${CMAKE_INSTALL_PREFIX}/${directory}/${legacy}\" SYMBOLIC)")
|
||||
endif()
|
||||
endfunction()
|
||||
|
||||
foreach(kind STATIC SHARED)
|
||||
if(SS_BUILD_${kind}_LIBRARY)
|
||||
string(TOLOWER "${kind}" suffix)
|
||||
set(target shadowsocks-c-${suffix})
|
||||
if(WIN32 AND kind STREQUAL "SHARED")
|
||||
ss_legacy_library(${target} "${CMAKE_INSTALL_BINDIR}"
|
||||
"${CMAKE_SHARED_LIBRARY_PREFIX}shadowsocks-c${CMAKE_SHARED_LIBRARY_SUFFIX}" "$<TARGET_FILE:${target}>")
|
||||
ss_legacy_library(${target} "${CMAKE_INSTALL_LIBDIR}"
|
||||
"${CMAKE_IMPORT_LIBRARY_PREFIX}shadowsocks-c${CMAKE_IMPORT_LIBRARY_SUFFIX}" "$<TARGET_LINKER_FILE:${target}>")
|
||||
elseif(kind STREQUAL "STATIC")
|
||||
ss_legacy_library(${target} "${CMAKE_INSTALL_LIBDIR}"
|
||||
"${CMAKE_STATIC_LIBRARY_PREFIX}shadowsocks-c${CMAKE_STATIC_LIBRARY_SUFFIX}" "$<TARGET_FILE:${target}>")
|
||||
else()
|
||||
ss_legacy_library(${target} "${CMAKE_INSTALL_LIBDIR}"
|
||||
"${CMAKE_SHARED_LIBRARY_PREFIX}shadowsocks-c${CMAKE_SHARED_LIBRARY_SUFFIX}" "$<TARGET_FILE:${target}>")
|
||||
if(APPLE)
|
||||
set(legacy_soname "${CMAKE_SHARED_LIBRARY_PREFIX}shadowsocks-c.2${CMAKE_SHARED_LIBRARY_SUFFIX}")
|
||||
else()
|
||||
set(legacy_soname "${CMAKE_SHARED_LIBRARY_PREFIX}shadowsocks-c${CMAKE_SHARED_LIBRARY_SUFFIX}.2")
|
||||
endif()
|
||||
ss_legacy_library(${target} "${CMAKE_INSTALL_LIBDIR}" "${legacy_soname}" "$<TARGET_FILE:${target}>")
|
||||
endif()
|
||||
endif()
|
||||
endforeach()
|
||||
|
||||
if(SS_BUILD_STATIC_LIBRARY OR SS_BUILD_SHARED_LIBRARY)
|
||||
file(WRITE "${CMAKE_CURRENT_BINARY_DIR}/package/shadowsocks-libev-config.cmake"
|
||||
"include(CMakeFindDependencyMacro)\nfind_dependency(shadowsocks-c \${shadowsocks-libev_FIND_VERSION} CONFIG PATHS \"\${CMAKE_CURRENT_LIST_DIR}/../shadowsocks-c\" NO_DEFAULT_PATH)\n")
|
||||
install(FILES "${CMAKE_CURRENT_BINARY_DIR}/package/shadowsocks-libev-config.cmake"
|
||||
DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/shadowsocks-libev)
|
||||
install(FILES "${CMAKE_CURRENT_BINARY_DIR}/package/shadowsocks-c-config-version.cmake"
|
||||
DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/shadowsocks-libev RENAME shadowsocks-libev-config-version.cmake)
|
||||
install(FILES "${CMAKE_CURRENT_BINARY_DIR}/pkgconfig/shadowsocks-c.pc"
|
||||
DESTINATION ${CMAKE_INSTALL_LIBDIR}/pkgconfig RENAME shadowsocks-libev.pc)
|
||||
endif()
|
||||
@@ -31,4 +31,4 @@ if(NOT TARGET shadowsocks::shadowsocks)
|
||||
add_library(shadowsocks::shadowsocks ALIAS shadowsocks::static)
|
||||
endif()
|
||||
endif()
|
||||
check_required_components(shadowsocks-libev)
|
||||
check_required_components(shadowsocks-c)
|
||||
@@ -9,5 +9,5 @@ URL: @PROJECT_URL@
|
||||
Version: @PROJECT_VERSION@
|
||||
Requires:
|
||||
Cflags: -I${includedir}
|
||||
Libs: -L${libdir} -lshadowsocks-libev
|
||||
Libs: -L${libdir} -lshadowsocks-c
|
||||
Libs.private: @SS_PC_PRIVATE@
|
||||
5
debian/libshadowsocks-libev-dev.install
vendored
5
debian/libshadowsocks-libev-dev.install
vendored
@@ -1,6 +1,9 @@
|
||||
usr/include/
|
||||
usr/lib/*/libshadowsocks-libev.so
|
||||
usr/lib/*/libshadowsocks-libev.a
|
||||
usr/lib/*/shadowsocks-libev/
|
||||
usr/lib/*/shadowsocks-c/
|
||||
usr/lib/*/cmake/shadowsocks-libev/
|
||||
usr/lib/*/pkgconfig/
|
||||
usr/lib/*/libshadowsocks-c.so
|
||||
usr/lib/*/libshadowsocks-c.a
|
||||
usr/lib/*/cmake/shadowsocks-c/
|
||||
|
||||
1
debian/libshadowsocks-libev2.install
vendored
1
debian/libshadowsocks-libev2.install
vendored
@@ -1 +1,2 @@
|
||||
usr/lib/*/libshadowsocks-libev.so.*
|
||||
usr/lib/*/libshadowsocks-c.so.*
|
||||
|
||||
4
debian/shadowsocks-libev.install
vendored
4
debian/shadowsocks-libev.install
vendored
@@ -4,5 +4,5 @@ debian/config.json usr/share/shadowsocks-libev
|
||||
debian/shadowsocks-libev-*.service lib/systemd/system
|
||||
usr/bin/
|
||||
usr/share/man/
|
||||
usr/share/doc/shadowsocks-libev/
|
||||
usr/share/licenses/shadowsocks-libev/
|
||||
usr/share/doc/shadowsocks-c/
|
||||
usr/share/licenses/shadowsocks-c/
|
||||
|
||||
@@ -27,7 +27,7 @@ set(ASCIIDOC_XML_OPTS -b docbook -d manpage -f ${DOC_DIR}/asciidoc.conf -aversio
|
||||
set(ASCIIDOC_HTML_OPTS -b html4 -d article -f ${DOC_DIR}/asciidoc.conf -aversion=${PROJECT_VERSION})
|
||||
|
||||
|
||||
set(MAN_NAMES ss-local.1 ss-manager.1 ss-nat.1 ss-redir.1 ss-server.1 ss-tunnel.1 shadowsocks-libev.8)
|
||||
set(MAN_NAMES ss-local.1 ss-manager.1 ss-nat.1 ss-redir.1 ss-server.1 ss-tunnel.1 shadowsocks-c.8)
|
||||
set(MAN_FILES)
|
||||
set(HTML_FILES)
|
||||
|
||||
@@ -86,3 +86,6 @@ endif ()
|
||||
# This is required for custom command
|
||||
file(MAKE_DIRECTORY ${PROJECT_BINARY_DIR}/man)
|
||||
file(MAKE_DIRECTORY ${PROJECT_BINARY_DIR}/html)
|
||||
|
||||
# Retain the former manual lookup name.
|
||||
file(WRITE "${PROJECT_BINARY_DIR}/man/shadowsocks-libev.8" ".so man8/shadowsocks-c.8\n")
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
shadowsocks-libev(8)
|
||||
====================
|
||||
shadowsocks-c(8)
|
||||
================
|
||||
|
||||
NAME
|
||||
----
|
||||
shadowsocks-libev - a lightweight and secure socks5 proxy
|
||||
shadowsocks-c - a lightweight and secure socks5 proxy
|
||||
|
||||
SYNOPSIS
|
||||
--------
|
||||
@@ -13,12 +13,12 @@ SYNOPSIS
|
||||
|
||||
DESCRIPTION
|
||||
-----------
|
||||
*Shadowsocks-libev* is a lightweight and secure socks5 proxy.
|
||||
*shadowsocks-c* is a lightweight and secure socks5 proxy.
|
||||
It is a port of the original shadowsocks created by clowwindy.
|
||||
*Shadowsocks-libev* is written in pure C and takes advantage of *libev*
|
||||
*shadowsocks-c* is written in pure C and takes advantage of *libev*
|
||||
to achieve both high performance and low resource consumption.
|
||||
|
||||
*Shadowsocks-libev* consists of five components. One is `ss-server`(1)
|
||||
*shadowsocks-c* consists of five components. One is `ss-server`(1)
|
||||
that runs on a remote server to provide secured tunnel service.
|
||||
`ss-local`(1) and `ss-redir`(1) are clients on your local machines to proxy
|
||||
traffic(TCP/UDP or both).
|
||||
@@ -56,7 +56,7 @@ Not available in manager mode.
|
||||
-m <encrypt_method>::
|
||||
Set the cipher.
|
||||
+
|
||||
*Shadowsocks-libev* accepts 22 different ciphers:
|
||||
*shadowsocks-c* accepts 22 different ciphers:
|
||||
+
|
||||
2022-blake3-aes-128-gcm, 2022-blake3-aes-256-gcm,
|
||||
2022-blake3-chacha20-poly1305,
|
||||
@@ -29,9 +29,9 @@ Build the scratch runtime image using the same cached build stage:
|
||||
|
||||
```sh
|
||||
docker build --platform linux/arm64 -f docker/static/Dockerfile \
|
||||
--target runtime -t shadowsocks-libev:static-arm64 .
|
||||
--target runtime -t shadowsocks-c:static-arm64 .
|
||||
docker run --rm -p 8388:8388/tcp -p 8388:8388/udp \
|
||||
shadowsocks-libev:static-arm64 \
|
||||
shadowsocks-c:static-arm64 \
|
||||
-s 0.0.0.0 -p 8388 -k example-password -m aes-256-gcm -u
|
||||
```
|
||||
|
||||
|
||||
@@ -59,7 +59,7 @@ SS_BUILD_EXECUTABLES, SS_BUILD_STATIC_LIBRARY and SS_BUILD_SHARED_LIBRARY contro
|
||||
outputs independently. Docs and platform shell tools are explicit opt-ins.
|
||||
Bundled mode is the default and the `bundled` / `minimal` presets exercise it.
|
||||
Maintainers stage the intended source files, then run
|
||||
`scripts/source_archive.py build-artifacts/shadowsocks-libev.tar.gz`.
|
||||
`scripts/source_archive.py build-artifacts/shadowsocks-c.tar.gz`.
|
||||
The archive includes tracked working-tree contents (so uncommitted changes are
|
||||
included); record the final commit with a published release and use a clean
|
||||
checkout for publishing. No submodules are accepted in the archive.
|
||||
@@ -197,3 +197,16 @@ resolution remains synchronous before serving traffic. Tests use a local delayed
|
||||
DNS server to verify both address families, NXDOMAIN, cancellation, exactly-once
|
||||
callbacks, and timer progress while requests wait. Hostname ACL integration uses
|
||||
an unreachable proxy upstream so successful transfers prove direct resolution.
|
||||
|
||||
## Project name and compatibility
|
||||
|
||||
The project is named **shadowsocks-c**. New library outputs are
|
||||
`libshadowsocks-c`, and CMake/pkg-config consumers use `shadowsocks-c`.
|
||||
`shadowsocks.h`, its ABI version, and all `ss-*` commands remain stable.
|
||||
Legacy library filenames are installed as relative symlinks on Unix and copies
|
||||
on Windows; `find_package(shadowsocks-libev)` and the old pkg-config name resolve
|
||||
to the new library. Private dependency archives and license files install under
|
||||
`shadowsocks-c`. Source archives and the main manual use the new name.
|
||||
|
||||
Existing configuration paths, Debian package identifiers and service names
|
||||
remain compatible. GitHub URLs retain the current repository location.
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
# Backward-compatible maintainer entrypoint for the offline release archive.
|
||||
set -euo pipefail
|
||||
root=$(git rev-parse --show-toplevel)
|
||||
name=shadowsocks-libev
|
||||
name=shadowsocks-c
|
||||
directory=$root
|
||||
while getopts "n:o:" opt; do
|
||||
case "$opt" in
|
||||
|
||||
@@ -16,7 +16,7 @@ import tarfile
|
||||
def main():
|
||||
parser = argparse.ArgumentParser(description=__doc__)
|
||||
parser.add_argument("output", type=Path)
|
||||
parser.add_argument("--prefix", default="shadowsocks-libev-3.3.6")
|
||||
parser.add_argument("--prefix", default="shadowsocks-c-3.3.6")
|
||||
args = parser.parse_args()
|
||||
root = Path(__file__).resolve().parents[1]
|
||||
if "/" in args.prefix or args.prefix in ("", ".", ".."):
|
||||
|
||||
@@ -149,14 +149,15 @@ endif()
|
||||
foreach(kind STATIC SHARED)
|
||||
if(SS_BUILD_${kind}_LIBRARY)
|
||||
string(TOLOWER "${kind}" suffix)
|
||||
set(target shadowsocks-libev-${suffix})
|
||||
set(target shadowsocks-c-${suffix})
|
||||
add_library(${target} ${kind} ${LIBSHADOWSOCKS_LIBEV_SOURCE})
|
||||
add_library(shadowsocks-libev-${suffix} ALIAS ${target})
|
||||
target_compile_definitions(${target} PRIVATE MODULE_LOCAL LIB_ONLY)
|
||||
target_include_directories(${target} PUBLIC
|
||||
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}>
|
||||
$<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}>)
|
||||
target_link_libraries(${target} PRIVATE ${SS_CORE_DEPS} ${SS_ACL_DEPS})
|
||||
set_target_properties(${target} PROPERTIES OUTPUT_NAME shadowsocks-libev)
|
||||
set_target_properties(${target} PROPERTIES OUTPUT_NAME shadowsocks-c)
|
||||
if(kind STREQUAL "SHARED")
|
||||
set_target_properties(${target} PROPERTIES VERSION 2.0.0 SOVERSION 2)
|
||||
endif()
|
||||
|
||||
@@ -321,7 +321,7 @@ void
|
||||
usage()
|
||||
{
|
||||
printf("\n");
|
||||
printf("shadowsocks-libev %s\n\n", VERSION);
|
||||
printf("shadowsocks-c %s\n\n", VERSION);
|
||||
printf(
|
||||
" maintained by Max Lv <max.c.lv@gmail.com> and Linus Yang <laokongzi@gmail.com>\n\n");
|
||||
printf(" usage:\n\n");
|
||||
|
||||
@@ -1,8 +1,21 @@
|
||||
cmake_minimum_required(VERSION 3.20)
|
||||
project(shadowsocks_consumer LANGUAGES C)
|
||||
find_package(shadowsocks-libev CONFIG REQUIRED)
|
||||
set(SS_PACKAGE_NAME shadowsocks-c CACHE STRING "Installed package to test")
|
||||
find_package(${SS_PACKAGE_NAME} CONFIG REQUIRED)
|
||||
foreach(kind shared static)
|
||||
if(TARGET shadowsocks::${kind})
|
||||
if(SS_PACKAGE_NAME STREQUAL "shadowsocks-libev")
|
||||
# Exercise legacy filenames as well as legacy package discovery.
|
||||
foreach(property IMPORTED_LOCATION IMPORTED_IMPLIB)
|
||||
get_target_property(location shadowsocks::${kind} ${property})
|
||||
if(location)
|
||||
get_filename_component(directory "${location}" DIRECTORY)
|
||||
get_filename_component(filename "${location}" NAME)
|
||||
string(REPLACE "shadowsocks-c" "shadowsocks-libev" filename "${filename}")
|
||||
set_property(TARGET shadowsocks::${kind} PROPERTY ${property} "${directory}/${filename}")
|
||||
endif()
|
||||
endforeach()
|
||||
endif()
|
||||
add_executable(consumer_${kind} main.c)
|
||||
target_link_libraries(consumer_${kind} PRIVATE shadowsocks::${kind})
|
||||
endif()
|
||||
|
||||
@@ -172,10 +172,10 @@ done
|
||||
|
||||
# Shared library should be findable by ldconfig
|
||||
sudo ldconfig
|
||||
if ldconfig -p | grep -q libshadowsocks-libev; then
|
||||
check_pass "libshadowsocks-libev found by ldconfig"
|
||||
if ldconfig -p | grep -q libshadowsocks-c; then
|
||||
check_pass "libshadowsocks-c found by ldconfig"
|
||||
else
|
||||
check_fail "libshadowsocks-libev not found by ldconfig"
|
||||
check_fail "libshadowsocks-c not found by ldconfig"
|
||||
fi
|
||||
|
||||
# Header should be in the include path
|
||||
|
||||
6
third_party/CMakeLists.txt
vendored
6
third_party/CMakeLists.txt
vendored
@@ -74,9 +74,9 @@ include(${PROJECT_SOURCE_DIR}/cmake/EventLoop.cmake)
|
||||
include(Sodium.cmake)
|
||||
|
||||
foreach(name sodium uv mbedtls)
|
||||
install(FILES "${${name}_SOURCE}/LICENSE" DESTINATION "${CMAKE_INSTALL_DATADIR}/licenses/shadowsocks-libev/${name}")
|
||||
install(FILES "${${name}_SOURCE}/LICENSE" DESTINATION "${CMAKE_INSTALL_DATADIR}/licenses/shadowsocks-c/${name}")
|
||||
endforeach()
|
||||
install(FILES "${cares_SOURCE}/LICENSE.md" DESTINATION "${CMAKE_INSTALL_DATADIR}/licenses/shadowsocks-libev/cares")
|
||||
install(FILES "${cares_SOURCE}/LICENSE.md" DESTINATION "${CMAKE_INSTALL_DATADIR}/licenses/shadowsocks-c/cares")
|
||||
if(SS_ENABLE_REGEX)
|
||||
install(FILES "${pcre2_SOURCE}/LICENCE.md" DESTINATION "${CMAKE_INSTALL_DATADIR}/licenses/shadowsocks-libev/pcre2")
|
||||
install(FILES "${pcre2_SOURCE}/LICENCE.md" DESTINATION "${CMAKE_INSTALL_DATADIR}/licenses/shadowsocks-c/pcre2")
|
||||
endif()
|
||||
|
||||
Reference in New Issue
Block a user