git: 7c4988e24b65 - main - net/pichi: update to 1.5.0

From: Robert Clausecker <fuz_at_FreeBSD.org>
Date: Thu, 20 Apr 2023 13:35:53 UTC
The branch main has been updated by fuz:

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

commit 7c4988e24b6538ed5dfadc9afb17608cd9689a24
Author:     Pichi <pichi@elude.in>
AuthorDate: 2023-04-20 09:50:20 +0000
Commit:     Robert Clausecker <fuz@FreeBSD.org>
CommitDate: 2023-04-20 11:49:24 +0000

    net/pichi: update to 1.5.0
    
    Changelog: https://github.com/pichi-router/pichi/releases/tag/1.5.0
    
    PR:             270934
---
 net/pichi/Makefile                                 | 29 ++++++--
 net/pichi/distinfo                                 |  4 +-
 .../files/patch-include_pichi_common_config.hpp.in | 79 ----------------------
 net/pichi/files/patch-src_net_adapter.cpp          | 67 ------------------
 net/pichi/files/patch-src_net_http.cpp             | 11 +++
 net/pichi/pkg-plist                                |  5 +-
 6 files changed, 40 insertions(+), 155 deletions(-)

diff --git a/net/pichi/Makefile b/net/pichi/Makefile
index 87c3db07330f..1082644264d7 100644
--- a/net/pichi/Makefile
+++ b/net/pichi/Makefile
@@ -1,6 +1,5 @@
 PORTNAME=	pichi
-DISTVERSION=	1.4.0
-PORTREVISION=	3
+DISTVERSION=	1.5.0
 CATEGORIES=	net
 
 MAINTAINER=	pichi@elude.in
@@ -10,8 +9,6 @@ WWW=		https://github.com/pichi-router/pichi
 LICENSE=	BSD3CLAUSE
 LICENSE_FILE=	${WRKSRC}/LICENSE
 
-BROKEN=		fails to build
-
 BUILD_DEPENDS=	rapidjson>=1.1.0:devel/rapidjson
 
 USES=		cmake compiler:c++17-lang cpe
@@ -26,14 +23,15 @@ PLIST_SUB=	DISTVERSION=${DISTVERSION}
 CMAKE_BUILD_TYPE=	MinSizeRel
 CMAKE_ARGS=		-DVERSION=${DISTVERSION}
 CMAKE_ON=		BUILD_SERVER BUILD_TEST
+CMAKE_OFF=	ENABLE_CONAN TRANSPARENT_IPTABLES
 INSTALL_TARGET=		install/strip
 TEST_TARGET=		test
 
-OPTIONS_DEFINE=		DEVEL STATIC
+OPTIONS_DEFINE=		DEVEL STATIC TLS_FINGERPRINT TRANSPARENT
 OPTIONS_SUB=		yes
 
 STATIC_DESC=		Static linking
-STATIC_CMAKE_BOOL=	STATIC_LINK
+STATIC_CMAKE_BOOL_OFF=	BUILD_SHARED_LIBS
 STATIC_BUILD_DEPENDS=	boost-libs>=1.67.0:devel/boost-libs \
 			libmaxminddb>=1.3.0:net/libmaxminddb \
 			libsodium>=1.0.12:security/libsodium \
@@ -52,13 +50,32 @@ STATIC_USE_OFF=		LDCONFIG=yes
 DEVEL_DESC=		Install development files
 DEVEL_CMAKE_BOOL=	INSTALL_DEVEL
 
+TLS_FINGERPRINT_DESC=		Simulate TLS fingerprint of Google Chrome
+TLS_FINGERPRINT_CMAKE_BOOL=	TLS_FINGERPRINT
+
+TRANSPARENT_DESC=		Enable transparent ingress feature
+TRANSPARENT_CMAKE_BOOL=		TRANSPARENT_PF
+
 .include <bsd.port.options.mk>
 
+.if ${PORT_OPTIONS:MTLS_FINGERPRINT}
+.if ${PORT_OPTIONS:MSTATIC}
+BUILD_DEPENDS+=	brotli>=1.0.0:archivers/brotli \
+			boringssl>=0.0.0.0.2022.12.22.01:security/boringssl
+.else
+LIB_DEPENDS+=	libbrotlicommon.so:archivers/brotli \
+			libbrotlidec.so:security/boringssl \
+			libbrotlienc.so:security/boringssl \
+			libssl.so:security/boringssl \
+			libcrypto.so:security/boringssl
+.endif
+.else
 .if ${PORT_OPTIONS:MSTATIC}
 USES+=		ssl:build
 .else
 USES+=		ssl
 .endif
+.endif
 
 post-install:
 	${MKDIR} ${STAGEDIR}${ETCDIR}
diff --git a/net/pichi/distinfo b/net/pichi/distinfo
index 7d56493b4644..aaa112e1acaa 100644
--- a/net/pichi/distinfo
+++ b/net/pichi/distinfo
@@ -1,3 +1,3 @@
 TIMESTAMP = 1627466281
-SHA256 (pichi-router-pichi-1.4.0_GH0.tar.gz) = 9b6cfadb57f80af516fb8a7d6d1199ad1c03f1c5ba0378a223c0733b12b27482
-SIZE (pichi-router-pichi-1.4.0_GH0.tar.gz) = 2081661
+SHA256 (pichi-router-pichi-1.5.0_GH0.tar.gz) = b6b69ec74572dcf31484ecad850d809b5f38e7d3978a952951344aff496d3398
+SIZE (pichi-router-pichi-1.5.0_GH0.tar.gz) = 2124092
diff --git a/net/pichi/files/patch-include_pichi_common_config.hpp.in b/net/pichi/files/patch-include_pichi_common_config.hpp.in
deleted file mode 100644
index fcc42ad57a0e..000000000000
--- a/net/pichi/files/patch-include_pichi_common_config.hpp.in
+++ /dev/null
@@ -1,79 +0,0 @@
---- include/pichi/common/config.hpp.in.orig
-+++ include/pichi/common/config.hpp.in
-@@ -15,48 +15,39 @@
- #cmakedefine HAS_SETSID
- #cmakedefine HAS_CLOSE
- 
--#cmakedefine NO_IGNORED_ATTRIBUTES_FOR_SODIUM
--#cmakedefine DEPRECATED_RFC2818_CLASS
-+#ifdef __GNUC__
- 
--#cmakedefine DISABLE_SHORTEN_64_TO_32_WARNING
--#if defined(DISABLE_SHORTEN_64_TO_32_WARNING) && defined(__clang__)
--#pragma clang diagnostic push
--#pragma clang diagnostic ignored "-Wshorten-64-to-32"
--#include <boost/asio/basic_socket.hpp>
--#include <boost/asio/ssl/impl/context.ipp>
--#include <boost/beast/zlib/detail/deflate_stream.ipp>
--#pragma clang diagnostic pop
--#endif  // DISABLE_SHORTEN_64_TO_32_WARNING && __clang__
-+#if __GNUC__ >= 8
-+#pragma GCC diagnostic ignored "-Wclass-memaccess"
-+#endif  // __GNUC__ >= 8
- 
--#ifdef _MSC_VER
--#pragma warning(push)
--#pragma warning(disable : 4702)
--#include <boost/beast/http/fields.hpp>
--#pragma warning(pop)
--#endif  // _MSC_VER
-+#cmakedefine DISABLE_GCC_IGNORED_ATTRIBUTES
-+#ifdef DISABLE_GCC_IGNORED_ATTRIBUTES
-+#pragma GCC diagnostic ignored "-Wignored-attributes"
-+#endif  // DISABLE_GCC_IGNORED_ATTRIBUTES
- 
--#cmakedefine HAS_SP_COUNTED_BASE_CLANG_HPP
--#if defined(HAS_SP_COUNTED_BASE_CLANG_HPP) && defined(__clang__)
--#if !__has_feature(c_atomic)
--#pragma clang diagnostic push
--#pragma clang diagnostic ignored "-Wc11-extensions"
--#include <boost/smart_ptr/detail/sp_counted_base_clang.hpp>
--#pragma clang diagnostic pop
--#endif  // !__has_feature(c_atomic)
--#endif  // HAS_SP_COUNTED_BASE_CLANG_HPP && __clang__
-+#endif  // __GNUC__
- 
--#cmakedefine DEPRECATED_ALLOCATOR_VOID
--#if defined(DEPRECATED_ALLOCATOR_VOID) && defined(__clang__)
--#pragma clang diagnostic push
-+#ifdef __clang__
-+
-+#if (defined(__APPLE__) && __clang_major__ >= 12) || __clang_major__ >= 11
- #pragma clang diagnostic ignored "-Wdeprecated-declarations"
--#include <boost/asio/associated_allocator.hpp>
--#include <boost/asio/impl/compose.hpp>
--#include <boost/asio/impl/executor.hpp>
--#include <boost/asio/io_context.hpp>
--#include <boost/asio/strand.hpp>
--#include <boost/beast/core/async_base.hpp>
--#pragma clang diagnostic pop
--#endif  // DEPRECATED_ALLOCATOR_VOID && __clang__
-+#endif
-+
-+#cmakedefine DISABLE_CLANG_C11_EXTENTIONS
-+#if !__has_feature(c_atomic) && defined(DISABLE_CLANG_C11_EXTENTIONS)
-+#pragma clang diagnostic ignored "-Wc11-extensions"
-+#endif  // !__has_feature(c_atomic) && defined(DISABLE_CLANG_C11_EXTENTIONS)
-+
-+#endif  // __clang__
-+
-+#ifdef _MSC_VER
-+
-+#pragma warning(disable : 4459)
-+#pragma warning(disable : 4646)
-+#pragma warning(disable : 4702)
-+
-+#endif  // _MSC_VER
- 
- #cmakedefine CMAKE_INSTALL_PREFIX "@CMAKE_INSTALL_PREFIX@"
- 
diff --git a/net/pichi/files/patch-src_net_adapter.cpp b/net/pichi/files/patch-src_net_adapter.cpp
deleted file mode 100644
index 359dc4ee1bff..000000000000
--- a/net/pichi/files/patch-src_net_adapter.cpp
+++ /dev/null
@@ -1,67 +0,0 @@
---- src/net/adapter.cpp.orig
-+++ src/net/adapter.cpp
-@@ -27,11 +27,12 @@
- #include <pichi/vo/messages.hpp>
- #include <pichi/vo/options.hpp>
- 
--#ifdef DEPRECATED_RFC2818_CLASS
-+#include <boost/version.hpp>
-+#if BOOST_VERSION >= 107300
- #include <boost/asio/ssl/host_name_verification.hpp>
--#else  // DEPRECATED_RFC2818_CLASS
-+#else  // BOOST_VERSION >= 107300
- #include <boost/asio/ssl/rfc2818_verification.hpp>
--#endif  // DEPRECATED_RFC2818_CLASS
-+#endif  // BOOST_VERSION >= 107300
- 
- using namespace std;
- namespace asio = boost::asio;
-@@ -67,11 +68,11 @@ static auto createTlsContext(vo::TlsEgressOption const
-     ctx.load_verify_file(*option.caFile_);
-   else {
-     ctx.set_default_verify_paths();
--#ifdef DEPRECATED_RFC2818_CLASS
-+#if BOOST_VERSION >= 107300
-     ctx.set_verify_callback(ssl::host_name_verification{option.serverName_.value_or(serverName)});
--#else   // DEPRECATED_RFC2818_CLASS
-+#else   // BOOST_VERSION >= 107300
-     ctx.set_verify_callback(ssl::rfc2818_verification{option.serverName_.value_or(serverName)});
--#endif  // DEPRECATED_RFC2818_CLASS
-+#endif  // BOOST_VERSION >= 107300
-   }
-   return ctx;
- }
-@@ -95,16 +96,10 @@ unique_ptr<Ingress> makeShadowsocksIngress(Socket&& s,
-   psk = {container,
-          crypto::generateKey(option.method_, ConstBuffer<uint8_t>{option.password_}, container)};
-   switch (option.method_) {
--#if MBEDTLS_VERSION_MAJOR < 3
-   case CryptoMethod::RC4_MD5:
-     return make_unique<SSStreamAdapter<CryptoMethod::RC4_MD5, Socket>>(psk, forward<Socket>(s));
-   case CryptoMethod::BF_CFB:
-     return make_unique<SSStreamAdapter<CryptoMethod::BF_CFB, Socket>>(psk, forward<Socket>(s));
--#else   // MBEDTLS_VERSION_MAJOR < 3
--  case CryptoMethod::RC4_MD5:
--  case CryptoMethod::BF_CFB:
--    fail(PichiError::SEMANTIC_ERROR, vo::msg::DEPRECATED_METHOD);
--#endif  // MBEDTLS_VERSION_MAJOR < 3
-   case CryptoMethod::AES_128_CTR:
-     return make_unique<SSStreamAdapter<CryptoMethod::AES_128_CTR, Socket>>(psk, forward<Socket>(s));
-   case CryptoMethod::AES_192_CTR:
-@@ -158,16 +153,10 @@ static unique_ptr<Egress> makeShadowsocksEgress(vo::Sh
-   auto psk = MutableBuffer<uint8_t>{container, len};
- 
-   switch (option.method_) {
--#if MBEDTLS_VERSION_MAJOR < 3
-   case CryptoMethod::RC4_MD5:
-     return make_unique<SSStreamAdapter<CryptoMethod::RC4_MD5, TCPSocket>>(psk, io);
-   case CryptoMethod::BF_CFB:
-     return make_unique<SSStreamAdapter<CryptoMethod::BF_CFB, TCPSocket>>(psk, io);
--#else   // MBEDTLS_VERSION_MAJOR < 3
--  case CryptoMethod::RC4_MD5:
--  case CryptoMethod::BF_CFB:
--    fail(PichiError::SEMANTIC_ERROR, vo::msg::DEPRECATED_METHOD);
--#endif  // MBEDTLS_VERSION_MAJOR < 3
-   case CryptoMethod::AES_128_CTR:
-     return make_unique<SSStreamAdapter<CryptoMethod::AES_128_CTR, TCPSocket>>(psk, io);
-   case CryptoMethod::AES_192_CTR:
diff --git a/net/pichi/files/patch-src_net_http.cpp b/net/pichi/files/patch-src_net_http.cpp
new file mode 100644
index 000000000000..eccacb97c8ca
--- /dev/null
+++ b/net/pichi/files/patch-src_net_http.cpp
@@ -0,0 +1,11 @@
+--- src/net/http.cpp.orig	2022-12-12 17:06:47 UTC
++++ src/net/http.cpp
+@@ -365,7 +365,7 @@ template <typename Stream> Endpoint HttpIngress<Stream
+      * relative_path specified;
+      *     - relative_path will be forwarded without any change.
+      */
+-    auto target = req.target().to_string();
++    auto target = string{cbegin(req.target()), cend(req.target())};
+     assertFalse(target.empty(), PichiError::BAD_PROTO, "Empty path");
+     if (target[0] != '/') {
+       // absolute_path specified, so convert it to relative one.
diff --git a/net/pichi/pkg-plist b/net/pichi/pkg-plist
index a534d9e883fb..cb403c53ba8f 100644
--- a/net/pichi/pkg-plist
+++ b/net/pichi/pkg-plist
@@ -20,11 +20,13 @@ bin/pichi
 %%DEVEL%%include/pichi/common/constants.hpp
 %%DEVEL%%include/pichi/common/endpoint.hpp
 %%DEVEL%%include/pichi/common/enumerations.hpp
-%%DEVEL%%include/pichi/common/exception.hpp
+%%DEVEL%%include/pichi/common/error.hpp
 %%DEVEL%%include/pichi/common/literals.hpp
 %%DEVEL%%include/pichi/common/uri.hpp
 %%DEVEL%%include/pichi/crypto/aead.hpp
 %%DEVEL%%include/pichi/crypto/base64.hpp
+%%DEVEL%%include/pichi/crypto/brotli.hpp
+%%DEVEL%%include/pichi/crypto/fingerprint.hpp
 %%DEVEL%%include/pichi/crypto/hash.hpp
 %%DEVEL%%include/pichi/crypto/key.hpp
 %%DEVEL%%include/pichi/crypto/method.hpp
@@ -38,6 +40,7 @@ bin/pichi
 %%DEVEL%%include/pichi/net/spawn.hpp
 %%DEVEL%%include/pichi/net/ssaead.hpp
 %%DEVEL%%include/pichi/net/ssstream.hpp
+%%DEVEL%%include/pichi/net/transparent.hpp
 %%DEVEL%%include/pichi/net/trojan.hpp
 %%DEVEL%%include/pichi/net/tunnel.hpp
 %%DEVEL%%include/pichi/stream/test.hpp