<html xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns:m="http://schemas.microsoft.com/office/2004/12/omml" xmlns="http://www.w3.org/TR/REC-html40">
<head>
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=us-ascii">
<meta name=Generator content="Microsoft Word 12 (filtered medium)">
<style>
<!--
/* Font Definitions */
@font-face
        {font-family:"Cambria Math";
        panose-1:2 4 5 3 5 4 6 3 2 4;}
@font-face
        {font-family:Calibri;
        panose-1:2 15 5 2 2 2 4 3 2 4;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0in;
        margin-bottom:.0001pt;
        font-size:11.0pt;
        font-family:"Calibri","sans-serif";}
a:link, span.MsoHyperlink
        {mso-style-priority:99;
        color:blue;
        text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
        {mso-style-priority:99;
        color:purple;
        text-decoration:underline;}
span.EmailStyle17
        {mso-style-type:personal-compose;
        font-family:"Calibri","sans-serif";
        color:windowtext;}
.MsoChpDefault
        {mso-style-type:export-only;}
@page Section1
        {size:8.5in 11.0in;
        margin:1.0in 1.0in 1.0in 1.0in;}
div.Section1
        {page:Section1;}
-->
</style>
<!--[if gte mso 9]><xml>
<o:shapedefaults v:ext="edit" spidmax="1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
<o:shapelayout v:ext="edit">
<o:idmap v:ext="edit" data="1" />
</o:shapelayout></xml><![endif]-->
</head>
<body lang=EN-US link=blue vlink=purple>
<div class=Section1>
<p class=MsoNormal>Hello all,<o:p></o:p></p>
<p class=MsoNormal><o:p> </o:p></p>
<p class=MsoNormal>Has anyone have magicjack working with their asterisk? I had
patched chan_sip.c with some code that allows asterisk to do the md5 hash that
mjmd5 proxy does. * shows that it is registered with magicjack, but incoming
calls are not even hitting my * box and outgoing calls get congestion. Here is
my relevant configs. I did do a ton of google searching, but it all points to
it should work. And I am stuck. I know my existing dial plan internally works,
as it already works with my GV and ipkall. Any links or suggestions would be
greatly appreciated.<o:p></o:p></p>
<p class=MsoNormal><o:p> </o:p></p>
<p class=MsoNormal>Thanks.<o:p></o:p></p>
<p class=MsoNormal><o:p> </o:p></p>
<p class=MsoNormal>A little snip of sip show peers<o:p></o:p></p>
<p class=MsoNormal><o:p> </o:p></p>
<p class=MsoNormal>magicjack/Exxxxxxxxxx01
67.91.177.70
5070 OK (55 ms)<o:p></o:p></p>
<p class=MsoNormal><o:p> </o:p></p>
<p class=MsoNormal>I get this in the CLI<o:p></o:p></p>
<p class=MsoNormal><o:p> </o:p></p>
<p class=MsoNormal> -- Executing
[12486323130@home-sip-int-in:1] Dial("SIP/jjonesip-00000006",
"SIP/xxxxxxxxxxx@magicjack,30,r") in new stack<o:p></o:p></p>
<p class=MsoNormal> == Using SIP RTP CoS mark 5<o:p></o:p></p>
<p class=MsoNormal> == Using UDPTL CoS mark 5<o:p></o:p></p>
<p class=MsoNormal> -- Called xxxxxxxxxxx@magicjack<o:p></o:p></p>
<p class=MsoNormal> -- Got SIP response 480 "Temporarily
Unavailable" back from 67.91.177.70<o:p></o:p></p>
<p class=MsoNormal> -- SIP/magicjack-00000007 is circuit-busy<o:p></o:p></p>
<p class=MsoNormal><o:p> </o:p></p>
<p class=MsoNormal>Sip.conf<o:p></o:p></p>
<p class=MsoNormal><o:p> </o:p></p>
<p class=MsoNormal>[general]<o:p></o:p></p>
<p class=MsoNormal>useragent=MagicJack/2.0.554f (SJ
Labs)
; incase they look at the UA of sip client<o:p></o:p></p>
<p class=MsoNormal><o:p> </o:p></p>
<p class=MsoNormal>register =>
Exxxxxxxxxx01:xxxxxxxxxxxxxxxxxxx@proxy1.detroit.talk4free.com:5070/1100@home-sip-int-in<o:p></o:p></p>
<p class=MsoNormal><o:p> </o:p></p>
<p class=MsoNormal>[magicjack]<o:p></o:p></p>
<p class=MsoNormal>context=home-sip-int-in<o:p></o:p></p>
<p class=MsoNormal>username=Exxxxxxxxxx01<o:p></o:p></p>
<p class=MsoNormal>authuser=Exxxxxxxxxx01<o:p></o:p></p>
<p class=MsoNormal>type=friend<o:p></o:p></p>
<p class=MsoNormal>secret=xxxxxxxxxxxxxxxxxxxx<o:p></o:p></p>
<p class=MsoNormal>port=5070<o:p></o:p></p>
<p class=MsoNormal>nat=no<o:p></o:p></p>
<p class=MsoNormal>insecure=port,invite<o:p></o:p></p>
<p class=MsoNormal>;host=67.106.133.198 ; idk was in a howto<o:p></o:p></p>
<p class=MsoNormal>host=proxy1.detroit.talk4free.com<o:p></o:p></p>
<p class=MsoNormal>;host=67.91.177.70 ; detroit proxy<o:p></o:p></p>
<p class=MsoNormal>;host=vms03.detroit.talk4free.com<o:p></o:p></p>
<p class=MsoNormal>;host=67.91.177.77 ; vms03.detroitproxy<o:p></o:p></p>
<p class=MsoNormal>useragent=MagicJack/2.0.554f (SJ Labs)<o:p></o:p></p>
<p class=MsoNormal>fromuser=Exxxxxxxxxx01<o:p></o:p></p>
<p class=MsoNormal>fromdomain=talk4free.com<o:p></o:p></p>
<p class=MsoNormal>dtmfmode=rfc2833<o:p></o:p></p>
<p class=MsoNormal>;dtmfmode=inband<o:p></o:p></p>
<p class=MsoNormal>qualify=2000<o:p></o:p></p>
<p class=MsoNormal>canreinvite=no<o:p></o:p></p>
<p class=MsoNormal>disallow=all<o:p></o:p></p>
<p class=MsoNormal>allow=ulaw<o:p></o:p></p>
<p class=MsoNormal>t38pt_udptl = no<o:p></o:p></p>
<p class=MsoNormal><o:p> </o:p></p>
<p class=MsoNormal>And the code I used to patch chan_sip.c<o:p></o:p></p>
<p class=MsoNormal><o:p> </o:p></p>
<p class=MsoNormal>--- old/channels/chan_sip.c
2009-08-13 10:24:40.000000000 -0700<o:p></o:p></p>
<p class=MsoNormal>+++ new/channels/chan_sip.c
2009-08-22 13:47:29.000000000 -0700<o:p></o:p></p>
<p class=MsoNormal>@@ -8535,6 +8535,32 @@<o:p></o:p></p>
<p class=MsoNormal>
ast_md5_hash(a2_hash, a2);<o:p></o:p></p>
<p class=MsoNormal>
snprintf(resp, sizeof(resp), "%s:%s:%s", a1_hash, usednonce,
a2_hash);<o:p></o:p></p>
<p class=MsoNormal>
ast_md5_hash(resp_hash, resp);<o:p></o:p></p>
<p class=MsoNormal>+<o:p></o:p></p>
<p class=MsoNormal>+<o:p></o:p></p>
<p class=MsoNormal>+ /* To a Magicjack
domain */<o:p></o:p></p>
<p class=MsoNormal>+
if (strstr(uri,"talk4free.com"))<o:p></o:p></p>
<p class=MsoNormal>+
{<o:p></o:p></p>
<p class=MsoNormal>+
char callid[256];<o:p></o:p></p>
<p class=MsoNormal>+
char newnonce[256];<o:p></o:p></p>
<p class=MsoNormal>+
char *c;<o:p></o:p></p>
<p class=MsoNormal>+
int i;<o:p></o:p></p>
<p class=MsoNormal>+
ast_copy_string(callid, p->callid, sizeof(callid));<o:p></o:p></p>
<p class=MsoNormal>+
ast_copy_string(newnonce, p->nonce, sizeof(newnonce));<o:p></o:p></p>
<p class=MsoNormal>+<o:p></o:p></p>
<p class=MsoNormal>+
strcat(newnonce, "_");<o:p></o:p></p>
<p class=MsoNormal>+
c = newnonce + strlen(newnonce);<o:p></o:p></p>
<p class=MsoNormal>+
char
hex[2];<o:p></o:p></p>
<p class=MsoNormal>+
hex[1] = 0;<o:p></o:p></p>
<p class=MsoNormal>+
for (i = 0; i < 8; i++) {<o:p></o:p></p>
<p class=MsoNormal>+
hex[0] = newnonce[i];<o:p></o:p></p>
<p class=MsoNormal>+
int x = strtol(hex, NULL, 16);<o:p></o:p></p>
<p class=MsoNormal>+
*c++ = callid[x];<o:p></o:p></p>
<p class=MsoNormal>+
}<o:p></o:p></p>
<p class=MsoNormal>+
*c++ = 0;<o:p></o:p></p>
<p class=MsoNormal>+<o:p></o:p></p>
<p class=MsoNormal>+
snprintf(resp,sizeof(resp),"%s:%s:%s", a1_hash, newnonce, a2_hash);<o:p></o:p></p>
<p class=MsoNormal>+
ast_md5_hash(resp_hash, resp);<o:p></o:p></p>
<p class=MsoNormal>+
}<o:p></o:p></p>
<p class=MsoNormal> }<o:p></o:p></p>
<p class=MsoNormal><o:p> </o:p></p>
<p class=MsoNormal> good_response =
keys[K_RESP].s &&<o:p></o:p></p>
<p class=MsoNormal>@@ -11658,6 +11684,31 @@<o:p></o:p></p>
<p class=MsoNormal>
snprintf(resp,sizeof(resp),"%s:%s:%s", a1_hash, p->nonce,
a2_hash);<o:p></o:p></p>
<p class=MsoNormal>
ast_md5_hash(resp_hash, resp);<o:p></o:p></p>
<p class=MsoNormal><o:p> </o:p></p>
<p class=MsoNormal>+ /* To a Magicjack
domain */<o:p></o:p></p>
<p class=MsoNormal>+ if
(strstr(uri,"talk4free.com"))<o:p></o:p></p>
<p class=MsoNormal>+ {<o:p></o:p></p>
<p class=MsoNormal>+
char callid[256];<o:p></o:p></p>
<p class=MsoNormal>+
char
newnonce[256];<o:p></o:p></p>
<p class=MsoNormal>+
char *c;<o:p></o:p></p>
<p class=MsoNormal>+
int i;<o:p></o:p></p>
<p class=MsoNormal>+
ast_copy_string(callid, p->callid, sizeof(callid));<o:p></o:p></p>
<p class=MsoNormal>+
ast_copy_string(newnonce, p->nonce, sizeof(newnonce));<o:p></o:p></p>
<p class=MsoNormal>+<o:p></o:p></p>
<p class=MsoNormal>+
strcat(newnonce, "_");<o:p></o:p></p>
<p class=MsoNormal>+
c = newnonce + strlen(newnonce);<o:p></o:p></p>
<p class=MsoNormal>+
char hex[2];<o:p></o:p></p>
<p class=MsoNormal>+
hex[1] = 0;<o:p></o:p></p>
<p class=MsoNormal>+
for (i = 0; i < 8; i++) {<o:p></o:p></p>
<p class=MsoNormal>+
hex[0] = newnonce[i];<o:p></o:p></p>
<p class=MsoNormal>+
int x = strtol(hex, NULL, 16);<o:p></o:p></p>
<p class=MsoNormal>+
*c++ = callid[x];<o:p></o:p></p>
<p class=MsoNormal>+
}<o:p></o:p></p>
<p class=MsoNormal>+
*c++ = 0;<o:p></o:p></p>
<p class=MsoNormal>+<o:p></o:p></p>
<p class=MsoNormal>+
snprintf(resp,sizeof(resp),"%s:%s:%s", a1_hash, newnonce, a2_hash);<o:p></o:p></p>
<p class=MsoNormal>+
ast_md5_hash(resp_hash, resp);<o:p></o:p></p>
<p class=MsoNormal>+ }<o:p></o:p></p>
<p class=MsoNormal>+<o:p></o:p></p>
<p class=MsoNormal> /* only include
the opaque string if it's set */<o:p></o:p></p>
<p class=MsoNormal> if
(!ast_strlen_zero(p->opaque)) {<o:p></o:p></p>
<p class=MsoNormal>
snprintf(opaque, sizeof(opaque), ", opaque=\"%s\"",
p->opaque);<o:p></o:p></p>
<p class=MsoNormal><o:p> </o:p></p>
</div>
</body>
</html>