コード例 #1
0
        public void test_codec_registration()
        {
            var userName = "******";

            DeleteRegisteredSip(userName);

            // Add new
            var sipMessage = new SipRegistrationMessage()
            {
                Ip            = GetRandomLocationIpAddress(),
                Port          = 5060,
                UnixTimeStamp = GetUnixTimeStamp(DateTime.Now),
                Sip           = new SipUri(userName),
                UserAgent     = "ProntoNet LC v6.8.1",
                Username      = userName,
                ToDisplayName = "Test",
                Expires       = 60
            };

            // Assert
            var result = SipMessageManager.RegisterCodec(sipMessage);

            Assert.AreEqual(SipEventChangeStatus.CodecAdded, result.ChangeStatus);

            // Update only timestamp. Should return nothing changed.
            // Act
            sipMessage.UnixTimeStamp = GetUnixTimeStamp(DateTime.Now.AddSeconds(1));
            // Assert
            result = SipMessageManager.RegisterCodec(sipMessage);
            Assert.AreEqual(SipEventChangeStatus.NothingChanged, result.ChangeStatus);

            // Update location. Should return status updated.
            // Act
            sipMessage.Ip = GetRandomLocationIpAddress();
            // Assert
            result = SipMessageManager.RegisterCodec(sipMessage);
            Assert.AreEqual(SipEventChangeStatus.CodecUpdated, result.ChangeStatus);

            // Only timestamp
            sipMessage.UnixTimeStamp = GetUnixTimeStamp(DateTime.Now.AddSeconds(2));
            result = SipMessageManager.RegisterCodec(sipMessage);
            Assert.AreEqual(SipEventChangeStatus.NothingChanged, result.ChangeStatus);

            // Update display name. Should return status updated.
            // Act
            sipMessage.ToDisplayName = "New display name";
            // Assert
            result = SipMessageManager.RegisterCodec(sipMessage);
            Assert.AreEqual(SipEventChangeStatus.CodecUpdated, result.ChangeStatus);

            // Update user agent
            sipMessage.UserAgent = "Quantum/3.4.3";
            result = SipMessageManager.RegisterCodec(sipMessage);
            Assert.AreEqual(SipEventChangeStatus.CodecUpdated, result.ChangeStatus);

            // Only timestamp
            sipMessage.UnixTimeStamp = GetUnixTimeStamp(DateTime.Now.AddSeconds(3));
            result = SipMessageManager.RegisterCodec(sipMessage);
            Assert.AreEqual(SipEventChangeStatus.NothingChanged, result.ChangeStatus);
        }
コード例 #2
0
        public SipEventHandlerResult RegisterCodec(SipRegistrationMessage sipMessage)
        {
            var userAgentRegistration = new UserAgentRegistration(
                sipUri: sipMessage.Sip.UserAtHost,
                userAgentHeader: sipMessage.UserAgent,
                username: sipMessage.Sip.UserAtHost,
                displayName: string.IsNullOrEmpty(sipMessage.ToDisplayName) ? sipMessage.FromDisplayName : sipMessage.ToDisplayName,
                registrar: sipMessage.Registrar,
                ipAddress: sipMessage.Ip,
                port: sipMessage.Port,
                expirationTimeSeconds: sipMessage.Expires,
                serverTimeStamp: sipMessage.UnixTimeStamp
                );

            return(_sipRepository.UpdateRegisteredSip(userAgentRegistration));
        }
コード例 #3
0
ファイル: SipEventParser.cs プロジェクト: IrisBroadcast/CCM
        private SipRegistrationMessage ParseRegistration(KamailioSipEvent kamailioData)
        {
            var registration = new SipRegistrationMessage()
            {
                Sip             = new SipUri(kamailioData.FromUri),
                Username        = kamailioData.AuthUser, // TODO: Obsolete. To be removed.
                FromDisplayName = ParseDisplayName(kamailioData.FromDisplayName),
                ToDisplayName   = ParseDisplayName(kamailioData.ToDisplayName),
                UserAgent       = kamailioData.UserAgentHeader,
                Registrar       = kamailioData.Registrar,
                RegType         = kamailioData.RegType,
                Ip            = kamailioData.Ip.SenderIp,
                Port          = kamailioData.Ip.SenderPort,
                Expires       = kamailioData.Expires,
                UnixTimeStamp = kamailioData.TimeStamp
            };

            return(registration);
        }
コード例 #4
0
        private SipRegistrationMessage ParseRegistration(KamailioData kamailioData)
        {
            var registration = new SipRegistrationMessage()
            {
                Ip              = kamailioData.GetField("si"),
                Port            = ParseInt(kamailioData.GetField("sp")),
                UnixTimeStamp   = ParseLong(kamailioData.GetField("TS")),
                Sip             = new SipUri(kamailioData.GetField("fu")),
                FromDisplayName = ParseDisplayName(kamailioData.GetField("fn")),
                UserAgent       = kamailioData.GetField("ua"),
                Username        = kamailioData.GetField("Au"),
                ToDisplayName   = ParseDisplayName(kamailioData.GetField("tn")),
                Expires         = ParseInt(kamailioData.GetField("Expires"), DefaultExpireValue),

                // Not in use
                //ToUsername = kamailioData.GetField("rU"),
                //RequestedSip = new SipUri(kamailioData.GetField("ru")),
                //ReceivedIp = kamailioData.GetField("Ri"),
                //ReceivedPort = ParseInt(kamailioData.GetField("Rp")),
                //CallId = kamailioData.GetField("ci"),
            };

            return(registration);
        }