mirror of
https://github.com/caiwx86/small-packages.git
synced 2026-09-10 18:34:09 +08:00
update 2026-05-27 23:25:57
This commit is contained in:
@@ -0,0 +1,98 @@
|
||||
#
|
||||
# Copyright (C) 2017-2020 Yousong Zhou <yszhou4tech@gmail.com>
|
||||
#
|
||||
# This is free software, licensed under the GNU General Public License v2.
|
||||
# See /LICENSE for more information.
|
||||
#
|
||||
|
||||
include $(TOPDIR)/rules.mk
|
||||
|
||||
# Checklist when bumping versions
|
||||
#
|
||||
# - update cipher list by checking src/crypto.c:crypto_init()
|
||||
# - check if default mode has changed from being tcp_only
|
||||
#
|
||||
PKG_NAME:=shadowsocks-libev
|
||||
PKG_VERSION:=3.3.6
|
||||
PKG_RELEASE:=1
|
||||
|
||||
PKG_SOURCE_PROTO:=git
|
||||
PKG_SOURCE_URL:=https://github.com/shadowsocks/shadowsocks-libev.git
|
||||
PKG_SOURCE_DATE:=2026-02-09
|
||||
PKG_SOURCE_VERSION:=c5e8788013a37afe54ea1c2b7c03395cccc663cf
|
||||
PKG_MIRROR_HASH:=96d0b486a0c8dbb2acf2af56534f6c765565c127c3695c98b5157b24993a4839
|
||||
|
||||
PKG_MAINTAINER:=Yousong Zhou <yszhou4tech@gmail.com>
|
||||
|
||||
PKG_LICENSE:=GPL-3.0-or-later
|
||||
PKG_LICENSE_FILES:=LICENSE
|
||||
PKG_CPE_ID:=cpe:/a:shadowsocks:shadowsocks-libev
|
||||
|
||||
PKG_BUILD_PARALLEL:=1
|
||||
PKG_BUILD_FLAGS:=no-mips16 lto
|
||||
|
||||
include $(INCLUDE_DIR)/package.mk
|
||||
include $(INCLUDE_DIR)/cmake.mk
|
||||
|
||||
CMAKE_OPTIONS += \
|
||||
-DWITH_STATIC=OFF \
|
||||
-DWITH_EMBEDDED_SRC=ON \
|
||||
-DWITH_DOC_MAN=OFF \
|
||||
-DWITH_DOC_HTML=OFF \
|
||||
-DCMAKE_BUILD_TYPE=Release \
|
||||
-DBUILD_TESTING=OFF \
|
||||
-DENABLE_CONNMARKTOS=OFF \
|
||||
-DENABLE_NFTABLES=OFF
|
||||
|
||||
define Package/shadowsocks-libev/Default
|
||||
SECTION:=net
|
||||
CATEGORY:=Network
|
||||
SUBMENU:=Web Servers/Proxies
|
||||
URL:=https://github.com/shadowsocks/shadowsocks-libev
|
||||
DEPENDS:=+libev +libmbedtls +libpthread +libsodium +libcares +libpcre2
|
||||
endef
|
||||
|
||||
define Package/shadowsocks-libev-ss-local
|
||||
$(call Package/shadowsocks-libev/Default)
|
||||
TITLE:=shadowsocks-libev ss-local
|
||||
endef
|
||||
|
||||
define Package/shadowsocks-libev-ss-redir
|
||||
$(call Package/shadowsocks-libev/Default)
|
||||
TITLE:=shadowsocks-libev ss-redir
|
||||
endef
|
||||
|
||||
define Package/shadowsocks-libev-ss-tunnel
|
||||
$(call Package/shadowsocks-libev/Default)
|
||||
TITLE:=shadowsocks-libev ss-tunnel
|
||||
endef
|
||||
|
||||
define Package/shadowsocks-libev-ss-server
|
||||
$(call Package/shadowsocks-libev/Default)
|
||||
TITLE:=shadowsocks-libev ss-server
|
||||
endef
|
||||
|
||||
define Package/shadowsocks-libev-ss-local/install
|
||||
$(INSTALL_DIR) $(1)/usr/bin
|
||||
$(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/bin/ss-local $(1)/usr/bin
|
||||
endef
|
||||
|
||||
define Package/shadowsocks-libev-ss-redir/install
|
||||
$(INSTALL_DIR) $(1)/usr/bin
|
||||
$(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/bin/ss-redir $(1)/usr/bin
|
||||
endef
|
||||
|
||||
define Package/shadowsocks-libev-ss-tunnel/install
|
||||
$(INSTALL_DIR) $(1)/usr/bin
|
||||
$(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/bin/ss-tunnel $(1)/usr/bin
|
||||
endef
|
||||
|
||||
define Package/shadowsocks-libev-ss-server/install
|
||||
$(INSTALL_DIR) $(1)/usr/bin
|
||||
$(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/bin/ss-server $(1)/usr/bin
|
||||
endef
|
||||
|
||||
$(eval $(call BuildPackage,shadowsocks-libev-ss-local))
|
||||
$(eval $(call BuildPackage,shadowsocks-libev-ss-redir))
|
||||
$(eval $(call BuildPackage,shadowsocks-libev-ss-tunnel))
|
||||
$(eval $(call BuildPackage,shadowsocks-libev-ss-server))
|
||||
+141
@@ -0,0 +1,141 @@
|
||||
From 8be7a7cb00b9540e9be05d409191b0bc1ba424f0 Mon Sep 17 00:00:00 2001
|
||||
From: notsure2 <notsure2@protonmail.com>
|
||||
Date: Mon, 11 Dec 2023 09:15:47 +0200
|
||||
Subject: [PATCH] Fix mishandling of incoming socket buffer. It must be set on
|
||||
the listening socket not the accepted socket.
|
||||
|
||||
---
|
||||
src/local.c | 16 ++++++++--------
|
||||
src/redir.c | 16 ++++++++--------
|
||||
src/server.c | 16 ++++++++--------
|
||||
src/tunnel.c | 16 ++++++++--------
|
||||
4 files changed, 32 insertions(+), 32 deletions(-)
|
||||
|
||||
--- a/src/local.c
|
||||
+++ b/src/local.c
|
||||
@@ -205,6 +205,14 @@ create_and_bind(const char *addr, const
|
||||
}
|
||||
}
|
||||
|
||||
+ if (tcp_incoming_sndbuf > 0) {
|
||||
+ setsockopt(listen_sock, SOL_SOCKET, SO_SNDBUF, &tcp_incoming_sndbuf, sizeof(int));
|
||||
+ }
|
||||
+
|
||||
+ if (tcp_incoming_rcvbuf > 0) {
|
||||
+ setsockopt(listen_sock, SOL_SOCKET, SO_RCVBUF, &tcp_incoming_rcvbuf, sizeof(int));
|
||||
+ }
|
||||
+
|
||||
s = bind(listen_sock, rp->ai_addr, rp->ai_addrlen);
|
||||
if (s == 0) {
|
||||
/* We managed to bind successfully! */
|
||||
@@ -1406,14 +1414,6 @@ accept_cb(EV_P_ ev_io *w, int revents)
|
||||
setsockopt(serverfd, SOL_SOCKET, SO_NOSIGPIPE, &opt, sizeof(opt));
|
||||
#endif
|
||||
|
||||
- if (tcp_incoming_sndbuf > 0) {
|
||||
- setsockopt(serverfd, SOL_SOCKET, SO_SNDBUF, &tcp_incoming_sndbuf, sizeof(int));
|
||||
- }
|
||||
-
|
||||
- if (tcp_incoming_rcvbuf > 0) {
|
||||
- setsockopt(serverfd, SOL_SOCKET, SO_RCVBUF, &tcp_incoming_rcvbuf, sizeof(int));
|
||||
- }
|
||||
-
|
||||
server_t *server = new_server(serverfd);
|
||||
server->listener = listener;
|
||||
|
||||
--- a/src/redir.c
|
||||
+++ b/src/redir.c
|
||||
@@ -201,6 +201,14 @@ create_and_bind(const char *addr, const
|
||||
LOGI("tcp tproxy mode enabled");
|
||||
}
|
||||
|
||||
+ if (tcp_incoming_sndbuf > 0) {
|
||||
+ setsockopt(listen_sock, SOL_SOCKET, SO_SNDBUF, &tcp_incoming_sndbuf, sizeof(int));
|
||||
+ }
|
||||
+
|
||||
+ if (tcp_incoming_rcvbuf > 0) {
|
||||
+ setsockopt(listen_sock, SOL_SOCKET, SO_RCVBUF, &tcp_incoming_rcvbuf, sizeof(int));
|
||||
+ }
|
||||
+
|
||||
s = bind(listen_sock, rp->ai_addr, rp->ai_addrlen);
|
||||
if (s == 0) {
|
||||
/* We managed to bind successfully! */
|
||||
@@ -759,14 +767,6 @@ accept_cb(EV_P_ ev_io *w, int revents)
|
||||
setsockopt(serverfd, SOL_SOCKET, SO_NOSIGPIPE, &opt, sizeof(opt));
|
||||
#endif
|
||||
|
||||
- if (tcp_incoming_sndbuf > 0) {
|
||||
- setsockopt(serverfd, SOL_SOCKET, SO_SNDBUF, &tcp_incoming_sndbuf, sizeof(int));
|
||||
- }
|
||||
-
|
||||
- if (tcp_incoming_rcvbuf > 0) {
|
||||
- setsockopt(serverfd, SOL_SOCKET, SO_RCVBUF, &tcp_incoming_rcvbuf, sizeof(int));
|
||||
- }
|
||||
-
|
||||
int index = rand() % listener->remote_num;
|
||||
struct sockaddr *remote_addr = listener->remote_addr[index];
|
||||
|
||||
--- a/src/server.c
|
||||
+++ b/src/server.c
|
||||
@@ -620,6 +620,14 @@ create_and_bind(const char *host, const
|
||||
}
|
||||
}
|
||||
|
||||
+ if (tcp_incoming_sndbuf > 0) {
|
||||
+ setsockopt(listen_sock, SOL_SOCKET, SO_SNDBUF, &tcp_incoming_sndbuf, sizeof(int));
|
||||
+ }
|
||||
+
|
||||
+ if (tcp_incoming_rcvbuf > 0) {
|
||||
+ setsockopt(listen_sock, SOL_SOCKET, SO_RCVBUF, &tcp_incoming_rcvbuf, sizeof(int));
|
||||
+ }
|
||||
+
|
||||
// Enable out-of-tree mptcp
|
||||
if (mptcp == 1) {
|
||||
int i = 0;
|
||||
@@ -1769,14 +1777,6 @@ accept_cb(EV_P_ ev_io *w, int revents)
|
||||
setsockopt(serverfd, SOL_SOCKET, SO_NOSIGPIPE, &opt, sizeof(opt));
|
||||
#endif
|
||||
|
||||
- if (tcp_incoming_sndbuf > 0) {
|
||||
- setsockopt(serverfd, SOL_SOCKET, SO_SNDBUF, &tcp_incoming_sndbuf, sizeof(int));
|
||||
- }
|
||||
-
|
||||
- if (tcp_incoming_rcvbuf > 0) {
|
||||
- setsockopt(serverfd, SOL_SOCKET, SO_RCVBUF, &tcp_incoming_rcvbuf, sizeof(int));
|
||||
- }
|
||||
-
|
||||
setnonblocking(serverfd);
|
||||
|
||||
server_t *server = new_server(serverfd, listener);
|
||||
--- a/src/tunnel.c
|
||||
+++ b/src/tunnel.c
|
||||
@@ -166,6 +166,14 @@ create_and_bind(const char *addr, const
|
||||
}
|
||||
}
|
||||
|
||||
+ if (tcp_incoming_sndbuf > 0) {
|
||||
+ setsockopt(listen_sock, SOL_SOCKET, SO_SNDBUF, &tcp_incoming_sndbuf, sizeof(int));
|
||||
+ }
|
||||
+
|
||||
+ if (tcp_incoming_rcvbuf > 0) {
|
||||
+ setsockopt(listen_sock, SOL_SOCKET, SO_RCVBUF, &tcp_incoming_rcvbuf, sizeof(int));
|
||||
+ }
|
||||
+
|
||||
s = bind(listen_sock, rp->ai_addr, rp->ai_addrlen);
|
||||
if (s == 0) {
|
||||
/* We managed to bind successfully! */
|
||||
@@ -725,14 +733,6 @@ accept_cb(EV_P_ ev_io *w, int revents)
|
||||
setsockopt(serverfd, SOL_SOCKET, SO_NOSIGPIPE, &opt, sizeof(opt));
|
||||
#endif
|
||||
|
||||
- if (tcp_incoming_sndbuf > 0) {
|
||||
- setsockopt(serverfd, SOL_SOCKET, SO_SNDBUF, &tcp_incoming_sndbuf, sizeof(int));
|
||||
- }
|
||||
-
|
||||
- if (tcp_incoming_rcvbuf > 0) {
|
||||
- setsockopt(serverfd, SOL_SOCKET, SO_RCVBUF, &tcp_incoming_rcvbuf, sizeof(int));
|
||||
- }
|
||||
-
|
||||
int index = rand() % listener->remote_num;
|
||||
struct sockaddr *remote_addr = listener->remote_addr[index];
|
||||
|
||||
@@ -0,0 +1,115 @@
|
||||
From f4ee43fa27e00a573d90a8cac68f12655570bbf7 Mon Sep 17 00:00:00 2001
|
||||
From: lwb1978 <86697442+lwb1978@users.noreply.github.com>
|
||||
Date: Tue, 4 Feb 2025 15:51:17 +0800
|
||||
Subject: [PATCH] Deprecate load16_be() function in favor to ntohs() function
|
||||
|
||||
---
|
||||
src/aead.c | 2 +-
|
||||
src/local.c | 6 +++---
|
||||
src/server.c | 2 +-
|
||||
src/udprelay.c | 2 +-
|
||||
src/utils.c | 8 --------
|
||||
src/utils.h | 1 -
|
||||
6 files changed, 6 insertions(+), 15 deletions(-)
|
||||
|
||||
diff --git a/src/aead.c b/src/aead.c
|
||||
index 73349da64..e5d9b01e7 100644
|
||||
--- a/src/aead.c
|
||||
+++ b/src/aead.c
|
||||
@@ -605,7 +605,7 @@ aead_chunk_decrypt(cipher_ctx_t *ctx, uint8_t *p, uint8_t *c, uint8_t *n,
|
||||
return CRYPTO_ERROR;
|
||||
assert(*plen == CHUNK_SIZE_LEN);
|
||||
|
||||
- mlen = load16_be(len_buf);
|
||||
+ mlen = ntohs(*(uint16_t*)len_buf);
|
||||
mlen = mlen & CHUNK_SIZE_MASK;
|
||||
|
||||
if (mlen == 0)
|
||||
diff --git a/src/local.c b/src/local.c
|
||||
index fa1ca7b31..76d46de17 100644
|
||||
--- a/src/local.c
|
||||
+++ b/src/local.c
|
||||
@@ -382,7 +382,7 @@ server_handshake(EV_P_ ev_io *w, buffer_t *buf)
|
||||
abuf->len += in_addr_len + 2;
|
||||
|
||||
if (acl || verbose) {
|
||||
- uint16_t p = load16_be(buf->data + request_len + in_addr_len);
|
||||
+ uint16_t p = ntohs(*(uint16_t*)(buf->data + request_len + in_addr_len));
|
||||
if (!inet_ntop(AF_INET, (const void *)(buf->data + request_len),
|
||||
ip, INET_ADDRSTRLEN)) {
|
||||
LOGI("inet_ntop(AF_INET): %s", strerror(errno));
|
||||
@@ -400,7 +400,7 @@ server_handshake(EV_P_ ev_io *w, buffer_t *buf)
|
||||
abuf->len += name_len + 2;
|
||||
|
||||
if (acl || verbose) {
|
||||
- uint16_t p = load16_be(buf->data + request_len + 1 + name_len);
|
||||
+ uint16_t p = ntohs(*(uint16_t*)(buf->data + request_len + 1 + name_len));
|
||||
memcpy(host, buf->data + request_len + 1, name_len);
|
||||
host[name_len] = '\0';
|
||||
sprintf(port, "%d", p);
|
||||
@@ -414,7 +414,7 @@ server_handshake(EV_P_ ev_io *w, buffer_t *buf)
|
||||
abuf->len += in6_addr_len + 2;
|
||||
|
||||
if (acl || verbose) {
|
||||
- uint16_t p = load16_be(buf->data + request_len + in6_addr_len);
|
||||
+ uint16_t p = ntohs(*(uint16_t*)(buf->data + request_len + in6_addr_len));
|
||||
if (!inet_ntop(AF_INET6, (const void *)(buf->data + request_len),
|
||||
ip, INET6_ADDRSTRLEN)) {
|
||||
LOGI("inet_ntop(AF_INET6): %s", strerror(errno));
|
||||
diff --git a/src/server.c b/src/server.c
|
||||
index 73b65996d..be8c6ffcf 100644
|
||||
--- a/src/server.c
|
||||
+++ b/src/server.c
|
||||
@@ -1129,7 +1129,7 @@ server_recv_cb(EV_P_ ev_io *w, int revents)
|
||||
return;
|
||||
}
|
||||
|
||||
- port = ntohs(load16_be(server->buf->data + offset));
|
||||
+ port = *(uint16_t*)(server->buf->data + offset);
|
||||
|
||||
offset += 2;
|
||||
|
||||
diff --git a/src/udprelay.c b/src/udprelay.c
|
||||
index 5de38830a..f6a5a7c25 100644
|
||||
--- a/src/udprelay.c
|
||||
+++ b/src/udprelay.c
|
||||
@@ -316,7 +316,7 @@ parse_udprelay_header(const char *buf, const size_t buf_len,
|
||||
}
|
||||
|
||||
if (port != NULL) {
|
||||
- sprintf(port, "%d", load16_be(buf + offset));
|
||||
+ sprintf(port, "%d", ntohs(*(uint16_t*)(buf + offset)));
|
||||
}
|
||||
offset += 2;
|
||||
|
||||
diff --git a/src/utils.c b/src/utils.c
|
||||
index d3ff2aba6..c7a5f0aa6 100644
|
||||
--- a/src/utils.c
|
||||
+++ b/src/utils.c
|
||||
@@ -571,14 +571,6 @@ get_default_conf(void)
|
||||
#endif
|
||||
}
|
||||
|
||||
-uint16_t
|
||||
-load16_be(const void *s)
|
||||
-{
|
||||
- const uint8_t *in = (const uint8_t *)s;
|
||||
- return ((uint16_t)in[0] << 8)
|
||||
- | ((uint16_t)in[1]);
|
||||
-}
|
||||
-
|
||||
int
|
||||
get_mptcp(int enable)
|
||||
{
|
||||
diff --git a/src/utils.h b/src/utils.h
|
||||
index 1df24c166..c20506da9 100644
|
||||
--- a/src/utils.h
|
||||
+++ b/src/utils.h
|
||||
@@ -249,7 +249,6 @@ void *ss_realloc(void *ptr, size_t new_size);
|
||||
|
||||
int ss_is_ipv6addr(const char *addr);
|
||||
char *get_default_conf(void);
|
||||
-uint16_t load16_be(const void *s);
|
||||
int get_mptcp(int enable);
|
||||
|
||||
#endif // _UTILS_H
|
||||
Reference in New Issue
Block a user