NAVIGATION : INDEX DU FORUM / ACCUEIL DE P2PFR / WIKI

Merci de faire une recherche avant de poster :)

Nous sommes actuellement le 28 Mars 2024 12:44

Heures au format UTC + 1 heure [ Heure d’été ]




Forum verrouillé Ce sujet est verrouillé, vous ne pouvez rédiger ou éditer aucun message.  [ 5 messages ] 
Auteur Message
 Sujet du message: Application c++ pour emule
MessagePublié: 11 Mai 2006 11:19 
Bonjour,

Dans le cadre de ma formation, je dois réalisé une application en c++ qui est capable de restituer sous forme de site internet, une liste des morceaux mp3 les plus telechargés sur un ou plusieurs serveurs edonkey. Un peu comme une sorte de TOP 50... Je ne sais pas par quel bout commencer, qqun peut m'aider ???

merci d'avance...

Mister Blue


Rapporter ce message
Haut
  
Répondre en citant  
 Sujet du message:
MessagePublié: 11 Mai 2006 15:31 
Hors-ligne
Abbé S.D.
Avatar de l’utilisateur

Inscrit le: 03 Juin 2005 11:45
Messages: 3440
Localisation: Darlington County
En c++ ? C'est plutôt du php qu'il faudrait, là, non ?

Enfin, en gros, il te faut quatre modules :

Un tableau tout simple, contenant les référents des fichiers et un compteur.

Un qui monitore les téléchargements et incrémente le compteur, avec un filtre pour ne prendre en compte que le mp3.

Un troisième qui trie les résultats, sélectionne les plus utilisés, génère la page web et l'uploade (via un execlp sur ftp)

Le moniteur doit évidemment tourner en démon...

_________________
Mes 2 cents qui n'en valent même pas un demi.


Rapporter ce message
Haut
 Profil Site Internet 
Répondre en citant  
 Sujet du message:
MessagePublié: 12 Mai 2006 10:41 
@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.


Rapporter ce message
Haut
  
Répondre en citant  
 Sujet du message:
MessagePublié: 12 Mai 2006 10:49 
Je rajoute une chose ...

Pour le CGI, finalement, je crois que ça n'est pas vers ça qu'il faut s'orienter.
Ca n'est pas un site web que tu dois faire, mais une génération de fichier html (qui peut être réutilisé par la suite dans un site web), je pense.

Ca te dispenserait de chercher à faire des CGI, ainsi que de l'usage d'une base de données.

Ca risque d'être un peu le bordel cela dit pour maintenir la liste des chansons si tu n'utilises pas qqch de similaires aux BDD dans ton application.


Rapporter ce message
Haut
  
Répondre en citant  
 Sujet du message:
MessagePublié: 12 Mai 2006 12:09 
Hors-ligne
Abbé S.D.
Avatar de l’utilisateur

Inscrit le: 03 Juin 2005 11:45
Messages: 3440
Localisation: Darlington County
Vu que ce qu'il y a à faire n'est pas très complexe, je pense que pour la liste des chansons + le compteur, un fichier xml le fera.

Pour la génération de pages html, je sais que c'est possible, c'est juste que ça me paraît pas la solution la plus simple. Mais en fait, j'avoue mon erreur, j'étais parti avec l'idée d'un site de liens, pas d'un serveur edonkey...

C'est faisable, oui, mais je crois qu'on a dû mal comprendre, parce que tout ça me paraît un peu compliqué dans le cadre d'une formation.

Perso, pour suivre les connexions, j'utiliserais plutôt un appel extérieur à tethereal ou à tcpdump ou une réutilisation de leurs bibliothèques (si t'es en GPL, bien sûr).

Attention, tethereal est connu comme étant un gros pourvoyeur de failles...

_________________
Mes 2 cents qui n'en valent même pas un demi.


Rapporter ce message
Haut
 Profil Site Internet 
Répondre en citant  
Afficher les messages publiés depuis:  Trier par  
Forum verrouillé Ce sujet est verrouillé, vous ne pouvez rédiger ou éditer aucun message.  [ 5 messages ] 

Heures au format UTC + 1 heure [ Heure d’été ]


Qui est en ligne ?

Utilisateur(s) parcourant actuellement ce forum : Aucun utilisateur inscrit et 8 invité(s)


Vous ne pouvez pas publier de nouveaux sujets dans ce forum
Vous ne pouvez pas répondre aux sujets dans ce forum
Vous ne pouvez pas éditer vos messages dans ce forum
Vous ne pouvez pas supprimer vos messages dans ce forum
Vous ne pouvez pas insérer de pièces jointes dans ce forum

Rechercher pour:
Aller vers:  
cron
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Traduction réalisée par Maël Soucaze © 2010 phpBB.fr