82 lines
1.5 KiB
C++
82 lines
1.5 KiB
C++
#include <map>
|
|
#include <string>
|
|
#include <cstdlib>
|
|
#include <cstdio>
|
|
#include <iostream>
|
|
#include <sstream>
|
|
#include <string>
|
|
#include "./socket.h"
|
|
#include "./filesystem.h"
|
|
#include <unistd.h>
|
|
|
|
#include "./json.h"
|
|
|
|
namespace FTP {
|
|
static std::string FTPBasePath = "/tmp/mist/OnDemand/";
|
|
|
|
enum Mode{
|
|
MODE_STREAM,
|
|
};
|
|
//FTP::Mode enumeration
|
|
|
|
enum Structure{
|
|
STRU_FILE, STRU_RECORD,
|
|
};
|
|
//FTP::Structure enumeration
|
|
|
|
enum Type{
|
|
TYPE_ASCII_NONPRINT, TYPE_IMAGE_NONPRINT,
|
|
};
|
|
//FTP::Type enumeration
|
|
|
|
enum Commands{
|
|
CMD_NOCMD,
|
|
CMD_NOOP,
|
|
CMD_USER,
|
|
CMD_PASS,
|
|
CMD_QUIT,
|
|
CMD_PORT,
|
|
CMD_RETR,
|
|
CMD_STOR,
|
|
CMD_TYPE,
|
|
CMD_MODE,
|
|
CMD_STRU,
|
|
CMD_EPSV,
|
|
CMD_PASV,
|
|
CMD_LIST,
|
|
CMD_PWD,
|
|
CMD_CWD,
|
|
CMD_CDUP,
|
|
CMD_DELE,
|
|
CMD_RMD,
|
|
CMD_MKD,
|
|
CMD_RNFR,
|
|
CMD_RNTO,
|
|
};
|
|
//FTP::Commands enumeration
|
|
|
|
class User{
|
|
public:
|
|
User(Socket::Connection NewConnection, std::map<std::string, std::string> Credentials);
|
|
~User();
|
|
int ParseCommand(std::string Command);
|
|
bool LoggedIn();
|
|
std::string NumToMsg(int MsgNum);
|
|
Socket::Connection Conn;
|
|
private:
|
|
std::map<std::string, std::string> AllCredentials;
|
|
std::string USER;
|
|
std::string PASS;
|
|
Mode MODE;
|
|
Structure STRU;
|
|
Type TYPE;
|
|
int PORT;
|
|
Socket::Server Passive;
|
|
int MyPassivePort;
|
|
Filesystem::Directory MyDir;
|
|
std::string RNFR;
|
|
std::vector<std::string> ActiveStreams;
|
|
};
|
|
//FTP::User class
|
|
|
|
}//FTP Namespace
|