proxy-ftp/proxy_ftp.h

116 lines
4.0 KiB
C
Raw Normal View History

2015-12-14 20:48:19 +00:00
/* global */
#include <stdio.h>
#include <stdlib.h>
2015-12-16 23:19:34 +00:00
#include <stdint.h>
2015-12-14 20:48:19 +00:00
#include <string.h>
#include <pthread.h>
/* sys */
#include <sys/types.h>
#include <sys/socket.h>
/* socket */
#include <netinet/in.h>
#include <netdb.h> // getaddrinfo, getnameinfo
#include <arpa/inet.h>
/* debug */
2015-12-16 23:19:34 +00:00
#define SOCKETS 0x01 // debug RESEAU
#define COMMANDS 0x02 // debug COMMANDES
#define DATA 0x04 // debug DONNEES
#define REVEALS 0x08 // debug EXPLICITATION des strings
#define BUFFERS 0x10 // debug des BUFFERS
#define HEADERS 0x20 // debug des HEADERS de fonctions
#define THREADS 0x40 // debug des THREADS
#define SCK 0x01 // FILTRE pour SOCKET
#define CMD 0x02 // FILTRE pour COMMAND
#define DAT 0x04 // FILTRE pour DATA
#define RVL 0x08 // FILTRE pour REVEALS
#define BUF 0x10 // FILTRE pour BUFFERS
#define HDR 0x20 // FILTRE pour HEADERS
#define THR 0x40 // FILTRE pour THREADS
// possibilité de cumuler les DEBUGMODES
#define DEBUGMOD SOCKETS + THREADS // REVEALS + HEADER + THREADS
2015-12-14 20:48:19 +00:00
/* vars */
#define remoteHost "localhost"
#define remotePort "80"
#define maxBuffLen 4096
#define maxListLen 10
2015-12-14 20:48:19 +00:00
#define maxHostLen 64
#define maxPortLen 6
// #define FTP_HOST "31.170.164.47" // u712664263
#define FTP_HOST "localhost"
2015-12-14 20:48:19 +00:00
#define FTP_PORT "21"
#define SOCKET_TIMEOUT 10, 0 // 10 secondes & 0 micro
2015-12-14 20:48:19 +00:00
/* MESSAGES */
// 220-\n
// 220- +----------------------------+\n
// 220- | Bienvenue sur PROXY FCP!!! |\n
// 220- +----------------------------+\n
// 220-\n
// 220-\n
// 220- (FCP=File Club Protocol)\n
// 220-\n
// 220-\n
// 220- Qui est tu ?!\n
// 220-\n
// 220\n
#define WLCM_MSG "220-\r\n220- +----------------------------+\r\n220- | Bienvenue sur PROXY FCP!!! |\r\n220- +----------------------------+\r\n220-\r\n220-\r\n220- (FCP=File Club Protocol)\r\n220-\r\n220-\r\n220- Qui est tu ?!\r\n220-\r\n220\r\n"
2015-12-14 20:48:19 +00:00
#define CON_MSG "220 Connecté au serveur\r\n"
#define USER_MSG "331 Tu connais la procédure.. Donne moi le mot de passe ?\r\n"
2015-12-14 20:48:19 +00:00
// 230- Bienvenue au FILE CLUB!\n\n
// 230- Les règles du File Club sont:\n
// 230- ====================================\n
// 230- 1. Il est interdit de parler du File Club.\n
// 230- 2. Il est interdit de parler du File Club.\n
// 230- 3. Si quelqu'un dit stop ou s'évanouit, le transfert s'arrête.\n
// 230- 4. Seulement deux fichiers par transfert.\n
// 230- 5. Un transfert à la fois.\n
// 230- 6. Pas de '.log', pas de '.txt'.\n
// 230- 7. Le transfert dure aussi longtemps qu'il doit durer.\n
// 230- 8. Si c'est votre premier soir au File Club, vous devez transférer.\n
// 230\n
#define PASS_BON_MSG "230- Bienvenue au FILE CLUB!\r\n230-\r\n230- Les règles du File Club sont:\r\n230- ====================================\r\n230- 1. Il est interdit de parler du File Club.\r\n230- 2. Il est interdit de parler du File Club.\r\n230- 3. Si quelqu'un dit stop ou s'évanouit, le transfert s'arrête.\r\n230- 4. Seulement deux fichiers par transfert.\r\n230- 5. Un transfert à la fois.\r\n230- 6. Pas de '.log', pas de '.txt'.\r\n230- 7. Le transfert dure aussi longtemps qu'il doit durer.\r\n230- 8. Si c'est votre premier soir au File Club, vous devez transférer.\r\n230\r\n"
#define PASS_BAD_MSG "530- Mauvais mot de passe! Dégage!\r\n530\r\n"
#define LIST_DAT_MSG "200 PORT command successful\r\n"
#define READ_CON_MSG "150 En attente\r\n"
#define STOP_DAT_MSG "226 Données reçues!\r\n"
// 221-\r\n
// 221- Fermeture des portes!\r\n
// 221- Tout le monde dehors!!\r\n
// 221- Et n'oublie pas la PREMIERE REGLE!!\r\n
// 221\r\n
#define EXIT_MSG "221-\r\n221- Fermeture des portes!\r\n221- Tout le monde dehors!!\r\n221- Et n'oublie pas la PREMIERE REGLE!!\r\n221\r\n"
2015-12-14 20:48:19 +00:00
//Je suis le canal biliaire irrité de Jack.
/* local dependencies */
#include "dep/utility.c"
#include "dep/client.c"
#include "dep/server.c"
2015-12-16 23:43:18 +00:00
/* headers */
void* manageConnection(void* THREADABLE_SOCKET);
// VARIABLES
static pthread_t managers[maxListLen]; // contiendra les THREADS
static int activeManagers[maxListLen] = {0}; // contiendra les THREADS actifs