The '''Video Call Services''' fieldset says which relays an audio or video call between two Yioop users may use. A call runs directly between the two browsers; Yioop only carries the offer, the answer, and the candidate addresses each browser finds for itself. Two people at home usually cannot reach each other directly, since each sits behind a router that lets nothing in unasked, so a relay has to stand somewhere both of them can reach. This fieldset says which relays that is, and what the page hands the browser when a call starts.

Two kinds of server do this work, and the addresses written here name one or the other:

  • '''STUN''' (Session Traversal Utilities for NAT, RFC 5389) tells a browser the address it is seen at from outside its own router. That is often enough for two browsers to reach each other with no further help, and it costs the server almost nothing, since the call itself does not pass through it. A STUN address is written beginning '''stun:'''.
  • '''TURN''' (Traversal Using Relays around NAT, RFC 5766) carries the call itself when the two browsers cannot reach each other any other way. Every second of audio and video passes through the relay, so a TURN server uses real bandwidth and asks a caller to prove who it is first. A TURN address is written beginning '''turn:'''.

Yioop ships a relay of its own, '''TurnSite''', which answers both kinds of question on one port. It is started and stopped from the '''Name Server Services''' part of the [[Manage_Machines|Manage Machines]] activity, where it appears as '''Video Call Relay''' with its own log and On/Off switch.

==Calling uses==

The dropdown chooses which relays a browser is handed when a call starts. A fresh install has this set to '''Disable Calling'''.

  • '''Disable Calling''': a browser is handed no relay at all. A call still tries the paths the two browsers find for themselves, which works on a local network or between two machines with public addresses, and fails between two people at home. Choose this when calling is not wanted, or while the relay is being set up.
  • '''TurnSite''': a browser is handed the relay this site runs, and nothing else. Yioop builds that entry itself from the address the site is being reached at and the port the relay listens on, together with a name and secret the relay accepts, so turning the relay on in Manage Machines is all that has to be done. Nothing is handed over while the relay is not running.
  • '''External TURN/STUN''': a browser is handed only the servers listed

in '''TURN/STUN Servers''' below. Choose this where a relay is already running beside the site, such as a coturn server or one rented from a provider, and Yioop's own relay is not wanted.

  • '''TurnSite and External''': a browser is handed both. The listed

servers come first and the site's own relay after them, so a browser tries each in turn. Choose this to run a relay of your own and still have another to fall back on.

The '''TURN/STUN Servers''' controls are shown only under the two choices that use them. Under '''Disable Calling''' and '''TurnSite''' a listed server is never handed to a browser, so the list is hidden.

==TURN/STUN Servers==

;TURN/STUN Servers: The servers a browser should try, one to a line. Add one by typing it into the box and pressing the '''+''' button, or the Enter key; take one off with the '''×''' button beside it. Nothing is saved until '''Save''' is pressed at the foot of the screen.

Write each server as a browser dials it: the kind, the host, and the port, as in '''turn:relay.example.com:3478''' or '''stun:stun.example.com:3478'''. A server that asks a caller to prove who it is carries the name and the secret after the address, with a space between each part:

turn:relay.example.com:3478 callers s3cret

A STUN server asks for nothing, so it carries an address alone. Most TURN servers ask for a name and secret, and a TURN server given none will refuse the call. The name and secret written here are sent to the browser of anyone who starts a call, so they are shared with every user of this site; use a name a relay hands out for this purpose rather than one that opens anything else.

==What TurnSite listens on==

The site's own relay reads its settings from '''Config.php''' rather than from this screen, since they are what the program is started with:

;TURN_BIND: The address the relay listens on. It defaults to '''127.0.0.1''', which is reachable only from the machine Yioop runs on and so serves a test but no real call. A relay meant to carry calls between people outside the machine listens on an address they can reach.

;TURN_PORT: The port the relay listens on, 3478 by default, which is the port RFC 5766 gives for this. The address a browser is handed names the host the site is being reached at and this port.

;TURN_REALM: The name the relay gives itself when it asks a caller to prove who it is.

;TURN_USER: The name a browser gives the relay.

;TURN_SECRET: The secret a browser gives the relay with that name. Where this is left empty, Yioop hands each browser a token of its own instead: a name that says when it stops being good and a secret worked out from that name and the site key, which is the same key the relay checks it against. Such a token lasts a day, so one taken from a page is no use to anyone later. Setting a secret here turns that off and uses the written pair as it stands.

;TURN_RELAY_PORTS: The range of ports the relay hands out, one per call it carries, written as the lowest and the highest with a dash between. A router or firewall in front of the machine has to let these through for a relayed call to work.

==Checking that calling works==

Set '''Calling uses''' to '''TurnSite''', save, then start '''Video Call Relay''' in the '''Name Server Services''' part of [[Manage_Machines|Manage Machines]]. Open a conversation in the '''Messages''' screen and press the call symbol in its header. Where a call rings but never connects, read the relay's log from the same screen the switch is on: a call that never reaches the relay points at '''TURN_BIND''' or at a router in front of the machine, and a call the relay refuses points at the name and secret.

X