Angus Robertson 577 Posted June 10 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 1 3 Share this post Link to post
Angus Robertson 577 Posted June 19 ICS V9.2 is now also available from GetIt for Delphi 11 and 12, thanks Embarcadero. Angus 1 Share this post Link to post
jvmbatista 0 Posted June 24 Hello, I'm probably asking in the wrong place but it seemed a bit overkill to create a thread for this and it's a bit related so here it goes: I've been trying to install MidWare on 12.1 and I'm facing the following issues that I didn't have when installing on 12.0 with ICS 9.0 1- [dcc32 Fatal Error] OverbyteMwReg.pas(5): F1026 File not found: 'OverbyteIcsSslDefs.inc' S: Looked though the ICS projects and if I'm not mistaken that include was removed so I did the same and both run and design projects build successfully. Was this the correct fix? 2- When installing the Design package I get the following error: "Cannot load package 'IcsCommonD12Run.' It contains unit 'OverbyteIcsHtmlPars', which is also contained in package 'IcsCommonNewRun290'." Can you guys point me in the right direction for this one? There was any change from 9.0 to 9.2 like the 1st one that causes this to happen? Regards João Share this post Link to post
Angus Robertson 577 Posted June 24 Yes, there were massive changes in ICS V9.1 that meant many projects and derived components need updating, mostly relating to SSL/TLS, but also some unit split in two, and new package names for D10.4 and later, the important stuff is at: https://wiki.overbyte.eu/wiki/index.php/Updating_projects_to_V9.1 but you should also read the release notes for V9.1 and readme9. I only maintain and support ICS, Midware is supported by François Piette and I guess it has not been updated for V9.1, his web site says last release was in 2020. Angus 1 Share this post Link to post
jvmbatista 0 Posted June 24 20 minutes ago, Angus Robertson said: Yes, there were massive changes in ICS V9.1 that meant many projects and derived components need updating, mostly relating to SSL/TLS, but also some unit split in two, and new package names for D10.4 and later, the important stuff is at: https://wiki.overbyte.eu/wiki/index.php/Updating_projects_to_V9.1 but you should also read the release notes for V9.1 and readme9. I only maintain and support ICS, Midware is supported by François Piette and I guess it has not been updated for V9.1, his web site says last release was in 2020. Angus And I missed this post completely... [MidWare] MidWare, Delphi 12 - ICS - Internet Component Suite - Delphi-PRAXiS [en] (delphipraxis.net) Looks like he doesn't maintain the project anymore so I guess that either update it ourselves or find another way Thanks Share this post Link to post
Angus Robertson 577 Posted June 24 It should only take a few minutes to update Midware to the latest ICS, read my notes carefully, fix the compiler errors and correct the uses in the packages. Angus 1 Share this post Link to post
w0wbagger 3 Posted June 25 On 6/19/2024 at 5:50 AM, Angus Robertson said: ICS V9.2 is now also available from GetIt for Delphi 11 and 12, thanks Embarcadero. Angus Before I uninstall my (working) v8.70 installation in C++ Builder (Alexandria), has anyone tested installing this for C++ Builder? It doesn't show up when searching for C++ components in GetIt (only Delphi and ALL), so I'm thinking maybe not? Share this post Link to post
CyberPeter 11 Posted July 15 FYI: Using C++ Builder 12.1 I tried to compile icsv8w: IcsVclCB110Run.cbproj and IcsCommonCB110Run.cbproj which now fails This still worked OK using C++ Builder 12 PS. I only need the run time stuff, not the design time stuff. I link to the *.hpp and *.o / *.obj files To the point: So I downloaded this version (9.2) and notice the packages for C++ are generic ? No version number ? I built: icsv92\Packages\IcsCommonCBNewRun.cbproj icsv92\Packages\IcsVclCBNewRun.cbproj successfully, using C++ Builder 12.1 But .. there are no *.hpp files emitted ? Libs are created (*.o and *.obj) but they seem 'light' in number and size (not tried to link in anything yet since I don't have the *.hpp files) No c++ support yet ? Not to mention support for the 64 bit 'Modern' build toolset. Share this post Link to post
Angus Robertson 577 Posted July 15 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 Share this post Link to post
CyberPeter 11 Posted July 15 Thanks for the update. All I needed to know. Cheers. Share this post Link to post
Angus Robertson 577 Posted July 16 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 Share this post Link to post
Angus Robertson 577 Posted August 9 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 Share this post Link to post
w0wbagger 3 Posted August 15 Hey Angus, when I try to compile this new group (or individual projects) in C++ Builder v12.1, I'm getting an ilink32 error "Unable to open file "ICSCOMMONCBNEWRUN.LIB". It does not appear to be creating it? Specifically, I get this arcane error: c:\program files (x86)\embarcadero\studio\23.0\Bin\CodeGear.Cpp.Targets(4197,5): error : Fatal: Unable to open file 'ICSCOMMONCBNEWRUN.LIB' I'm going to compare the earlier ilink32 command (v9.1) to the ilink32 here and see what's different (I was able to build ICSCOMMONCBNEWRUN.LIB" in v9.1) Will keep you apprised. Share this post Link to post
Angus Robertson 577 Posted August 15 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 Share this post Link to post