net/spoofdpi: New port: Simple and fast anti-censorship tool

SpoofDPI is a simple and fast anti-censorship tool written in Go that
bypasses Deep Packet Inspection (DPI) by splitting HTTPS requests
into chunks and sending the first byte separately.

It can be run as daemon via rc.d script spoofdpi.

https://github.com/xvzc/SpoofDPI

PR:	280591
This commit is contained in:
Yusuf Yaman 2024-08-06 02:01:57 +03:00 committed by Vladimir Druzenko
parent f29d2e2be6
commit 3ad03358f6
7 changed files with 141 additions and 2 deletions

2
GIDs
View file

@ -320,7 +320,7 @@ _wsdd:*:370:
# free: 377 # free: 377
# free: 378 # free: 378
# free: 379 # free: 379
# free: 380 spoofdpi:*:380:
# free: 381 # free: 381
# free: 382 # free: 382
# free: 383 # free: 383

2
UIDs
View file

@ -325,7 +325,7 @@ _wsdd:*:370:370::0:0:Web Service Discovery Daemon:/nonexistent:/usr/sbin/nologin
# free: 377 # free: 377
# free: 378 # free: 378
# free: 379 # free: 379
# free: 380 poofdpi:*:380:380::0:0:SpoofDPI Daemon:/nonexistent:/usr/sbin/nologin
# free: 381 # free: 381
# free: 382 # free: 382
# free: 383 # free: 383

View file

@ -1501,6 +1501,7 @@
SUBDIR += speedtest SUBDIR += speedtest
SUBDIR += speedtest-go SUBDIR += speedtest-go
SUBDIR += spiritvnc SUBDIR += spiritvnc
SUBDIR += spoofdpi
SUBDIR += spoofer SUBDIR += spoofer
SUBDIR += spread SUBDIR += spread
SUBDIR += spread-j SUBDIR += spread-j

47
net/spoofdpi/Makefile Normal file
View file

@ -0,0 +1,47 @@
PORTNAME= spoofdpi
DISTVERSIONPREFIX= v
DISTVERSION= 0.10.4
CATEGORIES= net
MAINTAINER= nxjoseph@protonmail.com
COMMENT= Simple and fast anti-censorship tool
WWW= https://github.com/xvzc/SpoofDPI
LICENSE= APACHE20
USES= go:modules
USE_GITHUB= yes
GH_ACCOUNT= xvzc
GH_PROJECT= SpoofDPI
GH_TUPLE= atomicgo:cursor:v0.2.0:atomicgo_cursor/vendor/atomicgo.dev/cursor \
atomicgo:keyboard:v0.2.9:atomicgo_keyboard/vendor/atomicgo.dev/keyboard \
atomicgo:schedule:v0.1.0:atomicgo_schedule/vendor/atomicgo.dev/schedule \
containerd:console:v1.0.3:containerd_console/vendor/github.com/containerd/console \
golang:mod:v0.18.0:golang_mod/vendor/golang.org/x/mod \
golang:net:v0.27.0:golang_net/vendor/golang.org/x/net \
golang:sync:v0.7.0:golang_sync/vendor/golang.org/x/sync \
golang:sys:v0.22.0:golang_sys/vendor/golang.org/x/sys \
golang:term:v0.22.0:golang_term/vendor/golang.org/x/term \
golang:text:v0.16.0:golang_text/vendor/golang.org/x/text \
golang:tools:v0.22.0:golang_tools/vendor/golang.org/x/tools \
gookit:color:v1.5.4:gookit_color/vendor/github.com/gookit/color \
likexian:doh:v0.7.1:likexian_doh/vendor/github.com/likexian/doh \
likexian:gokit:v0.25.15:likexian_gokit/vendor/github.com/likexian/gokit \
lithammer:fuzzysearch:v1.1.8:lithammer_fuzzysearch/vendor/github.com/lithammer/fuzzysearch \
mattn:go-runewidth:v0.0.15:mattn_go_runewidth/vendor/github.com/mattn/go-runewidth \
miekg:dns:v1.1.61:miekg_dns/vendor/github.com/miekg/dns \
pterm:pterm:v0.12.79:pterm_pterm/vendor/github.com/pterm/pterm \
rivo:uniseg:v0.4.4:rivo_uniseg/vendor/github.com/rivo/uniseg \
sirupsen:logrus:v1.9.3:sirupsen_logrus/vendor/github.com/sirupsen/logrus \
xo:terminfo:abceb7e1c41e:xo_terminfo/vendor/github.com/xo/terminfo
USE_RC_SUBR= ${PORTNAME}
GO_TARGET= ./cmd/spoof-dpi:${PORTNAME}
GO_BUILDFLAGS= -ldflags="-s -w"
SUB_LIST= USER=${USERS}
USERS= ${PORTNAME}
GROUPS= ${PORTNAME}
PLIST_FILES= bin/${PORTNAME}
.include <bsd.port.mk>

45
net/spoofdpi/distinfo Normal file
View file

@ -0,0 +1,45 @@
TIMESTAMP = 1722696172
SHA256 (xvzc-SpoofDPI-v0.10.4_GH0.tar.gz) = 0f312d2ecf0761be6cd65d475a509f2ac2246a90d3dcf1668444c168be2f3ba1
SIZE (xvzc-SpoofDPI-v0.10.4_GH0.tar.gz) = 22739
SHA256 (atomicgo-cursor-v0.2.0_GH0.tar.gz) = 61760aaf6b2a0b51adcea56913104aa070b844426063a21dac60551f239e5044
SIZE (atomicgo-cursor-v0.2.0_GH0.tar.gz) = 11330
SHA256 (atomicgo-keyboard-v0.2.9_GH0.tar.gz) = 6855b6e6e6837de6e9cfb98e0f49f6224eb599c688bdd4ce3a0c96b2f409bd07
SIZE (atomicgo-keyboard-v0.2.9_GH0.tar.gz) = 13554
SHA256 (atomicgo-schedule-v0.1.0_GH0.tar.gz) = 32b125a2d10d854d96eefd47e14e55d8fca725ac002b0287b32c34cf023d4896
SIZE (atomicgo-schedule-v0.1.0_GH0.tar.gz) = 6045
SHA256 (containerd-console-v1.0.3_GH0.tar.gz) = 61bc166fd91d4639870a2395ce7a89cb4585d343c521fcd397bef66324772f91
SIZE (containerd-console-v1.0.3_GH0.tar.gz) = 13712
SHA256 (golang-mod-v0.18.0_GH0.tar.gz) = 247133e4ef1a5863af267a81c2d3f2b6e6b439f250db4e1d7e16df46d37e4d71
SIZE (golang-mod-v0.18.0_GH0.tar.gz) = 123147
SHA256 (golang-net-v0.27.0_GH0.tar.gz) = 7366b073182cd029815e724a6584cdf01864f46f108e1b1f6beb04597ebacaea
SIZE (golang-net-v0.27.0_GH0.tar.gz) = 1454586
SHA256 (golang-sync-v0.7.0_GH0.tar.gz) = 39bf56d2dc04d16baabbf5eb5d847a2ad68762b5efde7ca3a8fdb24bdcdd9461
SIZE (golang-sync-v0.7.0_GH0.tar.gz) = 18181
SHA256 (golang-sys-v0.22.0_GH0.tar.gz) = b5a84a20ff327803ed47aefd837a3264d511b3f644017cb8e050ff1f5bd22471
SIZE (golang-sys-v0.22.0_GH0.tar.gz) = 1498230
SHA256 (golang-term-v0.22.0_GH0.tar.gz) = 12263f0da55447aa51fb5d5bef6ca12e37bf2058db6c625e498d06e462fca79e
SIZE (golang-term-v0.22.0_GH0.tar.gz) = 14742
SHA256 (golang-text-v0.16.0_GH0.tar.gz) = 6df270cb3d696f882857c8ce02233e7f08d5ff900986e1ac669b47e088b18779
SIZE (golang-text-v0.16.0_GH0.tar.gz) = 8972326
SHA256 (golang-tools-v0.22.0_GH0.tar.gz) = ae80020fa6994e1e112478eb4fc3aefcf9b21500c6e2ef5c5b3bdbb3f8943f13
SIZE (golang-tools-v0.22.0_GH0.tar.gz) = 3853706
SHA256 (gookit-color-v1.5.4_GH0.tar.gz) = cf2b13be6a78bd60f89713afab4b7bfb284199603f5a2b1c39fd684a3d0be690
SIZE (gookit-color-v1.5.4_GH0.tar.gz) = 2155201
SHA256 (likexian-doh-v0.7.1_GH0.tar.gz) = 0986d356d33ecf691c380f66dd755146976856105d6fb7ba92fd180a088ff425
SIZE (likexian-doh-v0.7.1_GH0.tar.gz) = 11623
SHA256 (likexian-gokit-v0.25.15_GH0.tar.gz) = 59fd9cf285e174b51e470f8617f68fb1c53c4e0ac1a951b0568c6b5dff1c07c5
SIZE (likexian-gokit-v0.25.15_GH0.tar.gz) = 113527
SHA256 (lithammer-fuzzysearch-v1.1.8_GH0.tar.gz) = 2496ccfc16d85426eb70aaf94f773f8ca08caf96694de3ede3c29d5978e28e50
SIZE (lithammer-fuzzysearch-v1.1.8_GH0.tar.gz) = 9373
SHA256 (mattn-go-runewidth-v0.0.15_GH0.tar.gz) = 44a5d37bd7119a9d288d7ff61cf3b4d42c2902c66b0d94136d41d2eb3cf2ba85
SIZE (mattn-go-runewidth-v0.0.15_GH0.tar.gz) = 18284
SHA256 (miekg-dns-v1.1.61_GH0.tar.gz) = 90333c02da30c7ec20688e854e34f71d450831e5c4eba007d828864bb4ff4d47
SIZE (miekg-dns-v1.1.61_GH0.tar.gz) = 217914
SHA256 (pterm-pterm-v0.12.79_GH0.tar.gz) = 230bef0c6e733ae600392d8c085b51331eeb29d789517cb75a28c9ed3c8c578d
SIZE (pterm-pterm-v0.12.79_GH0.tar.gz) = 297646
SHA256 (rivo-uniseg-v0.4.4_GH0.tar.gz) = eb2837932d0a666e13ea6b4cebf698096266d4f14740faa78c63b8291cf1fb5c
SIZE (rivo-uniseg-v0.4.4_GH0.tar.gz) = 453399
SHA256 (sirupsen-logrus-v1.9.3_GH0.tar.gz) = cfa48a647a28c1f12fb6a9b672bc4d88b6407ff05aedcf23ce939d342646acce
SIZE (sirupsen-logrus-v1.9.3_GH0.tar.gz) = 50320
SHA256 (xo-terminfo-abceb7e1c41e_GH0.tar.gz) = f309fc85594b3a03d622ebe275a841b97101c4189f85fff18fc051a2e5a4878c
SIZE (xo-terminfo-abceb7e1c41e_GH0.tar.gz) = 35180

View file

@ -0,0 +1,43 @@
#!/bin/sh
# PROVIDE: spoofdpi
# REQUIRE: LOGIN
# KEYWORD: shutdown
#
# Add the following lines to /etc/rc.conf or /etc/rc.conf.local to
# enable spoofdpi:
# spoofdpi_args (str): Custom additional arguments to be passed
# spoofdpi (default empty).
# spoofdpi_user (str): User to run spoofdpi as. Default
# to "%%USER%%" created by the port.
# spoofdpi_log (path): Console log file (default /dev/null).
. /etc/rc.subr
case $0 in
/etc/rc*)
# during boot (shutdown) $0 is /etc/rc (/etc/rc.shutdown),
# so get the name of the script from $_file
name=$_file
;;
*)
name=$0
;;
esac
name=${name##*/}
rcvar="${name}_enable"
load_rc_config "${name}"
eval "${rcvar}=\${${rcvar}:-'NO'}"
eval "_args=\${${name}_args:-''}"
eval "_user=\${${name}_user:-'%%USER%%'}"
eval "_log=\${${name}_log:-/dev/null}"
pidfile="/var/run/${name}.pid"
command="/usr/sbin/daemon"
command_args="-P ${pidfile} -u ${_user} -f -H -o ${_log} -m 3 %%PREFIX%%/bin/spoofdpi -no-banner ${_args}"
run_rc_command "$1"

3
net/spoofdpi/pkg-descr Normal file
View file

@ -0,0 +1,3 @@
SpoofDPI is a simple and fast anti-censorship tool written in Go that
bypasses Deep Packet Inspection (DPI) by splitting HTTPS requests into
chunks and sending the first byte separately.