/* 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.
