PSR SE2a4 2022/2023 G8 : Différence entre versions
De Wiki d'activités IMA
(→PARTIE 3: Tests) |
(→PARTIE 4: Evaluation) |
||
(13 révisions intermédiaires par le même utilisateur non affichées) | |||
Ligne 1 : | Ligne 1 : | ||
− | =''INTRODUCTION''= | + | =='''INTRODUCTION'''== |
*Connexion à la machine virtuelle :<br> | *Connexion à la machine virtuelle :<br> | ||
''ssh root@193.48.57.180''<br> | ''ssh root@193.48.57.180''<br> | ||
Ligne 10 : | Ligne 10 : | ||
[[file:Projet.zip]]<br> | [[file:Projet.zip]]<br> | ||
− | =''PARTIE 1: SMTPin''= | + | =='''PARTIE 1: SMTPin'''== |
− | * Dans le fichier "in.c", nous nous assurons du bon fonctionnement de la fonction de gestion de courriels. => Ajout | + | * Dans le fichier "in.c", nous nous assurons du bon fonctionnement de la fonction de gestion de courriels. => Ajout <code>else{break;}</code> pour arrêter la boucle.<br> |
<br> | <br> | ||
− | * Supprimer le fichier "mx.c". Il est inutile de garder le fichier car ce dernier est | + | * Supprimer le fichier "mx.c". Il est inutile de garder le fichier car ce dernier est présent dans la librairie Réseau.<br> |
<br> | <br> | ||
* Pour Debugger SMTPin, nous avons ajouté des printf pour le suivi.<br> | * Pour Debugger SMTPin, nous avons ajouté des printf pour le suivi.<br> | ||
Ligne 21 : | Ligne 21 : | ||
''printf("code =%d\n", code);''<br> | ''printf("code =%d\n", code);''<br> | ||
''#endif''<br> | ''#endif''<br> | ||
− | * Ce qui nous permet de retrouver : ACCUEIL_CODE 220 / CONTINUE_DATA_CODE 354 / SUCCES_QUIT_CODE 250 et de les modifier dans les librairies ("smptp_private.h").<br> | + | * Ce qui nous permet de retrouver : <code>ACCUEIL_CODE 220 / CONTINUE_DATA_CODE 354 / SUCCES_QUIT_CODE 250</code> et de les modifier dans les librairies ("smptp_private.h").<br> |
+ | <br> | ||
* Ne pas oublier de changer les variables globales dans "smtp.c" | * Ne pas oublier de changer les variables globales dans "smtp.c" | ||
− | =''PARTIE 2: SMTPout''= | + | =='''PARTIE 2: SMTPout'''== |
* Dans le fichier "out.c", nous déplaçons Maildir/tmp dans Maildir/new<br> | * Dans le fichier "out.c", nous déplaçons Maildir/tmp dans Maildir/new<br> | ||
''char nouveau_fichier[MAX_CHEMIN];''<br> | ''char nouveau_fichier[MAX_CHEMIN];''<br> | ||
Ligne 32 : | Ligne 33 : | ||
* Il faut lancer les serveurs SMTPin et SMTPout sur différents ports (!= du port 25) => Nous configurons SMTPout en eth0 et SMTPin en loopback.<br> | * Il faut lancer les serveurs SMTPin et SMTPout sur différents ports (!= du port 25) => Nous configurons SMTPout en eth0 et SMTPin en loopback.<br> | ||
<br> | <br> | ||
+ | Le serveur SMTPin était déjà en interface loopback, nous devons donc modifier l'interface du serveur SMTPout.<br> | ||
Pour ce faire :<br> | Pour ce faire :<br> | ||
* Dans "SMPTout/args.h", nous ajoutons à la structure smtp_config une variable interface.<br> | * Dans "SMPTout/args.h", nous ajoutons à la structure smtp_config une variable interface.<br> | ||
Ligne 44 : | Ligne 46 : | ||
''else if(config.interface!=NULL) interface = config.interface;''<br> | ''else if(config.interface!=NULL) interface = config.interface;''<br> | ||
− | =''PARTIE 3: Tests''= | + | =='''PARTIE 3: Tests'''== |
− | *Avant tout, il faut | + | *Avant tout, il faut <code>make clean debug</code> à la racine du projet.<br> |
<br> | <br> | ||
*Il faut aussi lancer les serveurs SMTPin et SMTPout dans leurs dossiers spécifiques:<br> | *Il faut aussi lancer les serveurs SMTPin et SMTPout dans leurs dossiers spécifiques:<br> | ||
Ligne 79 : | Ligne 81 : | ||
<br> | <br> | ||
<br> | <br> | ||
+ | *Nous pouvons envoyer des mails de la VM sur la boite polytech mais nous ne pouvons recevoir de mails que de la machine polytech (en <code>nc 193.48.57.180 25</code>). | ||
+ | <br> | ||
+ | =='''PARTIE 4: Evaluation'''== | ||
+ | <br> | ||
+ | * Ajout de la commande '''HELP''': Une fois appellée, affichage des différentes commandes dans la console client avec le numéro de succes de '''HELP'''.<br> | ||
<br> | <br> | ||
− | * | + | '' static int gestion_HELP(char *ligne, FILE *client,struct courriel *donnees){''<br> |
+ | '' char cmd[MAX_LIGNE];''<br> | ||
+ | '' char arg[MAX_LIGNE];''<br> | ||
+ | '' char suite[MAX_LIGNE];''<br> | ||
+ | '' int statut=sscanf(ligne,"%4s %s %s",cmd,arg,suite);''<br> | ||
+ | '' if(statut!=1){''<br> | ||
+ | '' if(fprintf(client,"%03d %s\r\n",ERREUR_HELP_CODE,ERREUR_HELP_TEXTE)<0) return GESTION_STOP;''<br> | ||
+ | '' return GESTION_ERREUR;''<br> | ||
+ | '' }''<br> | ||
+ | '' if(fprintf(client,"%03d %s\r\n",SUCCES_HELP_CODE,SUCCES_HELP_TEXTE)<0) return GESTION_STOP;''<br> | ||
+ | '' return GESTION_STOP;''<br> | ||
+ | '' }''<br> |
Version actuelle datée du 14 juin 2023 à 18:50
Sommaire
INTRODUCTION
- Connexion à la machine virtuelle :
ssh root@193.48.57.180
- Installation du compilateur:
apt update
apt install gcc
- Ci-joint la dernière version du projet:
PARTIE 1: SMTPin
- Dans le fichier "in.c", nous nous assurons du bon fonctionnement de la fonction de gestion de courriels. => Ajout
else{break;}
pour arrêter la boucle.
- Supprimer le fichier "mx.c". Il est inutile de garder le fichier car ce dernier est présent dans la librairie Réseau.
- Pour Debugger SMTPin, nous avons ajouté des printf pour le suivi.
#ifdef DEVERMINE
printf("statut =%d\n", statut);
printf("succes =%d\n", succes);
printf("code =%d\n", code);
#endif
- Ce qui nous permet de retrouver :
ACCUEIL_CODE 220 / CONTINUE_DATA_CODE 354 / SUCCES_QUIT_CODE 250
et de les modifier dans les librairies ("smptp_private.h").
- Ne pas oublier de changer les variables globales dans "smtp.c"
PARTIE 2: SMTPout
- Dans le fichier "out.c", nous déplaçons Maildir/tmp dans Maildir/new
char nouveau_fichier[MAX_CHEMIN];
sprintf(nouveau_fichier,"%s/%s/%s/%Id_%010d",dossier,id,MAILDIR_NEW,capt,pid,messages);
rename(fichier, nouveau_fichier);
- Il faut lancer les serveurs SMTPin et SMTPout sur différents ports (!= du port 25) => Nous configurons SMTPout en eth0 et SMTPin en loopback.
Le serveur SMTPin était déjà en interface loopback, nous devons donc modifier l'interface du serveur SMTPout.
Pour ce faire :
- Dans "SMPTout/args.h", nous ajoutons à la structure smtp_config une variable interface.
char interface[CONFIG_MAX_INTERFACE];
- Dans "SMPTout/args.c", ajouter "interfaces" dans la structure options:
{"interfaces", required_argument,0, 'i'},
- Dans "SMPTout/args.c", ajouter le case interface dans le switch:
case 'i':
strncpy(config->interface,optarg,sizeof(config->interface)-1);
break;
- Dans "SMTPout/out.c":
else if(config.interface!=NULL) interface = config.interface;
PARTIE 3: Tests
- Avant tout, il faut
make clean debug
à la racine du projet.
- Il faut aussi lancer les serveurs SMTPin et SMTPout dans leurs dossiers spécifiques:
./SMTPin -l
./SMTPout -i eth0 -u map.txt
- Test SMTPin : (Dans la VM)
nc localhost 25
HELO ouss
MAIL FROM: root@fonduesavoyarde2.site
RCPT TO: oussama.naimi@polytech-lille.net
DATA
SUBJECT: <Test>
FROM: <root@fonduesavoyarde2.site>
TO: <oussama.naimi@polytech-lille.net>
<Texte Mail>
.
QUIT
- Test SMTPout : (Sur la machine polyetch)
nc 193.48.57.180 25
HELO ouss
MAIL FROM: oussama.naimi@polytech-lille.net
RCPT TO: root@fonduesavoyarde2.site
DATA
SUBJECT: <Test>
FROM: <oussama.naimi@polytech-lille.net>
TO: <root@fonduesavoyarde2.site>
<Texte Mail>
.
QUIT
- Nous pouvons envoyer des mails de la VM sur la boite polytech mais nous ne pouvons recevoir de mails que de la machine polytech (en
nc 193.48.57.180 25
).
PARTIE 4: Evaluation
- Ajout de la commande HELP: Une fois appellée, affichage des différentes commandes dans la console client avec le numéro de succes de HELP.
static int gestion_HELP(char *ligne, FILE *client,struct courriel *donnees){
char cmd[MAX_LIGNE];
char arg[MAX_LIGNE];
char suite[MAX_LIGNE];
int statut=sscanf(ligne,"%4s %s %s",cmd,arg,suite);
if(statut!=1){
if(fprintf(client,"%03d %s\r\n",ERREUR_HELP_CODE,ERREUR_HELP_TEXTE)<0) return GESTION_STOP;
return GESTION_ERREUR;
}
if(fprintf(client,"%03d %s\r\n",SUCCES_HELP_CODE,SUCCES_HELP_TEXTE)<0) return GESTION_STOP;
return GESTION_STOP;
}