Jump to content

Angus Robertson

Members
  • Content Count

    2047
  • Joined

  • Last visited

  • Days Won

    38

Everything posted by Angus Robertson

  1. Angus Robertson

    filename for download file THttpServer

    ICS has a TMimeTypesList component that will read MIME types from the Windows registry, a supplied file mime.types or an internal list, application/vnd.ms-excel is common. This component is used by TSslHttpServer for files it opens. Angus
  2. Angus Robertson

    Need some help on TSslFtpClient

    You should build the sample OverbyteIcsXferTst.dpr which is a a full SSL FTP client GUI, and uses TIcsFtpMulti which is much easier and quicker to use than TSslFtpclient. Angus
  3. Angus Robertson

    filename for download file THttpServer

    Beware ContentType: xls/xls is not commonly supported by browsers, but if it works... Angus
  4. Angus Robertson

    Only default ICS sample SSL certificate is working

    Sorry, seems the CreateSelfSignedCert function in OverbyteIcsSslX509Utils.pas got broken while being modernised, you need to add a missing line: MySslCertTools.ExpireDays := Days; { V8.64 got lost } and it will work properly again. Sorry, did not test that old function properly. The modern way to create a self signed certificate is using fields and buttons on the New Certificate Properties and Create Certificates tabs. First click 'Generate Key Pair', complete the various New Certificate Request Properties, previous tab, click 'Create Self Signed Cert from Properties', then at the bottom of the tab specify the file names for the formats you want to save, tick if you want the private key in the same file, then click the buttons to save in PEM, PKCS12, DER, etc. Finally on the List Certificate tab, click View Single File to double check the certificate is created properly. Those three tabs perform most of the common certificate functions of the OpenSSL command line tool. Angus
  5. Angus Robertson

    Only default ICS sample SSL certificate is working

    By old files, I meant long expired SSL certificates and job files that are no longer needed since ICS samples can now do everything they did. People try to use them and wonder why they don't work. Angus
  6. Angus Robertson

    filename for download file THttpServer

    Generally, the 'filename' is that of the page accessed with the GET request and is not returned in the response header. Again generally you should use the FilenameToContentType function to get the content type, which will return 'application/octet-stream' for an XLS file, which will cause the browser to bring up a dialogue box asking what to do with the file. If you want to display the file, there are Microsoft special headers to do so. Keep it simple until it works. Angus
  7. Angus Robertson

    Only default ICS sample SSL certificate is working

    Created PEM files how, which applications or which functions with what parameters. Generally public certificates can no longer be issued with an expiry beyond one year and certain ICS tools do limit that. Angus
  8. Angus Robertson

    Only default ICS sample SSL certificate is working

    As I said before, you don't need to use OpenSSL command line tools to create certificates, ICS has functions to do that. ICS has a lot of really old examples untested for 10 years, really should be removed. You should build the OverbyteIcsPemTool.dpr sample which has numerous facilities for creating, testing, converting and viewing X509 certificates, in various formats. Then open your certificate files which will immediately tell you whether ICS can read them, and display all the content. There are several Wiki FAQs on certificates I previously suggested you read that explain this all in detail. ICS with OpenSSL applications work perfectly on Vista and Windows 2008, two of my public servers are 2008, closed down last week due to Microsoft support ending after 12 years. I believe ICS applications still work on Windows XP but that has been out of support for years so no longer tested. The latest version 1.1.1 of OpenSSL no longer supports Windows XP, you need to use 1.0.2 or 1.1.0, both of which are now out of support so no security fixes. OpenSSL and Microsoft do offer paid support for XP and 1.0.2 for large organisations that really can not upgrade, but not for home users. Angus
  9. Angus Robertson

    Loading SSL Certificates into EXE (TSslContext)

    The latest versions of TSslFtpServer and TSslWSocketServer do not require to use an SslContext, which was never well documented and is complicated to use. You should instead use IcsHosts to specify listeners, SSL properties and certificates, The IcsHosts SslCert property can be a file name or an string containing a PEM certificate and the component loads either automatically. This is all done in TSslWSocketServer.LoadOneCert if you really want to do it the old way. Angus
  10. Angus Robertson

    TSimpleWebSrv and POST

    OverbyteIcsWebAppServerUploads,pas is a handler that accepts POSTed files. Angus
  11. Angus Robertson

    TSimpleWebSrv and POST

    No TSimpleWebSrv does not currently support POST or PUT, if you look at the diagnostic log output you'll see 'Server Request Ignored'. It was designed as a light weight server for OAUTH2 and responding to well-known requests by certificate authorities. Adding complexity increases the size of any ICS REST applications that use those features. Angus
  12. Angus Robertson

    ICS Wish List

    This list is possible additions to ICS, new protocols and functionality, none of which is guaranteed... Open to suggestions for other possible protocol additions or improvements. Personally, I'm unlikely to look at any of this stuff for several months, unless my company has an urgent need for something new. But if several other users are all looking for the same thing, I can help co-ordinating improvements. Protocol: STUN client and server Why: Session Traversal Utilities for NAT allows finding a public IP address while behind a NAT router, by contacting a STUN server. Used by public servers and clients that need to tell other applications how to contact them. Also some client protocols like a host name, like SMTP. Difficulty: low, simple protocol, easy to implement. Benefits: medium, saves configuring the IP manually. Protocol: RDAP Client Why: Registration Data Access Protocol is the replacement for the Whois protocol, using HTTPS REST and Json protocols. Both domains and IP addresses. Difficulty: low, simple protocol, easy to implement. Benefits: low, Whois is heavily censored now. Protocol: Roughtime client and server Why: replacement for NTP and SNTP network time protocols (from Google), with security. Difficulty: low, simple protocol. Benefits: low, usually get time from Windows. Protocol: HTTP/2 for HTTP client and server Why: More efficient version of HTTP/1.1, particularly for web pages with dozens of elements, compresses headers. Difficult: moderate, extra DLL, messy, lots to change. Benefits: low, ICS is rarely used to download complex web pages, perhaps more important for the HTTP server. Protocol: SASL for SMPT and POP3 clients Why: Simple Authorisation and Security Layer adds OAuth2 for SMTP and POP3, safer than clear authentication. Difficulty: low, OAuth2 already done. Benefits: high, where the email provider requires it. Protocol: OAuth1 for Twitter Why: Twitter uses OAuth1 rather than the easier and more recent OAuth2 almost everyone else uses. Difficulty: low, uses HMAC which is done already. Benefits: high, if you want to send tweets. Protocol: DNS over HTTPS (DOH) Why: secure DNS can not be intercepted and modified. Difficulty: ICS already has a TDnsQueryHttps component and sample, but causing it to be used by TWSocket and other components at low level could get messy and link in all the REST and Json units. Benefits: low, Microsoft is threatening to support DOH, probably only Windows 10/2019. Protocol: MQTT Why: MQ Telemetry Transport is used to send messages between devices, including IoT. Difficulty: ICS MQTT project n GutHub, needs integration. Benefits: high, if you need the protocol. Protocol: Websockets server Why: A full duplex version of HTTP often used for server push to dynamically update web pages. Difficulty: ICS websockets project in GutHub, needs update and integration. Benefits: high, if you need the protocol. Protocol: SChannel SSL/TLS Support Why: avoid distributing OpenSSL DLLs by using SSL/TLS protocol APIs built into Windows. Downside is Microsoft often takes years to support new protocols and often only in the latest operating systems Difficulty: high, needs to be done at the lowest levels, risks adding bugs for OpenSSL if both supported, need to replace a lot of OpenSSL encryption APIs with Windows APIs, and certificate APIs. Benefits: low, unless you really hate DLLs. Protocol: POP3 Server, IMAP Client and Server Why: because these are missing and we all use email. Difficulty: moderate, lot of new new code. Benefits: high, if you need them. Platform: Better C++ and MacOS Support Why: we don't do much testing on C++ and MacOS due to lack of volunteers to do this regularly. We lack samples for C++ and MacOS. Difficulty: high, users want someone else to do the work. Benefits: high, for C++ and MacOS users. Platform: Support for mobile apps and Linux Why: more platforms. Difficulty: very high, probably at least one man year effort, maybe more. Benefits: high, for mobile apps and Linux. Angus
  13. Angus Robertson

    ICS Wish List

    Better use of multiple CPUs needs threads, which we generally try to avoid in ICS, but bring the ICS threaded socket server up to date is on my list, and perhaps allowing the web server to use it. I'm aware there are Windows APIs that offer performance improvements over our existing use of sockets, by sending and receiving entire files, but you then lose control over what is happening and SSL becomes problematic. But it's something we can look at. Angus
  14. I've explained the limitations of the TCP implementation on Windows and how to get around it. If you don't want to listen to my experience, feel free to Google for better solutions then let us know when you have a proven working solution. Many of us have done all this before, often several times. Angus
  15. I have already given my suggestions on how to solve very common issue. If you need new features you have the ICS source and you can update it yourself. Or listen to those of us that have been using it for 20 years. Angus
  16. If you want to write your own internet library for your own requiremets, please feel free. Angus
  17. Angus Robertson

    Some assistance on SSL required

    I would suggest reading ICS wiki FAQ_Using_TSslCertTools which explains all about certificates, and FAQ_Order_SSL_Certificates. There are other FAQ on how we handle trust stores. Angus
  18. TCustomTimeoutWSocket timeouts relate to a socket that is already opened and connected, primarily a server socket, not to TCP DNS and connection attempts. As Francois says, you can use a timer to abort the connection, but this does not stop the windows connection attempt so the socket can not be re-used immediately for another attempt. Angus
  19. Angus Robertson

    Some assistance on SSL required

    Those are really old files and should have been removed a long time ago. The primary demo and documentation for X509 certificates is OverbyteIcsPemTool.dpr which will display, create, and convert numerous certificate formats, it is complex but will do almost everything the OpenSSL command line tool will do, in code. For a simple self signed certificate, there is an ICS function CreateSelfSignedCert in OverbyteIcsSslX509Utils. Angus
  20. I assume you are now talking about clients and not servers? Simple answer is no, TCP is a lazy protocol based on waiting for responses from slow networks (decades ago) so nothing happens fast. Long answer is Windows allows you to change the TCP timeouts, but such changes effect all applications on the PC and generally it's a very bad idea. Real solution is to try and ping the server before connecting using TCP, because you can timeout after a few seconds and give up. ICS has a threaded ping component for this purpose. and a high level client/server component TIcsIpStrmLog that uses ping for exactly this purpose. TIcsIpStrmLog may be configured as a client or server and allows simple text lines to sent, using few lines of code in the application and only a couple of events. There is a sample OverbyteIcsIpStmLogTst.dpr that send packets to itself. The component supports SSL and will order it's own certificates. Only problem with ping is sometimes it's blocked by firewalls so no response. You can use a UDP server in parallel with the TCP server for a quick hello, no response is similar to ping. Angus
  21. Angus Robertson

    Some assistance on SSL required

    The ICS FTP server and client already support One Time Passwords automatically, added that long before SSL/TLS became common, In the server, set the OtpMethod to those you wish to iupport, and the server hello prompt changes to advertise OTP, which the FTP client handles automatically. Angus
  22. Angus Robertson

    [BUG] HTTPS support in 64bits - Access Violation

    SVN and the overnight zip are updated with the 64-bit fix. Still having fun and games with 4-bit samples, think I'll try an older version of Delphi. I checked other functions with TBytes, most already had const or var, a couple were missing both so added, although they were only used in ICS with TBytes buffers so should not have caused any issues. Angus
  23. Angus Robertson

    Some assistance on SSL required

    Might come back this in the summer when OpenSSL 3.0 adds support for Certificate Management Protocol, which I'll try to support in ICS as well as Let's Encrypt. Angus
  24. Angus Robertson

    Some assistance on SSL required

    I've only been talking about server certificates here. Client certificates are totally different and make things very confusing. ICS clients and servers do support client certificates but not automatically and there are no samples using them, really only needed for exceptionally high security stuff like Swift bank transfers. The ICS component has properties to add digitalSignature and codeSigning extensions to certificates, not sure which OID they add. Angus
  25. Angus Robertson

    Reading caller number at the same time phone is ringing

    If you are talking about a simple analogue telephone line, this is all down to the hardware monitoring that line and how it delivers the caller id to your computer., 20 years ago some modems and special hardware had this feature, and you use an RS232 port to read it on a PC. But with analogue telephony being rapidly replaced by VoIP and the old PSTN copper cable telephone networks and exchanges turned off and obsoleted (by 2025 in the UK), this is really historical curiosity. Angus
×