Accepting request 793075 from home:weberho:tools
Coturn is a STUN/TURN server which works nicely e.g. nextcloud. I'd like to offer that project in factory and Leap. Please review. If you like the package I'll request the coturn user/group for factory. OBS-URL: https://build.opensuse.org/request/show/793075 OBS-URL: https://build.opensuse.org/package/show/network:telephony/coturn?expand=0&rev=1
This commit is contained in:
commit
f0c86398b7
23
.gitattributes
vendored
Normal file
23
.gitattributes
vendored
Normal file
@ -0,0 +1,23 @@
|
|||||||
|
## Default LFS
|
||||||
|
*.7z filter=lfs diff=lfs merge=lfs -text
|
||||||
|
*.bsp filter=lfs diff=lfs merge=lfs -text
|
||||||
|
*.bz2 filter=lfs diff=lfs merge=lfs -text
|
||||||
|
*.gem filter=lfs diff=lfs merge=lfs -text
|
||||||
|
*.gz filter=lfs diff=lfs merge=lfs -text
|
||||||
|
*.jar filter=lfs diff=lfs merge=lfs -text
|
||||||
|
*.lz filter=lfs diff=lfs merge=lfs -text
|
||||||
|
*.lzma filter=lfs diff=lfs merge=lfs -text
|
||||||
|
*.obscpio filter=lfs diff=lfs merge=lfs -text
|
||||||
|
*.oxt filter=lfs diff=lfs merge=lfs -text
|
||||||
|
*.pdf filter=lfs diff=lfs merge=lfs -text
|
||||||
|
*.png filter=lfs diff=lfs merge=lfs -text
|
||||||
|
*.rpm filter=lfs diff=lfs merge=lfs -text
|
||||||
|
*.tbz filter=lfs diff=lfs merge=lfs -text
|
||||||
|
*.tbz2 filter=lfs diff=lfs merge=lfs -text
|
||||||
|
*.tgz filter=lfs diff=lfs merge=lfs -text
|
||||||
|
*.ttf filter=lfs diff=lfs merge=lfs -text
|
||||||
|
*.txz filter=lfs diff=lfs merge=lfs -text
|
||||||
|
*.whl filter=lfs diff=lfs merge=lfs -text
|
||||||
|
*.xz filter=lfs diff=lfs merge=lfs -text
|
||||||
|
*.zip filter=lfs diff=lfs merge=lfs -text
|
||||||
|
*.zst filter=lfs diff=lfs merge=lfs -text
|
1
.gitignore
vendored
Normal file
1
.gitignore
vendored
Normal file
@ -0,0 +1 @@
|
|||||||
|
.osc
|
8
README.SUSE
Normal file
8
README.SUSE
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
Configuration files:
|
||||||
|
* /etc/coturn/turnserver.conf is the mail configuration file
|
||||||
|
* /etc/sysconfig/coturn can be used to set additional command line parameters
|
||||||
|
|
||||||
|
To allow traffic going thru the firewall use
|
||||||
|
```
|
||||||
|
firewall-cmd --zone=public --add-service=coturn [--permanent]
|
||||||
|
```
|
53
coturn-4.5.1.0-append-log.patch
Normal file
53
coturn-4.5.1.0-append-log.patch
Normal file
@ -0,0 +1,53 @@
|
|||||||
|
https://github.com/coturn/coturn/issues/416 and https://github.com/coturn/coturn/pull/417
|
||||||
|
|
||||||
|
diff --git a/src/apps/common/ns_turn_utils.c b/src/apps/common/ns_turn_utils.c
|
||||||
|
index 2c656d7..0792085 100644
|
||||||
|
--- a/src/apps/common/ns_turn_utils.c
|
||||||
|
+++ b/src/apps/common/ns_turn_utils.c
|
||||||
|
@@ -370,7 +370,7 @@ static void set_rtpfile(void)
|
||||||
|
no_stdout_log = 1;
|
||||||
|
} else {
|
||||||
|
set_log_file_name(log_fn_base,log_fn);
|
||||||
|
- _rtpfile = fopen(log_fn, "w");
|
||||||
|
+ _rtpfile = fopen(log_fn, "a");
|
||||||
|
if(_rtpfile)
|
||||||
|
TURN_LOG_FUNC(TURN_LOG_LEVEL_INFO, "log file opened: %s\n", log_fn);
|
||||||
|
}
|
||||||
|
@@ -397,32 +397,32 @@ static void set_rtpfile(void)
|
||||||
|
|
||||||
|
set_log_file_name(logbase, logf);
|
||||||
|
|
||||||
|
- _rtpfile = fopen(logf, "w");
|
||||||
|
+ _rtpfile = fopen(logf, "a");
|
||||||
|
if(_rtpfile)
|
||||||
|
TURN_LOG_FUNC(TURN_LOG_LEVEL_INFO, "log file opened: %s\n", logf);
|
||||||
|
else {
|
||||||
|
snprintf(logbase, FILE_STR_LEN, "/var/log/%s", logtail);
|
||||||
|
|
||||||
|
set_log_file_name(logbase, logf);
|
||||||
|
- _rtpfile = fopen(logf, "w");
|
||||||
|
+ _rtpfile = fopen(logf, "a");
|
||||||
|
if(_rtpfile)
|
||||||
|
TURN_LOG_FUNC(TURN_LOG_LEVEL_INFO, "log file opened: %s\n", logf);
|
||||||
|
else {
|
||||||
|
snprintf(logbase, FILE_STR_LEN, "/var/tmp/%s", logtail);
|
||||||
|
set_log_file_name(logbase, logf);
|
||||||
|
- _rtpfile = fopen(logf, "w");
|
||||||
|
+ _rtpfile = fopen(logf, "a");
|
||||||
|
if(_rtpfile)
|
||||||
|
TURN_LOG_FUNC(TURN_LOG_LEVEL_INFO, "log file opened: %s\n", logf);
|
||||||
|
else {
|
||||||
|
snprintf(logbase, FILE_STR_LEN, "/tmp/%s", logtail);
|
||||||
|
set_log_file_name(logbase, logf);
|
||||||
|
- _rtpfile = fopen(logf, "w");
|
||||||
|
+ _rtpfile = fopen(logf, "a");
|
||||||
|
if(_rtpfile)
|
||||||
|
TURN_LOG_FUNC(TURN_LOG_LEVEL_INFO, "log file opened: %s\n", logf);
|
||||||
|
else {
|
||||||
|
snprintf(logbase, FILE_STR_LEN, "%s", logtail);
|
||||||
|
set_log_file_name(logbase, logf);
|
||||||
|
- _rtpfile = fopen(logf, "w");
|
||||||
|
+ _rtpfile = fopen(logf, "a");
|
||||||
|
if(_rtpfile)
|
||||||
|
TURN_LOG_FUNC(TURN_LOG_LEVEL_INFO, "log file opened: %s\n", logf);
|
||||||
|
else {
|
22
coturn-4.5.1.1-cve-2020-6061.patch
Normal file
22
coturn-4.5.1.1-cve-2020-6061.patch
Normal file
@ -0,0 +1,22 @@
|
|||||||
|
From 51a7c2b9bf924890c7a3ff4db9c4976c5a93340a Mon Sep 17 00:00:00 2001
|
||||||
|
From: =?UTF-8?q?M=C3=A9sz=C3=A1ros=20Mih=C3=A1ly?= <misi@majd.eu>
|
||||||
|
Date: Mon, 17 Feb 2020 10:34:56 +0100
|
||||||
|
Subject: [PATCH] Fix: CVE-2020-6061/TALOS-2020-0984
|
||||||
|
|
||||||
|
---
|
||||||
|
src/apps/relay/http_server.c | 2 +-
|
||||||
|
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||||
|
|
||||||
|
diff --git a/src/apps/relay/http_server.c b/src/apps/relay/http_server.c
|
||||||
|
index 573af49b..1126b49c 100644
|
||||||
|
--- a/src/apps/relay/http_server.c
|
||||||
|
+++ b/src/apps/relay/http_server.c
|
||||||
|
@@ -103,7 +103,7 @@ const char* get_http_date_header()
|
||||||
|
|
||||||
|
static struct headers_list * post_parse(char *data, size_t data_len)
|
||||||
|
{
|
||||||
|
- while((*data=='\r')||(*data=='\n')) ++data;
|
||||||
|
+ while((*data=='\r')||(*data=='\n')) { ++data; --data_len; }
|
||||||
|
char *post_data = (char*)calloc(data_len + 1, sizeof(char));
|
||||||
|
memcpy(post_data, data, data_len);
|
||||||
|
char *fmarker = NULL;
|
85
coturn-4.5.1.1-cve-2020-6062.patch
Normal file
85
coturn-4.5.1.1-cve-2020-6062.patch
Normal file
@ -0,0 +1,85 @@
|
|||||||
|
From e09bcd9f7af5b32c81b37f51835b384b5a7d03a8 Mon Sep 17 00:00:00 2001
|
||||||
|
From: =?UTF-8?q?M=C3=A9sz=C3=A1ros=20Mih=C3=A1ly?= <misi@majd.eu>
|
||||||
|
Date: Tue, 18 Feb 2020 12:31:38 +0100
|
||||||
|
Subject: [PATCH] Fix: CVE-2020-6062 / TALOS-2020-0985
|
||||||
|
|
||||||
|
---
|
||||||
|
src/apps/relay/http_server.c | 63 ++++++++++++++++++++----------------
|
||||||
|
1 file changed, 36 insertions(+), 27 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/src/apps/relay/http_server.c b/src/apps/relay/http_server.c
|
||||||
|
index 1126b49c..ff8e3992 100644
|
||||||
|
--- a/src/apps/relay/http_server.c
|
||||||
|
+++ b/src/apps/relay/http_server.c
|
||||||
|
@@ -104,35 +104,44 @@ const char* get_http_date_header()
|
||||||
|
static struct headers_list * post_parse(char *data, size_t data_len)
|
||||||
|
{
|
||||||
|
while((*data=='\r')||(*data=='\n')) { ++data; --data_len; }
|
||||||
|
- char *post_data = (char*)calloc(data_len + 1, sizeof(char));
|
||||||
|
- memcpy(post_data, data, data_len);
|
||||||
|
- char *fmarker = NULL;
|
||||||
|
- char *fsplit = strtok_r(post_data, "&", &fmarker);
|
||||||
|
- struct headers_list *list = (struct headers_list*)malloc(sizeof(struct headers_list));
|
||||||
|
- ns_bzero(list,sizeof(struct headers_list));
|
||||||
|
- while (fsplit != NULL) {
|
||||||
|
- char *vmarker = NULL;
|
||||||
|
- char *key = strtok_r(fsplit, "=", &vmarker);
|
||||||
|
- char *value = strtok_r(NULL, "=", &vmarker);
|
||||||
|
- char empty[1];
|
||||||
|
- empty[0]=0;
|
||||||
|
- value = value ? value : empty;
|
||||||
|
- value = evhttp_decode_uri(value);
|
||||||
|
- char *p = value;
|
||||||
|
- while (*p) {
|
||||||
|
- if (*p == '+')
|
||||||
|
- *p = ' ';
|
||||||
|
- p++;
|
||||||
|
+ if (data_len) {
|
||||||
|
+ char *post_data = (char*)calloc(data_len + 1, sizeof(char));
|
||||||
|
+ if (post_data != NULL) {
|
||||||
|
+ memcpy(post_data, data, data_len);
|
||||||
|
+ char *fmarker = NULL;
|
||||||
|
+ char *fsplit = strtok_r(post_data, "&", &fmarker);
|
||||||
|
+ struct headers_list *list = (struct headers_list*)malloc(sizeof(struct headers_list));
|
||||||
|
+ bzero(list,sizeof(struct headers_list));
|
||||||
|
+ while (fsplit != NULL) {
|
||||||
|
+ char *vmarker = NULL;
|
||||||
|
+ char *key = strtok_r(fsplit, "=", &vmarker);
|
||||||
|
+ if (key == NULL)
|
||||||
|
+ break;
|
||||||
|
+ else {
|
||||||
|
+ char *value = strtok_r(NULL, "=", &vmarker);
|
||||||
|
+ char empty[1];
|
||||||
|
+ empty[0]=0;
|
||||||
|
+ value = value ? value : empty;
|
||||||
|
+ value = evhttp_decode_uri(value);
|
||||||
|
+ char *p = value;
|
||||||
|
+ while (*p) {
|
||||||
|
+ if (*p == '+')
|
||||||
|
+ *p = ' ';
|
||||||
|
+ p++;
|
||||||
|
+ }
|
||||||
|
+ list->keys = (char**)realloc(list->keys,sizeof(char*)*(list->n+1));
|
||||||
|
+ list->keys[list->n] = strdup(key);
|
||||||
|
+ list->values = (char**)realloc(list->values,sizeof(char*)*(list->n+1));
|
||||||
|
+ list->values[list->n] = value;
|
||||||
|
+ ++(list->n);
|
||||||
|
+ fsplit = strtok_r(NULL, "&", &fmarker);
|
||||||
|
+ }
|
||||||
|
+ }
|
||||||
|
+ free(post_data);
|
||||||
|
+ return list;
|
||||||
|
}
|
||||||
|
- list->keys = (char**)realloc(list->keys,sizeof(char*)*(list->n+1));
|
||||||
|
- list->keys[list->n] = strdup(key);
|
||||||
|
- list->values = (char**)realloc(list->values,sizeof(char*)*(list->n+1));
|
||||||
|
- list->values[list->n] = value;
|
||||||
|
- ++(list->n);
|
||||||
|
- fsplit = strtok_r(NULL, "&", &fmarker);
|
||||||
|
}
|
||||||
|
- free(post_data);
|
||||||
|
- return list;
|
||||||
|
+ return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
static struct http_request* parse_http_request_1(struct http_request* ret, char* request, int parse_post)
|
22
coturn-4.5.1.1.missing-call-to-setgroups-before-setuid.patch
Normal file
22
coturn-4.5.1.1.missing-call-to-setgroups-before-setuid.patch
Normal file
@ -0,0 +1,22 @@
|
|||||||
|
From acbf7e15c9290e0891a6b6b5ce6e81bbaa77ce5a Mon Sep 17 00:00:00 2001
|
||||||
|
From: Johannes Weberhofer <jweberhofer@weberhofer.at>
|
||||||
|
Date: Sat, 11 Apr 2020 10:33:55 +0200
|
||||||
|
Subject: [PATCH] Drop of supplementary group IDs
|
||||||
|
|
||||||
|
Fix related to POS36-C and rpmlint error "missing-call-to-setgroups-before-setuid".
|
||||||
|
---
|
||||||
|
src/apps/relay/mainrelay.c | 1 +
|
||||||
|
1 file changed, 1 insertion(+)
|
||||||
|
|
||||||
|
diff --git a/src/apps/relay/mainrelay.c b/src/apps/relay/mainrelay.c
|
||||||
|
index 6710da6d..5a21cfaa 100644
|
||||||
|
--- a/src/apps/relay/mainrelay.c
|
||||||
|
+++ b/src/apps/relay/mainrelay.c
|
||||||
|
@@ -2061,6 +2061,7 @@ static void set_network_engine(void)
|
||||||
|
|
||||||
|
static void drop_privileges(void)
|
||||||
|
{
|
||||||
|
+ setgroups(0, NULL);
|
||||||
|
if(procgroupid_set) {
|
||||||
|
if(getgid() != procgroupid) {
|
||||||
|
if (setgid(procgroupid) != 0) {
|
3
coturn-4.5.1.1.tar.gz
Normal file
3
coturn-4.5.1.1.tar.gz
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
version https://git-lfs.github.com/spec/v1
|
||||||
|
oid sha256:8eabe4c241ad9a74655d8516c69b1fa3275e020e7f7fca50a6cb822809e7c220
|
||||||
|
size 420069
|
4
coturn-user.conf
Normal file
4
coturn-user.conf
Normal file
@ -0,0 +1,4 @@
|
|||||||
|
# Type Name ID GECOS [HOME]
|
||||||
|
g coturn -
|
||||||
|
u coturn - "Coturn TURN Server daemon" /var/lib/coturn
|
||||||
|
m coturn coturn
|
4
coturn.changes
Normal file
4
coturn.changes
Normal file
@ -0,0 +1,4 @@
|
|||||||
|
-------------------------------------------------------------------
|
||||||
|
Thu Apr 9 10:57:37 UTC 2020 - Johannes Weberhofer <jweberhofer@weberhofer.at>
|
||||||
|
|
||||||
|
- Initial release of coturn 4.5.1.1
|
9
coturn.firewalld
Normal file
9
coturn.firewalld
Normal file
@ -0,0 +1,9 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<service>
|
||||||
|
<short>TURN</short>
|
||||||
|
<description>TURN and STUN server ports for VoIP</description>
|
||||||
|
<port protocol="tcp" port="3478"/>
|
||||||
|
<port protocol="udp" port="3478"/>
|
||||||
|
<port protocol="tcp" port="5349"/>
|
||||||
|
<port protocol="udp" port="5349"/>
|
||||||
|
</service>
|
12
coturn.logrotate
Normal file
12
coturn.logrotate
Normal file
@ -0,0 +1,12 @@
|
|||||||
|
/var/log/coturn/turnserver.log {
|
||||||
|
missingok
|
||||||
|
compress
|
||||||
|
delaycompress
|
||||||
|
notifempty
|
||||||
|
postrotate
|
||||||
|
/bin/systemctl --quiet is-active coturn.service && /bin/kill -HUP `cat /run/coturn/turnserver.pid` || true
|
||||||
|
endscript
|
||||||
|
create 0660 coturn coturn
|
||||||
|
sharedscripts
|
||||||
|
su coturn coturn
|
||||||
|
}
|
25
coturn.service
Normal file
25
coturn.service
Normal file
@ -0,0 +1,25 @@
|
|||||||
|
[Unit]
|
||||||
|
Description=STUN and TURN relay server for VoIP and WebRTC
|
||||||
|
Documentation=man:coturn(1) man:turnadmin(1) man:turnserver(1)
|
||||||
|
After=syslog.target network.target
|
||||||
|
|
||||||
|
[Service]
|
||||||
|
User=coturn
|
||||||
|
Group=coturn
|
||||||
|
Type=forking
|
||||||
|
EnvironmentFile=-/etc/sysconfig/turnserver
|
||||||
|
PIDFile=/run/coturn/turnserver.pid
|
||||||
|
ExecStart=/usr/bin/turnserver -o -c /etc/coturn/turnserver.conf --pidfile /run/coturn/turnserver.pid $EXTRA_OPTIONS
|
||||||
|
Restart=on-abort
|
||||||
|
ExecReload=/bin/kill -HUP $MAINPID
|
||||||
|
|
||||||
|
LimitCORE=infinity
|
||||||
|
LimitNOFILE=999999
|
||||||
|
LimitNPROC=60000
|
||||||
|
LimitRTPRIO=infinity
|
||||||
|
LimitRTTIME=7000000
|
||||||
|
CPUSchedulingPolicy=other
|
||||||
|
UMask=0007
|
||||||
|
|
||||||
|
[Install]
|
||||||
|
WantedBy=multi-user.target
|
269
coturn.spec
Normal file
269
coturn.spec
Normal file
@ -0,0 +1,269 @@
|
|||||||
|
#
|
||||||
|
# spec file for package coturn
|
||||||
|
#
|
||||||
|
# Copyright (c) 2020 SUSE LLC
|
||||||
|
#
|
||||||
|
# All modifications and additions to the file contributed by third parties
|
||||||
|
# remain the property of their copyright owners, unless otherwise agreed
|
||||||
|
# upon. The license for this file, and modifications and additions to the
|
||||||
|
# file, is the same license as for the pristine package itself (unless the
|
||||||
|
# license for the pristine package is not an Open Source License, in which
|
||||||
|
# case the license is the MIT License). An "Open Source License" is a
|
||||||
|
# license that conforms to the Open Source Definition (Version 1.9)
|
||||||
|
# published by the Open Source Initiative.
|
||||||
|
|
||||||
|
# Please submit bugfixes or comments via https://bugs.opensuse.org/
|
||||||
|
#
|
||||||
|
|
||||||
|
# ship a static libraries that are made of an archive
|
||||||
|
%global _lto_cflags %{?_lto_cflags} -ffat-lto-objects
|
||||||
|
|
||||||
|
Name: coturn
|
||||||
|
Version: 4.5.1.1
|
||||||
|
Release: 0
|
||||||
|
Summary: TURN and STUN server for VoIP
|
||||||
|
License: BSD-3-Clause
|
||||||
|
Group: Productivity/Networking/Talk/Servers
|
||||||
|
URL: https://github.com/coturn/coturn/
|
||||||
|
Source0: https://github.com/coturn/coturn/archive/%{version}/%{name}-%{version}.tar.gz
|
||||||
|
Source1: %{name}.service
|
||||||
|
Source2: %{name}.tmpfilesd
|
||||||
|
Source3: %{name}.logrotate
|
||||||
|
Source4: %{name}-user.conf
|
||||||
|
Source5: %{name}.sysconfig
|
||||||
|
Source6: %{name}.firewalld
|
||||||
|
Source7: README.SUSE
|
||||||
|
# PATCH-FIX-UPSTREAM coturn-4.5.1.0-append-log.patch Append only to log files rather to override them
|
||||||
|
Patch0: coturn-4.5.1.0-append-log.patch
|
||||||
|
# PATCH-FIX-UPSTREAM coturn-4.5.1.1-cve-2020-6061.patch CVE-2020-6061
|
||||||
|
Patch1: coturn-4.5.1.1-cve-2020-6061.patch
|
||||||
|
# PATCH-FIX-UPSTREAM coturn-4.5.1.1-cve-2020-6062.patch CVE-2020-6062
|
||||||
|
Patch2: coturn-4.5.1.1-cve-2020-6062.patch
|
||||||
|
# PATCH-FIX-UPSTREAM coturn-4.5.1.1.missing-call-to-setgroups-before-setuid.patch fix rpmlint error
|
||||||
|
Patch3: coturn-4.5.1.1.missing-call-to-setgroups-before-setuid.patch
|
||||||
|
BuildRequires: fdupes
|
||||||
|
BuildRequires: firewall-macros
|
||||||
|
BuildRequires: libevent-devel >= 2.0.0
|
||||||
|
BuildRequires: libmysqld-devel
|
||||||
|
BuildRequires: p11-kit
|
||||||
|
BuildRequires: pkgconfig
|
||||||
|
BuildRequires: systemd
|
||||||
|
BuildRequires: sysuser-tools
|
||||||
|
BuildRequires: pkgconfig(hiredis)
|
||||||
|
BuildRequires: pkgconfig(libpq)
|
||||||
|
BuildRequires: pkgconfig(libssl) >= 1.0.2
|
||||||
|
BuildRequires: pkgconfig(sqlite3)
|
||||||
|
Requires(pre): %fillup_prereq
|
||||||
|
Requires(pre): shadow
|
||||||
|
Recommends: logrotate
|
||||||
|
%sysusers_requires
|
||||||
|
|
||||||
|
%description
|
||||||
|
STUN (Session Traversal Utilities for NAT) and TURN (Traversal Using Relays
|
||||||
|
around NAT) are protocols that can be used to provide NAT traversal for VoIP
|
||||||
|
and WebRTC.
|
||||||
|
|
||||||
|
It can be used as a general-purpose network traffic TURN server and gateway,
|
||||||
|
too. On-line management interface (over telnet or over HTTPS) for the TURN
|
||||||
|
server is available.
|
||||||
|
This implementation also includes some extra features. Supported RFCs:
|
||||||
|
|
||||||
|
TURN specs:
|
||||||
|
- RFC 5766 - base TURN specs
|
||||||
|
- RFC 6062 - TCP relaying TURN extension
|
||||||
|
- RFC 6156 - IPv6 extension for TURN
|
||||||
|
- Experimental DTLS support as client protocol.
|
||||||
|
|
||||||
|
STUN specs:
|
||||||
|
- RFC 3489 - "classic" STUN
|
||||||
|
- RFC 5389 - base "new" STUN specs
|
||||||
|
- RFC 5769 - test vectors for STUN protocol testing
|
||||||
|
- RFC 5780 - NAT behavior discovery support
|
||||||
|
|
||||||
|
The implementation fully supports the following client-to-TURN-server protocols:
|
||||||
|
- UDP (per RFC 5766)
|
||||||
|
- TCP (per RFC 5766 and RFC 6062)
|
||||||
|
- TLS (per RFC 5766 and RFC 6062); TLS1.0/TLS1.1/TLS1.2
|
||||||
|
- DTLS (experimental non-standard feature)
|
||||||
|
|
||||||
|
Supported relay protocols:
|
||||||
|
- UDP (per RFC 5766)
|
||||||
|
- TCP (per RFC 6062)
|
||||||
|
|
||||||
|
Supported user databases (for user repository, with passwords or keys, if
|
||||||
|
authentication is required):
|
||||||
|
- SQLite
|
||||||
|
- MySQL
|
||||||
|
- PostgreSQL
|
||||||
|
- Redis
|
||||||
|
|
||||||
|
Redis can also be used for status and statistics storage and notification.
|
||||||
|
Supported TURN authentication mechanisms:
|
||||||
|
- long-term
|
||||||
|
- TURN REST API (a modification of the long-term mechanism, for time-limited
|
||||||
|
secret-based authentication, for WebRTC applications)
|
||||||
|
|
||||||
|
The load balancing can be implemented with the following tools (either one or a
|
||||||
|
combination of them):
|
||||||
|
- network load-balancer server
|
||||||
|
- DNS-based load balancing
|
||||||
|
- built-in ALTERNATE-SERVER mechanism.
|
||||||
|
|
||||||
|
%package utils
|
||||||
|
Summary: Coturn utils
|
||||||
|
|
||||||
|
%description utils
|
||||||
|
This package contains the TURN client utils.
|
||||||
|
|
||||||
|
%package devel
|
||||||
|
Summary: Coturn development headers
|
||||||
|
Group: Development/Libraries/C and C++
|
||||||
|
Requires: %{name} = %{version}
|
||||||
|
|
||||||
|
%description devel
|
||||||
|
This package contains the TURN development headers.
|
||||||
|
|
||||||
|
%prep
|
||||||
|
%setup -q
|
||||||
|
%patch0 -p1
|
||||||
|
%patch1 -p1
|
||||||
|
%patch2 -p1
|
||||||
|
%patch3 -p1
|
||||||
|
|
||||||
|
%build
|
||||||
|
%sysusers_generate_pre %{SOURCE4} %{name}
|
||||||
|
|
||||||
|
%configure \
|
||||||
|
--confdir=%{_sysconfdir}/%{name} \
|
||||||
|
--examplesdir=%{_docdir}/%{name} \
|
||||||
|
--schemadir=%{_datadir}/%{name} \
|
||||||
|
--manprefix=%{_datadir} \
|
||||||
|
--docdir=%{_docdir}/%{name} \
|
||||||
|
--turndbdir=%{_localstatedir}/lib/%{name} \
|
||||||
|
--disable-rpath
|
||||||
|
%make_build
|
||||||
|
|
||||||
|
%check
|
||||||
|
%make_build test
|
||||||
|
|
||||||
|
%install
|
||||||
|
%make_install
|
||||||
|
mkdir -p %{buildroot}{%{_sysconfdir}/pki/coturn/{public,private},{%{_rundir},%{_localstatedir}/{lib,log}}/%{name},%{_unitdir},%{_sysusersdir},%{_sbindir}}
|
||||||
|
install -Dpm 0644 %{SOURCE1} %{buildroot}%{_unitdir}/
|
||||||
|
install -Dpm 0644 %{SOURCE2} %{buildroot}%{_tmpfilesdir}/%{name}.conf
|
||||||
|
install -Dpm 0644 %{SOURCE3} %{buildroot}%{_sysconfdir}/logrotate.d/%{name}
|
||||||
|
install -Dpm 0644 %{SOURCE4} %{buildroot}%{_sysusersdir}/
|
||||||
|
install -Dpm 0644 %{SOURCE5} %{buildroot}%{_fillupdir}/sysconfig.%{name}
|
||||||
|
install -Dpm 0644 %{SOURCE6} %{buildroot}%{_libexecdir}/firewalld/services/%{name}.xml
|
||||||
|
install -Dpm 0644 %{SOURCE7} %{buildroot}%{_docdir}/%{name}/
|
||||||
|
|
||||||
|
sed -i \
|
||||||
|
-e "s|^syslog$|#syslog|g" \
|
||||||
|
-e "s|^#*log-file=.*|log-file=%{_localstatedir}/log/coturn/turnserver.log|g" \
|
||||||
|
-e "s|^#*simple-log|simple-log|g" \
|
||||||
|
-e "s|^#*cert=.*|#cert=%{_sysconfdir}/pki/coturn/public/turn_server_cert.pem|g" \
|
||||||
|
-e "s|^#*pkey=.*|#pkey=%{_sysconfdir}/pki/coturn/private/turn_server_pkey.pem|g" \
|
||||||
|
%{buildroot}%{_sysconfdir}/%{name}/turnserver.conf.default
|
||||||
|
touch -c -r examples%{_sysconfdir}/turnserver.conf %{buildroot}%{_sysconfdir}/%{name}/turnserver.conf.default
|
||||||
|
mv %{buildroot}%{_sysconfdir}/%{name}/turnserver.conf.default %{buildroot}%{_sysconfdir}/%{name}/turnserver.conf
|
||||||
|
|
||||||
|
# Remove certs and keys
|
||||||
|
rm %{buildroot}%{_docdir}/%{name}%{_sysconfdir}/*.pem
|
||||||
|
|
||||||
|
# fix permissions
|
||||||
|
find %{buildroot}%{_docdir} -type f -exec chmod 0664 {} \;
|
||||||
|
chmod 0644 %{buildroot}%{_mandir}/man1/*
|
||||||
|
chmod 0644 %{buildroot}%{_datadir}/%{name}/*
|
||||||
|
|
||||||
|
# compatibility link
|
||||||
|
ln -s %{_sbindir}/service %{buildroot}%{_sbindir}/rc%{name}
|
||||||
|
|
||||||
|
# manually create and symlink man pages
|
||||||
|
rm %{buildroot}%{_mandir}/man1/{turnutils_*,coturn.1}
|
||||||
|
gzip %{buildroot}%{_mandir}/man1/*.1
|
||||||
|
ln -s turnserver.1.gz %{buildroot}%{_mandir}/man1/coturn.1.gz
|
||||||
|
for PKG in natdiscovery oauth peer stunclient uclient ; do
|
||||||
|
ln -s turnutils.1.gz %{buildroot}%{_mandir}/man1/turnutils_$PKG.1.gz
|
||||||
|
done
|
||||||
|
|
||||||
|
%pre -f %{name}.pre
|
||||||
|
%service_add_pre %{name}.service
|
||||||
|
|
||||||
|
%post
|
||||||
|
%service_add_post %{name}.service
|
||||||
|
systemd-tmpfiles --create %{_prefix}/lib/tmpfiles.d/%{name}.conf
|
||||||
|
%{fillup_only -n %{name}}
|
||||||
|
%firewalld_reload
|
||||||
|
|
||||||
|
%preun
|
||||||
|
%service_del_preun %{name}.service
|
||||||
|
|
||||||
|
%postun
|
||||||
|
%service_del_postun %{name}.service
|
||||||
|
|
||||||
|
%files
|
||||||
|
%license LICENSE
|
||||||
|
%{_sysusersdir}/%{name}-user.conf
|
||||||
|
%{_sbindir}/rc%{name}
|
||||||
|
%{_fillupdir}/sysconfig.coturn
|
||||||
|
%dir %{_libexecdir}/firewalld
|
||||||
|
%dir %{_libexecdir}/firewalld/services
|
||||||
|
%{_libexecdir}/firewalld/services/coturn.xml
|
||||||
|
|
||||||
|
%{_bindir}/turnserver
|
||||||
|
%{_bindir}/turnadmin
|
||||||
|
%dir %{_datadir}/%{name}
|
||||||
|
%{_datadir}/%{name}/*.redis
|
||||||
|
%{_datadir}/%{name}/*.sql
|
||||||
|
%attr(0750,-,-) %{_datadir}/%{name}/*.sh
|
||||||
|
%dir %{_docdir}/%{name}
|
||||||
|
%{_docdir}/%{name}/README.*
|
||||||
|
%exclude %{_docdir}/%{name}/README.turnutils
|
||||||
|
%exclude %{_docdir}/%{name}/INSTALL
|
||||||
|
%exclude %{_docdir}/%{name}/LICENSE
|
||||||
|
%exclude %{_docdir}/%{name}/postinstall.txt
|
||||||
|
%dir %{_docdir}/%{name}%{_sysconfdir}
|
||||||
|
%doc %{_docdir}/%{name}%{_sysconfdir}/*
|
||||||
|
%dir %{_docdir}/%{name}/scripts
|
||||||
|
%dir %{_docdir}/%{name}/scripts/*
|
||||||
|
%{_docdir}/%{name}/scripts/*.sh
|
||||||
|
%{_docdir}/%{name}/scripts/readme.txt
|
||||||
|
%doc %{_docdir}/%{name}/scripts/*/*
|
||||||
|
|
||||||
|
#Don't package schemas twice
|
||||||
|
%exclude %doc %{_docdir}/%{name}/schema.*
|
||||||
|
|
||||||
|
%{_mandir}/man1/coturn.1%{?ext_man}
|
||||||
|
%{_mandir}/man1/turnserver.1%{?ext_man}
|
||||||
|
%{_mandir}/man1/turnadmin.1%{?ext_man}
|
||||||
|
|
||||||
|
%dir %attr(0750,root,%{name}) %{_sysconfdir}/%{name}
|
||||||
|
%config(noreplace) %attr(0640,root,%{name}) %{_sysconfdir}/%{name}/turnserver.conf
|
||||||
|
%dir %{_sysconfdir}/pki/%{name}
|
||||||
|
%dir %{_sysconfdir}/pki/%{name}/public
|
||||||
|
%dir %attr(0750,root,%{name}) %{_sysconfdir}/pki/%{name}/private
|
||||||
|
%{_unitdir}/coturn.service
|
||||||
|
%{_tmpfilesdir}/coturn.conf
|
||||||
|
%dir %ghost %attr(0750,%{name},%{name}) %{_rundir}/%{name}
|
||||||
|
%dir %attr(0750,%{name},%{name}) %{_localstatedir}/lib/%{name}
|
||||||
|
%dir %attr(0750,%{name},%{name}) %{_localstatedir}/log/%{name}
|
||||||
|
%config(noreplace) %{_sysconfdir}/logrotate.d/%{name}
|
||||||
|
|
||||||
|
%files utils
|
||||||
|
%license LICENSE
|
||||||
|
%{_bindir}/turnutils_peer
|
||||||
|
%{_bindir}/turnutils_stunclient
|
||||||
|
%{_bindir}/turnutils_uclient
|
||||||
|
%{_bindir}/turnutils_oauth
|
||||||
|
%{_bindir}/turnutils_natdiscovery
|
||||||
|
%doc %{_docdir}/%{name}/README.turnutils
|
||||||
|
%{_mandir}/man1/turnutils.1%{?ext_man}
|
||||||
|
%{_mandir}/man1/turnutils_*.1%{?ext_man}
|
||||||
|
|
||||||
|
%files devel
|
||||||
|
%defattr(0644,root,root,0755)
|
||||||
|
%license LICENSE
|
||||||
|
%{_includedir}/turn
|
||||||
|
%{_libdir}/libturnclient.a
|
||||||
|
|
||||||
|
%changelog
|
8
coturn.sysconfig
Normal file
8
coturn.sysconfig
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
## Path: coturn/TURN
|
||||||
|
## Type: string
|
||||||
|
## Default: ""
|
||||||
|
## ServiceRestart: coturn
|
||||||
|
#
|
||||||
|
# TURN Server startup options
|
||||||
|
#
|
||||||
|
EXTRA_OPTIONS=""
|
1
coturn.tmpfilesd
Normal file
1
coturn.tmpfilesd
Normal file
@ -0,0 +1 @@
|
|||||||
|
d /run/coturn 750 coturn coturn
|
Loading…
Reference in New Issue
Block a user