@Suger,
Possible de générer des pages web avec C++, c'est le principe du CGI.
Faut penser à balancer les en-têtes (header), chose que PHP fait automatiquement.
Et sinon, c'est à peu près la même chose ...
Sauf qu'il y a qq facilités en moins, dont les outils de connectivité aux BDD qui ne sont pas intégrés. Mais y'a des modules, en C++ pour Oracle par expl il y a ocicpp. Pour MySQL ça doit exister aussi.
@Blue,
Ton serveur eDonkey ... il est hébergé localement donc.
Le problème, c'est que je ne sais pas bien ce qu'on peut faire avec un serveur eDonkey qui tourne en local.
Le code est proprio il me semble, sinon ça aurait été possible d'ajouter une fonctionnalité de statistique (qui est peut être déjà fournie, après tout) et je doute qu'on puisse développer des greffons sur le serveur (pas d'API fournie).
Donc il faudrait s'interposer entre les clients internet, et le(s) serveur(s) eDonkey de l'intranet. Ce qui revient à dire qu'on écoute les connexions qui se font.
Pour ça, je vois 2 méthodes :
- Soit tu interceptes chaque communication, tu les analyses, puis tu les relayes vers le bon serveur.
- Soit tu analyses le traffic qui passe sur ton interface réseau (située en amont du ou des serveur(s) edonkey), et tu filtres le traffic eDonkey qui passe par certains ports.
Dans le premier cas, t'assumes un peu le rôle d'un routeur. Dans le second, t'assumes plutôt celui d'un sniffer.
J'ai un peu de mal à voir laquelle serait la mieux. Niveau facilité d'implémentation, et niveau consommation en ressources CPU, je pense que la première (celle du "routeur") s'en sortirait mieux, mais j'en suis pas certain ...
Je ne sais pas comment on peut écouter une interface réseau sur un port précis, car je crois qu'un sniffer écoute tout le traffic et qu'il est ensuite filtré. Dans le cas du "routeur", tu serais en "listening" (en écoute) sur un ou des ports précis, et tout le reste du traffic ne serait pas à analyser.
---
Imagineons donc que tu choisisses de développer ce "routeur".
En pratique, ça donnerait ça :
Tu aurais un réseau local.
Ton ordinateur avec l'application que tu développes est l'ordi A.
Les ordis B, C, et D ont un serveur eDonkey, ils tournent sur les ports 1111, 2222 et 3333.
Les requêtes doivent parvenir à ton ordi A, donc tu t'arranges pour que ton vrai routeur redirige le traffic des ports 1111, 2222, 3333 vers A (plutôt que vers B, C et D).
Tu peux avoir 3 instances de ton même logiciel qui tournent sur un port différent, ou alors tu peux le multithreader pour écouter sur plusieurs ports.
T'étudies le protocole eDonkey, par le code source d'eMule par expl.
Tu regardes quelle forme a la requête de téléchargement de fichiers.
Tu te construis un "parser" de requête, soit avec des expressions régulières, soit plus rudimentaire... tu verras bien selon la tête du protocole et de ce que tu sais faire.
Tu travailles sur le flux que tu reçois pour récupérer les infos qui vont bien et pour faire les statistiques.
Pour chaque socket où tu écoutes, tu recopies le flux vers le bon serveur. (Tu peux avoir une "table de routage" que tu maintiendrais à la main, selon le nombre de serveurs eDonkey à écouter).
Tu stoques les résultats de tes statistiques comme tu veux (dans un fichier, ou dans une base de données ... j'conseillerai plutôt une base de données).
Puis tu peux faire une seconde application, cette fois ci beaucoup plus simple, qui jouera le rôle de CGI. Un simple fichier C++ qui se connectera à la base de données, et qui mettra en forme la page de statistiques à partir des données récupérées.
---
J'ai peut être mal compris ce que tu demandais. Ca me paraît réalisable ... et même si la méthode utilisée pour intercepter le traffic me dérange un poil, je crois qu'il n'y a pas d'autre solution à moins d'avoir un serveur eDonkey opensource ou avec une API qui va bien.