File: jssip-helper.js

package info (click to toggle)
jscommunicator 2.0.3-1
  • links: PTS, VCS
  • area: main
  • in suites: jessie, jessie-kfreebsd
  • size: 1,768 kB
  • ctags: 70
  • sloc: xml: 39; sh: 33; makefile: 13
file content (68 lines) | stat: -rw-r--r-- 2,837 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
/****************************************************************************
 JSCommunicator
 http://jscommunicator.org

 Copyright (C) 2013  Daniel Pocock http://danielpocock.com

 The JavaScript code in this page is free software: you can
 redistribute it and/or modify it under the terms of the GNU
 General Public License (GNU GPL) as published by the Free Software
 Foundation, either version 2 of the License, or (at your option)
 any later version.  The code is distributed WITHOUT ANY WARRANTY;
 without even the implied warranty of MERCHANTABILITY or FITNESS
 FOR A PARTICULAR PURPOSE.  See the GNU GPL for more details.

 You may distribute non-source (e.g., minimized or compacted) forms of
 that code without the full copy of the GNU GPL normally required
 provided you include this license notice and a URL
 through which recipients can access the Corresponding Source.
****************************************************************************/

// Reads JsCommunicator settings and creates JsSIP configuration object
function getJsSIPSettings(settings) {

  // JsSIP currently expects usernames in the turn_servers array
  // to be URI encoded (e.g. the @ symbol replaced by %40)
  // so we do the encoding here
  // Eventually this might change in JsSIP and then this code can
  // be removed
  var turn_servers = settings.turn_servers;
  var encoded_turn_servers = [];
  if(Object.prototype.toString.call(turn_servers) === '[object Array]') {
    for(var i = 0; i < turn_servers.length; i++) {
      encoded_turn_servers[i] = {};
      encoded_turn_servers[i].urls = turn_servers[i].server;
      encoded_turn_servers[i].username = turn_servers[i].username;
      encoded_turn_servers[i].password = turn_servers[i].password;
    }
  } else {
    encoded_turn_servers[0].urls = turn_servers.server;
    encoded_turn_servers[0].username = turn_servers.username;
    encoded_turn_servers[0].password = turn_servers.password;
  }

  var jssip_settings = {
    uri: settings.user.uri,
    password: settings.user.sip_auth_password,
    ws_servers: settings.websocket.servers,
    display_name: settings.user.display_name,
    authorization_user: settings.user.sip_auth_user,
    register: settings.registration.on_startup,
    register_expires: settings.registration.expiry,
    registrar_server: settings.registration.server,
    no_answer_timeout: settings.dialing.no_answer_timeout,
    trace_sip: true,
    stun_servers: settings.stun_servers,
    turn_servers: encoded_turn_servers,
    use_preloaded_route: false,
    connection_recovery_min_interval: settings.websocket.connection_recovery_min_interval,
    connection_recovery_max_interval: settings.websocket.connection_recovery_max_interval,
    hack_via_tcp: false,
    hack_ip_in_contact: false,
    log: { level: "debug" }
  };

  return jssip_settings;

};