private SipRequest CreateRegisterRequest() { var requestUri = AddressFactory.CreateUri(null, "registrar.ocean.com"); var toAddressUri = AddressFactory.CreateUri("hannes", "ocean.com"); var toAddress = AddressFactory.CreateAddress("hannes", toAddressUri); var toHeader = HeaderFactory.CreateToHeader(toAddress); var fromHeader = HeaderFactory.CreateFromHeader(toAddress, SipUtil.CreateTag()); var cseqHeader = HeaderFactory.CreateSCeqHeader(SipMethods.Register, 1028); var callId = SipUtil.CreateCallId(); var callIdheader = HeaderFactory.CreateCallIdHeader(callId); var viaHeader = HeaderFactory.CreateViaHeader(SipProvider.ListeningPoint.Address, SipProvider.ListeningPoint.Port, SipConstants.Udp, SipUtil.CreateBranch()); var maxForwardsHeader = HeaderFactory.CreateMaxForwardsHeader(); var request = MessageFactory.CreateRequest( requestUri, SipMethods.Register, callIdheader, cseqHeader, fromHeader, toHeader, viaHeader, maxForwardsHeader); var proxyServerUri = AddressFactory.CreateUri(null, MainForm.SipStack.OutBoundProxy.ToString()); var localHostUri = AddressFactory.CreateUri(null, MainForm.SipProvider.ListeningPoint.ToString()); var routeHeader = HeaderFactory.CreateRouteHeader(proxyServerUri); var contactHeader = HeaderFactory.CreateContactHeader(localHostUri); request.Routes.Add(routeHeader); request.Contacts.Add(contactHeader); return(request); }
private SipRequest CreateRegisterRequest(string user) { FormHelper.ValidateIsNotEmpty(_txtCallId.Text, "device id"); var requestUri = AddressFactory.CreateUri(null, MainForm.Configuration.RegistrarDomain); var toAddressUri = AddressFactory.CreateUri(user, MainForm.Configuration.RegistrarDomain); var toAddress = AddressFactory.CreateAddress(null, toAddressUri); var toHeader = HeaderFactory.CreateToHeader(toAddress); var fromHeader = HeaderFactory.CreateFromHeader(toAddress, SipUtil.CreateTag()); var cseqHeader = HeaderFactory.CreateSCeqHeader(SipMethods.Register, ++commandSequence); var callIdheader = HeaderFactory.CreateCallIdHeader(_txtCallId.Text); var viaHeader = HeaderFactory.CreateViaHeader(SipProvider.ListeningPoint.Address, SipProvider.ListeningPoint.Port, SipConstants.Udp, SipUtil.CreateBranch()); var maxForwardsHeader = HeaderFactory.CreateMaxForwardsHeader(); var request = MessageFactory.CreateRequest( requestUri, SipMethods.Register, callIdheader, cseqHeader, fromHeader, toHeader, viaHeader, maxForwardsHeader); /*add routes and contacts*/ var proxyServerUri = AddressFactory.CreateUri(null, MainForm.SipStack.OutBoundProxy.ToString()); var routeHeader = HeaderFactory.CreateRouteHeader(proxyServerUri); var localHostUri = AddressFactory.CreateUri(null, _txtContactAddress.Text); var contactHeader = HeaderFactory.CreateContactHeader(localHostUri); request.Routes.Add(routeHeader); return(request); }
private void OnLoad(object sender, EventArgs eventArgs) { _lblDomain.Text = MainForm.Configuration.RegistrarDomain; _txtCallId.Text = SipUtil.CreateCallId(); _txtContactAddress.Text = SipProvider.ListeningPoint.ToString(); _txtUser.Text = "hannes"; }
public SipToHeaderBuilder() { _displayInfo = TestConstants.MyUserName; _sipUri = new SipUriBuilder().Build(); _tag = SipUtil.CreateTag(); _name = SipHeaderNames.To; }
public void Start(string to) { Check.IsTrue(!_isIncoming, "Failed to start a call. Only outgoing calls can be started."); if (!to.StartsWith("sip:")) { to = "sip:" + to; } if (!SipUtil.IsSipUri(to)) { throw new ArgumentException("'to' argument is has invalid format."); } var uri = SipUtil.ParseSipUri(to); if (_softPhone.RegisteredPhoneLine == null) { if (uri.HasNamedHost()) { throw new ArgumentException("'to' argument is not valid. Since phone is not registered, 'to' can not be a named host. Only numeric IP hosts are supported."); } _toUri = uri; } else { _toUri = uri; } _startCommand.Execute(this); }
private void _chkPeerToPeer_CheckedChanged(object sender, EventArgs e) { var bindEndPoint = SipUtil.ParseIpEndPoint(MainForm.Configuration.BindIpEndPoint); _txtFromUri.Text = _chkPeerToPeer.Checked ? string.Format("sip:alice@{0}", bindEndPoint) : "sip:[email protected]"; _txtToUri.Text = _chkPeerToPeer.Checked ? string.Format("sip:bob@{0}", new IPEndPoint(bindEndPoint.Address, bindEndPoint.Port + 1)) : "sip:[email protected]"; }
protected override void When() { _call.Stop(); var ringing = CreateRingingResponse(_receivedInvite, SipUtil.CreateTag()); _network.SendTo(SipFormatter.FormatMessage(ringing), _testClientUaEndPoint, _phoneUaEndPoint); _waitingforRingingProcessed.WaitOne(); }
/// <summary> /// returns the host and port as an IPEndPoint /// </summary> /// <returns></returns> public IPEndPoint GetHostAndPort() { if (!SipUtil.IsIPAddress(Host)) { throw new InvalidOperationException("Failed to convert Host to IpEndPoint. Host must be a numeric Ip address."); } return(new IPEndPoint(IPAddress.Parse(Host), Port)); }
protected override void When() { _toTag = SipUtil.CreateTag(); var provResponse = CreateRingingResponse(_receivedInvite, _toTag); _network.SendTo(SipFormatter.FormatMessage(provResponse), _testClientUaEndPoint, _phoneUaEndPoint); _ringingProcessed.WaitOne(); }
protected override void When() { _toTag = SipUtil.CreateTag(); var provResponse = CreateResponse(_receivedInvite, _toTag, SipResponseCodes.x486_Busy_Here); _network.SendTo(SipFormatter.FormatMessage(provResponse), _testClientUaEndPoint, _phoneUaEndPoint); _waitingforResponseProcessed.WaitOne(); }
private IPEndPoint GetDestinationEndPoint(SipUri uri) { if (SipUtil.IsIPAddress(uri.Host)) { return(new IPEndPoint(IPAddress.Parse(uri.Host), uri.Port)); } throw new NotSupportedException(ExceptionMessage.NamedHostsAreNotSupported); }
void Form_Load(object sender, EventArgs e) { _txtFromAlias.Text = "alice"; _txtToAlias.Text = "bob"; _chkPeerToPeer.Checked = false; _chkPeerToPeer_CheckedChanged(null, null); _softPhone = SoftPhoneFactory.CreateSoftPhone(SipUtil.ParseIpEndPoint(this.MainForm.Configuration.BindIpEndPoint)); _softPhone.IncomingCall += _softPhone_IncomingCall; _softPhone.Start(); }
private void _btnStart_Click(object sender, EventArgs e) { var ipEndPoint = SipUtil.ParseIpEndPoint(_txtLocalIPAddress.Text); _stack = new SipStack(); var listeningPoint = _stack.CreateUdpListeningPoint(ipEndPoint); _sipProvider = _stack.CreateSipProvider(listeningPoint); _sipProvider.AddSipListener(this); _stack.Start(); _tmrDiagnostics.Start(); }
private void Invite() { FormHelper.ValidateCondition(SipUtil.IsSipUri(_txtFromUri.Text), "From-uri"); FormHelper.ValidateCondition(SipUtil.IsSipUri(_txtToUri.Text), "To-uri"); var fromUri = SipUtil.ParseSipUri(_txtFromUri.Text); var toUri = SipUtil.ParseSipUri(_txtToUri.Text); if (_chkPeerToPeer.Checked) { FormHelper.ValidateCondition(SipUtil.IsIpEndPoint(toUri.Host), "To-uri"); } var requestUri = toUri; var toAddress = AddressFactory.CreateAddress(_txtToAlias.Text, toUri); var fromAddress = AddressFactory.CreateAddress(_txtFromAlias.Text, fromUri); var toHeader = HeaderFactory.CreateToHeader(toAddress); var fromHeader = HeaderFactory.CreateFromHeader(fromAddress, SipUtil.CreateTag()); var cseqHeader = HeaderFactory.CreateSCeqHeader(SipMethods.Invite, ++commandSequence); var callIdheader = HeaderFactory.CreateCallIdHeader(SipUtil.CreateCallId()); var viaHeader = HeaderFactory.CreateViaHeader(SipProvider.ListeningPoint.Address, SipProvider.ListeningPoint.Port, SipConstants.Udp, SipUtil.CreateBranch()); var maxForwardsHeader = HeaderFactory.CreateMaxForwardsHeader(1); var request = MessageFactory.CreateRequest( requestUri, SipMethods.Invite, callIdheader, cseqHeader, fromHeader, toHeader, viaHeader, maxForwardsHeader); /*add routes and contacts*/ if (!_chkPeerToPeer.Checked) { var proxyServerUri = AddressFactory.CreateUri(null, MainForm.SipStack.OutBoundProxy.ToString()); proxyServerUri.IsLooseRouting = true; var routeHeader = HeaderFactory.CreateRouteHeader(proxyServerUri); request.Routes.Add(routeHeader); } var contactUri = AddressFactory.CreateUri(fromUri.User, viaHeader.SentBy.ToString()); var contactHeader = HeaderFactory.CreateContactHeader(contactUri); request.Contacts.Add(contactHeader); var transaction = SipProvider.CreateClientTransaction(request); _dialog = SipProvider.CreateClientDialog(transaction); transaction.SendRequest(); }
public void Dispose() { if (_isDisposed) { return; } lock (_lock) { SipUtil.DisposeTimer(_timer); _isDisposed = true; } }
private void _btnSend_Click(object sender, EventArgs e) { if (_txtMessage.Text == string.Empty) { MessageBox.Show("Can not send an empty message"); } UdpClient udpClient = new UdpClient(AddressFamily.InterNetwork); var bytes = SipFormatter.FormatToBytes(_txtMessage.Text); udpClient.Send(bytes, bytes.Length, SipUtil.ParseIpEndPoint(_txtSendTo.Text)); }
private void _btnRegister_Click(object sender, EventArgs e) { try { var requestUri = AddressFactory.CreateUri(null, "registrar." + MainForm.Configuration.RegistrarDomain); var toAddressUri = AddressFactory.CreateUri("hannes", MainForm.Configuration.RegistrarDomain); var toAddress = AddressFactory.CreateAddress("hannes", toAddressUri); var toHeader = HeaderFactory.CreateToHeader(toAddress); var fromHeader = HeaderFactory.CreateFromHeader(toAddress, SipUtil.CreateTag()); var cseqHeader = HeaderFactory.CreateSCeqHeader(SipMethods.Register, 1028); var callId = SipUtil.CreateCallId(); var callIdheader = HeaderFactory.CreateCallIdHeader(callId); var viaHeader = HeaderFactory.CreateViaHeader(SipProvider.ListeningPoint.Address, SipProvider.ListeningPoint.Port, SipConstants.Udp, SipUtil.CreateBranch()); var maxForwardsHeader = HeaderFactory.CreateMaxForwardsHeader(); var request = MessageFactory.CreateRequest( requestUri, SipMethods.Register, callIdheader, cseqHeader, fromHeader, toHeader, viaHeader, maxForwardsHeader); var proxyServerUri = AddressFactory.CreateUri(null, MainForm.SipStack.OutBoundProxy.ToString()); var localHostUri = AddressFactory.CreateUri(null, MainForm.SipProvider.ListeningPoint.ToString()); var routeHeader = HeaderFactory.CreateRouteHeader(proxyServerUri); var contactHeader = HeaderFactory.CreateContactHeader(localHostUri); request.Routes.Add(routeHeader); request.Contacts.Add(contactHeader); EventAggregator.Instance.Publish( new LogEvent(">>>>" + SipFormatter.FormatMessageEnvelope(request) + Environment.NewLine)); if (_chbSendStateFull.Checked) { var transaction = SipProvider.CreateClientTransaction(request); transaction.SendRequest(); } else { SipProvider.SendRequest(request); } } catch (Exception ex) { MainForm.HandleException(ex); } }
private void _btnRegister_Click(object sender, EventArgs e) { int expirationTime = 0; FormHelper.ValidateIsNotEmpty(_txtUser.Text, "user"); FormHelper.ValidateCondition(SipUtil.IsIpEndPoint(_txtContactAddress.Text), "host"); FormHelper.ValidateCondition(int.TryParse(_txtExpirationTime.Text, out expirationTime), "expiration time"); SendRequest(() => { var request = CreateRegisterRequest(_txtUser.Text); var localHostUri = AddressFactory.CreateUri(null, _txtContactAddress.Text); var contactHeader = HeaderFactory.CreateContactHeader(localHostUri); contactHeader.Expires = expirationTime; request.Contacts.Add(contactHeader); return(request); }); }
public static byte[] FormatMessage(SipMessage message) { var envelope = FormatMessageEnvelope(message, true); var msg = SipUtil.ToUtf8Bytes(envelope); if (message.Body == null) { return(msg); } var bytes = new List <byte>(msg); bytes.AddRange(message.Body); return(bytes.ToArray()); }
protected override void GivenOverride() { _call = _phone.CreateCall(); _call.CallStateChanged += call_CallStateChanged; _call.Start(_testClientUaUri.FormatToString()); _waitingforInviteReceived.WaitOne(); _phone.InternalState.Should().Be(_stateProvider.GetWaitProvisional()); /*required assertion*/ _toTag = SipUtil.CreateTag(); var provResponse = CreateRingingResponse(_receivedInvite, _toTag); _network.SendTo(SipFormatter.FormatMessage(provResponse), _testClientUaEndPoint, _phoneUaEndPoint); _ringingProcessed.WaitOne(); _phone.InternalState.Should().Be(_stateProvider.GetWaitFinal()); /*required assertion*/ }
public SipInviteClientDialogSpecificationBase() { _toTag = SipUtil.CreateTag(); _fromTag = SipUtil.CreateTag(); _callId = SipUtil.CreateCallId(); _cSeq = 2; Sender = new Mock <ISipMessageSender>(); Listener = new Mock <ISipListener>(); DialogTable = new SipDialogTable(); InvitingRequest = CreateInviteRequest(); InviteCtx = new Mock <ISipClientTransaction>(); InviteCtx.Setup((tx) => tx.Request).Returns(InvitingRequest); var tfb = new TimerFactoryStubBuilder(); TimerFactory = tfb.Build(); }
private void SendRinging() { if (_ringingResponse == null) { _ringingResponse = _inviteRequest.CreateResponse(SipResponseCodes.x180_Ringing); _ringingResponse.To.Tag = SipUtil.CreateTag(); var contactUri = AddressFactory.CreateUri("", MainForm.SipProvider.ListeningPoint.ToString()); _ringingResponse.Contacts.Add(HeaderFactory.CreateContactHeader(contactUri)); _inviteTransaction = (SipInviteServerTransaction)SipProvider.CreateServerTransaction(_inviteRequest); _dialog = SipProvider.CreateServerDialog(_inviteTransaction); _inviteTransaction.SendResponse(_ringingResponse); } else { _inviteTransaction.SendResponse(_ringingResponse); } }
private void _btnPhone_Click(object sender, EventArgs e) { if (!_callState.HasValue || _callState.Value == CallState.Completed) { FormHelper.ValidateCondition(SipUtil.IsSipUri(_txtToUri.Text), "To-uri"); _outgoingCall = _softPhone.CreateCall(); WireEvents(_outgoingCall); _outgoingCall.Start(_txtToUri.Text); Log("Call started"); } else if (_callState.Value == CallState.Ringing) { _incomingCall.Accept(); } else if (_callState.Value == CallState.Ringback || _callState.Value == CallState.InCall) { _outgoingCall.Stop(); } }
public void SendRequest(SipRequest request) { Check.Require(request, "request"); if (_logger.IsTraceEnabled) { _logger.Trace("Sending request..."); } var result = new SipValidator().ValidateRequest(request); if (!result.IsValid) { ThrowSipException(result); } var via = request.Vias.GetTopMost(); if (string.IsNullOrEmpty(via.Branch)) { via.Branch = SipUtil.CreateBranch(); } var bytes = SipFormatter.FormatMessage(request); SipUri sipUri = GetDestinationUri(request); IPEndPoint ipEndPoint = GetDestinationEndPoint(sipUri); SendBytes(bytes, ipEndPoint); if (_logger.IsDebugEnabled) { _logger.Debug("Send request '{0}' --> {1}. # bytes:{2}.", request.RequestLine.Method, ipEndPoint, bytes.Length); } if (_requestSentObserver != null) { _requestSentObserver.OnNext(request); } }
public SipInviteServerDialogSpecificationBase() { _toTag = SipUtil.CreateTag(); _fromTag = SipUtil.CreateTag(); _callId = SipUtil.CreateCallId(); _cSeq = 2; Sender = new Mock <ISipMessageSender>(); Listener = new Mock <ISipListener>(); DialogTable = new SipDialogTable(); ReceivedRequest = CreateInviteRequest(); InviteStx = new Mock <ISipServerTransaction>(); InviteStx.Setup((tx) => tx.Request).Returns(ReceivedRequest); var tfb = new TimerFactoryStubBuilder() .WithInviteCtxRetransmitTimerInterceptor(OnCreateRetransmitOkTimer) .WithInviteCtxTimeOutTimerInterceptor(OnCreateTimeOutTimer); TimerFactory = tfb.Build(); }
protected SipRequest CreateInviteRequest(SipUri from, SipUri to) { var r = new SipRequestBuilder() .WithRequestLine( new SipRequestLineBuilder().WithMethod(SipMethods.Invite).Build()) .WithCSeq( new SipCSeqHeaderBuilder().WithCommand(SipMethods.Invite).WithSequence(1).Build()) .WithFrom( new SipFromHeaderBuilder().WithSipUri(from).WithTag(SipUtil.CreateTag()).Build()) .WithTo( new SipToHeaderBuilder().WithSipUri(to).WithTag(null).Build()) .WithCallId( new SipCallIdHeaderBuilder().WithValue(SipUtil.CreateCallId()).Build()) .WithContacts( new SipContactHeaderListBuilder() .Add(new SipContactHeaderBuilder().WithSipUri(from).Build()) .Build()) .Build(); return(r); }
private void _btnStartStop_Click(object sender, EventArgs e) { if (!_isStarted) { var ipEndPoint = SipUtil.ParseIpEndPoint(Configuration.BindIpEndPoint); var outboundProxy = SipUtil.ParseIpEndPoint(Configuration.OutboundProxyIpEndPoint); SipStack = new SipStack(); var listeningPoint = SipStack.CreateUdpListeningPoint(ipEndPoint); SipStack.MaxWorkerThreads = Configuration.MaxThreadPoolSize; SipStack.MinWorkerThreads = Configuration.MinThreadPoolSize; SipStack.OutBoundProxy = outboundProxy; SipStack.EnableThreadPoolPerformanceCounters = Configuration.EnableThreadPoolPerformanceCounters; //SipStack.IsStateFull = Configuration.IsStateFull; SipProvider = (SipProvider)SipStack.CreateSipProvider(listeningPoint); MainSipListener = new SipPipeLineListener(this); SipProvider.AddSipListener(MainSipListener); SipProvider.AddExceptionHandler(this); SipProvider.Start(); HeaderFactory = SipStack.CreateHeaderFactory(); MessageFactory = SipStack.CreateMessageFactory(); AddressFactory = SipStack.CreateAddressFactory(); ExecuteActionHelper.ExecuteAction(delegate() { FormsManager.OpenForm(typeof(LogForm), null); }); _lblIpAddress.Text = string.Format("IP:{0}", ipEndPoint.ToString()); } else { SipProvider.Stop(); } _isStarted = !_isStarted; _btnStartStop.Text = _isStarted ? "Stop" : "Start"; _grbNavigation.Enabled = _isStarted; }
protected SipRequest CreateRequest(string method) { /*create the 'INVITE' message*/ SipAddressFactory addressFactory = _stack.CreateAddressFactory(); SipHeaderFactory headerFactory = _stack.CreateHeaderFactory(); SipMessageFactory messageFactory = _stack.CreateMessageFactory(); SipUri senderSipUri = addressFactory.CreateUri(string.Empty, new IPEndPoint(_ipAddress, 12345).ToString()); SipAddress senderSipAddress = addressFactory.CreateAddress(string.Empty, senderSipUri); SipUri receiverSipUri = addressFactory.CreateUri(string.Empty, new IPEndPoint(_ipAddress, 23456).ToString()); SipAddress receiverSipAddress = addressFactory.CreateAddress(string.Empty, senderSipUri); SipToHeader toHeader = headerFactory.CreateToHeader(receiverSipAddress); SipFromHeader fromHeader = headerFactory.CreateFromHeader(senderSipAddress, SipUtil.CreateTag()); SipCSeqHeader cseqHeader = headerFactory.CreateSCeqHeader(method, 1); SipCallIdHeader callIdheader = headerFactory.CreateCallIdHeader(SipUtil.CreateCallId()); SipViaHeader viaHeader = headerFactory.CreateViaHeader(_ipAddress, 12345, SipConstants.Udp, SipUtil.CreateBranch()); SipMaxForwardsHeader maxForwardsHeader = headerFactory.CreateMaxForwardsHeader(); SipRequest request = messageFactory.CreateRequest( receiverSipUri, method, callIdheader, cseqHeader, fromHeader, toHeader, viaHeader, maxForwardsHeader); if (method == SipMethods.Invite) { SipContactHeader contactHeader = headerFactory.CreateContactHeader(senderSipUri); request.Contacts.Add(contactHeader); } return(request); }
public static byte[] FormatToBytes(string value) { return(SipUtil.ToUtf8Bytes(value)); }
public SipCallIdHeaderBuilder() { _value = SipUtil.CreateCallId(); _name = SipHeaderNames.CallId; }