├── .DS_Store ├── .gitignore ├── README.md ├── css └── style_webrtc.css ├── examples ├── peerjs.html ├── signal.html ├── simplewebrtc.html ├── webrtc.html └── xirsys_connect.js ├── images ├── arrow_hide.png ├── arrow_show.png ├── brand-logo.png ├── chat-on.png ├── end-call-grn.png ├── end-call-wt.png ├── end-call.png ├── expand.png ├── full-screen.png ├── sign-out-grn.png ├── sign-out.png ├── start-call-grn.png ├── start-call.png ├── user-icon-sm-grn.png └── user-icon-sm.png ├── lib ├── .DS_Store ├── xirsys.api.js ├── xirsys.core.js ├── xirsys.databind.js ├── xirsys.model.js ├── xirsys.p2p.adapter.js ├── xirsys.p2p.js ├── xirsys.signal.js ├── xirsys.simplewebrtc.connection.js └── xirsys.simplewebrtc.js └── thirdparty ├── easyrtc ├── .gitignore ├── LICENSE ├── README.md ├── api │ ├── adapter.js │ ├── buildEnglishVersions.bat │ ├── buildEnglishVersions.sh │ ├── easy_app.js │ ├── easyrtc.css │ ├── easyrtc.js │ ├── easyrtc_ft.js │ ├── easyrtc_int.js │ ├── easyrtc_lang_en.js │ ├── img │ │ ├── LICENSE │ │ ├── easyrtc.png │ │ ├── powered_by_easyrtc.png │ │ ├── priologic_logo_white.png │ │ └── x.svg │ └── labs │ │ ├── README.md │ │ ├── desktopCapture.zip │ │ ├── desktop_capture_iframe_version.js │ │ ├── desktop_capture_no_iframe_version.js │ │ ├── easyrtc_rates.js │ │ └── inline-installcode.html ├── demos │ ├── css │ │ ├── demo4.css │ │ ├── demo_audio_video_simple.css │ │ ├── demo_audio_video_simple_hd.css │ │ ├── demo_lowbandwidth.css │ │ ├── demo_room.css │ │ └── landing.css │ ├── demo4.html │ ├── demo_audio_only.html │ ├── demo_audio_video.html │ ├── demo_audio_video_simple.html │ ├── demo_audio_video_simple_hd.html │ ├── demo_connector.html │ ├── demo_data_channel_filesharing.html │ ├── demo_data_channel_messaging.html │ ├── demo_ice_filter.html │ ├── demo_instant_messaging.html │ ├── demo_instant_messaging_rooms.html │ ├── demo_instant_messaging_selfconnect.html │ ├── demo_lowbandwidth.html │ ├── demo_multiparty.html │ ├── demo_multistream.html │ ├── demo_multistream_iframe.html │ ├── demo_multistream_no_iframe.html │ ├── demo_reconnect.html │ ├── demo_screen_receive.html │ ├── demo_screen_send.html │ ├── demo_video_only.html │ ├── images │ │ ├── LICENSE │ │ ├── bg_dark.png │ │ ├── bg_light.png │ │ ├── blank.gif │ │ ├── br_chrome.png │ │ ├── br_chrome_canary.png │ │ ├── br_ff.png │ │ ├── br_ff_aurora.png │ │ ├── br_ff_nightly.png │ │ ├── br_ie.png │ │ ├── br_opera.png │ │ ├── br_safari.png │ │ ├── br_status_fail.png │ │ ├── br_status_pass.png │ │ ├── br_status_warn.png │ │ ├── button_close.png │ │ ├── button_mute.png │ │ ├── button_refresh.png │ │ ├── button_unmute.png │ │ ├── by_priologic_logo.png │ │ ├── cloud.png │ │ ├── easyrtc_logo.png │ │ ├── irongrip.png │ │ ├── powered_by_easyrtc.png │ │ ├── priologic_logo_white.png │ │ └── textEntry.png │ ├── index.html │ └── js │ │ ├── demo4.js │ │ ├── demo_audio_only.js │ │ ├── demo_audio_video.js │ │ ├── demo_audio_video_simple.js │ │ ├── demo_audio_video_simple_hd.js │ │ ├── demo_connector.js │ │ ├── demo_data_channel_filesharing.js │ │ ├── demo_data_channel_messaging.js │ │ ├── demo_ice_filter.js │ │ ├── demo_instant_messaging.js │ │ ├── demo_instant_messaging_rooms.js │ │ ├── demo_instant_messaging_selfconnect.js │ │ ├── demo_lowbandwidth.js │ │ ├── demo_multiparty.js │ │ ├── demo_multistream.js │ │ ├── demo_multistream_iframe.js │ │ ├── demo_multistream_no_iframe.js │ │ ├── demo_reconnect.js │ │ ├── demo_screen_receive.js │ │ ├── demo_screen_send.js │ │ ├── demo_video_only.js │ │ └── prettify │ │ ├── README │ │ ├── jquery-1.9.1.min.js │ │ ├── jquery.js │ │ ├── jquery.min.js │ │ ├── lang-css.js │ │ ├── lang-sql.js │ │ ├── lang-vhdl.js │ │ ├── lang-yaml.js │ │ ├── loadAndFilter.js │ │ ├── prettify.css │ │ └── prettify.js ├── dev │ ├── dictionary │ │ └── project.dic │ ├── readme.md │ └── scripts │ │ ├── client_jsdoc_templates │ │ ├── README.md │ │ ├── publish.js │ │ ├── static │ │ │ ├── scripts │ │ │ │ └── prettify │ │ │ │ │ ├── Apache-License-2.0.txt │ │ │ │ │ ├── lang-css.js │ │ │ │ │ └── prettify.js │ │ │ └── styles │ │ │ │ ├── jsdoc-default.css │ │ │ │ ├── prettify-jsdoc.css │ │ │ │ └── prettify-tomorrow.css │ │ └── tmpl │ │ │ ├── container.tmpl │ │ │ ├── details.tmpl │ │ │ ├── example.tmpl │ │ │ ├── examples.tmpl │ │ │ ├── exceptions.tmpl │ │ │ ├── fires.tmpl │ │ │ ├── layout.tmpl │ │ │ ├── mainpage.tmpl │ │ │ ├── members.tmpl │ │ │ ├── method.tmpl │ │ │ ├── params.tmpl │ │ │ ├── properties.tmpl │ │ │ ├── returns.tmpl │ │ │ ├── source.tmpl │ │ │ ├── tutorial.tmpl │ │ │ └── type.tmpl │ │ ├── client_jsdoc_templates2 │ │ ├── README.md │ │ ├── publish.js │ │ ├── static │ │ │ ├── scripts │ │ │ │ └── prettify │ │ │ │ │ ├── Apache-License-2.0.txt │ │ │ │ │ ├── lang-css.js │ │ │ │ │ └── prettify.js │ │ │ └── styles │ │ │ │ ├── jsdoc-default.css │ │ │ │ ├── prettify-jsdoc.css │ │ │ │ └── prettify-tomorrow.css │ │ └── tmpl │ │ │ ├── container.tmpl │ │ │ ├── details.tmpl │ │ │ ├── example.tmpl │ │ │ ├── examples.tmpl │ │ │ ├── exceptions.tmpl │ │ │ ├── fires.tmpl │ │ │ ├── layout.tmpl │ │ │ ├── mainpage.tmpl │ │ │ ├── members.tmpl │ │ │ ├── method.tmpl │ │ │ ├── params.tmpl │ │ │ ├── properties.tmpl │ │ │ ├── returns.tmpl │ │ │ ├── source.tmpl │ │ │ ├── tutorial.tmpl │ │ │ └── type.tmpl │ │ ├── readme.md │ │ ├── update_client_easyrtc_docs.bat │ │ ├── update_client_easyrtc_docs.sh │ │ ├── update_client_easyrtc_ft_docs.bat │ │ ├── update_client_easyrtc_ft_docs.sh │ │ ├── update_server_docs.bat │ │ └── update_server_docs.sh ├── docs │ ├── client_html_docs │ │ ├── easyrtc.html │ │ ├── easyrtc_ft.html │ │ ├── jsdoc │ │ │ └── styles │ │ │ │ └── jsdoc-client.css │ │ ├── scripts │ │ │ ├── linenumber.js │ │ │ └── prettify │ │ │ │ ├── Apache-License-2.0.txt │ │ │ │ ├── lang-css.js │ │ │ │ └── prettify.js │ │ └── styles │ │ │ ├── jsdoc-default.css │ │ │ ├── prettify-jsdoc.css │ │ │ └── prettify-tomorrow.css │ ├── easyrtc_authentication.md │ ├── easyrtc_changelog.md │ ├── easyrtc_client_tutorial.md │ ├── easyrtc_faq.md │ ├── easyrtc_rooms.md │ ├── easyrtc_server_configuration.md │ ├── easyrtc_server_events.md │ ├── easyrtc_server_ice.md │ ├── easyrtc_server_install.md │ ├── easyrtc_server_msgtypes.md │ ├── easyrtc_server_ssl.md │ ├── easyrtc_upcoming_features.md │ ├── easyrtc_webrtc_problems.md │ ├── easyrtc_with_other_servers.md │ └── server_html_docs │ │ ├── easyrtc_default_event_listeners.js.html │ │ ├── easyrtc_public_obj.js.html │ │ ├── fonts │ │ ├── OpenSans-Bold-webfont.eot │ │ ├── OpenSans-Bold-webfont.svg │ │ ├── OpenSans-Bold-webfont.woff │ │ ├── OpenSans-BoldItalic-webfont.eot │ │ ├── OpenSans-BoldItalic-webfont.svg │ │ ├── OpenSans-BoldItalic-webfont.woff │ │ ├── OpenSans-Italic-webfont.eot │ │ ├── OpenSans-Italic-webfont.svg │ │ ├── OpenSans-Italic-webfont.woff │ │ ├── OpenSans-Light-webfont.eot │ │ ├── OpenSans-Light-webfont.svg │ │ ├── OpenSans-Light-webfont.woff │ │ ├── OpenSans-LightItalic-webfont.eot │ │ ├── OpenSans-LightItalic-webfont.svg │ │ ├── OpenSans-LightItalic-webfont.woff │ │ ├── OpenSans-Regular-webfont.eot │ │ ├── OpenSans-Regular-webfont.svg │ │ └── OpenSans-Regular-webfont.woff │ │ ├── global.html │ │ ├── index.html │ │ ├── module-easyrtc_default_event_listeners-eventListener.html │ │ ├── module-easyrtc_default_event_listeners.html │ │ ├── module-easyrtc_public_obj-pub.events.html │ │ ├── module-easyrtc_public_obj-pub.html │ │ ├── module-easyrtc_public_obj-pub.util.html │ │ ├── module-easyrtc_public_obj.html │ │ ├── pub.appObj.connectionObj.connectionRoomObj.html │ │ ├── pub.appObj.connectionObj.html │ │ ├── pub.appObj.html │ │ ├── pub.appObj.roomObj.html │ │ ├── pub.appObj.sessionObj.html │ │ ├── scripts │ │ ├── linenumber.js │ │ └── prettify │ │ │ ├── Apache-License-2.0.txt │ │ │ ├── lang-css.js │ │ │ └── prettify.js │ │ └── styles │ │ ├── jsdoc-default.css │ │ ├── prettify-jsdoc.css │ │ └── prettify-tomorrow.css ├── index.js ├── lib │ ├── easyrtc_default_event_listeners.js │ ├── easyrtc_default_options.js │ ├── easyrtc_private_obj.js │ ├── easyrtc_public_obj.js │ ├── easyrtc_server.js │ ├── easyrtc_util.js │ └── general_util.js ├── package.json └── server_example │ ├── README.md │ ├── package.json │ ├── server.js │ └── static │ └── index.html ├── peer.js └── simplewebrtc.bundle.js /.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xirdev/xsdk/5a38e83f0ba7023d171e430cb9524d21a774725d/.DS_Store -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | .task-pachpict/ 2 | _xirsys_connect.js 3 | examples/_xirsys_connect.js 4 | 5 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | xsdk 2 | ==== 3 | 4 | This repository contains simple examples for the new XirSys platform. Each of the examples are created to make it easier to use and understand the XirSys API. Eventually, this repo will house the public SDK for XirSys. 5 | 6 | The SDK and demos are still in active development. At present the Signal and SimpleWebRTC demos are up to date and functional examples of the Xirsys platform. The other demos will be brought up to speed and added to this repository soon. 7 | 8 | To get started we recommend reading the WebRTC Walkthrough documentation. 9 | 10 | Changes 11 | ------- 12 | 13 | ##### 07/09/2016 14 | Update SimpleWebRTC demo to use XirSys signalling. 15 | 16 | ##### 22/12/2015 17 | All demos have been updated over the last six months. A walkthrough guide has been added. 18 | 19 | ##### 23/06/2015 20 | Removed non-working demos for now, leaving only signalling and SimpleWebRTC demos. Other demos will be added back to this repo shortly. 21 | 22 | ##### 03/06/2015 23 | Multitude of small improvements, focusing on setting the Signal and WebRTC demos working well. 24 | 25 | ##### 20/03/2015 26 | Added screenshare example. To use, invoke Chrome with flags: 27 | 28 | --enable-usermedia-screen-capturing // enable screen capture 29 | 30 | --allow-http-screen-capture // enable non-SSL domain support (for localhost testing) 31 | 32 | Updated docs to conform to new signalling packet type. 33 | 34 | ##### 31/03/2015 35 | Implement handshake for pub/sub (one-to-many). Pub/sub is still in development and cannot be used. However, the publish example shows how pub/sub handshakes can be implemented, now. See docs for further info. 36 | 37 | SimpleWebRTC 38 | ------------ 39 | 40 | The SimpleWebRTC demo is a great example of using the XirSys platform. The signalling for the SimpleWebRTC demo is based off of the demo server supplied by &Yet for use with SimpleWebRTC. The version of SimpleWebRTC supplied in the thirdparty directory is the standard and latest distribution of SimpleWebRTC. This is augmented by the files in the lib directory which update SimpleWebRTC to be compatible with both XirSys signalling and XirSys TURN servers. 41 | -------------------------------------------------------------------------------- /examples/xirsys_connect.js: -------------------------------------------------------------------------------- 1 | // 'ident' and 'secret' should ideally be passed server-side for security purposes. 2 | // If secureTokenRetrieval is true then you should remove these two values. 3 | 4 | // Insecure method 5 | var xirsysConnect = { 6 | secureTokenRetrieval : false, 7 | data : { 8 | domain : 'your-domain.com', 9 | application : 'default', 10 | room : 'default', 11 | ident : 'your-ident', 12 | secret : 'your-secret-key', 13 | secure : 1 14 | } 15 | }; 16 | 17 | // Secure method 18 | /*var xirsysConnect = { 19 | secureTokenRetrieval : true, 20 | server : '../getToken.php', 21 | data : { 22 | domain : '< www.yourdomain.com >', 23 | application : 'default', 24 | room : 'default', 25 | secure : 1 26 | } 27 | };*/ 28 | 29 | -------------------------------------------------------------------------------- /images/arrow_hide.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xirdev/xsdk/5a38e83f0ba7023d171e430cb9524d21a774725d/images/arrow_hide.png -------------------------------------------------------------------------------- /images/arrow_show.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xirdev/xsdk/5a38e83f0ba7023d171e430cb9524d21a774725d/images/arrow_show.png -------------------------------------------------------------------------------- /images/brand-logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xirdev/xsdk/5a38e83f0ba7023d171e430cb9524d21a774725d/images/brand-logo.png -------------------------------------------------------------------------------- /images/chat-on.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xirdev/xsdk/5a38e83f0ba7023d171e430cb9524d21a774725d/images/chat-on.png -------------------------------------------------------------------------------- /images/end-call-grn.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xirdev/xsdk/5a38e83f0ba7023d171e430cb9524d21a774725d/images/end-call-grn.png -------------------------------------------------------------------------------- /images/end-call-wt.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xirdev/xsdk/5a38e83f0ba7023d171e430cb9524d21a774725d/images/end-call-wt.png -------------------------------------------------------------------------------- /images/end-call.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xirdev/xsdk/5a38e83f0ba7023d171e430cb9524d21a774725d/images/end-call.png -------------------------------------------------------------------------------- /images/expand.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xirdev/xsdk/5a38e83f0ba7023d171e430cb9524d21a774725d/images/expand.png -------------------------------------------------------------------------------- /images/full-screen.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xirdev/xsdk/5a38e83f0ba7023d171e430cb9524d21a774725d/images/full-screen.png -------------------------------------------------------------------------------- /images/sign-out-grn.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xirdev/xsdk/5a38e83f0ba7023d171e430cb9524d21a774725d/images/sign-out-grn.png -------------------------------------------------------------------------------- /images/sign-out.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xirdev/xsdk/5a38e83f0ba7023d171e430cb9524d21a774725d/images/sign-out.png -------------------------------------------------------------------------------- /images/start-call-grn.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xirdev/xsdk/5a38e83f0ba7023d171e430cb9524d21a774725d/images/start-call-grn.png -------------------------------------------------------------------------------- /images/start-call.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xirdev/xsdk/5a38e83f0ba7023d171e430cb9524d21a774725d/images/start-call.png -------------------------------------------------------------------------------- /images/user-icon-sm-grn.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xirdev/xsdk/5a38e83f0ba7023d171e430cb9524d21a774725d/images/user-icon-sm-grn.png -------------------------------------------------------------------------------- /images/user-icon-sm.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xirdev/xsdk/5a38e83f0ba7023d171e430cb9524d21a774725d/images/user-icon-sm.png -------------------------------------------------------------------------------- /lib/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xirdev/xsdk/5a38e83f0ba7023d171e430cb9524d21a774725d/lib/.DS_Store -------------------------------------------------------------------------------- /lib/xirsys.api.js: -------------------------------------------------------------------------------- 1 | /********************************************************************************* 2 | The MIT License (MIT) 3 | 4 | Copyright (c) 2014 XirSys 5 | 6 | Permission is hereby granted, free of charge, to any person obtaining a copy 7 | of this software and associated documentation files (the "Software"), to deal 8 | in the Software without restriction, including without limitation the rights 9 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 10 | copies of the Software, and to permit persons to whom the Software is 11 | furnished to do so, subject to the following conditions: 12 | 13 | The above copyright notice and this permission notice shall be included in 14 | all copies or substantial portions of the Software. 15 | 16 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 17 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 18 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 19 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 20 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 21 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 22 | THE SOFTWARE. 23 | 24 | ******************************************************************************** 25 | 26 | This script provides functionality for connecting to the 27 | XirSys API endpoints. 28 | 29 | No external libraries are required. However, if supporting an 30 | older browser (earlier than Internet Explorer 8, Firefox 3.1, 31 | Safari 4, and Chrome 3), then you may want to use the open 32 | source JSON library by Douglas Crockford : 33 | (https://github.com/douglascrockford/JSON-js) 34 | 35 | *********************************************************************************/ 36 | 37 | 'use strict'; 38 | 39 | (function () { 40 | 41 | /********************************************************************************* 42 | * For full use of this class, see the information at the top of this script. 43 | *********************************************************************************/ 44 | 45 | $xirsys.class.create({ 46 | namespace : 'api', 47 | constructor : function ($opts, $url) { 48 | if (!!$url) { 49 | $xirsys.api.iceUrl = $url + "ice"; 50 | } 51 | this.data = $opts; 52 | }, 53 | fields : { 54 | ice : null 55 | }, 56 | methods : { 57 | getIceServers : function ($cb) { 58 | var self = this; 59 | $xirsys.ajax.do({ 60 | url: $xirsys.api.iceUrl, 61 | method: 'POST', // In http://xirsys.com/guide/ it uses a GET rather than a POST ... Should resolve. 62 | data: self.xirsys_opts 63 | }) 64 | .done(function($data) { 65 | self.ice = $data.d; 66 | $cb.apply(this, [self.ice]); 67 | }); 68 | } 69 | }, 70 | statics : { 71 | iceUrl : $xirsys.baseUrl + "ice" 72 | } 73 | }); 74 | 75 | })(); 76 | -------------------------------------------------------------------------------- /lib/xirsys.databind.js: -------------------------------------------------------------------------------- 1 | /********************************************************************************* 2 | The MIT License (MIT) 3 | 4 | Copyright (c) 2014 XirSys 5 | 6 | @author: Lee Sylvester 7 | 8 | Permission is hereby granted, free of charge, to any person obtaining a copy 9 | of this software and associated documentation files (the "Software"), to deal 10 | in the Software without restriction, including without limitation the rights 11 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 12 | copies of the Software, and to permit persons to whom the Software is 13 | furnished to do so, subject to the following conditions: 14 | 15 | The above copyright notice and this permission notice shall be included in 16 | all copies or substantial portions of the Software. 17 | 18 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 19 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 20 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 21 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 22 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 23 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 24 | THE SOFTWARE. 25 | 26 | *********************************************************************************/ 27 | 28 | 'use strict'; 29 | 30 | (function () { 31 | 32 | $xirsys.class.create({ 33 | namespace : 'databind', 34 | inherits : $xirsys.events, 35 | constructor : function ($id, $cb) { 36 | this.init($id, $cb); 37 | }, 38 | methods : { 39 | init : function($id, $cb) { 40 | this.id = $id; 41 | this.cb = $cb; 42 | this.attr = "data-bind-" + $id; 43 | this.msg = $id + ":change"; 44 | if (document.addEventListener) 45 | document.addEventListener("change", this.change_handler.bind(this), false); 46 | else 47 | document.attachEvent("onChange", this.change_handler.bind(this)); 48 | $xirsys.events.getInstance().on(this.msg, this.msg_handler.bind(this)); 49 | }, 50 | change_handler : function($evt) { 51 | var trgt = $evt.target || $evt.srcElement, 52 | prop_name = trgt.getAttribute(this.attr); 53 | if (!!prop_name && prop_name !== "") 54 | $xirsys.events.getInstance().emit(this.msg, prop_name, trgt.value); 55 | }, 56 | msg_handler : function($evt, $prop, $val) { 57 | var elems = document.querySelectorAll("[" + this.attr + "='" + $prop + "']"), 58 | tag_name; 59 | 60 | if (this.cb) 61 | this.cb.call(this, $val); 62 | 63 | for (var i = 0, len = elems.length; i < len; i++) { 64 | tag_name = elems[i].tagName.toLowerCase(); 65 | 66 | if (tag_name === "input" || tag_name === "textarea" || tag_name === "select") 67 | elems[i].value = $val; 68 | else 69 | elems[i].innerHTML = $val; 70 | } 71 | } 72 | } 73 | }) 74 | 75 | })(); -------------------------------------------------------------------------------- /lib/xirsys.model.js: -------------------------------------------------------------------------------- 1 | /********************************************************************************* 2 | The MIT License (MIT) 3 | 4 | Copyright (c) 2014 XirSys 5 | 6 | @author: Lee Sylvester 7 | 8 | Permission is hereby granted, free of charge, to any person obtaining a copy 9 | of this software and associated documentation files (the "Software"), to deal 10 | in the Software without restriction, including without limitation the rights 11 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 12 | copies of the Software, and to permit persons to whom the Software is 13 | furnished to do so, subject to the following conditions: 14 | 15 | The above copyright notice and this permission notice shall be included in 16 | all copies or substantial portions of the Software. 17 | 18 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 19 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 20 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 21 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 22 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 23 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 24 | THE SOFTWARE. 25 | 26 | *********************************************************************************/ 27 | 28 | 'use strict'; 29 | 30 | (function () { 31 | 32 | var cls = $xirsys.class.create({ 33 | namespace : 'model', 34 | inherits : $xirsys.databind, 35 | constructor : function ($id, $cb) { 36 | cls.Super.init.call(this, $id, $cb); 37 | this.id = $id; 38 | }, 39 | fields : { 40 | attrs : {} 41 | }, 42 | methods : { 43 | set: function($attr, $val) { 44 | this.attrs[$attr] = $val; 45 | $xirsys.events.getInstance().emit(this.id + ":change", $attr, $val, this); 46 | }, 47 | get: function($attr) { 48 | return this.attrs[$attr]; 49 | } 50 | } 51 | }) 52 | 53 | })(); -------------------------------------------------------------------------------- /lib/xirsys.simplewebrtc.js: -------------------------------------------------------------------------------- 1 | /********************************************************************************* 2 | The MIT License (MIT) 3 | 4 | Copyright (c) 2014 XirSys 5 | 6 | Permission is hereby granted, free of charge, to any person obtaining a copy 7 | of this software and associated documentation files (the "Software"), to deal 8 | in the Software without restriction, including without limitation the rights 9 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 10 | copies of the Software, and to permit persons to whom the Software is 11 | furnished to do so, subject to the following conditions: 12 | 13 | The above copyright notice and this permission notice shall be included in 14 | all copies or substantial portions of the Software. 15 | 16 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 17 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 18 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 19 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 20 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 21 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 22 | THE SOFTWARE. 23 | 24 | *********************************************************************************/ 25 | 26 | 'use strict'; 27 | 28 | (function () { 29 | 30 | $xirsys.class.create({ 31 | namespace : 'simplewebrtc', 32 | // $url must include a trailing forward stroke 33 | constructor : function ($url) { 34 | var c = $xirsys.simplewebrtc; 35 | if (!!$url) { 36 | c.tokenUrl = $url + 'signal/token'; 37 | c.iceUrl = $url + 'ice'; 38 | c.roomUrl = $url + 'room'; 39 | c.wsUrl = $url + 'signal/list'; 40 | } 41 | }, 42 | fields : { 43 | connectionTypes: { 44 | default: 'default', 45 | direct: 'direct', 46 | server: 'server' 47 | }, 48 | token : "", 49 | ice : [], 50 | xirsys_opts : null 51 | }, 52 | methods : { 53 | connect : function ($opts, $rtcOpts, $resp) { 54 | this.xirsys_opts = $opts; 55 | $rtcOpts = $rtcOpts || {}; 56 | var self = this; 57 | self.xirsysRequest($xirsys.simplewebrtc.wsUrl, function ($wdata) { 58 | self.ws = $wdata.d.value; 59 | $rtcOpts.url = "ws" + self.ws.substr(2, self.ws.length); 60 | $rtcOpts.connection = new $xirsys.connection(self, null, $opts); 61 | self.ref = new SimpleWebRTC($rtcOpts); 62 | $resp.apply(self, [self.ref]); 63 | }); 64 | }, 65 | on : function ($ev, $fun) { 66 | this.ref.on($ev, $fun); 67 | }, 68 | getDomId : function ($peer) { 69 | return this.ref.getDomId($peer); 70 | }, 71 | capabilities : function () { 72 | return this.ref.capabilities; 73 | }, 74 | createRoom : function ($room, $fun) { 75 | var self = this; 76 | if (!!$room) { 77 | this.xirsys_opts.room = $room; 78 | } 79 | self.ref.createRoom($room, $fun); 80 | }, 81 | prepareRoom : function ($room) { 82 | if (!!$room) { 83 | this.prepare_room = $room; 84 | this.ref.sessionReady = true; 85 | } 86 | }, 87 | joinRoom : function ($room) { 88 | var self = this; 89 | if (!!$room) { 90 | this.xirsys_opts.room = $room; 91 | } 92 | self.ref.joinRoom($room); 93 | }, 94 | leaveRoom : function() { 95 | this.ref.leaveRoom(); 96 | }, 97 | xirsysRequest : function ($url, $cb) { 98 | var self = this; 99 | $xirsys.ajax.do({ 100 | url: $url, 101 | method: 'POST', 102 | data: self.xirsys_opts 103 | }) 104 | .done($cb); 105 | }, 106 | getLocalScreen : function () { 107 | return this.ref.getLocalScreen(); 108 | }, 109 | stopScreenShare : function () { 110 | this.ref.stopScreenShare(); 111 | }, 112 | shareScreen : function ($handle) { 113 | this.ref.shareScreen($handle); 114 | } 115 | }, 116 | statics : { 117 | tokenUrl : $xirsys.baseUrl + "signal/token", 118 | iceUrl : $xirsys.baseUrl + "ice", 119 | wsUrl : $xirsys.baseUrl + "signal/list", 120 | roomUrl : $xirsys.baseUrl + "room" 121 | } 122 | }); 123 | 124 | })(); 125 | -------------------------------------------------------------------------------- /thirdparty/easyrtc/.gitignore: -------------------------------------------------------------------------------- 1 | # This file is used to restrict unnecessary files from being committed to git. 2 | # It the same as the recommended default, but with an addition of restricting 3 | # node_modules from being committed and .log files. 4 | 5 | ################# 6 | ## Eclipse 7 | ################# 8 | 9 | *.pydevproject 10 | .project 11 | .metadata 12 | bin/ 13 | tmp/ 14 | *.tmp 15 | *.bak 16 | *.swp 17 | *~.nib 18 | local.properties 19 | .classpath 20 | .settings/ 21 | .loadpath 22 | 23 | # External tool builders 24 | .externalToolBuilders/ 25 | 26 | # Locally stored "Eclipse launch configurations" 27 | *.launch 28 | 29 | # CDT-specific 30 | .cproject 31 | 32 | # PDT-specific 33 | .buildpath 34 | 35 | 36 | ################# 37 | ## Visual Studio 38 | ################# 39 | 40 | ## Ignore Visual Studio temporary files, build results, and 41 | ## files generated by popular Visual Studio add-ons. 42 | 43 | # User-specific files 44 | *.suo 45 | *.user 46 | *.sln.docstates 47 | 48 | # Build results 49 | [Dd]ebug/ 50 | [Rr]elease/ 51 | *_i.c 52 | *_p.c 53 | *.ilk 54 | *.meta 55 | *.obj 56 | *.pch 57 | *.pdb 58 | *.pgc 59 | *.pgd 60 | *.rsp 61 | *.sbr 62 | *.tlb 63 | *.tli 64 | *.tlh 65 | *.tmp 66 | *.vspscc 67 | .builds 68 | *.dotCover 69 | 70 | ## TODO: If you have NuGet Package Restore enabled, uncomment this 71 | #packages/ 72 | 73 | # Visual C++ cache files 74 | ipch/ 75 | *.aps 76 | *.ncb 77 | *.opensdf 78 | *.sdf 79 | 80 | # Visual Studio profiler 81 | *.psess 82 | *.vsp 83 | 84 | # ReSharper is a .NET coding add-in 85 | _ReSharper* 86 | 87 | # Installshield output folder 88 | [Ee]xpress 89 | 90 | # DocProject is a documentation generator add-in 91 | DocProject/buildhelp/ 92 | DocProject/Help/*.HxT 93 | DocProject/Help/*.HxC 94 | DocProject/Help/*.hhc 95 | DocProject/Help/*.hhk 96 | DocProject/Help/*.hhp 97 | DocProject/Help/Html2 98 | DocProject/Help/html 99 | 100 | # Click-Once directory 101 | publish 102 | 103 | # Others 104 | [Bb]in 105 | [Oo]bj 106 | sql 107 | TestResults 108 | *.Cache 109 | ClientBin 110 | stylecop.* 111 | ~$* 112 | *.dbmdl 113 | Generated_Code #added for RIA/Silverlight projects 114 | 115 | # Backup & report files from converting an old project file to a newer 116 | # Visual Studio version. Backup files are not needed, because we have git ;-) 117 | _UpgradeReport_Files/ 118 | Backup*/ 119 | UpgradeLog*.XML 120 | 121 | 122 | 123 | ############ 124 | ## Windows 125 | ############ 126 | 127 | # Windows image file caches 128 | Thumbs.db 129 | 130 | # Folder config file 131 | Desktop.ini 132 | 133 | 134 | ############# 135 | ## Python 136 | ############# 137 | 138 | *.py[co] 139 | 140 | # Packages 141 | *.egg 142 | *.egg-info 143 | dist 144 | build 145 | eggs 146 | parts 147 | bin 148 | var 149 | sdist 150 | develop-eggs 151 | .installed.cfg 152 | 153 | # Installer logs 154 | pip-log.txt 155 | 156 | # Unit test / coverage reports 157 | .coverage 158 | .tox 159 | 160 | #Translations 161 | *.mo 162 | 163 | #Mr Developer 164 | .mr.developer.cfg 165 | 166 | # Mac crap 167 | .DS_Store 168 | 169 | ######### 170 | # Node.js 171 | ######### 172 | node_modules 173 | 174 | ######### 175 | # EasyRTC 176 | ######### 177 | *.log 178 | config_override.js 179 | nbproject 180 | /.idea 181 | desktopCapture 182 | /api/labs/desktopCapture 183 | -------------------------------------------------------------------------------- /thirdparty/easyrtc/LICENSE: -------------------------------------------------------------------------------- 1 | Copyright (c) 2015, Priologic Software Inc. 2 | All rights reserved. 3 | 4 | Redistribution and use in source and binary forms, with or without 5 | modification, are permitted provided that the following conditions are met: 6 | 7 | * Redistributions of source code must retain the above copyright notice, 8 | this list of conditions and the following disclaimer. 9 | * Redistributions in binary form must reproduce the above copyright 10 | notice, this list of conditions and the following disclaimer in the 11 | documentation and/or other materials provided with the distribution. 12 | 13 | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 14 | AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 15 | IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 16 | ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE 17 | LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 18 | CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 19 | SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 20 | INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 21 | CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 22 | ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 23 | POSSIBILITY OF SUCH DAMAGE. -------------------------------------------------------------------------------- /thirdparty/easyrtc/api/buildEnglishVersions.bat: -------------------------------------------------------------------------------- 1 | type adapter.js easyrtc_int.js easy_app.js easyrtc_lang_en.js > easyrtc.js 2 | -------------------------------------------------------------------------------- /thirdparty/easyrtc/api/buildEnglishVersions.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | cat adapter.js easyrtc_int.js easy_app.js easyrtc_lang_en.js > easyrtc.js 3 | -------------------------------------------------------------------------------- /thirdparty/easyrtc/api/easyrtc.css: -------------------------------------------------------------------------------- 1 | /* 2 | * These styles define the appearance of the default error dialog box. 3 | */ 4 | #easyrtcErrorDialog { 5 | background-color: #ffe0e0; 6 | 7 | position:fixed; 8 | right: 10px; 9 | top:20px; 10 | z-index: 30; 11 | opacity: 0.95; 12 | padding: 0.5em; 13 | border-radius:10px; 14 | border-color: red; 15 | border-style: solid; 16 | border-width: 1px; 17 | -webkit-box-shadow: 2px 2px 8px 1px rgba(0,0,0,0.9); 18 | box-shadow: 2px 2px 8px 1px rgba(0,0,0,0.9); 19 | } 20 | 21 | .easyrtcErrorDialog_title { 22 | position:static; 23 | text-align:center; 24 | font-size: 18px; 25 | font-weight: bold; 26 | margin-bottom: 0.5em; 27 | clear:both; 28 | } 29 | 30 | #easyrtcErrorDialog_body{ 31 | position:static; 32 | height:150px; 33 | overflow-y:auto; 34 | } 35 | 36 | .easyrtcErrorDialog_element { 37 | position:static; 38 | font-style: italic; 39 | font-size: 12px; 40 | width:300px; 41 | margin-bottom: 0.5em; 42 | clear: both; 43 | float:left; 44 | } 45 | 46 | .easyrtcErrorDialog_okayButton { 47 | position:static; 48 | clear:both; 49 | float:right; 50 | } 51 | 52 | .easyrtcMirror { 53 | -webkit-transform: scaleX(-1); 54 | -moz-transform: scaleX(-1); 55 | -ms-transform: scaleX(-1); 56 | -o-transform: scaleX(-1); 57 | transform: scaleX(-1); 58 | } 59 | 60 | .easyrtc_closeButton { 61 | z-index: 2; 62 | position: absolute; 63 | width: 40px; 64 | height:40px; 65 | right: 0px; 66 | top: 0px; 67 | background-image: url('data:image/svg+xml;utf8, '); 68 | opacity: 0.3; 69 | } 70 | 71 | .easyrtc_closeButton:hover { 72 | opacity: 1; 73 | } 74 | 75 | -------------------------------------------------------------------------------- /thirdparty/easyrtc/api/easyrtc_lang_en.js: -------------------------------------------------------------------------------- 1 | 2 | var easyrtc_constantStrings = { 3 | "unableToEnterRoom":"Unable to enter room {0} because {1}" , 4 | "resolutionWarning": "Requested video size of {0}x{1} but got size of {2}x{3}", 5 | "badUserName": "Illegal username {0}", 6 | "localMediaError": "Error getting local media stream: {0}", 7 | "miscSignalError": "Miscellaneous error from signalling server. It may be ignorable.", 8 | "noServer": "Unable to reach the EasyRTC signalling server.", 9 | "badsocket": "Socket.io connect event fired with bad websocket.", 10 | "icf": "Internal communications failure", 11 | "statsNotSupported":"call statistics not supported by this browser, try Chrome.", 12 | "noWebrtcSupport":"Your browser doesn't appear to support WebRTC.", 13 | "gumFailed":"Failed to get access to local media. Error code was {0}.", 14 | "requireAudioOrVideo":"At least one of audio and video must be provided" 15 | }; -------------------------------------------------------------------------------- /thirdparty/easyrtc/api/img/LICENSE: -------------------------------------------------------------------------------- 1 | Licenses for images In img folder 2 | ---------------------------------- 3 | 4 | Logos for Priologic Software Inc, and EasyRTC are owned by Priologic Software Inc. 5 | 6 | Permission is granted to use powered_by_easyrtc.png within your own application as long as it is not altered in any way. -------------------------------------------------------------------------------- /thirdparty/easyrtc/api/img/easyrtc.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xirdev/xsdk/5a38e83f0ba7023d171e430cb9524d21a774725d/thirdparty/easyrtc/api/img/easyrtc.png -------------------------------------------------------------------------------- /thirdparty/easyrtc/api/img/powered_by_easyrtc.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xirdev/xsdk/5a38e83f0ba7023d171e430cb9524d21a774725d/thirdparty/easyrtc/api/img/powered_by_easyrtc.png -------------------------------------------------------------------------------- /thirdparty/easyrtc/api/img/priologic_logo_white.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xirdev/xsdk/5a38e83f0ba7023d171e430cb9524d21a774725d/thirdparty/easyrtc/api/img/priologic_logo_white.png -------------------------------------------------------------------------------- /thirdparty/easyrtc/api/img/x.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 6 | 7 | 8 | 9 | 11 | 12 | 13 | 15 | 16 | 17 | 18 | 19 | 21 | 22 | 23 | 25 | 26 | 27 | 28 | -------------------------------------------------------------------------------- /thirdparty/easyrtc/api/labs/README.md: -------------------------------------------------------------------------------- 1 | Labs Folder 2 | =========== 3 | The code in the labs folder is experimental. It may change, it hasn't been thoroughly tested, use at your own risk. 4 | -------------------------------------------------------------------------------- /thirdparty/easyrtc/api/labs/desktopCapture.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xirdev/xsdk/5a38e83f0ba7023d171e430cb9524d21a774725d/thirdparty/easyrtc/api/labs/desktopCapture.zip -------------------------------------------------------------------------------- /thirdparty/easyrtc/api/labs/desktop_capture_iframe_version.js: -------------------------------------------------------------------------------- 1 | 2 | // This file is a modification of Muaz Khan's getScreenId.js. It uses loads an iframe 3 | // pointed at Muaz Khan's page, and then communicates with that Iframe. You can also point 4 | // it at other urls. 5 | // 6 | // Technically, it is possible to desktop capture without iframes and for a production system. 7 | // However, this solution get will get you running with the minimal effort on your side. 8 | // 9 | // // 10 | // 11 | // // Last time updated at July 29, 2014, 08:32:23 12 | // Latest file can be found here: https://cdn.webrtc-experiment.com/getScreenId.js 13 | 14 | // Muaz Khan - www.MuazKhan.com 15 | // MIT License - www.WebRTC-Experiment.com/licence 16 | // Documentation - https://github.com/muaz-khan/WebRTC-Experiment/tree/master/getScreenId.js 17 | // Modified by Eric Davies Sept 1/ 2014. 18 | // 19 | // ______________ 20 | // getScreenId.js 21 | 22 | 23 | 24 | (function() { 25 | /** Create a local media stream for desktop capture. 26 | * This will fail if a desktop capture extension is not installed. 27 | * not granting permission. 28 | * @param {function(Object)} successCallback - will be called with localmedia stream on success. 29 | * @param {function(String,String)} errorCallback - is called with an error code and error description. 30 | * @param {String} streamName - an optional name for the media source so you can use multiple cameras and screen share simultaneously. 31 | * @param {String} iframeUrl - an optional url for the iframe. The default is to use Muaz Khan's. 32 | * @example 33 | * easyrtc.initMediaSource( 34 | * function(mediastream){ 35 | * easyrtc.setVideoObjectSrc( document.getElementById("mirrorVideo"), mediastream); 36 | * }, 37 | * function(errorCode, errorText){ 38 | * easyrtc.showError(errorCode, errorText); 39 | * }); 40 | * 41 | */ 42 | var iframeUrl = 'https://www.webrtc-experiment.com/getSourceId/'; 43 | 44 | easyrtc.initDesktopStream= function(successCallback, failureCallback, streamName) { 45 | // for Firefox: 46 | // sourceId == 'firefox' 47 | // screen_constraints = {...} 48 | 49 | 50 | 51 | if (!!navigator.mozGetUserMedia) { 52 | easyrtc._presetMediaConstraints = { 53 | video: { 54 | mozMediaSource: 'window', 55 | mediaSource: 'window', 56 | maxWidth: 1920, 57 | maxHeight: 1080, 58 | minAspectRatio: 1.77 59 | }, 60 | audio: false 61 | }; 62 | easyrtc.initMediaSource(successCallback, failureCallback, streamName); 63 | return; 64 | } 65 | 66 | postMessage(); 67 | 68 | var cb = function(event) { 69 | if (!event.data) return; 70 | 71 | if (event.data.chromeMediaSourceId) { 72 | window.removeEventListener("message", cb); 73 | if (event.data.chromeMediaSourceId === 'PermissionDeniedError') { 74 | failureCallback(easyrtc.errCodes.MEDIA_ERR, 'permission-denied'); 75 | } else { 76 | easyrtc._presetMediaConstraints = { 77 | video: { 78 | mandatory: { 79 | chromeMediaSource:'desktop', 80 | chromeMediaSourceId: event.data.chromeMediaSourceId, 81 | maxWidth: 1920, 82 | maxHeight: 1080, 83 | minAspectRatio: 1.77 84 | } 85 | }, 86 | audio: false 87 | } 88 | easyrtc.initMediaSource(successCallback, failureCallback, streamName); 89 | } 90 | } 91 | 92 | if (event.data.chromeExtensionStatus) { 93 | console.log("extension status is ", event.data.chromeExtensionStatus); 94 | } 95 | }; 96 | easyrtc.desktopCaptureInstalled = null; 97 | window.addEventListener('message', cb); 98 | }; 99 | 100 | 101 | var iframe = document.createElement('iframe'); 102 | 103 | function postMessage() { 104 | if (!iframe.isLoaded) { 105 | setTimeout(postMessage, 100); 106 | return; 107 | } 108 | 109 | iframe.contentWindow.postMessage({ 110 | captureSourceId: true 111 | }, '*'); 112 | } 113 | 114 | iframe.onload = function() { 115 | iframe.isLoaded = true; 116 | }; 117 | 118 | iframe.src = iframeUrl; 119 | 120 | iframe.style.display = 'none'; 121 | (document.body || document.documentElement).appendChild(iframe); 122 | })(); -------------------------------------------------------------------------------- /thirdparty/easyrtc/api/labs/inline-installcode.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 13 | 14 | 35 | 36 | -------------------------------------------------------------------------------- /thirdparty/easyrtc/demos/css/demo4.css: -------------------------------------------------------------------------------- 1 | #demoContainer { 2 | position:relative; 3 | } 4 | #connectControls { 5 | float:left; 6 | width:250px; 7 | text-align:center; 8 | border: 2px solid black; 9 | } 10 | #otherClients { 11 | height:200px; 12 | overflow-y:scroll; 13 | } 14 | #selfVideo { 15 | height:225px; 16 | width:300px; 17 | float:left; 18 | border:1px solid gray; 19 | margin-left:10px; 20 | } 21 | .callerVideoBox { 22 | position:relative; 23 | } 24 | .callerVideo { 25 | height:225px; 26 | width:300px; 27 | border:1px solid gray; 28 | margin-left:10px; 29 | } 30 | .easyrtc_closeButton { 31 | position:absolute; 32 | right:2px; 33 | background-color: transparent; 34 | background-image: url('../images/button_close.png'); 35 | border:none; 36 | margin:0px; 37 | padding:0px; 38 | top:0px; 39 | width:56px; 40 | height:56px; 41 | z-index: 2; 42 | opacity:0.4; 43 | } 44 | .easyrtc_closeButton:hover { 45 | cursor: pointer; 46 | opacity:1; 47 | } 48 | -------------------------------------------------------------------------------- /thirdparty/easyrtc/demos/css/demo_audio_video_simple.css: -------------------------------------------------------------------------------- 1 | #demoContainer { 2 | position:relative; 3 | } 4 | #connectControls { 5 | float:left; 6 | width:250px; 7 | text-align:center; 8 | border: 2px solid black; 9 | } 10 | #otherClients { 11 | height:200px; 12 | overflow-y:scroll; 13 | } 14 | #selfVideo { 15 | height:225px; 16 | width:300px; 17 | float:left; 18 | border:1px solid gray; 19 | margin-left:10px; 20 | } 21 | 22 | #callerVideo { 23 | height:225px; 24 | width:300px; 25 | border:1px solid gray; 26 | margin-left:10px; 27 | } -------------------------------------------------------------------------------- /thirdparty/easyrtc/demos/css/demo_audio_video_simple_hd.css: -------------------------------------------------------------------------------- 1 | #demoContainer { 2 | position:relative; 3 | } 4 | #container { 5 | width:1330px; 6 | } 7 | .callButton { 8 | float:left; 9 | } 10 | #connectControls { 11 | float:left; 12 | } 13 | #otherClients { 14 | height:50px; 15 | } 16 | #selfVideo { 17 | volume: 0; 18 | position:absolute; 19 | left: 10px; 20 | top:10px; 21 | z-index: 2; 22 | opacity: 0.8; 23 | height:120px; 24 | width:160px; 25 | } 26 | #callerVideoBox { 27 | position:relative; 28 | border: 1px solid gray; 29 | } 30 | #callerVideo { 31 | height:720px; 32 | width:1280px; 33 | } 34 | .closeButton { 35 | position:absolute; 36 | right:2px; 37 | background-color: transparent; 38 | background-image: url('../images/button_close.png'); 39 | border:none; 40 | margin:0px; 41 | padding:0px; 42 | top:0px; 43 | width:56px; 44 | height:56px; 45 | z-index: 2; 46 | opacity:0.4; 47 | } 48 | .closeButton:hover { 49 | cursor: pointer; 50 | opacity:1; 51 | } -------------------------------------------------------------------------------- /thirdparty/easyrtc/demos/css/demo_lowbandwidth.css: -------------------------------------------------------------------------------- 1 | #demoContainer { 2 | position:relative; 3 | } 4 | #connectControls { 5 | float:left; 6 | width:250px; 7 | text-align:center; 8 | border: 2px solid black; 9 | } 10 | #otherClients { 11 | height:200px; 12 | overflow-y:scroll; 13 | } 14 | #selfVideo { 15 | height:225px; 16 | width:300px; 17 | float:left; 18 | border:1px solid gray; 19 | margin-left:10px; 20 | } 21 | 22 | #callerVideo { 23 | height:225px; 24 | width:300px; 25 | border:1px solid gray; 26 | margin-left:10px; 27 | } -------------------------------------------------------------------------------- /thirdparty/easyrtc/demos/css/demo_room.css: -------------------------------------------------------------------------------- 1 | 2 | .transit { 3 | transition: left 1s, top 1s, right 1s, bottom 1s, width 1s, height 1s, transform 1s; 4 | -moz-transition: left 1s, top 1s, right 1s, bottom 1s, width 1s, height 1s, -moz-transform 1s; 5 | -webkit-transition: left 1s, top 1s, right 1s, bottom 1s, width 1s, height 1s, -webkit-transform 1s; 6 | -o-transition: left 1s, top 1s, right 1s, bottom 1s, width 1s, height 1s,-o-transform 1s; 7 | } 8 | 9 | .hidden { 10 | background-color: transparent; 11 | border-color: 2px solid blue; 12 | } 13 | 14 | .boxCommon { 15 | position:absolute; 16 | } 17 | 18 | .closeButton { 19 | display: none; /* hide the easyApp's close button because we have our own */ 20 | } 21 | 22 | .thumbCommon { 23 | z-index:2; 24 | box-shadow: 5px 5px 5px #000000; 25 | } 26 | 27 | #controlArea { 28 | background-color: #ff8000; 29 | } 30 | 31 | body { 32 | background-color:#ffd0d0; 33 | margin-left:0px; 34 | margin-top:0px; 35 | } 36 | 37 | #killButton { 38 | opacity:0.7; 39 | } 40 | 41 | #killButton:hover { 42 | opacity:1.0; 43 | } 44 | 45 | #muteButton { 46 | opacity:0.7; 47 | } 48 | 49 | #muteButton:hover { 50 | opacity:1.0; 51 | } 52 | 53 | #textentryBox { 54 | border:2px solid #a0ffa0; 55 | border-radius:10px; 56 | z-index:5; 57 | position: absolute; 58 | background-color: #ffffff; 59 | box-shadow: 5px 5px 5px #000000; 60 | font-family: 'Courier New',Courier,monospace; 61 | } 62 | 63 | #textentryField { 64 | font-size:x-large; 65 | margin: 20px; 66 | } 67 | 68 | #textentrySubmit { 69 | font-size:larger; 70 | } 71 | 72 | #textentryCancel { 73 | font-size:larger; 74 | } 75 | -------------------------------------------------------------------------------- /thirdparty/easyrtc/demos/css/landing.css: -------------------------------------------------------------------------------- 1 | /* 2 | General CSS for easyrtc local landing site. 3 | Only general layout is here. 4 | Any CSS related directly to the operation of a demo is kept in another file. 5 | */ 6 | 7 | body { 8 | background-image:url("../images/bg_light.png"); 9 | font-family:Arial, Helvetica, sans-serif; 10 | } 11 | 12 | #container { 13 | width:960px; 14 | margin-left: auto; 15 | margin-right:auto; 16 | 17 | background-image:url("../images/bg_dark.png"); 18 | background-color:black; 19 | 20 | border-color: #FF6600; 21 | border-width: 1px; 22 | border-style: solid; 23 | border-radius:10px; 24 | } 25 | 26 | #logo_easyrtc { 27 | margin-top:5px; 28 | margin-left:5px; 29 | } 30 | #logo_priologic { 31 | margin-top:5px; 32 | margin-right:5px; 33 | } 34 | 35 | #menu { 36 | text-align: right; 37 | clear: both; 38 | padding-bottom: 2px; 39 | padding-top: 2px; 40 | } 41 | .menu_item { 42 | display: inline; 43 | text-decoration: none; 44 | border-color: gray; 45 | border-width: 2px; 46 | border-style: outset; 47 | color: white; 48 | padding: 0px 3px 0px 3px; 49 | background-color: rgba(0,0,0,.4); 50 | } 51 | .menu_item:hover { 52 | border-style:inset; 53 | background-color: rgba(100,100,100,0); 54 | } 55 | .menu_link { 56 | text-decoration:none; 57 | } 58 | .menu_link:focus { 59 | text-decoration:underline; 60 | } 61 | 62 | 63 | 64 | #main { 65 | background-color:white; 66 | overflow:hidden; 67 | padding-left: 10px; 68 | padding-right: 10px; 69 | } 70 | 71 | #footer { 72 | font-size: small; 73 | padding: 5px; 74 | color:white; 75 | min-height:60px; 76 | } 77 | #footer p { 78 | margin: 0px; 79 | color:white; 80 | text-align:center; 81 | } 82 | #footer a { 83 | color:white; 84 | } 85 | #license { 86 | font-size: x-small; 87 | } 88 | #logo_priologic { 89 | float:left; 90 | padding-top: 10px; 91 | margin-right: 10px; 92 | } 93 | #logo_pb_easyrtc { 94 | float:right; 95 | margin-left: 10px; 96 | } 97 | 98 | 99 | .demo_table { 100 | border-collapse:collapse; 101 | border:1px solid gray; 102 | } 103 | .demo_table th{ 104 | padding:3px; 105 | text-align:left; 106 | } 107 | .demo_table td{ 108 | border-top:1px solid gray; 109 | padding:3px; 110 | } 111 | .demo_table #browser_note{ 112 | text-align:center; 113 | font-size: smaller; 114 | color: gray; 115 | } 116 | 117 | hr { 118 | clear:both; 119 | } 120 | 121 | .prettyprint { 122 | white-space: pre-wrap; 123 | max-height:400px; 124 | overflow-y:scroll; 125 | } -------------------------------------------------------------------------------- /thirdparty/easyrtc/demos/demo_multiparty.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | Multiparty Chatroom 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 26 | 27 | 28 | 29 | 30 |
31 | 32 | 33 | -------------------------------------------------------------------------------- /thirdparty/easyrtc/demos/demo_reconnect.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | EasyRTC Demo: Reconnect 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | State =
Unconnected
16 | 17 | 18 | 19 | 20 | 21 | -------------------------------------------------------------------------------- /thirdparty/easyrtc/demos/images/LICENSE: -------------------------------------------------------------------------------- 1 | Licenses for images In demo folder 2 | ---------------------------------- 3 | 4 | Browser logos are copyright by their respective owner. 5 | 6 | Logos for Priologic Software Inc, and EasyRTC are owned by Priologic Software Inc. 7 | 8 | Permission is granted to use powered_by_easyrtc.png within your own application as long as it is not altered in any way. -------------------------------------------------------------------------------- /thirdparty/easyrtc/demos/images/bg_dark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xirdev/xsdk/5a38e83f0ba7023d171e430cb9524d21a774725d/thirdparty/easyrtc/demos/images/bg_dark.png -------------------------------------------------------------------------------- /thirdparty/easyrtc/demos/images/bg_light.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xirdev/xsdk/5a38e83f0ba7023d171e430cb9524d21a774725d/thirdparty/easyrtc/demos/images/bg_light.png -------------------------------------------------------------------------------- /thirdparty/easyrtc/demos/images/blank.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xirdev/xsdk/5a38e83f0ba7023d171e430cb9524d21a774725d/thirdparty/easyrtc/demos/images/blank.gif -------------------------------------------------------------------------------- /thirdparty/easyrtc/demos/images/br_chrome.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xirdev/xsdk/5a38e83f0ba7023d171e430cb9524d21a774725d/thirdparty/easyrtc/demos/images/br_chrome.png -------------------------------------------------------------------------------- /thirdparty/easyrtc/demos/images/br_chrome_canary.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xirdev/xsdk/5a38e83f0ba7023d171e430cb9524d21a774725d/thirdparty/easyrtc/demos/images/br_chrome_canary.png -------------------------------------------------------------------------------- /thirdparty/easyrtc/demos/images/br_ff.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xirdev/xsdk/5a38e83f0ba7023d171e430cb9524d21a774725d/thirdparty/easyrtc/demos/images/br_ff.png -------------------------------------------------------------------------------- /thirdparty/easyrtc/demos/images/br_ff_aurora.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xirdev/xsdk/5a38e83f0ba7023d171e430cb9524d21a774725d/thirdparty/easyrtc/demos/images/br_ff_aurora.png -------------------------------------------------------------------------------- /thirdparty/easyrtc/demos/images/br_ff_nightly.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xirdev/xsdk/5a38e83f0ba7023d171e430cb9524d21a774725d/thirdparty/easyrtc/demos/images/br_ff_nightly.png -------------------------------------------------------------------------------- /thirdparty/easyrtc/demos/images/br_ie.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xirdev/xsdk/5a38e83f0ba7023d171e430cb9524d21a774725d/thirdparty/easyrtc/demos/images/br_ie.png -------------------------------------------------------------------------------- /thirdparty/easyrtc/demos/images/br_opera.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xirdev/xsdk/5a38e83f0ba7023d171e430cb9524d21a774725d/thirdparty/easyrtc/demos/images/br_opera.png -------------------------------------------------------------------------------- /thirdparty/easyrtc/demos/images/br_safari.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xirdev/xsdk/5a38e83f0ba7023d171e430cb9524d21a774725d/thirdparty/easyrtc/demos/images/br_safari.png -------------------------------------------------------------------------------- /thirdparty/easyrtc/demos/images/br_status_fail.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xirdev/xsdk/5a38e83f0ba7023d171e430cb9524d21a774725d/thirdparty/easyrtc/demos/images/br_status_fail.png -------------------------------------------------------------------------------- /thirdparty/easyrtc/demos/images/br_status_pass.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xirdev/xsdk/5a38e83f0ba7023d171e430cb9524d21a774725d/thirdparty/easyrtc/demos/images/br_status_pass.png -------------------------------------------------------------------------------- /thirdparty/easyrtc/demos/images/br_status_warn.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xirdev/xsdk/5a38e83f0ba7023d171e430cb9524d21a774725d/thirdparty/easyrtc/demos/images/br_status_warn.png -------------------------------------------------------------------------------- /thirdparty/easyrtc/demos/images/button_close.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xirdev/xsdk/5a38e83f0ba7023d171e430cb9524d21a774725d/thirdparty/easyrtc/demos/images/button_close.png -------------------------------------------------------------------------------- /thirdparty/easyrtc/demos/images/button_mute.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xirdev/xsdk/5a38e83f0ba7023d171e430cb9524d21a774725d/thirdparty/easyrtc/demos/images/button_mute.png -------------------------------------------------------------------------------- /thirdparty/easyrtc/demos/images/button_refresh.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xirdev/xsdk/5a38e83f0ba7023d171e430cb9524d21a774725d/thirdparty/easyrtc/demos/images/button_refresh.png -------------------------------------------------------------------------------- /thirdparty/easyrtc/demos/images/button_unmute.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xirdev/xsdk/5a38e83f0ba7023d171e430cb9524d21a774725d/thirdparty/easyrtc/demos/images/button_unmute.png -------------------------------------------------------------------------------- /thirdparty/easyrtc/demos/images/by_priologic_logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xirdev/xsdk/5a38e83f0ba7023d171e430cb9524d21a774725d/thirdparty/easyrtc/demos/images/by_priologic_logo.png -------------------------------------------------------------------------------- /thirdparty/easyrtc/demos/images/cloud.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xirdev/xsdk/5a38e83f0ba7023d171e430cb9524d21a774725d/thirdparty/easyrtc/demos/images/cloud.png -------------------------------------------------------------------------------- /thirdparty/easyrtc/demos/images/easyrtc_logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xirdev/xsdk/5a38e83f0ba7023d171e430cb9524d21a774725d/thirdparty/easyrtc/demos/images/easyrtc_logo.png -------------------------------------------------------------------------------- /thirdparty/easyrtc/demos/images/irongrip.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xirdev/xsdk/5a38e83f0ba7023d171e430cb9524d21a774725d/thirdparty/easyrtc/demos/images/irongrip.png -------------------------------------------------------------------------------- /thirdparty/easyrtc/demos/images/powered_by_easyrtc.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xirdev/xsdk/5a38e83f0ba7023d171e430cb9524d21a774725d/thirdparty/easyrtc/demos/images/powered_by_easyrtc.png -------------------------------------------------------------------------------- /thirdparty/easyrtc/demos/images/priologic_logo_white.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xirdev/xsdk/5a38e83f0ba7023d171e430cb9524d21a774725d/thirdparty/easyrtc/demos/images/priologic_logo_white.png -------------------------------------------------------------------------------- /thirdparty/easyrtc/demos/images/textEntry.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xirdev/xsdk/5a38e83f0ba7023d171e430cb9524d21a774725d/thirdparty/easyrtc/demos/images/textEntry.png -------------------------------------------------------------------------------- /thirdparty/easyrtc/demos/js/demo4.js: -------------------------------------------------------------------------------- 1 | // 2 | //Copyright (c) 2015, Priologic Software Inc. 3 | //All rights reserved. 4 | // 5 | //Redistribution and use in source and binary forms, with or without 6 | //modification, are permitted provided that the following conditions are met: 7 | // 8 | // * Redistributions of source code must retain the above copyright notice, 9 | // this list of conditions and the following disclaimer. 10 | // * Redistributions in binary form must reproduce the above copyright 11 | // notice, this list of conditions and the following disclaimer in the 12 | // documentation and/or other materials provided with the distribution. 13 | // 14 | //THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 15 | //AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 16 | //IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 17 | //ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE 18 | //LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 19 | //CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 20 | //SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 21 | //INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 22 | //CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 23 | //ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 24 | //POSSIBILITY OF SUCH DAMAGE. 25 | // 26 | var selfEasyrtcid = ""; 27 | 28 | 29 | function connect() { 30 | easyrtc.enableDebug(false); 31 | easyrtc.setRoomOccupantListener(convertListToButtons); 32 | easyrtc.easyApp("easyrtc.demo4", "selfVideo", 33 | ["callerVideo", "callerVideo2", "callerVideo3"], loginSuccess, loginFailure); 34 | } 35 | 36 | 37 | function clearConnectList() { 38 | otherClientDiv = document.getElementById('otherClients'); 39 | while (otherClientDiv.hasChildNodes()) { 40 | otherClientDiv.removeChild(otherClientDiv.lastChild); 41 | } 42 | } 43 | 44 | 45 | function convertListToButtons (roomName, occupants, isPrimary) { 46 | clearConnectList(); 47 | var otherClientDiv = document.getElementById('otherClients'); 48 | for(var easyrtcid in occupants) { 49 | var button = document.createElement('button'); 50 | button.onclick = function(easyrtcid) { 51 | return function() { 52 | performCall(easyrtcid); 53 | }; 54 | }(easyrtcid); 55 | 56 | var label = document.createTextNode(easyrtcid); 57 | button.appendChild(label); 58 | otherClientDiv.appendChild(button); 59 | } 60 | } 61 | 62 | 63 | function performCall(otherEasyrtcid) { 64 | var acceptedCB = function(accepted, easyrtcid) { 65 | if( !accepted ) { 66 | alert("Sorry, your call to " + easyrtcid + " was rejected"); 67 | } 68 | }; 69 | var successCB = function() {}; 70 | var failureCB = function() {}; 71 | easyrtc.call(otherEasyrtcid, successCB, failureCB, acceptedCB); 72 | } 73 | 74 | 75 | function loginSuccess(easyrtcid) { 76 | selfEasyrtcid = easyrtcid; 77 | document.getElementById("iam").innerHTML = "I am " + easyrtc.cleanId(easyrtcid); 78 | } 79 | 80 | 81 | function loginFailure(errorCode, message) { 82 | easyrtc.showError(errorCode, message); 83 | } 84 | 85 | 86 | // Sets calls so they are automatically accepted (this is default behaviour) 87 | easyrtc.setAcceptChecker(function(easyrtcid, callback) { 88 | callback(true); 89 | } ); 90 | -------------------------------------------------------------------------------- /thirdparty/easyrtc/demos/js/demo_audio_video_simple.js: -------------------------------------------------------------------------------- 1 | var selfEasyrtcid = ""; 2 | 3 | 4 | function connect() { 5 | easyrtc.setVideoDims(640,480); 6 | easyrtc.setRoomOccupantListener(convertListToButtons); 7 | easyrtc.easyApp("easyrtc.audioVideoSimple", "selfVideo", ["callerVideo"], loginSuccess, loginFailure); 8 | } 9 | 10 | 11 | function clearConnectList() { 12 | var otherClientDiv = document.getElementById('otherClients'); 13 | while (otherClientDiv.hasChildNodes()) { 14 | otherClientDiv.removeChild(otherClientDiv.lastChild); 15 | } 16 | } 17 | 18 | 19 | function convertListToButtons (roomName, data, isPrimary) { 20 | clearConnectList(); 21 | var otherClientDiv = document.getElementById('otherClients'); 22 | for(var easyrtcid in data) { 23 | var button = document.createElement('button'); 24 | button.onclick = function(easyrtcid) { 25 | return function() { 26 | performCall(easyrtcid); 27 | }; 28 | }(easyrtcid); 29 | 30 | var label = document.createTextNode(easyrtc.idToName(easyrtcid)); 31 | button.appendChild(label); 32 | otherClientDiv.appendChild(button); 33 | } 34 | } 35 | 36 | 37 | function performCall(otherEasyrtcid) { 38 | easyrtc.hangupAll(); 39 | 40 | var successCB = function() {}; 41 | var failureCB = function() {}; 42 | easyrtc.call(otherEasyrtcid, successCB, failureCB); 43 | } 44 | 45 | 46 | function loginSuccess(easyrtcid) { 47 | selfEasyrtcid = easyrtcid; 48 | document.getElementById("iam").innerHTML = "I am " + easyrtc.cleanId(easyrtcid); 49 | } 50 | 51 | 52 | function loginFailure(errorCode, message) { 53 | easyrtc.showError(errorCode, message); 54 | } 55 | -------------------------------------------------------------------------------- /thirdparty/easyrtc/demos/js/demo_audio_video_simple_hd.js: -------------------------------------------------------------------------------- 1 | // 2 | //Copyright (c) 2015, Priologic Software Inc. 3 | //All rights reserved. 4 | // 5 | //Redistribution and use in source and binary forms, with or without 6 | //modification, are permitted provided that the following conditions are met: 7 | // 8 | // * Redistributions of source code must retain the above copyright notice, 9 | // this list of conditions and the following disclaimer. 10 | // * Redistributions in binary form must reproduce the above copyright 11 | // notice, this list of conditions and the following disclaimer in the 12 | // documentation and/or other materials provided with the distribution. 13 | // 14 | //THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 15 | //AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 16 | //IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 17 | //ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE 18 | //LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 19 | //CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 20 | //SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 21 | //INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 22 | //CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 23 | //ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 24 | //POSSIBILITY OF SUCH DAMAGE. 25 | // 26 | var selfEasyrtcid = ""; 27 | 28 | 29 | function connect() { 30 | easyrtc.setVideoDims(1280,720); 31 | easyrtc.enableDebug(false); 32 | easyrtc.setRoomOccupantListener(convertListToButtons); 33 | easyrtc.easyApp("easyrtc.videoChatHd", "selfVideo", ["callerVideo"], loginSuccess, loginFailure); 34 | } 35 | 36 | 37 | function clearConnectList() { 38 | var otherClientDiv = document.getElementById('otherClients'); 39 | while (otherClientDiv.hasChildNodes()) { 40 | otherClientDiv.removeChild(otherClientDiv.lastChild); 41 | } 42 | } 43 | 44 | 45 | function convertListToButtons (roomName, data, isPrimary) { 46 | clearConnectList(); 47 | var otherClientDiv = document.getElementById('otherClients'); 48 | for(var easyrtcid in data) { 49 | var button = document.createElement('button'); 50 | button.onclick = function(easyrtcid) { 51 | return function() { 52 | performCall(easyrtcid); 53 | }; 54 | }(easyrtcid); 55 | 56 | var label = document.createTextNode(easyrtc.idToName(easyrtcid)); 57 | button.appendChild(label); 58 | button.className = "callbutton"; 59 | otherClientDiv.appendChild(button); 60 | } 61 | } 62 | 63 | 64 | function performCall(otherEasyrtcid) { 65 | easyrtc.hangupAll(); 66 | var acceptedCB = function(accepted, caller) { 67 | if( !accepted ) { 68 | easyrtc.showError("CALL-REJECTED", "Sorry, your call to " + easyrtc.idToName(caller) + " was rejected"); 69 | } 70 | }; 71 | var successCB = function() {}; 72 | var failureCB = function() {}; 73 | easyrtc.call(otherEasyrtcid, successCB, failureCB, acceptedCB); 74 | } 75 | 76 | 77 | function loginSuccess(easyrtcid) { 78 | selfEasyrtcid = easyrtcid; 79 | document.getElementById("iam").innerHTML = "I am " + easyrtc.cleanId(easyrtcid); 80 | } 81 | 82 | 83 | function loginFailure(errorCode, message) { 84 | easyrtc.showError(errorCode, message); 85 | } 86 | 87 | 88 | // Sets calls so they are automatically accepted (this is default behaviour) 89 | easyrtc.setAcceptChecker(function(caller, cb) { 90 | cb(true); 91 | } ); 92 | -------------------------------------------------------------------------------- /thirdparty/easyrtc/demos/js/demo_connector.js: -------------------------------------------------------------------------------- 1 | var selfEasyrtcid = ""; 2 | 3 | 4 | function connect() { 5 | easyrtc.setVideoDims(640,480); 6 | easyrtc.setRoomOccupantListener(convertListToButtons); 7 | easyrtc.easyApp("easyrtc.audioVideoSimple", "selfVideo", ["callerVideo"], loginSuccess, loginFailure); 8 | } 9 | 10 | 11 | function clearConnectList() { 12 | var otherClientDiv = document.getElementById('otherClients'); 13 | while (otherClientDiv.hasChildNodes()) { 14 | otherClientDiv.removeChild(otherClientDiv.lastChild); 15 | } 16 | } 17 | 18 | 19 | function convertListToButtons (roomName, data, isPrimary) { 20 | clearConnectList(); 21 | var otherClientDiv = document.getElementById('otherClients'); 22 | for(var easyrtcid in data) { 23 | var button = document.createElement('button'); 24 | button.onclick = function(easyrtcid) { 25 | return function() { 26 | performCall(easyrtcid); 27 | }; 28 | }(easyrtcid); 29 | 30 | var label = document.createTextNode(easyrtc.idToName(easyrtcid)); 31 | button.appendChild(label); 32 | otherClientDiv.appendChild(button); 33 | } 34 | } 35 | 36 | 37 | function performCall(otherEasyrtcid) { 38 | easyrtc.hangupAll(); 39 | 40 | var successCB = function() {}; 41 | var failureCB = function() {}; 42 | easyrtc.call(otherEasyrtcid, successCB, failureCB); 43 | } 44 | 45 | 46 | function loginSuccess(easyrtcid) { 47 | selfEasyrtcid = easyrtcid; 48 | document.getElementById("iam").innerHTML = "I am " + easyrtc.cleanId(easyrtcid); 49 | } 50 | 51 | 52 | function loginFailure(errorCode, message) { 53 | easyrtc.showError(errorCode, message); 54 | } 55 | -------------------------------------------------------------------------------- /thirdparty/easyrtc/demos/js/demo_ice_filter.js: -------------------------------------------------------------------------------- 1 | var selfEasyrtcid = ""; 2 | 3 | 4 | function connect() { 5 | easyrtc.setRoomOccupantListener(convertListToButtons); 6 | easyrtc.easyApp("easyrtc.iceFilter", "selfVideo", ["callerVideo"], loginSuccess, loginFailure); 7 | } 8 | 9 | 10 | function clearConnectList() { 11 | var otherClientDiv = document.getElementById('otherClients'); 12 | while (otherClientDiv.hasChildNodes()) { 13 | otherClientDiv.removeChild(otherClientDiv.lastChild); 14 | } 15 | } 16 | 17 | 18 | function convertListToButtons (roomName, data, isPrimary) { 19 | clearConnectList(); 20 | var otherClientDiv = document.getElementById('otherClients'); 21 | for(var easyrtcid in data) { 22 | var button = document.createElement('button'); 23 | button.onclick = function(easyrtcid) { 24 | return function() { 25 | performCall(easyrtcid); 26 | }; 27 | }(easyrtcid); 28 | 29 | var label = document.createTextNode(easyrtc.idToName(easyrtcid)); 30 | button.appendChild(label); 31 | otherClientDiv.appendChild(button); 32 | } 33 | } 34 | 35 | 36 | function performCall(otherEasyrtcid) { 37 | easyrtc.hangupAll(); 38 | easyrtc.setIceUsedInCalls( getModifiedIceList()); 39 | var successCB = function() {}; 40 | var failureCB = function() {}; 41 | easyrtc.call(otherEasyrtcid, successCB, failureCB); 42 | } 43 | 44 | 45 | 46 | 47 | 48 | var iceMap = []; 49 | 50 | function getModifiedIceList(){ 51 | var iceList = []; 52 | var i; 53 | 54 | for( i = 0; i < iceMap.length; i++ ) { 55 | if( document.getElementById("iscb" + i).checked ) { 56 | iceList.push( iceMap[i]); 57 | } 58 | } 59 | return {iceServers: iceList}; 60 | } 61 | 62 | 63 | function loginSuccess(easyrtcid) { 64 | var i; 65 | 66 | selfEasyrtcid = easyrtcid; 67 | document.getElementById("iam").innerHTML = "I am " + easyrtc.cleanId(easyrtcid); 68 | var blockentries = "

Ice Entries

"; 69 | var iceServers = easyrtc.getServerIce(); 70 | for(i = 0; i < iceServers.iceServers.length; i++ ) { 71 | iceMap[i] = iceServers.iceServers[i]; 72 | var label = "iscb" + i; 73 | blockentries += '
' + iceServers.iceServers[i].url + '>
'; 75 | 76 | } 77 | document.getElementById("iceEntries").innerHTML = blockentries; 78 | 79 | } 80 | 81 | 82 | function loginFailure(errorCode, message) { 83 | easyrtc.showError(errorCode, message); 84 | } 85 | -------------------------------------------------------------------------------- /thirdparty/easyrtc/demos/js/demo_instant_messaging.js: -------------------------------------------------------------------------------- 1 | // 2 | //Copyright (c) 2015, Priologic Software Inc. 3 | //All rights reserved. 4 | // 5 | //Redistribution and use in source and binary forms, with or without 6 | //modification, are permitted provided that the following conditions are met: 7 | // 8 | // * Redistributions of source code must retain the above copyright notice, 9 | // this list of conditions and the following disclaimer. 10 | // * Redistributions in binary form must reproduce the above copyright 11 | // notice, this list of conditions and the following disclaimer in the 12 | // documentation and/or other materials provided with the distribution. 13 | // 14 | //THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 15 | //AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 16 | //IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 17 | //ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE 18 | //LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 19 | //CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 20 | //SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 21 | //INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 22 | //CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 23 | //ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 24 | //POSSIBILITY OF SUCH DAMAGE. 25 | // 26 | var selfEasyrtcid = ""; 27 | function addToConversation(who, msgType, content) { 28 | // Escape html special characters, then add linefeeds. 29 | content = content.replace(/&/g,'&').replace(//g,'>'); 30 | content = content.replace(/\n/g, '
'); 31 | document.getElementById('conversation').innerHTML += 32 | "" + who + ": " + content + "
"; 33 | } 34 | 35 | 36 | function connect() { 37 | easyrtc.setPeerListener(addToConversation); 38 | easyrtc.setRoomOccupantListener(convertListToButtons); 39 | easyrtc.connect("easyrtc.instantMessaging", loginSuccess, loginFailure); 40 | } 41 | 42 | 43 | function convertListToButtons (roomName, occupants, isPrimary) { 44 | var otherClientDiv = document.getElementById('otherClients'); 45 | while (otherClientDiv.hasChildNodes()) { 46 | otherClientDiv.removeChild(otherClientDiv.lastChild); 47 | } 48 | 49 | for(var easyrtcid in occupants) { 50 | var button = document.createElement('button'); 51 | button.onclick = function(easyrtcid) { 52 | return function() { 53 | sendStuffWS(easyrtcid); 54 | }; 55 | }(easyrtcid); 56 | var label = document.createTextNode("Send to " + easyrtc.idToName(easyrtcid)); 57 | button.appendChild(label); 58 | 59 | otherClientDiv.appendChild(button); 60 | } 61 | if( !otherClientDiv.hasChildNodes() ) { 62 | otherClientDiv.innerHTML = "Nobody else logged in to talk to..."; 63 | } 64 | } 65 | 66 | 67 | function sendStuffWS(otherEasyrtcid) { 68 | var text = document.getElementById('sendMessageText').value; 69 | if(text.replace(/\s/g, "").length === 0) { // Don't send just whitespace 70 | return; 71 | } 72 | 73 | easyrtc.sendDataWS(otherEasyrtcid, "message", text); 74 | addToConversation("Me", "message", text); 75 | document.getElementById('sendMessageText').value = ""; 76 | } 77 | 78 | 79 | function loginSuccess(easyrtcid) { 80 | selfEasyrtcid = easyrtcid; 81 | document.getElementById("iam").innerHTML = "I am " + easyrtcid; 82 | } 83 | 84 | 85 | function loginFailure(errorCode, message) { 86 | easyrtc.showError(errorCode, message); 87 | } -------------------------------------------------------------------------------- /thirdparty/easyrtc/demos/js/demo_instant_messaging_selfconnect.js: -------------------------------------------------------------------------------- 1 | // 2 | //Copyright (c) 2015, Priologic Software Inc. 3 | //All rights reserved. 4 | // 5 | //Redistribution and use in source and binary forms, with or without 6 | //modification, are permitted provided that the following conditions are met: 7 | // 8 | // * Redistributions of source code must retain the above copyright notice, 9 | // this list of conditions and the following disclaimer. 10 | // * Redistributions in binary form must reproduce the above copyright 11 | // notice, this list of conditions and the following disclaimer in the 12 | // documentation and/or other materials provided with the distribution. 13 | // 14 | //THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 15 | //AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 16 | //IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 17 | //ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE 18 | //LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 19 | //CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 20 | //SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 21 | //INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 22 | //CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 23 | //ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 24 | //POSSIBILITY OF SUCH DAMAGE. 25 | // 26 | var selfEasyrtcid = ""; 27 | function addToConversation(who, msgType, content) { 28 | // Escape html special characters, then add linefeeds. 29 | content = content.replace(/&/g,'&').replace(//g,'>'); 30 | content = content.replace(/\n/g, '
'); 31 | document.getElementById('conversation').innerHTML += 32 | "" + who + ": " + content + "
"; 33 | } 34 | 35 | 36 | 37 | function connect(immediateMode) { 38 | easyrtc.setPeerListener(addToConversation); 39 | easyrtc.setRoomOccupantListener(convertListToButtons); 40 | 41 | var mysocket = io.connect(null, { 42 | 'connect timeout': 10000, 43 | 'force new connection': true 44 | }); 45 | 46 | 47 | if (!mysocket) { 48 | throw "io.connect failed"; 49 | } 50 | else { 51 | console.log("application allocated socket ", mysocket); 52 | easyrtc.useThisSocketConnection(mysocket); 53 | } 54 | if( immediateMode) { 55 | easyrtc.connect("easyrtc.reconnect", loginSuccess, loginFailure); 56 | } 57 | else { 58 | setTimeout(function() { 59 | easyrtc.connect("easyrtc.reconnect", loginSuccess, loginFailure); 60 | }, 10*1000); 61 | } 62 | } 63 | 64 | 65 | function convertListToButtons (roomName, occupants, isPrimary) { 66 | var otherClientDiv = document.getElementById('otherClients'); 67 | while (otherClientDiv.hasChildNodes()) { 68 | otherClientDiv.removeChild(otherClientDiv.lastChild); 69 | } 70 | 71 | for(var easyrtcid in occupants) { 72 | var button = document.createElement('button'); 73 | button.onclick = function(easyrtcid) { 74 | return function() { 75 | sendStuffWS(easyrtcid); 76 | }; 77 | }(easyrtcid); 78 | var label = document.createTextNode("Send to " + easyrtc.idToName(easyrtcid)); 79 | button.appendChild(label); 80 | 81 | otherClientDiv.appendChild(button); 82 | } 83 | if( !otherClientDiv.hasChildNodes() ) { 84 | otherClientDiv.innerHTML = "Nobody else logged in to talk to..."; 85 | } 86 | } 87 | 88 | 89 | function sendStuffWS(otherEasyrtcid) { 90 | var text = document.getElementById('sendMessageText').value; 91 | if(text.replace(/\s/g, "").length === 0) { // Don't send just whitespace 92 | return; 93 | } 94 | 95 | easyrtc.sendDataWS(otherEasyrtcid, "message", text); 96 | addToConversation("Me", "message", text); 97 | document.getElementById('sendMessageText').value = ""; 98 | } 99 | 100 | 101 | function loginSuccess(easyrtcid) { 102 | selfEasyrtcid = easyrtcid; 103 | document.getElementById("iam").innerHTML = "I am " + easyrtcid; 104 | document.getElementById("buttonImmediate").enabled = false; 105 | document.getElementById("buttonDelayed").enabled = false; 106 | } 107 | 108 | 109 | function loginFailure(errorCode, message) { 110 | easyrtc.showError(errorCode, message); 111 | } -------------------------------------------------------------------------------- /thirdparty/easyrtc/demos/js/demo_lowbandwidth.js: -------------------------------------------------------------------------------- 1 | var selfEasyrtcid = ""; 2 | 3 | 4 | function connect() { 5 | 6 | var localFilter = easyrtc.buildLocalSdpFilter( { 7 | audioRecvBitrate:20, videoRecvBitrate:30 8 | }); 9 | var remoteFilter = easyrtc.buildRemoteSdpFilter({ 10 | audioSendBitrate: 20, videoSendBitrate:30 11 | }); 12 | easyrtc.setSdpFilters(localFilter, remoteFilter); 13 | easyrtc.setRoomOccupantListener(convertListToButtons); 14 | easyrtc.easyApp("easyrtc.lowbandwidth", "selfVideo", ["callerVideo"], loginSuccess, loginFailure); 15 | } 16 | 17 | 18 | function clearConnectList() { 19 | var otherClientDiv = document.getElementById('otherClients'); 20 | while (otherClientDiv.hasChildNodes()) { 21 | otherClientDiv.removeChild(otherClientDiv.lastChild); 22 | } 23 | } 24 | 25 | 26 | function convertListToButtons (roomName, data, isPrimary) { 27 | clearConnectList(); 28 | var otherClientDiv = document.getElementById('otherClients'); 29 | for(var easyrtcid in data) { 30 | var button = document.createElement('button'); 31 | button.onclick = function(easyrtcid) { 32 | return function() { 33 | performCall(easyrtcid); 34 | }; 35 | }(easyrtcid); 36 | 37 | var label = document.createTextNode(easyrtc.idToName(easyrtcid)); 38 | button.appendChild(label); 39 | otherClientDiv.appendChild(button); 40 | } 41 | } 42 | 43 | 44 | function performCall(otherEasyrtcid) { 45 | easyrtc.hangupAll(); 46 | 47 | var successCB = function() {}; 48 | var failureCB = function() {}; 49 | easyrtc.call(otherEasyrtcid, successCB, failureCB); 50 | } 51 | 52 | 53 | function loginSuccess(easyrtcid) { 54 | selfEasyrtcid = easyrtcid; 55 | document.getElementById("iam").innerHTML = "I am " + easyrtc.cleanId(easyrtcid); 56 | } 57 | 58 | 59 | function loginFailure(errorCode, message) { 60 | easyrtc.showError(errorCode, message); 61 | } 62 | -------------------------------------------------------------------------------- /thirdparty/easyrtc/demos/js/demo_reconnect.js: -------------------------------------------------------------------------------- 1 | // 2 | //Copyright (c) 2015, Priologic Software Inc. 3 | //All rights reserved. 4 | // 5 | //Redistribution and use in source and binary forms, with or without 6 | //modification, are permitted provided that the following conditions are met: 7 | // 8 | // * Redistributions of source code must retain the above copyright notice, 9 | // this list of conditions and the following disclaimer. 10 | // * Redistributions in binary form must reproduce the above copyright 11 | // notice, this list of conditions and the following disclaimer in the 12 | // documentation and/or other materials provided with the distribution. 13 | // 14 | //THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 15 | //AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 16 | //IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 17 | //ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE 18 | //LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 19 | //CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 20 | //SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 21 | //INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 22 | //CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 23 | //ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 24 | //POSSIBILITY OF SUCH DAMAGE. 25 | // 26 | var selfEasyrtcid = ""; 27 | 28 | 29 | 30 | function initApp() { 31 | console.log("Initializing."); 32 | easyrtc.enableVideo(false); 33 | easyrtc.enableAudio(false); 34 | connect(); 35 | } 36 | 37 | function connect() { 38 | easyrtc.connect("easyrtc.reconnect", loginSuccess, loginFailure); 39 | } 40 | 41 | function disconnect() { 42 | easyrtc.disconnect(); 43 | } 44 | 45 | easyrtc.enableDebug(true); 46 | 47 | easyrtc.setDisconnectListener(function() { 48 | easyrtc.showError("xx", "saw disconnect"); 49 | }); 50 | 51 | 52 | function sendDummy() { 53 | easyrtc.getRoomList( 54 | function() { 55 | easyrtc.showError("xx", "got fresh roomlist"); 56 | }, 57 | function(){ 58 | easyrtc.showError("xx", "failed on fresh roomlist"); 59 | }); 60 | } 61 | 62 | function loginSuccess(easyrtcid) { 63 | document.getElementById("stateLabel").innerHTML = " connected as " + easyrtcid; 64 | easyrtc.showError("xx", "login success"); 65 | } 66 | 67 | 68 | function loginFailure(errorCode, message) { 69 | document.getElementById("stateLabel").innerHTML = "disconnected"; 70 | easyrtc.showError("xx", "login failure"); 71 | } 72 | 73 | 74 | -------------------------------------------------------------------------------- /thirdparty/easyrtc/demos/js/prettify/lang-css.js: -------------------------------------------------------------------------------- 1 | PR.registerLangHandler(PR.createSimpleLexer([["pln",/^[\t\n\f\r ]+/,null," \t\r\n "]],[["str",/^"(?:[^\n\f\r"\\]|\\(?:\r\n?|\n|\f)|\\[\S\s])*"/,null],["str",/^'(?:[^\n\f\r'\\]|\\(?:\r\n?|\n|\f)|\\[\S\s])*'/,null],["lang-css-str",/^url\(([^"')]*)\)/i],["kwd",/^(?:url|rgb|!important|@import|@page|@media|@charset|inherit)(?=[^\w-]|$)/i,null],["lang-css-kw",/^(-?(?:[_a-z]|\\[\da-f]+ ?)(?:[\w-]|\\\\[\da-f]+ ?)*)\s*:/i],["com",/^\/\*[^*]*\*+(?:[^*/][^*]*\*+)*\//],["com", 2 | /^(?:<\!--|--\>)/],["lit",/^(?:\d+|\d*\.\d+)(?:%|[a-z]+)?/i],["lit",/^#[\da-f]{3,6}/i],["pln",/^-?(?:[_a-z]|\\[\da-f]+ ?)(?:[\w-]|\\\\[\da-f]+ ?)*/i],["pun",/^[^\s\w"']+/]]),["css"]);PR.registerLangHandler(PR.createSimpleLexer([],[["kwd",/^-?(?:[_a-z]|\\[\da-f]+ ?)(?:[\w-]|\\\\[\da-f]+ ?)*/i]]),["css-kw"]);PR.registerLangHandler(PR.createSimpleLexer([],[["str",/^[^"')]+/]]),["css-str"]); 3 | -------------------------------------------------------------------------------- /thirdparty/easyrtc/demos/js/prettify/lang-sql.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xirdev/xsdk/5a38e83f0ba7023d171e430cb9524d21a774725d/thirdparty/easyrtc/demos/js/prettify/lang-sql.js -------------------------------------------------------------------------------- /thirdparty/easyrtc/demos/js/prettify/lang-vhdl.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xirdev/xsdk/5a38e83f0ba7023d171e430cb9524d21a774725d/thirdparty/easyrtc/demos/js/prettify/lang-vhdl.js -------------------------------------------------------------------------------- /thirdparty/easyrtc/demos/js/prettify/lang-yaml.js: -------------------------------------------------------------------------------- 1 | var a=null; 2 | PR.registerLangHandler(PR.createSimpleLexer([["pun",/^[:>?|]+/,a,":|>?"],["dec",/^%(?:YAML|TAG)[^\n\r#]+/,a,"%"],["typ",/^&\S+/,a,"&"],["typ",/^!\S*/,a,"!"],["str",/^"(?:[^"\\]|\\.)*(?:"|$)/,a,'"'],["str",/^'(?:[^']|'')*(?:'|$)/,a,"'"],["com",/^#[^\n\r]*/,a,"#"],["pln",/^\s+/,a," \t\r\n"]],[["dec",/^(?:---|\.\.\.)(?:[\n\r]|$)/],["pun",/^-/],["kwd",/^\w+:[\n\r ]/],["pln",/^\w+/]]),["yaml","yml"]); 3 | -------------------------------------------------------------------------------- /thirdparty/easyrtc/demos/js/prettify/prettify.css: -------------------------------------------------------------------------------- 1 | .pln{color:#000}@media screen{.str{color:#080}.kwd{color:#008}.com{color:#800}.typ{color:#606}.lit{color:#066}.pun,.opn,.clo{color:#660}.tag{color:#008}.atn{color:#606}.atv{color:#080}.dec,.var{color:#606}.fun{color:red}}@media print,projection{.str{color:#060}.kwd{color:#006;font-weight:bold}.com{color:#600;font-style:italic}.typ{color:#404;font-weight:bold}.lit{color:#044}.pun,.opn,.clo{color:#440}.tag{color:#006;font-weight:bold}.atn{color:#404}.atv{color:#060}}pre.prettyprint{padding:2px;border:1px solid #888}ol.linenums{margin-top:0;margin-bottom:0}li.L0,li.L1,li.L2,li.L3,li.L5,li.L6,li.L7,li.L8{}li.L1,li.L3,li.L5,li.L7,li.L9{background:#eee} -------------------------------------------------------------------------------- /thirdparty/easyrtc/dev/dictionary/project.dic: -------------------------------------------------------------------------------- 1 | abcd 2 | ackhandler 3 | acks 4 | audiovideo 5 | badsocket 6 | bitrate 7 | codec 8 | composited 9 | conns 10 | datachannel 11 | dest 12 | dont 13 | dtls 14 | easyrtc 15 | easyrtcid 16 | easyrtcids 17 | easyrtcid's 18 | easyrtcsid 19 | freds 20 | getusermedia 21 | goog 22 | icecandidate 23 | inboundrtp 24 | interop 25 | jsonable 26 | kbit 27 | kbits 28 | localmedia 29 | mediastream 30 | nable 31 | minified 32 | mozilla 33 | onaddstream 34 | onclose 35 | onconnect 36 | onconnection 37 | ondatachannel 38 | onicecandidate 39 | oniceconnectionstatechange 40 | onidentityresult 41 | onidpassertionerror 42 | onidpvalidationerror 43 | onmessage 44 | onnegotiationneeded 45 | onopen 46 | onpeeridentity 47 | onremovestream 48 | onsignalingstatechange 49 | outboundrtp 50 | parm 51 | preallocated 52 | printf 53 | priologic 54 | programmatically 55 | rtcp 56 | sipgate 57 | srtp 58 | unmute 59 | webcam 60 | webrtc 61 | websocket 62 | websockets 63 | -------------------------------------------------------------------------------- /thirdparty/easyrtc/dev/readme.md: -------------------------------------------------------------------------------- 1 | EasyRTC Dev Folder 2 | ================== 3 | 4 | Any files used strictly by the EasyRTC dev team is kept here. This includes release scripts, dev tests, dictionary words, and dev-only documentation. 5 | 6 | Nothing here should be needed by end users. -------------------------------------------------------------------------------- /thirdparty/easyrtc/dev/scripts/client_jsdoc_templates/README.md: -------------------------------------------------------------------------------- 1 | The default template for JSDoc 3 uses: [the Taffy Database library](http://taffydb.com/) and the [Underscore Template library](http://documentcloud.github.com/underscore/#template). 2 | -------------------------------------------------------------------------------- /thirdparty/easyrtc/dev/scripts/client_jsdoc_templates/static/scripts/prettify/lang-css.js: -------------------------------------------------------------------------------- 1 | PR.registerLangHandler(PR.createSimpleLexer([["pln",/^[\t\n\f\r ]+/,null," \t\r\n "]],[["str",/^"(?:[^\n\f\r"\\]|\\(?:\r\n?|\n|\f)|\\[\S\s])*"/,null],["str",/^'(?:[^\n\f\r'\\]|\\(?:\r\n?|\n|\f)|\\[\S\s])*'/,null],["lang-css-str",/^url\(([^"')]*)\)/i],["kwd",/^(?:url|rgb|!important|@import|@page|@media|@charset|inherit)(?=[^\w-]|$)/i,null],["lang-css-kw",/^(-?(?:[_a-z]|\\[\da-f]+ ?)(?:[\w-]|\\\\[\da-f]+ ?)*)\s*:/i],["com",/^\/\*[^*]*\*+(?:[^*/][^*]*\*+)*\//],["com", 2 | /^(?:<\!--|--\>)/],["lit",/^(?:\d+|\d*\.\d+)(?:%|[a-z]+)?/i],["lit",/^#[\da-f]{3,6}/i],["pln",/^-?(?:[_a-z]|\\[\da-f]+ ?)(?:[\w-]|\\\\[\da-f]+ ?)*/i],["pun",/^[^\s\w"']+/]]),["css"]);PR.registerLangHandler(PR.createSimpleLexer([],[["kwd",/^-?(?:[_a-z]|\\[\da-f]+ ?)(?:[\w-]|\\\\[\da-f]+ ?)*/i]]),["css-kw"]);PR.registerLangHandler(PR.createSimpleLexer([],[["str",/^[^"')]+/]]),["css-str"]); 3 | -------------------------------------------------------------------------------- /thirdparty/easyrtc/dev/scripts/client_jsdoc_templates/static/styles/prettify-jsdoc.css: -------------------------------------------------------------------------------- 1 | /* JSDoc prettify.js theme */ 2 | 3 | /* plain text */ 4 | .pln { 5 | color: #000000; 6 | font-weight: normal; 7 | font-style: normal; 8 | } 9 | 10 | /* string content */ 11 | .str { 12 | color: #006400; 13 | font-weight: normal; 14 | font-style: normal; 15 | } 16 | 17 | /* a keyword */ 18 | .kwd { 19 | color: #000000; 20 | font-weight: bold; 21 | font-style: normal; 22 | } 23 | 24 | /* a comment */ 25 | .com { 26 | font-weight: normal; 27 | font-style: italic; 28 | } 29 | 30 | /* a type name */ 31 | .typ { 32 | color: #000000; 33 | font-weight: normal; 34 | font-style: normal; 35 | } 36 | 37 | /* a literal value */ 38 | .lit { 39 | color: #006400; 40 | font-weight: normal; 41 | font-style: normal; 42 | } 43 | 44 | /* punctuation */ 45 | .pun { 46 | color: #000000; 47 | font-weight: bold; 48 | font-style: normal; 49 | } 50 | 51 | /* lisp open bracket */ 52 | .opn { 53 | color: #000000; 54 | font-weight: bold; 55 | font-style: normal; 56 | } 57 | 58 | /* lisp close bracket */ 59 | .clo { 60 | color: #000000; 61 | font-weight: bold; 62 | font-style: normal; 63 | } 64 | 65 | /* a markup tag name */ 66 | .tag { 67 | color: #006400; 68 | font-weight: normal; 69 | font-style: normal; 70 | } 71 | 72 | /* a markup attribute name */ 73 | .atn { 74 | color: #006400; 75 | font-weight: normal; 76 | font-style: normal; 77 | } 78 | 79 | /* a markup attribute value */ 80 | .atv { 81 | color: #006400; 82 | font-weight: normal; 83 | font-style: normal; 84 | } 85 | 86 | /* a declaration */ 87 | .dec { 88 | color: #000000; 89 | font-weight: bold; 90 | font-style: normal; 91 | } 92 | 93 | /* a variable name */ 94 | .var { 95 | color: #000000; 96 | font-weight: normal; 97 | font-style: normal; 98 | } 99 | 100 | /* a function name */ 101 | .fun { 102 | color: #000000; 103 | font-weight: bold; 104 | font-style: normal; 105 | } 106 | 107 | /* Specify class=linenums on a pre to get line numbering */ 108 | ol.linenums { 109 | margin-top: 0; 110 | margin-bottom: 0; 111 | } 112 | -------------------------------------------------------------------------------- /thirdparty/easyrtc/dev/scripts/client_jsdoc_templates/static/styles/prettify-tomorrow.css: -------------------------------------------------------------------------------- 1 | /* Tomorrow Theme */ 2 | /* Original theme - https://github.com/chriskempson/tomorrow-theme */ 3 | /* Pretty printing styles. Used with prettify.js. */ 4 | /* SPAN elements with the classes below are added by prettyprint. */ 5 | /* plain text */ 6 | .pln { 7 | color: #4d4d4c; } 8 | 9 | @media screen { 10 | /* string content */ 11 | .str { 12 | color: #718c00; } 13 | 14 | /* a keyword */ 15 | .kwd { 16 | color: #8959a8; } 17 | 18 | /* a comment */ 19 | .com { 20 | color: #8e908c; } 21 | 22 | /* a type name */ 23 | .typ { 24 | color: #4271ae; } 25 | 26 | /* a literal value */ 27 | .lit { 28 | color: #f5871f; } 29 | 30 | /* punctuation */ 31 | .pun { 32 | color: #4d4d4c; } 33 | 34 | /* lisp open bracket */ 35 | .opn { 36 | color: #4d4d4c; } 37 | 38 | /* lisp close bracket */ 39 | .clo { 40 | color: #4d4d4c; } 41 | 42 | /* a markup tag name */ 43 | .tag { 44 | color: #c82829; } 45 | 46 | /* a markup attribute name */ 47 | .atn { 48 | color: #f5871f; } 49 | 50 | /* a markup attribute value */ 51 | .atv { 52 | color: #3e999f; } 53 | 54 | /* a declaration */ 55 | .dec { 56 | color: #f5871f; } 57 | 58 | /* a variable name */ 59 | .var { 60 | color: #c82829; } 61 | 62 | /* a function name */ 63 | .fun { 64 | color: #4271ae; } } 65 | /* Use higher contrast and text-weight for printable form. */ 66 | @media print, projection { 67 | .str { 68 | color: #060; } 69 | 70 | .kwd { 71 | color: #006; 72 | font-weight: bold; } 73 | 74 | .com { 75 | color: #600; 76 | font-style: italic; } 77 | 78 | .typ { 79 | color: #404; 80 | font-weight: bold; } 81 | 82 | .lit { 83 | color: #044; } 84 | 85 | .pun, .opn, .clo { 86 | color: #440; } 87 | 88 | .tag { 89 | color: #006; 90 | font-weight: bold; } 91 | 92 | .atn { 93 | color: #404; } 94 | 95 | .atv { 96 | color: #060; } } 97 | /* Style */ 98 | /* 99 | pre.prettyprint { 100 | background: white; 101 | font-family: Menlo, Monaco, Consolas, monospace; 102 | font-size: 12px; 103 | line-height: 1.5; 104 | border: 1px solid #ccc; 105 | padding: 10px; } 106 | */ 107 | 108 | /* Specify class=linenums on a pre to get line numbering */ 109 | ol.linenums { 110 | margin-top: 0; 111 | margin-bottom: 0; } 112 | 113 | /* IE indents via margin-left */ 114 | li.L0, 115 | li.L1, 116 | li.L2, 117 | li.L3, 118 | li.L4, 119 | li.L5, 120 | li.L6, 121 | li.L7, 122 | li.L8, 123 | li.L9 { 124 | /* */ } 125 | 126 | /* Alternate shading for lines */ 127 | li.L1, 128 | li.L3, 129 | li.L5, 130 | li.L7, 131 | li.L9 { 132 | /* */ } 133 | -------------------------------------------------------------------------------- /thirdparty/easyrtc/dev/scripts/client_jsdoc_templates/tmpl/container.tmpl: -------------------------------------------------------------------------------- 1 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 |
15 | 16 |

Extends

17 | 18 | 21 | 22 | 23 | 24 |

Mixes In

25 | 26 | 29 | 30 | 31 | 32 |

Requires

33 | 34 | 37 | 38 | 39 | 43 |

Classes

44 | 45 |
46 |
47 |
48 |
49 | 50 | 51 | 55 |

Namespaces

56 | 57 |
58 |
59 |
60 |
61 | 62 | 63 | 67 |

68 | 69 |

Members

70 | 71 |
72 | 73 |
74 | 75 | 76 | 80 |

81 |

Methods

82 | 83 |
84 | 85 |
86 | 87 | 88 | 92 |

Type Definitions

93 | 94 |
97 | 98 | 102 | 103 |
106 | 107 | 108 | 112 |

Events

113 | 114 |
115 | 116 |
117 | 118 |
119 | 120 |
121 | 122 | 123 | 124 | -------------------------------------------------------------------------------- /thirdparty/easyrtc/dev/scripts/client_jsdoc_templates/tmpl/details.tmpl: -------------------------------------------------------------------------------- 1 | 5 |
6 | 10 | 11 |
Properties:
12 | 13 |
14 | 15 | 16 | 17 | 18 |
Version:
19 |
20 | 21 | 22 | 23 |
Since:
24 |
25 | 26 | 27 | 28 |
Inherited From:
29 |
32 | 33 | 34 | 35 |
Deprecated:
39 | 40 | 41 | 42 |
Author:
43 |
44 | 47 |
48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 |
License:
57 |
58 | 59 | 60 | 61 |
Default Value:
62 |
63 | 64 | 65 | 66 | 67 | 68 |
Tutorials:
69 |
70 | 73 |
74 | 75 | 76 | 77 |
See:
78 |
79 | 82 |
83 | 84 | 85 | 86 |
To Do:
87 |
88 | 91 |
92 | 93 |
94 | -------------------------------------------------------------------------------- /thirdparty/easyrtc/dev/scripts/client_jsdoc_templates/tmpl/example.tmpl: -------------------------------------------------------------------------------- 1 | 2 |
3 | -------------------------------------------------------------------------------- /thirdparty/easyrtc/dev/scripts/client_jsdoc_templates/tmpl/examples.tmpl: -------------------------------------------------------------------------------- 1 | 6 |

7 | 8 |
9 | -------------------------------------------------------------------------------- /thirdparty/easyrtc/dev/scripts/client_jsdoc_templates/tmpl/exceptions.tmpl: -------------------------------------------------------------------------------- 1 | 5 |
6 | 7 |
8 | 9 | 10 | 11 |
12 |
13 | Type 14 |
15 |
16 | 17 |
18 |
19 | -------------------------------------------------------------------------------- /thirdparty/easyrtc/dev/scripts/client_jsdoc_templates/tmpl/fires.tmpl: -------------------------------------------------------------------------------- 1 | 2 |
  • 3 | 4 |
  • -------------------------------------------------------------------------------- /thirdparty/easyrtc/dev/scripts/client_jsdoc_templates/tmpl/layout.tmpl: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | EasyRTC Client JsDocs 5 | 6 | 7 | 8 | 9 | 10 |
    11 | 12 |

    Client API - Class easyrtc

    13 | 14 | 15 |
    16 | 17 | 18 |
    19 | 20 | 23 | 24 | 25 | 26 | -------------------------------------------------------------------------------- /thirdparty/easyrtc/dev/scripts/client_jsdoc_templates/tmpl/mainpage.tmpl: -------------------------------------------------------------------------------- 1 | 5 | 6 | 7 |

    8 | 9 | 10 | 11 |
    12 |
    13 |
    14 | 15 | -------------------------------------------------------------------------------- /thirdparty/easyrtc/dev/scripts/client_jsdoc_templates/tmpl/members.tmpl: -------------------------------------------------------------------------------- 1 | 2 |
    3 |

    4 | 5 | 6 |

    7 | 8 |
    9 |
    10 | 11 |
    12 | 13 |
    14 | 15 | 16 | 17 | 18 | 19 |
    Example 1? 's':'' ?>
    20 | 21 | 22 |
    23 | -------------------------------------------------------------------------------- /thirdparty/easyrtc/dev/scripts/client_jsdoc_templates/tmpl/method.tmpl: -------------------------------------------------------------------------------- 1 | 5 |
    6 |

    7 | 8 | 9 |

    10 | 11 |
    12 |
    13 | 14 | 15 |
    16 | 17 |
    18 | 19 | 20 | 21 |
    Type:
    22 | 27 | 28 | 29 | 30 |
    This:
    31 | 32 | 33 | 34 | 35 |
    Parameters:
    36 | 37 | 38 | 39 | 40 | 41 | 42 |
    Fires:
    43 | 46 | 47 | 48 | 49 |
    Throws:
    50 | 1) { ?> 56 | 57 | 59 | 60 | 61 |
    Returns:
    62 | 1) { ?> 68 | 69 | 71 | 72 | 73 |
    Example 1? 's':'' ?>
    74 | 75 | 76 |
    77 | -------------------------------------------------------------------------------- /thirdparty/easyrtc/dev/scripts/client_jsdoc_templates/tmpl/params.tmpl: -------------------------------------------------------------------------------- 1 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 79 | 80 | 81 | 90 | 91 | 92 | 93 | 98 | 99 | 100 | 104 | 105 | 106 | 107 | 108 |
    NameTypeArgumentDefaultDescription
    75 | 76 | 77 | 78 | 82 | 83 | <optional>
    84 | 85 | 86 | 87 | <nullable>
    88 | 89 |
    94 | 95 | 96 | 97 | 101 |
    Properties
    102 | 103 |
    -------------------------------------------------------------------------------- /thirdparty/easyrtc/dev/scripts/client_jsdoc_templates/tmpl/properties.tmpl: -------------------------------------------------------------------------------- 1 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 79 | 80 | 81 | 90 | 91 | 92 | 93 | 98 | 99 | 100 | 103 | 104 | 105 | 106 | 107 |
    NameTypeArgumentDefaultDescription
    75 | 76 | 77 | 78 | 82 | 83 | <optional>
    84 | 85 | 86 | 87 | <nullable>
    88 | 89 |
    94 | 95 | 96 | 97 | 101 |
    Properties
    102 |
    -------------------------------------------------------------------------------- /thirdparty/easyrtc/dev/scripts/client_jsdoc_templates/tmpl/returns.tmpl: -------------------------------------------------------------------------------- 1 | 5 |
    6 | 7 |
    8 | 9 | 10 | 11 |
    12 |
    13 | Type 14 |
    15 |
    16 | 17 |
    18 |
    19 | -------------------------------------------------------------------------------- /thirdparty/easyrtc/dev/scripts/client_jsdoc_templates/tmpl/source.tmpl: -------------------------------------------------------------------------------- 1 | 4 |
    5 |
    6 |
    7 |
    8 |
    -------------------------------------------------------------------------------- /thirdparty/easyrtc/dev/scripts/client_jsdoc_templates/tmpl/tutorial.tmpl: -------------------------------------------------------------------------------- 1 |
    2 | 3 |
    4 | 0) { ?> 5 | 10 | 11 | 12 |

    13 |
    14 | 15 |
    16 | 17 |
    18 | 19 |
    20 | -------------------------------------------------------------------------------- /thirdparty/easyrtc/dev/scripts/client_jsdoc_templates/tmpl/type.tmpl: -------------------------------------------------------------------------------- 1 | 5 | 6 | | 7 | -------------------------------------------------------------------------------- /thirdparty/easyrtc/dev/scripts/client_jsdoc_templates2/README.md: -------------------------------------------------------------------------------- 1 | The default template for JSDoc 3 uses: [the Taffy Database library](http://taffydb.com/) and the [Underscore Template library](http://documentcloud.github.com/underscore/#template). 2 | -------------------------------------------------------------------------------- /thirdparty/easyrtc/dev/scripts/client_jsdoc_templates2/static/scripts/prettify/lang-css.js: -------------------------------------------------------------------------------- 1 | PR.registerLangHandler(PR.createSimpleLexer([["pln",/^[\t\n\f\r ]+/,null," \t\r\n "]],[["str",/^"(?:[^\n\f\r"\\]|\\(?:\r\n?|\n|\f)|\\[\S\s])*"/,null],["str",/^'(?:[^\n\f\r'\\]|\\(?:\r\n?|\n|\f)|\\[\S\s])*'/,null],["lang-css-str",/^url\(([^"')]*)\)/i],["kwd",/^(?:url|rgb|!important|@import|@page|@media|@charset|inherit)(?=[^\w-]|$)/i,null],["lang-css-kw",/^(-?(?:[_a-z]|\\[\da-f]+ ?)(?:[\w-]|\\\\[\da-f]+ ?)*)\s*:/i],["com",/^\/\*[^*]*\*+(?:[^*/][^*]*\*+)*\//],["com", 2 | /^(?:<\!--|--\>)/],["lit",/^(?:\d+|\d*\.\d+)(?:%|[a-z]+)?/i],["lit",/^#[\da-f]{3,6}/i],["pln",/^-?(?:[_a-z]|\\[\da-f]+ ?)(?:[\w-]|\\\\[\da-f]+ ?)*/i],["pun",/^[^\s\w"']+/]]),["css"]);PR.registerLangHandler(PR.createSimpleLexer([],[["kwd",/^-?(?:[_a-z]|\\[\da-f]+ ?)(?:[\w-]|\\\\[\da-f]+ ?)*/i]]),["css-kw"]);PR.registerLangHandler(PR.createSimpleLexer([],[["str",/^[^"')]+/]]),["css-str"]); 3 | -------------------------------------------------------------------------------- /thirdparty/easyrtc/dev/scripts/client_jsdoc_templates2/static/styles/prettify-jsdoc.css: -------------------------------------------------------------------------------- 1 | /* JSDoc prettify.js theme */ 2 | 3 | /* plain text */ 4 | .pln { 5 | color: #000000; 6 | font-weight: normal; 7 | font-style: normal; 8 | } 9 | 10 | /* string content */ 11 | .str { 12 | color: #006400; 13 | font-weight: normal; 14 | font-style: normal; 15 | } 16 | 17 | /* a keyword */ 18 | .kwd { 19 | color: #000000; 20 | font-weight: bold; 21 | font-style: normal; 22 | } 23 | 24 | /* a comment */ 25 | .com { 26 | font-weight: normal; 27 | font-style: italic; 28 | } 29 | 30 | /* a type name */ 31 | .typ { 32 | color: #000000; 33 | font-weight: normal; 34 | font-style: normal; 35 | } 36 | 37 | /* a literal value */ 38 | .lit { 39 | color: #006400; 40 | font-weight: normal; 41 | font-style: normal; 42 | } 43 | 44 | /* punctuation */ 45 | .pun { 46 | color: #000000; 47 | font-weight: bold; 48 | font-style: normal; 49 | } 50 | 51 | /* lisp open bracket */ 52 | .opn { 53 | color: #000000; 54 | font-weight: bold; 55 | font-style: normal; 56 | } 57 | 58 | /* lisp close bracket */ 59 | .clo { 60 | color: #000000; 61 | font-weight: bold; 62 | font-style: normal; 63 | } 64 | 65 | /* a markup tag name */ 66 | .tag { 67 | color: #006400; 68 | font-weight: normal; 69 | font-style: normal; 70 | } 71 | 72 | /* a markup attribute name */ 73 | .atn { 74 | color: #006400; 75 | font-weight: normal; 76 | font-style: normal; 77 | } 78 | 79 | /* a markup attribute value */ 80 | .atv { 81 | color: #006400; 82 | font-weight: normal; 83 | font-style: normal; 84 | } 85 | 86 | /* a declaration */ 87 | .dec { 88 | color: #000000; 89 | font-weight: bold; 90 | font-style: normal; 91 | } 92 | 93 | /* a variable name */ 94 | .var { 95 | color: #000000; 96 | font-weight: normal; 97 | font-style: normal; 98 | } 99 | 100 | /* a function name */ 101 | .fun { 102 | color: #000000; 103 | font-weight: bold; 104 | font-style: normal; 105 | } 106 | 107 | /* Specify class=linenums on a pre to get line numbering */ 108 | ol.linenums { 109 | margin-top: 0; 110 | margin-bottom: 0; 111 | } 112 | -------------------------------------------------------------------------------- /thirdparty/easyrtc/dev/scripts/client_jsdoc_templates2/static/styles/prettify-tomorrow.css: -------------------------------------------------------------------------------- 1 | /* Tomorrow Theme */ 2 | /* Original theme - https://github.com/chriskempson/tomorrow-theme */ 3 | /* Pretty printing styles. Used with prettify.js. */ 4 | /* SPAN elements with the classes below are added by prettyprint. */ 5 | /* plain text */ 6 | .pln { 7 | color: #4d4d4c; } 8 | 9 | @media screen { 10 | /* string content */ 11 | .str { 12 | color: #718c00; } 13 | 14 | /* a keyword */ 15 | .kwd { 16 | color: #8959a8; } 17 | 18 | /* a comment */ 19 | .com { 20 | color: #8e908c; } 21 | 22 | /* a type name */ 23 | .typ { 24 | color: #4271ae; } 25 | 26 | /* a literal value */ 27 | .lit { 28 | color: #f5871f; } 29 | 30 | /* punctuation */ 31 | .pun { 32 | color: #4d4d4c; } 33 | 34 | /* lisp open bracket */ 35 | .opn { 36 | color: #4d4d4c; } 37 | 38 | /* lisp close bracket */ 39 | .clo { 40 | color: #4d4d4c; } 41 | 42 | /* a markup tag name */ 43 | .tag { 44 | color: #c82829; } 45 | 46 | /* a markup attribute name */ 47 | .atn { 48 | color: #f5871f; } 49 | 50 | /* a markup attribute value */ 51 | .atv { 52 | color: #3e999f; } 53 | 54 | /* a declaration */ 55 | .dec { 56 | color: #f5871f; } 57 | 58 | /* a variable name */ 59 | .var { 60 | color: #c82829; } 61 | 62 | /* a function name */ 63 | .fun { 64 | color: #4271ae; } } 65 | /* Use higher contrast and text-weight for printable form. */ 66 | @media print, projection { 67 | .str { 68 | color: #060; } 69 | 70 | .kwd { 71 | color: #006; 72 | font-weight: bold; } 73 | 74 | .com { 75 | color: #600; 76 | font-style: italic; } 77 | 78 | .typ { 79 | color: #404; 80 | font-weight: bold; } 81 | 82 | .lit { 83 | color: #044; } 84 | 85 | .pun, .opn, .clo { 86 | color: #440; } 87 | 88 | .tag { 89 | color: #006; 90 | font-weight: bold; } 91 | 92 | .atn { 93 | color: #404; } 94 | 95 | .atv { 96 | color: #060; } } 97 | /* Style */ 98 | /* 99 | pre.prettyprint { 100 | background: white; 101 | font-family: Menlo, Monaco, Consolas, monospace; 102 | font-size: 12px; 103 | line-height: 1.5; 104 | border: 1px solid #ccc; 105 | padding: 10px; } 106 | */ 107 | 108 | /* Specify class=linenums on a pre to get line numbering */ 109 | ol.linenums { 110 | margin-top: 0; 111 | margin-bottom: 0; } 112 | 113 | /* IE indents via margin-left */ 114 | li.L0, 115 | li.L1, 116 | li.L2, 117 | li.L3, 118 | li.L4, 119 | li.L5, 120 | li.L6, 121 | li.L7, 122 | li.L8, 123 | li.L9 { 124 | /* */ } 125 | 126 | /* Alternate shading for lines */ 127 | li.L1, 128 | li.L3, 129 | li.L5, 130 | li.L7, 131 | li.L9 { 132 | /* */ } 133 | -------------------------------------------------------------------------------- /thirdparty/easyrtc/dev/scripts/client_jsdoc_templates2/tmpl/container.tmpl: -------------------------------------------------------------------------------- 1 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 |
    13 | 14 |
    15 | 16 |

    Extends

    17 | 18 | 21 | 22 | 23 | 24 |

    Mixes In

    25 | 26 | 29 | 30 | 31 | 32 |

    Requires

    33 | 34 | 37 | 38 | 39 | 43 |

    Classes

    44 | 45 |
    46 |
    47 |
    48 |
    49 | 50 | 51 | 55 |

    Namespaces

    56 | 57 |
    58 |
    59 |
    60 |
    61 | 62 | 63 | 67 |

    68 | 69 |

    Members

    70 | 71 |
    72 | 73 |
    74 | 75 | 76 | 80 |

    81 |

    Methods

    82 | 83 |
    84 | 85 |
    86 | 87 | 88 | 92 |

    Type Definitions

    93 | 94 |
    97 | 98 | 102 | 103 |
    106 | 107 | 108 | 112 |

    Events

    113 | 114 |
    115 | 116 |
    117 | 118 |
    119 | 120 |
    121 | 122 | 123 | 124 | -------------------------------------------------------------------------------- /thirdparty/easyrtc/dev/scripts/client_jsdoc_templates2/tmpl/details.tmpl: -------------------------------------------------------------------------------- 1 | 5 |
    6 | 10 | 11 |
    Properties:
    12 | 13 |
    14 | 15 | 16 | 17 | 18 |
    Version:
    19 |
    20 | 21 | 22 | 23 |
    Since:
    24 |
    25 | 26 | 27 | 28 |
    Inherited From:
    29 |
    32 | 33 | 34 | 35 |
    Deprecated:
    39 | 40 | 41 | 42 |
    Author:
    43 |
    44 | 47 |
    48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 |
    License:
    57 |
    58 | 59 | 60 | 61 |
    Default Value:
    62 |
    63 | 64 | 65 | 66 | 67 | 68 |
    Tutorials:
    69 |
    70 | 73 |
    74 | 75 | 76 | 77 |
    See:
    78 |
    79 | 82 |
    83 | 84 | 85 | 86 |
    To Do:
    87 |
    88 | 91 |
    92 | 93 |
    94 | -------------------------------------------------------------------------------- /thirdparty/easyrtc/dev/scripts/client_jsdoc_templates2/tmpl/example.tmpl: -------------------------------------------------------------------------------- 1 | 2 |
    3 | -------------------------------------------------------------------------------- /thirdparty/easyrtc/dev/scripts/client_jsdoc_templates2/tmpl/examples.tmpl: -------------------------------------------------------------------------------- 1 | 6 |

    7 | 8 |
    9 | -------------------------------------------------------------------------------- /thirdparty/easyrtc/dev/scripts/client_jsdoc_templates2/tmpl/exceptions.tmpl: -------------------------------------------------------------------------------- 1 | 5 |
    6 | 7 |
    8 | 9 | 10 | 11 |
    12 |
    13 | Type 14 |
    15 |
    16 | 17 |
    18 |
    19 | -------------------------------------------------------------------------------- /thirdparty/easyrtc/dev/scripts/client_jsdoc_templates2/tmpl/fires.tmpl: -------------------------------------------------------------------------------- 1 | 2 |
  • 3 | 4 |
  • -------------------------------------------------------------------------------- /thirdparty/easyrtc/dev/scripts/client_jsdoc_templates2/tmpl/layout.tmpl: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | EasyRTC Client JsDocs 5 | 6 | 7 | 8 | 9 | 10 |
    11 | 12 |

    Client API - Class easyrtc_ft

    13 | 14 | 15 |
    16 | 17 | 18 |
    19 | 20 | 23 | 24 | 25 | 26 | -------------------------------------------------------------------------------- /thirdparty/easyrtc/dev/scripts/client_jsdoc_templates2/tmpl/mainpage.tmpl: -------------------------------------------------------------------------------- 1 | 5 | 6 | 7 |

    8 | 9 | 10 | 11 |
    12 |
    13 |
    14 | 15 | -------------------------------------------------------------------------------- /thirdparty/easyrtc/dev/scripts/client_jsdoc_templates2/tmpl/members.tmpl: -------------------------------------------------------------------------------- 1 | 2 |
    3 |

    4 | 5 | 6 |

    7 | 8 |
    9 |
    10 | 11 |
    12 | 13 |
    14 | 15 | 16 | 17 | 18 | 19 |
    Example 1? 's':'' ?>
    20 | 21 | 22 |
    23 | -------------------------------------------------------------------------------- /thirdparty/easyrtc/dev/scripts/client_jsdoc_templates2/tmpl/method.tmpl: -------------------------------------------------------------------------------- 1 | 5 |
    6 |

    7 | 8 | 9 |

    10 | 11 |
    12 |
    13 | 14 | 15 |
    16 | 17 |
    18 | 19 | 20 | 21 |
    Type:
    22 | 27 | 28 | 29 | 30 |
    This:
    31 | 32 | 33 | 34 | 35 |
    Parameters:
    36 | 37 | 38 | 39 | 40 | 41 | 42 |
    Fires:
    43 | 46 | 47 | 48 | 49 |
    Throws:
    50 | 1) { ?> 56 | 57 | 59 | 60 | 61 |
    Returns:
    62 | 1) { ?> 68 | 69 | 71 | 72 | 73 |
    Example 1? 's':'' ?>
    74 | 75 | 76 |
    77 | -------------------------------------------------------------------------------- /thirdparty/easyrtc/dev/scripts/client_jsdoc_templates2/tmpl/params.tmpl: -------------------------------------------------------------------------------- 1 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 79 | 80 | 81 | 90 | 91 | 92 | 93 | 98 | 99 | 100 | 104 | 105 | 106 | 107 | 108 |
    NameTypeArgumentDefaultDescription
    75 | 76 | 77 | 78 | 82 | 83 | <optional>
    84 | 85 | 86 | 87 | <nullable>
    88 | 89 |
    94 | 95 | 96 | 97 | 101 |
    Properties
    102 | 103 |
    -------------------------------------------------------------------------------- /thirdparty/easyrtc/dev/scripts/client_jsdoc_templates2/tmpl/properties.tmpl: -------------------------------------------------------------------------------- 1 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 79 | 80 | 81 | 90 | 91 | 92 | 93 | 98 | 99 | 100 | 103 | 104 | 105 | 106 | 107 |
    NameTypeArgumentDefaultDescription
    75 | 76 | 77 | 78 | 82 | 83 | <optional>
    84 | 85 | 86 | 87 | <nullable>
    88 | 89 |
    94 | 95 | 96 | 97 | 101 |
    Properties
    102 |
    -------------------------------------------------------------------------------- /thirdparty/easyrtc/dev/scripts/client_jsdoc_templates2/tmpl/returns.tmpl: -------------------------------------------------------------------------------- 1 | 5 |
    6 | 7 |
    8 | 9 | 10 | 11 |
    12 |
    13 | Type 14 |
    15 |
    16 | 17 |
    18 |
    19 | -------------------------------------------------------------------------------- /thirdparty/easyrtc/dev/scripts/client_jsdoc_templates2/tmpl/source.tmpl: -------------------------------------------------------------------------------- 1 | 4 |
    5 |
    6 |
    7 |
    8 |
    -------------------------------------------------------------------------------- /thirdparty/easyrtc/dev/scripts/client_jsdoc_templates2/tmpl/tutorial.tmpl: -------------------------------------------------------------------------------- 1 |
    2 | 3 |
    4 | 0) { ?> 5 | 10 | 11 | 12 |

    13 |
    14 | 15 |
    16 | 17 |
    18 | 19 |
    20 | -------------------------------------------------------------------------------- /thirdparty/easyrtc/dev/scripts/client_jsdoc_templates2/tmpl/type.tmpl: -------------------------------------------------------------------------------- 1 | 5 | 6 | | 7 | -------------------------------------------------------------------------------- /thirdparty/easyrtc/dev/scripts/readme.md: -------------------------------------------------------------------------------- 1 | EasyRTC Scripts Folder 2 | ====================== 3 | 4 | Any scripts needed for the development and testing of EasyRTC should find their way here. 5 | 6 | Nothing here should be needed by end users. -------------------------------------------------------------------------------- /thirdparty/easyrtc/dev/scripts/update_client_easyrtc_docs.bat: -------------------------------------------------------------------------------- 1 | jsdoc -d ..\..\docs\client_html_docs -t client_jsdoc_templates ..\..\api\easyrtc_int.js 2 | rename ..\..\docs\client_html_docs\window.Easyrtc.html easyrtc.html 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /thirdparty/easyrtc/dev/scripts/update_client_easyrtc_docs.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | jsdoc -d ../../docs/client_html_docs -t client_jsdoc_templates ../../api/easyrtc_int.js --verbose 3 | mv -f ../../docs/client_html_docs/Easyrtc.html ../../docs/client_html_docs/easyrtc.html 4 | -------------------------------------------------------------------------------- /thirdparty/easyrtc/dev/scripts/update_client_easyrtc_ft_docs.bat: -------------------------------------------------------------------------------- 1 | jsdoc -d ..\..\docs\client_html_docs -t client_jsdoc_templates2 ..\..\api\easyrtc_ft.js 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /thirdparty/easyrtc/dev/scripts/update_client_easyrtc_ft_docs.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | jsdoc -d ../../docs/client_html_docs -t client_jsdoc_templates2 ../../api/easyrtc_ft.js --verbose 3 | -------------------------------------------------------------------------------- /thirdparty/easyrtc/dev/scripts/update_server_docs.bat: -------------------------------------------------------------------------------- 1 | jsdoc -d ..\..\docs\server_html_docs\ ..\..\lib\easyrtc_public_obj.js ..\..\lib\easyrtc_default_event_listeners.js 2 | -------------------------------------------------------------------------------- /thirdparty/easyrtc/dev/scripts/update_server_docs.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | jsdoc -d ../../docs/server_html_docs/ ../../lib/easyrtc_public_obj.js ../../lib/easyrtc_default_event_listeners.js --verbose 3 | -------------------------------------------------------------------------------- /thirdparty/easyrtc/docs/client_html_docs/scripts/linenumber.js: -------------------------------------------------------------------------------- 1 | (function() { 2 | var counter = 0; 3 | var numbered; 4 | var source = document.getElementsByClassName('prettyprint source'); 5 | 6 | if (source && source[0]) { 7 | source = source[0].getElementsByTagName('code')[0]; 8 | 9 | numbered = source.innerHTML.split('\n'); 10 | numbered = numbered.map(function(item) { 11 | counter++; 12 | return '' + item; 13 | }); 14 | 15 | source.innerHTML = numbered.join('\n'); 16 | } 17 | })(); 18 | -------------------------------------------------------------------------------- /thirdparty/easyrtc/docs/client_html_docs/scripts/prettify/lang-css.js: -------------------------------------------------------------------------------- 1 | PR.registerLangHandler(PR.createSimpleLexer([["pln",/^[\t\n\f\r ]+/,null," \t\r\n "]],[["str",/^"(?:[^\n\f\r"\\]|\\(?:\r\n?|\n|\f)|\\[\S\s])*"/,null],["str",/^'(?:[^\n\f\r'\\]|\\(?:\r\n?|\n|\f)|\\[\S\s])*'/,null],["lang-css-str",/^url\(([^"')]*)\)/i],["kwd",/^(?:url|rgb|!important|@import|@page|@media|@charset|inherit)(?=[^\w-]|$)/i,null],["lang-css-kw",/^(-?(?:[_a-z]|\\[\da-f]+ ?)(?:[\w-]|\\\\[\da-f]+ ?)*)\s*:/i],["com",/^\/\*[^*]*\*+(?:[^*/][^*]*\*+)*\//],["com", 2 | /^(?:<\!--|--\>)/],["lit",/^(?:\d+|\d*\.\d+)(?:%|[a-z]+)?/i],["lit",/^#[\da-f]{3,6}/i],["pln",/^-?(?:[_a-z]|\\[\da-f]+ ?)(?:[\w-]|\\\\[\da-f]+ ?)*/i],["pun",/^[^\s\w"']+/]]),["css"]);PR.registerLangHandler(PR.createSimpleLexer([],[["kwd",/^-?(?:[_a-z]|\\[\da-f]+ ?)(?:[\w-]|\\\\[\da-f]+ ?)*/i]]),["css-kw"]);PR.registerLangHandler(PR.createSimpleLexer([],[["str",/^[^"')]+/]]),["css-str"]); 3 | -------------------------------------------------------------------------------- /thirdparty/easyrtc/docs/client_html_docs/styles/prettify-jsdoc.css: -------------------------------------------------------------------------------- 1 | /* JSDoc prettify.js theme */ 2 | 3 | /* plain text */ 4 | .pln { 5 | color: #000000; 6 | font-weight: normal; 7 | font-style: normal; 8 | } 9 | 10 | /* string content */ 11 | .str { 12 | color: #006400; 13 | font-weight: normal; 14 | font-style: normal; 15 | } 16 | 17 | /* a keyword */ 18 | .kwd { 19 | color: #000000; 20 | font-weight: bold; 21 | font-style: normal; 22 | } 23 | 24 | /* a comment */ 25 | .com { 26 | font-weight: normal; 27 | font-style: italic; 28 | } 29 | 30 | /* a type name */ 31 | .typ { 32 | color: #000000; 33 | font-weight: normal; 34 | font-style: normal; 35 | } 36 | 37 | /* a literal value */ 38 | .lit { 39 | color: #006400; 40 | font-weight: normal; 41 | font-style: normal; 42 | } 43 | 44 | /* punctuation */ 45 | .pun { 46 | color: #000000; 47 | font-weight: bold; 48 | font-style: normal; 49 | } 50 | 51 | /* lisp open bracket */ 52 | .opn { 53 | color: #000000; 54 | font-weight: bold; 55 | font-style: normal; 56 | } 57 | 58 | /* lisp close bracket */ 59 | .clo { 60 | color: #000000; 61 | font-weight: bold; 62 | font-style: normal; 63 | } 64 | 65 | /* a markup tag name */ 66 | .tag { 67 | color: #006400; 68 | font-weight: normal; 69 | font-style: normal; 70 | } 71 | 72 | /* a markup attribute name */ 73 | .atn { 74 | color: #006400; 75 | font-weight: normal; 76 | font-style: normal; 77 | } 78 | 79 | /* a markup attribute value */ 80 | .atv { 81 | color: #006400; 82 | font-weight: normal; 83 | font-style: normal; 84 | } 85 | 86 | /* a declaration */ 87 | .dec { 88 | color: #000000; 89 | font-weight: bold; 90 | font-style: normal; 91 | } 92 | 93 | /* a variable name */ 94 | .var { 95 | color: #000000; 96 | font-weight: normal; 97 | font-style: normal; 98 | } 99 | 100 | /* a function name */ 101 | .fun { 102 | color: #000000; 103 | font-weight: bold; 104 | font-style: normal; 105 | } 106 | 107 | /* Specify class=linenums on a pre to get line numbering */ 108 | ol.linenums { 109 | margin-top: 0; 110 | margin-bottom: 0; 111 | } 112 | -------------------------------------------------------------------------------- /thirdparty/easyrtc/docs/client_html_docs/styles/prettify-tomorrow.css: -------------------------------------------------------------------------------- 1 | /* Tomorrow Theme */ 2 | /* Original theme - https://github.com/chriskempson/tomorrow-theme */ 3 | /* Pretty printing styles. Used with prettify.js. */ 4 | /* SPAN elements with the classes below are added by prettyprint. */ 5 | /* plain text */ 6 | .pln { 7 | color: #4d4d4c; } 8 | 9 | @media screen { 10 | /* string content */ 11 | .str { 12 | color: #718c00; } 13 | 14 | /* a keyword */ 15 | .kwd { 16 | color: #8959a8; } 17 | 18 | /* a comment */ 19 | .com { 20 | color: #8e908c; } 21 | 22 | /* a type name */ 23 | .typ { 24 | color: #4271ae; } 25 | 26 | /* a literal value */ 27 | .lit { 28 | color: #f5871f; } 29 | 30 | /* punctuation */ 31 | .pun { 32 | color: #4d4d4c; } 33 | 34 | /* lisp open bracket */ 35 | .opn { 36 | color: #4d4d4c; } 37 | 38 | /* lisp close bracket */ 39 | .clo { 40 | color: #4d4d4c; } 41 | 42 | /* a markup tag name */ 43 | .tag { 44 | color: #c82829; } 45 | 46 | /* a markup attribute name */ 47 | .atn { 48 | color: #f5871f; } 49 | 50 | /* a markup attribute value */ 51 | .atv { 52 | color: #3e999f; } 53 | 54 | /* a declaration */ 55 | .dec { 56 | color: #f5871f; } 57 | 58 | /* a variable name */ 59 | .var { 60 | color: #c82829; } 61 | 62 | /* a function name */ 63 | .fun { 64 | color: #4271ae; } } 65 | /* Use higher contrast and text-weight for printable form. */ 66 | @media print, projection { 67 | .str { 68 | color: #060; } 69 | 70 | .kwd { 71 | color: #006; 72 | font-weight: bold; } 73 | 74 | .com { 75 | color: #600; 76 | font-style: italic; } 77 | 78 | .typ { 79 | color: #404; 80 | font-weight: bold; } 81 | 82 | .lit { 83 | color: #044; } 84 | 85 | .pun, .opn, .clo { 86 | color: #440; } 87 | 88 | .tag { 89 | color: #006; 90 | font-weight: bold; } 91 | 92 | .atn { 93 | color: #404; } 94 | 95 | .atv { 96 | color: #060; } } 97 | /* Style */ 98 | /* 99 | pre.prettyprint { 100 | background: white; 101 | font-family: Menlo, Monaco, Consolas, monospace; 102 | font-size: 12px; 103 | line-height: 1.5; 104 | border: 1px solid #ccc; 105 | padding: 10px; } 106 | */ 107 | 108 | /* Specify class=linenums on a pre to get line numbering */ 109 | ol.linenums { 110 | margin-top: 0; 111 | margin-bottom: 0; } 112 | 113 | /* IE indents via margin-left */ 114 | li.L0, 115 | li.L1, 116 | li.L2, 117 | li.L3, 118 | li.L4, 119 | li.L5, 120 | li.L6, 121 | li.L7, 122 | li.L8, 123 | li.L9 { 124 | /* */ } 125 | 126 | /* Alternate shading for lines */ 127 | li.L1, 128 | li.L3, 129 | li.L5, 130 | li.L7, 131 | li.L9 { 132 | /* */ } 133 | -------------------------------------------------------------------------------- /thirdparty/easyrtc/docs/easyrtc_authentication.md: -------------------------------------------------------------------------------- 1 | EasyRTC: Authentication 2 | ======================= 3 | 4 | By default EasyRTC allows all connections, however it can be locked down to work against a variety of authentication methods. Most commonly this is done by sending a username and credential upon connecting to the server. 5 | 6 | Even if authentication is not needed, setting the username can be used to create a visible alternative to the easyrtcid. 7 | 8 | Setting Username and Credential in JS Client 9 | -------------------------------------------- 10 | 11 | **easyrtc.setUsername()** 12 | 13 | - Use before connecting to the server via `easyrtc.connect()` or `easyrtc.easyApp()` 14 | - Shared to other connections in the same room 15 | - Can be used for setting a visible name (instead of easyrtcid) 16 | - To avoid sharing username, embed it inside the credential via `easyrtc.setCredential()` 17 | - Restricted by regular expression 18 | - Default is to allow up to 64 of any characters. 19 | - In client JS, set `easyrtc.usernameRegExp` 20 | - In server, set option `usernameRegExp` 21 | - Usernames should not be considered unique to a connection. One user could have multiple connections open. 22 | - Value is sent to the server "authenticate" event listener 23 | 24 | 25 | easyrtc.setUsername("handsomeJack"); 26 | 27 | 28 | **easyrtc.setCredential()** 29 | 30 | - Use before connecting to the server via `easyrtc.connect()` or `easyrtc.easyApp()` 31 | - Can contain any JSONable object 32 | - Value is sent to the server "authenticate" event listener 33 | 34 | 35 | easyrtc.setCredential({ 36 | "password":"345RTC!", 37 | "realm":"easyrtc.com", 38 | "apikey":"d834kds81vs189s10kkd4" 39 | }); 40 | 41 | 42 | Checking Authentication On Server 43 | --------------------------------- 44 | 45 | **Using "authenticate" Event Listener** 46 | 47 | The "authenticate" event is fired during the initial connection. The listener is provided with full details about the connection, so it may decide whether to authenticate or disconnect them. 48 | 49 | In this simplistic example, any clients connecting to the adminSite application will be denied unless they have a username of "handsomeJack". Any clients connecting to any other application will be let through. 50 | 51 | 52 | var onAuthenticate = function(socket, easyrtcid, appName, username, credential, easyrtcAuthMessage, next){ 53 | if (appName == "adminSite" && username != "handsomeJack"){ 54 | next(new easyrtc.util.ConnectionError("Failed our private auth.")); 55 | } 56 | else { 57 | next(null); 58 | } 59 | }; 60 | 61 | easyrtc.events.on("authenticate", onAuthenticate); 62 | 63 | 64 | **Listener Parameters:** 65 | 66 | - **socket** 67 | - Socket.io object for the specific socket connection 68 | - The IP Address of the connection is available from `socket.handshake.address.address` 69 | - If using a proxy, the IP may be available from `socket.handshake.headers['x-forwarded-for']` 70 | - Referer *may* be available from `socket.handshake.headers.referer` 71 | - The socket can be disconnected using `socket.disconnect()` however it is recommended to call next() with an error 72 | - **easyrtcid** 73 | - A unique identifier given to this connection 74 | - **appName** 75 | - The requested EasyRTC application. Useful for application specific authentication. 76 | - **username** 77 | - Shared to other connections in the same room 78 | - Can be used for setting a visible name (instead of easyrtcid) 79 | - To avoid sharing username, embed it inside the credential via `easyrtc.setCredential()` 80 | - Restricted by regular expression 81 | - Default is to allow up to 64 of any characters. 82 | - In client JS, set `easyrtc.usernameRegExp` 83 | - In server, set option `usernameRegExp` 84 | - **credential** 85 | - Depending on authentication method, may be used for storing passwords, realms, hashes, apikeys, etc. 86 | - Can be any JSONable object 87 | - Type checking should be performed 88 | - **easyrtcAuthMessage** 89 | - Includes the complete authentication message sent by the client 90 | - May be used to deny authentication based on requested rooms, api fields, etc. 91 | - **next** 92 | - A callback function which should be called once (and only once) 93 | - If client should be authenticated, call with a null parameter 94 | - `next(null);` 95 | - If client should not be authenticated, call with an Error for the parameter 96 | - `next(new easyrtc.util.ConnectionError("Failed our private auth."));` 97 | 98 | For more information about EasyRTC server events, see [easyrtc_server_events.md](easyrtc_server_events.md) 99 | 100 | 101 | If You Run Into Problems 102 | ------------------------ 103 | Please feel free to post on our discussion forum: 104 | 105 | - [https://easyrtc.com/forums/](https://easyrtc.com/forums/) 106 | -------------------------------------------------------------------------------- /thirdparty/easyrtc/docs/easyrtc_server_events.md: -------------------------------------------------------------------------------- 1 | EasyRTC Server: Events 2 | ====================== 3 | 4 | Customizing the server behavior of an EasyRTC application is done by creating listeners and associating them with EasyRTC events. 5 | 6 | 7 | Event Methods 8 | ------------- 9 | 10 | The EasyRTC `events` object is directly accessible via the `easyrtc` object. As a convienience it is also a child of the `pub`, `appObj`, `connectionObj`, `sessionObj`, `roomObj`, and `connectionRoomObj`. 11 | 12 | 13 | ### Setting Event Listeners 14 | 15 | Setting event listeners in EasyRTC is similar to the node.js events module method. Any differences are noted below. 16 | 17 | easyrtc.events.on(eventName, listener); 18 | 19 | - All EasyRTC events are limited to a single listener. 20 | - Setting a listener removes any current listeners, including default EasyRTC listeners. 21 | 22 | 23 | ### Resetting Event To Default Listener 24 | 25 | easyrtc.events.setDefaultListener(eventName); 26 | 27 | - Removes a custom listener from an event and then restores the EasyRTC default Listener 28 | 29 | ### Emit an Event 30 | 31 | easyrtc.events.emit(event, [arg1], [arg2], [...], [callback|next]); 32 | 33 | - See individual event documentation for parameter details. 34 | 35 | ### Emit a Default Event 36 | 37 | Setting a listener overrides the default EasyRTC listener. Depending on your application you may wish to release control back to the default EasyRTC listener. 38 | 39 | easyrtc.events.emitDefault(event, [arg1], [arg2], [...], [callback|next]); 40 | 41 | - Default event names are the same as public event names. 42 | - The parameter list is the same as the public listener. This includes the callback if present. 43 | 44 | 45 | EasyRTC Event Callback Convention 46 | --------------------------------- 47 | 48 | Many EasyRTC listeners include a callback as the last parameter. Conventions will differ depending on if it is named 'next' or 'callback'. 49 | 50 | - **next** 51 | - Informs EasyRTC that your listener is done processing and to move onto the next stage of the operation. 52 | - Expects a single 'err' parameter which should be null unless there is an error which should stop the operation and be logged. 53 | 54 | - **callback** 55 | - Informs EasyRTC that your listener is done processing and to move onto the next stage of the operation. 56 | - The first parameter is always an 'err' type which should be null unless there is an error which should stop the operation and be logged. 57 | - See individual event documentation for the remaining parameters. 58 | 59 | 60 | Event Documentation 61 | ------------------- 62 | 63 | The best spot (currently) to see all the available events is by reading the default event listeners documentation. This will give you an idea of the events, parameters, and default behavior. 64 | 65 | - /docs/server_html_docs/module-easyrtc_default_event_listeners-eventListener.html 66 | 67 | 68 | If You Run Into Problems 69 | ------------------------ 70 | Please feel free to post on our discussion forum: 71 | 72 | - [https://easyrtc.com/forums/](https://easyrtc.com/forums/) 73 | -------------------------------------------------------------------------------- /thirdparty/easyrtc/docs/easyrtc_server_ice.md: -------------------------------------------------------------------------------- 1 | EasyRTC Server: ICE Configuration 2 | ================================= 3 | 4 | WebRTC utilizes a technique called [ICE, Interactive Connectivity Establishment](http://en.wikipedia.org/wiki/Interactive_Connectivity_Establishment), to traverse NAT's and firewalls. As part of the ICE process, the browser may utilize [STUN](http://en.wikipedia.org/wiki/STUN) and [TURN](http://en.wikipedia.org/wiki/Traversal_Using_Relays_around_NAT) servers. The addresses to STUN and TURN servers are sent to the browser via an ICE configuration. 5 | 6 | STUN servers generally require very little bandwidth, thus there are many free servers available. On the other hand, TURN does incur significant processing and bandwidth costs. There are some free TURN services for development, but for production you will need a commercial or self-hosted solution. 7 | 8 | It is estimated that 85-90% of connections do not require TURN, however that still leaves a significant percentage which does require it. 9 | 10 | 11 | TURN Details: 12 | ------------- 13 | 14 | - UDP - The UDP based TURN server is the preferred and most common. 15 | - TCP - Connecting to a TCP based TURN server introduces a bit more latency and network overhead, but gets through more firewalls. 16 | - Append "?transport=tcp" to the end of the url 17 | - Use port 443 or port 80 to get through port-blocking firewalls 18 | - Old method was to provide username @beginning of the domain. Now uses separate username field. 19 | 20 | 21 | Setting appIceConfig Option 22 | --------------------------- 23 | 24 | The appIceConfig option accepts an array containing zero or more URL's to STUN and TURN servers along with additional authentication details. It is useful when setting a common configuration for all connections. 25 | 26 | **Example ICE Servers Array** 27 | 28 | 29 | var myIceServers = [ 30 | {"url":"stun:[ADDRESS]:[PORT]"}, 31 | { 32 | "url":"turn:[ADDRESS]:[PORT]", 33 | "username":"[USERNAME]", 34 | "credential":"[CREDENTIAL]" 35 | }, 36 | { 37 | "url":"turn:[ADDRESS]:[PORT][?transport=tcp]", 38 | "username":"[USERNAME]", 39 | "credential":"[CREDENTIAL]" 40 | } 41 | ]; 42 | 43 | 44 | **Setting appIceServers Across Server** 45 | 46 | easyrtc.setOption("appIceServers", myIceServers); 47 | 48 | 49 | **Can be Application Specific** 50 | Run setOption() from the application object to give a unique configuration for the specific application. 51 | 52 | appObj.setOption("appIceServers", myIceServers); 53 | 54 | 55 | **Order Maters** 56 | - The first URL(s) should be to STUN servers 57 | - Followed by a UDP TURN server. This should catch the majority of peer connections unable to handle STUN 58 | - Finally a TCP TURN server can handle those connections which are behind port blocking firewalls. 59 | 60 | 61 | Creating Listener for Event "getIceConfig" 62 | ------------------------------------------ 63 | 64 | Create a custom listener for the event "getIceConfig" in cases where a custom ICE configuration needs to be delivered on a per connection basis. This may be needed for authentication, localization, or load balancing. 65 | 66 | In this example we are supplying a custom username for the TURN server. 67 | 68 | easyrtc.on("getIceConfig", function(connectionObj, callback){ 69 | var myIceServers=[ 70 | {"url":"stun:stun.easyrtc.com:3478"}, 71 | { 72 | "url": "turn:turn.easyrtc.com:3478", 73 | "username": connectionObj.getUsername(), 74 | "credential": "345yRTC!" 75 | } 76 | ]; 77 | 78 | callback(null, myIceServers); 79 | }); 80 | 81 | For more information about EasyRTC server events, see [easyrtc_server_events.md](easyrtc_server_events.md) 82 | 83 | 84 | Note: TURN Does Not Solve All Connection Problems 85 | ------------------------------------------------- 86 | 87 | Even with TURN, a WebRTC peer connections can fail. 88 | 89 | - Firewalls with packet or header inspection may block traffic 90 | - Disconnection issues 91 | - Low bandwith 92 | - High latency 93 | - Packet loss 94 | - Poor client processing power 95 | 96 | 97 | If You Run Into Problems 98 | ------------------------ 99 | Please feel free to post on our discussion forum: 100 | 101 | - [https://easyrtc.com/forums/](https://easyrtc.com/forums/) 102 | -------------------------------------------------------------------------------- /thirdparty/easyrtc/docs/easyrtc_server_ssl.md: -------------------------------------------------------------------------------- 1 | EasyRTC Server: Using SSL 2 | ========================= 3 | 4 | Being a signaling server, EasyRTC sends many message in plain text between the client and server. It is a good idea to connect to EasyRTC via SSL. 5 | 6 | Benefits of using SSL: 7 | ---------------------- 8 | 9 | - Increase end user confidence 10 | - Secure signaling traffic from eavesdroppers 11 | - In Chrome: Browser remembers camera and microphone sharing preference for site. Does not re-ask at each - visit. 12 | - In Chrome: Enables screen sharing API 13 | 14 | 15 | Obtaining and Installing an SSL Certificate: 16 | -------------------------------------------- 17 | 18 | [SSL certificates](https://www.google.com/#q=SSL+certificates) can be obtained from several different providers. Before applying, you will need to generate a CSR (Certificate Signing Request). The most common software used for generating CSR's and handling SSL is [OpenSSL](http://www.openssl.org/), There are many operating system specific guides available for how to use SSL on your server. 19 | 20 | [Self signed certificates](http://www.selfsignedcertificate.com/) are a free method of creating a certificate suitable for development. A warning will occur when browsing your site. 21 | 22 | 23 | Setting Up Node.JS For SSL: 24 | --------------------------- 25 | 26 | Node.JS provides [the https module](http://nodejs.org/api/https.html#https_https_createserver_options_requestlistener) which uses SSL. This method is easy and useful for development and lower traffic sites. For higher traffic, the site can be more responsive if SSL is handled by a SSL gateway or load balancing server. 27 | 28 | 29 | Example server.js file using SSL: 30 | --------------------------------- 31 | 32 | // Load required modules 33 | var https = require("https"); // https server core module 34 | var fs = require("fs"); // file system core module 35 | var express = require("express"); // web framework external module 36 | var io = require("socket.io"); // web socket external module 37 | var easyrtc = require("easyrtc"); // EasyRTC external module 38 | 39 | // Setup and configure Express http server. Expect a subfolder called "static" to be the web root. 40 | var httpApp = express(); 41 | httpApp.use(express.static(__dirname + "/static/")); 42 | 43 | // Start Express https server on port 8443 44 | var webServer = https.createServer( 45 | { 46 | key: fs.readFileSync("/pathtokeys/domain.key"), 47 | cert: fs.readFileSync("/pathtokeys/domain.crt") 48 | }, 49 | httpApp).listen(8443); 50 | 51 | // Start Socket.io so it attaches itself to Express server 52 | var socketServer = io.listen(webServer, {"log level":1}); 53 | 54 | // Start EasyRTC server 55 | var rtc = easyrtc.listen(httpApp, socketServer); 56 | 57 | 58 | Using an SSL Gateway or Load Balancing server: 59 | ---------------------------------------------- 60 | 61 | For performance, load balancing, or firewall reasons you may wish to use an SSL gateway or load balancer. These often entail the gateway handling SSL, then routing requests to an EasyRTC server in a virtual private network. The gateway should be set to include the X-Forwarded-For http header. There are many solutions for doing this, each with their own instructions. 62 | 63 | 64 | If You Run Into Problems 65 | ------------------------ 66 | Please feel free to post on our discussion forum: 67 | 68 | - [https://easyrtc.com/forums/](https://easyrtc.com/forums/) 69 | -------------------------------------------------------------------------------- /thirdparty/easyrtc/docs/easyrtc_upcoming_features.md: -------------------------------------------------------------------------------- 1 | EasyRTC: Upcoming Features 2 | ========================== 3 | 4 | There are many exciting features we are looking to add to EasyRTC in upcoming releases. 5 | 6 | 7 | General Features 8 | ---------------- 9 | 10 | - Better statitstics gathering 11 | - Better WebRTC capabilities discovery 12 | 13 | 14 | Client JS Specific Features 15 | --------------------------- 16 | 17 | - Better cross browser support 18 | - More power for applications to influence WebRTC connections 19 | - Send a message to a specific username (Can already target easyrtcid's and rooms) 20 | - Named media streams 21 | 22 | 23 | Server Specific Features 24 | ------------------------ 25 | 26 | - Option to minimize easyrtc.js 27 | - Better JSON validation method (thinking of using Swagger) 28 | - Easier programming methods 29 | - Additional events related to call monitoring 30 | 31 | 32 | Demos 33 | ----- 34 | 35 | - More demos! 36 | 37 | 38 | Other 39 | ----- 40 | 41 | - As the specifications and browsers are improved, we'll follow. 42 | 43 | 44 | Any Features You Would Like? 45 | ---------------------------- 46 | 47 | Please feel free to post on our discussion forum: 48 | 49 | * [https://easyrtc.com/forums/](https://easyrtc.com/forums/) 50 | -------------------------------------------------------------------------------- /thirdparty/easyrtc/docs/easyrtc_with_other_servers.md: -------------------------------------------------------------------------------- 1 | EasyRTC: Using Alongside Other Servers 2 | ====================================== 3 | 4 | EasyRTC supports working alongside of Apache, IIS, and other web servers. In these cases, your web application would use EasyRTC to just handle signaling. All html and other files would continue to be hosted on the current web server. 5 | 6 | 7 | Configuration Notes: 8 | -------------------- 9 | - EasyRTC can be set to use a different port to avoid conflicts (such as 8080) 10 | - In client code, you must tell EasyRTC the socket.io URL prior to running `easyrtc.easyApp()` or `easyrtc.connect()` 11 | - `easyrtc.setSocketUrl("");` 12 | - eg: `easyrtc.setSocketUrl("//mydomain.com:8080");` 13 | - If the EasyRTC server is simply on a different port you can use: 14 | - `easyrtc.setSocketUrl(":");` 15 | - eg: `easyrtc.setSocketUrl(":8080");` 16 | - If your web server is running SSL, then EasyRTC should too 17 | - Ensure that all client API files resolve properly from your HTML. If API's remain hosted on the EasyRTC server your HTML may need to explicitly link to them. Commonly linked to API files are: 18 | - /easyrtc/easyrtc.js 19 | - /easyrtc/easyrtc.css 20 | - /easyrtc/easyrtc_ft.js (optional file transfer api) 21 | - /socket.io/socket.io.js 22 | - Optional: Host API directories on the web server so all JavaScript calls are from the same server. The folders containing client side API's are: 23 | - `/node_modules/easyrtc/api/` 24 | - `/node_modules/socket.io/node_modules/socket.io-client/dist/` 25 | 26 | 27 | Walkthrough for Simple Audio Video Demo 28 | --------------------------------------- 29 | 30 | Here are some steps to running the simple audio video demo from your web server. This is assuming you are running locally with your web server on port 80, and EasyRTC on port 8080. 31 | 32 | 1. Copy the EasyRTC /demos folder to your web root (or a sub folder) 33 | 2. Edit `demo_audio_video_simple.html` 34 | - Replace all instances of `/easyrtc/` with `//localhost:8080/easyrtc/` 35 | 3. Edit `js/demo_audio_video_simple.js` 36 | - Insert the following to be the first line within the connect() function: 37 | `easyrtc.setSocketUrl(":8080");` 38 | 4. Start your webserver and EasyRTC server 39 | 5. In your browser visit: 40 | http://localhost/demos/demo_audio_video_simple.html 41 | 42 | Your own WebRTC app can then be developed in a similar fashion. 43 | 44 | 45 | If You Run Into Problems 46 | ------------------------ 47 | Please feel free to post on our discussion forum: 48 | 49 | - [https://easyrtc.com/forums/](https://easyrtc.com/forums/) 50 | -------------------------------------------------------------------------------- /thirdparty/easyrtc/docs/server_html_docs/fonts/OpenSans-Bold-webfont.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xirdev/xsdk/5a38e83f0ba7023d171e430cb9524d21a774725d/thirdparty/easyrtc/docs/server_html_docs/fonts/OpenSans-Bold-webfont.eot -------------------------------------------------------------------------------- /thirdparty/easyrtc/docs/server_html_docs/fonts/OpenSans-Bold-webfont.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xirdev/xsdk/5a38e83f0ba7023d171e430cb9524d21a774725d/thirdparty/easyrtc/docs/server_html_docs/fonts/OpenSans-Bold-webfont.woff -------------------------------------------------------------------------------- /thirdparty/easyrtc/docs/server_html_docs/fonts/OpenSans-BoldItalic-webfont.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xirdev/xsdk/5a38e83f0ba7023d171e430cb9524d21a774725d/thirdparty/easyrtc/docs/server_html_docs/fonts/OpenSans-BoldItalic-webfont.eot -------------------------------------------------------------------------------- /thirdparty/easyrtc/docs/server_html_docs/fonts/OpenSans-BoldItalic-webfont.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xirdev/xsdk/5a38e83f0ba7023d171e430cb9524d21a774725d/thirdparty/easyrtc/docs/server_html_docs/fonts/OpenSans-BoldItalic-webfont.woff -------------------------------------------------------------------------------- /thirdparty/easyrtc/docs/server_html_docs/fonts/OpenSans-Italic-webfont.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xirdev/xsdk/5a38e83f0ba7023d171e430cb9524d21a774725d/thirdparty/easyrtc/docs/server_html_docs/fonts/OpenSans-Italic-webfont.eot -------------------------------------------------------------------------------- /thirdparty/easyrtc/docs/server_html_docs/fonts/OpenSans-Italic-webfont.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xirdev/xsdk/5a38e83f0ba7023d171e430cb9524d21a774725d/thirdparty/easyrtc/docs/server_html_docs/fonts/OpenSans-Italic-webfont.woff -------------------------------------------------------------------------------- /thirdparty/easyrtc/docs/server_html_docs/fonts/OpenSans-Light-webfont.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xirdev/xsdk/5a38e83f0ba7023d171e430cb9524d21a774725d/thirdparty/easyrtc/docs/server_html_docs/fonts/OpenSans-Light-webfont.eot -------------------------------------------------------------------------------- /thirdparty/easyrtc/docs/server_html_docs/fonts/OpenSans-Light-webfont.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xirdev/xsdk/5a38e83f0ba7023d171e430cb9524d21a774725d/thirdparty/easyrtc/docs/server_html_docs/fonts/OpenSans-Light-webfont.woff -------------------------------------------------------------------------------- /thirdparty/easyrtc/docs/server_html_docs/fonts/OpenSans-LightItalic-webfont.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xirdev/xsdk/5a38e83f0ba7023d171e430cb9524d21a774725d/thirdparty/easyrtc/docs/server_html_docs/fonts/OpenSans-LightItalic-webfont.eot -------------------------------------------------------------------------------- /thirdparty/easyrtc/docs/server_html_docs/fonts/OpenSans-LightItalic-webfont.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xirdev/xsdk/5a38e83f0ba7023d171e430cb9524d21a774725d/thirdparty/easyrtc/docs/server_html_docs/fonts/OpenSans-LightItalic-webfont.woff -------------------------------------------------------------------------------- /thirdparty/easyrtc/docs/server_html_docs/fonts/OpenSans-Regular-webfont.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xirdev/xsdk/5a38e83f0ba7023d171e430cb9524d21a774725d/thirdparty/easyrtc/docs/server_html_docs/fonts/OpenSans-Regular-webfont.eot -------------------------------------------------------------------------------- /thirdparty/easyrtc/docs/server_html_docs/fonts/OpenSans-Regular-webfont.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xirdev/xsdk/5a38e83f0ba7023d171e430cb9524d21a774725d/thirdparty/easyrtc/docs/server_html_docs/fonts/OpenSans-Regular-webfont.woff -------------------------------------------------------------------------------- /thirdparty/easyrtc/docs/server_html_docs/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | JSDoc: Home 6 | 7 | 8 | 9 | 12 | 13 | 14 | 15 | 16 | 17 | 18 |
    19 | 20 |

    Home

    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 | 55 | 56 |
    57 | 58 |
    59 | Documentation generated by JSDoc 3.3.3 on Tue Oct 20 2015 10:53:18 GMT-0700 (PDT) 60 |
    61 | 62 | 63 | 64 | 65 | -------------------------------------------------------------------------------- /thirdparty/easyrtc/docs/server_html_docs/module-easyrtc_default_event_listeners.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | JSDoc: Module: easyrtc_default_event_listeners 6 | 7 | 8 | 9 | 12 | 13 | 14 | 15 | 16 | 17 | 18 |
    19 | 20 |

    Module: easyrtc_default_event_listeners

    21 | 22 | 23 | 24 | 25 | 26 | 27 |
    28 | 29 |
    30 | 31 | 32 | 33 | 34 | 35 |
    36 | 37 |
    38 |
    39 | 40 | 41 |
    Event listeners used by EasyRTC. Many of these can be overridden using server options.
    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 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | 80 |
    Author:
    81 |
    82 |
      83 |
    • Priologic Software, info@easyrtc.com
    • 84 |
    85 |
    86 | 87 | 88 | 89 | 90 | 91 | 92 | 93 | 94 |
    License:
    95 |
    • BSD v2, see LICENSE file in module root folder.
    96 | 97 | 98 | 99 | 100 | 101 |
    Source:
    102 |
    105 | 106 | 107 | 108 | 109 | 110 | 111 | 112 |
    113 | 114 | 115 | 116 | 117 | 118 | 119 | 120 | 121 | 122 | 123 | 124 | 125 | 126 | 127 | 128 | 129 | 130 | 131 |
    132 | 133 | 134 | 135 | 136 | 137 | 138 |

    Classes

    139 | 140 |
    141 |
    eventListener
    142 |
    143 |
    144 | 145 | 146 | 147 | 148 | 149 | 150 | 151 | 152 | 153 | 154 | 155 | 156 | 157 |
    158 | 159 |
    160 | 161 | 162 | 163 | 164 |
    165 | 166 | 169 | 170 |
    171 | 172 |
    173 | Documentation generated by JSDoc 3.3.3 on Tue Oct 20 2015 10:53:18 GMT-0700 (PDT) 174 |
    175 | 176 | 177 | 178 | 179 | -------------------------------------------------------------------------------- /thirdparty/easyrtc/docs/server_html_docs/module-easyrtc_public_obj-pub.events.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | JSDoc: Class: events 6 | 7 | 8 | 9 | 12 | 13 | 14 | 15 | 16 | 17 | 18 |
    19 | 20 |

    Class: events

    21 | 22 | 23 | 24 | 25 | 26 | 27 |
    28 | 29 |
    30 | 31 |

    32 | easyrtc_public_obj~pub. 33 | 34 | events 35 |

    36 | 37 | 38 |
    39 | 40 |
    41 |
    42 | 43 | 44 | 45 | 46 | 47 |

    new events()

    48 | 49 | 50 | 51 | 52 | 53 |
    54 | EasyRTC Event handling object which contain most methods for interacting with EasyRTC events. For convenience, this class has also been attached to the application, connection, session, and room classes. 55 |
    56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 |
    70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | 80 | 81 | 82 | 83 | 84 | 85 | 86 | 87 | 88 | 89 | 90 | 91 | 92 | 93 | 94 | 95 | 96 |
    Source:
    97 |
    100 | 101 | 102 | 103 | 104 | 105 | 106 | 107 |
    108 | 109 | 110 | 111 | 112 | 113 | 114 | 115 | 116 | 117 | 118 | 119 | 120 | 121 | 122 | 123 | 124 | 125 |
    126 | 127 | 128 | 129 | 130 | 131 | 132 | 133 | 134 | 135 | 136 | 137 | 138 | 139 | 140 | 141 | 142 | 143 | 144 |
    145 | 146 |
    147 | 148 | 149 | 150 | 151 |
    152 | 153 | 156 | 157 |
    158 | 159 |
    160 | Documentation generated by JSDoc 3.3.3 on Tue Oct 20 2015 10:53:18 GMT-0700 (PDT) 161 |
    162 | 163 | 164 | 165 | 166 | -------------------------------------------------------------------------------- /thirdparty/easyrtc/docs/server_html_docs/module-easyrtc_public_obj-pub.util.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | JSDoc: Class: util 6 | 7 | 8 | 9 | 12 | 13 | 14 | 15 | 16 | 17 | 18 |
    19 | 20 |

    Class: util

    21 | 22 | 23 | 24 | 25 | 26 | 27 |
    28 | 29 |
    30 | 31 |

    32 | easyrtc_public_obj~pub. 33 | 34 | util 35 |

    36 | 37 | 38 |
    39 | 40 |
    41 |
    42 | 43 | 44 | 45 | 46 | 47 |

    new util()

    48 | 49 | 50 | 51 | 52 | 53 |
    54 | General utility functions are grouped in this util object. For convenience, this class has also been attached to the application, connection, session, and room classes. 55 |
    56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 |
    70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | 80 | 81 | 82 | 83 | 84 | 85 | 86 | 87 | 88 | 89 | 90 | 91 | 92 | 93 | 94 | 95 | 96 |
    Source:
    97 |
    100 | 101 | 102 | 103 | 104 | 105 | 106 | 107 |
    108 | 109 | 110 | 111 | 112 | 113 | 114 | 115 | 116 | 117 | 118 | 119 | 120 | 121 | 122 | 123 | 124 | 125 |
    126 | 127 | 128 | 129 | 130 | 131 | 132 | 133 | 134 | 135 | 136 | 137 | 138 | 139 | 140 | 141 | 142 | 143 | 144 |
    145 | 146 |
    147 | 148 | 149 | 150 | 151 |
    152 | 153 | 156 | 157 |
    158 | 159 |
    160 | Documentation generated by JSDoc 3.3.3 on Tue Oct 20 2015 10:53:18 GMT-0700 (PDT) 161 |
    162 | 163 | 164 | 165 | 166 | -------------------------------------------------------------------------------- /thirdparty/easyrtc/docs/server_html_docs/scripts/linenumber.js: -------------------------------------------------------------------------------- 1 | /*global document */ 2 | (function() { 3 | var source = document.getElementsByClassName('prettyprint source linenums'); 4 | var i = 0; 5 | var lineNumber = 0; 6 | var lineId; 7 | var lines; 8 | var totalLines; 9 | var anchorHash; 10 | 11 | if (source && source[0]) { 12 | anchorHash = document.location.hash.substring(1); 13 | lines = source[0].getElementsByTagName('li'); 14 | totalLines = lines.length; 15 | 16 | for (; i < totalLines; i++) { 17 | lineNumber++; 18 | lineId = 'line' + lineNumber; 19 | lines[i].id = lineId; 20 | if (lineId === anchorHash) { 21 | lines[i].className += ' selected'; 22 | } 23 | } 24 | } 25 | })(); 26 | -------------------------------------------------------------------------------- /thirdparty/easyrtc/docs/server_html_docs/scripts/prettify/lang-css.js: -------------------------------------------------------------------------------- 1 | PR.registerLangHandler(PR.createSimpleLexer([["pln",/^[\t\n\f\r ]+/,null," \t\r\n "]],[["str",/^"(?:[^\n\f\r"\\]|\\(?:\r\n?|\n|\f)|\\[\S\s])*"/,null],["str",/^'(?:[^\n\f\r'\\]|\\(?:\r\n?|\n|\f)|\\[\S\s])*'/,null],["lang-css-str",/^url\(([^"')]*)\)/i],["kwd",/^(?:url|rgb|!important|@import|@page|@media|@charset|inherit)(?=[^\w-]|$)/i,null],["lang-css-kw",/^(-?(?:[_a-z]|\\[\da-f]+ ?)(?:[\w-]|\\\\[\da-f]+ ?)*)\s*:/i],["com",/^\/\*[^*]*\*+(?:[^*/][^*]*\*+)*\//],["com", 2 | /^(?:<\!--|--\>)/],["lit",/^(?:\d+|\d*\.\d+)(?:%|[a-z]+)?/i],["lit",/^#[\da-f]{3,6}/i],["pln",/^-?(?:[_a-z]|\\[\da-f]+ ?)(?:[\w-]|\\\\[\da-f]+ ?)*/i],["pun",/^[^\s\w"']+/]]),["css"]);PR.registerLangHandler(PR.createSimpleLexer([],[["kwd",/^-?(?:[_a-z]|\\[\da-f]+ ?)(?:[\w-]|\\\\[\da-f]+ ?)*/i]]),["css-kw"]);PR.registerLangHandler(PR.createSimpleLexer([],[["str",/^[^"')]+/]]),["css-str"]); 3 | -------------------------------------------------------------------------------- /thirdparty/easyrtc/docs/server_html_docs/styles/prettify-jsdoc.css: -------------------------------------------------------------------------------- 1 | /* JSDoc prettify.js theme */ 2 | 3 | /* plain text */ 4 | .pln { 5 | color: #000000; 6 | font-weight: normal; 7 | font-style: normal; 8 | } 9 | 10 | /* string content */ 11 | .str { 12 | color: #006400; 13 | font-weight: normal; 14 | font-style: normal; 15 | } 16 | 17 | /* a keyword */ 18 | .kwd { 19 | color: #000000; 20 | font-weight: bold; 21 | font-style: normal; 22 | } 23 | 24 | /* a comment */ 25 | .com { 26 | font-weight: normal; 27 | font-style: italic; 28 | } 29 | 30 | /* a type name */ 31 | .typ { 32 | color: #000000; 33 | font-weight: normal; 34 | font-style: normal; 35 | } 36 | 37 | /* a literal value */ 38 | .lit { 39 | color: #006400; 40 | font-weight: normal; 41 | font-style: normal; 42 | } 43 | 44 | /* punctuation */ 45 | .pun { 46 | color: #000000; 47 | font-weight: bold; 48 | font-style: normal; 49 | } 50 | 51 | /* lisp open bracket */ 52 | .opn { 53 | color: #000000; 54 | font-weight: bold; 55 | font-style: normal; 56 | } 57 | 58 | /* lisp close bracket */ 59 | .clo { 60 | color: #000000; 61 | font-weight: bold; 62 | font-style: normal; 63 | } 64 | 65 | /* a markup tag name */ 66 | .tag { 67 | color: #006400; 68 | font-weight: normal; 69 | font-style: normal; 70 | } 71 | 72 | /* a markup attribute name */ 73 | .atn { 74 | color: #006400; 75 | font-weight: normal; 76 | font-style: normal; 77 | } 78 | 79 | /* a markup attribute value */ 80 | .atv { 81 | color: #006400; 82 | font-weight: normal; 83 | font-style: normal; 84 | } 85 | 86 | /* a declaration */ 87 | .dec { 88 | color: #000000; 89 | font-weight: bold; 90 | font-style: normal; 91 | } 92 | 93 | /* a variable name */ 94 | .var { 95 | color: #000000; 96 | font-weight: normal; 97 | font-style: normal; 98 | } 99 | 100 | /* a function name */ 101 | .fun { 102 | color: #000000; 103 | font-weight: bold; 104 | font-style: normal; 105 | } 106 | 107 | /* Specify class=linenums on a pre to get line numbering */ 108 | ol.linenums { 109 | margin-top: 0; 110 | margin-bottom: 0; 111 | } 112 | -------------------------------------------------------------------------------- /thirdparty/easyrtc/docs/server_html_docs/styles/prettify-tomorrow.css: -------------------------------------------------------------------------------- 1 | /* Tomorrow Theme */ 2 | /* Original theme - https://github.com/chriskempson/tomorrow-theme */ 3 | /* Pretty printing styles. Used with prettify.js. */ 4 | /* SPAN elements with the classes below are added by prettyprint. */ 5 | /* plain text */ 6 | .pln { 7 | color: #4d4d4c; } 8 | 9 | @media screen { 10 | /* string content */ 11 | .str { 12 | color: #718c00; } 13 | 14 | /* a keyword */ 15 | .kwd { 16 | color: #8959a8; } 17 | 18 | /* a comment */ 19 | .com { 20 | color: #8e908c; } 21 | 22 | /* a type name */ 23 | .typ { 24 | color: #4271ae; } 25 | 26 | /* a literal value */ 27 | .lit { 28 | color: #f5871f; } 29 | 30 | /* punctuation */ 31 | .pun { 32 | color: #4d4d4c; } 33 | 34 | /* lisp open bracket */ 35 | .opn { 36 | color: #4d4d4c; } 37 | 38 | /* lisp close bracket */ 39 | .clo { 40 | color: #4d4d4c; } 41 | 42 | /* a markup tag name */ 43 | .tag { 44 | color: #c82829; } 45 | 46 | /* a markup attribute name */ 47 | .atn { 48 | color: #f5871f; } 49 | 50 | /* a markup attribute value */ 51 | .atv { 52 | color: #3e999f; } 53 | 54 | /* a declaration */ 55 | .dec { 56 | color: #f5871f; } 57 | 58 | /* a variable name */ 59 | .var { 60 | color: #c82829; } 61 | 62 | /* a function name */ 63 | .fun { 64 | color: #4271ae; } } 65 | /* Use higher contrast and text-weight for printable form. */ 66 | @media print, projection { 67 | .str { 68 | color: #060; } 69 | 70 | .kwd { 71 | color: #006; 72 | font-weight: bold; } 73 | 74 | .com { 75 | color: #600; 76 | font-style: italic; } 77 | 78 | .typ { 79 | color: #404; 80 | font-weight: bold; } 81 | 82 | .lit { 83 | color: #044; } 84 | 85 | .pun, .opn, .clo { 86 | color: #440; } 87 | 88 | .tag { 89 | color: #006; 90 | font-weight: bold; } 91 | 92 | .atn { 93 | color: #404; } 94 | 95 | .atv { 96 | color: #060; } } 97 | /* Style */ 98 | /* 99 | pre.prettyprint { 100 | background: white; 101 | font-family: Consolas, Monaco, 'Andale Mono', monospace; 102 | font-size: 12px; 103 | line-height: 1.5; 104 | border: 1px solid #ccc; 105 | padding: 10px; } 106 | */ 107 | 108 | /* Specify class=linenums on a pre to get line numbering */ 109 | ol.linenums { 110 | margin-top: 0; 111 | margin-bottom: 0; } 112 | 113 | /* IE indents via margin-left */ 114 | li.L0, 115 | li.L1, 116 | li.L2, 117 | li.L3, 118 | li.L4, 119 | li.L5, 120 | li.L6, 121 | li.L7, 122 | li.L8, 123 | li.L9 { 124 | /* */ } 125 | 126 | /* Alternate shading for lines */ 127 | li.L1, 128 | li.L3, 129 | li.L5, 130 | li.L7, 131 | li.L9 { 132 | /* */ } 133 | -------------------------------------------------------------------------------- /thirdparty/easyrtc/index.js: -------------------------------------------------------------------------------- 1 | // The EasyRTC server files are in the lib folder 2 | module.exports = require('./lib/easyrtc_server'); -------------------------------------------------------------------------------- /thirdparty/easyrtc/lib/easyrtc_private_obj.js: -------------------------------------------------------------------------------- 1 | /** 2 | * @file Maintains private object used within EasyRTC for holding in-memory state information 3 | * @module easyrtc_private_obj 4 | * @author Priologic Software, info@easyrtc.com 5 | * @copyright Copyright 2015 Priologic Software. All rights reserved. 6 | * @license BSD v2, see LICENSE file in module root folder. 7 | */ 8 | 9 | // var _ = require("underscore"); // General utility functions external module 10 | var defaultOptions = require("./easyrtc_default_options"); // EasyRTC global variable 11 | var g = require("./general_util"); // General utility functions local module 12 | 13 | var e = {}; 14 | 15 | e.version = g.getPackageData("version"); 16 | e.serverStartOn = Date.now(); 17 | e.option = g.deepCopy(defaultOptions); 18 | e.app = {}; 19 | 20 | module.exports = e; 21 | -------------------------------------------------------------------------------- /thirdparty/easyrtc/lib/easyrtc_server.js: -------------------------------------------------------------------------------- 1 | /** 2 | * @file Entry library for EasyRTC server. Houses the primary listen function. 3 | * @author Priologic Software, info@easyrtc.com 4 | * @copyright Copyright 2015 Priologic Software. All rights reserved. 5 | * @license BSD v2, see LICENSE file in module root folder. 6 | */ 7 | 8 | var g = require("./general_util"); // General utility functions local module 9 | g.checkModules(); // Check to ensure all required modules are available 10 | 11 | var _ = require("underscore"); // General utility functions external module 12 | var pub = require("./easyrtc_public_obj"); // EasyRTC public object 13 | 14 | 15 | /** 16 | * Listener for starting the EasyRTC server. The successCallback can be used to determine when EasyRTC is fully running. 17 | * 18 | * @param {Object} httpApp express http object. Allows EasyRTC to interact with the http server. 19 | * @param {Object} socketServer socket.io server object. Allows EasyRTC to interact with the socket server. 20 | * @param {Object} options EasyRTC options object. Sets configurable options. If null, than defaults will be used. 21 | * @param {function(Error, Object)} listenCallback Called when the start up routines are complete. In form of successCallback(err, pub). The parameter 'err' will null unless an error occurs and 'pub' is the EasyRTC public object for interacting with the server. 22 | */ 23 | exports.listen = function(httpApp, socketServer, options, listenCallback) { 24 | pub.util.logInfo("Starting EasyRTC Server (v" + pub.getVersion() +") on Node (" + process.version + ")"); 25 | 26 | // Set server object references in public object 27 | pub.httpApp = httpApp; 28 | pub.socketServer = socketServer; 29 | 30 | if (options){ 31 | pub.util.logDebug("Overriding options", options); 32 | 33 | for (var optionName in options) { 34 | pub.setOption(optionName, options[optionName]); 35 | } 36 | } 37 | 38 | pub.util.logDebug("Emitting event 'startup'"); 39 | pub.events.emit("startup", function(err) { 40 | if (err) { 41 | pub.util.logError("Error occurred upon startup", err); 42 | if(_.isFunction(listenCallback)) { 43 | listenCallback(err, null); 44 | } 45 | } 46 | else { 47 | pub.util.logInfo("EasyRTC Server Ready For Connections (v"+ pub.getVersion() + ")"); 48 | if(_.isFunction(listenCallback)) { 49 | listenCallback(err, pub); 50 | } 51 | } 52 | }); 53 | }; 54 | 55 | 56 | /** 57 | * Returns an EasyRTC options object with a copy of the default options. 58 | * 59 | * @returns {Object} EasyRTC options object 60 | */ 61 | exports.getDefaultOptions = function() { 62 | var defaultOptions = require("./easyrtc_default_options"); 63 | return g.deepCopy(defaultOptions); 64 | }; 65 | 66 | 67 | /** 68 | * Sets listener for a given EasyRTC event. Only one listener is allowed per event. Any other listeners for an event are removed before adding the new one. 69 | * 70 | * @private 71 | * @param {String} event Listener name. 72 | * @param {Function} listener Function 73 | */ 74 | exports.on = function(event, listener) { 75 | if (event && _.isFunction(listener)) { 76 | pub.events.removeAllListeners(event); 77 | pub.events.on(event, listener); 78 | } 79 | else { 80 | pub.util.logError("Unable to add listener to event '" + event + "'"); 81 | } 82 | }; 83 | 84 | 85 | /** 86 | * Removes all listeners for an event. If there is a default EasyRTC listener, it will be added. 87 | * 88 | * @private 89 | * @param {String} event Listener name. 90 | */ 91 | exports.removeAllListeners = function(event) { 92 | if (event) { 93 | pub.events.removeAllListeners(event); 94 | pub.events.setDefaultListener(event); 95 | } 96 | }; 97 | 98 | 99 | /** 100 | * Returns the listeners for an event. 101 | * 102 | * @private 103 | * @param {String} event Listener name. 104 | */ 105 | exports.listeners = pub.events.listeners; 106 | 107 | 108 | /** 109 | * Expose all event functions 110 | */ 111 | exports.events = pub.events; 112 | 113 | 114 | /** 115 | * Expose public utility functions 116 | */ 117 | exports.util = pub.util; 118 | 119 | 120 | /** 121 | * Sets individual option. 122 | * 123 | * @param {Object} option Option name 124 | * @param {Object} value Option value 125 | * @returns {Boolean} true on success, false on failure 126 | */ 127 | exports.setOption = pub.setOption; 128 | -------------------------------------------------------------------------------- /thirdparty/easyrtc/lib/general_util.js: -------------------------------------------------------------------------------- 1 | /** 2 | * @file General utility functions not specific to EasyRTC 3 | * @module general_util 4 | * @author Priologic Software, info@easyrtc.com 5 | * @copyright Copyright 2015 Priologic Software. All rights reserved. 6 | * @license BSD v2, see LICENSE file in module root folder. 7 | */ 8 | 9 | var util = require("util"); 10 | 11 | var g = {}; 12 | 13 | 14 | /** 15 | * Performs a deep copy of an object, returning the duplicate. 16 | * Do not use on objects with circular references. 17 | * 18 | * @param {Object} input Input variable (or object) to be copied. 19 | * @returns {Object} New copy of variable. 20 | */ 21 | g.deepCopy = function(input) { 22 | if (input == null 23 | || typeof input != "object" 24 | || (input.constructor != Object && input.constructor != Array) 25 | ) { 26 | return input; 27 | } 28 | 29 | if ( 30 | input.constructor == Boolean 31 | || input.constructor == Date 32 | || input.constructor == Function 33 | || input.constructor == Number 34 | || input.constructor == RegExp 35 | || input.constructor == String 36 | ) { 37 | return new input.constructor(input); 38 | } 39 | 40 | if (input instanceof Array) { 41 | var copy = []; 42 | for (var i = 0, len = input.length; i < len; i++) { 43 | copy[i] = g.deepCopy(input[i]); 44 | } 45 | return copy; 46 | } 47 | 48 | if (input instanceof Object) { 49 | var copy = {}; 50 | for (var key in input) { 51 | if (input.hasOwnProperty(key)) { 52 | copy[key] = g.deepCopy(input[key]); 53 | } 54 | } 55 | return copy; 56 | } 57 | return null; 58 | }; 59 | 60 | 61 | /** 62 | * Returns a field from the package.json file in the module root. 63 | * Giving null field name will return the full contents of the file. 64 | * If a field name is provided, it will return null if the field not found. 65 | * 66 | * @param {Object} fieldName Name of field you wish to return. 67 | * @returns {Object} Value of the given field, or the full contents of the file if a null field is given. 68 | */ 69 | g.getPackageData = function(fieldName) { 70 | var packageFile = require("../package"); 71 | if (!fieldName) { 72 | return g.deepCopy(packageFile); 73 | } 74 | else if (packageFile[fieldName]) { 75 | return g.deepCopy(packageFile[fieldName]); 76 | } 77 | else { 78 | return null; 79 | } 80 | }; 81 | 82 | 83 | /* An abstract error object which should be easy to extend for custom Error classes. 84 | * 85 | * @copyright Based on code in article by Dustin Seno. 86 | * 87 | * @param {String} Custom error message. 88 | * @param {Object} Constructor property. 89 | * 90 | */ 91 | g.AbstractError = function(msg, constr){ 92 | Error.captureStackTrace(this, constr || this); 93 | this.message = msg || "Error"; 94 | }; 95 | util.inherits(g.AbstractError, Error); 96 | g.AbstractError.prototype.name = "Abstract Error"; 97 | 98 | 99 | /** 100 | * Reads package.json and ensures all required modules are installed. Will exit if one or more is not found. 101 | */ 102 | g.checkModules = function () { 103 | try { 104 | var easyrtcPackage = require("../package"); 105 | } 106 | catch( e ) { 107 | console.log("ERROR: Could not load package.json from project root. This file is required for reading project properties."); 108 | process.exit(1); 109 | } 110 | 111 | var moduleExists = function (modName) { 112 | try { return require.resolve(modName); } 113 | catch( e ) { return false; } 114 | }; 115 | 116 | var isModuleMissing = false; 117 | for (var key in easyrtcPackage.dependencies) { 118 | if (!moduleExists(key)) { 119 | isModuleMissing = true; 120 | console.log("ERROR: Missing module '" + key + "'"); 121 | } 122 | } 123 | 124 | if (isModuleMissing) { 125 | console.log("ERROR: Required modules are not installed. Run 'npm install' from command line."); 126 | process.exit(1); 127 | } 128 | 129 | delete require.cache[easyrtcPackage]; 130 | }; 131 | 132 | 133 | module.exports = g; -------------------------------------------------------------------------------- /thirdparty/easyrtc/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name" : "easyrtc", 3 | "version" : "1.0.15", 4 | "homepage" : "http://www.easyrtc.com/", 5 | "author" : "Priologic Software Inc. (http://priologic.com/)", 6 | "description" : "EasyRTC enables quick development of webRTC", 7 | "contributors": [ 8 | "Doug Pelton ", 9 | "Rod Apeldoorn ", 10 | "Eric Davies " 11 | ], 12 | 13 | "keywords": [ 14 | "webRTC", 15 | "easy", 16 | "EasyRTC", 17 | "RTC", 18 | "server" 19 | ], 20 | 21 | "repository": { 22 | "type" : "git", 23 | "url" : "https://github.com/priologic/easyrtc.git" 24 | }, 25 | 26 | "bugs": { 27 | "url" : "https://github.com/priologic/easyrtc/issues" 28 | }, 29 | 30 | "main" : "index", 31 | 32 | "dependencies" : { 33 | "async" : "0.2.x", 34 | "colors" : "*", 35 | "underscore": "1.5.x" 36 | }, 37 | 38 | "analyze" : false, 39 | 40 | "license" : "BSD2", 41 | 42 | "engines": { 43 | "node" : ">=0.8" 44 | } 45 | } 46 | -------------------------------------------------------------------------------- /thirdparty/easyrtc/server_example/README.md: -------------------------------------------------------------------------------- 1 | EasyRTC Server Example 2 | ====================== 3 | 4 | This folder contains all the files you'll need to create a simple server with EasyRTC, Express, and Socket.io. You can copy these files where you wish. 5 | 6 | Files and Folders: 7 | ------------------ 8 | 9 | - package.json - Provides project information allowing npm to find and install required modules. 10 | - server.js - Server code. 11 | - /static/ - Root folder for web server. Put html files here! 12 | 13 | 14 | Installing Required Modules: 15 | ---------------------------- 16 | 17 | - Type `npm install` in console. 18 | - This will read the package.json file to find and install the required modules including EasyRTC, Express, and Socket.io. 19 | - Required modules will go into a new 'node_modules' subfolder 20 | 21 | 22 | Running the Server: 23 | ------------------- 24 | 25 | - Type `node server` in console. 26 | 27 | 28 | Viewing the examples: 29 | --------------------- 30 | 31 | - In your WebRTC enabled browser, visit your server address including the port. By default port 8080 is used. 32 | - http://localhost:8080/ -------------------------------------------------------------------------------- /thirdparty/easyrtc/server_example/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name" : "easyrtc_server_example", 3 | "version" : "0.1.6", 4 | "author" : "Priologic Software Inc. (http://priologic.com/)", 5 | "description" : "Simple EasyRTC server example which includes EasyRTC, Express, and Socket.io", 6 | 7 | "private" : true, 8 | 9 | "scripts": { 10 | "start" : "node server.js" 11 | }, 12 | 13 | "dependencies" : { 14 | "easyrtc" : "1.0.x", 15 | "express" : "*", 16 | "socket.io" : "0.9.x" 17 | }, 18 | 19 | "license" : "BSD2", 20 | 21 | "engines": { 22 | "node" : ">=0.8" 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /thirdparty/easyrtc/server_example/server.js: -------------------------------------------------------------------------------- 1 | // Load required modules 2 | var http = require("http"); // http server core module 3 | var express = require("express"); // web framework external module 4 | var io = require("socket.io"); // web socket external module 5 | var easyrtc = require("../"); // EasyRTC external module 6 | 7 | // Setup and configure Express http server. Expect a subfolder called "static" to be the web root. 8 | var httpApp = express(); 9 | httpApp.use(express.static(__dirname + "/static/")); 10 | 11 | // Start Express http server on port 8080 12 | var webServer = http.createServer(httpApp).listen(8080); 13 | 14 | // Start Socket.io so it attaches itself to Express server 15 | var socketServer = io.listen(webServer, {"log level":1}); 16 | 17 | easyrtc.setOption("logLevel", "debug"); 18 | 19 | // Overriding the default easyrtcAuth listener, only so we can directly access its callback 20 | easyrtc.events.on("easyrtcAuth", function(socket, easyrtcid, msg, socketCallback, callback) { 21 | easyrtc.events.defaultListeners.easyrtcAuth(socket, easyrtcid, msg, socketCallback, function(err, connectionObj){ 22 | if (err || !msg.msgData || !msg.msgData.credential || !connectionObj) { 23 | callback(err, connectionObj); 24 | return; 25 | } 26 | 27 | connectionObj.setField("credential", msg.msgData.credential, {"isShared":false}); 28 | 29 | console.log("["+easyrtcid+"] Credential saved!", connectionObj.getFieldValueSync("credential")); 30 | 31 | callback(err, connectionObj); 32 | }); 33 | }); 34 | 35 | // To test, lets print the credential to the console for every room join! 36 | easyrtc.events.on("roomJoin", function(connectionObj, roomName, roomParameter, callback) { 37 | console.log("["+connectionObj.getEasyrtcid()+"] Credential retrieved!", connectionObj.getFieldValueSync("credential")); 38 | easyrtc.events.defaultListeners.roomJoin(connectionObj, roomName, roomParameter, callback); 39 | }); 40 | 41 | 42 | // Start EasyRTC server 43 | var rtc = easyrtc.listen(httpApp, socketServer, null, function(err, rtcRef) { 44 | console.log("Initiated"); 45 | 46 | rtcRef.events.on("roomCreate", function(appObj, creatorConnectionObj, roomName, roomOptions, callback) { 47 | console.log("roomCreate fired! Trying to create: " + roomName); 48 | 49 | appObj.events.defaultListeners.roomCreate(appObj, creatorConnectionObj, roomName, roomOptions, callback); 50 | }); 51 | }); 52 | -------------------------------------------------------------------------------- /thirdparty/easyrtc/server_example/static/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | EasyRTC - Server Root 5 | 8 | 9 | 10 |

    You have installed EasyRTC!

    11 | 12 |

    This is your server's Web Root

    13 | 14 |

    This is the easiest location to put your own static html files for developing WebRTC applications.

    15 | 16 |

    In the meantime we'll forward you to the EasyRTC Demo page...

    17 | 18 | Powered by EasyRTC 19 | 20 | --------------------------------------------------------------------------------