mirror of
https://github.com/RetroShare/RetroShare.git
synced 2025-02-26 01:31:30 -05:00
removed duplicated code, fixed compile, few additions
This commit is contained in:
parent
c17d0e1498
commit
ba74c04581
@ -77,8 +77,10 @@ static const std::string kConfigDefaultProxyServerIpAddr = "127.0.0.1";
|
||||
static const uint16_t kConfigDefaultProxyServerPort = 9050; // standard port.
|
||||
|
||||
static const std::string kConfigKeyExtIpFinder = "USE_EXTR_IP_FINDER";
|
||||
static const std::string kConfigKeyProxyServerIpAddr = "PROXY_SERVER_IPADDR";
|
||||
static const std::string kConfigKeyProxyServerPort = "PROXY_SERVER_PORT";
|
||||
static const std::string kConfigKeyProxyServerIpAddrTor = "PROXY_SERVER_IPADDR";
|
||||
static const std::string kConfigKeyProxyServerPortTor = "PROXY_SERVER_PORT";
|
||||
static const std::string kConfigKeyProxyServerIpAddrI2P = "PROXY_SERVER_IPADDR_I2P";
|
||||
static const std::string kConfigKeyProxyServerPortI2P = "PROXY_SERVER_PORT_I2P";
|
||||
|
||||
void printConnectState(std::ostream &out, peerState &peer);
|
||||
|
||||
@ -373,12 +375,42 @@ bool p3PeerMgrIMPL::getGpgId(const RsPeerId &ssl_id, RsPgpId &gpgId)
|
||||
|
||||
bool p3PeerMgrIMPL::isHidden()
|
||||
{
|
||||
RsStackMutex stack(mPeerMtx); /****** STACK LOCK MUTEX *******/
|
||||
return mOwnState.hiddenNode;
|
||||
return isHidden(RS_HIDDEN_TYPE_NONE);
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief checks the hidden type of the own peer. When type RS_HIDDEN_TYPE_NONE is choosen it returns the 'hiddenNode' value instead
|
||||
* @param type type to check. Use RS_HIDDEN_TYPE_NONE to check 'hiddenNode' value
|
||||
* @return true when the peer has the same hidden type than type
|
||||
*/
|
||||
bool p3PeerMgrIMPL::isHidden(const uint32_t type)
|
||||
{
|
||||
RsStackMutex stack(mPeerMtx); /****** STACK LOCK MUTEX *******/
|
||||
switch (type) {
|
||||
case RS_HIDDEN_TYPE_TOR:
|
||||
return mOwnState.hiddenType == RS_HIDDEN_TYPE_TOR;
|
||||
break;
|
||||
case RS_HIDDEN_TYPE_I2P:
|
||||
return mOwnState.hiddenType == RS_HIDDEN_TYPE_I2P;
|
||||
break;
|
||||
default:
|
||||
return mOwnState.hiddenNode;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
bool p3PeerMgrIMPL::isHiddenPeer(const RsPeerId &ssl_id)
|
||||
{
|
||||
return isHiddenPeer(ssl_id, RS_HIDDEN_TYPE_NONE);
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief checks the hidden type of a given ssl id. When type RS_HIDDEN_TYPE_NONE is choosen it returns the 'hiddenNode' value instead
|
||||
* @param ssl_id to check
|
||||
* @param type type to check. Use RS_HIDDEN_TYPE_NONE to check 'hiddenNode' value
|
||||
* @return true when the peer has the same hidden type than type
|
||||
*/
|
||||
bool p3PeerMgrIMPL::isHiddenPeer(const RsPeerId &ssl_id, const uint32_t type)
|
||||
{
|
||||
RsStackMutex stack(mPeerMtx); /****** STACK LOCK MUTEX *******/
|
||||
|
||||
@ -399,67 +431,17 @@ bool p3PeerMgrIMPL::isHiddenPeer(const RsPeerId &ssl_id)
|
||||
std::cerr << "p3PeerMgrIMPL::isHiddenPeer(" << ssl_id << ") = " << (it->second).hiddenNode;
|
||||
std::cerr << std::endl;
|
||||
#endif
|
||||
return (it->second).hiddenNode;
|
||||
}
|
||||
|
||||
bool p3PeerMgrIMPL::isHiddenTor()
|
||||
{
|
||||
RsStackMutex stack(mPeerMtx); /****** STACK LOCK MUTEX *******/
|
||||
return mOwnState.hiddenType == RS_HIDDEN_TYPE_TOR;
|
||||
}
|
||||
|
||||
bool p3PeerMgrIMPL::isHiddenTorPeer(const RsPeerId &ssl_id)
|
||||
{
|
||||
RsStackMutex stack(mPeerMtx); /****** STACK LOCK MUTEX *******/
|
||||
|
||||
/* check for existing */
|
||||
std::map<RsPeerId, peerState>::iterator it;
|
||||
it = mFriendList.find(ssl_id);
|
||||
if (it == mFriendList.end())
|
||||
{
|
||||
#ifdef PEER_DEBUG
|
||||
std::cerr << "p3PeerMgrIMPL::isHiddenTorPeer(" << ssl_id << ") Missing Peer => false";
|
||||
std::cerr << std::endl;
|
||||
#endif
|
||||
|
||||
return false;
|
||||
switch (type) {
|
||||
case RS_HIDDEN_TYPE_TOR:
|
||||
return (it->second).hiddenType == RS_HIDDEN_TYPE_TOR;
|
||||
break;
|
||||
case RS_HIDDEN_TYPE_I2P:
|
||||
return (it->second).hiddenType == RS_HIDDEN_TYPE_I2P;
|
||||
break;
|
||||
default:
|
||||
return (it->second).hiddenNode;
|
||||
break;
|
||||
}
|
||||
|
||||
#ifdef PEER_DEBUG
|
||||
std::cerr << "p3PeerMgrIMPL::isHiddenTorPeer(" << ssl_id << ") = " << (it->second).hiddenType;
|
||||
std::cerr << std::endl;
|
||||
#endif
|
||||
return (it->second).hiddenType == RS_HIDDEN_TYPE_TOR;
|
||||
}
|
||||
|
||||
bool p3PeerMgrIMPL::isHiddenI2P()
|
||||
{
|
||||
RsStackMutex stack(mPeerMtx); /****** STACK LOCK MUTEX *******/
|
||||
return mOwnState.hiddenType == RS_HIDDEN_TYPE_I2P;
|
||||
}
|
||||
|
||||
bool p3PeerMgrIMPL::isHiddenI2PPeer(const RsPeerId &ssl_id)
|
||||
{
|
||||
RsStackMutex stack(mPeerMtx); /****** STACK LOCK MUTEX *******/
|
||||
|
||||
/* check for existing */
|
||||
std::map<RsPeerId, peerState>::iterator it;
|
||||
it = mFriendList.find(ssl_id);
|
||||
if (it == mFriendList.end())
|
||||
{
|
||||
#ifdef PEER_DEBUG
|
||||
std::cerr << "p3PeerMgrIMPL::isHiddenI2PPeer(" << ssl_id << ") Missing Peer => false";
|
||||
std::cerr << std::endl;
|
||||
#endif
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
#ifdef PEER_DEBUG
|
||||
std::cerr << "p3PeerMgrIMPL::isHiddenI2PPeer(" << ssl_id << ") = " << (it->second).hiddenType;
|
||||
std::cerr << std::endl;
|
||||
#endif
|
||||
return (it->second).hiddenType == RS_HIDDEN_TYPE_I2P;
|
||||
}
|
||||
|
||||
bool hasEnding (std::string const &fullString, std::string const &ending) {
|
||||
@ -1756,10 +1738,6 @@ bool p3PeerMgrIMPL::saveList(bool &cleanup, std::list<RsItem *>& saveData)
|
||||
cleanup = false;
|
||||
bool useExtAddrFinder = mNetMgr->getIPServersEnabled();
|
||||
|
||||
// Store Proxy Server.
|
||||
struct sockaddr_storage proxy_addr;
|
||||
getProxyServerAddress(proxy_addr);
|
||||
|
||||
mPeerMtx.lock(); /****** MUTEX LOCKED *******/
|
||||
|
||||
RsPeerNetItem *item = new RsPeerNetItem();
|
||||
@ -1869,16 +1847,37 @@ bool p3PeerMgrIMPL::saveList(bool &cleanup, std::list<RsItem *>& saveData)
|
||||
vitem->tlvkvs.pairs.push_back(kv) ;
|
||||
|
||||
|
||||
// Store Proxy Server.
|
||||
// Tor
|
||||
struct sockaddr_storage proxy_addr;
|
||||
getProxyServerAddress(RS_HIDDEN_TYPE_TOR, proxy_addr);
|
||||
|
||||
#ifdef PEER_DEBUG
|
||||
std::cerr << "Saving proxyServerAddress: " << sockaddr_storage_tostring(proxy_addr);
|
||||
std::cerr << "Saving proxyServerAddress for Tor: " << sockaddr_storage_tostring(proxy_addr);
|
||||
std::cerr << std::endl;
|
||||
#endif
|
||||
|
||||
kv.key = kConfigKeyProxyServerIpAddr;
|
||||
kv.key = kConfigKeyProxyServerIpAddrTor;
|
||||
kv.value = sockaddr_storage_iptostring(proxy_addr);
|
||||
vitem->tlvkvs.pairs.push_back(kv) ;
|
||||
|
||||
kv.key = kConfigKeyProxyServerPort;
|
||||
kv.key = kConfigKeyProxyServerPortTor;
|
||||
kv.value = sockaddr_storage_porttostring(proxy_addr);
|
||||
vitem->tlvkvs.pairs.push_back(kv) ;
|
||||
|
||||
// I2P
|
||||
getProxyServerAddress(RS_HIDDEN_TYPE_I2P, proxy_addr);
|
||||
|
||||
#ifdef PEER_DEBUG
|
||||
std::cerr << "Saving proxyServerAddress for I2P: " << sockaddr_storage_tostring(proxy_addr);
|
||||
std::cerr << std::endl;
|
||||
#endif
|
||||
|
||||
kv.key = kConfigKeyProxyServerIpAddrI2P;
|
||||
kv.value = sockaddr_storage_iptostring(proxy_addr);
|
||||
vitem->tlvkvs.pairs.push_back(kv) ;
|
||||
|
||||
kv.key = kConfigKeyProxyServerPortI2P;
|
||||
kv.value = sockaddr_storage_porttostring(proxy_addr);
|
||||
vitem->tlvkvs.pairs.push_back(kv) ;
|
||||
|
||||
@ -1915,8 +1914,10 @@ bool p3PeerMgrIMPL::loadList(std::list<RsItem *>& load)
|
||||
|
||||
// DEFAULTS.
|
||||
bool useExtAddrFinder = true;
|
||||
std::string proxyIpAddress = kConfigDefaultProxyServerIpAddr;
|
||||
uint16_t proxyPort = kConfigDefaultProxyServerPort;
|
||||
std::string proxyIpAddressTor = kConfigDefaultProxyServerIpAddr;
|
||||
uint16_t proxyPortTor = kConfigDefaultProxyServerPort;
|
||||
std::string proxyIpAddressI2P = kConfigDefaultProxyServerIpAddr;
|
||||
uint16_t proxyPortI2P = kConfigDefaultProxyServerPort;
|
||||
|
||||
if (load.empty()) {
|
||||
std::cerr << "p3PeerMgrIMPL::loadList() list is empty, it may be a configuration problem." << std::endl;
|
||||
@ -2012,20 +2013,39 @@ bool p3PeerMgrIMPL::loadList(std::list<RsItem *>& load)
|
||||
std::cerr << "setting use_extr_addr_finder to " << useExtAddrFinder << std::endl ;
|
||||
#endif
|
||||
}
|
||||
else if (kit->key == kConfigKeyProxyServerIpAddr)
|
||||
// Tor
|
||||
else if (kit->key == kConfigKeyProxyServerIpAddrTor)
|
||||
{
|
||||
proxyIpAddress = kit->value;
|
||||
proxyIpAddressTor = kit->value;
|
||||
#ifdef PEER_DEBUG
|
||||
std::cerr << "Loaded proxyIpAddress: " << proxyIpAddress;
|
||||
std::cerr << "Loaded proxyIpAddress for Tor: " << proxyIpAddress;
|
||||
std::cerr << std::endl ;
|
||||
#endif
|
||||
|
||||
}
|
||||
else if (kit->key == kConfigKeyProxyServerPort)
|
||||
else if (kit->key == kConfigKeyProxyServerPortTor)
|
||||
{
|
||||
proxyPort = atoi(kit->value.c_str());
|
||||
proxyPortTor = atoi(kit->value.c_str());
|
||||
#ifdef PEER_DEBUG
|
||||
std::cerr << "Loaded proxyPort: " << proxyPort;
|
||||
std::cerr << "Loaded proxyPort for Tor: " << proxyPort;
|
||||
std::cerr << std::endl ;
|
||||
#endif
|
||||
}
|
||||
// I2p
|
||||
else if (kit->key == kConfigKeyProxyServerIpAddrI2P)
|
||||
{
|
||||
proxyIpAddressI2P = kit->value;
|
||||
#ifdef PEER_DEBUG
|
||||
std::cerr << "Loaded proxyIpAddress for I2P: " << proxyIpAddress;
|
||||
std::cerr << std::endl ;
|
||||
#endif
|
||||
|
||||
}
|
||||
else if (kit->key == kConfigKeyProxyServerPortI2P)
|
||||
{
|
||||
proxyPortI2P = atoi(kit->value.c_str());
|
||||
#ifdef PEER_DEBUG
|
||||
std::cerr << "Loaded proxyPort for I2P: " << proxyPort;
|
||||
std::cerr << std::endl ;
|
||||
#endif
|
||||
}
|
||||
@ -2141,13 +2161,24 @@ bool p3PeerMgrIMPL::loadList(std::list<RsItem *>& load)
|
||||
|
||||
// Configure Proxy Server.
|
||||
struct sockaddr_storage proxy_addr;
|
||||
// Tor
|
||||
sockaddr_storage_clear(proxy_addr);
|
||||
sockaddr_storage_ipv4_aton(proxy_addr, proxyIpAddress.c_str());
|
||||
sockaddr_storage_ipv4_setport(proxy_addr, proxyPort);
|
||||
sockaddr_storage_ipv4_aton(proxy_addr, proxyIpAddressTor.c_str());
|
||||
sockaddr_storage_ipv4_setport(proxy_addr, proxyPortTor);
|
||||
|
||||
if (sockaddr_storage_isValidNet(proxy_addr))
|
||||
{
|
||||
setProxyServerAddress(proxy_addr);
|
||||
setProxyServerAddress(RS_HIDDEN_TYPE_TOR, proxy_addr);
|
||||
}
|
||||
|
||||
// I2P
|
||||
sockaddr_storage_clear(proxy_addr);
|
||||
sockaddr_storage_ipv4_aton(proxy_addr, proxyIpAddressI2P.c_str());
|
||||
sockaddr_storage_ipv4_setport(proxy_addr, proxyPortI2P);
|
||||
|
||||
if (sockaddr_storage_isValidNet(proxy_addr))
|
||||
{
|
||||
setProxyServerAddress(RS_HIDDEN_TYPE_I2P, proxy_addr);
|
||||
}
|
||||
|
||||
return true;
|
||||
|
@ -190,11 +190,9 @@ virtual bool setProxyServerAddress(const uint32_t type, const struct sockaddr
|
||||
virtual bool getProxyServerAddress(const uint32_t type, struct sockaddr_storage &proxy_addr) = 0;
|
||||
virtual bool getProxyServerStatus(const uint32_t type, uint32_t& status) = 0;
|
||||
virtual bool isHidden() = 0;
|
||||
virtual bool isHidden(const uint32_t type) = 0;
|
||||
virtual bool isHiddenPeer(const RsPeerId &ssl_id) = 0;
|
||||
virtual bool isHiddenTor() = 0;
|
||||
virtual bool isHiddenTorPeer(const RsPeerId &ssl_id) = 0;
|
||||
virtual bool isHiddenI2P() = 0;
|
||||
virtual bool isHiddenI2PPeer(const RsPeerId &ssl_id) = 0;
|
||||
virtual bool isHiddenPeer(const RsPeerId &ssl_id, const uint32_t type) = 0;
|
||||
virtual bool getProxyAddress(const RsPeerId &ssl_id, struct sockaddr_storage &proxy_addr, std::string &domain_addr, uint16_t &domain_port) = 0;
|
||||
|
||||
|
||||
@ -297,11 +295,9 @@ virtual bool setProxyServerAddress(const uint32_t type, const struct sockaddr
|
||||
virtual bool getProxyServerAddress(const uint32_t type, struct sockaddr_storage &proxy_addr);
|
||||
virtual bool getProxyServerStatus(const uint32_t type, uint32_t &proxy_status);
|
||||
virtual bool isHidden();
|
||||
virtual bool isHiddenPeer(const RsPeerId& ssl_id);
|
||||
virtual bool isHiddenTor();
|
||||
virtual bool isHiddenTorPeer(const RsPeerId &ssl_id);
|
||||
virtual bool isHiddenI2P();
|
||||
virtual bool isHiddenI2PPeer(const RsPeerId &ssl_id);
|
||||
virtual bool isHidden(const uint32_t type);
|
||||
virtual bool isHiddenPeer(const RsPeerId &ssl_id);
|
||||
virtual bool isHiddenPeer(const RsPeerId &ssl_id, const uint32_t type);
|
||||
virtual bool getProxyAddress(const RsPeerId& ssl_id, struct sockaddr_storage &proxy_addr, std::string &domain_addr, uint16_t &domain_port);
|
||||
virtual uint32_t hiddenDomainToHiddenType(const std::string &domain);
|
||||
|
||||
|
@ -91,7 +91,7 @@ pqiperson * pqisslpersongrp::locked_createPerson(const RsPeerId& id, pqilistener
|
||||
|
||||
pqiconnect *pqisc = new pqiconnect(pqip, rss, pqis);
|
||||
|
||||
if (mPeerMgr->isHiddenI2P() | mPeerMgr->isHiddenI2PPeer(id))
|
||||
if (mPeerMgr->isHidden(RS_HIDDEN_TYPE_I2P) | mPeerMgr->isHiddenPeer(id, RS_HIDDEN_TYPE_I2P))
|
||||
pqip -> addChildInterface(PQI_CONNECT_HIDDEN_I2P_TCP, pqisc);
|
||||
else
|
||||
/* default tor */
|
||||
|
@ -355,8 +355,8 @@ class RsPeers
|
||||
virtual bool setNetworkMode(const RsPeerId &ssl_id, uint32_t netMode) = 0;
|
||||
virtual bool setVisState(const RsPeerId &ssl_id, uint16_t vs_disc, uint16_t vs_dht) = 0;
|
||||
|
||||
virtual bool getProxyServer(std::string &addr, uint16_t &port,uint32_t& status_flags) = 0;
|
||||
virtual bool setProxyServer(const std::string &addr, const uint16_t port) = 0;
|
||||
virtual bool getProxyServer(const uint32_t type, std::string &addr, uint16_t &port,uint32_t& status_flags) = 0;
|
||||
virtual bool setProxyServer(const uint32_t type, const std::string &addr, const uint16_t port) = 0;
|
||||
|
||||
virtual void getIPServersList(std::list<std::string>& ip_servers) = 0;
|
||||
virtual void allowServerIPDetermination(bool) = 0;
|
||||
|
@ -435,7 +435,7 @@ bool p3Peers::getPeerDetails(const RsPeerId& id, RsPeerDetails &d)
|
||||
}
|
||||
else if (pcs.state & RS_PEER_S_CONNECTED)
|
||||
{
|
||||
if(isProxyAddress(pcs.connectaddr) || mPeerMgr->isHidden())
|
||||
if(isProxyAddress(RS_HIDDEN_TYPE_TOR, pcs.connectaddr) || isProxyAddress(RS_HIDDEN_TYPE_I2P, pcs.connectaddr) || mPeerMgr->isHidden())
|
||||
d.connectState = RS_PEER_CONNECTSTATE_CONNECTED_TOR;
|
||||
else if (pcs.connecttype == RS_NET_CONN_TCP_ALL)
|
||||
{
|
||||
@ -457,13 +457,13 @@ bool p3Peers::getPeerDetails(const RsPeerId& id, RsPeerDetails &d)
|
||||
return true;
|
||||
}
|
||||
|
||||
bool p3Peers::isProxyAddress(const sockaddr_storage& addr)
|
||||
bool p3Peers::isProxyAddress(const uint32_t type, const sockaddr_storage& addr)
|
||||
{
|
||||
uint16_t port ;
|
||||
std::string string_addr;
|
||||
uint32_t status ;
|
||||
uint32_t status ;
|
||||
|
||||
if(!getProxyServer(string_addr, port, status))
|
||||
if(!getProxyServer(type, string_addr, port, status))
|
||||
return false ;
|
||||
|
||||
return sockaddr_storage_iptostring(addr)==string_addr && sockaddr_storage_port(addr)==port ;
|
||||
@ -923,21 +923,21 @@ bool p3Peers::setVisState(const RsPeerId &id, uint16_t vs_disc, uint16_t vs_dht)
|
||||
return mPeerMgr->setVisState(id, vs_disc, vs_dht);
|
||||
}
|
||||
|
||||
bool p3Peers::getProxyServer(std::string &addr, uint16_t &port, uint32_t &status)
|
||||
bool p3Peers::getProxyServer(const uint32_t type, std::string &addr, uint16_t &port, uint32_t &status)
|
||||
{
|
||||
#ifdef P3PEERS_DEBUG
|
||||
std::cerr << "p3Peers::getProxyServer()" << std::endl;
|
||||
#endif
|
||||
|
||||
struct sockaddr_storage proxy_addr;
|
||||
mPeerMgr->getProxyServerAddressTor(proxy_addr);
|
||||
mPeerMgr->getProxyServerAddress(type, proxy_addr);
|
||||
addr = sockaddr_storage_iptostring(proxy_addr);
|
||||
port = sockaddr_storage_port(proxy_addr);
|
||||
mPeerMgr->getProxyServerStatusTor(status);
|
||||
mPeerMgr->getProxyServerStatus(type, status);
|
||||
return true;
|
||||
}
|
||||
|
||||
bool p3Peers::setProxyServer(const std::string &addr_str, const uint16_t port)
|
||||
bool p3Peers::setProxyServer(const uint32_t type, const std::string &addr_str, const uint16_t port)
|
||||
{
|
||||
#ifdef P3PEERS_DEBUG
|
||||
std::cerr << "p3Peers::setProxyServer() " << std::endl;
|
||||
@ -958,7 +958,7 @@ bool p3Peers::setProxyServer(const std::string &addr_str, const uint16_t port)
|
||||
#endif
|
||||
/********************************** WINDOWS/UNIX SPECIFIC PART *******************/
|
||||
{
|
||||
return mPeerMgr->setProxyServerAddressTor(addr);
|
||||
return mPeerMgr->setProxyServerAddress(type, addr);
|
||||
}
|
||||
else
|
||||
{
|
||||
|
@ -94,9 +94,9 @@ virtual bool setDynDNS(const RsPeerId &id, const std::string &dyndns);
|
||||
virtual bool setNetworkMode(const RsPeerId &id, uint32_t netMode);
|
||||
virtual bool setVisState(const RsPeerId &id, uint16_t vs_disc, uint16_t vs_dht);
|
||||
|
||||
virtual bool getProxyServer(std::string &addr, uint16_t &port,uint32_t& status);
|
||||
virtual bool setProxyServer(const std::string &addr, const uint16_t port);
|
||||
virtual bool isProxyAddress(const sockaddr_storage&);
|
||||
virtual bool getProxyServer(const uint32_t type, std::string &addr, uint16_t &port,uint32_t& status);
|
||||
virtual bool setProxyServer(const uint32_t type,const std::string &addr, const uint16_t port);
|
||||
virtual bool isProxyAddress(const uint32_t type,const sockaddr_storage&);
|
||||
|
||||
virtual void getIPServersList(std::list<std::string>& ip_servers) ;
|
||||
virtual void allowServerIPDetermination(bool) ;
|
||||
|
Loading…
x
Reference in New Issue
Block a user