diff --git a/coturn/coturn.patch b/coturn/coturn.patch new file mode 100644 index 0000000000..3f290374b5 --- /dev/null +++ b/coturn/coturn.patch @@ -0,0 +1,78 @@ +Index: configure +--- configure.orig 2019-03-02 22:06:19.000000000 +0100 ++++ configure 2020-01-06 10:31:05.733453000 +0100 +@@ -817,7 +817,7 @@ + ########################### + + GNUOSCFLAGS="-g ${GNUOSCFLAGS}" +-GNUOSCFLAGS="${GNUOSCFLAGS} -Wall -Wno-deprecated-declarations -Wextra -Wformat-security -Wnested-externs -Wstrict-prototypes -Wmissing-prototypes -Wpointer-arith -Wcast-qual" ++GNUOSCFLAGS="${GNUOSCFLAGS} -Wno-deprecated-declarations" + GNUOSCFLAGS="${GNUOSCFLAGS}" + + ${CC} -Werror ${GNUOSCFLAGS} ${TMPCPROGC} ${OSCFLAGS} -o ${TMPCPROGB} 2>>/dev/null +@@ -966,6 +966,31 @@ + exit + fi + ++if [ -z "${TURN_NO_TLS}" ] ; then ++ ++ testlib event_openssl ++ ER=$? ++ if ! [ ${ER} -eq 0 ] ; then ++ ${ECHO_CMD} "Libevent2 openssl found." ++ else ++ ${ECHO_CMD} "ERROR: Libevent2 development libraries are not compiled with OpenSSL support." ++ ${ECHO_CMD} "TLS will be disabled." ++ TURN_NO_TLS="-DTURN_NO_TLS" ++ fi ++ ++else ++ TURN_NO_TLS="-DTURN_NO_TLS" ++fi ++ ++testlib event_pthreads ++ER=$? ++if ! [ ${ER} -eq 0 ] ; then ++ ${ECHO_CMD} "Libevent2 pthreads found." ++else ++ ${ECHO_CMD} "ERROR: Libevent2 development libraries are not compiled with threads support." ++ exit ++fi ++ + testlib event_core + ER=$? + if ! [ ${ER} -eq 0 ] ; then +@@ -994,31 +1019,8 @@ + exit + fi + fi +- +-if [ -z "${TURN_NO_TLS}" ] ; then +- +- testlib event_openssl +- ER=$? +- if ! [ ${ER} -eq 0 ] ; then +- ${ECHO_CMD} "Libevent2 openssl found." +- else +- ${ECHO_CMD} "ERROR: Libevent2 development libraries are not compiled with OpenSSL support." +- ${ECHO_CMD} "TLS will be disabled." +- TURN_NO_TLS="-DTURN_NO_TLS" +- fi +- +-else +- TURN_NO_TLS="-DTURN_NO_TLS" +-fi +- +-testlib event_pthreads +-ER=$? +-if ! [ ${ER} -eq 0 ] ; then +- ${ECHO_CMD} "Libevent2 pthreads found." +-else +- ${ECHO_CMD} "ERROR: Libevent2 development libraries are not compiled with threads support." +- exit +-fi ++testlib event_core ++testlib event + + ########################### + # Test SQLite setup diff --git a/coturn/coturn.spec b/coturn/coturn.spec new file mode 100644 index 0000000000..8bc6187ee8 --- /dev/null +++ b/coturn/coturn.spec @@ -0,0 +1,141 @@ +## +## coturn.spec -- OpenPKG RPM Package Specification +## Copyright (c) 2000-2020 OpenPKG Project +## +## Permission to use, copy, modify, and distribute this software for +## any purpose with or without fee is hereby granted, provided that +## the above copyright notice and this permission notice appear in all +## copies. +## +## THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED +## WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +## MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. +## IN NO EVENT SHALL THE AUTHORS AND COPYRIGHT HOLDERS AND THEIR +## CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF +## USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND +## ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, +## OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT +## OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +## SUCH DAMAGE. +## + +# package information +Name: coturn +Summary: TURN/STUN Server +URL: https://github.com/coturn/coturn/ +Vendor: Oleg Moskalenko +Packager: OpenPKG Project +Distribution: OpenPKG Community +Class: EVAL +Group: Networking +License: BSD +Version: 4.5.1.1 +Release: 20200106 + +# list of sources +Source0: https://github.com/coturn/coturn/archive/%{version}.tar.gz +Source1: turnserver.conf +Source2: rc.coturn +Patch0: coturn.patch + +# build information +BuildPreReq: OpenPKG, openpkg >= 20140101, gcc, make +PreReq: OpenPKG, openpkg >= 20140101, x509 +BuildPreReq: openssl, sqlite, libevent +PreReq: openssl, sqlite, libevent + +%description + CoTURN is a combined TURN, STUN and ICE server providing a network + traffic NAT traversal server and gateway. + +%track + prog coturn = { + version = %{version} + url = https://github.com/coturn/coturn/releases + regex = (\d+\.\d+\.\d+\.\d+)\.tar\.gz + } + +%prep + %setup -q + %patch -p0 + +%build + # configure program + CC="%{l_cc}" \ + CFLAGS="%{l_cflags -O}" \ + CPPFLAGS="%{l_cppflags}" \ + LDFLAGS="%{l_ldflags} -lssl -lcrypto" \ + ./configure \ + --prefix=%{l_prefix} \ + --disable-shared \ + --disable-nls + + # build program + %{l_make} %{l_mflags -O} + +%install + # install program + %{l_make} %{l_mflags} install DESTDIR=$RPM_BUILD_ROOT PREFIX=%{l_prefix} + + # strip down installation + strip $RPM_BUILD_ROOT%{l_prefix}/bin/* >/dev/null 2>&1 || true + rm -f $RPM_BUILD_ROOT%{l_prefix}/etc/turnserver.conf.default + rm -f $RPM_BUILD_ROOT%{l_prefix}/info/dir + rm -rf $RPM_BUILD_ROOT%{l_prefix}/share/doc + rm -rf $RPM_BUILD_ROOT%{l_prefix}/share/examples + rm -rf $RPM_BUILD_ROOT%{l_prefix}/var/db + + # install default configuration + %{l_shtool} mkdir -f -p -m 755 \ + $RPM_BUILD_ROOT%{l_prefix}/etc/coturn + %{l_shtool} install -c -m 644 %{l_value -s -a} \ + %{SOURCE turnserver.conf} $RPM_BUILD_ROOT%{l_prefix}/etc/coturn/ + + # install run-command script + %{l_shtool} mkdir -f -p -m 755 \ + $RPM_BUILD_ROOT%{l_prefix}/etc/rc.d + %{l_shtool} install -c -m 644 %{l_value -s -a} \ + %{SOURCE rc.coturn} $RPM_BUILD_ROOT%{l_prefix}/etc/rc.d/ + + # create run-time directories + %{l_shtool} mkdir -f -p -m 755 \ + $RPM_BUILD_ROOT%{l_prefix}/var/coturn/log \ + $RPM_BUILD_ROOT%{l_prefix}/var/coturn/run \ + $RPM_BUILD_ROOT%{l_prefix}/var/coturn/db + + # determine installation files + %{l_rpmtool} files -v -ofiles -r$RPM_BUILD_ROOT \ + %{l_files_std} \ + '%config %{l_prefix}/etc/coturn/*' \ + '%attr(-,%{l_rusr},%{l_rgrp}) %{l_prefix}/var/coturn/*' + +%files -f files + +%clean + +%post + if [ $1 -eq 1 ]; then + # after initial installation, create database + $RPM_INSTALL_PREFIX/bin/sqlite $RPM_INSTALL_PREFIX/var/coturn/db/turnserver.db \ + <$RPM_INSTALL_PREFIX/share/turnserver/schema.sql + chmod 600 $RPM_INSTALL_PREFIX/var/coturn/db/turnserver.db + chown %{l_rusr}:%{l_rgrp} $RPM_INSTALL_PREFIX/var/coturn/db/turnserver.db + elif [ $1 -eq 2 ]; then + # after upgrade, restart service + eval `%{l_rc} coturn status 2>/dev/null` + [ ".$coturn_active" = .yes ] && %{l_rc} coturn restart + fi + exit 0 + +%preun + if [ $1 -eq 0 ]; then + # before erase, stop service and remove log files + %{l_rc} coturn stop 2>/dev/null + rm -rf $RPM_INSTALL_PREFIX/var/coturn/log/* >/dev/null 2>&1 || true + rm -rf $RPM_INSTALL_PREFIX/var/coturn/run/* >/dev/null 2>&1 || true + rm -rf $RPM_INSTALL_PREFIX/var/coturn/db/* >/dev/null 2>&1 || true + fi + exit 0 + diff --git a/coturn/rc.coturn b/coturn/rc.coturn new file mode 100644 index 0000000000..15b94ce77d --- /dev/null +++ b/coturn/rc.coturn @@ -0,0 +1,57 @@ +#!@l_prefix@/bin/openpkg rc +## +## rc.coturn -- Run-Commands +## + +%config + coturn_enable="$openpkg_rc_def" + coturn_flags="--prod" + coturn_log_prolog="true" + coturn_log_epilog="true" + coturn_log_numfiles="10" + coturn_log_minsize="1M" + coturn_log_complevel="9" + +%common + coturn_cfgfile="@l_prefix@/etc/coturn/turnserver.conf" + coturn_pidfile="@l_prefix@/var/coturn/run/turnserver.pid" + coturn_logfile="@l_prefix@/var/coturn/log/turnserver.log" + coturn_signal () { + [ -f $coturn_pidfile ] && kill -$1 `cat $coturn_pidfile` + } + +%status -u @l_rusr@ -o + coturn_usable="unknown" + coturn_active="no" + rcService coturn enable yes && \ + coturn_signal 0 && coturn_active="yes" + echo "coturn_enable=\"$coturn_enable\"" + echo "coturn_usable=\"$coturn_usable\"" + echo "coturn_active=\"$coturn_active\"" + +%start -u @l_rusr@ + rcService coturn enable yes || exit 0 + rcService coturn active yes && exit 0 + @l_prefix@/bin/turnserver -c $coturn_cfgfile --daemon + +%stop -u @l_rusr@ + rcService coturn enable yes || exit 0 + rcService coturn active no && exit 0 + coturn_signal TERM + sleep 2 + rm -f $coturn_pidfile >/dev/null 2>&1 || true + +%restart -u @l_rusr@ + rcService coturn enable yes || exit 0 + rcService coturn active no && exit 0 + rc coturn stop start + +%daily -u @l_susr@ + rcService coturn enable yes || exit 0 + shtool rotate -f \ + -n ${coturn_log_numfiles} -s ${coturn_log_minsize} -d \ + -z ${coturn_log_complevel} -m 664 -o @l_rusr@ -g @l_rgrp@ \ + -P "${coturn_log_prolog}" \ + -E "${coturn_log_epilog}; rc coturn restart" \ + $coturn_logfile + diff --git a/coturn/turnserver.conf b/coturn/turnserver.conf new file mode 100644 index 0000000000..04fc3be4a5 --- /dev/null +++ b/coturn/turnserver.conf @@ -0,0 +1,30 @@ +## +## turnserver.conf -- CoTURN Server Configuration +## + +proc-user=@l_rusr@ +proc-group=@l_rgrp@ + +listening-ip=127.0.0.1 +listening-port=3478 + +cli-ip=127.0.0.1 +cli-port=5766 + +no-multicast-peers + +cert=@l_prefix@/etc/x509/example-server.crt +pkey=@l_prefix@/etc/x509/example-server.key + +no-auth +userdb=@l_prefix@/var/coturn/db/turnserver.db +realm=example.com + +pidfile=@l_prefix@/var/coturn/run/turnserver.pid +log-file=@l_prefix@/var/coturn/log/turnserver.log +no-stdout-log +simple-log + +verbose +#Verbose +