To provide peer to peer support for users with a firewall, a TURN
service might be required. Not everyone can/wants to setup a self-hosted
TURN server. This change adds support to consume a remote TURN service
which usually requires authentication. Spreed WebRTC received TURN
credentials using this service in regular intervals and provides them to
all Spreed WebRTC sessions.
If the remote TURN service provides multiple zones and a GEO location
endpoint, the web client will also directly connect to that TURN service
GEO endpoint to let the TURN service select preferred zones based on the
clients information.
The advanced settings provide a way to control the TURN service zone
directly and to disable the client side GEO call. By default the
selection is auto if the TURN service provides a GEO endpoint. If no
such endpoint is required, the zone with the highest priority is used by
default (as sent by the TURN credentials service).
Contains the following major changes:
* Export connector, api, and webrtc mediastream objects as angular services.
* Export url formatter as a separate angular service.
* Move `authorizing` flag to a function on the root scope.
* Use directive to set the page title.
* Move buddy list visibility toggling into the buddy list directive.
* Room information is no longer exposed on the root scope.
* Use room.joined and room.left events instead of room.
* Treat rooms as an object identified by name, rather than a string id.
* Remove the following unused or semantically ambiguous events from the
connector: opened, helloed, closed
* Centralize all room state in an angular service.
* Move call to hello from connector to api.