Anoncoin  0.9.4
P2P Digital Currency
i2pwrapper.h
Go to the documentation of this file.
1 // Copyright (c) 2013-2015 The Anoncoin Core developers
2 // Copyright (c) 2012-2013 giv
3 // Distributed under the MIT/X11 software license, see the accompanying
4 // file COPYING or http://www.opensource.org/licenses/mit-license.php.
5 //--------------------------------------------------------------------------------------------------
6 #ifndef I2PWRAPPER_H
7 #define I2PWRAPPER_H
8 
9 #include "util.h"
10 #include "i2psam/i2psam.h"
11 
12 #define I2P_SESSION_NAME_DEFAULT "Anoncoin-client"
13 #define NATIVE_I2P_DESTINATION_SIZE 516
14 #define NATIVE_I2P_B32ADDR_SIZE 60
15 #define NATIVE_I2P_NET_STRING "i2p"
16 
17 namespace SAM
18 {
20  public:
22  const std::string& nickname,
23  const std::string& SAMHost = SAM_DEFAULT_ADDRESS,
24  uint16_t SAMPort = SAM_DEFAULT_PORT,
25  const std::string& myDestination = SAM_GENERATE_MY_DESTINATION,
26  const std::string& i2pOptions = SAM_DEFAULT_I2P_OPTIONS,
27  const std::string& minVer = SAM_DEFAULT_MIN_VER,
28  const std::string& maxVer = SAM_DEFAULT_MAX_VER);
29 
31 
32  SAM::SOCKET accept(bool silent);
33  SAM::SOCKET connect(const std::string& destination, bool silent);
34  bool forward(const std::string& host, uint16_t port, bool silent);
35  std::string namingLookup(const std::string& name) const;
37 
38  void stopForwarding(const std::string& host, uint16_t port);
39  void stopForwardingAll();
40 
42 
43  const sockaddr_in& getSAMAddress() const;
44  const std::string& getSAMHost() const;
45  uint16_t getSAMPort() const;
46  const std::string& getNickname() const;
47  const std::string& getSAMMinVer() const;
48  const std::string& getSAMMaxVer() const;
49  const std::string& getSAMVersion() const;
50  const std::string& getOptions() const;
51  const std::string& getSessionID() const;
52 
53 
54  private:
56 
57  std::auto_ptr<SessionHolder> sessionHolder_;
58  };
59 
60 } // namespace SAM
61 
63 {
64  public:
65  // In C++11 this code is thread safe, in C++03 it isn't
66  // ToDo: GR Note: Hmm sounds like we need to make this thread safe, or I've not the tools to compile it.
67  // Meeh - Could really use your help on this one....
69  {
70  static I2PSession i2pSession;
71  return i2pSession;
72  }
73 
74  static std::string GenerateB32AddressFromDestination(const std::string& destination);
75 
76  private:
77  I2PSession();
78  ~I2PSession();
79 
80  I2PSession(const I2PSession&);
82 };
83 
84 void InitializeI2pSettings( void );
85 
86 bool isValidI2pAddress( const std::string& I2pAddr );
87 bool isValidI2pDestination( const SAM::FullDestination& DestKeys );
88 bool isValidI2pB32( const std::string& B32Address );
89 std::string B32AddressFromDestination(const std::string& destination);
90 
91 #endif // I2PWRAPPER_H
void InitializeI2pSettings(void)
Definition: i2pwrapper.cpp:253
std::string namingLookup(const std::string &name) const
Definition: i2pwrapper.cpp:113
#define SAM_DEFAULT_ADDRESS
Definition: i2psam.h:28
void stopForwarding(const std::string &host, uint16_t port)
Definition: i2pwrapper.cpp:125
const std::string & getNickname() const
Definition: i2pwrapper.cpp:155
const SAM::FullDestination & getMyDestination() const
Definition: i2pwrapper.cpp:135
int SOCKET
Definition: i2psam.h:69
const std::string & getOptions() const
Definition: i2pwrapper.cpp:175
static SAM::StreamSessionAdapter & Instance()
Definition: i2pwrapper.h:68
const std::string & getSAMHost() const
Definition: i2pwrapper.cpp:145
bool isValidI2pAddress(const std::string &I2pAddr)
Definition: i2pwrapper.cpp:289
SAM::SOCKET accept(bool silent)
Definition: i2pwrapper.cpp:94
const std::string & getSAMMinVer() const
Definition: i2pwrapper.cpp:160
uint16_t getSAMPort() const
Definition: i2pwrapper.cpp:150
Definition: i2psam.cpp:36
#define SAM_DEFAULT_MIN_VER
Definition: i2psam.h:30
const std::string & getSAMVersion() const
Definition: i2pwrapper.cpp:170
SAM::SOCKET connect(const std::string &destination, bool silent)
Definition: i2pwrapper.cpp:101
const std::string & getSessionID() const
Definition: i2pwrapper.cpp:180
std::auto_ptr< SessionHolder > sessionHolder_
Definition: i2pwrapper.h:55
#define SAM_DEFAULT_I2P_OPTIONS
Definition: i2psam.h:34
bool isValidI2pB32(const std::string &B32Address)
Definition: i2pwrapper.cpp:303
I2PSession & operator=(const I2PSession &)
StreamSessionAdapter(const std::string &nickname, const std::string &SAMHost=SAM_DEFAULT_ADDRESS, uint16_t SAMPort=SAM_DEFAULT_PORT, const std::string &myDestination=SAM_GENERATE_MY_DESTINATION, const std::string &i2pOptions=SAM_DEFAULT_I2P_OPTIONS, const std::string &minVer=SAM_DEFAULT_MIN_VER, const std::string &maxVer=SAM_DEFAULT_MAX_VER)
Definition: i2pwrapper.cpp:77
#define SAM_GENERATE_MY_DESTINATION
Definition: i2psam.h:32
const sockaddr_in & getSAMAddress() const
Definition: i2pwrapper.cpp:140
std::string B32AddressFromDestination(const std::string &destination)
Definition: i2pwrapper.cpp:307
#define SAM_DEFAULT_PORT
Definition: i2psam.h:29
static std::string GenerateB32AddressFromDestination(const std::string &destination)
Definition: i2pwrapper.cpp:203
SAM::FullDestination destGenerate() const
Definition: i2pwrapper.cpp:119
#define SAM_DEFAULT_MAX_VER
Definition: i2psam.h:31
bool isValidI2pDestination(const SAM::FullDestination &DestKeys)
Definition: i2pwrapper.cpp:294
bool forward(const std::string &host, uint16_t port, bool silent)
Definition: i2pwrapper.cpp:108
const std::string & getSAMMaxVer() const
Definition: i2pwrapper.cpp:165