示例#1
0
        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);
        }
示例#2
0
        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);
        }
示例#3
0
        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();
        }
示例#4
0
        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);
            }
        }