Jump to content

Angus Robertson

Members
  • Content Count

    1881
  • Joined

  • Last visited

  • Days Won

    33

Everything posted by Angus Robertson

  1. Angus Robertson

    TIcsFtpMulti failing... (Version 8.65)

    Sorry, that logging level was only ever designed to debug SSL operations, and does not show any FTP commands, so I've no idea what your application is doing or what error messages are being reported, not even whether you are using SSL/TLS. Can you please email me the normal log of the complete session, showing all commands and files. Also, your component is four years old, there was a fix for aborted uploads in V8.71 that related to those taking over 30 minutes, a 50GB file in my case. Angus
  2. Angus Robertson

    Microsoft Trusted Signing service

    Has anyone tried this service for signing applications, free until June 2024, then $9.99: https://techcommunity.microsoft.com/t5/security-compliance-and-identity/trusted-signing-is-in-public-preview/ba-p/4103457 Angus
  3. Angus Robertson

    Delphi 2007 and XE5 Crashes on Windows 11

    I have Delphi 2007 installed on Windows 11, use it weekly without any real problems, although it does crash more often than modern compilers on the same PC, which also crash. Angus
  4. Angus Robertson

    ICS V9.2 announced

    ICS V9.2 has been released at: https://wiki.overbyte.eu/wiki/index.php/ICS_Download ICS is a free internet component library for Delphi 7, 2006 to 2010, XE to XE8, 10, 10.1, 10.2, 10.3, 10.4, 11 and 12 and C++ Builder 10.4, 11 and 12. ICS supports VCL and FMX, Win32, Win64 and MacOS 32-bit targets. Beware Mac OS-X and C++ have not been tested recently due to lack of support from such users. The distribution zip includes the latest OpenSSL 3.0.14. 3.2.2 and 3.3.1, for Win32 and Win64. Changes in ICS V9.2 include: 1 - V9.2 is a minor release, fixing a few issues introduced in the last major release, and other bugs located since. There are no breaking or installation changes from V9.1, but if updating from earlier releases please read https://wiki.overbyte.eu/wiki/index.php/Updating_projects_to_V9.1 2 - TIcsMailQueue can now queue a prepared EML file created by another application, or perhaps received by the SMTP Server. Added optional SkipEmpty argument to StartMailQu method so queue is not started unless there are pending emails waiting to be sent. The sample has 'Send Prepared EML File' to queue an existing EML file rather then preparing email with properties. 3 - Improved email MIME decoding by supporting embedded boundaries, usually for multipart/alternative parts, within a multipart/mixed message, using code written 20 years ago but suppressed for some reason. Previously these parts were sometimes left encoded within a part. There is a new property LooseRFC to allow decoding if the boundaries in the body are missing the two required hyphens, usually because the boundary also begins with hyphens. TMimeDecodeEx should now always return the body if no MIME parts are found, and TPartInfo has PLevel which is Part Level, and PInfo which is displayable part information for logs. The MimeDDemo sample has various improvements to test these features. 4 - Fixed a nasty Win64 problem reading EC certificates from the Windows Store, which may have caused server crashes, also reproducible in the PemTool listing the Windows Store. This was due to Win64 bad initialisation of a buffer used for a Crypto API call that failed. 5 - The HTTP client now checks the URL always has / at start of the path, ie add it for test.com?query. In the REST client, added a sanity check for RawParameters to encode any spaces, which can break the HTTP request. After a file download completed, check actual file size against response size. The multipart/form-data MimeBoundary no longer includes extra -- at start that are required preceding boundaries within parts, some web servers may have been unable to decode our MIME encoding. 6 - The HTTP server has a new method AnswerRedirect for various redirection responses to a new URL. When accessing the default document in a path without a trailing path delimited /, redirect using 301 to the correct path with delimiter instead of adding it locally and displaying the document which will then incorrectly link to pages in a higher level directory. Using the THttpOption hoAddMissPath redirects if the default document is missing perhaps a template or virtual document. Fixed a bug where authenticated POST/PUT requests always returned a 404 error. Added AnswerBodyTB client response with TBytes binary, similar to AnswerString, tested in the sample by supporting favicon.ico request. Check if the request HTTP version gets corrupted due to spaces in the URL, which are not allowed. The SslMultiWebServ sample has new web pages to test POST/PUT and template authentication. 7 - TSslX509Certs has a new function CertResetDomain to reset a certificate order state to None, if the order process stalls or gets confused due to errors. If AcmeV2StartChallgs fails because there are no pending challenges, reset to order to None so it starts again next time and does not loop. 8 - ICS not longer tries to load OpenSSL RAND_screen function that may be missing from recent DLLs. 9 - TIcsHttpMulti fixes a bug introduced in V8.66 that stopped the application setting authentication, rather than adding it to the URL, and a Win64 free stream bug. 10 - TIcsIpStrmLog correctly counts failed client connection attempts if ping is not used first to check the remote IP address. The sample has a new client Retry Attempts box to test this. 11 - Updated the Snippets sample to use authentication to access some the hardcoded URLs, which started failing after authentication was added to test web server bugs (see above). 12 - Added OverbyteIcsHttpThrd sample to show how to use TSslHttpRest component in a multi-threaded program. 13 - Improved Posix support for Linux and Android, not tested or supported yet. Beware SSL does not correctly load for Posix at the moment. 14 - Added support for a new feature release of OpenSSL 3.3 with {$DEFINE OpenSSL_33} in the Defs.inc file, ICS includes new versions of the active versions, 3.3.1, 3.2.2 and 3.0.14, but no longer includes 3.1 since there are two newer feature versions. 15 - Updated the 'ICS Intermediate Short' SSL certificates, used by ICS to generate temporary server certificates to allow SSL servers to run until a Let's Encrypt or commercial certificate is installed. It now expires after 200 days, 21st December 2024, after which self signed certificates will be used instead, unless a newer 'short' is installed. 16 - Only Delphi 10.41 and 10.42 (10.4 with updates 1 or 2) will install correctly with the new install packages, the original RTM version does not support the package LIB suffix: $(Auto) so you must change it manually for each package to 21.0. The release notes for V9.2 are at https://wiki.overbyte.eu/wiki/index.php/ICS_V9.2 All ICS active samples are available as prebuilt executables, to allow ease of testing without needing to install ICS and build them all. There are four separate zip files split into clients, servers, tools and miscellaneous samples which can be downloaded from https://wiki.overbyte.eu/wiki/index.php/ICS_Samples Angus
  5. Angus Robertson

    ICS V9.2 announced

    Just check all the C++ package options are sensible, and match those of the latest Delphi packages, I may have missed something since I've never managed to build a C++ package. Angus
  6. ICS is a free component library used to build software applications, there are no export approvals for ICS, country of origin is the world, it contains code from multiple countries. Angus
  7. Angus Robertson

    Dropping component on form

    When you drop a component on a form, the IDE automatically adds the unit to the uses clause. Is there a way for that component to get the IDE to also add a second unit on which it is dependent? Angus
  8. Angus Robertson

    Dropping component on form

    Added a few lines to the ICS design package registration unit, and two extra units are now being added automatically when components are dropped on forms, or those forms are accessed in the IDE. Would not have been possible without a Stack Overflow answer by Remy Lebeau, Aug 19, 2020: Have your design-time package implement a class that inherits from TSelectionEditor and overrides its virtual RequiresUnits() method, and then register that class for your component using RegisterSelectionEditor(). This way, whenever you place your component onto a Form/Frame/DataModule Designer at design-time, any additional units you report from RequiresUnits() will be added automatically to that unit's uses clause when the unit is saved. uses ..., DesignIntf; type TWebBrowserWrapperSelectionEditor = class(TSelectionEditor) public procedure RequiresUnits(Proc: TGetStrProc); override; end; procedure TWebBrowserWrapperSelectionEditor.RequiresUnits(Proc: TGetStrProc); begin inherited RequiresUnits(Proc); // call Proc() for each additional unit you want added... Proc('MyWrapperUnit'); Proc('MyUtilityUnit'); end; procedure Register; begin RegisterComponents('My Wrappers', [TWebBrowserWrapper]); RegisterSelectionEditor(TWebBrowserWrapper, TWebBrowserWrapperSelectionEditor); end; Angus
  9. Angus Robertson

    Dropping component on form

    ICS now only needs to add two units to meet almost all event handler type needs. Users of old compilers can not always get the same features as newer compilers, so may have to add uses manually, as everyone has for 25 years. There is an argument for only supporting new compilers, but I still have a commercial application using Delphi 2007, so support for that will not be dropped any time soon Angus
  10. Angus Robertson

    Dropping component on form

    Thanks Uwe, will try this next week. Angus
  11. Angus Robertson

    Dropping component on form

    That is exactly what I need, and for that reason, but this if for dozens of existing components and I assume they would need to be changed to be derived from TSelectionEditor. I also need compatibility with Delphi 2007 and later, ideally. Angus
  12. Angus Robertson

    ICS V9.2 announced

    ICS V9.3 in SVN should now build for C++ Builder, there are new defines to make all the Windows Certificate Store code including WinCrypt optional, which are disabled by default for C++, I've removed WinCrypt from the package. Angus
  13. Angus Robertson

    ICS V9.1 announced

    ICS has never been supported on Linux. There is preparatory work for Linux work, I created a new SSL sample PemTest last month which works on Linux, but socket based components don't work yet, this will be fixed soon by replacing the old MacOS event engine in WSocket with a new version that supports all platforms, a test version is currently in the ICS V10 SVN repository, no SSL. Angus
  14. Angus Robertson

    TRestClient, TLS 1.2, & Windows Server 2012 R2

    I used to support a Windows 2012 R2 (Windows 7) server, and keeping SChannel SSL running was a pain, since TLS/1.2 was never part of the original OS and had been added with patches. The main problem was it kept forgetting SChannel TLS/1.2 ciphers, usually after each reboot. Before rebooting, I always used the IISCrypto tool from https://www.nartac.com/ to select all the required ciphers, specifically ECDHE ciphers since I use EC key certificates which Microsoft does not like. Servers using OpenSSL worked fine of course. Angus
  15. Angus Robertson

    What is the best way to accomplish this?

    I've just written a similar application using ICS components, a server listens for remote clients to connect, those connections are kept open permanently with a tiny data packet periodically, and the server can send commands back to the clients when required. This application is actually server monitoring locally, if the remote client stop communicating, the server will restart the Windows service. I wrote a similar system 20 years ago using ICS monitoring vehicles using wifi (before 3G) and triggering FTP uploads (CCTV) from them. Angus
  16. Angus Robertson

    TRxTrayIcon started misbehaving

    I've been using TRxTrayIcon from RX tools for about 25 years, with various versions of Windows and Delphi. Without changing anything, on Windows 11 I've started getting an exception on ResumeThread when the component is asked to animate the tray icon using a timer thread. This might have happened when I updated to Delphi 11.3 a few months ago, not sure. Anyone else still using RX Tools? The Polaris unicode version. Angus
  17. Thanks, I'll test against Mosquitto MQTT server for the next release, and adapt the component if possible, but we don't always try to work with buggy or old servers. Angus
  18. As I said, I've never really looked at the MQTT protocol. Is it now working? Are there changes we should be making to the MQTT component or sample to make it work with other servers and clients? Angus
  19. Have you tried building and testing the OverbyteIcsMQTTst sample? It contains both client and server components, to send to each other. There is a publish button, does it work? Sorry, I know little about MQTT, not used it for any of my own projects, this is a contributed component that I improved for SSL and the latest ICS,. The sample seems to work OK, but please let us know if it does not work as expected, it has not been tested against non-ICS clients or servers. Angus
  20. Angus Robertson

    Buffered Byte Count for SSL Socket

    Must say I've never used BufferedByteCount myself, don't think it's used in any ICS components. But if an SSL version is useful, please email your changed unit and it will be added, please make sure you update the latest version from SVN. My email is in many units. Angus
  21. Angus Robertson

    ICS V9.2 announced

    I've updated SVN with new Common and VCL C++ Builder packages, the contributor warns there is still work to be done with the WinCrypt units. I get too many errors trying to build them, but by C++ knowledge is zero. Please try yourself. Won't be in the overnight zip until midnight. Angus
  22. Angus Robertson

    ICS V9.2 announced

    Another ICS user created new C++ packages for ICS last week, but he is still trying to fix a long term errors building the OverbyteIcsWinCrypt unit which has too many errors, should be something in SVN in the next couple of days. In the worst case, I'll change the defines so C++ does not build WinCrypt as it doesn't for Posix. Angus
  23. Not sure why you wrote such complicated code, none of our examples look like that for TSslHttpRest, only the old THttpCli component . TSslHttpRest includes TSslContext, TIcsCookies and TMemoryStream so they are all redundant. The IcsLogger is also unnecessary, since the component has logging built in, using the OnHttpRestProg event. The OverbyteIcsSnippets sample has a function doHttpRestReqClick that makes a request with only a few lines of code. But before writing any code, I would use the OverbyteIcsHttpRestTst sample to test the URL and parameters. Angus
  24. Thanks for your help, you've sent some updated C++ units already, look forward to the rest. Angus
  25. As has been mentioned once or twice, no-one supporting ICS does C++. So when I make changes, I try to keep C++ working, but without being able to test anything error occur. 10,4 and later only use 'New' packages which have $auto suffiux so work with all new compilers, avoiding all this messing with versions. So all those 110 references should be New. When you have it working, please zip and email me any changed or new files, so I can update SVN. Probably best to discuss problems by email rather than here, my email is in many source files. Angus
×