uhub, prononcé « you hub », est un serveur de hub Direct Connect open source créé par Jan Vidar Krey. Son développement remonte à 2007 et le projet est publié sous la GNU General Public License version 3. Écrit en C, il est conçu pour les communautés utilisant des clients compatibles ADC tels que DC++, AirDC++ et d’autres applications Direct Connect modernes.
Un hub est le point de rencontre d’une communauté Direct Connect. uhub suit les utilisateurs connectés, relaie le chat public et privé, distribue les recherches et leurs résultats, applique les règles d’accès et aide les clients à établir des connexions directes. Les fichiers ne traversent pas uhub. Lorsque deux utilisateurs décident d’échanger un fichier, le transfert a normalement lieu directement entre leurs clients. Cette séparation permet à un serveur relativement petit de coordonner bien plus d’activité de partage qu’il ne pourrait relayer lui-même.
Cela vaut aussi pour les clients web ou hébergés sur serveur. Relier un client web à uhub peut fournir le chat, la liste d’utilisateurs et la recherche, sans transformer automatiquement les transferts pair à pair en téléchargements web ordinaires. Le client web ou son service de soutien doit toujours réaliser le transfert client à client. uhub coordonne les utilisateurs et leurs demandes de connexion ; ce n’est ni un stockage de fichiers, ni un proxy de téléchargement, ni un serveur web.
uhub repose sur un petit cœur événementiel utilisant peu de mémoire. Un hub privé peut fonctionner sur un matériel modeste, y compris de petits systèmes Linux ou des appareils embarqués, tandis que des installations plus grandes peuvent servir des milliers d’utilisateurs sur des serveurs plus puissants. Il prend en charge IPv4 et IPv6, les connexions chiffrées, les comptes enregistrés, les permissions d’opérateur, les bannissements, la protection contre le flood, les plugins facultatifs, la supervision et plusieurs moyens d’agrandir un hub.
Le projet a évolué par étapes. La version 0.5.0 a été publiée en 2014 sous forme de source portable pour Linux, macOS, BSD et Solaris. Le développement s’est accéléré à nouveau en 2026. La version 0.6.0 a modernisé les exigences TLS et l’interface de plugins. La 0.7.0 a ajouté la supervision, le fonctionnement multiprocessus et le lien de plusieurs installations uhub dans un hub logique. La 0.7.1 a amélioré les commandes utilisateur, l’authentification, les limites de connexions et les contrôles de sécurité. La 0.8.0 a ajouté les plugins JavaScript isolés, un chat plus riche, une modération étendue, des outils de compte en libre-service, une détection plus rapide des connexions mortes et le retour des compilations Windows.
Le projet officiel décrit encore uhub comme un logiciel de qualité alpha, et non comme une plate-forme de service critique. Ce n’est pas une simple démonstration, mais l’opérateur doit tester la version choisie, les plugins, les clients, les sauvegardes et la procédure de mise à niveau avant d’en dépendre pour une communauté publique importante.
Fonctionnement ADC Et ADCS
uhub dessert les communautés qui utilisent ADC, le protocole Direct Connect moderne. Les utilisateurs se connectent avec un client compatible ADC et saisissent une adresse commençant par adc:// ou adcs://. ADC fournit la connexion normale au hub ; ADCS ajoute le chiffrement TLS entre client et hub.
Une connexion ADCS chiffrée protège l’authentification de compte, le chat, les recherches, les informations utilisateur et les autres échanges avec le hub. Elle ne chiffre pas un fichier en le faisant passer par uhub. Les transferts directs restent des connexions distinctes entre clients et dépendent de leurs possibilités et réglages.
L’opérateur peut autoriser les connexions chiffrées et non chiffrées ou exiger ADCS. Les versions actuelles de uhub prennent en charge TLS 1.2 et TLS 1.3 avec OpenSSL ou LibreSSL. L’adresse publiée, le nom d’hôte, le certificat et le port d’écoute doivent désigner le même service. Un serveur peut accepter une connexion réseau de base puis refuser la négociation TLS, la connexion, l’authentification de compte ou la négociation ADC.
uhub prend en charge IPv4 et IPv6 et peut préférer IPv6 lorsqu’il est disponible. Une communauté peut ainsi servir les deux types de réseaux, bien que les transferts directs dépendent toujours de la capacité des deux clients à établir une route compatible. uhub coordonne aussi les connexions liées au NAT, mais ne peut pas contourner le pare-feu, le routeur, les restrictions du fournisseur ou un client mal configuré.
Un opérateur public peut fournir un nom de hub, une description, un propriétaire, un site web, un nom de réseau et une adresse publiée. uhub peut aussi s’annoncer auprès d’un service d’enregistrement hublist compatible. Les hubs privés peuvent laisser l’enregistrement désactivé et n’accepter que les utilisateurs invités ou enregistrés.
Exploitation Et Extensions
- Petites Et Grandes Communautés : L’installation par défaut s’exécute comme un processus événementiel et convient à de nombreux hubs privés et publics. Les opérateurs peuvent choisir le nombre maximal d’utilisateurs, décider si les invités sont autorisés, exiger des comptes enregistrés, limiter les connexions provenant d’une même adresse et définir des règles pour le partage minimal, les slots d’envoi, les termes de recherche ou le nombre d’autres hubs auxquels un utilisateur peut être connecté.
- Comptes Et Modération : Les plugins d’authentification peuvent fournir des comptes enregistrés aux membres, opérateurs et administrateurs. Selon les plugins activés, les utilisateurs peuvent être enregistrés par un opérateur ou autorisés à s’enregistrer eux-mêmes. Les fonctions de modération comprennent des restrictions par pseudo, CID et IP, des bans temporaires ou permanents, des motifs de ban, des restrictions de chat, des contrôles de flood, des informations sur les utilisateurs récents, la gestion des sujets et des commandes d’opérateur. La version 0.8.0 a déplacé les comptes enregistrés de l’ancien fichier de contrôle d’accès vers des plugins d’authentification. Les installations existantes doivent donc migrer ces enregistrements lors d’une mise à niveau.
- Chat Et Fonctions Communautaires : uhub peut conserver une quantité configurable d’historique récent du chat principal, afficher des messages de bienvenue, publier les règles du hub, exposer des commandes dans les clients compatibles et restreindre le chat ou les messages privés selon le niveau de compte. La version 0.8.0 a ajouté la prise en charge de l’extension de texte enrichi RTF0. Les clients qui la prennent en charge peuvent afficher du chat, des messages et des images distantes formatés, tandis que les anciens clients continuent à recevoir du texte brut. Les opérateurs qui ne souhaitent pas que les clients chargent des images depuis des URL externes peuvent désactiver cette fonction.
- Utiliser Plusieurs Cœurs CPU : uhub fonctionne par défaut en mode monoprocessus. Une installation plus grande peut définir
workerssur une valeur supérieure à un afin que plusieurs processus workers partagent le même port d’écoute et apparaissent aux utilisateurs comme un seul hub. Définirworkers=0sélectionne un worker pour chaque cœur CPU disponible. Cela est utile lorsque le chiffrement ou un grand nombre de connexions fait d’un processus le facteur limitant. Les utilisateurs n’ont pas besoin d’adresses distinctes pour chaque worker. - Lier Des Hubs Entre Machines : La fédération relie des installations uhub distinctes et les fait apparaître comme une communauté plus grande. Les utilisateurs connectés à des nœuds différents peuvent partager une même liste d’utilisateurs visible, discuter entre eux, échanger des messages privés, chercher, recevoir des résultats de recherche et établir des transferts directs au-delà des frontières entre nœuds. Les sujets et les bans actifs peuvent aussi être propagés. La fédération est toujours documentée comme expérimentale et destinée à des systèmes de confiance. Un opérateur doit en comprendre les limites, tester le comportement lors des reconnexions et des séparations de réseau, et protéger les identifiants partagés utilisés par les serveurs liés.
- Plugins : uhub conserve de nombreuses fonctions facultatives hors de son cœur et les charge au moyen de plugins. Les plugins fournis peuvent assurer l’authentification SQLite ou basée sur des fichiers, la journalisation, l’historique de chat, les messages de bienvenue, les commandes de sujet, l’auto-enregistrement, les réponses au flood, les menus de commandes et le chat restreint. Les plugins C natifs ont un accès étendu au hub en cours d’exécution et doivent correspondre à l’API de plugins de la version installée. La version 0.8.0 a aussi ajouté des plugins JavaScript par QuickJS. Les extensions JavaScript s’exécutent dans un environnement restreint, sans accès ordinaire au système de fichiers ni au réseau. Elles conviennent donc à de nombreuses commandes personnalisées et fonctions basées sur les événements sans compiler de code C.
- Supervision : La version 0.7.0 a ajouté un endpoint de métriques facultatif compatible avec Prometheus. Il peut signaler les utilisateurs connectés, les connexions, le trafic de hub transféré, le nombre de messages et le temps de la boucle d’événements. L’endpoint est désactivé par défaut et nécessite un bearer token. Les opérateurs doivent y accéder par HTTPS, en loopback ou sur un réseau de gestion de confiance, car envoyer le token en HTTP non chiffré peut l’exposer.
- Récupération Des Connexions : Les versions actuelles vérifient périodiquement les connexions inactives afin de retirer rapidement les utilisateurs dont la session réseau a disparu sans déconnexion propre. Cela réduit les cas dans lesquels un client qui se reconnecte est refusé parce que le hub croit encore son ancienne session active. Cette fonction améliore la récupération après des interruptions de Wi-Fi, NAT, pare-feu ou client sans modifier le traitement des utilisateurs actifs ordinaires.
- Installation Et Plates-Formes : Le dépôt officiel fournit le code source et les paquets de release. La documentation actuelle du projet couvre Linux, macOS, BSD et Windows, avec des paquets pour les systèmes x86-64 et ARM64 courants. Les utilisateurs Debian et Ubuntu peuvent aussi utiliser le dépôt de paquets maintenu par la communauté et lié par le projet. Les opérateurs qui compilent depuis les sources ont besoin d’un compilateur C actuel, de CMake, des fichiers de développement SQLite et d’une version prise en charge d’OpenSSL ou LibreSSL.
- Configuration Et Sauvegardes : Les réglages principaux sont stockés dans
uhub.conf, tandis que les données de comptes, règles d’accès, plugins, certificats et fichiers associés peuvent être stockés séparément. Une sauvegarde complète doit tous les inclure, ainsi que la release installée, la définition de service et les versions des plugins. Avant une mise à niveau, testez la nouvelle version sur un autre port ou système et confirmez la connexion, les comptes, la modération, le chat, les recherches, les plugins, TLS, la supervision, le comportement de redémarrage et la compatibilité des clients.
Ressources Officielles uhub
Le site officiel de uhub, la documentation, les archives d’actualités, le dépôt, les releases et le suivi d’incidents sont les sources les plus fiables. Utilisez la documentation correspondant à la version installée, car la configuration, l’authentification, les plugins, la modération et le passage à l’échelle ont fortement changé dans les séries 0.6, 0.7 et 0.8.
Le dépôt GitHub contient le source, des exemples de configuration et de plugins, les instructions de compilation, les tests et l’historique complet. Le site documentaire convient mieux à l’installation ou à l’exploitation sans lecture du source. Déclarez les défauts reproductibles et demandes de fonctions dans le suivi avec la release exacte, le système, la configuration, les plugins, les journaux et les étapes de reproduction.
| Libellé | Lien | Description |
|---|---|---|
| Site Du Projet uhub | https://www.uhub.org/ | Présentation officielle de ce que fait uhub, de son public visé, des fonctions prises en charge, des téléchargements et des liens actuels du projet. |
| Documentation uhub | https://www.uhub.org/doc/ | Index de documentation pour l’installation, la configuration, TLS, les plugins, la supervision, la liaison de hubs, l’architecture et le développement. |
| Premiers Pas | https://www.uhub.org/doc/getstarted.html | Introduction étape par étape pour compiler ou installer uhub, créer une configuration, démarrer le service, connecter un client, enregistrer des utilisateurs et activer plusieurs workers. |
| Référence De Configuration | https://www.uhub.org/doc/config.html | Référence consultable pour chaque réglage pris en charge, y compris les écouteurs, l’identité du hub, les limites d’utilisateurs, les contrôles de flood, TLS, la supervision, les fichiers, workers et la fédération. |
| Liaison De Hubs Et Fédération | https://www.uhub.org/doc/linking.html | Explique comment un hub peut utiliser plusieurs cœurs CPU et comment des instances uhub distinctes peuvent être connectées entre machines, y compris les limites actuelles et les considérations de sécurité. |
| Documentation Des Plugins | https://www.uhub.org/doc/plugins/index.html | Index des plugins fournis pour l’authentification, la journalisation, l’historique de chat, les messages de bienvenue, la modération, l’enregistrement et d’autres comportements facultatifs. |
| Documentation TLS | https://www.uhub.org/doc/config-ssl.html | Instructions pour configurer les certificats et les connexions ADCS chiffrées avec OpenSSL ou LibreSSL. |
| Documentation De Supervision | https://www.uhub.org/doc/metrics.html | Explique l’endpoint Prometheus facultatif, les statistiques disponibles, le token d’authentification et l’accès sécurisé recommandé. |
| Actualités Du Projet Et Historique Des Releases | https://www.uhub.org/news.html | Annonces de projet datées décrivant les changements majeurs introduits dans uhub 0.5, 0.6, 0.7 et 0.8. |
| Dépôt Source uhub | https://github.com/janvidar/uhub | Code source officiel, instructions de compilation, exemple de configuration, plugins, tests, documentation technique, licence et informations sur la contribution. |
| Releases uhub | https://github.com/janvidar/uhub/releases | Paquets de release versionnés et notes détaillées décrivant les nouvelles fonctions, les exigences de mise à niveau, les correctifs de sécurité et les changements de compatibilité. |
| Suivi D’Incidents uhub | https://github.com/janvidar/uhub/issues | Emplacement officiel pour signaler des défauts reproductibles, demander des fonctions et examiner les problèmes connus du projet. |
| uhub Dev Central | adcs://adc.uhub.org:1511 | Configuration uhub, plugins, comportement ADC, interopérabilité et versions de développement actuelles. |
Commentaires
Aucun Commentaire Pour Le Moment. Lancez La Discussion.