git: ab04066dd703 - main - net/ts-warp: Add new port

From: Juraj Lutter <otis_at_FreeBSD.org>
Date: Sun, 19 Nov 2023 14:22:37 UTC
The branch main has been updated by otis:

URL: https://cgit.FreeBSD.org/ports/commit/?id=ab04066dd703688b2ca580c6c20d26e14e6d3a37

commit ab04066dd703688b2ca580c6c20d26e14e6d3a37
Author:     Juraj Lutter <otis@FreeBSD.org>
AuthorDate: 2023-11-17 22:25:29 +0000
Commit:     Juraj Lutter <otis@FreeBSD.org>
CommitDate: 2023-11-19 14:22:25 +0000

    net/ts-warp: Add new port
    
    Add net/ts-warp port, Transparent proxy server and traffic wrapper.
    WWW:            https://github.com/mezantrop/ts-warp
    
    Committing slightly modified version (reworked Makefile a bit,
    corrected pkg-plist and rc.d script).
    
    Also connect to the category's Makefile.
    
    PR:             269460
    Differential Revision: https://reviews.freebsd.org/D42665
---
 net/Makefile                |  1 +
 net/ts-warp/Makefile        | 31 +++++++++++++++++++++
 net/ts-warp/distinfo        |  3 ++
 net/ts-warp/files/tswarp.in | 67 +++++++++++++++++++++++++++++++++++++++++++++
 net/ts-warp/pkg-descr       |  6 ++++
 net/ts-warp/pkg-plist       |  8 ++++++
 6 files changed, 116 insertions(+)

diff --git a/net/Makefile b/net/Makefile
index ed089872d347..0cafc8732ad4 100644
--- a/net/Makefile
+++ b/net/Makefile
@@ -1555,6 +1555,7 @@
     SUBDIR += trafshow3
     SUBDIR += trickle
     SUBDIR += trippy
+    SUBDIR += ts-warp
     SUBDIR += tsclient
     SUBDIR += tsctp
     SUBDIR += tsocks
diff --git a/net/ts-warp/Makefile b/net/ts-warp/Makefile
new file mode 100644
index 000000000000..2a8f65721853
--- /dev/null
+++ b/net/ts-warp/Makefile
@@ -0,0 +1,31 @@
+PORTNAME=	ts-warp
+DISTVERSION=	1.4.0-15
+DISTVERSIONSUFFIX=	-g4c04cb2
+CATEGORIES=	net
+
+MAINTAINER=	zmey20000@yahoo.com
+COMMENT=	Transparent proxy server and traffic wrapper
+WWW=		https://github.com/mezantrop/ts-warp
+
+LICENSE=	BSD2CLAUSE
+LICENSE_FILE=	${WRKSRC}/LICENSE
+
+USE_GITHUB=	yes
+GH_ACCOUNT=	mezantrop
+
+USE_RC_SUBR=	tswarp
+
+do-install:
+	${MKDIR} ${STAGEDIR}/var/db/ts-warp
+	${INSTALL_PROGRAM} ${WRKSRC}/ts-warp ${STAGEDIR}${PREFIX}/bin
+	${INSTALL_PROGRAM} ${WRKSRC}/ts-pass ${STAGEDIR}${PREFIX}/bin
+	${INSTALL_DATA} ${WRKSRC}/examples/ts-warp.ini \
+		${STAGEDIR}${PREFIX}/etc/ts-warp.conf.sample
+	${INSTALL_DATA} ${WRKSRC}/examples/ts-warp_pf_freebsd.conf \
+		${STAGEDIR}${PREFIX}/etc/ts-warp_pf.conf.sample
+	${INSTALL_MAN} ${WRKSRC}/man/ts-pass.1 ${STAGEDIR}${MAN1PREFIX}/man/man1
+	${INSTALL_MAN} ${WRKSRC}/man/ts-warp.sh.1 ${STAGEDIR}${MAN1PREFIX}/man/man1
+	${INSTALL_MAN} ${WRKSRC}/man/ts-warp.5 ${STAGEDIR}${MAN5PREFIX}/man/man5
+	${INSTALL_MAN} ${WRKSRC}/man/ts-warp.8 ${STAGEDIR}${MAN8PREFIX}/man/man8
+
+.include <bsd.port.mk>
diff --git a/net/ts-warp/distinfo b/net/ts-warp/distinfo
new file mode 100644
index 000000000000..4e45922db830
--- /dev/null
+++ b/net/ts-warp/distinfo
@@ -0,0 +1,3 @@
+TIMESTAMP = 1700394340
+SHA256 (mezantrop-ts-warp-1.4.0-15-g4c04cb2_GH0.tar.gz) = c886b07135a255102a4f44a00c0f192b19ced361ffd9a00a519de601489d6a42
+SIZE (mezantrop-ts-warp-1.4.0-15-g4c04cb2_GH0.tar.gz) = 22432943
diff --git a/net/ts-warp/files/tswarp.in b/net/ts-warp/files/tswarp.in
new file mode 100755
index 000000000000..8f01d8583d63
--- /dev/null
+++ b/net/ts-warp/files/tswarp.in
@@ -0,0 +1,67 @@
+#!/bin/sh
+
+# PROVIDE: tswarp
+# REQUIRE: LOGIN
+# KEYWORD: shutdown
+#
+# Add the following lines to /etc/rc.conf.local or /etc/rc.conf
+# to enable this service:
+#
+# tswarp_enable (bool):            Set to NO by default.
+#                                  Set it to YES to enable ts-warp.
+# tswarp_configfile (string):      Set to %%PREFIX%%/etc/ts-warp.conf
+#
+# tswarp_pfconf (string):          Set to %%PREFIX%%/etc/ts-warp_pf.conf
+#
+# tswarp_flags (string):           Set to "-d -v 2" by default
+
+. /etc/rc.subr
+
+name=tswarp
+desc="ts-warp serice startup script"
+rcvar=tswarp_enable
+pidfile=/var/run/ts-warp.pid
+
+load_rc_config $name
+
+: ${tswarp_enable:=NO}
+: ${tswarp_configfile:="%%PREFIX%%/etc/ts-warp.conf"}
+: ${tswarp_pfconf:="%%PREFIX%%/etc/ts-warp_pf.conf"}
+: ${tswarp_logfile:=/var/log/ts-warp.log}
+: ${tswarp_actfile:=/var/db/ts-warp/ts-warp.act}
+: ${tswarp_flags="-d -v 2"}
+
+command="%%PREFIX%%/bin/ts-warp"
+command_args="-c ${tswarp_configfile} -l ${tswarp_logfile} \
+	-p ${pidfile} -t ${tswarp_actfile} ${tswarp_flags}"
+required_files="${pf_rules} ${tswarp_configfile} ${tswarp_pfconf}"
+start_precmd=ts_warp_prestart
+stop_postcmd="[ -e ${pf_rules} ] && /sbin/pfctl -f ${pf_rules}"
+
+ts_warp_prestart()
+{
+    [ -d /var/db/ts-warp ] || /bin/mkdir -p /var/db/ts-warp
+
+    echo "Configuring PF for TS-Warp"
+
+    awk -v pf_conf=${tswarp_pfconf} '
+            /ts-warp/       {next}
+            /ns-warp/       {next}
+            /rdr-anchor/    {rdrpos = NR}
+                            {pf[NR] = $0}
+
+        END {
+            for (i = 0; i < NR; i++)
+                if (i == rdrpos + 1) {
+                    print("rdr-anchor \"ts-warp\"")
+                    print("rdr-anchor \"ns-warp\"")
+                } else
+                    print(pf[i])
+            print("anchor \"ts-warp\"")
+            print("anchor \"ns-warp\"")
+            printf("load anchor \"ts-warp\" from \"%s\"\n", pf_conf)
+        }
+    ' ${pf_rules} | /sbin/pfctl -f -
+}
+
+run_rc_command "$1"
diff --git a/net/ts-warp/pkg-descr b/net/ts-warp/pkg-descr
new file mode 100644
index 000000000000..1d38a5320afa
--- /dev/null
+++ b/net/ts-warp/pkg-descr
@@ -0,0 +1,6 @@
+ts-warp - Transparent proxy server and traffic wrapper
+
+It features a proxy services with TCP-traffic redirection to
+external Socks4/5 and HTTPS proxy servers:
+  - Transparent firewall-based traffic redirector
+  - Internal Socks and HTTPS proxy server
diff --git a/net/ts-warp/pkg-plist b/net/ts-warp/pkg-plist
new file mode 100644
index 000000000000..ba773905cd32
--- /dev/null
+++ b/net/ts-warp/pkg-plist
@@ -0,0 +1,8 @@
+bin/ts-pass
+bin/ts-warp
+@sample etc/ts-warp.conf.sample
+@sample etc/ts-warp_pf.conf.sample
+man/man1/ts-pass.1.gz
+man/man1/ts-warp.sh.1.gz
+man/man5/ts-warp.5.gz
+man/man8/ts-warp.8.gz