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); }
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); }
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); } }