-
Notifications
You must be signed in to change notification settings - Fork 2
Expand file tree
/
Copy pathCFtpHandler.h
More file actions
101 lines (88 loc) · 3.47 KB
/
CFtpHandler.h
File metadata and controls
101 lines (88 loc) · 3.47 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
//
// CFtpHandler.h
// TSFtpServer
//
// Created by zhaoxy on 14-5-7.
// Copyright (c) 2014年 tsinghua. All rights reserved.
//
#ifndef __TSFtpServer__CFtpHandler__
#define __TSFtpServer__CFtpHandler__
#include <iostream>
#include <sys/socket.h>
#include <netinet/in.h>
#include <unistd.h>
#include <fcntl.h>
#include <cstdio>
#include <string.h>
#include <stdlib.h>
#include <unistd.h>
#include <errno.h>
#include <signal.h>
/**************************************
* FTP Commond List
*************************************/
#define COMMAND_PORT "PORT"
#define COMMAND_PASSIVE "PASV"
#define COMMAND_LIST "LIST"
#define COMMAND_DELETE "DELE"
#define COMMAND_NOOP "NOOP"
#define COMMAND_RETRIEVE "RETR"
#define COMMAND_STORE "STOR"
#define COMMAND_PWD "PWD"
#define COMMAND_CWD "CWD"
#define COMMAND_QUIT "QUIT"
#define COMMAND_USER "USER"
#define COMMAND_PASS "PASS"
#define COMMAND_SYST "SYST"
#define COMMAND_TYPE "TYPE"
#define COMMAND_OPTS "OPTS"
#define COMMAND_SIZE "SIZE"
#define COMMAND_MLSD "MLSD"
#define COMMAND_FEAT "FEAT"
#define COMMAND_CDUP "CDUP"
/**************************************
* FTP Response Codes
*************************************/
#define TS_FTP_STATUS_READY "220 TS FTP Server ready...\r\n"
#define TS_FTP_STATUS_OPEN_DATA_CHANNEL "150 Opening data channel for directory list."
#define TS_FTP_STATUS_TRANSFER_START(x) "150 Data connection accepted; transfer starting for "+x
#define TS_FTP_STATUS_UPLOAD_START "150 Opening BINARY mode data connection for file transfer"
#define TS_FTP_STATUS_TRAN_TYPE(x) "200 Type set to "+x
#define TS_FTP_STATUS_PORT_SUCCESS "200 Port command successful"
#define TS_FTP_STATUS_OK "200"
#define TS_FTP_STATUS_FILE_SIZE "213 "
#define TS_FTP_STATUS_SYSTEM_TYPE "215 UNIX Type: L8"
#define TS_FTP_STATUS_BYE "221 Goodbye"
#define TS_FTP_STATUS_TRANSFER_OK "226 Transfer ok."
#define TS_FTP_STATUS_FILE_SENT "226 File sent ok."
#define TS_FTP_STATUS_FILE_RECEIVE "226 File receive ok."
#define TS_FTP_STATUS_PASV "227 Entering Passive Mode (127,0,0,1,"
#define TS_FTP_STATUS_LOG_IN(x) "230 User "+x+" logged in"
#define TS_FTP_STATUS_CWD_SUCCESS(x) "250 CWD command successful. \""+x+"\" is current directory."
#define TS_FTP_STATUS_CDUP(x) "250 CDUP command successful. \""+x+"\" is current directory."
#define TS_FTP_STATUS_DELETE "250 DELE command successful."
#define TS_FTP_STATUS_CUR_DIR(x) "257 \""+x+"\" is current directory."
#define TS_FTP_STATUS_PWD_REQ(x) "331 Password required for "+x
#define TS_FTP_STATUS_PWD_ERROR "530 Not logged in,password error."
#define TS_FTP_STATUS_FILE_NOT_FOUND "550 File not found"
#define TS_FTP_STATUS_CWD_FAILED(x) "550 CWD command failed. \"" +x+ "\": directory not found."
#define TS_FTP_STATUS_DELETE_FAILED "550 Delete file failed."
int startup(int &);
class CFtpHandler {
private:
int m_connFd;
int m_dataFd;
bool m_isPassive;
int m_clientIp;
int m_clientPort;
public:
std::string username;
std::string password;
std::string type;
std::string fileName;
std::string currentPath;
CFtpHandler(int);
int getDataSocket();
bool handleRequest(char *);
};
#endif /* defined(__TSFtpServer__CFtpHandler__) */