From 52320f8ac9167bd3e5ceca4d29f76086ccca8d61 Mon Sep 17 00:00:00 2001 From: Greg Fodor Date: Sat, 18 Apr 2020 01:27:54 +0000 Subject: [PATCH 01/20] Add flags to disable periodic use of dynamic tables --- src/apps/relay/mainrelay.c | 23 ++++++++++++++++++++++- src/apps/relay/mainrelay.h | 3 +++ src/apps/relay/netengine.c | 5 ++++- src/apps/relay/userdb.c | 4 ++-- 4 files changed, 31 insertions(+), 4 deletions(-) diff --git a/src/apps/relay/mainrelay.c b/src/apps/relay/mainrelay.c index 6710da6d..c1f14389 100644 --- a/src/apps/relay/mainrelay.c +++ b/src/apps/relay/mainrelay.c @@ -157,7 +157,10 @@ DEFAULT_CPUS_NUMBER, ///////// Encryption ///////// "", /* secret_key_file */ "", /* secret_key */ -0 /* keep_address_family */ +0, /* keep_address_family */ +0, /* no_auth_pings */ +0, /* no_dynamic_ip_list */ +0 /* no_dynamic_realms */ }; //////////////// OpenSSL Init ////////////////////// @@ -532,6 +535,9 @@ static char Usage[] = "Usage: turnserver [options]\n" " That database value can be changed on-the-fly\n" " by a separate program, so this is why it is 'dynamic'.\n" " Multiple shared secrets can be used (both in the database and in the \"static\" fashion).\n" +" --no-auth-pings Disable periodic health checks to 'dynamic' auth secret tables.\n" +" --no-dynamic-ip-list Do not use dynamic allowed/denied peer ip list.\n" +" --no-dynamic-realms Do not use dynamic realm assignment and options.\n" " --server-name Server name used for\n" " the oAuth authentication purposes.\n" " The default value is the realm name.\n" @@ -730,6 +736,9 @@ enum EXTRA_OPTS { CHANNEL_LIFETIME_OPT, PERMISSION_LIFETIME_OPT, AUTH_SECRET_OPT, + NO_AUTH_PINGS_OPT, + NO_DYNAMIC_IP_LIST_OPT, + NO_DYNAMIC_REALMS_OPT, DEL_ALL_AUTH_SECRETS_OPT, STATIC_AUTH_SECRET_VAL_OPT, AUTH_SECRET_TS_EXP, /* deprecated */ @@ -833,6 +842,9 @@ static const struct myoption long_options[] = { #endif { "use-auth-secret", optional_argument, NULL, AUTH_SECRET_OPT }, { "static-auth-secret", required_argument, NULL, STATIC_AUTH_SECRET_VAL_OPT }, + { "no-auth-pings", optional_argument, NULL, NO_AUTH_PINGS_OPT }, + { "no-dynamic-ip-list", optional_argument, NULL, NO_DYNAMIC_IP_LIST_OPT }, + { "no-dynamic-realms", optional_argument, NULL, NO_DYNAMIC_REALMS_OPT }, /* deprecated: */ { "secret-ts-exp-time", optional_argument, NULL, AUTH_SECRET_TS_EXP }, { "realm", required_argument, NULL, 'r' }, { "server-name", required_argument, NULL, SERVER_NAME_OPT }, @@ -1429,6 +1441,15 @@ static void set_option(int c, char *value) turn_params.ct = TURN_CREDENTIALS_LONG_TERM; use_lt_credentials = 1; break; + case NO_AUTH_PINGS_OPT: + turn_params.no_auth_pings = 1; + break; + case NO_DYNAMIC_IP_LIST_OPT: + turn_params.no_dynamic_ip_list = 1; + break; + case NO_DYNAMIC_REALMS_OPT: + turn_params.no_dynamic_realms = 1; + break; case STATIC_AUTH_SECRET_VAL_OPT: add_to_secrets_list(&turn_params.default_users_db.ram_db.static_auth_secrets,value); turn_params.use_auth_secret_with_timestamp = 1; diff --git a/src/apps/relay/mainrelay.h b/src/apps/relay/mainrelay.h index ea139846..1ed5d5f7 100644 --- a/src/apps/relay/mainrelay.h +++ b/src/apps/relay/mainrelay.h @@ -322,6 +322,9 @@ typedef struct _turn_params_ { char secret_key_file[1025]; unsigned char secret_key[1025]; int keep_address_family; + int no_auth_pings; + int no_dynamic_ip_list; + int no_dynamic_realms; } turn_params_t; diff --git a/src/apps/relay/netengine.c b/src/apps/relay/netengine.c index 1a69dcd8..ead46f77 100644 --- a/src/apps/relay/netengine.c +++ b/src/apps/relay/netengine.c @@ -1776,7 +1776,10 @@ static void* run_auth_server_thread(void *arg) barrier_wait(); while(run_auth_server_flag) { - auth_ping(as->rch); + if (!turn_params.no_auth_pings) { + auth_ping(as->rch); + } + run_events(as->event_base,NULL); } } diff --git a/src/apps/relay/userdb.c b/src/apps/relay/userdb.c index 76d0c7c5..d2effac1 100644 --- a/src/apps/relay/userdb.c +++ b/src/apps/relay/userdb.c @@ -1167,7 +1167,7 @@ ip_range_list_t* get_ip_list(const char *kind) bzero(ret,sizeof(ip_range_list_t)); const turn_dbdriver_t * dbd = get_dbdriver(); - if (dbd && dbd->get_ip_list) { + if (dbd && dbd->get_ip_list && !turn_params.no_dynamic_ip_list) { (*dbd->get_ip_list)(kind, ret); } @@ -1303,7 +1303,7 @@ void reread_realms(void) } const turn_dbdriver_t * dbd = get_dbdriver(); - if (dbd && dbd->reread_realms) { + if (dbd && dbd->reread_realms && !turn_params.no_dynamic_realms) { (*dbd->reread_realms)(&realms_list); } } From 7c1573ddb95fea04e206eb2725936a06c7191745 Mon Sep 17 00:00:00 2001 From: Greg Fodor Date: Tue, 28 Apr 2020 17:17:21 +0000 Subject: [PATCH 02/20] Update manpages and README --- README.turnserver | 6 ++++++ man/man1/turnadmin.1 | 2 +- man/man1/turnserver.1 | 16 +++++++++++++++- man/man1/turnutils.1 | 2 +- 4 files changed, 23 insertions(+), 3 deletions(-) diff --git a/README.turnserver b/README.turnserver index 4f2b28d0..f38babcd 100644 --- a/README.turnserver +++ b/README.turnserver @@ -424,6 +424,12 @@ Options with values: value can be changed on-the-fly by a separate program, so this is why that other mode is dynamic. Multiple shared secrets can be used (both in the database and in the "static" fashion). + + --no-auth-pings Disable periodic health checks to 'dynamic' auth secret tables.\n" + + --no-dynamic-ip-list Do not use dynamic allowed/denied peer ip list.\n" + + --no-dynamic-realms Do not use dynamic realm assignment and options.\n" --server-name Server name used for the oAuth authentication purposes. diff --git a/man/man1/turnadmin.1 b/man/man1/turnadmin.1 index 92b16624..6373ea00 100644 --- a/man/man1/turnadmin.1 +++ b/man/man1/turnadmin.1 @@ -1,5 +1,5 @@ .\" Text automatically generated by txt2man -.TH TURN 1 "12 February 2020" "" "" +.TH TURN 1 "28 April 2020" "" "" .SH GENERAL INFORMATION \fIturnadmin\fP is a TURN administration tool. This tool can be used to manage diff --git a/man/man1/turnserver.1 b/man/man1/turnserver.1 index 6c7e96a4..1bfa684f 100644 --- a/man/man1/turnserver.1 +++ b/man/man1/turnserver.1 @@ -1,5 +1,5 @@ .\" Text automatically generated by txt2man -.TH TURN 1 "12 February 2020" "" "" +.TH TURN 1 "28 April 2020" "" "" .SH GENERAL INFORMATION The \fBTURN Server\fP project contains the source code of a TURN server and TURN client @@ -618,6 +618,20 @@ in turn_secret table in user database (if present). The database\-stored value can be changed on\-the\-fly by a separate program, so this is why that other mode is dynamic. Multiple shared secrets can be used (both in the database and in the "static" fashion). +.RS +.TP +.B +\fB\-\-no\-auth\-pings\fP +Disable periodic health checks to 'dynamic' auth secret tables.\n" +.TP +.B +\fB\-\-no\-dynamic\-ip\-list\fP +Do not use dynamic allowed/denied peer ip list.\n" +.TP +.B +\fB\-\-no\-dynamic\-realms\fP +Do not use dynamic realm assignment and \fIoptions\fP.\n" +.RE .TP .B \fB\-\-server\-name\fP diff --git a/man/man1/turnutils.1 b/man/man1/turnutils.1 index 7da65528..fbe7cff3 100644 --- a/man/man1/turnutils.1 +++ b/man/man1/turnutils.1 @@ -1,5 +1,5 @@ .\" Text automatically generated by txt2man -.TH TURN 1 "12 February 2020" "" "" +.TH TURN 1 "28 April 2020" "" "" .SH GENERAL INFORMATION A set of turnutils_* programs provides some utility functionality to be used From 9102773ef04f982755935bebd2d4779f820492db Mon Sep 17 00:00:00 2001 From: Greg Fodor Date: Tue, 28 Apr 2020 17:19:25 +0000 Subject: [PATCH 03/20] Remove unnecessary characters in README.turnserver --- README.turnserver | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/README.turnserver b/README.turnserver index c21f4323..bf680d80 100644 --- a/README.turnserver +++ b/README.turnserver @@ -429,11 +429,11 @@ Options with values: that other mode is dynamic. Multiple shared secrets can be used (both in the database and in the "static" fashion). - --no-auth-pings Disable periodic health checks to 'dynamic' auth secret tables.\n" + --no-auth-pings Disable periodic health checks to 'dynamic' auth secret tables. - --no-dynamic-ip-list Do not use dynamic allowed/denied peer ip list.\n" + --no-dynamic-ip-list Do not use dynamic allowed/denied peer ip list. - --no-dynamic-realms Do not use dynamic realm assignment and options.\n" + --no-dynamic-realms Do not use dynamic realm assignment and options. --server-name Server name used for the oAuth authentication purposes. From 82892a2c1c73691245a8bd30ec005d58fb10301f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?M=C3=A9sz=C3=A1ros=20Mih=C3=A1ly?= Date: Wed, 29 Apr 2020 22:00:04 +0200 Subject: [PATCH 04/20] update man, run make-man.sh --- man/man1/turnadmin.1 | 2 +- man/man1/turnserver.1 | 8 ++++---- man/man1/turnutils.1 | 2 +- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/man/man1/turnadmin.1 b/man/man1/turnadmin.1 index 25dbb6a5..7432c99c 100644 --- a/man/man1/turnadmin.1 +++ b/man/man1/turnadmin.1 @@ -1,5 +1,5 @@ .\" Text automatically generated by txt2man -.TH TURN 1 "28 April 2020" "" "" +.TH TURN 1 "29 April 2020" "" "" .SH GENERAL INFORMATION \fIturnadmin\fP is a TURN administration tool. This tool can be used to manage diff --git a/man/man1/turnserver.1 b/man/man1/turnserver.1 index 43c7808b..df298c54 100644 --- a/man/man1/turnserver.1 +++ b/man/man1/turnserver.1 @@ -1,5 +1,5 @@ .\" Text automatically generated by txt2man -.TH TURN 1 "28 April 2020" "" "" +.TH TURN 1 "29 April 2020" "" "" .SH GENERAL INFORMATION The \fBTURN Server\fP project contains the source code of a TURN server and TURN client @@ -621,15 +621,15 @@ that other mode is dynamic. Multiple shared secrets can be used .TP .B \fB\-\-no\-auth\-pings\fP -Disable periodic health checks to 'dynamic' auth secret tables.\n" +Disable periodic health checks to 'dynamic' auth secret tables. .TP .B \fB\-\-no\-dynamic\-ip\-list\fP -Do not use dynamic allowed/denied peer ip list.\n" +Do not use dynamic allowed/denied peer ip list. .TP .B \fB\-\-no\-dynamic\-realms\fP -Do not use dynamic realm assignment and \fIoptions\fP.\n" +Do not use dynamic realm assignment and \fIoptions\fP. .RE .TP .B diff --git a/man/man1/turnutils.1 b/man/man1/turnutils.1 index 67103adc..01dd4f86 100644 --- a/man/man1/turnutils.1 +++ b/man/man1/turnutils.1 @@ -1,5 +1,5 @@ .\" Text automatically generated by txt2man -.TH TURN 1 "28 April 2020" "" "" +.TH TURN 1 "29 April 2020" "" "" .SH GENERAL INFORMATION A set of turnutils_* programs provides some utility functionality to be used From 8c6b2f6135a51e7811191cd73b1bd2914f15aa6d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?M=C3=A9sz=C3=A1ros=20Mih=C3=A1ly?= Date: Wed, 29 Apr 2020 22:03:36 +0200 Subject: [PATCH 05/20] Update Changelog --- ChangeLog | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/ChangeLog b/ChangeLog index b3629abb..41c654fc 100644 --- a/ChangeLog +++ b/ChangeLog @@ -57,7 +57,8 @@ Version 4.5.1.2 'dan Eider': - merge PR#506 Rename "prod" config option to "no-software-attribute" (by dbrgn) - merge PR #519 fix config extension in README.docker (by ooookai) - merge PR #516 change sql data dir in docker-compose-all.yml (by raghumuppa) - - mergr PR #513 remove trailing spaces from READMEs (by paulmenzel) + - merge PR #513 remove trailing spaces from READMEs (by paulmenzel) + - merge PR #525 add flags to disable periodic use of dynamic tables (by gfodor) 02/03/2019 Oleg Moskalenko Mihály Mészáros Version 4.5.1.1 'dan Eider': From e228a5e745f179efe6e5bb7c9299886a0feb279d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?M=C3=A9sz=C3=A1ros=20Mih=C3=A1ly?= Date: Thu, 30 Apr 2020 12:15:54 +0000 Subject: [PATCH 06/20] Quick and dirty fix for tot_recv_messages wrong count in e.g. secure_tls_client_c2c_tcp_relay.sh --- src/apps/uclient/uclient.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/apps/uclient/uclient.c b/src/apps/uclient/uclient.c index 7e229c80..1610c3f0 100644 --- a/src/apps/uclient/uclient.c +++ b/src/apps/uclient/uclient.c @@ -680,6 +680,9 @@ static int client_read(app_ur_session *elem, int is_tcp_data, app_tcp_conn_info if ((int)elem->in_buffer.len == clmessage_length) { bcopy((elem->in_buffer.buf), &mi, sizeof(message_info)); miset=1; + } else { + /* TODO: make a more clean fix */ + buffers=(int)elem->in_buffer.len / clmessage_length; } } else if (stun_is_indication(&(elem->in_buffer))) { From 9e460b21fb07ebc44b459a9ef788c3638abbb272 Mon Sep 17 00:00:00 2001 From: Nikolay Lanets Date: Thu, 30 Apr 2020 17:39:39 +0300 Subject: [PATCH 07/20] Error in readme? --- docker/README.docker | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docker/README.docker b/docker/README.docker index 3e7d6dca..c0e46fd9 100644 --- a/docker/README.docker +++ b/docker/README.docker @@ -1,6 +1,6 @@ Before you begin * copy db schema run ./cp-schema.sh - * edit turnserver/turnserver.conf according your db selection (mysql or postgresql or redis or mongodb) + * edit coturn/turnserver.conf according your db selection (mysql or postgresql or redis or mongodb) # start From 2b2f116c2dbcfa13442e0ef0b12bef6602dea923 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?M=C3=A9sz=C3=A1ros=20Mih=C3=A1ly?= Date: Thu, 30 Apr 2020 20:35:50 +0200 Subject: [PATCH 08/20] Bump version --- ChangeLog | 5 ++++- examples/scripts/pack.sh | 2 +- rpm/build.settings.sh | 2 +- rpm/turnserver.spec | 2 +- src/ns_turn_defs.h | 2 +- 5 files changed, 8 insertions(+), 5 deletions(-) diff --git a/ChangeLog b/ChangeLog index 41c654fc..11153795 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,4 +1,7 @@ -02/03/2019 Oleg Moskalenko Mihály Mészáros +30/04/2020 Oleg Moskalenko Mihály Mészáros +Version 4.5.2.0 'dan Eider': + +30/04/2020 Oleg Moskalenko Mihály Mészáros Version 4.5.1.2 'dan Eider': - merge regression fix: (by Mathieu Brunot) * Do not display empty CLI passwd alert if CLI is not enabled diff --git a/examples/scripts/pack.sh b/examples/scripts/pack.sh index 342ac78b..8b9032c7 100755 --- a/examples/scripts/pack.sh +++ b/examples/scripts/pack.sh @@ -2,7 +2,7 @@ # Run it from the root of the coturn source tree -V=4.5.1.0 +V=4.5.1.2 PACKDIR=`pwd`/../coturn-releases/ SRCDIR=`pwd` diff --git a/rpm/build.settings.sh b/rpm/build.settings.sh index 90b9f36f..e7684fa0 100755 --- a/rpm/build.settings.sh +++ b/rpm/build.settings.sh @@ -2,7 +2,7 @@ # Common settings script. -TURNVERSION=4.5.1.1 +TURNVERSION=4.5.1.2 BUILDDIR=~/rpmbuild ARCH=`uname -p` TURNSERVER_GIT_URL=https://github.com/coturn/coturn.git diff --git a/rpm/turnserver.spec b/rpm/turnserver.spec index 735b5549..7720ca40 100644 --- a/rpm/turnserver.spec +++ b/rpm/turnserver.spec @@ -1,5 +1,5 @@ Name: turnserver -Version: 4.5.1.1 +Version: 4.5.1.2 Release: 0%{dist} Summary: Coturn TURN Server diff --git a/src/ns_turn_defs.h b/src/ns_turn_defs.h index 71b60e57..2024133a 100644 --- a/src/ns_turn_defs.h +++ b/src/ns_turn_defs.h @@ -31,7 +31,7 @@ #ifndef __IOADEFS__ #define __IOADEFS__ -#define TURN_SERVER_VERSION "4.5.1.1" +#define TURN_SERVER_VERSION "4.5.1.2" #define TURN_SERVER_VERSION_NAME "dan Eider" #define TURN_SOFTWARE "Coturn-" TURN_SERVER_VERSION " '" TURN_SERVER_VERSION_NAME "'" From e6365fdb0a85713b55a6607b17e86597bf4f458f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?M=C3=A9sz=C3=A1ros=20Mih=C3=A1ly?= Date: Thu, 30 Apr 2020 20:45:54 +0200 Subject: [PATCH 09/20] Fix changelog --- ChangeLog | 3 --- 1 file changed, 3 deletions(-) diff --git a/ChangeLog b/ChangeLog index 11153795..0acbf2a4 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,6 +1,3 @@ -30/04/2020 Oleg Moskalenko Mihály Mészáros -Version 4.5.2.0 'dan Eider': - 30/04/2020 Oleg Moskalenko Mihály Mészáros Version 4.5.1.2 'dan Eider': - merge regression fix: (by Mathieu Brunot) From 113f13855a53aeb41ca5b71aa36b3f945cee2052 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?M=C3=A9sz=C3=A1ros=20Mih=C3=A1ly?= Date: Mon, 18 May 2020 08:24:40 +0200 Subject: [PATCH 10/20] Fix missing DH2066 default update in config --- examples/etc/turnserver.conf | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/examples/etc/turnserver.conf b/examples/etc/turnserver.conf index 10e98acc..20c5183d 100644 --- a/examples/etc/turnserver.conf +++ b/examples/etc/turnserver.conf @@ -479,13 +479,13 @@ # #ec-curve-name=prime256v1 -# Use 566 bits predefined DH TLS key. Default size of the key is 1066. +# Use 566 bits predefined DH TLS key. Default size of the key is 2066. # #dh566 -# Use 2066 bits predefined DH TLS key. Default size of the key is 1066. +# Use 1066 bits predefined DH TLS key. Default size of the key is 2066. # -#dh2066 +#dh1066 # Use custom DH TLS key, stored in PEM format in the file. # Flags --dh566 and --dh2066 are ignored when the DH key is taken from a file. From 1a4b4cc63ac0b919da1470b07874b982a63d9fcb Mon Sep 17 00:00:00 2001 From: bpcurse <29312856+bpcurse@users.noreply.github.com> Date: Fri, 29 May 2020 15:24:21 +0200 Subject: [PATCH 11/20] Remove reference to SSLv3 Judging from the information provided here https://github.com/coturn/coturn/issues/220#issuecomment-371916988, SSL isn't supported anymore so the reference should be removed from the config file. --- examples/etc/turnserver.conf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/examples/etc/turnserver.conf b/examples/etc/turnserver.conf index 20c5183d..080a3696 100644 --- a/examples/etc/turnserver.conf +++ b/examples/etc/turnserver.conf @@ -23,7 +23,7 @@ # "automatically" recognizes the type of traffic. Actually, two listening # endpoints (the "plain" one and the "tls" one) are equivalent in terms of # functionality; but Coturn keeps both endpoints to satisfy the RFC 5766 specs. -# For secure TCP connections, Coturn currently supports SSL version 3 and +# For secure TCP connections, Coturn currently supports # TLS version 1.0, 1.1 and 1.2. # For secure UDP connections, Coturn supports DTLS version 1. # From e5129dcc1abd6e02fdfc66e476ee3a0592796f1a Mon Sep 17 00:00:00 2001 From: JooYoung Date: Tue, 9 Jun 2020 17:24:17 +0900 Subject: [PATCH 12/20] Docker turnserver.conf edit (--allow-loopback-peers option) --- docker/coturn/turnserver.conf | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/docker/coturn/turnserver.conf b/docker/coturn/turnserver.conf index ccc27505..68de6497 100644 --- a/docker/coturn/turnserver.conf +++ b/docker/coturn/turnserver.conf @@ -594,10 +594,17 @@ syslog # The default value is ':'. # rest-api-separator=: -# Flag that can be used to disallow peers on the loopback addresses (127.x.x.x and ::1). +# Flag that can be used to allow peers on the loopback addresses (127.x.x.x and ::1). # This is an extra security measure. # -no-loopback-peers +# (To avoid any security issue that allowing loopback access may raise, +# the no-loopback-peers option is replaced by allow-loopback-peers.) +# +# Allow it only for testing in a development environment! +# In production it adds a possible security vulnerability, so for security reasons +# it is not allowed using it together with empty cli-password. +# +#allow-loopback-peers # Flag that can be used to disallow peers on well-known broadcast addresses (224.0.0.0 and above, and FFXX:*). # This is an extra security measure. From 635e72f1ec5a089317cf0db4014bc0b4b330ee0f Mon Sep 17 00:00:00 2001 From: JooYoung Date: Tue, 9 Jun 2020 17:44:06 +0900 Subject: [PATCH 13/20] Change Docker turnserver.conf to newer turnserver.conf --- docker/coturn/turnserver.conf | 348 +++++++++++++++++----------------- 1 file changed, 179 insertions(+), 169 deletions(-) diff --git a/docker/coturn/turnserver.conf b/docker/coturn/turnserver.conf index 68de6497..00ce8abd 100644 --- a/docker/coturn/turnserver.conf +++ b/docker/coturn/turnserver.conf @@ -1,52 +1,60 @@ # Coturn TURN SERVER configuration file # -# Boolean values note: where boolean value is supposed to be used, -# you can use '0', 'off', 'no', 'false', 'f' as 'false, -# and you can use '1', 'on', 'yes', 'true', 't' as 'true' -# If the value is missed, then it means 'true'. +# Boolean values note: where a boolean value is supposed to be used, +# you can use '0', 'off', 'no', 'false', or 'f' as 'false, +# and you can use '1', 'on', 'yes', 'true', or 't' as 'true' +# If the value is missing, then it means 'true' by default. # # Listener interface device (optional, Linux only). -# NOT RECOMMENDED. +# NOT RECOMMENDED. # #listening-device=eth0 # TURN listener port for UDP and TCP (Default: 3478). -# Note: actually, TLS & DTLS sessions can connect to the +# Note: actually, TLS & DTLS sessions can connect to the # "plain" TCP & UDP port(s), too - if allowed by configuration. # listening-port=3478 # TURN listener port for TLS (Default: 5349). # Note: actually, "plain" TCP & UDP sessions can connect to the TLS & DTLS -# port(s), too - if allowed by configuration. The TURN server +# port(s), too - if allowed by configuration. The TURN server # "automatically" recognizes the type of traffic. Actually, two listening # endpoints (the "plain" one and the "tls" one) are equivalent in terms of -# functionality; but we keep both endpoints to satisfy the RFC 5766 specs. -# For secure TCP connections, we currently support SSL version 3 and +# functionality; but Coturn keeps both endpoints to satisfy the RFC 5766 specs. +# For secure TCP connections, Coturn currently supports SSL version 3 and # TLS version 1.0, 1.1 and 1.2. -# For secure UDP connections, we support DTLS version 1. +# For secure UDP connections, Coturn supports DTLS version 1. # tls-listening-port=5349 # Alternative listening port for UDP and TCP listeners; -# default (or zero) value means "listening port plus one". +# default (or zero) value means "listening port plus one". # This is needed for RFC 5780 support -# (STUN extension specs, NAT behavior discovery). The TURN Server -# supports RFC 5780 only if it is started with more than one +# (STUN extension specs, NAT behavior discovery). The TURN Server +# supports RFC 5780 only if it is started with more than one # listening IP address of the same family (IPv4 or IPv6). # RFC 5780 is supported only by UDP protocol, other protocols # are listening to that endpoint only for "symmetry". # #alt-listening-port=0 - + # Alternative listening port for TLS and DTLS protocols. # Default (or zero) value means "TLS listening port plus one". # #alt-tls-listening-port=0 +# Some network setups will require using a TCP reverse proxy in front +# of the STUN server. If the proxy port option is set a single listener +# is started on the given port that accepts connections using the +# haproxy proxy protocol v2. +# (https://www.haproxy.org/download/1.8/doc/proxy-protocol.txt) +# +#tcp-proxy-port=5555 + # Listener IP address of relay server. Multiple listeners can be specified. -# If no IP(s) specified in the config file or in the command line options, +# If no IP(s) specified in the config file or in the command line options, # then all IPv4 and IPv6 system IPs will be used for listening. # #listening-ip=172.17.19.101 @@ -61,7 +69,7 @@ tls-listening-port=5349 # they do not support STUN RFC 5780 functionality (CHANGE REQUEST). # # 2) Auxiliary servers also are never returning ALTERNATIVE-SERVER reply. -# +# # Valid formats are 1.2.3.4:5555 for IPv4 and [1:2::3:4]:5555 for IPv6. # # There may be multiple aux-server options, each will be used for listening @@ -73,7 +81,7 @@ tls-listening-port=5349 # (recommended for older Linuxes only) # Automatically balance UDP traffic over auxiliary servers (if configured). # The load balancing is using the ALTERNATE-SERVER mechanism. -# The TURN client must support 300 ALTERNATE-SERVER response for this +# The TURN client must support 300 ALTERNATE-SERVER response for this # functionality. # #udp-self-balance @@ -83,13 +91,13 @@ tls-listening-port=5349 # #relay-device=eth1 -# Relay address (the local IP address that will be used to relay the +# Relay address (the local IP address that will be used to relay the # packets to the peer). # Multiple relay addresses may be used. # The same IP(s) can be used as both listening IP(s) and relay IP(s). # # If no relay IP(s) specified, then the turnserver will apply the default -# policy: it will decide itself which relay addresses to be used, and it +# policy: it will decide itself which relay addresses to be used, and it # will always be using the client socket IP address as the relay IP address # of the TURN session (if the requested relay address family is the same # as the family of the client socket). @@ -112,35 +120,33 @@ tls-listening-port=5349 # that option must be used several times, each entry must # have form "-X ", to map all involved addresses. # RFC5780 NAT discovery STUN functionality will work correctly, -# if the addresses are mapped properly, even when the TURN server itself +# if the addresses are mapped properly, even when the TURN server itself # is behind A NAT. # # By default, this value is empty, and no address mapping is used. # -#external-ip=60.70.80.91 +external-ip=193.224.22.37 # #OR: # #external-ip=60.70.80.91/172.17.19.101 #external-ip=60.70.80.92/172.17.19.102 -#external-ip=60.70.80.92/172.17.19.102 -external-ip=193.224.22.37 # Number of the relay threads to handle the established connections # (in addition to authentication thread and the listener thread). -# If explicitly set to 0 then application runs relay process in a -# single thread, in the same thread with the listener process +# If explicitly set to 0 then application runs relay process in a +# single thread, in the same thread with the listener process # (the authentication thread will still be a separate thread). # -# If this parameter is not set, then the default OS-dependent +# If this parameter is not set, then the default OS-dependent # thread pattern algorithm will be employed. Usually the default -# algorithm is the most optimal, so you have to change this option -# only if you want to make some fine tweaks. +# algorithm is optimal, so you have to change this option +# if you want to make some fine tweaks. # # In the older systems (Linux kernel before 3.9), # the number of UDP threads is always one thread per network listening -# endpoint - including the auxiliary endpoints - unless 0 (zero) or +# endpoint - including the auxiliary endpoints - unless 0 (zero) or # 1 (one) value is set. # #relay-threads=0 @@ -150,15 +156,15 @@ external-ip=193.224.22.37 # min-port=49152 max-port=65535 - + # Uncomment to run TURN server in 'normal' 'moderate' verbose mode. # By default the verbose mode is off. verbose - + # Uncomment to run TURN server in 'extra' verbose mode. # This mode is very annoying and produces lots of output. -# Not recommended under any normal circumstances. -# +# Not recommended under normal circumstances. +# #Verbose # Uncomment to use fingerprints in the TURN messages. @@ -171,11 +177,11 @@ fingerprint # lt-cred-mech -# This option is opposite to lt-cred-mech. +# This option is the opposite of lt-cred-mech. # (TURN Server with no-auth option allows anonymous access). # If neither option is defined, and no users are defined, -# then no-auth is default. If at least one user is defined, -# in this file or in command line or in usersdb file, then +# then no-auth is default. If at least one user is defined, +# in this file, in command line or in usersdb file, then # lt-cred-mech is default. # #no-auth @@ -185,44 +191,43 @@ lt-cred-mech # Flag that sets a special authorization option that is based upon authentication secret. # # This feature's purpose is to support "TURN Server REST API", see -# "TURN REST API" link in the project's page +# "TURN REST API" link in the project's page # https://github.com/coturn/coturn/ # # This option is used with timestamp: -# +# # usercombo -> "timestamp:userid" # turn user -> usercombo # turn password -> base64(hmac(secret key, usercombo)) # # This allows TURN credentials to be accounted for a specific user id. -# If you don't have a suitable id, the timestamp alone can be used. -# This option is just turning on secret-based authentication. -# The actual value of the secret is defined either by option static-auth-secret, +# If you don't have a suitable id, then the timestamp alone can be used. +# This option is enabled by turning on secret-based authentication. +# The actual value of the secret is defined either by the option static-auth-secret, # or can be found in the turn_secret table in the database (see below). -# +# # Read more about it: # - https://tools.ietf.org/html/draft-uberti-behave-turn-rest-00 # - https://www.ietf.org/proceedings/87/slides/slides-87-behave-10.pdf # -# Be aware that use-auth-secret overrides some part of lt-cred-mech. -# Notice that this feature depends internally on lt-cred-mech, so if you set -# use-auth-secret then it enables internally automatically lt-cred-mech option -# like if you enable both. +# Be aware that use-auth-secret overrides some parts of lt-cred-mech. +# The use-auth-secret feature depends internally on lt-cred-mech, so if you set +# this option then it automatically enables lt-cred-mech internally +# as if you had enabled both. # -# You can use only one of the to auth mechanisms in the same time because, -# both mechanism use the username and password validation in different way. -# -# This way be aware that you can't use both auth mechnaism in the same time! -# Use in config either the lt-cred-mech or the use-auth-secret +# Note that you can use only one auth mechanism at the same time! This is because, +# both mechanisms conduct username and password validation in different ways. +# +# Use either lt-cred-mech or use-auth-secret in the conf # to avoid any confusion. # #use-auth-secret -# 'Static' authentication secret value (a string) for TURN REST API only. +# 'Static' authentication secret value (a string) for TURN REST API only. # If not set, then the turn server -# will try to use the 'dynamic' value in turn_secret table -# in user database (if present). The database-stored value can be changed on-the-fly -# by a separate program, so this is why that other mode is 'dynamic'. +# will try to use the 'dynamic' value in the turn_secret table +# in the user database (if present). The database-stored value can be changed on-the-fly +# by a separate program, so this is why that mode is considered 'dynamic'. # #static-auth-secret=north @@ -236,10 +241,10 @@ lt-cred-mech # #oauth -# 'Static' user accounts for long term credentials mechanism, only. +# 'Static' user accounts for the long term credentials mechanism, only. # This option cannot be used with TURN REST API. -# 'Static' user accounts are NOT dynamically checked by the turnserver process, -# so that they can NOT be changed while the turnserver is running. +# 'Static' user accounts are NOT dynamically checked by the turnserver process, +# so they can NOT be changed while the turnserver is running. # #user=username1:key1 #user=username2:key2 @@ -257,7 +262,7 @@ lt-cred-mech # password. If it has 0x then it is a key, otherwise it is a password). # # The corresponding user account entry in the config file will be: -# +# #user=ninefingers:0xbc807ee29df3c9ffa736523fb2c4e8ee # Or, equivalently, with open clear password (less secure): #user=ninefingers:youhavetoberealistic @@ -265,95 +270,83 @@ lt-cred-mech # SQLite database file name. # -# Default file name is /var/db/turndb or /usr/local/var/db/turndb or +# The default file name is /var/db/turndb or /usr/local/var/db/turndb or # /var/lib/turn/turndb. -# +# #userdb=/var/db/turndb -# PostgreSQL database connection string in the case that we are using PostgreSQL +# PostgreSQL database connection string in the case that you are using PostgreSQL # as the user database. -# This database can be used for long-term credential mechanism -# and it can store the secret value for secret-based timed authentication in TURN REST API. +# This database can be used for the long-term credential mechanism +# and it can store the secret value for secret-based timed authentication in TURN REST API. # See http://www.postgresql.org/docs/8.4/static/libpq-connect.html for 8.x PostgreSQL -# versions connection string format, see +# versions connection string format, see # http://www.postgresql.org/docs/9.2/static/libpq-connect.html#LIBPQ-CONNSTRING # for 9.x and newer connection string formats. # #psql-userdb="host= dbname= user= password= connect_timeout=30" -#psql-userdb="host=postgresql dbname=coturn user=coturn password=CHANGE_ME connect_timeout=30" - -# MySQL database connection string in the case that we are using MySQL +# MySQL database connection string in the case that you are using MySQL # as the user database. -# This database can be used for long-term credential mechanism +# This database can be used for the long-term credential mechanism # and it can store the secret value for secret-based timed authentication in TURN REST API. # -# Optional connection string parameters for the secure communications (SSL): -# ca, capath, cert, key, cipher -# (see http://dev.mysql.com/doc/refman/5.1/en/ssl-options.html for the +# Optional connection string parameters for the secure communications (SSL): +# ca, capath, cert, key, cipher +# (see http://dev.mysql.com/doc/refman/5.1/en/ssl-options.html for the # command options description). # -# Use string format as below (space separated parameters, all optional): +# Use the string format below (space separated parameters, all optional): # -#mysql-userdb="host= dbname= user= password= port= connect_timeout= read_timeout=" - mysql-userdb="host=mysql dbname=coturn user=coturn password=CHANGE_ME port=3306 connect_timeout=10 read_timeout=10" -# If you want to use in the MySQL connection string the password in encrypted format, -# then set in this option the MySQL password encryption secret key file. +# If you want to use an encrypted password in the MySQL connection string, +# then set the MySQL password encryption secret key file with this option. # -# Warning: If this option is set, then mysql password must be set in "mysql-userdb" in encrypted format! -# If you want to use cleartext password then do not set this option! +# Warning: If this option is set, then the mysql password must be set in "mysql-userdb" in an encrypted format! +# If you want to use a cleartext password then do not set this option! # -# This is the file path which contain secret key of aes encryption while using password encryption. +# This is the file path for the aes encrypted secret key used for password encryption. # #secret-key-file=/path/ -# MongoDB database connection string in the case that we are using MongoDB +# MongoDB database connection string in the case that you are using MongoDB # as the user database. # This database can be used for long-term credential mechanism -# and it can store the secret value for secret-based timed authentication in TURN REST API. -# Use string format is described at http://hergert.me/docs/mongo-c-driver/mongoc_uri.html +# and it can store the secret value for secret-based timed authentication in TURN REST API. +# Use the string format described at http://hergert.me/docs/mongo-c-driver/mongoc_uri.html # #mongo-userdb="mongodb://[username:password@]host1[:port1][,host2[:port2],...[,hostN[:portN]]][/[database][?options]]" -#mongo-userdb="mongodb://coturn:CHANGE_ME@mongodb/coturn" -#mongo-userdb="mongodb://mongodb/coturn" - -# Redis database connection string in the case that we are using Redis +# Redis database connection string in the case that you are using Redis # as the user database. # This database can be used for long-term credential mechanism -# and it can store the secret value for secret-based timed authentication in TURN REST API. -# Use string format as below (space separated parameters, all optional): +# and it can store the secret value for secret-based timed authentication in TURN REST API. +# Use the string format below (space separated parameters, all optional): # #redis-userdb="ip= dbname= password= port= connect_timeout=" -#redis-userdb="ip=redis dbname=2 password=CHANGE_ME connect_timeout=30" - # Redis status and statistics database connection string, if used (default - empty, no Redis stats DB used). # This database keeps allocations status information, and it can be also used for publishing # and delivering traffic and allocation event notifications. -# The connection string has the same parameters as redis-userdb connection string. -# Use string format as below (space separated parameters, all optional): +# The connection string has the same parameters as redis-userdb connection string. +# Use the string format below (space separated parameters, all optional): # #redis-statsdb="ip= dbname= password= port= connect_timeout=" -#redis-statsdb="ip=redis dbname=2 password=CHANGE_ME connect_timeout=30" - -# The default realm to be used for the users when no explicit -# origin/realm relationship was found in the database, or if the TURN +# The default realm to be used for the users when no explicit +# origin/realm relationship is found in the database, or if the TURN # server is not using any database (just the commands-line settings -# and the userdb file). Must be used with long-term credentials +# and the userdb file). Must be used with long-term credentials # mechanism or with TURN REST API. # -# Note: If default realm is not specified at all, then realm falls back to the host domain name. -# If domain name is empty string, or '(None)', then it is initialized to am empty string. +# Note: If the default realm is not specified, then realm falls back to the host domain name. +# If the domain name string is empty, or set to '(None)', then it is initialized as an empty string. # -#realm=mycompany.org realm=example.org -# The flag that sets the origin consistency -# check: across the session, all requests must have the same +# This flag sets the origin consistency +# check. Across the session, all requests must have the same # main ORIGIN attribute value (if the ORIGIN was # initially used by the session). # @@ -373,7 +366,7 @@ realm=example.org # Max bytes-per-second bandwidth a TURN session is allowed to handle # (input and output network streams are treated separately). Anything above -# that limit will be dropped or temporary suppressed (within +# that limit will be dropped or temporarily suppressed (within # the available buffer limits). # This option can also be set through the database, for a particular realm. # @@ -417,11 +410,11 @@ realm=example.org #no-tcp-relay # Uncomment if extra security is desired, -# with nonce value having limited lifetime. +# with nonce value having a limited lifetime. # By default, the nonce value is unique for a session, -# and has unlimited lifetime. -# Set this option to limit the nonce lifetime. -# It defaults to 600 secs (10 min) if no value is provided. After that delay, +# and has an unlimited lifetime. +# Set this option to limit the nonce lifetime. +# It defaults to 600 secs (10 min) if no value is provided. After that delay, # the client will get 438 error and will have to re-authenticate itself. # #stale-nonce=600 @@ -447,18 +440,17 @@ realm=example.org #permission-lifetime=300 # Certificate file. -# Use an absolute path or path relative to the -# configuration file. -# -#cert=/usr/local/etc/turn_server_cert.pem -cert=/etc/ssl/certs/cert.pem - -# Private key file. -# Use an absolute path or path relative to the +# Use an absolute path or path relative to the +# configuration file. +# Use PEM file format. +# +cert=/etc/ssl/certs/cert.pem + +# Private key file. +# Use an absolute path or path relative to the # configuration file. # Use PEM file format. # -#pkey=/usr/local/etc/turn_server_pkey.pem pkey=/etc/ssl/private/privkey.pem # Private key file password, if it is in encoded format. @@ -471,29 +463,29 @@ pkey=/etc/ssl/private/privkey.pem # #cipher-list="DEFAULT" -# CA file in OpenSSL format. +# CA file in OpenSSL format. # Forces TURN server to verify the client SSL certificates. -# By default it is not set: there is no default value and the client +# By default this is not set: there is no default value and the client # certificate is not checked. # # Example: #CA-file=/etc/ssh/id_rsa.cert -# Curve name for EC ciphers, if supported by OpenSSL -# library (TLS and DTLS). The default value is prime256v1, +# Curve name for EC ciphers, if supported by OpenSSL +# library (TLS and DTLS). The default value is prime256v1, # if pre-OpenSSL 1.0.2 is used. With OpenSSL 1.0.2+, # an optimal curve will be automatically calculated, if not defined # by this option. # #ec-curve-name=prime256v1 -# Use 566 bits predefined DH TLS key. Default size of the key is 1066. +# Use 566 bits predefined DH TLS key. Default size of the key is 2066. # #dh566 -# Use 2066 bits predefined DH TLS key. Default size of the key is 1066. +# Use 1066 bits predefined DH TLS key. Default size of the key is 2066. # -#dh2066 +#dh1066 # Use custom DH TLS key, stored in PEM format in the file. # Flags --dh566 and --dh2066 are ignored when the DH key is taken from a file. @@ -501,21 +493,21 @@ pkey=/etc/ssl/private/privkey.pem #dh-file= # Flag to prevent stdout log messages. -# By default, all log messages are going to both stdout and to -# the configured log file. With this option everything will be -# going to the configured log only (unless the log file itself is stdout). +# By default, all log messages go to both stdout and to +# the configured log file. With this option everything will +# go to the configured log only (unless the log file itself is stdout). # #no-stdout-log # Option to set the log file name. -# By default, the turnserver tries to open a log file in -# /var/log, /var/tmp, /tmp and current directories directories -# (which open operation succeeds first that file will be used). +# By default, the turnserver tries to open a log file in +# /var/log, /var/tmp, /tmp and the current directory +# (Whichever file open operation succeeds first will be used). # With this option you can set the definite log file name. -# The special names are "stdout" and "-" - they will force everything +# The special names are "stdout" and "-" - they will force everything # to the stdout. Also, the "syslog" name will force everything to -# the system log (syslog). -# In the runtime, the logfile can be reset with the SIGHUP signal +# the system log (syslog). +# In the runtime, the logfile can be reset with the SIGHUP signal # to the turnserver process. # #log-file=/var/tmp/turn.log @@ -531,40 +523,40 @@ syslog #simple-log # Option to set the "redirection" mode. The value of this option -# will be the address of the alternate server for UDP & TCP service in form of +# will be the address of the alternate server for UDP & TCP service in the form of # [:]. The server will send this value in the attribute # ALTERNATE-SERVER, with error 300, on ALLOCATE request, to the client. # Client will receive only values with the same address family -# as the client network endpoint address family. -# See RFC 5389 and RFC 5766 for ALTERNATE-SERVER functionality description. +# as the client network endpoint address family. +# See RFC 5389 and RFC 5766 for the description of ALTERNATE-SERVER functionality. # The client must use the obtained value for subsequent TURN communications. -# If more than one --alternate-server options are provided, then the functionality -# can be more accurately described as "load-balancing" than a mere "redirection". -# If the port number is omitted, then the default port +# If more than one --alternate-server option is provided, then the functionality +# can be more accurately described as "load-balancing" than a mere "redirection". +# If the port number is omitted, then the default port # number 3478 for the UDP/TCP protocols will be used. -# Colon (:) characters in IPv6 addresses may conflict with the syntax of -# the option. To alleviate this conflict, literal IPv6 addresses are enclosed -# in square brackets in such resource identifiers, for example: -# [2001:db8:85a3:8d3:1319:8a2e:370:7348]:3478 . +# Colon (:) characters in IPv6 addresses may conflict with the syntax of +# the option. To alleviate this conflict, literal IPv6 addresses are enclosed +# in square brackets in such resource identifiers, for example: +# [2001:db8:85a3:8d3:1319:8a2e:370:7348]:3478 . # Multiple alternate servers can be set. They will be used in the -# round-robin manner. All servers in the pool are considered of equal weight and -# the load will be distributed equally. For example, if we have 4 alternate servers, -# then each server will receive 25% of ALLOCATE requests. A alternate TURN server -# address can be used more than one time with the alternate-server option, so this +# round-robin manner. All servers in the pool are considered of equal weight and +# the load will be distributed equally. For example, if you have 4 alternate servers, +# then each server will receive 25% of ALLOCATE requests. A alternate TURN server +# address can be used more than one time with the alternate-server option, so this # can emulate "weighting" of the servers. # -# Examples: +# Examples: #alternate-server=1.2.3.4:5678 #alternate-server=11.22.33.44:56789 #alternate-server=5.6.7.8 #alternate-server=[2001:db8:85a3:8d3:1319:8a2e:370:7348]:3478 - -# Option to set alternative server for TLS & DTLS services in form of -# :. If the port number is omitted, then the default port -# number 5349 for the TLS/DTLS protocols will be used. See the previous + +# Option to set alternative server for TLS & DTLS services in form of +# :. If the port number is omitted, then the default port +# number 5349 for the TLS/DTLS protocols will be used. See the previous # option for the functionality description. # -# Examples: +# Examples: #tls-alternate-server=1.2.3.4:5678 #tls-alternate-server=11.22.33.44:56789 #tls-alternate-server=[2001:db8:85a3:8d3:1319:8a2e:370:7348]:3478 @@ -592,7 +584,7 @@ syslog # This is the timestamp/username separator symbol (character) in TURN REST API. # The default value is ':'. -# rest-api-separator=: +# rest-api-separator=: # Flag that can be used to allow peers on the loopback addresses (127.x.x.x and ::1). # This is an extra security measure. @@ -611,18 +603,18 @@ syslog # #no-multicast-peers -# Option to set the max time, in seconds, allowed for full allocation establishment. +# Option to set the max time, in seconds, allowed for full allocation establishment. # Default is 60 seconds. # #max-allocate-timeout=60 -# Option to allow or ban specific ip addresses or ranges of ip addresses. -# If an ip address is specified as both allowed and denied, then the ip address is -# considered to be allowed. This is useful when you wish to ban a range of ip +# Option to allow or ban specific ip addresses or ranges of ip addresses. +# If an ip address is specified as both allowed and denied, then the ip address is +# considered to be allowed. This is useful when you wish to ban a range of ip # addresses, except for a few specific ips within that range. # # This can be used when you do not want users of the turn server to be able to access -# machines reachable by the turn server, but would otherwise be unreachable from the +# machines reachable by the turn server, but would otherwise be unreachable from the # internet (e.g. when the turn server is sitting behind a NAT) # # Examples: @@ -644,8 +636,8 @@ syslog # #mobility -# Allocate Address Family according -# If enabled then TURN server allocates address family according the TURN +# Allocate Address Family according +# If enabled then TURN server allocates address family according the TURN # Client <=> Server communication address family. # (By default Coturn works according RFC 6156.) # !!Warning: Enabling this option breaks RFC6156 section-4.2 (violates use default IPv4)!! @@ -654,12 +646,12 @@ syslog # User name to run the process. After the initialization, the turnserver process -# will make an attempt to change the current user ID to that user. +# will attempt to change the current user ID to that user. # #proc-user= # Group name to run the process. After the initialization, the turnserver process -# will make an attempt to change the current group ID to that group. +# will attempt to change the current group ID to that group. # #proc-group= @@ -679,8 +671,8 @@ cli-ip=127.0.0.1 cli-port=5766 # CLI access password. Default is empty (no password). -# For the security reasons, it is recommended to use the encrypted -# for of the password (see the -P command in the turnadmin utility). +# For the security reasons, it is recommended that you use the encrypted +# form of the password (see the -P command in the turnadmin utility). # # Secure form for password 'qwerty': # @@ -688,13 +680,31 @@ cli-port=5766 # # Or unsecure form for the same password: # -#cli-password=qwerty cli-password=CHANGE_ME -# Server relay. NON-STANDARD AND DANGEROUS OPTION. -# Only for those applications when we want to run +# Enable Web-admin support on https. By default it is Disabled. +# If it is enabled it also enables a http a simple static banner page +# with a small reminder that the admin page is available only on https. +# +#web-admin + +# Local system IP address to be used for Web-admin server endpoint. Default value is 127.0.0.1. +# +#web-admin-ip=127.0.0.1 + +# Web-admin server port. Default is 8080. +# +#web-admin-port=8080 + +# Web-admin server listen on STUN/TURN worker threads +# By default it is disabled for security resons! (Not recommended in any production environment!) +# +#web-admin-listen-on-workers + +# Server relay. NON-STANDARD AND DANGEROUS OPTION. +# Only for those applications when you want to run # server applications on the relay endpoints. -# This option eliminates the IP permissions check on +# This option eliminates the IP permissions check on # the packets incoming to the relay endpoints. # #server-relay From b2dc7240df71c995c07e1c1c392e91fbe33257f4 Mon Sep 17 00:00:00 2001 From: Ilya Kisleyko Date: Tue, 9 Jun 2020 18:25:15 +0000 Subject: [PATCH 14/20] fix for #556 --- rpm/turnserver.spec | 2 ++ 1 file changed, 2 insertions(+) diff --git a/rpm/turnserver.spec b/rpm/turnserver.spec index 7720ca40..cfa8d5a8 100644 --- a/rpm/turnserver.spec +++ b/rpm/turnserver.spec @@ -197,6 +197,8 @@ fi %{_datadir}/%{name}/testmongosetup.sh %{_datadir}/%{name}/testsqldbsetup.sql %dir %{_datadir}/%{name}/etc +%{_datadir}/%{name}/etc/cacert.pem +%{_datadir}/%{name}/etc/coturn.service %{_datadir}/%{name}/etc/turn_server_cert.pem %{_datadir}/%{name}/etc/turn_server_pkey.pem %{_datadir}/%{name}/etc/turnserver.conf From b9d2fd00e62eefe9245318aead822ecc5351300f Mon Sep 17 00:00:00 2001 From: Ilya Kisleyko Date: Tue, 9 Jun 2020 18:28:08 +0000 Subject: [PATCH 15/20] build RPM from local folder instead of git repo --- rpm/build.settings.sh | 1 - rpm/build.sh | 14 ++++---------- 2 files changed, 4 insertions(+), 11 deletions(-) diff --git a/rpm/build.settings.sh b/rpm/build.settings.sh index e7684fa0..cfcbd700 100755 --- a/rpm/build.settings.sh +++ b/rpm/build.settings.sh @@ -5,7 +5,6 @@ TURNVERSION=4.5.1.2 BUILDDIR=~/rpmbuild ARCH=`uname -p` -TURNSERVER_GIT_URL=https://github.com/coturn/coturn.git WGETOPTIONS="--no-check-certificate" RPMOPTIONS="-ivh --force" diff --git a/rpm/build.sh b/rpm/build.sh index 33a78575..a7ad3f6d 100755 --- a/rpm/build.sh +++ b/rpm/build.sh @@ -18,18 +18,11 @@ fi # TURN +#create archive from local folder cd ${BUILDDIR}/tmp rm -rf turnserver-${TURNVERSION} -git clone ${TURNSERVER_GIT_URL} --branch ${TURNVERSION} turnserver-${TURNVERSION} -ER=$? -if ! [ ${ER} -eq 0 ] ; then - git clone ${TURNSERVER_GIT_URL} turnserver-${TURNVERSION} - ER=$? - if ! [ ${ER} -eq 0 ] ; then - cd ${CPWD} - exit -1 - fi -fi +mkdir -p ${BUILDDIR}/tmp/turnserver-${TURNVERSION} +cp -R ${CPWD}/.. ${BUILDDIR}/tmp/turnserver-${TURNVERSION} tar zcf ${BUILDDIR}/SOURCES/turnserver-${TURNVERSION}.tar.gz turnserver-${TURNVERSION} ER=$? @@ -38,6 +31,7 @@ if ! [ ${ER} -eq 0 ] ; then exit -1 fi +#build package from archive rpmbuild -ta ${BUILDDIR}/SOURCES/turnserver-${TURNVERSION}.tar.gz ER=$? if ! [ ${ER} -eq 0 ] ; then From 283d7c574970e72cc510b94406ba410029242285 Mon Sep 17 00:00:00 2001 From: Ilya Kisleyko Date: Tue, 9 Jun 2020 18:30:30 +0000 Subject: [PATCH 16/20] tell tar to not include the metadata into release --- examples/scripts/pack.sh | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/examples/scripts/pack.sh b/examples/scripts/pack.sh index 8b9032c7..e99d8bef 100755 --- a/examples/scripts/pack.sh +++ b/examples/scripts/pack.sh @@ -16,7 +16,8 @@ mkdir tmp cd tmp mkdir ${DDIR} cp -R ${SRCDIR}/* ${DDIR}/ -tar cvfz ../${DDIR}.tar.gz ${DDIR} +#tell tar to not include the metadata +COPYFILE_DISABLE=1 tar cvfz ../${DDIR}.tar.gz ${DDIR} cd .. rm -rf tmp From a43d3b63b46e9c36a132f4854fa5225097284152 Mon Sep 17 00:00:00 2001 From: islamoglus Date: Thu, 11 Jun 2020 07:40:00 +0300 Subject: [PATCH 17/20] ignore md5 for boringssl --- src/client/ns_turn_msg.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/client/ns_turn_msg.c b/src/client/ns_turn_msg.c index 2a4008dd..e9386eb0 100644 --- a/src/client/ns_turn_msg.c +++ b/src/client/ns_turn_msg.c @@ -244,9 +244,11 @@ int stun_produce_integrity_key_str(const uint8_t *uname, const uint8_t *realm, c unsigned int keylen = 0; EVP_MD_CTX ctx; EVP_MD_CTX_init(&ctx); +#ifdef EVP_MD_CTX_FLAG_NON_FIPS_ALLOW if (FIPS_mode()) { EVP_MD_CTX_set_flags(&ctx,EVP_MD_CTX_FLAG_NON_FIPS_ALLOW); } +#endif EVP_DigestInit_ex(&ctx,EVP_md5(), NULL); EVP_DigestUpdate(&ctx,str,strl); EVP_DigestFinal(&ctx,key,&keylen); @@ -254,9 +256,11 @@ int stun_produce_integrity_key_str(const uint8_t *uname, const uint8_t *realm, c #else unsigned int keylen = 0; EVP_MD_CTX *ctx = EVP_MD_CTX_new(); +#ifdef EVP_MD_CTX_FLAG_NON_FIPS_ALLOW if (FIPS_mode()) { EVP_MD_CTX_set_flags(ctx, EVP_MD_CTX_FLAG_NON_FIPS_ALLOW); } +#endif EVP_DigestInit_ex(ctx,EVP_md5(), NULL); EVP_DigestUpdate(ctx,str,strl); EVP_DigestFinal(ctx,key,&keylen); From f01ee958b778e5640809680496b76c3c5f40d9af Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?M=C3=A9sz=C3=A1ros=20Mih=C3=A1ly?= Date: Wed, 24 Jun 2020 12:35:24 +0200 Subject: [PATCH 18/20] Update ChangeLog --- ChangeLog | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/ChangeLog b/ChangeLog index 0acbf2a4..2a2184e2 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,16 @@ +26/04/2020 Oleg Moskalenko Mihály Mészáros +Version 4.5.1.3 'dan Eider': + - merge PR #575: (by osterik) + * fix rpm packaging + - merge PR #576: (by osterik) + * tell tar to not include the metadata into release + - merge PR #574: (by DevRockstarZ) + * change Docker turnserver.conf to latest turnserver.conf + - merge PR #566: (by bpcurse) + * Remove reference to SSLv3 + - merge PR #579: (by islamoglus) + *Ignore MD5 for BoringSSL #579 + 30/04/2020 Oleg Moskalenko Mihály Mészáros Version 4.5.1.2 'dan Eider': - merge regression fix: (by Mathieu Brunot) From 61cb7537d0ebac9c19929b9a2d8000785dd52eeb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?M=C3=A9sz=C3=A1ros=20Mih=C3=A1ly?= Date: Wed, 24 Jun 2020 12:40:56 +0200 Subject: [PATCH 19/20] Add .vscode to gitignore --- .gitignore | 1 + 1 file changed, 1 insertion(+) diff --git a/.gitignore b/.gitignore index 9a74f5b0..a343b33f 100644 --- a/.gitignore +++ b/.gitignore @@ -5,3 +5,4 @@ include lib sqlite examples/ca/CA.pl +.vscode \ No newline at end of file From dbb384d19483d2c42ce317fc99487ffd25c718c7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?M=C3=A9sz=C3=A1ros=20Mih=C3=A1ly?= Date: Wed, 24 Jun 2020 16:00:42 +0200 Subject: [PATCH 20/20] Update ChangeLog PR#577 --- ChangeLog | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/ChangeLog b/ChangeLog index 2a2184e2..8b874c4d 100644 --- a/ChangeLog +++ b/ChangeLog @@ -9,7 +9,9 @@ Version 4.5.1.3 'dan Eider': - merge PR #566: (by bpcurse) * Remove reference to SSLv3 - merge PR #579: (by islamoglus) - *Ignore MD5 for BoringSSL #579 + *Ignore MD5 for BoringSSL + - merge PR #577: (by osterik) + *build RPM from local folder instead of git repo 30/04/2020 Oleg Moskalenko Mihály Mészáros Version 4.5.1.2 'dan Eider':