internal LdapAbandonRequest(Asn1LdapMessage message) : base(message) { MessageId = message.ProtocolOp.AbandonRequest.Value; if (MessageId < 0) { throw new LdapProtocolException("invalid messageID"); } }
internal LdapCompareRequest(Asn1LdapMessage message) : base(message) { var compare = message.ProtocolOp.CompareRequest; Entry = new LdapDistinguishedName(compare.Entry.Span); Assertion = new LdapAttributeAssertion(compare.Assertion); }
internal LdapResponseMessage(Asn1LDAPResult result, Asn1LdapMessage message) : base(message) { ResultCode = result.ResultCode; MatchedDN = new LdapDistinguishedName(result.MatchedDN.Span); DiagnosticMessage = result.DiagnosticMessage.Span.LdapString(); Referrals = this.GetReferrals(result.Referral); }
internal LdapExtendedRequest(Asn1LdapMessage message) : base(message) { var extended = message.ProtocolOp.ExtendedRequest; Name = extended.Name.Span.NumericOid(); Value = extended.Value; }
internal LdapRequestMessage(Asn1LdapMessage message) { Id = message.MessageID; if (Id < 0) { throw new LdapProtocolException("invalid messageID"); } Controls = LdapControl.Create(message.Controls); }
internal LdapIntermediateResponse(Asn1LdapMessage message) : base(message) { var intermediate = message.ProtocolOp.IntermediateResponse; if (intermediate.Name.HasValue) { Name = intermediate.Name.Value.Span.NumericOid(); } Value = intermediate.Value; }
internal LdapBindResponse(Asn1LdapMessage message) : base(message) { var bindResponse = message.ProtocolOp.BindResponse; ResultCode = bindResponse.ResultCode; MatchedDN = new LdapDistinguishedName(bindResponse.MatchedDN.Span); DiagnosticMessage = bindResponse.DiagnosticMessage.Span.LdapString(); Referrals = this.GetReferrals(bindResponse.Referral); ServerSaslCreds = bindResponse.ServerSaslCreds; }
internal LdapModifyDNRequest(Asn1LdapMessage message) : base(message) { var modify = message.ProtocolOp.ModifyDNRequest; Entry = new LdapDistinguishedName(modify.Entry.Span); NewRDN = new LdapRelativeDistinguishedName(modify.NewRDN.Span.LdapString()); DeleteOldRDN = modify.DeleteOldRDN; if (modify.NewSuperior.HasValue) { NewSuperior = new LdapDistinguishedName(modify.NewSuperior.Value.Span); } }
internal Asn1LdapMessage GetAsn() { var result = new Asn1LdapMessage { MessageID = Id, Controls = LdapControl.Create(Controls), ProtocolOp = new Asn1ProtocolOp() }; SetProtocolOp(result.ProtocolOp); return(result); }
internal LdapModifyRequest(Asn1LdapMessage message) : base(message) { var modify = message.ProtocolOp.ModifyRequest; ObjectDN = new LdapDistinguishedName(modify.Object.Span); var changes = new LdapChange[modify.Changes.Length]; for (int i = 0; i < modify.Changes.Length; i++) { changes[i] = new LdapChange(modify.Changes[i]); } Changes = changes; }
internal LdapExtendedResponse(Asn1LdapMessage message) : base(message) { var extended = message.ProtocolOp.ExtendedResponse; ResultCode = extended.ResultCode; MatchedDN = new LdapDistinguishedName(extended.MatchedDN.Span); DiagnosticMessage = extended.DiagnosticMessage.Span.LdapString(); Referrals = this.GetReferrals(extended.Referral); if (extended.Name.HasValue) { Name = extended.Name.Value.Span.NumericOid(); } Value = extended.Value; }
internal LdapAddRequest(Asn1LdapMessage message) : base(message) { var add = message.ProtocolOp.AddRequest; Entry = new LdapDistinguishedName(add.Entry.Span); if (add.Attributes.Length == 0) { throw new ArgumentException("at least one attribute required"); } var attributes = new LdapAttribute[add.Attributes.Length]; for (int i = 0; i < add.Attributes.Length; i++) { attributes[i] = new LdapAttribute(add.Attributes[i]); } Attributes = attributes; }
internal LdapSearchRequest(Asn1LdapMessage message) : base(message) { var search = message.ProtocolOp.SearchRequest; BaseObject = new LdapDistinguishedName(search.BaseObject.Span); Scope = search.Scope; DerefAliases = search.DerefAliases; if (DerefAliases < DerefAliases.NeverDerefAliases || DerefAliases > DerefAliases.DerefAlways) { throw new LdapProtocolException("invalid derefAliases"); } SizeLimit = search.SizeLimit; if (SizeLimit == 0) { SizeLimit = Int32.MaxValue; } else if (SizeLimit < 0) { throw new LdapProtocolException("invalid sizeLimit"); } TimeLimit = TimeSpan.FromSeconds(search.TimeLimit); if (TimeLimit < TimeSpan.Zero) { throw new LdapProtocolException("invalid timeLimit"); } TypesOnly = search.TypesOnly; Filter = LdapFilter.Create(search.Filter); if (search.Attributes.Length > 0) { var attributes = new LdapAttributeSelection[search.Attributes.Length]; for (int i = 0; i < search.Attributes.Length; i++) { attributes[i] = new LdapAttributeSelection(search.Attributes[i].Span); } Attributes = attributes; } else { Attributes = Array.Empty <LdapAttributeSelection>(); } }
internal LdapSearchResultEntry(Asn1LdapMessage message) : base(message) { var search = message.ProtocolOp.SearchResEntry; ObjectName = new LdapDistinguishedName(search.ObjectName.Span); if (search.Attributes.Length > 0) { var attributes = new LdapAttribute[search.Attributes.Length]; for (int i = 0; i < search.Attributes.Length; i++) { attributes[i] = new LdapAttribute(search.Attributes[i]); } Attributes = attributes; } else { Attributes = Array.Empty <LdapAttribute>(); } }
internal LdapBindRequest(Asn1LdapMessage message) : base(message) { var bindRequest = message.ProtocolOp.BindRequest; Version = bindRequest.Version; if (Version < 1 || Version > 127) { throw new ArgumentException("invalid LDAP version"); } Name = new LdapDistinguishedName(bindRequest.Name.Span); var auth = bindRequest.Authentication; if (auth.Simple != null) { Simple = auth.Simple.Value.ToArray(); } else if (auth.Sasl != null) { var sasl = auth.Sasl; SaslMechanism = sasl.Mechanism.Span.LdapString(); SaslCredentials = sasl.Credentials; } }
internal LdapSearchResultReference(Asn1LdapMessage message) : base(message) { Uris = LdapResultExtensions.GetReferrals(message.ProtocolOp.SearchResultReference); }
internal LdapAddResponse(Asn1LdapMessage message) : base(message.ProtocolOp.AddResponse, message) { }
internal LdapSearchResultDone(Asn1LdapMessage message) : base(message.ProtocolOp.SearchResultDone, message) { }
internal LdapUnbindRequest(Asn1LdapMessage message) : base(message) { }
internal static LdapRequestMessage Create(Asn1LdapMessage message) { if (message.ProtocolOp.BindRequest != null) { return(new LdapBindRequest(message)); } else if (message.ProtocolOp.BindResponse != null) { return(new LdapBindResponse(message)); } else if (message.ProtocolOp.DelRequest != null) { return(new LdapDeleteRequest(message)); } else if (message.ProtocolOp.SearchRequest != null) { return(new LdapSearchRequest(message)); } else if (message.ProtocolOp.UnbindRequest != null) { return(new LdapUnbindRequest(message)); } else if (message.ProtocolOp.SearchResEntry != null) { return(new LdapSearchResultEntry(message)); } else if (message.ProtocolOp.SearchResultDone != null) { return(new LdapSearchResultDone(message)); } else if (message.ProtocolOp.SearchResultReference != null) { return(new LdapSearchResultReference(message)); } else if (message.ProtocolOp.ModifyRequest != null) { return(new LdapModifyRequest(message)); } else if (message.ProtocolOp.ModifyResponse != null) { return(new LdapModifyResponse(message)); } else if (message.ProtocolOp.AddRequest != null) { return(new LdapAddRequest(message)); } else if (message.ProtocolOp.AddResponse != null) { return(new LdapAddResponse(message)); } else if (message.ProtocolOp.DelResponse != null) { return(new LdapDeleteResponse(message)); } else if (message.ProtocolOp.ModifyDNRequest != null) { return(new LdapModifyDNRequest(message)); } else if (message.ProtocolOp.ModifyDNResponse != null) { return(new LdapModifyDNResponse(message)); } else if (message.ProtocolOp.CompareRequest != null) { return(new LdapCompareRequest(message)); } else if (message.ProtocolOp.CompareResponse != null) { return(new LdapCompareResponse(message)); } else if (message.ProtocolOp.AbandonRequest != null) { return(new LdapAbandonRequest(message)); } else if (message.ProtocolOp.ExtendedRequest != null) { return(new LdapExtendedRequest(message)); } else if (message.ProtocolOp.ExtendedResponse != null) { return(new LdapExtendedResponse(message)); } else if (message.ProtocolOp.IntermediateResponse != null) { return(new LdapIntermediateResponse(message)); } else { throw new NotSupportedException("unsupported protocolOp"); } }
internal LdapModifyDNResponse(Asn1LdapMessage message) : base(message.ProtocolOp.ModifyDNResponse, message) { }
internal LdapCompareResponse(Asn1LdapMessage message) : base(message.ProtocolOp.CompareResponse, message) { }
internal LdapDeleteResponse(Asn1LdapMessage message) : base(message.ProtocolOp.DelResponse, message) { }
internal LdapDeleteRequest(Asn1LdapMessage message) : base(message) { DN = new LdapDistinguishedName(message.ProtocolOp.DelRequest.Value.Span); }