public override int SendRequest(SafeHandle handle, DirectoryRequest request, ref int messageId) { if (request is ExtendedRequest extendedRequest) { var name = extendedRequest.RequestName; var val = extendedRequest.RequestValue; var berValuePtr = IntPtr.Zero; if (val != null && val.Length != 0) { var berValue = new Native.Native.berval() { bv_len = val.Length, bv_val = Marshal.AllocHGlobal(val.Length) }; Marshal.Copy(val, 0, berValue.bv_val, val.Length); Marshal.StructureToPtr(berValue, berValuePtr, true); } return Native.ldap_extended_operation(handle, name, berValuePtr, IntPtr.Zero, IntPtr.Zero, ref messageId); } return 0; }
public override int SendRequest(SafeHandle handle, DirectoryRequest request, ref int messageId) { if (request is AddRequest addRequest) { var entry = addRequest.LdapEntry; if (string.IsNullOrWhiteSpace(entry.Dn)) { throw new ArgumentNullException(nameof(entry.Dn)); } if (entry.Attributes == null) { entry.Attributes = new Dictionary <string, List <string> >(); } var attrs = entry.Attributes.Select(ToLdapMod).ToList(); var ptr = Marshal.AllocHGlobal(IntPtr.Size * (attrs.Count + 1)); // alloc memory for list with last element null MarshalUtils.StructureArrayToPtr(attrs, ptr, true); return(Native.ldap_add_ext(handle, addRequest.LdapEntry.Dn, ptr, IntPtr.Zero, IntPtr.Zero, ref messageId )); } return(0); }
public override int SendRequest(SafeHandle handle, DirectoryRequest request, ref int messageId) { if (request is ModifyRequest modifyRequest) { if (string.IsNullOrWhiteSpace(modifyRequest.DistinguishedName)) { throw new ArgumentNullException(nameof(modifyRequest.DistinguishedName)); } var attrs = modifyRequest.Attributes.Select(ToLdapMod).ToList(); var ptr = Marshal.AllocHGlobal(IntPtr.Size * (attrs.Count + 1)); // alloc memory for list with last element null MarshalUtils.StructureArrayToPtr(attrs, ptr, true); var result = Native.ldap_modify_ext(handle, modifyRequest.DistinguishedName, ptr, IntPtr.Zero, IntPtr.Zero, ref messageId ); attrs.ForEach(_ => { MarshalUtils.BerValuesFree(_.mod_vals_u.modv_bvals); Marshal.FreeHGlobal(_.mod_vals_u.modv_bvals); Marshal.FreeHGlobal(_.mod_type); }); Marshal.FreeHGlobal(ptr); return(result); } return(0); }
public RequestHandler Resolve(DirectoryRequest request) { switch (request) { case AddRequest _: return(new AddRequestHandler()); case ModifyRequest _: return(new ModifyRequestHandler()); case SearchRequest _: return(new SearchRequestHandler()); case DeleteRequest _: return(new DeleteRequestHandler()); case ModifyDNRequest _: return(new ModifyDnRequestHandler()); case CompareRequest _: return(new CompareRequestHandler()); case ExtendedRequest _: return(new ExtendedRequestHandler()); case TransportLayerSecurityRequest _: return(new TransportLayerSecurityRequestHandler()); case AbandonRequest _: return(new AbandonRequestHandler()); default: throw new LdapException(new LdapExceptionData("Not supported operation of request: " + request?.GetType())); } }
public void CanGetXmlRepresentationOfRequest() { var directoryRequest = new DirectoryRequest("ABCD", null); var xml = directoryRequest.ToXml(new SignatureProviders.SignatureProvider(PrivateCertificate, PublicCertificate)); Assert.IsNotNullOrEmpty(xml); }
protected override int SendRequest(SafeHandle handle, DirectoryRequest request, IntPtr serverControlArray, IntPtr clientControlArray, ref int messageId) { if (request is AddRequest addRequest) { if (string.IsNullOrWhiteSpace(addRequest.DistinguishedName)) { throw new ArgumentNullException(nameof(addRequest.DistinguishedName)); } var attrs = addRequest.Attributes.Select(ToLdapMod).ToList(); var ptr = MarshalUtils.AllocHGlobalIntPtrArray(addRequest.Attributes.Count + 1); MarshalUtils.StructureArrayToPtr(attrs, ptr, true); var result = Native.ldap_add_ext(handle, addRequest.DistinguishedName, ptr, serverControlArray, clientControlArray, ref messageId ); attrs.ForEach(_ => { MarshalUtils.BerValuesFree(_.mod_vals_u.modv_bvals); Marshal.FreeHGlobal(_.mod_vals_u.modv_bvals); Marshal.FreeHGlobal(_.mod_type); }); Marshal.FreeHGlobal(ptr); return(result); } return(0); }
private void DelayLdapIfNeeded(DirectoryRequest request) { SearchRequest searchRequest = request as SearchRequest; if (searchRequest != null) { if (this.appConfig.DelayLdapSearchRequest != TimeSpan.MinValue) { Connection.DelayLdapOrTimeout(this.appConfig.DelayLdapSearchRequest); return; } } else if (this.appConfig.DelayLdapUpdateRequest != TimeSpan.MinValue && !string.IsNullOrEmpty(this.appConfig.DelayLdapUpdateRequestContainingString)) { AddRequest addRequest = request as AddRequest; if (addRequest != null && !string.IsNullOrEmpty(addRequest.DistinguishedName) && addRequest.DistinguishedName.IndexOf(this.appConfig.DelayLdapUpdateRequestContainingString, StringComparison.OrdinalIgnoreCase) != -1) { Connection.DelayLdapOrTimeout(this.appConfig.DelayLdapUpdateRequest); return; } DeleteRequest deleteRequest = request as DeleteRequest; if (deleteRequest != null && !string.IsNullOrEmpty(deleteRequest.DistinguishedName) && deleteRequest.DistinguishedName.IndexOf(this.appConfig.DelayLdapUpdateRequestContainingString, StringComparison.OrdinalIgnoreCase) != -1) { Connection.DelayLdapOrTimeout(this.appConfig.DelayLdapUpdateRequest); return; } ModifyRequest modifyRequest = request as ModifyRequest; if (modifyRequest != null && !string.IsNullOrEmpty(modifyRequest.DistinguishedName) && modifyRequest.DistinguishedName.IndexOf(this.appConfig.DelayLdapUpdateRequestContainingString, StringComparison.OrdinalIgnoreCase) != -1) { Connection.DelayLdapOrTimeout(this.appConfig.DelayLdapUpdateRequest); } } }
protected override int SendRequest(SafeHandle handle, DirectoryRequest request, IntPtr serverControlArray, IntPtr clientControlArray, ref int messageId) { if (request is CompareRequest compareRequest) { if (string.IsNullOrEmpty(compareRequest.DistinguishedName) || string.IsNullOrEmpty(compareRequest.Assertion?.Name) || compareRequest.Assertion.GetRawValues().Count != 1 ) { throw new LdapException(new LdapExceptionData("Wrong assertion")); } var value = compareRequest.Assertion.GetRawValues().Single(); var stringValue = value as string; var berValuePtr = IntPtr.Zero; if (value is byte[] binaryValue && binaryValue.Length != 0) { berValuePtr = MarshalUtils.ByteArrayToBerValue(binaryValue); } var result = Native.Compare(handle, compareRequest.DistinguishedName, compareRequest.Assertion.Name, stringValue, berValuePtr, serverControlArray, clientControlArray, ref messageId); MarshalUtils.BerValFree(berValuePtr); return(result); } return(0); }
protected override int SendRequest(SafeHandle handle, DirectoryRequest request, IntPtr serverControlArray, IntPtr clientControlArray, ref int messageId) { if (request is SearchRequest searchRequest) { _request = searchRequest; var attributes = GetAttributesPtr(searchRequest); var searchTimeLimit = (int)(searchRequest.TimeLimit.Ticks / TimeSpan.TicksPerSecond); var res = Native.Search( handle, searchRequest.DistinguishedName, (int)searchRequest.Scope, searchRequest.Filter, attributes, searchRequest.AttributesOnly ? 1 : 0, serverControlArray, clientControlArray, searchTimeLimit, searchRequest.SizeLimit, ref messageId); _response.MessageId = messageId; FreeAttributes(attributes); return(res); } return(0); }
public override int SendRequest(SafeHandle handle, DirectoryRequest request, ref int messageId) { var returnValue = 0; var message = IntPtr.Zero; return(Native.ldap_start_tls_s(handle, ref returnValue, ref message, IntPtr.Zero, IntPtr.Zero)); }
/// <summary> /// Get directory containing list of issuers (you should cache the response!) /// </summary> public DirectoryResponse SendDirectoryRequest() { // Set up dependencies for http request var directoryRequest = new DirectoryRequest(_configuration.MerchantId, _configuration.MerchantSubId); // Execute http request return((DirectoryResponse)_iDealHttpRequest.SendRequest(directoryRequest, _signatureProvider, _configuration.AcquirerUrl, _iDealHttpResponseHandler)); }
public void CanCreateDirectoryRequest() { var directoryRequest = new DirectoryRequest("100", 2); Assert.AreEqual("100", directoryRequest.MerchantId); Assert.AreEqual(2, directoryRequest.MerchantSubId); Assert.AreEqual(directoryRequest.CreateDateTimeStamp + "1002", directoryRequest.MessageDigest); }
protected override int SendRequest(SafeHandle handle, DirectoryRequest request, IntPtr serverControls, IntPtr clientControls, ref int messageId) { var returnValue = 0; var message = IntPtr.Zero; return(Native.ldap_start_tls_s(handle, ref returnValue, ref message, serverControls, clientControls)); }
public override DirectoryResponse SendRequest(DirectoryRequest request) { if (ExceptionToThrow != null) { throw ExceptionToThrow; } SentRequests.Add(request); return(RequestResponses[request.GetType()]); }
private void RefreshSortControlWithDefaultLCID(DirectoryRequest request) { DirectoryControl value = this.FindControlInCollection(this.DirectoryControls, typeof(SortRequestControl)); this.DirectoryControls.Remove(value); this.lcid = LcidMapper.DefaultLcid; this.AddSortControl(); request.Controls.Clear(); request.Controls.AddRange(this.DirectoryControls); }
public static byte[] getDirectoryInfo(Command command) { DirectoryInfo parent = new DirectoryInfo(Util.Conversion.bytesToString(command.data)); List <Object> children = FileSystemOperations.getFileSystemEntries(Util.Conversion.bytesToString(command.data)); DirectoryRequest request = new DirectoryRequest { parent = parent, children = children }; return(Util.Serialization.serialize(request)); }
public async Task FileTree() { var filesRequest = new DirectoryRequest { Directory = testFilesDirectory, }; var result = await client.PostAsync("directory/file-tree", TestExtensions.SerializeRequest(filesRequest)); var treeString = await result.Content.ReadAsStringAsync(); testOutputHelper.WriteLine(treeString); }
public virtual int SendRequest(SafeHandle handle, DirectoryRequest request, ref int messageId) { var serverControlArray = AllocControls(request.Controls, true); var clientControlArray = AllocControls(request.Controls, false); try { return(SendRequest(handle, request, serverControlArray, clientControlArray, ref messageId)); } finally { FreeControls(serverControlArray); FreeControls(clientControlArray); } }
public override int SendRequest(SafeHandle handle, DirectoryRequest request, ref int messageId) { if (request is DeleteRequest deleteRequest) { var dn = deleteRequest.DistinguishedName; if (string.IsNullOrWhiteSpace(dn)) { throw new ArgumentNullException(nameof(dn)); } return(Native.ldap_delete_ext(handle, dn, IntPtr.Zero, IntPtr.Zero, ref messageId )); } return(0); }
protected override int SendRequest(SafeHandle handle, DirectoryRequest request, IntPtr serverControlArray, IntPtr clientControlArray, ref int messageId) { if (request is DeleteRequest deleteRequest) { var dn = deleteRequest.DistinguishedName; if (string.IsNullOrWhiteSpace(dn)) { throw new ArgumentNullException(nameof(dn)); } return(Native.ldap_delete_ext(handle, dn, serverControlArray, clientControlArray, ref messageId )); } return(0); }
protected virtual DirectoryResponse SendRequest(DirectoryRequest request) { DirectoryResponse result; try { result = this.connection.SendRequest(request, LdapTargetConnection.requestTimeout); } catch (DirectoryOperationException ex) { ExTraceGlobals.ConnectionTracer.TraceError <string, ResultCode>((long)this.GetHashCode(), "DirectoryOperationException with response {0}, resultcode {1}", ex.Response.ErrorMessage, ex.Response.ResultCode); throw new ExDirectoryException(ex); } catch (DirectoryException ex2) { ExTraceGlobals.ConnectionTracer.TraceError <string>((long)this.GetHashCode(), "DirectoryException {0}", ex2.Message); throw new ExDirectoryException(ex2); } return(result); }
public override int SendRequest(SafeHandle handle, DirectoryRequest request, ref int messageId) { if (request is SearchRequest searchRequest) { return(Native.ldap_search_ext( handle, searchRequest.DistinguishedName, (int)searchRequest.Scope, searchRequest.Filter, null, (int)LdapForNet.Native.Native.LdapSearchAttributesOnly.False, IntPtr.Zero, IntPtr.Zero, IntPtr.Zero, (int)LdapForNet.Native.Native.LdapSizeLimit.LDAP_NO_LIMIT, ref messageId)); } return(0); }
public override int SendRequest(SafeHandle handle, DirectoryRequest request, ref int messageId) { if (request is AddRequest addRequest) { var entry = addRequest.LdapEntry; if (string.IsNullOrWhiteSpace(entry.Dn)) { throw new ArgumentNullException(nameof(entry.Dn)); } if (entry.Attributes == null) { entry.Attributes = new Dictionary <string, List <string> >(); } var attrs = entry.Attributes.Select(ToLdapMod).ToList(); var ptr = MarshalUtils.AllocHGlobalIntPtrArray(entry.Attributes.Count + 1); MarshalUtils.StructureArrayToPtr(attrs, ptr, true); var result = Native.ldap_add_ext(handle, addRequest.LdapEntry.Dn, ptr, IntPtr.Zero, IntPtr.Zero, ref messageId ); attrs.ForEach(_ => { MarshalUtils.BerValuesFree(_.mod_vals_u.modv_bvals); Marshal.FreeHGlobal(_.mod_vals_u.modv_bvals); Marshal.FreeHGlobal(_.mod_type); }); Marshal.FreeHGlobal(ptr); return(result); } return(0); }
public override int SendRequest(SafeHandle handle, DirectoryRequest request, ref int messageId) { if (request is ExtendedRequest extendedRequest) { var name = extendedRequest.RequestName; var val = extendedRequest.RequestValue; var berValuePtr = IntPtr.Zero; if (val != null && val.Length != 0) { berValuePtr = MarshalUtils.ByteArrayToBerValue(val); } var result = Native.ldap_extended_operation(handle, name, berValuePtr, IntPtr.Zero, IntPtr.Zero, ref messageId); MarshalUtils.BerValFree(berValuePtr); return(result); } return(0); }
internal virtual DirectoryResponse SendRequest(DirectoryRequest request) { DirectoryResponse result; try { if (this.appConfig != null && this.appConfig.DelayLdapEnabled) { this.DelayLdapIfNeeded(request); } result = this.connection.SendRequest(request, Connection.requestTimeout); } catch (DirectoryOperationException e) { throw new ExDirectoryException(e); } catch (DirectoryException e2) { throw new ExDirectoryException(e2); } return(result); }
public override int SendRequest(SafeHandle handle, DirectoryRequest request, ref int messageId) { if (request is ModifyDNRequest modifyDnRequest) { var dn = modifyDnRequest.DistinguishedName; if (string.IsNullOrWhiteSpace(dn)) { throw new ArgumentNullException(nameof(dn)); } return(Native.ldap_rename(handle, dn, modifyDnRequest.NewName, modifyDnRequest.NewParentDistinguishedName, modifyDnRequest.DeleteOldRdn?1:0, IntPtr.Zero, IntPtr.Zero, ref messageId )); } return(0); }
public override int SendRequest(SafeHandle handle, DirectoryRequest request, ref int messageId) { if (request is CompareRequest compareRequest) { if (compareRequest.LdapEntry.Attributes == null || compareRequest.LdapEntry.Attributes?.Count != 1 || compareRequest.LdapEntry.Attributes.Single().Value.Count != 1 ) { throw new LdapException("Wrong assertion"); } var assertion = compareRequest.LdapEntry.Attributes.Single(); var name = assertion.Key; var value = assertion.Value[0]; //TODO implement for bytes assertion return(Native.Compare(handle, compareRequest.LdapEntry.Dn, name, value, IntPtr.Zero, IntPtr.Zero, IntPtr.Zero, ref messageId)); } return(0); }
public override int SendRequest(SafeHandle handle, DirectoryRequest request, ref int messageId) { if (request is SearchRequest searchRequest) { var attributes = GetAttributesPtr(searchRequest); var searchTimeLimit = (int)(searchRequest.TimeLimit.Ticks / TimeSpan.TicksPerSecond); var res = Native.Search( handle, searchRequest.DistinguishedName, (int)searchRequest.Scope, searchRequest.Filter, attributes, searchRequest.AttributesOnly ? 1 : 0, IntPtr.Zero, IntPtr.Zero, searchTimeLimit, searchRequest.SizeLimit, ref messageId); FreeAttributes(attributes); return(res); } return(0); }
public int Add(DirectoryRequest request) {}
public DirectoryResponse SendRequest(DirectoryRequest request, System.TimeSpan requestTimeout) {}
public void CopyTo(DirectoryRequest[] value, int i) {}
public virtual DirectoryResponse SendRequest(DirectoryRequest request) {}
public void Remove(DirectoryRequest value) {}
public override DirectoryResponse SendRequest(DirectoryRequest request) => throw new NotImplementedException();
public void Insert(int index, DirectoryRequest value) {}
public int IndexOf(DirectoryRequest value) {}
public bool Contains(DirectoryRequest value) {}
public static void Main(string[] args) { X509Certificate2 signingCertificate = new X509Certificate2("private.p12", "Password", X509KeyStorageFlags.Exportable); X509Certificate2 issuerCertificate = new X509Certificate2("idealcheckout.cer"); string merchantId = "123456789"; string idealUrl = "https://www.ideal-checkout.nl:443/simulator/"; string returlUrl = "http://localhost:7878/idealreturn"; var idealLib = new DirectoryRequest(); idealLib.SigningCertificate = signingCertificate; idealLib.IssuerCertificate = issuerCertificate; idealLib.MerchantId = merchantId; idealLib.MerchantSubId = "0"; idealLib.IDealURL = idealUrl; var issuerResult = idealLib.GetIssuers().Result; if (issuerResult.IsError) { Console.WriteLine(issuerResult.Error.ErrorMessage); Console.WriteLine(issuerResult.Error.ConsumerMessage); Console.ReadKey(); return; } foreach (var bank in issuerResult.Issuers) { Console.WriteLine(bank.IssuerId + " -> " + bank.IssuerName); } var tranactionLib = new TransactionRequest(); tranactionLib.SigningCertificate = signingCertificate; tranactionLib.IssuerCertificate = issuerCertificate; tranactionLib.MerchantId = merchantId; tranactionLib.MerchantSubId = "0"; tranactionLib.IDealURL = idealUrl; tranactionLib.ReturnUrl = returlUrl; tranactionLib.Amount = 2.95M; tranactionLib.Description = "Test Order"; tranactionLib.EntranceCode = Guid.NewGuid().ToString(); tranactionLib.PurchaseId = "12332365"; var request = tranactionLib.Request(issuerResult.Issuers[0].IssuerId).Result; if (request.IsError) { Console.WriteLine(request.Error.ErrorMessage); Console.WriteLine(request.Error.ConsumerMessage); Console.ReadKey(); return; } Console.WriteLine(request.IssuerAuthenticationURL); try { OpenBrowser(request.IssuerAuthenticationURL.Replace("&", "&")); } catch { Console.WriteLine("Please goto above url and after payment etc. press any key"); } Console.ReadKey(); var statusLib = new StatusRequest(); statusLib.SigningCertificate = signingCertificate; statusLib.IssuerCertificate = issuerCertificate; statusLib.MerchantId = merchantId; statusLib.MerchantSubId = "0"; statusLib.IDealURL = idealUrl; var status = statusLib.Request(request.TransactionID).Result; if (status.IsError) { Console.WriteLine(status.Error.ErrorMessage); Console.WriteLine(status.Error.ConsumerMessage); Console.ReadKey(); return; } Console.WriteLine(status.Status); Console.WriteLine(status.ConsumerName); Console.WriteLine(status.ConsumerIBAN); Console.WriteLine(status.ConsumerBIC); Console.WriteLine(status.Currency); Console.WriteLine(status.Amount); Console.ReadKey(); }
public System.IAsyncResult BeginSendRequest(DirectoryRequest request, System.TimeSpan requestTimeout, PartialResultProcessing partialMode, System.AsyncCallback callback, object state) {}