svn commit: r517183 - in head/net: . pichi pichi/files
Rodrigo Osorio
rodrigo at FreeBSD.org
Sun Nov 10 06:16:27 UTC 2019
Author: rodrigo
Date: Sun Nov 10 06:16:24 2019
New Revision: 517183
URL: https://svnweb.freebsd.org/changeset/ports/517183
Log:
New port: net/pichi An Application Layer Proxy controlled via RESTful APIs
PR: 237315
Submitted by: Pichi <pichi at elude.in>
Added:
head/net/pichi/
head/net/pichi/Makefile (contents, props changed)
head/net/pichi/distinfo (contents, props changed)
head/net/pichi/files/
head/net/pichi/files/patch-CMakeLists.txt (contents, props changed)
head/net/pichi/files/patch-cmake_ProcessOptions.cmake (contents, props changed)
head/net/pichi/files/patch-include_config.h.in (contents, props changed)
head/net/pichi/files/patch-src_net_asio.cpp (contents, props changed)
head/net/pichi/files/pichi.in (contents, props changed)
head/net/pichi/pkg-descr (contents, props changed)
head/net/pichi/pkg-plist (contents, props changed)
Modified:
head/net/Makefile
Modified: head/net/Makefile
==============================================================================
--- head/net/Makefile Sun Nov 10 06:15:47 2019 (r517182)
+++ head/net/Makefile Sun Nov 10 06:16:24 2019 (r517183)
@@ -974,6 +974,7 @@
SUBDIR += php74-sockets
SUBDIR += php74-xmlrpc
SUBDIR += phpldapadmin
+ SUBDIR += pichi
SUBDIR += pim6-tools
SUBDIR += pim6dd
SUBDIR += pim6sd
Added: head/net/pichi/Makefile
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ head/net/pichi/Makefile Sun Nov 10 06:16:24 2019 (r517183)
@@ -0,0 +1,74 @@
+# $FreeBSD$
+
+PORTNAME= pichi
+DISTVERSION= 1.2.0
+CATEGORIES= net
+
+MAINTAINER= pichi at elude.in
+COMMENT= Application Layer Proxy controlled via RESTful APIs
+
+LICENSE= BSD3CLAUSE
+LICENSE_FILE= ${WRKSRC}/LICENSE
+
+BUILD_DEPENDS= rapidjson>=1.1.0:devel/rapidjson
+
+USES= cmake
+
+USE_GITHUB= yes
+GH_ACCOUNT= pichi-router
+
+USE_RC_SUBR= pichi
+PLIST_SUB= DISTVERSION=${DISTVERSION}
+
+CMAKE_BUILD_TYPE= MinSizeRel
+CMAKE_ARGS= -DVERSION=${DISTVERSION}
+CMAKE_ON= BUILD_SERVER BUILD_TEST
+CMAKE_OFF= INSTALL_HEADERS
+INSTALL_TARGET= install/strip
+TEST_TARGET= test
+
+OPTIONS_DEFINE= STATIC TLS
+OPTIONS_DEFAULT= TLS
+OPTIONS_SUB= yes
+
+TLS_DESC= Enable TLS support ( requiring OpenSSL )
+TLS_CMAKE_BOOL= ENABLE_TLS
+
+STATIC_DESC= Build/Install static library
+STATIC_CMAKE_BOOL= STATIC_LINK
+STATIC_BUILD_DEPENDS= boost-libs>=1.67.0:devel/boost-libs \
+ libmaxminddb>=1.3.0:net/libmaxminddb \
+ libsodium>=1.0.12:security/libsodium \
+ mbedtls>=2.7.0:security/mbedtls
+STATIC_LIB_DEPENDS_OFF= libboost_context.so:devel/boost-libs \
+ libboost_filesystem.so:devel/boost-libs \
+ libboost_program_options.so:devel/boost-libs \
+ libboost_system.so:devel/boost-libs \
+ libmaxminddb.so:net/libmaxminddb \
+ libmbedcrypto.so:security/mbedtls \
+ libmbedtls.so:security/mbedtls \
+ libmbedx509.so:security/mbedtls \
+ libsodium.so:security/libsodium
+
+.include <bsd.port.options.mk>
+
+.if ! ${PORT_OPTIONS:MSTATIC}
+USE_LDCONFIG= yes
+.endif
+
+.if ${PORT_OPTIONS:MTLS}
+.if ${PORT_OPTIONS:MSTATIC}
+USES+= ssl:build
+.else
+USES+= ssl
+.endif
+.endif
+
+post-install:
+ ${MKDIR} ${STAGEDIR}${ETCDIR}
+ ${INSTALL_DATA} ${WRKSRC}/test/geo.mmdb ${STAGEDIR}${ETCDIR}/geo.mmdb
+ ${INSTALL_DATA} ${WRKSRC}/server/pichi.json.default ${STAGEDIR}${ETCDIR}/pichi.json.sample
+ ${MKDIR} ${STAGEDIR}${PREFIX}/include
+ ${INSTALL_DATA} ${WRKSRC}/include/pichi.h ${STAGEDIR}${PREFIX}/include/pichi.h
+
+.include <bsd.port.mk>
Added: head/net/pichi/distinfo
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ head/net/pichi/distinfo Sun Nov 10 06:16:24 2019 (r517183)
@@ -0,0 +1,3 @@
+TIMESTAMP = 1554899633
+SHA256 (pichi-router-pichi-1.2.0_GH0.tar.gz) = 8965077371f2dbf49a63659d686470c191c2c21c47a32f44b3b8bb2d72968043
+SIZE (pichi-router-pichi-1.2.0_GH0.tar.gz) = 1841049
Added: head/net/pichi/files/patch-CMakeLists.txt
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ head/net/pichi/files/patch-CMakeLists.txt Sun Nov 10 06:16:24 2019 (r517183)
@@ -0,0 +1,17 @@
+--- CMakeLists.txt.orig 2019-04-14 16:29:43 UTC
++++ CMakeLists.txt
+@@ -19,6 +19,14 @@ find_package(MaxmindDB 1.3.0 REQUIRED)
+ find_package(Rapidjson 1.1.0 REQUIRED)
+ find_package(Threads REQUIRED)
+
++if (Boost_VERSION_STRING VERSION_LESS "1.70.0")
++ set(RESOLVER_CONSTRUCTED_FROM_EXECUTOR OFF)
++else (Boost_VERSION_STRING VERSION_LESS "1.70.0")
++ set(RESOLVER_CONSTRUCTED_FROM_EXECUTOR ON)
++endif (Boost_VERSION_STRING VERSION_LESS "1.70.0")
++
++configure_file(${CMAKE_SOURCE_DIR}/include/config.h.in ${CMAKE_BINARY_DIR}/include/config.h)
++
+ include_directories(
+ ${CMAKE_SOURCE_DIR}/include
+ ${CMAKE_BINARY_DIR}/include
Added: head/net/pichi/files/patch-cmake_ProcessOptions.cmake
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ head/net/pichi/files/patch-cmake_ProcessOptions.cmake Sun Nov 10 06:16:24 2019 (r517183)
@@ -0,0 +1,8 @@
+--- cmake/ProcessOptions.cmake.orig 2019-04-14 16:29:43 UTC
++++ cmake/ProcessOptions.cmake
+@@ -83,5 +83,3 @@ if (BUILD_SERVER)
+ check_function_exists("setsid" HAS_SETSID)
+ check_function_exists("close" HAS_CLOSE)
+ endif (BUILD_SERVER)
+-
+-configure_file(${CMAKE_SOURCE_DIR}/include/config.h.in ${CMAKE_BINARY_DIR}/include/config.h)
Added: head/net/pichi/files/patch-include_config.h.in
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ head/net/pichi/files/patch-include_config.h.in Sun Nov 10 06:16:24 2019 (r517183)
@@ -0,0 +1,11 @@
+--- include/config.h.in.orig 2019-04-14 16:29:43 UTC
++++ include/config.h.in
+@@ -13,6 +13,8 @@
+ #cmakedefine HAS_SETSID
+ #cmakedefine HAS_CLOSE
+
++#cmakedefine RESOLVER_CONSTRUCTED_FROM_EXECUTOR
++
+ #cmakedefine CMAKE_INSTALL_PREFIX "@CMAKE_INSTALL_PREFIX@"
+
+ #ifdef CMAKE_INSTALL_PREFIX
Added: head/net/pichi/files/patch-src_net_asio.cpp
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ head/net/pichi/files/patch-src_net_asio.cpp Sun Nov 10 06:16:24 2019 (r517183)
@@ -0,0 +1,17 @@
+--- src/net/asio.cpp.orig 2019-04-14 16:29:43 UTC
++++ src/net/asio.cpp
+@@ -79,8 +79,12 @@ void connect(Endpoint const& endpoint, Socket& s, Yiel
+ else
+ #endif // BUILD_TEST
+ asio::async_connect(s,
+- tcp::resolver{s.get_executor().context()}.async_resolve(
+- endpoint.host_, endpoint.port_, yield),
++ tcp::resolver{s.get_executor()
++#ifndef RESOLVER_CONSTRUCTED_FROM_EXECUTOR
++ .context()
++#endif // RESOLVER_CONSTRUCTED_FROM_EXECUTOR
++ }
++ .async_resolve(endpoint.host_, endpoint.port_, yield),
+ yield);
+ }
+
Added: head/net/pichi/files/pichi.in
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ head/net/pichi/files/pichi.in Sun Nov 10 06:16:24 2019 (r517183)
@@ -0,0 +1,88 @@
+#!/bin/sh
+#
+# $FreeBSD$
+#
+
+# PROVIDE: pichi
+# REQUIRE: DAEMON
+# KEYWORD: shutdown
+
+get_pid()
+{
+ ps -o "pid=" -p "$(cat ${pid_file} 2>/dev/null)" 2>/dev/null
+}
+
+pichi_start()
+{
+ pid="$(get_pid)"
+ if [ -n "${pid}" ]; then
+ echo "${name} is running with pid ${pid}"
+ exit 1
+ fi
+ if [ -z "${pichi_port}" ]; then
+ echo "pichi_port is not set"
+ exit 1
+ fi
+ "${command}" -u nobody --group daemon -d -g "${pichi_mmdb}" -p "${pichi_port}" -l "${pichi_bind}" --json "${pichi_conf}"
+ if ! get_pid >/dev/null 2>&1; then
+ echo "Failed to start ${name}"
+ exit 1
+ fi
+}
+
+# Main
+. /etc/rc.subr
+
+load_rc_config "${name}"
+
+name="pichi"
+rcvar="${name}_enable"
+prefix="%%PREFIX%%"
+command="${prefix}/bin/${name}"
+start_cmd="${name}_start"
+stop_cmd="${name}_stop"
+restart_cmd="${name}_restart"
+status_cmd="${name}_status"
+extra_commands="reload"
+reload_cmd="${name}_reload"
+pid_file="${prefix}/var/run/${name}.pid"
+
+: ${pichi_enable:="NO"}
+: ${pichi_bind:="::1"}
+: ${pichi_port:="21127"}
+: ${pichi_conf:="${prefix}/etc/${name}/pichi.json"}
+: ${pichi_mmdb:="${prefix}/etc/${name}/geo.mmdb"}
+
+pichi_stop()
+{
+ pid=$(get_pid)
+ if [ -n "${pid}" ]; then
+ kill ${pid}
+ fi
+}
+
+pichi_restart()
+{
+ pichi_stop
+ pichi_start
+}
+
+pichi_reload()
+{
+ pid=$(get_pid)
+ if [ -n "${pid}" ]; then
+ kill -HUP ${pid}
+ fi
+}
+
+pichi_status()
+{
+ pid=$(get_pid)
+ if [ -n "${pid}" ]; then
+ echo "${name} is running with PID ${pid}"
+ else
+ echo "${name} is not running"
+ fi
+}
+
+run_rc_command "$1"
Added: head/net/pichi/pkg-descr
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ head/net/pichi/pkg-descr Sun Nov 10 06:16:24 2019 (r517183)
@@ -0,0 +1,6 @@
+Pichi is an application layer proxy, which can be fully controlled via
+RESTful APIs. It supports HTTP/SOCKS5/Shadowsocks.
+
+The core feature of pichi is the dynamic, flexible route controlling.
+
+WWW: https://github.com/pichi-router/pichi
Added: head/net/pichi/pkg-plist
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ head/net/pichi/pkg-plist Sun Nov 10 06:16:24 2019 (r517183)
@@ -0,0 +1,7 @@
+bin/pichi
+include/pichi.h
+ at sample etc/pichi/pichi.json.sample
+etc/pichi/geo.mmdb
+%%NO_STATIC%%lib/libpichi.so.%%DISTVERSION%%
+%%NO_STATIC%%lib/libpichi.so
+%%STATIC%%lib/libpichi.a
More information about the svn-ports-all
mailing list