-
Content Count
67 -
Joined
-
Last visited
-
Days Won
2
mjustin last won the day on February 5
mjustin had the most liked content!
Community Reputation
17 GoodRecent Profile Visitors
The recent visitors block is disabled and is not being shown to other users.
-
Datasnap Server doesn't response after awhile?
mjustin replied to Mustafa Simsek's topic in Network, Cloud and Web
Does the server run out of resources? What does netstat say about client connections? Does the server cleanup (remove) stale connections? -
With Indy, the recommended way to send a message to a specific client is to assign an unique client id to new connections in the OnConnect method of the server. The server application then can use the client id to limit the message to one (or some) of the connected clients. Technically, the client id would be a property in a subclass of the TIdContext class, and this class must be "registered" with the Indy TCP server. There are plenty of articles on the web covering this technique.
-
Habari STOMP Client libraries 2023.02 released, now supporting mORMot TCP client
mjustin replied to mjustin's topic in Delphi Third-Party
Habari STOMP Client libraries release 2023.08 Habarisoft released new versions of its native STOMP client libraries for Delphi / Object Pascal for integration with popular open source message brokers: Habari STOMP Client for ActiveMQ 8.3 – tested with Apache ActiveMQ 5.18.2 Habari STOMP Client for Artemis 8.3 – tested with Apache ActiveMQ Artemis 2.30.0 Habari STOMP Client for OpenMQ 8.3 – tested with Eclipse OpenMQ 6.4.0 Habari STOMP Client for RabbitMQ 8.3 – tested with RabbitMQ 3.11.20, 3.12.2, 3.13.0-beta.3 Release notes: https://www.habarisoft.com/release_notes.html -
marsRequest.RemoteIP empty when using ISAP, filled when using cmdline (indy)
mjustin replied to mvanrijnen's topic in MARS-Curiosity REST Library
Does marsRequest.RemoteIP contain an empty string, or an unexpected value? And do the other fields of marsRequest contain sensible (non-default) values? -
It is a very simple POST method request to a HTTPS address and with a JSON body. A small example how this can be done with Indy (included in Delphi) is here: https://mikejustin.wordpress.com/2015/03/14/indy-10-6-https-post/ Line 16 defines the body of the message. Replace it with your required JSON string. Line 21 send the message, change the server address to your destination server. It requires the OpenSSL DLLs which can be downloaded from https://github.com/IndySockets/OpenSSL-Binaries
-
ScroogeXHTML 8.3 - RTF to HTML5 and XHTML converter
mjustin replied to mjustin's topic in Delphi Third-Party
ScroogeXHTML for Object Pascal 8.4 released ScroogeXHTML for Object Pascal is a library which supports a subset of the Rich Text Format (RTF) standard. It converts RTF to HTML5 and XHTML stand-alone documents, or to fragments which can be embedded in other documents. The library is compatible with Delphi 2009+ and Free Pascal 3.2.0. The 8.4 release fixes some minor issues. Full release notes are at https://www.habarisoft.com/scroogexhtml/8.4/docs/api/version.html Home page, Getting Started PDF, and demo download: https://www.scroogexhtml.com/object_pascal.html API online: https://www.habarisoft.com/scroogexhtml/8.4/docs/api/ -
Habari STOMP Client libraries 2023.02 released, now supporting mORMot TCP client
mjustin replied to mjustin's topic in Delphi Third-Party
Habari STOMP Client libraries release 2023.06 Habarisoft released new versions of its native STOMP client libraries for Delphi / Object Pascal for integration with popular open source message brokers: Habari STOMP Client for ActiveMQ 8.2 – tested with Apache ActiveMQ 5.18.0 Habari STOMP Client for Artemis 8.2 – tested with Apache ActiveMQ Artemis 2.28.0 Habari STOMP Client for OpenMQ 8.2 – tested with Eclipse OpenMQ 6.4.0 Habari STOMP Client for RabbitMQ 8.2 – tested with RabbitMQ 3.12.0 This version contains a new decoder for STOMP header lines. -
Apache ActiveMQ supports MQTT (and other protocols) and discovery: https://activemq.apache.org/discovery With Delphi: https://mikejustin.wordpress.com/2021/08/14/discover-activemq-brokers-with-delphi-xe4-and-indy-10-6/
-
Can Delphi set session data in opening a webpage?
mjustin replied to PiedSoftware's topic in Network, Cloud and Web
Whether the credentials will be saved (or updated) in the browser app is typically a user choice, presented after the login data is entered. Unless this feature is disabled completely. Can you give more information about environment / use case / functional requirements? -
Daraja HTTP Server Framework 2.5 preview snapshot
mjustin replied to mjustin's topic in Delphi Third-Party
The Daraja HTTP Server Framework is a free open source library for Object Pascal (Free Pascal 3.2.0 or Delphi 2009+), based on the HTTP server component in Internet Direct (Indy). New: the 2.6-SNAPSHOT includes a first implementation of the Web Filter API, which allows pre- and postprocessing of HTTP requests and responses. Web Filters are useful for example to add logging and auditing, input validation, or authentication. Filters may be composed in filter chains, where the order of filter execution is defined by the order of registration. Web Filter instances may configured through init parameters. Example code In the test example below, the Web Component TExamplePage returns the plain-text response "example", and the filters (TTestFilterA and TTestFilterB) add the texts " (A)" and " (B)" to the response. The client therefore receives the response "example (A) (B)". Code: Pascal [Select][+] procedure TAPIConfigTests.TestTwoFilters; var Server: TdjServer; Context: TdjWebAppContext; begin Server := TdjServer.Create; try Context := TdjWebAppContext.Create('web'); // Context located at http://<server:port>/web/ Context.AddWebComponent(TExamplePage, '*.txt'); // Web Component responds to all requests for txt documents Context.AddWebFilter(TTestFilterA, TExamplePage); // Web Filter A will be processed first and appends " (A)" Context.AddWebFilter(TTestFilterB, TExamplePage); // Web Filter B will be processed second and appends " (B)" Server.Add(Context); Server.Start; CheckGETResponseEquals('example (A) (B)', '/web/test.txt'); finally Server.Free; end; end; Code for the DoFilter method of TTestFilterA: procedure TTestFilterA.DoFilter(Context: TdjServerContext; Request: TdjRequest; Response: TdjResponse; const Chain: IWebFilterChain); begin Chain.DoFilter(Context, Request, Response); // invoke other filters and eventually the Web Component Response.ContentText := Response.ContentText + ' (A)'; end; Full source code, including DUnit and FPCUnit tests, is available at GitHub. The Web Filter API specification is still in development and may still see minor and major changes. More information - GitHub: https://github.com/michaelJustin/daraja-framework - 2.6-SNAPSHOT API documentation: https://michaeljustin.github.io/daraja-framework/2.6-SNAPSHOT/ - Project home page: https://www.habarisoft.com/daraja_framework.html -
Habari STOMP Client libraries 2023.02 released, now supporting mORMot TCP client
mjustin replied to mjustin's topic in Delphi Third-Party
Habari STOMP Client libraries release 2023.04 Habarisoft released new versions of its native STOMP client libraries for Delphi / Object Pascal for integration with popular open source message brokers: Habari STOMP Client for ActiveMQ 8.1 – tested with Apache ActiveMQ 5.18.0 Habari STOMP Client for Artemis 8.1 – tested with Apache ActiveMQ Artemis 2.28.0 Habari STOMP Client for OpenMQ 8.1 – tested with Eclipse OpenMQ 6.4.0 Habari STOMP Client for RabbitMQ 8.1 – tested with RabbitMQ 3.11.12 This version is mainly a maintenance release and tested with the latest message broker versions. Full release notes can be found at: https://www.habarisoft.com/release_notes.html Home page: https://www.habarisoft.com/ -
Protected TCP/IP Client/Server connection
mjustin replied to shineworld's topic in Network, Cloud and Web
Yes, this would cause more work / administration. But maybe you missed the last part: "The accepted answer describes a different solution, using a 'user cert store. (...)" With this solution, no additional user would be needed. The certificate will reside in a user cert store, and is readable only for the user, inaccessible for other users.. Currenly the client is in Python: > For the client I use python while the server is done with Indy 10 using TIdTCPServer. So if there is Python support for cert stores it should be solvable. Alternatively, with Delphi, other HTTP clients may support reading from cert stores (TNetHTTPClient or others). -
Protected TCP/IP Client/Server connection
mjustin replied to shineworld's topic in Network, Cloud and Web
A client certificate should be stored in a safe place, which is not even accessible / exportable by the logged in user. Just an idea: using a cert store, the certificate may be installed with private keys marked as not exportable. Reference: How to protect private key for client cert in machine store? Is it acceptable for it to be exportable? https://security.stackexchange.com/q/260614 The accepted answer describes a different solution, using a 'user cert store'. If I understand correctly, other users would not be able to access the certificate and private key. -
Protected TCP/IP Client/Server connection
mjustin replied to shineworld's topic in Network, Cloud and Web
To clarify: you are looking for protection against malicious clients, and the server is not a concern? -
TRestRequest.AddParameter('contentType', 'application/JSON', In the Screenshot cURL snippet, it is 'Content-Type: application/json'. (contentType seems to be wrong)