コード例 #1
0
        public NetworkMessage CreateNetworkMessage(BinaryReader reader)
        {
            uint         byteCount  = reader.NetworkReadUInt32();
            CmppCommands command    = (CmppCommands)reader.NetworkReadUInt32();
            uint         sequenceId = reader.NetworkReadUInt32();

            CmppMessage message = null;

            switch (command)
            {
            case CmppCommands.Connect:
                message = new CmppMessageConnect();
                break;

            case CmppCommands.ConnectResponse:
                message = new CmppMessageConnectResponse();
                break;

            case CmppCommands.Submit:
                message = new CmppMessageSubmit();
                break;

            case CmppCommands.SubmitResponse:
                message = new CmppMessageSubmitResponse();
                break;

            case CmppCommands.Deliver:
                message = new CmppMessageDeliver();
                break;

            case CmppCommands.DeliverResponse:
                message = new CmppMessageDeliverResponse();
                break;

            case CmppCommands.ActiveTest:
                message = new CmppMessageActiveTest();
                break;

            case CmppCommands.ActiveTestResponse:
                message = new CmppMessageActiveTestResponse();
                break;

            case CmppCommands.Terminate:
                message = new CmppMessageTerminate();
                break;

            default:
                message = new CmppMessage();
                break;
            } //end switch

            if (message != null)
            {
                message.Command    = command;
                message.ByteCount  = byteCount;
                message.SequenceId = sequenceId;
                message.NetworkRead(reader);
            }
            return(message);
        }
コード例 #2
0
ファイル: CmppSmsClient.cs プロジェクト: lxllh/SmsProtocols
        protected override async Task <bool> DoConnectAsync()
        {
            var timeStamp = DateTime.Now.ToString("MMddHHmmss");
            var m         = new CmppMessageConnect()
            {
                SequenceId          = this.SequenceId,
                TimeStamp           = uint.Parse(timeStamp),
                SourceAddress       = this.Configurations.UserName,
                AuthenticatorSource = this.GenerateAuthenticatorSource(timeStamp)
            };

            await this.Send(m);

            var evt = new AutoResetEvent(false);

            this.ConnectEvent = evt;
            TimeSpan timeout = TimeSpan.FromSeconds(10);

            evt.WaitOne(timeout);

            return(this.Status == SmsClientStatus.Connected);
        }
コード例 #3
0
ファイル: CmppSmsServer.cs プロジェクト: lxllh/SmsProtocols
        protected bool IsAuthenticated(CmppMessageConnect connect)
        {
            var userName = connect.SourceAddress;

            if (string.IsNullOrEmpty(userName))
            {
                return(false);
            }

            if (!_passwords.ContainsKey(userName))
            {
                return(false);
            }

            var password = _passwords[userName];

            try
            {
                var tmp             = GenerateAuthenticatorSource(userName, password, connect.GetTimeStamp10Digits());
                var isAuthenticated = connect.AuthenticatorSource.SequenceEqual(tmp);
                return(isAuthenticated);
            }
            catch { return(false); }
        }