mirror of https://github.com/polistern/i2psam
commit
11422d33f7
26
i2psam.cpp
26
i2psam.cpp
|
@ -241,7 +241,8 @@ StreamSession::StreamSession(
|
|||
const std::string& SAMHost /*= SAM_DEFAULT_ADDRESS*/,
|
||||
uint16_t SAMPort /*= SAM_DEFAULT_PORT*/,
|
||||
const std::string& destination /*= SAM_GENERATE_MY_DESTINATION*/,
|
||||
const std::string& i2pOptions /*= SAM_DEFAULT_I2P_OPTIONS*/)
|
||||
const std::string& i2pOptions /*= SAM_DEFAULT_I2P_OPTIONS*/,
|
||||
const std::string& signatureType /*= SAM_SIGNATURE_TYPE */ )
|
||||
: socket_(SAMHost, SAMPort)
|
||||
, nickname_(nickname)
|
||||
, sessionID_(generateSessionID())
|
||||
|
@ -419,7 +420,7 @@ FullDestination StreamSession::createStreamSession(const std::string& destinatio
|
|||
{
|
||||
typedef Message::Answer<const std::string> AnswerType;
|
||||
|
||||
const AnswerType answer = createStreamSession(socket_, sessionID_, nickname_, destination, i2pOptions_);
|
||||
const AnswerType answer = createStreamSession(socket_, sessionID_, nickname_, destination, i2pOptions_, SAM_SIGNATURE_TYPE);
|
||||
if (answer.status != Message::OK)
|
||||
{
|
||||
fallSick();
|
||||
|
@ -486,9 +487,9 @@ Message::eStatus StreamSession::request(I2pSocket& socket, const std::string& re
|
|||
}
|
||||
|
||||
/*static*/
|
||||
Message::Answer<const std::string> StreamSession::createStreamSession(I2pSocket& socket, const std::string& sessionID, const std::string& nickname, const std::string& destination, const std::string& options)
|
||||
Message::Answer<const std::string> StreamSession::createStreamSession(I2pSocket& socket, const std::string& sessionID, const std::string& nickname, const std::string& destination, const std::string& options, const std::string& signatureType)
|
||||
{
|
||||
return request(socket, Message::sessionCreate(Message::sssStream, sessionID, nickname, destination, options), "DESTINATION");
|
||||
return request(socket, Message::sessionCreate(Message::sssStream, sessionID, nickname, destination, options, signatureType), "DESTINATION");
|
||||
}
|
||||
|
||||
/*static*/
|
||||
|
@ -603,6 +604,17 @@ const std::string& StreamSession::getSAMVersion() const
|
|||
return socket_.getVersion();
|
||||
}
|
||||
|
||||
|
||||
const std::string& StreamSession::getSAMMinVer() const
|
||||
{
|
||||
return socket_.minVer_;
|
||||
}
|
||||
|
||||
const std::string& StreamSession::getSAMMaxVer() const
|
||||
{
|
||||
return socket_.maxVer_;
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
|
||||
|
||||
|
@ -649,7 +661,7 @@ std::string Message::hello(const std::string &minVer, const std::string &maxVer)
|
|||
return createSAMRequest(helloFormat, minVer.c_str(), maxVer.c_str());
|
||||
}
|
||||
|
||||
std::string Message::sessionCreate(SessionStyle style, const std::string& sessionID, const std::string& nickname, const std::string& destination /*= SAM_GENERATE_MY_DESTINATION*/, const std::string& options /*= ""*/)
|
||||
std::string Message::sessionCreate(SessionStyle style, const std::string& sessionID, const std::string& nickname, const std::string& destination /*= SAM_GENERATE_MY_DESTINATION*/, const std::string& options /*= ""*/, const std::string& signatureType /*= SAM_SIGNATURE_TYPE*/)
|
||||
{
|
||||
///////////////////////////////////////////////////////////
|
||||
//
|
||||
|
@ -673,8 +685,8 @@ std::string Message::sessionCreate(SessionStyle style, const std::string& sessio
|
|||
case sssRaw: sessionStyle = "RAW"; break;
|
||||
}
|
||||
|
||||
static const char* sessionCreateFormat = "SESSION CREATE STYLE=%s ID=%s DESTINATION=%s inbound.nickname=%s %s\n"; // we add inbound.nickname option
|
||||
return createSAMRequest(sessionCreateFormat, sessionStyle.c_str(), sessionID.c_str(), destination.c_str(), nickname.c_str(), options.c_str());
|
||||
static const char* sessionCreateFormat = "SESSION CREATE STYLE=%s ID=%s DESTINATION=%s SIGNATURE_TYPE=%s inbound.nickname=%s %s\n"; // we add inbound.nickname option
|
||||
return createSAMRequest(sessionCreateFormat, sessionStyle.c_str(), sessionID.c_str(), destination.c_str(), signatureType.c_str(), nickname.c_str(), options.c_str());
|
||||
}
|
||||
|
||||
std::string Message::streamAccept(const std::string& sessionID, bool silent /*= false*/)
|
||||
|
|
15
i2psam.h
15
i2psam.h
|
@ -13,6 +13,7 @@
|
|||
#define SAM_GENERATE_MY_DESTINATION "TRANSIENT"
|
||||
#define SAM_MY_NAME "ME"
|
||||
#define SAM_DEFAULT_I2P_OPTIONS ""
|
||||
#define SAM_SIGNATURE_TYPE "EdDSA_SHA512_Ed25519"
|
||||
|
||||
#define SAM_NAME_INBOUND_QUANTITY "inbound.quantity"
|
||||
#define SAM_DEFAULT_INBOUND_QUANTITY 3 // Three tunnels is default now
|
||||
|
@ -183,7 +184,9 @@ public:
|
|||
};
|
||||
|
||||
static std::string hello(const std::string& minVer, const std::string& maxVer);
|
||||
static std::string sessionCreate(SessionStyle style, const std::string& sessionID, const std::string& nickname, const std::string& destination = SAM_GENERATE_MY_DESTINATION, const std::string& options = "");
|
||||
static std::string sessionCreate(SessionStyle style, const std::string& sessionID,
|
||||
const std::string& nickname, const std::string& destination = SAM_GENERATE_MY_DESTINATION,
|
||||
const std::string& options = "", const std::string& signatureType = SAM_SIGNATURE_TYPE);
|
||||
static std::string streamAccept(const std::string& sessionID, bool silent = false);
|
||||
static std::string streamConnect(const std::string& sessionID, const std::string& destination, bool silent = false);
|
||||
static std::string streamForward(const std::string& sessionID, const std::string& host, uint16_t port, bool silent = false);
|
||||
|
@ -221,13 +224,14 @@ public:
|
|||
|
||||
const sockaddr_in& getAddress() const;
|
||||
|
||||
const std::string minVer_ = "3.0";
|
||||
const std::string maxVer_ = "3.1";
|
||||
|
||||
private:
|
||||
SOCKET socket_;
|
||||
sockaddr_in servAddr_;
|
||||
std::string SAMHost_;
|
||||
uint16_t SAMPort_;
|
||||
const std::string minVer_ = "3.0";
|
||||
const std::string maxVer_ = "3.0";
|
||||
std::string version_;
|
||||
|
||||
#ifdef WIN32
|
||||
|
@ -329,7 +333,8 @@ public:
|
|||
const std::string& SAMHost = SAM_DEFAULT_ADDRESS,
|
||||
uint16_t SAMPort = SAM_DEFAULT_PORT,
|
||||
const std::string& destination = SAM_GENERATE_MY_DESTINATION,
|
||||
const std::string& i2pOptions = SAM_DEFAULT_I2P_OPTIONS);
|
||||
const std::string& i2pOptions = SAM_DEFAULT_I2P_OPTIONS,
|
||||
const std::string& signatureType = SAM_SIGNATURE_TYPE);
|
||||
explicit StreamSession(StreamSession& rhs);
|
||||
~StreamSession();
|
||||
|
||||
|
@ -390,7 +395,7 @@ private:
|
|||
static Message::Answer<const std::string> request(I2pSocket& socket, const std::string& requestStr, const std::string& keyOnSuccess);
|
||||
static Message::eStatus request(I2pSocket& socket, const std::string& requestStr);
|
||||
// commands
|
||||
static Message::Answer<const std::string> createStreamSession(I2pSocket& socket, const std::string& sessionID, const std::string& nickname, const std::string& destination, const std::string& options);
|
||||
static Message::Answer<const std::string> createStreamSession(I2pSocket& socket, const std::string& sessionID, const std::string& nickname, const std::string& destination, const std::string& options, const std::string& signatureType);
|
||||
static Message::Answer<const std::string> namingLookup(I2pSocket& socket, const std::string& name);
|
||||
static Message::Answer<const FullDestination> destGenerate(I2pSocket& socket);
|
||||
|
||||
|
|
Loading…
Reference in New Issue