Jump to content

Angus Robertson

Members
  • Content Count

    1731
  • Joined

  • Last visited

  • Days Won

    33

Posts posted by Angus Robertson


  1. Your partial code looks okay. TCP Send and related functions simply stuff data in a buffer with no real error, SendTo sends UDP immediately with a Windows API but unfortunately does not get the real error (which Send already does for TCP). 

     

    If you get back -1 from SendTo, use LastError := WSocket_Synchronized_WSAGetLastError;  then WSocketErrorDesc to get a message, I'll correct this in SVN for V8.67, not sure how it got missed for 20 years, but UDP rarely fails, or at least rarely gives errors, you have no idea if packets are received anywhere.

     

    Angus

     

     

     

     

     


  2. UDP is connectionless protocol, connect does nothing, you use SendTo and SendTo6 to send UDP packets setting the address and port in a TSockAddrIn or TSockAddrIn6 structure.  When receiving, in onDataAvailable you use ReceiveFrom or ReceiveFrom6 which fills the same structure with the remote address, conveniently so you can reply.

     

    Angus

     


  3. The Delphi-MQTT project seems well written, but does not use TLS/SSL, easy to add that.  I published a wish list here 18 months suggesting this could be added to ICS, the main issue is testing. 

     

    This telemetry stuff really needs to be tested with non-Delphi applications and appliances, ideally in a real world environment, and I don't knowingly have any such things.  Do have lots of Alexa capable devices on my LAN, no idea if they run MQTT.

     

    Angus

     


  4. That comment only relates to setting the various component proxy properties using a single URL, for convenience.  

     

    The THttpCli component always connects to forward web proxies without HTTPS, but will make HTTPS requests through those proxies using the CONNECT method.  Not sure if forward web proxies exist that use HTTPS. 

     

    Angus

     


  5. I offer zip and exe downloads of my application installers, Firefox is happy with both, Edge moans about the exe which is signed with a Sectigo certificate, but the Keep option allows it to be downloaded OK.  Windows 10 itself allows exe files signed by Sectigo to be opened and run without any warning dialogs. 

     

    I thought most Windows users were aware that Nanny Microsoft is overly cautious about download warnings and know how to ignore them. 

     

    The only download problem I've had was when Google scanned some Delphi component downloads on my site and decided one was malicious, never told me which but possibly an OpenSSL DLL, that caused my domain to be blocked by all browsers including Firefox, only solution was to hide all such files with a password. 

     

    Angus

     


  6. In your first project, onConnect error=0 is OK, but you are not logging the error for HandshakeDone which quite often fails.  It is also where your component should be checking whether you really reached the secure server you requested. 

     

    Can not help on the C++ missing external, you'll need to resolve that yourself.

     

    Angus

     

     

     


  7. Start with the OverbyteIcsSslMultiFtpServ.dpr and OverbyteIcsXferTst.dpr samples, they are designed for secure FTP,  and use special FTP commands to speed up synchronising file directories including sub-directories.  I've been using these FTP components for 15 years for backup to and from my public servers.   The FTP server includes automatic SSL certificate ordering.

     

    Angus

     

    • Like 1

  8. I can connect to your test server with the host name you sent, using the ICS browser component, get a 404 error no index page, uses a RapidSSL certificate:

     

    SSL Connected OK with TLSv1.1, cipher ECDHE-RSA-AES256-SHA, key auth RSA, key exchange ECDH, encryption AES(256), message auth SHA1

     

    TLSv1.1 and SHA1 are now obsolete and not supported by most browsers.  Somehow you have configured the server not to support TLSv1.2, either by using very old OpenSSL DLLs or with options.

     

    Angus

     

     


  9. Some component properties are reset when the socket closes, and need to be set each time it is opened, SslEnable is one of them since the next connection may not be SSL. 

     

    OverbyteIcsIpStmLogTst.dpr is the sample for TIcsIpStrmLog, it has both client and server modes, you only need the client part, I wrote a simple app to test something::

     

        IcsIpStrmLog1.LogProtocol := logprotTcpClient;
        IcsIpStrmLog1.RemoteHost := SendHost.Text;
        IcsIpStrmLog1.RemoteIpPort := SendPort.Text;

        IcsIpStrmLog1.ForceSsl := True;
        IcsIpStrmLog1.StartLogging;

     

    Log onLogProgEvent and onLogRecvEvent. 

     

    Angus

     

     

×