/* include lib */
var dgram = require('dgram');
var server = dgram.createSocket('udp4');

/* server config */
var host = '192.168.0.177';
var port = 5060;

/* sample INVITE request */
var invite = "INVITE sip:[email protected]:5060;transport=udp 
SIP/2.0\r\nVia: SIP/2.0/UDP 
192.168.2.40:5060;rport;branch=z9hG4bK-9a623a408\r\nAllow-Events: 
message-summary, refer, dialog, line-seize, presence, call-info, 
as-feature-event\r\nMax-Forwards: 70\r\nCall-ID: 
[email protected]\r\nFrom: 
<sip:[email protected]:5060;otg=16>;tag=192.168.2.40+1+111906+b5b34931\r\nTo:
 
<sip:[email protected]>\r\nCSeq: 847215118 INVITE\r\nExpires: 
180\r\nOrganization: MetaSwitch\r\nSupported: resource-priority, 
100rel\r\nContent-Length: 166\r\nContent-Type: application/sdp\r\nAllow: 
INVITE, ACK, CANCEL, BYE, REGISTER, OPTIONS, PRACK, UPDATE, SUBSCRIBE, 
NOTIFY, REFER, INFO, PUBLISH\r\nContact: 
<sip:[email protected]:5060>\r\nP-Asserted-Identity: 
<sip:[email protected]:5060>\r\n\r\nv=0\r\no=- 2012157880 
2012157880 IN IP4 192.168.2.14\r\ns=-\r\nc=IN IP4 
192.168.2.14\r\nt=0\r\nm=audio 33238 RTP/AVP 18 0 101\r\na=rtpmap:101 
telephone-event/8000\r\na=ptime:20";

/* isInvite */
function isInvite(message){
request = message.split('\r\n'); 
pattern = new RegExp(/INVITE/);
request = request[0].match(pattern);
if(request != null){
if(request[0] == "INVITE"){return true;}
else{return false;}
}
}

/* getVia */
function getVia(message){
pattern = new RegExp(/Via:(.*)/);
via = message.match(pattern);
return via[0];
}

/* getFrom */
function getFrom(message){
pattern = new RegExp(/From:(.*)/);
from = message.match(pattern);
return from[0];
}

/* getTo */
function getTo(message){
pattern = new RegExp(/To:(.*)/);
to = message.match(pattern);
return to[0];
}

/* getToNo */
function getToNo(message){
pattern = new RegExp(/To: <sip:(.*)@(.*)>/);
toNo = message.match(pattern);
return toNo[1];
}

/* getCallId */
function getCallId(message){
pattern = new RegExp(/Call-ID:(.*)/);
callId = message.match(pattern);
return callId[0];
}

/* getCseq */
function getCseq(message){
pattern = new RegExp(/CSeq: (.*) INVITE/);
cseq = message.match(pattern);
cseq[1]++;
return cseq[1];
}

/* getIncomingTrunk */
function getIncomingTrunk(message){
pattern = new RegExp(/From: <sip:(.*);otg=(.*)>/);
trunk = message.match(pattern);
return trunk[2];
}

/* getLcrContacts */
function getLcrContacts(message){
var toNo = getToNo(message);
trunks = ["055", "054", "016"];
contacts = [];
for(i = 0; i < trunks.length; i++){
contact = "Contact: <sip:" + toNo + "@" + host + ";dtg=" + trunks[i] + ">";
contacts.push(contact);
}
return contacts.join("\r\n"); 
}

/* getResponse */
function getResponse(message){
response = "";
response += "SIP/2.0 302 Redirect Request";
response += "\r\n";
response += getVia(message);
response += "\r\n";
response += getFrom(message);
response += "\r\n";
response += getTo(message);
response += "\r\n";
response += getCallId(message);
response += "\r\n";
response += "CSeq: " + getCseq(message) + " INVITE";
response += "\r\n";
response += getLcrContacts(message);
response += "\r\n";
response += "Content-Length: 0";
response += "\r\n";
response += "\r\n";

return response;
}

/*
if(isInvite(invite)){
console.log(getResponse(invite));
};
*/

/* bind to port */
server.bind(port, host);

/* event - start listening */ 
server.on('listening', function () {
    var address = server.address();
    console.log('SIP proxy Server listening on ' + address.address + ':' + 
address.port + '\n');
});

/* event - on getting message in socket */
server.on('message', function (message) {

message = message.toString();

if(isInvite(message)){
 /* convert message object to string */
message = message.toString();
 /* log message */
console.log(message);
 /* prepare response message */
response = getResponse(message);
 /* log response */
console.log(response);
 /* convert response to buffer */
response = new Buffer(response);
 /* send response to switch */
server.send(response, 0, response.length, port, host, function(err, bytes){
if(err){
throw err;
server.close();
console.log("Server error");
}
});
}
});







The response is not being sent.... do any one know why...

-- 
-- 
Job Board: http://jobs.nodejs.org/
Posting guidelines: 
https://github.com/joyent/node/wiki/Mailing-List-Posting-Guidelines
You received this message because you are subscribed to the Google
Groups "nodejs" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to
[email protected]
For more options, visit this group at
http://groups.google.com/group/nodejs?hl=en?hl=en

--- 
You received this message because you are subscribed to the Google Groups 
"nodejs" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
For more options, visit https://groups.google.com/groups/opt_out.

Reply via email to