Indy est une bibliothèque de communication client/serveur open source prenant en charge les sockets TCP/UDP/RAW ainsi que plus de 100 protocoles de haut niveau, dont SMTP, POP3, IMAP, NNTP, HTTP, FTP et bien d'autres. Indy est écrit en Delphi mais est également disponible pour C++Builder et FreePascal. sgcWebSockets utilise Indy comme base pour certains composants, et les différentes éditions de sgcWebSockets font un usage différent de la bibliothèque Indy.
sgcWebSockets prend en charge des protocoles comme HTTP/2 qui nécessitent l'utilisation d'ALPN, peut utiliser TLS 1.3 avec openSSL 1.1.1 ou openSSL 3.0.0... toutes ces fonctionnalités ne sont pas prises en charge par la bibliothèque Indy standard, donc l'édition sgcWebSockets Enterprise inclut une bibliothèque Indy personnalisée qui prend en charge ces fonctionnalités. Pour éviter de désinstaller la bibliothèque Indy standard de l'IDE, les fichiers Indy requis sont renommés en ajoutant le préfixe « sgc », par exemple : l'unité « IdGlobal » est renommée « sgcIdGlobal ». Ainsi, les deux versions peuvent coexister sans problème.
Retrouvez ci-dessous la version Indy utilisée par chaque édition de sgcWebSockets :
| Édition sgcWebSockets | Version Indy |
| STANDARD | Standard |
| PROFESSIONAL | Standard |
| ENTERPRISE | Personnalisé |
Les clients ayant des licences « Registered », qui sont d'anciennes licences antérieures à la division du package sgcWebSockets, trouveront les versions suivantes du package sgcWebSockets :
| Édition sgcWebSockets | Version Indy |
| sgcWebSockets | Standard |
| sgcWebSockets min | Standard |
| sgcWebSockets min Indy* | Personnalisé |
*Le sgcWebSockets_min_indy est identique à l'édition Enterprise de sgcWebSockets.
L'utilisation de la version Indy personnalisée est définie dans le fichier "sgcVer.inc" situé dans le dossier source. Il existe une directive de compilation appelée "SGC_CUSTOM_INDY" qui active ou désactive l'utilisation de cette version Indy. Si vous disposez d'une édition Enterprise et souhaitez désactiver l'utilisation du Indy personnalisé, supprimez simplement la directive de compilation suivante :
{$DEFINE SGC_CUSTOM_INDY}
Bien sûr, si vous activez SGC_CUSTOM_INDY mais que vous n'avez pas dans le dossier source les unités de la version Indy personnalisée requises, cette définition de compilateur ne fonctionnera pas.
L'utilisation de la version Indy personnalisée n'est pas limitée aux composants sgcWebSockets. Certains clients souhaitent utiliser les nouvelles fonctionnalités de cette version Indy personnalisée dans les composants Indy standard comme SMTP par exemple, afin de pouvoir utiliser TLS 1.3 lors de l'envoi d'e-mails, l'utilisation de serveurs FTP, etc. L'édition eSeGeCe ALL-ACCESS fournit un package Indy complet supplémentaire avec toutes ces fonctionnalités. Ce package, appelé « package sgcIndy », comprend la bibliothèque Indy complète avec prise en charge d'openSSL 1.1.1 et openSSL 3.0.0. Vous devez d'abord désinstaller votre bibliothèque Indy actuelle installée dans votre IDE, puis installer cette version ; le processus d'installation du package sgcIndy est exactement le même que pour toute bibliothèque Indy (ici, les unités ne sont pas renommées).
Lorsque vous souhaitez utiliser les bibliothèques openSSL, définissez simplement la variable globale OPENSSL_API_VERSION sur la version OpenSSL API souhaitée avant de charger les bibliothèques OpenSSL. Cette variable globale se trouve dans l'unité IdSSLOpenSSLHeaders.
Exemple : pour utiliser les bibliothèques openSSL 1.1.1
OPENSSL_API_VERSION := opSSL_1_1;
Lors de l'utilisation de eSeGeCe ALL-ACCESS et du package sgcIndy dans la même application, les sources peuvent être dupliquées car la version Enterprise de sgcWebSockets utilise une version Indy personnalisée avec les unités Indy renommées. Cela signifie que, par exemple, des unités comme sgcIdGlobal.pas et IdGlobal.pas seront compilées dans la même application (la première est utilisée lors de l'utilisation de tout composant du package Enterprise sgcWebSockets et la seconde lors de l'utilisation de tout composant du package sgcIndy, comme ftp, smtp...).
Pour éviter ce comportement, le package sgcWebSockets peut être configuré pour utiliser la version sgcIndy installée et continuer à utiliser tous les composants. Pour ce faire, suivez les instructions ci-dessous :
1. Ouvrez le fichier sgcVer.inc, situé dans le dossier Source du paquet sgcWebSockets.
2. Désactivez la directive de compilation : SGC_CUSTOM_INDY. Cette option indique au compilateur que les fichiers commençant par sgcId*.pas existent et doivent être utilisés lors de la compilation du package sgcWebSockets Enterprise.
3. Activez le compilateur suivant : SGC_INDY_LIB. Cette option indique au compilateur que le package sgcIndy est installé et doit être utilisé lors de la compilation du package.
{$DEFINE SGC_INDY_LIB}
Avec la configuration précédente, le package Enterprise sgcWebSockets utilisera le package sgcIndy installé et toutes les fonctionnalités qui font appel à ce package (comme http/2, IOCP, openSSL 3.0...) seront activées.