Code Monkey home page Code Monkey logo

coturn's Introduction

GENERAL INFORMATION

turnadmin is a TURN administration tool. This tool can be used to manage 
the user accounts (add/remove users, generate 
TURN keys for the users). For security reasons, we do not recommend 
storing passwords openly. The better option is to use pre-processed "keys" 
which are then used for authentication. These keys are generated by turnadmin. 
Turnadmin is a link to turnserver binary, but turnadmin performs different 
functions.

Options note: turnadmin has long and short option names, for most options.
Some options have only long form, some options have only short form. Their syntax 
somewhat different, if an argument is required:

The short form must be used as this (for example):

  $ turnadmin -u <username> ...
  
The long form equivalent must use the "=" character:

  $ turnadmin --user=<username> ...
  
If this is a flag option (no argument required) then their usage are the same, for example:

 $ turnadmin -k ...
 
is equivalent to:

 $ turnadmin --key ...

You have always the use the -r <realm> option with commands for long term credentials - 
because data for multiple realms can be stored in the same database.
 
=====================================

  NAME

turnadmin - a TURN relay administration tool. 
  
  SYNOPSIS  

$ turnadmin [command] [options]

$ turnadmin [ -h | --help]

  DESCRIPTION
  
Commands:  

-P, --generate-encrypted-password	Generate and print to the standard
output an encrypted form of a password (for web admin user or CLI).
The value then can be used as a safe key for the password
storage on disk or in the database. Every invocation for the same password
produces a different result. The for mat of the encrypted password is:
$5$<...salt...>$<...sha256(salt+password)...>. Salt is 16 characters,
the sha256 output is 64 characters. Character 5 is the algorithm id (sha256).
Only sha256 is supported as the hash function.

-k, --key		Generate key for a long-term credentials mechanism user.

-a, --add       	Add or update a long-term user.

-A, --add-admin    	Add or update an admin user.

-d, --delete		Delete a long-term user.

-D, --delete-admin		Delete an admin user.

-l, --list		List long-term users in the database.

-L, --list-admin		List admin users in the database.

-s, --set-secret=<value> Add shared secret for TURN RESP API

-S, --show-secret	Show stored shared secrets for TURN REST API

-X, --delete-secret=<value> Delete a shared secret.
	--delete-all_secrets	Delete all shared secrets for REST API.
	
-O, --add-origin		Add origin-to-realm relation.

-R, --del-origin		Delete origin-to-realm relation.

-I, --list-origins		List origin-to-realm relations.

-g, --set-realm-option		Set realm params: max-bps, total-quota, user-quota.

-G, --list-realm-options	List realm params.
  
Options with required values:  

-b, --db, --userdb	SQLite user database file name (default - /var/db/turndb or
			/usr/local/var/db/turndb or /var/lib/turn/turndb).
			See the same option in the turnserver section.
-e, --psql-userdb	PostgreSQL user database connection string.
			See the --psql-userdb option in the turnserver section.
-M, --mysql-userdb	MySQL user database connection string.
			See the --mysql-userdb option in the turnserver section.
-J, --mongo-userdb	MongoDB user database connection string.
			See the --mysql-mongo option in the turnserver section.
-N, --redis-userdb	Redis user database connection string.
			See the --redis-userdb option in the turnserver section.
-u, --user		User name.
-r, --realm		Realm.
-p, --password		Password.
-o, --origin		Origin
--max-bps		Set value of realm's max-bps parameter.
--total-quota	Set value of realm's total-quota parameter.
--user-quota	Set value of realm's user-quota parameter. 
-h, --help		Help.

Command examples:  

Generate an encrypted form of a password:

$ turnadmin -P -p <password>

Generate a key:

$ turnadmin -k -u <username> -r <realm> -p <password>
  
Add/update a user in the in the database:

$ turnadmin -a [-b <userdb-file> | -e <db-connection-string> | -M <db-connection-string> | -N <db-connection-string> ] -u <username> -r <realm> -p <password>
  
Delete a user from the database:

$ turnadmin -d [-b <userdb-file> | -e <db-connection-string> | -M <db-connection-string> | -N <db-connection-string> ] -u <username> -r <realm>

List all long-term users in MySQL database:

$ turnadmin -l --mysql-userdb="<db-connection-string>" -r <realm>

List all admin users in Redis database:

$ turnadmin -L --redis-userdb="<db-connection-string>"

Set secret in MySQL database:

$ turnadmin -s <secret> --mysql-userdb="<db-connection-string>" -r <realm>

Show secret stored in PostgreSQL database:

$ turnadmin -S --psql-userdb="<db-connection-string>" -r <realm>

Set origin-to-realm relation in MySQL database:

$ turnadmin --mysql-userdb="<db-connection-string>" -r <realm> -o <origin>

Delete origin-to-realm relation from Redis DB:

$ turnadmin --redis-userdb="<db-connection-string>" -o <origin>

List all origin-to-realm relations in Redis DB:

$ turnadmin --redis-userdb="<db-connection-string>" -I

List the origin-to-realm relations in PostgreSQL DB for a single realm:

$ turnadmin --psql-userdb="<db-connection-string>" -I -r <realm>
  
Help:  

$ turnadmin -h

=======================================
 
  DOCS

After installation, run the command:

$ man turnadmin

or in the project root directory:

$ man -M man turnadmin

to see the man page.

=====================================

  FILES

/etc/turnserver.conf

/var/db/turndb

/usr/local/var/db/turndb

/var/lib/turn/turndb

/usr/local/etc/turnserver.conf

=====================================

  DIRECTORIES

/usr/local/share/turnserver

/usr/local/share/doc/turnserver

/usr/local/share/examples/turnserver

======================================

  SEE ALSO

	turnserver, turnutils

======================================

  WEB RESOURCES

	project page:

	http://code.google.com/p/coturn/

	Wiki page:

	http://code.google.com/p/coturn/wiki/Readme

	forum:

	https://groups.google.com/forum/?fromgroups=#!forum/turn-server-project-rfc5766-turn-server/

======================================

  AUTHORS

	Oleg Moskalenko <[email protected]>

	Gabor Kovesdan http://kovesdan.org/

	Daniel Pocock http://danielpocock.com/

	John Selbie ([email protected])

	Lee Sylvester <[email protected]>

	Erik Johnston <[email protected]>

	Roman Lisagor <[email protected]>
	
	Vladimir Tsanev <[email protected]>
	
	Po-sheng Lin <[email protected]>
	
	Peter Dunkley <[email protected]>
	
	Mutsutoshi Yoshimoto <[email protected]>

	Federico Pinna <[email protected]>

	Bradley T. Hughes <[email protected]>

coturn's People

Contributors

mom040267 avatar

Watchers

James Cloos avatar

coturn's Issues

how to make turnserver work only in relay mode

What steps will reproduce the problem?
1. install turnserver v4.1.1.1 on CentOS 6.5
2. install kamailio-4.1.5
3. install imsdroid on android endpoint

What is the expected output? What do you see instead?
After several necessary configuration, turnserver work only in relay mode with 
two imsdroid UAs

What version of the product are you using? On what operating system?
turnserver v4.1.1.1 on CentOS 6.5
kamailio-4.1.5
imsdroid v2.569.1089

Please provide any additional information below.


Original issue reported on code.google.com by [email protected] on 5 Sep 2014 at 9:27

Coturn & Turnserver conflict with same filenames

Coturn and Turnserver cannot be installed side by side.

Currently both projects share a few similar files which means they cannot be 
installed side by side. So far I can see that /etc/init.d/rfc5766-turn-server 
is the same, I propose to change this to: /etc/init.d/coturn

Secondly the config files, (userdb.conf & turnserver.conf) these should be 
changed to be coturn specific to prevent conflicts.

Original issue reported on code.google.com by [email protected] on 28 Aug 2014 at 4:48

DSCP field set to zero when going through TURN server

When I set a DSCP tag (by using googDscp constraint : true when setting up a 
peer connection), packets from client to TURN server are marked.

Differentiated Services Field: 0x88 (DSCP 0x22: Assured Forwarding 41; (...)
1000 10 .. = Differentiated Services Codepoint: Assured Forwarding 41 (0x22)

DSCP in packets after going through the server are set back to zero:
Differentiated Services Field: 0x00 (DSCP 0x00: Default; (...)
0000 00 .. = Differentiated Services Codepoint: Default (0x00)

On linux preferred behaviour is used mleaning that the outgoing value is set to 
the incoming value. But given my tests, this value is set to zero.

I have checked it on coturn 4.3.1.2 (Ubuntu server 14.04) and on turn-5766 
3.2.2.4 (Ubuntu server 12.04).


What version of the product are you using? On what operating system?


Please provide any additional information below.


Original issue reported on code.google.com by [email protected] on 3 Feb 2015 at 9:00

Redis status and statistics database connection broken would cause 99% cpu usage

What steps will reproduce the problem?
1. Start a redis-server in localhost, as turn-server's user-statsdb:
./redis-server &

2. Start turn-server with statsdb enabled:
./turnserver -p 10001 -L 10.10.10.15 -a -f -v --no-cli -r localhost -O 
port=6379 

3. Kill or restart the redis-server started in "step 1":
kill

4. run top command, watch the cpu usage of turn-server:
top

What is the expected output? What do you see instead?
Expected output:
Turn server runs normally, and cpu usage is low.

Real output: 
The cpu usage is over 99% per thread:

  PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND                                                                                                                         
30877 xxxxxxxx  20   0  696m  18m 2424 R 99.4  0.5   0:22.79 turnserver         


30876 xxxxxxxx  20   0  696m  18m 2424 R 99.1  0.5   0:22.80 turnserver         


30878 xxxxxxxx  20   0  696m  18m 2424 R 99.1  0.5   0:22.72 turnserver 


What version of the product are you using? On what operating system?
Version: 
Version Coturn-4.4.5.1 'Ardee West'

Operating system:
Linux tmpserver 3.2.0-23-generic #36-Ubuntu SMP Tue Apr 10 20:39:51 UTC 2012 
x86_64 x86_64 x86_64 GNU/Linux

Please provide any additional information below.


Original issue reported on code.google.com by [email protected] on 4 May 2015 at 1:43

Bad configuration format: mongo-userdb

When trying to set a mongodb uri in the turnserver.conf configuration I get the 
following error:
"Bad configuration format: mongo-userdb"

My configuration looks like this
mongo-userdb="mongodb://user:pass@host/db"

Any ideas on what the correct format should be? I checked out this page (side 
note the docs point to an invalid webpage, this is the correct):
http://hergert.me/docs/mongo-c-driver-docs-0.94.2/mongoc_uri.html

My configuration directive looks to be right! I can connect using the shell 
script for schema population.

Original issue reported on code.google.com by [email protected] on 28 Aug 2014 at 6:24

Ubuntu UFW Firewall Rules

In Ubuntu the firewall is managed by UFW. The rules can be manually added or an 
application configuration file can be added to simplify the process.

I've attached a file with the default ports to simplify firewall setup on 
Ubuntu.

To use run these commands
cp turnserver /etc/ufw/applications.d/turnserver
ufw add turnserver

This file should probably be automatically copied as part of the Ubuntu package 
install (not quite sure how to do this but it's a standard practise).

Original issue reported on code.google.com by [email protected] on 20 Aug 2014 at 3:40

Attachments:

problem with adding users

Hello currently i would like to use turnserver with peerjs. One think that 
bothers me is how to set users for turn.
I would like to store users in file turnuserdb.conf. My problem is when I use 
deafult user: ninefingers:youhavetoberealistic everything is fine(I can make 
video chat), but when I specify for example myuser:passw and then appy it  to 
the example 1) as: 

 var peer = new Peer({host: peerJsServerHost, port: peerJsServerPort, path: peerJsServerPath, debug:3, 
       config: {'iceServers': [
        {   url: 'turn:'+stunTurnServerHost+':3478',        credential: 'passw',        username: 'myuser'      },
        {   url: 'stun:'+stunTurnServerHost+':3478',        credential: 'passw',        username: 'myuser'      }
        ]}
    });  
there is no connection between those two peerjs. Can anybody give me hint or 
solution to this problem.
I'm starting turnserver with command:  turnserver -o -c 
/etc/turnserver/turnserver.conf -a 

1) https://github.com/peers/peerjs/blob/master/examples/videochat/index.html

Original issue reported on code.google.com by [email protected] on 24 Oct 2014 at 11:39

(patch provided) Add support for hostnames in listening-ip and relay-ip fields

Hi,

The attached patch allows the listening-ip and relay-ip configuration fields to 
contain a hostname, which is then resolved with getaddrinfo(). Tested under 
Linux and OSX.

Rationale:

In some environments (for example, Google Cloud Servers) the host gets a 
dynamic private IPv4 upon restart which may change at any time. Fortunately an 
alias for the private IP is automatically added into /etc/hosts. For some 
reasons one may need to make Coturn to just listen into the private address and 
avoid IP autodiscovery. The patch makes this scenario easier to live with.

Original issue reported on code.google.com by [email protected] on 8 Sep 2014 at 10:50

Attachments:

SimpleWebRTC and coTURN dont work in Chrome

What steps will reproduce the problem?
1. Setup coturn in AWS Amazon instances, lt-cred-mech, use-auth-secret, 
static-auth-secret=Veureka123, without database, just generic username 
(timestamp:userx), credential base64(hmac(Veureka123, username)).
2. Use SimpleWebRTC in client side.
3. Create crdentials like:

self.webrtc.config.peerConnectionConfig.iceServers = [{"url" : 
"stun:myStunIP:3478"},
            { 
            "url" : "turn:myTurnIP:3478?transport=udp",
            "username": username,
            "credential":hashEncoded
            }];

What is the expected output? What do you see instead?

In Firefox it works fine, but in Chrome it isn't.


What version of the product are you using? On what operating system?
I test coTurn 4.2.3.1, 4.0.0.0 and 4.1.1.1, all fails.


Is there any reason of structure in ice servers config?? I tried use adapterjs 
but simplewebrtc don't supports it.

Regards,


Original issue reported on code.google.com by [email protected] on 18 Nov 2014 at 10:54

MESSAGE_INTEGRITY attribute missing received from SIP PHONE

What steps will reproduce the problem?

The call flow is : 

SIP PHONE APP (with ICE) ==> ASTERISK (with ICE) 


What is the expected output? What do you see instead?

ICE failed : I receiveid the following error : 
Received invalid STUN packet from 176.182.63.143:7076: MESSAGE_INTEGRITY 
attribute missing

176.182.63.143 is the IP address from SIP PHONE APP. 

What version of the product are you using? On what operating system?

Androïd and iOS Linphone APP. 


Please provide any additional information below.

May be, coturn provide a parameter to disable control message integrity ?




Regards.

AfriCallShop




Original issue reported on code.google.com by [email protected] on 22 May 2015 at 7:50

Allow change of MongoDB collection names

I currently have a database with some collection names that follow a 
convention. I want to share this DB with Turnserver but unfortunately a couple 
of the collection names used are the same.

I would like the option in the conf file to set the string collection name used 
for each function.

e.g. in the config we would have the following

mongodb-collection-allowed-peer-ip="allowed_peer_ip"
mongodb-collection-denied-peer-ip="denied_peer_ip"
mongodb-collection-realms="realms"
mongodb-collection-turn-secret="turn_secret"
mongodb-collection-turnusers-lt="turnusers_lt"
mongodb-collection-turnusers-st="turnusers-st"


Original issue reported on code.google.com by [email protected] on 28 Aug 2014 at 4:54

Same relay/listening ip address could be add for more than once, if they were't add continuously.

What steps will reproduce the problem?
1. run this command to start turn server, "10.0.0.12" is turn server's local ip 
address:
./turnserver -E 10.0.0.12 -E 127.0.0.1 -E 10.0.0.12
2. Watch command output, about "Relay address to use".


What is the expected output? What do you see instead?
Expected output:
... ...
0: Relay address to use: 10.0.0.12
0: Relay address to use: 127.0.0.1
... ...

Real output:
... ...
0: Relay address to use: 10.0.0.12
0: Relay address to use: 127.0.0.1
0: Relay address to use: 10.0.0.12
... ...


What version of the product are you using? On what operating system?
Version Coturn-4.4.5.1 'Ardee West'


Please provide any additional information below.
Patch file in attached.

Original issue reported on code.google.com by [email protected] on 28 Apr 2015 at 3:34

Attachments:

turnutils_uclient with big packet size does not work for coturn

What steps will reproduce the problem?
1. start coturn with default configuration
2. call turnutils_uclient -T -n 50 -l 10000 host
3.

What is the expected output? What do you see instead?
I see Total lost packets 100 (100.000000%)

What version of the product are you using? On what operating system?
Linux32, Version Coturn-4.2.1.2

Please provide any additional information below.


Original issue reported on code.google.com by [email protected] on 26 Jun 2015 at 9:27

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.