Table of Contents
YuCurl
YuCurl – libcurl for Delphi without DLLs
YuCurl is a powerful and versatile client-side URL library that seamlessly integrates libcurl into Delphi applications, allowing applications to efficiently handle various Internet protocols and ensure secure data transmission.
YuCurl does not use external DLLs but integrates all functionality directly into Delphi applications, which results in a number of benefits:
- Portability: Applications built with YuCurl are standalone, eliminating the risk of missing DLL files during distribution.
- Improved Performance: By static linking, applications can achieve faster execution times compared to dynamic linking.
- Enhanced Security: YuCurl minimizes vulnerabilities associated with external libraries, as it compiles only necessary components into the application.
- Delphi memory manager usage: YuCurl utilizes the Delphi memory manager, which prevents memory allocation issues and aids in the detection of memory leaks.
YuCurl can replace Indy, ICS, Synapse, and other Delphi Internet components in many scenarios and often surpasses their features. HTTP/2 and HTTP/3 support stand out in particular. While very rich in features, YuCurl offers an easy and intuitive interface which allows basic operations in less than ten lines of code.
Supported Protocols
- HTTP, HTTPS: For the Hypertext Transfer Protocol, YuCurl supports HTTP/2 and HTTP/3, handles various request methods such as GET, HEAD, POST, and PUT; it also manages cookies, handles redirections, and facilitates form-based uploads, making it essential for modern web communication.
- SMTP, SMTPS: With the Simple Mail Transfer Protocol, YuCurl enables the seamless sending of emails from client to server, provides secure SSL/TLS encryption via SMTPS, and supports multiple authentication methods.
- IMAP, IMAPS: Using the Internet Message Access Protocol, YuCurl enables clients to manage emails directly on the server, list mailbox folders, fetch emails (using UID and SECTION), upload emails, all with support for multiple authentication methods.
- POP3, POP3S: For the Post Office Protocol, YuCurl provides capabilities to list, retrieve, and delete emails from a server while supporting various authentication methods to ensure secure access to email accounts.
- FTP, FTPS: YuCurl facilitates file transfers using the File Transfer Protocol by supporting downloading (with resume), uploading (with resume and append), and directory listing; FTPS adds a layer of security with SSL/TLS encryption for safe data transmission.
- SCP, SFTP: For secure file transfers, YuCurl offers SCP for transferring files over SSH securely and SFTP for a more feature-rich protocol that includes file management capabilities alongside secure transmission.
- WS & WSS (WebSockets): With WebSockets support, YuCurl enables real-time full-duplex communication channels over a single TCP connection; WSS enhances this by providing secure connections through SSL/TLS encryption.
- MQTT: The Message Queuing Telemetry Transport protocol is lightweight and optimized for low-bandwidth, high-latency networks; YuCurl uses MQTT to facilitate efficient data transmission between devices in IoT applications.
- LDAP, LDAPS: For directory services, YuCurl utilizes the Lightweight Directory Access Protocol to access and manage distributed directory information; LDAPS secures these interactions with SSL/TLS encryption.
- RTMP, RTMPS: The Real-Time Messaging Protocol allows YuCurl to stream audio, video, and data in real-time over the internet; RTMPS adds security through SSL/TLS encryption to protect streaming content.
- RTSP: The Real-Time Streaming Protocol is used for controlling streaming media servers and facilitating the delivery of real-time data streams.
- TELNET: With Telnet support, YuCurl allows users to establish connections to remote computers over TCP/IP networks for command-line interface access and management.
- GOPHER, GOPHERS: The Gopher protocol enables users to navigate a structured hierarchy of menus and text files; YuCurl makes it easy to retrieve documents from these Gopher servers.
- TFTP: The Trivial File Transfer Protocol is simplified for quick file transfers without complex authentication requirements; YuCurl supports TFTP for straightforward data exchange.
- DICT: For accessing remote dictionaries, YuCurl utilizes the Dictionary protocol to enable users to look up word definitions and translations through a consistent interface.
- FILE: The FILE protocol allows YuCurl to facilitate local file access seamlessly, enabling users to read from and write to files directly on their local filesystem.
- SMB, SMBS: For file sharing across networks, YuCurl implements the Server Message Block protocol; SMBS enhances these capabilities by adding security features through SSL/TLS encryption.
Features Selection
- Automatic decompression of Brotli, deflate, gzip, and Zstandard “Content-Encoding”: YuCurl automatically handles the decompression of various content encodings, including Brotli, deflate, gzip, and Zstandard, which optimizes data transfer by reducing payload size and improving loading times for web resources.
- DNS-over-HTTPS (DoH) encrypts and authenticates DNS queries using HTTPS, enhancing privacy and security by preventing eavesdropping and tampering with DNS requests, thus ensuring that your application's Internet activities remain confidential.
- HTTP Strict Transport Security (HSTS): YuCurl supports HSTS, which enforces secure connections to servers by instructing applications to only use HTTPS for future requests, thereby mitigating risks associated with man-in-the-middle attacks.
- IPv6: With support for IPv6, YuCurl can handle network requests over the newer IP addressing system, ensuring compatibility with modern networks and devices that utilize IPv6 for communication.
- Persistent connections: YuCurl supports persistent connections (also known as keep-alive), which allow multiple requests and responses to be sent over a single TCP connection, reducing latency and improving performance for web applications.
- Proxy support: The library includes robust proxy support, enabling users to route their requests through various types of proxies (HTTP, HTTPS, SOCKS) for enhanced privacy, security, or to bypass geographical restrictions.
- SOCKS 4 + 5: YuCurl supports both SOCKS4 and SOCKS5 protocols, allowing for versatile proxy configurations that can handle a wide range of network traffic while providing additional layers of anonymity and security during data transmission.
A comprehensive list of libcurl features is here: https://curl.se/docs/features.html.
Requirements
YuCurl needs YuOpenSSL-3.3 to enable secure data transmission through encryption and SSL/TLS support, ensuring the integrity and confidentiality of communications across its various protocols. Otherwise, it has no further requirements.
Curl Bugs Found During YuCurl Development
The following bugs in Curl were identified during YuCurl development. Fixes are in place for YuCurl and are tested to work as expected: