#ifndef _H_SOCKSPLUSPLUSINT
#define _H_SOCKSPLUSPLUSINT
#include "socks++.h"
namespace Security {
namespace IPPlusPlus {
namespace Socks4 {
typedef unsigned char Byte;
enum Command {
socksConnect = 1,
socksBind = 2
};
enum Reply {
requestAccepted = 90,
requestFailed = 91,
requestIdentFailed = 92,
requestIdentRejected = 93
};
class Server : public SocksServer {
public:
Server(const IPSockAddress &s) : SocksServer(4, s) { }
virtual void connect(SocksClientSocket &me, const IPSockAddress &peer);
virtual void connect(SocksClientSocket &me, const Host &host, IPPort port);
virtual void bind(SocksServerSocket &me, const IPAddress &peer, IPPort port);
virtual void receive(SocksServerSocket &me, SocksClientSocket &receiver);
};
struct Message {
Byte version;
Byte message;
IPPort port;
IPAddress addr;
Message(Command cmd, const IPSockAddress &addr);
void send(Socket &s, const char *userid);
Message(Socket &s);
IPSockAddress address() const { return IPSockAddress(addr, port); }
};
} } }
#endif //_H_SOCKSPLUSPLUSINT