Licode: Publishing Stream has failed after successful ICE checks - javascript

I'm following the guide on Licode page
I have installed everything on Ubuntu 14.04.
I have configure ssl for licode and erizo controller in licode_config.js file to make the example works. Every other configurations i just keep them un-touch.
I have run the basic example but i cannot make a video conference.
Tracing google chrome console log, i catched:
WARNING: Publishing Stream 665544631310986500 has failed after successful ICE checks
DEBUG: Event: stream-failed
Stream Failed, act accordingly
DEBUG: Received a removeStream for 665544631310986500 and it has not been registered here, ignoring.
INFO: Stream unpublished
It's looks like i have to configure STUN or something in configuration of licode to make it works.

Got to say "Thank you!", it works for me by setting following in licode_config.js
set the range of ports to be used by libnice:
config.erizo.minport=30000
config.erizo.maxport=31000
set server public IP
config.erizoController.publicIP=serverPublicIP
config.erizoAgent.publicIP=serverPublicIP
Change default stun server as stun.google is wall'ed in countries like north korea, Iran etc.
My licode runs in docker, having ports mapping from server to the docker container of range 30000-31000, so have to ensure libnice ports fall into the range.

After reading several articles on Licode website and their community. I find out that, the issue just because my server is an Azure VPS - not a local computer. It has public IP and private IP so I have to set config.erizoController.publicIP, config.erizoAgent.publicIP to the public IP of the server.
Also Azure vps close all ports by default (except some ports i have already opened). Because of that, i have to open suitable port range and setting the config.erizo.minport, config.erizo.maxport in licode_config.js file. The port range i use: 30000-31000.
The valuable reference: http://discourse.lynckia.com/t/running-licode-in-azure/29

Related

Azure function is not triggered locally

I developed my Azure function app locally using VScode and pushed it to azure cloud, I have eventhub-trigger functions, I used to debug my code locally through VScode normally, but now when I run func host start --debuge, functions in my app started but nothing is triggered, I can see them triggered on the cloud through their log, it drive me mad, why they are not triggered locally, they are enabled, I restarted my function app several times, but I got nothing.
My app is https://butterflyfnapp.azurewebsites.net
In additional to Mikhail, other option is to create a separate consumer group of the Event Hub for each environment such as a cloud and development/VS and configured them in the Application settings or local.settings.json.
Then add the ConsumerGroup = "%consumergroup%" to the EventHubTrigger argument in your function, where the consumergroup is an example of the variable name in the settings.
Beside the above options, still you have a capability for testing a non-Http trigger function locally using a Http POST request. In other words, your function can be tested locally the same way like is done in the portal. More details here.
The following is an example of the testing EventHubTrigger function using a Http POST request:
url: http://localhost:7071/admin/functions/MyFunction
payload:
{
"input": '{"Id":1234,"Name":"abcd"}'
}
Event Hub consumer information (checkpoints) are stored in Blob Storage. If you share the connection string to Blob Storage between development / production environments, they will use the same checkpoints, so they will compete against each other.
My guess is that your cloud deployment always processes the events, updates the checkpoint to the latest position, and then local deployment takes this checkpoint and doesn't do anything.
To make sure this doesn't happen, create an additional "dev" Blob Storage and set the local connection string setting to that storage.

icecast and mixxx setup - clients cannot hear my radio station

I just finished setting up icecast2 server and mixxx in my computer. I can listen to my radio through the url: http://127.0.0.1:8000/soylatino. However, I asked my friends in another states if they can listen to my radio and they said that they cannot listen anything, but a message of Error #2032 came up after they hit play button. They also have adobe flash player working in their computers. Can someone please tell me if I am doing something wrong by trying to configure my server or maybe something else is wrong?
Thanks a lot in advance for your support.
I am using the following xml parameters in icecast.xml file:
<!-- You may have multiple <listener> elements -->
<listen-socket>
<port>8000</port>
<!-- <bind-address>127.0.0.1</bind-address> -->
<!-- <shoutcast-mount>/stream</shoutcast-mount> -->
</listen-socket>
<!--
<relay>
<server>127.0.0.1</server>
<port>8080</port>
<mount>/soylatino</mount>
<local-mount>/different.ogg</local-mount>
<relay-shoutcast-metadata>0</relay-shoutcast-metadata>
</relay>
-->
In mixxx live broadcasting settings, I am using the following settings:
Type: icecast2,
Host: 127.0.0.1,
Port: 8000,
Mount: /soylatino,
Login: source,
Password: mypassword,
Then, when I hit OK button, a message appears:
Mixx has successfully connected to the streaming server.
Next: I wrote the following code in my html page:
<div id="container">Get the Flash Player to see this player.
<script type="text/javascript" src="http://www.shoutcheap.com/flashplayer/skins/swfobject.js"></script>
<script type='text/javascript'>
var s1 = new SWFObject('http://www.shoutcheap.com/flashplayer/skins/player.swf','player',"340","50","9","#FFFFFF");
s1.addParam('allowfullscreen','true');
s1.addParam('allowscriptaccess','always') s1.addParam("flashvars","skin=http://www.shoutcheap.com/flashplayer/skins/grungetape.swf&title=Live Stream&type=sound&file=http://127.0.0.1:8000/soylatino%3Ftype%3D.mp3 &13202692901&duration=99999&id=scplayer&autostart=true");
s1.write("container");
This is my page: www.followperu.com/radio.html
127.0.0.1 is a special IP address used for loopback. That is, 127.0.0.1 always means yourself... your own computer.
You can connect to 127.0.0.1 because you're running the server on the same computer as Mixxx. However, when your friends try to connect to 127.0.0.1, their browser tries to connect to their own computers, not yours.
While you can use 127.0.0.1, you need to give your friends your public IP address. In most home network setups, you only have one public IP address which your router handles. Your router then assigns private IP addresses to other computers on your network, and handles routing requests between the two networks via NAT. If you Google for, "what is my IP address?", it will give you your public IP address. (You can also get this information in your router's configuration.) Next, make sure you have forwarded over port 8000 from your router to your computer's private IP address. (This private IP address is not the loopback 127.0.0.1. It will be in one of the private network blocks, such as 10.0.0.0 or 192.168.0.0 or 172.16.0.0.)

WebRTC Ice State = "failed" black Video

in about:webrtc in firefox my IceState is always "in progress" until it fail.
If i use the website in local it works, but if a friend try to call me it doesn't work the remote starts but it's blank.
my turn stun server:
{ "iceserver":{url:'stun:stun01.sipphone.com'},
{url:'stun:stun.ekiga.net'},
{url:'stun:stun.fwdnet.net'},
{url:'stun:stun.ideasip.com'},
{url:'stun:stun.iptel.org'},
{url:'stun:stun.rixtelecom.se'},
{url:'stun:stun.schlund.de'},
{url:'stun:stun.l.google.com:19302'},
{url:'stun:stun1.l.google.com:19302'},
{url:'stun:stun2.l.google.com:19302'},
{url:'stun:stun3.l.google.com:19302'},
{url:'stun:stun4.l.google.com:19302'},
{url:'stun:stunserver.org'},
{url:'stun:stun.softjoys.com'},
{url:'stun:stun.voiparound.com'},
{url:'stun:stun.voipbuster.com'},
{url:'stun:stun.voipstunt.com'},
{url:'stun:stun.voxgratia.org'},
{url:'stun:stun.xten.com'},
And i'm using an AWS server as STUN and signaling.
in about:webrtc errors:
INFO setting pair to state FAILED
ERR specified too many components
WARNING specified bogus candidate
ERR pairing local trickle ICE candidate srflx
Your setup seems to require TURN and you have not provided working TURN servers.
By having ten stun servers, you're trying to get an opinion about your public IP address from ten different people. The answer won't change. Just use a single STUN server...
Using other people's TURN credentials is not something you should do without permission. If you test the credentials using http://webrtc.github.io/samples/src/content/peerconnection/trickle-ice/ you will notice that you don't get relay candidates.
For turn:numb.viagenie.ca the credentials are incorrect and 192.158.29.39 doesn't seem to be running a TURN server anymore.

Using the Tor api to make an anonymous proxy server

I am making an app which makes lots of api calls to some site. The trouble I've run into is that the site has a limit on the number of api calls that can be made per minute. To get around this I was hoping to use Tor in conjunction with node-http-proxy to create a proxy table which uses anonymous ip addresses taken from the tor api.
So my question is, how possible is this, and what tools would you recommend for getting it done. My app is written in javascript, so solutions involving things like node-tor are preferable.
I've found a reasonable solution using tor and curl command line tools via Node.js.
Download the tor command-line tool and set it in your $PATH.
Now, we can send requests through this local tor proxy which will establish a "circuit" through the TOR network. Let's see our IP address using http://ifconfig.me. You can copy paste all of these things into your Node REPL:
var cp = require('child_process'),
exec = cp.exec,
spawn = cp.spawn,
tor = spawn('tor'),
puts = function(err,stdo,stde){ console.log(stdo) },
child;
After this, you may want to build in a delay while the tor proxy is spawned & sets itself up.
Next, let's go through the TOR network and ask http://ifconfig.me what IP address is accessing it.
function sayIP(){
child = exec('curl --proxy socks5h://localhost:9050 http://ifconfig.me',puts);
}
sayIP();
If you want a new IP address, restarting tor by turning it off and then on seems to be the most reliable method:
function restartTor(){
tor.kill('SIGINT');
tor = spawn('tor');
}
restartTor();
Note: There is another way I've seen people describe getting a new IP address (setting up a new "circuit") on the fly, but it only seems to work about 10% of the time in my tests. If you want to try it:
Find & copy torrc.sample to torrc, then change torrc as follows:
Uncomment ControlPort 9051 (9050 is the local proxy, opening 9051 lets us control it)
Uncomment & set CookieAuthentication 0.
Uncomment HashedControlPassword and set to result of:
$ tor --hash-password "your_password"
Then you could use a function like this to send a NEWNYM signal to your local tor proxy to try getting a new IP address without restarting.
function newIP(){
var signal = 'echo -e "AUTHENTICATE \"your_password\"\r\nsignal NEWNYM\r\nQUIT" | nc -v 127.0.0.1 9051';
child = exec(signal,puts);
}
newIP();

Trying to setup a node.js web server

I am new to web servers and node.js and I need some help.
I have no idea what to put in the .listen();
I think since I want it to connect to the internet the server needs to listen to port 80 but but I don't know what to put as the second value.
.listen(80, "What do I add here?");
Also i have a free domain name (www.example.co.cc) that is pointing to a dynamic dns (DnsExit) since I dynamic ip. I installed to program needed to update my ip address.
Is there anything I am missing?
Have you seen the example on the homepage of the Node.js project?
http://nodejs.org/
It clearly demonstrated .listen( 1337, "127.0.0.1" ); and then the next line reads Server running at http://127.0.0.1:1337/ - so the second argument is the IP you want to listen on. If you then take a look at the documentation you will see that this second argument is actually optional, if you omit it, Node.js will accept incoming connections directed at any IPv4 address.
http://nodejs.org/docs/v0.5.6/api/http.html#server.listen

Categories

Resources