op-packages/3proxy/Makefile
github-actions[bot] 903d80abd4 🚀 Sync 2026-05-14 20:40:35
2026-05-14 20:40:35 +08:00

141 lines
4.8 KiB
Makefile

# SPDX-License-Identifier: GPL-2.0-only
#
# Copyright (C) 2025 ImmortalWrt.org
include $(TOPDIR)/rules.mk
PKG_NAME:=3proxy
PKG_VERSION:=0.9.5
PKG_RELEASE:=2
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
PKG_SOURCE_URL:=https://codeload.github.com/3proxy/3proxy/tar.gz/$(PKG_VERSION)?
PKG_HASH:=skip
PKG_CPE_ID:=cpe:/a:3proxy:3proxy
PKG_LICENSE:=3proxy Apache-2.0 GPL-2.0-or-later LGPL-2.1-or-later
PKG_LICENSE_FILES:=copying
PKG_MAINTAINER:=Tianling Shen <cnsztl@immortalwrt.org>
PKG_BUILD_PARALLEL:=1
include $(INCLUDE_DIR)/package.mk
define Package/3proxy/Default
SECTION:=net
CATEGORY:=Network
SUBMENU:=Web Servers/Proxies
TITLE:=tiny free proxy server
URL:=https://3proxy.ru/
endef
define Package/3proxy
$(call Package/3proxy/Default)
endef
define Package/3proxy/description
3Proxy tiny free proxy server is really tiny cross-platform (Win32/Win64&Unix)
freeware proxy servers set. It includes HTTP proxy with HTTPS and FTP support,
SOCKSv4/SOCKSv4.5/SOCKSv5 proxy (socks/socks.exe), POP3 proxy, SMTP proxy,
AIM/ICQ proxy (icqpr/icqpr.exe), MSN messenger / Live messenger proxy
(msnpr/msnpr.exe), FTP proxy, caching DNS proxy, TCP and UDP portmappers.
You can use every proxy as a standalone program (socks, proxy, tcppm, udppm,
pop3p) or use combined program (3proxy). Combined proxy additionally supports
features like access control, bandwidth limiting, limiting daily/weekly/monthly
traffic amount, proxy chaining, log rotation, syslog and ODBC logging, etc.
It's created to be small, simple and yet very functional.
endef
define Package/3proxy/conffiles
/etc/3proxy/
/etc/config/3proxy
endef
define Package/3proxy/install
$(INSTALL_DIR) $(1)/usr/bin
$(INSTALL_BIN) $(PKG_BUILD_DIR)/bin/3proxy $(1)/usr/bin/3proxy
$(INSTALL_DIR) $(1)/etc/config
$(INSTALL_CONF) $(CURDIR)/files/3proxy.config $(1)/etc/config/3proxy
$(INSTALL_DIR) $(1)/etc/init.d
$(INSTALL_BIN) $(CURDIR)/files/3proxy.init $(1)/etc/init.d/3proxy
endef
# 1: library name
# 2: library path
# 3: library dependencies
# 4: library description
define 3proxyLibrary
3proxyLibs+= $(1)
PKG_CONFIG_DEPENDS+= CONFIG_PACKAGE_3proxy-lib-$(1)
define Package/3proxy-lib-$(1)
$(call Package/3proxy/Default)
TITLE+= - $(1) library
DEPENDS+= 3proxy $(3)
endef
define Package/3proxy-lib-$(1)/description
3Proxy shared library - $(1).
$(4)
endef
define Package/3proxy-lib-$(1)/install
$(INSTALL_DIR) $$(1)/usr/libexec/3proxy
$(CP) $(PKG_BUILD_DIR)/bin/$(2).ld.so $$(1)/usr/libexec/3proxy/
endef
endef
$(eval $(call 3proxyLibrary,pam,pamauth,+libpam,))
$(eval $(call 3proxyLibrary,pcre,PCREPlugin,,This filtering plugin can be used to create matching and replace rules with regular expressions for client's request, client and servers header and client and server data.))
$(eval $(call 3proxyLibrary,ssl,SSLPlugin,+libopenssl,This plugin can be used to decrypt and manupulate SSL/TLS traffic.))
$(eval $(call 3proxyLibrary,strings,StringsPlugin,,Allows to change replies of HTTP proxy server.))
$(eval $(call 3proxyLibrary,traffic,TrafficPlugin,,This plugin attempts to correct 3proxy computations to approximate network or link level traffic by using either fixed coefficients by port number or attempting to predict number and sizes of network packets.))
$(eval $(call 3proxyLibrary,transparent,TransparentPlugin,,This plugin can be used to implement 3proxy transparently for client for any TCP-based protocols.))
# 1: module name
# 2: module dependencies
define 3proxyModule
3proxyMods+= $(1)
PKG_CONFIG_DEPENDS+= CONFIG_PACKAGE_3proxy-mod-$(1)
define Package/3proxy-mod-$(1)
$(call Package/3proxy/Default)
TITLE+= - $(1) standalone module
DEPENDS+= $(2)
endef
define Package/3proxy-mod-$(1)/description
3Proxy standalone module - $(1).
This module can be used as a standalone program.
endef
define Package/3proxy-mod-$(1)/install
$(INSTALL_DIR) $$(1)/usr/libexec/3proxy
$(INSTALL_BIN) $(PKG_BUILD_DIR)/bin/$(1) $$(1)/usr/libexec/3proxy/
endef
endef
$(eval $(call 3proxyModule,ftppr,))
$(eval $(call 3proxyModule,mycrypt,))
$(eval $(call 3proxyModule,pop3p,))
$(eval $(call 3proxyModule,proxy,))
$(eval $(call 3proxyModule,smtpp,))
$(eval $(call 3proxyModule,socks,))
$(eval $(call 3proxyModule,tcppm,))
$(eval $(call 3proxyModule,tlspr,))
$(eval $(call 3proxyModule,udppm,))
MAKE_FLAGS += \
PLUGINS="$(strip \
$(if $(CONFIG_PACKAGE_3proxy-lib-pam),PamAuth) \
$(if $(CONFIG_PACKAGE_3proxy-lib-pcre),PCREPlugin) \
$(if $(CONFIG_PACKAGE_3proxy-lib-ssl),SSLPlugin) \
$(if $(CONFIG_PACKAGE_3proxy-lib-strings),StringsPlugin) \
$(if $(CONFIG_PACKAGE_3proxy-lib-traffic),TrafficPlugin) \
$(if $(CONFIG_PACKAGE_3proxy-lib-transparent),TransparentPlugin))" \
-f Makefile.Linux
$(foreach lib,$(3proxyLibs),$(eval $(call BuildPackage,3proxy-lib-$(lib))))
$(foreach mod,$(3proxyMods),$(eval $(call BuildPackage,3proxy-mod-$(mod))))
$(eval $(call BuildPackage,3proxy))