1
0
mirror of https://github.com/coturn/coturn.git synced 2025-11-04 17:01:39 +01:00

Merge branch 'prometheus' of github.com:wolmi/coturn into prometheus

This commit is contained in:
Miquel Ortega 2020-07-28 10:51:38 +02:00
commit d8fca88286
20 changed files with 286 additions and 203 deletions

2
.gitignore vendored
View File

@ -4,5 +4,5 @@ build
include include
lib lib
sqlite sqlite
.vscode
examples/ca/CA.pl examples/ca/CA.pl
.vscode

View File

@ -1,4 +1,19 @@
02/03/2019 Oleg Moskalenko <mom040267@gmail.com> Mihály Mészáros <misi@majd.eu> 26/04/2020 Oleg Moskalenko <mom040267@gmail.com> Mihály Mészáros <misi@majd.eu>
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
- merge PR #577: (by osterik)
*build RPM from local folder instead of git repo
30/04/2020 Oleg Moskalenko <mom040267@gmail.com> Mihály Mészáros <misi@majd.eu>
Version 4.5.1.2 'dan Eider': Version 4.5.1.2 'dan Eider':
- merge regression fix: (by Mathieu Brunot) - merge regression fix: (by Mathieu Brunot)
* Do not display empty CLI passwd alert if CLI is not enabled * Do not display empty CLI passwd alert if CLI is not enabled
@ -57,7 +72,8 @@ Version 4.5.1.2 'dan Eider':
- merge PR#506 Rename "prod" config option to "no-software-attribute" (by dbrgn) - 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 #519 fix config extension in README.docker (by ooookai)
- merge PR #516 change sql data dir in docker-compose-all.yml (by raghumuppa) - 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 <mom040267@gmail.com> Mihály Mészáros <misi@majd.eu> 02/03/2019 Oleg Moskalenko <mom040267@gmail.com> Mihály Mészáros <misi@majd.eu>
Version 4.5.1.1 'dan Eider': Version 4.5.1.1 'dan Eider':

View File

@ -432,6 +432,12 @@ Options with values:
that other mode is dynamic. Multiple shared secrets can be used that other mode is dynamic. Multiple shared secrets can be used
(both in the database and in the "static" fashion). (both in the database and in the "static" fashion).
--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.
--no-dynamic-realms Do not use dynamic realm assignment and options.
--server-name Server name used for --server-name Server name used for
the oAuth authentication purposes. the oAuth authentication purposes.
The default value is the realm name. The default value is the realm name.

View File

@ -1,6 +1,6 @@
Before you begin Before you begin
* copy db schema run ./cp-schema.sh * 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 # start

View File

@ -1,9 +1,9 @@
# Coturn TURN SERVER configuration file # Coturn TURN SERVER configuration file
# #
# Boolean values note: where boolean value is supposed to be used, # Boolean values note: where a boolean value is supposed to be used,
# you can use '0', 'off', 'no', 'false', 'f' as 'false, # you can use '0', 'off', 'no', 'false', or 'f' as 'false,
# and you can use '1', 'on', 'yes', 'true', 't' as 'true' # and you can use '1', 'on', 'yes', 'true', or 't' as 'true'
# If the value is missed, then it means 'true'. # If the value is missing, then it means 'true' by default.
# #
# Listener interface device (optional, Linux only). # Listener interface device (optional, Linux only).
@ -22,10 +22,10 @@ listening-port=3478
# 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 # "automatically" recognizes the type of traffic. Actually, two listening
# endpoints (the "plain" one and the "tls" one) are equivalent in terms of # 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. # functionality; but Coturn keeps both endpoints to satisfy the RFC 5766 specs.
# For secure TCP connections, we currently support SSL version 3 and # For secure TCP connections, Coturn currently supports SSL version 3 and
# TLS version 1.0, 1.1 and 1.2. # 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 tls-listening-port=5349
@ -45,6 +45,14 @@ tls-listening-port=5349
# #
#alt-tls-listening-port=0 #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. # 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. # then all IPv4 and IPv6 system IPs will be used for listening.
@ -117,14 +125,12 @@ tls-listening-port=5349
# #
# By default, this value is empty, and no address mapping is used. # 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: #OR:
# #
#external-ip=60.70.80.91/172.17.19.101 #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=60.70.80.92/172.17.19.102
external-ip=193.224.22.37
# Number of the relay threads to handle the established connections # Number of the relay threads to handle the established connections
@ -135,8 +141,8 @@ external-ip=193.224.22.37
# #
# 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 # thread pattern algorithm will be employed. Usually the default
# algorithm is the most optimal, so you have to change this option # algorithm is optimal, so you have to change this option
# only if you want to make some fine tweaks. # if you want to make some fine tweaks.
# #
# In the older systems (Linux kernel before 3.9), # In the older systems (Linux kernel before 3.9),
# the number of UDP threads is always one thread per network listening # the number of UDP threads is always one thread per network listening
@ -157,7 +163,7 @@ verbose
# Uncomment to run TURN server in 'extra' verbose mode. # Uncomment to run TURN server in 'extra' verbose mode.
# This mode is very annoying and produces lots of output. # This mode is very annoying and produces lots of output.
# Not recommended under any normal circumstances. # Not recommended under normal circumstances.
# #
#Verbose #Verbose
@ -171,11 +177,11 @@ fingerprint
# #
lt-cred-mech 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). # (TURN Server with no-auth option allows anonymous access).
# If neither option is defined, and no users are defined, # If neither option is defined, and no users are defined,
# then no-auth is default. If at least one user is 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 # in this file, in command line or in usersdb file, then
# lt-cred-mech is default. # lt-cred-mech is default.
# #
#no-auth #no-auth
@ -195,34 +201,33 @@ lt-cred-mech
# turn password -> base64(hmac(secret key, usercombo)) # turn password -> base64(hmac(secret key, usercombo))
# #
# This allows TURN credentials to be accounted for a specific user id. # 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. # If you don't have a suitable id, then the timestamp alone can be used.
# This option is just turning on secret-based authentication. # This option is enabled by turning on secret-based authentication.
# The actual value of the secret is defined either by option static-auth-secret, # 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). # or can be found in the turn_secret table in the database (see below).
# #
# Read more about it: # Read more about it:
# - https://tools.ietf.org/html/draft-uberti-behave-turn-rest-00 # - https://tools.ietf.org/html/draft-uberti-behave-turn-rest-00
# - https://www.ietf.org/proceedings/87/slides/slides-87-behave-10.pdf # - 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. # Be aware that use-auth-secret overrides some parts of lt-cred-mech.
# Notice that this feature depends internally on lt-cred-mech, so if you set # The use-auth-secret feature depends internally on lt-cred-mech, so if you set
# use-auth-secret then it enables internally automatically lt-cred-mech option # this option then it automatically enables lt-cred-mech internally
# like if you enable both. # as if you had enabled both.
# #
# You can use only one of the to auth mechanisms in the same time because, # Note that you can use only one auth mechanism at the same time! This is because,
# both mechanism use the username and password validation in different way. # both mechanisms conduct username and password validation in different ways.
# #
# This way be aware that you can't use both auth mechnaism in the same time! # Use either lt-cred-mech or use-auth-secret in the conf
# Use in config either the lt-cred-mech or the use-auth-secret
# to avoid any confusion. # to avoid any confusion.
# #
#use-auth-secret #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 # If not set, then the turn server
# will try to use the 'dynamic' value in turn_secret table # will try to use the 'dynamic' value in the turn_secret table
# in user database (if present). The database-stored value can be changed on-the-fly # 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 other mode is 'dynamic'. # by a separate program, so this is why that mode is considered 'dynamic'.
# #
#static-auth-secret=north #static-auth-secret=north
@ -236,10 +241,10 @@ lt-cred-mech
# #
#oauth #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. # This option cannot be used with TURN REST API.
# 'Static' user accounts are NOT dynamically checked by the turnserver process, # 'Static' user accounts are NOT dynamically checked by the turnserver process,
# so that they can NOT be changed while the turnserver is running. # so they can NOT be changed while the turnserver is running.
# #
#user=username1:key1 #user=username1:key1
#user=username2:key2 #user=username2:key2
@ -265,14 +270,14 @@ lt-cred-mech
# SQLite database file name. # 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. # /var/lib/turn/turndb.
# #
#userdb=/var/db/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. # 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. # 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 # 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
@ -281,11 +286,9 @@ lt-cred-mech
# #
#psql-userdb="host=<host> dbname=<database-name> user=<database-user> password=<database-user-password> connect_timeout=30" #psql-userdb="host=<host> dbname=<database-name> user=<database-user> password=<database-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 you are using MySQL
# MySQL database connection string in the case that we are using MySQL
# as the user database. # 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. # 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): # Optional connection string parameters for the secure communications (SSL):
@ -293,67 +296,57 @@ lt-cred-mech
# (see http://dev.mysql.com/doc/refman/5.1/en/ssl-options.html for the # (see http://dev.mysql.com/doc/refman/5.1/en/ssl-options.html for the
# command options description). # 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=<host> dbname=<database-name> user=<database-user> password=<database-user-password> port=<port> connect_timeout=<seconds> read_timeout=<seconds>"
mysql-userdb="host=mysql dbname=coturn user=coturn password=CHANGE_ME port=3306 connect_timeout=10 read_timeout=10" 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, # If you want to use an encrypted password in the MySQL connection string,
# then set in this option the MySQL password encryption secret key file. # 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! # 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 cleartext password then do not set this option! # 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/ #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. # as the user database.
# This database can be used for long-term credential mechanism # 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. # 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 # 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://[username:password@]host1[:port1][,host2[:port2],...[,hostN[:portN]]][/[database][?options]]"
#mongo-userdb="mongodb://coturn:CHANGE_ME@mongodb/coturn" # Redis database connection string in the case that you are using Redis
#mongo-userdb="mongodb://mongodb/coturn"
# Redis database connection string in the case that we are using Redis
# as the user database. # as the user database.
# This database can be used for long-term credential mechanism # 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. # 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): # Use the string format below (space separated parameters, all optional):
# #
#redis-userdb="ip=<ip-address> dbname=<database-number> password=<database-user-password> port=<port> connect_timeout=<seconds>" #redis-userdb="ip=<ip-address> dbname=<database-number> password=<database-user-password> port=<port> connect_timeout=<seconds>"
#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). # 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 # This database keeps allocations status information, and it can be also used for publishing
# and delivering traffic and allocation event notifications. # and delivering traffic and allocation event notifications.
# The connection string has the same parameters as redis-userdb connection string. # The connection string has the same parameters as redis-userdb connection string.
# Use string format as below (space separated parameters, all optional): # Use the string format below (space separated parameters, all optional):
# #
#redis-statsdb="ip=<ip-address> dbname=<database-number> password=<database-user-password> port=<port> connect_timeout=<seconds>" #redis-statsdb="ip=<ip-address> dbname=<database-number> password=<database-user-password> port=<port> connect_timeout=<seconds>"
#redis-statsdb="ip=redis dbname=2 password=CHANGE_ME connect_timeout=30"
# The default realm to be used for the users when no explicit # The default realm to be used for the users when no explicit
# origin/realm relationship was found in the database, or if the TURN # origin/realm relationship is found in the database, or if the TURN
# server is not using any database (just the commands-line settings # 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. # mechanism or with TURN REST API.
# #
# Note: If default realm is not specified at all, then realm falls back to the host domain name. # Note: If the default realm is not specified, 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. # 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 realm=example.org
# The flag that sets the origin consistency # This flag sets the origin consistency
# check: across the session, all requests must have the same # check. Across the session, all requests must have the same
# main ORIGIN attribute value (if the ORIGIN was # main ORIGIN attribute value (if the ORIGIN was
# initially used by the session). # initially used by the session).
# #
@ -373,7 +366,7 @@ realm=example.org
# Max bytes-per-second bandwidth a TURN session is allowed to handle # Max bytes-per-second bandwidth a TURN session is allowed to handle
# (input and output network streams are treated separately). Anything above # (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). # the available buffer limits).
# This option can also be set through the database, for a particular realm. # This option can also be set through the database, for a particular realm.
# #
@ -417,9 +410,9 @@ realm=example.org
#no-tcp-relay #no-tcp-relay
# Uncomment if extra security is desired, # 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, # By default, the nonce value is unique for a session,
# and has unlimited lifetime. # and has an unlimited lifetime.
# Set this option to limit the nonce lifetime. # Set this option to limit the nonce lifetime.
# It defaults to 600 secs (10 min) if no value is provided. After that delay, # 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. # the client will get 438 error and will have to re-authenticate itself.
@ -449,8 +442,8 @@ realm=example.org
# Certificate file. # Certificate file.
# Use an absolute path or path relative to the # Use an absolute path or path relative to the
# configuration file. # configuration file.
# Use PEM file format.
# #
#cert=/usr/local/etc/turn_server_cert.pem
cert=/etc/ssl/certs/cert.pem cert=/etc/ssl/certs/cert.pem
# Private key file. # Private key file.
@ -458,7 +451,6 @@ cert=/etc/ssl/certs/cert.pem
# configuration file. # configuration file.
# Use PEM file format. # Use PEM file format.
# #
#pkey=/usr/local/etc/turn_server_pkey.pem
pkey=/etc/ssl/private/privkey.pem pkey=/etc/ssl/private/privkey.pem
# Private key file password, if it is in encoded format. # Private key file password, if it is in encoded format.
@ -473,7 +465,7 @@ pkey=/etc/ssl/private/privkey.pem
# CA file in OpenSSL format. # CA file in OpenSSL format.
# Forces TURN server to verify the client SSL certificates. # 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. # certificate is not checked.
# #
# Example: # Example:
@ -487,13 +479,13 @@ pkey=/etc/ssl/private/privkey.pem
# #
#ec-curve-name=prime256v1 #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 #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. # 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. # Flags --dh566 and --dh2066 are ignored when the DH key is taken from a file.
@ -501,16 +493,16 @@ pkey=/etc/ssl/private/privkey.pem
#dh-file=<DH-PEM-file-name> #dh-file=<DH-PEM-file-name>
# Flag to prevent stdout log messages. # Flag to prevent stdout log messages.
# By default, all log messages are going to both stdout and to # By default, all log messages go to both stdout and to
# the configured log file. With this option everything will be # the configured log file. With this option everything will
# going to the configured log only (unless the log file itself is stdout). # go to the configured log only (unless the log file itself is stdout).
# #
#no-stdout-log #no-stdout-log
# Option to set the log file name. # Option to set the log file name.
# By default, the turnserver tries to open a log file in # By default, the turnserver tries to open a log file in
# /var/log, /var/tmp, /tmp and current directories directories # /var/log, /var/tmp, /tmp and the current directory
# (which open operation succeeds first that file will be used). # (Whichever file open operation succeeds first will be used).
# With this option you can set the definite log file name. # 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 # to the stdout. Also, the "syslog" name will force everything to
@ -531,14 +523,14 @@ syslog
#simple-log #simple-log
# Option to set the "redirection" mode. The value of this option # 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
# <ip>[:<port>]. The server will send this value in the attribute # <ip>[:<port>]. The server will send this value in the attribute
# ALTERNATE-SERVER, with error 300, on ALLOCATE request, to the client. # ALTERNATE-SERVER, with error 300, on ALLOCATE request, to the client.
# Client will receive only values with the same address family # Client will receive only values with the same address family
# as the client network endpoint address family. # as the client network endpoint address family.
# See RFC 5389 and RFC 5766 for ALTERNATE-SERVER functionality description. # See RFC 5389 and RFC 5766 for the description of ALTERNATE-SERVER functionality.
# The client must use the obtained value for subsequent TURN communications. # The client must use the obtained value for subsequent TURN communications.
# If more than one --alternate-server options are provided, then the functionality # If more than one --alternate-server option is provided, then the functionality
# can be more accurately described as "load-balancing" than a mere "redirection". # can be more accurately described as "load-balancing" than a mere "redirection".
# If the port number is omitted, then the default port # If the port number is omitted, then the default port
# number 3478 for the UDP/TCP protocols will be used. # number 3478 for the UDP/TCP protocols will be used.
@ -548,7 +540,7 @@ syslog
# [2001:db8:85a3:8d3:1319:8a2e:370:7348]:3478 . # [2001:db8:85a3:8d3:1319:8a2e:370:7348]:3478 .
# Multiple alternate servers can be set. They will be used in the # 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 # 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, # 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 # 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 # address can be used more than one time with the alternate-server option, so this
# can emulate "weighting" of the servers. # can emulate "weighting" of the servers.
@ -594,10 +586,17 @@ syslog
# The default value is ':'. # The default value is ':'.
# rest-api-separator=: # 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. # 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:*). # 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. # This is an extra security measure.
@ -647,12 +646,12 @@ no-loopback-peers
# User name to run the process. After the initialization, the turnserver process # 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=<user-name> #proc-user=<user-name>
# Group name to run the process. After the initialization, the turnserver process # 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=<group-name> #proc-group=<group-name>
@ -672,8 +671,8 @@ cli-ip=127.0.0.1
cli-port=5766 cli-port=5766
# CLI access password. Default is empty (no password). # CLI access password. Default is empty (no password).
# For the security reasons, it is recommended to use the encrypted # For the security reasons, it is recommended that you use the encrypted
# for of the password (see the -P command in the turnadmin utility). # form of the password (see the -P command in the turnadmin utility).
# #
# Secure form for password 'qwerty': # Secure form for password 'qwerty':
# #
@ -681,11 +680,29 @@ cli-port=5766
# #
# Or unsecure form for the same password: # Or unsecure form for the same password:
# #
#cli-password=qwerty
cli-password=CHANGE_ME cli-password=CHANGE_ME
# 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. # Server relay. NON-STANDARD AND DANGEROUS OPTION.
# Only for those applications when we want to run # Only for those applications when you want to run
# server applications on the relay endpoints. # 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. # the packets incoming to the relay endpoints.

View File

@ -23,7 +23,7 @@
# "automatically" recognizes the type of traffic. Actually, two listening # "automatically" recognizes the type of traffic. Actually, two listening
# endpoints (the "plain" one and the "tls" one) are equivalent in terms of # 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. # 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. # TLS version 1.0, 1.1 and 1.2.
# For secure UDP connections, Coturn supports DTLS version 1. # For secure UDP connections, Coturn supports DTLS version 1.
# #
@ -491,13 +491,13 @@
# #
#ec-curve-name=prime256v1 #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 #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. # 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. # Flags --dh566 and --dh2066 are ignored when the DH key is taken from a file.

View File

@ -2,7 +2,7 @@
# Run it from the root of the coturn source tree # Run it from the root of the coturn source tree
V=4.5.1.0 V=4.5.1.2
PACKDIR=`pwd`/../coturn-releases/ PACKDIR=`pwd`/../coturn-releases/
SRCDIR=`pwd` SRCDIR=`pwd`
@ -16,7 +16,8 @@ mkdir tmp
cd tmp cd tmp
mkdir ${DDIR} mkdir ${DDIR}
cp -R ${SRCDIR}/* ${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 .. cd ..
rm -rf tmp rm -rf tmp

View File

@ -1,5 +1,5 @@
.\" Text automatically generated by txt2man .\" Text automatically generated by txt2man
.TH TURN 1 "28 April 2020" "" "" .TH TURN 1 "29 April 2020" "" ""
.SH GENERAL INFORMATION .SH GENERAL INFORMATION
\fIturnadmin\fP is a TURN administration tool. This tool can be used to manage \fIturnadmin\fP is a TURN administration tool. This tool can be used to manage

View File

@ -1,5 +1,5 @@
.\" Text automatically generated by txt2man .\" Text automatically generated by txt2man
.TH TURN 1 "28 April 2020" "" "" .TH TURN 1 "29 April 2020" "" ""
.SH GENERAL INFORMATION .SH GENERAL INFORMATION
The \fBTURN Server\fP project contains the source code of a TURN server and TURN client The \fBTURN Server\fP project contains the source code of a TURN server and TURN client
@ -617,6 +617,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 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 that other mode is dynamic. Multiple shared secrets can be used
(both in the database and in the "static" fashion). (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.
.TP
.B
\fB\-\-no\-dynamic\-ip\-list\fP
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.
.RE
.TP .TP
.B .B
\fB\-\-server\-name\fP \fB\-\-server\-name\fP

View File

@ -1,5 +1,5 @@
.\" Text automatically generated by txt2man .\" Text automatically generated by txt2man
.TH TURN 1 "28 April 2020" "" "" .TH TURN 1 "29 April 2020" "" ""
.SH GENERAL INFORMATION .SH GENERAL INFORMATION
A set of turnutils_* programs provides some utility functionality to be used A set of turnutils_* programs provides some utility functionality to be used

View File

@ -2,10 +2,9 @@
# Common settings script. # Common settings script.
TURNVERSION=4.5.1.1 TURNVERSION=4.5.1.2
BUILDDIR=~/rpmbuild BUILDDIR=~/rpmbuild
ARCH=`uname -p` ARCH=`uname -p`
TURNSERVER_GIT_URL=https://github.com/coturn/coturn.git
WGETOPTIONS="--no-check-certificate" WGETOPTIONS="--no-check-certificate"
RPMOPTIONS="-ivh --force" RPMOPTIONS="-ivh --force"

View File

@ -18,18 +18,11 @@ fi
# TURN # TURN
#create archive from local folder
cd ${BUILDDIR}/tmp cd ${BUILDDIR}/tmp
rm -rf turnserver-${TURNVERSION} rm -rf turnserver-${TURNVERSION}
git clone ${TURNSERVER_GIT_URL} --branch ${TURNVERSION} turnserver-${TURNVERSION} mkdir -p ${BUILDDIR}/tmp/turnserver-${TURNVERSION}
ER=$? cp -R ${CPWD}/.. ${BUILDDIR}/tmp/turnserver-${TURNVERSION}
if ! [ ${ER} -eq 0 ] ; then
git clone ${TURNSERVER_GIT_URL} turnserver-${TURNVERSION}
ER=$?
if ! [ ${ER} -eq 0 ] ; then
cd ${CPWD}
exit -1
fi
fi
tar zcf ${BUILDDIR}/SOURCES/turnserver-${TURNVERSION}.tar.gz turnserver-${TURNVERSION} tar zcf ${BUILDDIR}/SOURCES/turnserver-${TURNVERSION}.tar.gz turnserver-${TURNVERSION}
ER=$? ER=$?
@ -38,6 +31,7 @@ if ! [ ${ER} -eq 0 ] ; then
exit -1 exit -1
fi fi
#build package from archive
rpmbuild -ta ${BUILDDIR}/SOURCES/turnserver-${TURNVERSION}.tar.gz rpmbuild -ta ${BUILDDIR}/SOURCES/turnserver-${TURNVERSION}.tar.gz
ER=$? ER=$?
if ! [ ${ER} -eq 0 ] ; then if ! [ ${ER} -eq 0 ] ; then

View File

@ -1,5 +1,5 @@
Name: turnserver Name: turnserver
Version: 4.5.1.1 Version: 4.5.1.2
Release: 0%{dist} Release: 0%{dist}
Summary: Coturn TURN Server Summary: Coturn TURN Server
@ -197,6 +197,8 @@ fi
%{_datadir}/%{name}/testmongosetup.sh %{_datadir}/%{name}/testmongosetup.sh
%{_datadir}/%{name}/testsqldbsetup.sql %{_datadir}/%{name}/testsqldbsetup.sql
%dir %{_datadir}/%{name}/etc %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_cert.pem
%{_datadir}/%{name}/etc/turn_server_pkey.pem %{_datadir}/%{name}/etc/turn_server_pkey.pem
%{_datadir}/%{name}/etc/turnserver.conf %{_datadir}/%{name}/etc/turnserver.conf

View File

@ -163,7 +163,10 @@ DEFAULT_CPUS_NUMBER,
///////// Encryption ///////// ///////// Encryption /////////
"", /* secret_key_file */ "", /* secret_key_file */
"", /* secret_key */ "", /* 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 ////////////////////// //////////////// OpenSSL Init //////////////////////
@ -544,6 +547,9 @@ static char Usage[] = "Usage: turnserver [options]\n"
" That database value can be changed on-the-fly\n" " That database value can be changed on-the-fly\n"
" by a separate program, so this is why it is 'dynamic'.\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" " 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" " --server-name Server name used for\n"
" the oAuth authentication purposes.\n" " the oAuth authentication purposes.\n"
" The default value is the realm name.\n" " The default value is the realm name.\n"
@ -744,6 +750,9 @@ enum EXTRA_OPTS {
PERMISSION_LIFETIME_OPT, PERMISSION_LIFETIME_OPT,
NO_PROMETHEUS_OPT, NO_PROMETHEUS_OPT,
AUTH_SECRET_OPT, AUTH_SECRET_OPT,
NO_AUTH_PINGS_OPT,
NO_DYNAMIC_IP_LIST_OPT,
NO_DYNAMIC_REALMS_OPT,
DEL_ALL_AUTH_SECRETS_OPT, DEL_ALL_AUTH_SECRETS_OPT,
STATIC_AUTH_SECRET_VAL_OPT, STATIC_AUTH_SECRET_VAL_OPT,
AUTH_SECRET_TS_EXP, /* deprecated */ AUTH_SECRET_TS_EXP, /* deprecated */
@ -851,6 +860,9 @@ static const struct myoption long_options[] = {
#endif #endif
{ "use-auth-secret", optional_argument, NULL, AUTH_SECRET_OPT }, { "use-auth-secret", optional_argument, NULL, AUTH_SECRET_OPT },
{ "static-auth-secret", required_argument, NULL, STATIC_AUTH_SECRET_VAL_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 }, /* deprecated: */ { "secret-ts-exp-time", optional_argument, NULL, AUTH_SECRET_TS_EXP },
{ "realm", required_argument, NULL, 'r' }, { "realm", required_argument, NULL, 'r' },
{ "server-name", required_argument, NULL, SERVER_NAME_OPT }, { "server-name", required_argument, NULL, SERVER_NAME_OPT },
@ -1457,6 +1469,15 @@ static void set_option(int c, char *value)
turn_params.ct = TURN_CREDENTIALS_LONG_TERM; turn_params.ct = TURN_CREDENTIALS_LONG_TERM;
use_lt_credentials = 1; use_lt_credentials = 1;
break; 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: case STATIC_AUTH_SECRET_VAL_OPT:
add_to_secrets_list(&turn_params.default_users_db.ram_db.static_auth_secrets,value); add_to_secrets_list(&turn_params.default_users_db.ram_db.static_auth_secrets,value);
turn_params.use_auth_secret_with_timestamp = 1; turn_params.use_auth_secret_with_timestamp = 1;

View File

@ -328,6 +328,9 @@ typedef struct _turn_params_ {
char secret_key_file[1025]; char secret_key_file[1025];
unsigned char secret_key[1025]; unsigned char secret_key[1025];
int keep_address_family; int keep_address_family;
int no_auth_pings;
int no_dynamic_ip_list;
int no_dynamic_realms;
} turn_params_t; } turn_params_t;

View File

@ -1776,7 +1776,10 @@ static void* run_auth_server_thread(void *arg)
barrier_wait(); barrier_wait();
while(run_auth_server_flag) { 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); run_events(as->event_base,NULL);
} }
} }

View File

@ -1167,7 +1167,7 @@ ip_range_list_t* get_ip_list(const char *kind)
bzero(ret,sizeof(ip_range_list_t)); bzero(ret,sizeof(ip_range_list_t));
const turn_dbdriver_t * dbd = get_dbdriver(); 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); (*dbd->get_ip_list)(kind, ret);
} }
@ -1303,7 +1303,7 @@ void reread_realms(void)
} }
const turn_dbdriver_t * dbd = get_dbdriver(); 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); (*dbd->reread_realms)(&realms_list);
} }
} }

View File

@ -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) { if ((int)elem->in_buffer.len == clmessage_length) {
bcopy((elem->in_buffer.buf), &mi, sizeof(message_info)); bcopy((elem->in_buffer.buf), &mi, sizeof(message_info));
miset=1; 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))) { } else if (stun_is_indication(&(elem->in_buffer))) {

View File

@ -244,9 +244,11 @@ int stun_produce_integrity_key_str(const uint8_t *uname, const uint8_t *realm, c
unsigned int keylen = 0; unsigned int keylen = 0;
EVP_MD_CTX ctx; EVP_MD_CTX ctx;
EVP_MD_CTX_init(&ctx); EVP_MD_CTX_init(&ctx);
#ifdef EVP_MD_CTX_FLAG_NON_FIPS_ALLOW
if (FIPS_mode()) { if (FIPS_mode()) {
EVP_MD_CTX_set_flags(&ctx,EVP_MD_CTX_FLAG_NON_FIPS_ALLOW); EVP_MD_CTX_set_flags(&ctx,EVP_MD_CTX_FLAG_NON_FIPS_ALLOW);
} }
#endif
EVP_DigestInit_ex(&ctx,EVP_md5(), NULL); EVP_DigestInit_ex(&ctx,EVP_md5(), NULL);
EVP_DigestUpdate(&ctx,str,strl); EVP_DigestUpdate(&ctx,str,strl);
EVP_DigestFinal(&ctx,key,&keylen); 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 #else
unsigned int keylen = 0; unsigned int keylen = 0;
EVP_MD_CTX *ctx = EVP_MD_CTX_new(); EVP_MD_CTX *ctx = EVP_MD_CTX_new();
#ifdef EVP_MD_CTX_FLAG_NON_FIPS_ALLOW
if (FIPS_mode()) { if (FIPS_mode()) {
EVP_MD_CTX_set_flags(ctx, EVP_MD_CTX_FLAG_NON_FIPS_ALLOW); EVP_MD_CTX_set_flags(ctx, EVP_MD_CTX_FLAG_NON_FIPS_ALLOW);
} }
#endif
EVP_DigestInit_ex(ctx,EVP_md5(), NULL); EVP_DigestInit_ex(ctx,EVP_md5(), NULL);
EVP_DigestUpdate(ctx,str,strl); EVP_DigestUpdate(ctx,str,strl);
EVP_DigestFinal(ctx,key,&keylen); EVP_DigestFinal(ctx,key,&keylen);

View File

@ -31,7 +31,7 @@
#ifndef __IOADEFS__ #ifndef __IOADEFS__
#define __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_SERVER_VERSION_NAME "dan Eider"
#define TURN_SOFTWARE "Coturn-" TURN_SERVER_VERSION " '" TURN_SERVER_VERSION_NAME "'" #define TURN_SOFTWARE "Coturn-" TURN_SERVER_VERSION " '" TURN_SERVER_VERSION_NAME "'"