new package: coturn

This commit is contained in:
Chongyun Lee 2023-10-18 00:20:20 +08:00
parent b2e651c616
commit b17bce79d7
6 changed files with 272 additions and 0 deletions

View File

@ -0,0 +1,11 @@
--- a/src/apps/common/CMakeLists.txt
+++ b/src/apps/common/CMakeLists.txt
@@ -39,7 +39,7 @@
find_package(Libevent CONFIG)
if(Libevent_FOUND)
- list(APPEND COMMON_LIBS libevent::core libevent::extra libevent::openssl)
+ list(APPEND COMMON_LIBS libevent::core libevent::extra libevent::openssl libevent::pthreads)
else()
find_package(Libevent MODULE)
if(Libevent_FOUND)

View File

@ -0,0 +1,29 @@
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -113,7 +113,7 @@
DESTINATION "${CMAKE_INSTALL_LIBDIR}/cmake/coturn"
COMPONENT Development)
-install(DIRECTORY man DESTINATION .
+install(DIRECTORY man DESTINATION ./share
COMPONENT Runtime)
install(DIRECTORY turndb/
DESTINATION share/turnserver
@@ -119,7 +119,7 @@
DESTINATION share/turnserver
COMPONENT Runtime)
install(DIRECTORY turndb/
- DESTINATION doc/turnserver
+ DESTINATION share/doc/turnserver
COMPONENT Runtime)
install(FILES
LICENSE
@@ -128,7 +128,7 @@
README.turnutils
INSTALL
postinstall.txt
- DESTINATION doc/turnserver
+ DESTINATION share/doc/turnserver
COMPONENT Runtime)
install(FILES examples/etc/turnserver.conf
DESTINATION ${CMAKE_INSTALL_SYSCONFDIR}

View File

@ -0,0 +1,112 @@
diff -uNr a/src/apps/natdiscovery/CMakeLists.txt b/src/apps/natdiscovery/CMakeLists.txt
--- a/src/apps/natdiscovery/CMakeLists.txt
+++ b/src/apps/natdiscovery/CMakeLists.txt
@@ -15,8 +15,10 @@
RUNTIME DESTINATION "${CMAKE_INSTALL_BINDIR}"
COMPONENT Runtime
)
+if(WIN32)
install(DIRECTORY
$<TARGET_FILE_DIR:${PROJECT_NAME}>/
DESTINATION DESTINATION "${CMAKE_INSTALL_BINDIR}"
COMPONENT Runtime
)
+endif()
diff -uNr a/src/apps/oauth/CMakeLists.txt b/src/apps/oauth/CMakeLists.txt
--- a/src/apps/oauth/CMakeLists.txt
+++ b/src/apps/oauth/CMakeLists.txt
@@ -15,8 +15,10 @@
RUNTIME DESTINATION "${CMAKE_INSTALL_BINDIR}"
COMPONENT Runtime
)
+if(WIN32)
install(DIRECTORY
$<TARGET_FILE_DIR:${PROJECT_NAME}>/
DESTINATION DESTINATION "${CMAKE_INSTALL_BINDIR}"
COMPONENT Runtime
)
+endif()
diff -uNr a/src/apps/peer/CMakeLists.txt b/src/apps/peer/CMakeLists.txt
--- a/src/apps/peer/CMakeLists.txt
+++ b/src/apps/peer/CMakeLists.txt
@@ -15,8 +15,10 @@
RUNTIME DESTINATION "${CMAKE_INSTALL_BINDIR}"
COMPONENT Runtime
)
+if(WIN32)
install(DIRECTORY
$<TARGET_FILE_DIR:${PROJECT_NAME}>/
DESTINATION DESTINATION "${CMAKE_INSTALL_BINDIR}"
COMPONENT Runtime
)
+endif()
diff -uNr a/src/apps/relay/CMakeLists.txt b/src/apps/relay/CMakeLists.txt
--- a/src/apps/relay/CMakeLists.txt
+++ b/src/apps/relay/CMakeLists.txt
@@ -138,11 +138,13 @@
COMPONENT Runtime
)
+if(WIN32)
install(DIRECTORY
$<TARGET_FILE_DIR:${PROJECT_NAME}>/
DESTINATION DESTINATION "${CMAKE_INSTALL_BINDIR}"
COMPONENT Runtime
)
+endif()
if(WIN32)
add_custom_target(turnadmin ALL
@@ -155,7 +157,7 @@
else()
add_custom_target(turnadmin ALL
COMMAND
- ${CMAKE_COMMAND} -E create_symlink $<TARGET_FILE:${PROJECT_NAME}> $<TARGET_FILE_DIR:${PROJECT_NAME}>/turnadmin
+ ${CMAKE_COMMAND} -E create_symlink ${PROJECT_NAME} $<TARGET_FILE_DIR:${PROJECT_NAME}>/turnadmin
DEPENDS ${PROJECT_NAME})
INSTALL(FILES $<TARGET_FILE_DIR:${PROJECT_NAME}>/turnadmin
DESTINATION "${CMAKE_INSTALL_BINDIR}"
diff -uNr a/src/apps/rfc5769/CMakeLists.txt b/src/apps/rfc5769/CMakeLists.txt
--- a/src/apps/rfc5769/CMakeLists.txt
+++ b/src/apps/rfc5769/CMakeLists.txt
@@ -15,8 +15,10 @@
RUNTIME DESTINATION "${CMAKE_INSTALL_BINDIR}"
COMPONENT Runtime
)
+if(WIN32)
install(DIRECTORY
$<TARGET_FILE_DIR:${PROJECT_NAME}>/
DESTINATION DESTINATION "${CMAKE_INSTALL_BINDIR}"
COMPONENT Runtime
)
+endif()
diff -uNr a/src/apps/stunclient/CMakeLists.txt b/src/apps/stunclient/CMakeLists.txt
--- a/src/apps/stunclient/CMakeLists.txt
+++ b/src/apps/stunclient/CMakeLists.txt
@@ -15,8 +15,10 @@
RUNTIME DESTINATION "${CMAKE_INSTALL_BINDIR}"
COMPONENT Runtime
)
+if(WIN32)
install(DIRECTORY
$<TARGET_FILE_DIR:${PROJECT_NAME}>/
DESTINATION DESTINATION "${CMAKE_INSTALL_BINDIR}"
COMPONENT Runtime
)
+endif()
diff -uNr a/src/apps/uclient/CMakeLists.txt b/src/apps/uclient/CMakeLists.txt
--- a/src/apps/uclient/CMakeLists.txt
+++ b/src/apps/uclient/CMakeLists.txt
@@ -17,8 +17,10 @@
RUNTIME DESTINATION "${CMAKE_INSTALL_BINDIR}"
COMPONENT Runtime
)
+if(WIN32)
install(DIRECTORY
$<TARGET_FILE_DIR:${PROJECT_NAME}>/
DESTINATION DESTINATION "${CMAKE_INSTALL_BINDIR}"
COMPONENT Runtime
- )
\ No newline at end of file
+ )
+endif()

View File

@ -0,0 +1,93 @@
--- a/src/apps/relay/mainrelay.c
+++ b/src/apps/relay/mainrelay.c
@@ -83,7 +83,11 @@
#define QUOTE(x) Q(x)
+#ifndef __TERMUX__
#define DEFAULT_USERDB_FILE QUOTE(TURNDB)
+#else
+#define DEFAULT_USERDB_FILE "@TERMUX_PREFIX@/var/db/turndb"
+#endif
//////TURN PARAMS STRUCTURE DEFINITION //////
@@ -131,7 +131,7 @@
0, /* do_not_use_config_file */
- "/var/run/turnserver.pid", /* pidfile */
+ "@TERMUX_PREFIX@/var/run/turnserver.pid", /* pidfile */
"", /* acme_redirect */
//////////////// Listener server /////////////////
@@ -3180,11 +3180,11 @@
TURN_LOG_FUNC(TURN_LOG_LEVEL_WARNING, "Cannot create pid file: %s\n", turn_params.pidfile);
{
- const char *pfs[] = {"/var/run/turnserver.pid",
- "/var/spool/turnserver.pid",
- "/var/turnserver.pid",
- "/var/tmp/turnserver.pid",
- "/tmp/turnserver.pid",
+ const char *pfs[] = {"@TERMUX_PREFIX@/var/run/turnserver.pid",
+ "@TERMUX_PREFIX@/var/spool/turnserver.pid",
+ "@TERMUX_PREFIX@/var/turnserver.pid",
+ "@TERMUX_PREFIX@/var/tmp/turnserver.pid",
+ "@TERMUX_PREFIX@/tmp/turnserver.pid",
"turnserver.pid",
NULL};
const char **ppfs = pfs;
--- a/src/apps/common/apputils.c
+++ b/src/apps/common/apputils.c
@@ -1022,9 +1022,9 @@
"/etc/",
"/etc/turnserver/",
"/etc/coturn/",
- "/usr/local/etc/",
- "/usr/local/etc/turnserver/",
- "/usr/local/etc/coturn/",
+ "@TERMUX_PREFIX@/etc/",
+ "@TERMUX_PREFIX@/etc/turnserver/",
+ "@TERMUX_PREFIX@/etc/coturn/",
QETCDIR,
QETCDIR1,
QETCDIR2,
--- a/src/apps/common/ns_turn_utils.c
+++ b/src/apps/common/ns_turn_utils.c
@@ -404,7 +404,7 @@
else
snprintf(logtail, FILE_STR_LEN, "turn_%d_", (int)getpid());
- if (snprintf(logbase, FILE_STR_LEN, "/var/log/turnserver/%s", logtail) < 0)
+ if (snprintf(logbase, FILE_STR_LEN, "@TERMUX_PREFIX@/var/log/turnserver/%s", logtail) < 0)
TURN_LOG_FUNC(TURN_LOG_LEVEL_INFO, "String truncation occured.\n");
set_log_file_name(logbase, logf);
@@ -413,7 +413,7 @@
if (_rtpfile)
TURN_LOG_FUNC(TURN_LOG_LEVEL_INFO, "log file opened: %s\n", logf);
else {
- if (snprintf(logbase, FILE_STR_LEN, "/var/log/%s", logtail) < 0)
+ if (snprintf(logbase, FILE_STR_LEN, "@TERMUX_PREFIX@/var/log/%s", logtail) < 0)
TURN_LOG_FUNC(TURN_LOG_LEVEL_INFO, "String truncation occured.\n");
set_log_file_name(logbase, logf);
@@ -421,7 +421,7 @@
if (_rtpfile)
TURN_LOG_FUNC(TURN_LOG_LEVEL_INFO, "log file opened: %s\n", logf);
else {
- if (snprintf(logbase, FILE_STR_LEN, "/var/tmp/%s", logtail) < 0)
+ if (snprintf(logbase, FILE_STR_LEN, "@TERMUX_PREFIX@/var/tmp/%s", logtail) < 0)
TURN_LOG_FUNC(TURN_LOG_LEVEL_INFO, "String truncation occured.\n");
set_log_file_name(logbase, logf);
@@ -429,7 +429,7 @@
if (_rtpfile)
TURN_LOG_FUNC(TURN_LOG_LEVEL_INFO, "log file opened: %s\n", logf);
else {
- if (snprintf(logbase, FILE_STR_LEN, "/tmp/%s", logtail) < 0)
+ if (snprintf(logbase, FILE_STR_LEN, "@TERMUX_PREFIX@/tmp/%s", logtail) < 0)
TURN_LOG_FUNC(TURN_LOG_LEVEL_INFO, "String truncation occured.\n");
set_log_file_name(logbase, logf);
_rtpfile = fopen(logf, "a");

View File

@ -0,0 +1,11 @@
--- a/src/apps/relay/mainrelay.c
+++ b/src/apps/relay/mainrelay.c
@@ -2813,7 +2813,7 @@
}
static void drop_privileges(void) {
-#if defined(WINDOWS)
+#if defined(WINDOWS) || defined(__ANDROID__)
// TODO: implement it!!!
#else
setgroups(0, NULL);

16
packages/coturn/build.sh Normal file
View File

@ -0,0 +1,16 @@
TERMUX_PKG_HOMEPAGE=https://github.com/coturn/coturn
TERMUX_PKG_DESCRIPTION="Open-source implementation of TURN and STUN server"
TERMUX_PKG_LICENSE="BSD 3-Clause"
TERMUX_PKG_MAINTAINER="@termux"
TERMUX_PKG_VERSION=4.6.2
TERMUX_PKG_SRCURL=https://github.com/coturn/coturn/archive/refs/tags/${TERMUX_PKG_VERSION}.tar.gz
TERMUX_PKG_SHA256=13f2a38b66cffb73d86b5ed24acba4e1371d738d758a6039e3a18f0c84c176ad
TERMUX_PKG_DEPENDS="libc++, libevent, libsqlite, openssl"
TERMUX_PKG_FORCE_CMAKE=true
TERMUX_PKG_AUTO_UPDATE=true
TERMUX_PKG_UPDATE_VERSION_REGEXP="\d+\.\d+\.\d+"
termux_step_pre_configure() {
# getdomainname is not available on Android 7.0
CPPFLAGS+=" -DTURN_NO_GETDOMAINNAME=1"
}