mirror of
https://github.com/shadowsocks/shadowsocks-libev.git
synced 2026-10-21 14:33:55 +00:00
The change is to support the 'fail2ban' feature. Instead of
blocking IPs by server itself, server just add malicious IPs
to specified sets of nftables. So admin can configure rules
to deal with those IPs.
Notes: cap_net_admin capability is required.
Example configuration:
# nft add table ip fail2ban
# nft add chain ip fail2ban input { type filter hook input priority 0 \; }
# nft add set ip fail2ban badips { type ipv4_addr \; flags dynamic, timeout \; timeout 1h \; }
# nft add rule ip fail2ban input ip saddr @badips drop
# ss-server -c config.json --nftables-sets badips
116 lines
3.3 KiB
Makefile
116 lines
3.3 KiB
Makefile
VERSION_INFO = 2:0:0
|
|
|
|
AM_CFLAGS = -g -O2 -Wall -Werror -Wno-deprecated-declarations -fno-strict-aliasing -std=gnu99 -D_GNU_SOURCE
|
|
AM_CFLAGS += $(PTHREAD_CFLAGS)
|
|
if !USE_SYSTEM_SHARED_LIB
|
|
AM_CFLAGS += -I$(top_srcdir)/libbloom
|
|
AM_CFLAGS += -I$(top_srcdir)/libipset/include
|
|
AM_CFLAGS += -I$(top_srcdir)/libcork/include
|
|
endif
|
|
AM_CFLAGS += $(LIBPCRE_CFLAGS)
|
|
|
|
SS_COMMON_LIBS = $(INET_NTOP_LIB) $(LIBPCRE_LIBS) $(NETFILTER_CONNTRACK_LIBS) $(NFTABLES_LIBS)
|
|
if !USE_SYSTEM_SHARED_LIB
|
|
SS_COMMON_LIBS += $(top_builddir)/libbloom/libbloom.la \
|
|
$(top_builddir)/libipset/libipset.la \
|
|
$(top_builddir)/libcork/libcork.la
|
|
else
|
|
SS_COMMON_LIBS += -lbloom -lcork -lcorkipset
|
|
endif
|
|
SS_COMMON_LIBS += -lev -lsodium -lm
|
|
|
|
bin_PROGRAMS = ss-local ss-tunnel ss-server
|
|
if !BUILD_WINCOMPAT
|
|
bin_PROGRAMS += ss-manager
|
|
endif
|
|
|
|
acl_src = rule.c \
|
|
acl.c
|
|
|
|
crypto_src = crypto.c \
|
|
aead.c \
|
|
stream.c \
|
|
ppbloom.c \
|
|
base64.c
|
|
|
|
plugin_src = plugin.c
|
|
|
|
common_src = utils.c \
|
|
jconf.c \
|
|
json.c \
|
|
udprelay.c \
|
|
cache.c \
|
|
netutils.c
|
|
|
|
if BUILD_WINCOMPAT
|
|
common_src += winsock.c
|
|
endif
|
|
|
|
ss_local_SOURCES = local.c \
|
|
$(common_src) \
|
|
$(crypto_src) \
|
|
$(plugin_src) \
|
|
$(acl_src)
|
|
|
|
ss_tunnel_SOURCES = tunnel.c \
|
|
$(common_src) \
|
|
$(crypto_src) \
|
|
$(plugin_src)
|
|
|
|
ss_server_SOURCES = resolv.c \
|
|
server.c \
|
|
$(common_src) \
|
|
$(crypto_src) \
|
|
$(plugin_src) \
|
|
${acl_src}
|
|
|
|
ss_manager_SOURCES = utils.c \
|
|
jconf.c \
|
|
json.c \
|
|
netutils.c \
|
|
manager.c
|
|
|
|
ss_local_LDADD = $(SS_COMMON_LIBS)
|
|
ss_tunnel_LDADD = $(SS_COMMON_LIBS)
|
|
ss_server_LDADD = $(SS_COMMON_LIBS)
|
|
ss_manager_LDADD = $(SS_COMMON_LIBS)
|
|
ss_local_LDADD += -lcares
|
|
ss_tunnel_LDADD += -lcares
|
|
ss_server_LDADD += -lcares
|
|
ss_manager_LDADD += -lcares
|
|
|
|
ss_local_CFLAGS = $(AM_CFLAGS) -DMODULE_LOCAL
|
|
ss_tunnel_CFLAGS = $(AM_CFLAGS) -DMODULE_TUNNEL
|
|
ss_server_CFLAGS = $(AM_CFLAGS) -DMODULE_REMOTE
|
|
ss_manager_CFLAGS = $(AM_CFLAGS) -DMODULE_MANAGER
|
|
|
|
if BUILD_REDIRECTOR
|
|
bin_SCRIPTS = ss-nat
|
|
bin_PROGRAMS += ss-redir
|
|
ss_redir_SOURCES = utils.c \
|
|
jconf.c \
|
|
json.c \
|
|
netutils.c \
|
|
cache.c \
|
|
udprelay.c \
|
|
redir.c \
|
|
$(crypto_src) \
|
|
$(plugin_src)
|
|
|
|
ss_redir_CFLAGS = $(AM_CFLAGS) -DMODULE_REDIR
|
|
ss_redir_LDADD = $(SS_COMMON_LIBS)
|
|
ss_redir_LDADD += -lcares
|
|
endif
|
|
|
|
lib_LTLIBRARIES = libshadowsocks-libev.la
|
|
libshadowsocks_libev_la_SOURCES = $(ss_local_SOURCES)
|
|
libshadowsocks_libev_la_CFLAGS = $(ss_local_CFLAGS) -DLIB_ONLY
|
|
libshadowsocks_libev_la_LDFLAGS = -version-info $(VERSION_INFO)
|
|
libshadowsocks_libev_la_LIBADD = $(ss_local_LDADD)
|
|
include_HEADERS = shadowsocks.h
|
|
|
|
noinst_HEADERS = acl.h crypto.h stream.h aead.h json.h netutils.h redir.h server.h uthash.h \
|
|
cache.h local.h plugin.h resolv.h tunnel.h utils.h base64.h ppbloom.h \
|
|
common.h jconf.h manager.h rule.h socks5.h udprelay.h winsock.h
|
|
EXTRA_DIST = ss-nat
|