From d1a375cbd02e04b60b89958e7a5449514b011c07 Mon Sep 17 00:00:00 2001 From: csoler Date: Wed, 25 Jul 2018 11:37:40 +0200 Subject: [PATCH] removed RETROTOR #ifdef and started using RsAccounts::isTorAuto() instead. Unfinished yet. --- RetroShare.pro | 13 +- libretroshare/src/pqi/pqisslpersongrp.cc | 3 - libretroshare/src/retroshare/rsinit.h | 2 + libretroshare/src/rsserver/rsaccounts.cc | 35 ++- libretroshare/src/rsserver/rsinit.cc | 274 ++++++++++-------- retroshare-gui/src/gui/GenCertDialog.cpp | 13 +- retroshare-gui/src/gui/MainWindow.cpp | 28 +- .../src/gui/settings/ServerPage.cpp | 27 +- .../src/gui/settings/rsharesettings.h | 2 - .../src/gui/statusbar/torstatus.cpp | 88 +++--- retroshare-gui/src/main.cpp | 56 ++-- retroshare-gui/src/retroshare-gui.pro | 12 +- retroshare.pri | 11 +- 13 files changed, 294 insertions(+), 270 deletions(-) diff --git a/RetroShare.pro b/RetroShare.pro index d53d37a71..0b009cfd5 100644 --- a/RetroShare.pro +++ b/RetroShare.pro @@ -23,13 +23,9 @@ TEMPLATE = subdirs SUBDIRS += openpgpsdk openpgpsdk.file = openpgpsdk/src/openpgpsdk.pro -retrotor { - libretroshare.depends = openpgpsdk -} else { - SUBDIRS += libbitdht - libbitdht.file = libbitdht/src/libbitdht.pro - libretroshare.depends = openpgpsdk libbitdht -} +SUBDIRS += libbitdht +libbitdht.file = libbitdht/src/libbitdht.pro +libretroshare.depends = openpgpsdk libbitdht SUBDIRS += libretroshare libretroshare.file = libretroshare/src/libretroshare.pro @@ -45,15 +41,12 @@ retroshare_gui { retroshare_gui.target = retroshare_gui } -retrotor { -} else { retroshare_nogui { SUBDIRS += retroshare_nogui retroshare_nogui.file = retroshare-nogui/src/retroshare-nogui.pro retroshare_nogui.depends = libretroshare libresapi retroshare_nogui.target = retroshare_nogui } -} retroshare_android_service { SUBDIRS += retroshare_android_service diff --git a/libretroshare/src/pqi/pqisslpersongrp.cc b/libretroshare/src/pqi/pqisslpersongrp.cc index e907feb28..7016a2fa6 100644 --- a/libretroshare/src/pqi/pqisslpersongrp.cc +++ b/libretroshare/src/pqi/pqisslpersongrp.cc @@ -32,9 +32,6 @@ static struct RsLog::logInfo pqipersongrpzoneInfo = {RsLog::Default, "pqipersong /**** * #define PQI_DISABLE_UDP 1 ***/ -#ifdef RETROTOR -#define PQI_DISABLE_UDP 1 -#endif /********************************** SSL Specific features ***************************/ diff --git a/libretroshare/src/retroshare/rsinit.h b/libretroshare/src/retroshare/rsinit.h index 9384e716f..325eb7e98 100644 --- a/libretroshare/src/retroshare/rsinit.h +++ b/libretroshare/src/retroshare/rsinit.h @@ -181,6 +181,8 @@ public: static bool getCurrentAccountOptions(bool& is_hidden,bool& is_tor_auto,bool& is_first_time) ; static bool checkCreateAccountDirectory(); // Generate the hierarchy of directories below ~/.retroshare/[SSL dir]/ + static bool isHiddenNode() ; // true if the running node is a hidden node. Used to choose which services to start. + static bool isTorAuto() ; // true if the running node is a hidden node using automated Tor management static std::string AccountDirectory(); // linux: ~/.retroshare/[SSL dir]/ static std::string AccountKeysDirectory(); // linux: ~/.retroshare/[SSL dir]/keys/ diff --git a/libretroshare/src/rsserver/rsaccounts.cc b/libretroshare/src/rsserver/rsaccounts.cc index ee2c91e1a..052c78a68 100644 --- a/libretroshare/src/rsserver/rsaccounts.cc +++ b/libretroshare/src/rsserver/rsaccounts.cc @@ -67,11 +67,8 @@ RsAccountsDetail::RsAccountsDetail() : mAccountsLocked(false), mPreferredId("") bool RsAccountsDetail::loadAccounts() { int failing_accounts ; -#ifdef RETROTOR - getAvailableAccounts(mAccounts,failing_accounts,mUnsupportedKeys,true); -#else +#warning we might need some switch here for hidden nodes only getAvailableAccounts(mAccounts,failing_accounts,mUnsupportedKeys,false); -#endif loadPreferredAccount(); checkPreferredId(); @@ -612,7 +609,7 @@ bool RsAccountsDetail::getAvailableAccounts(std::map & valid_prefix = true; hidden_location = true; - auto_tor = RsDirUtil::checkDirectory(PathDataDirectory()+"/hidden_service"); + auto_tor = RsDirUtil::checkDirectory(mBaseDirectory+"/"+*it+"/hidden_service"); } else { @@ -1371,6 +1368,34 @@ bool RsAccounts::getCurrentAccountOptions(bool& is_hidden,bool& is_tor_auto,bool { return rsAccounts->getCurrentAccountOptions(is_hidden,is_tor_auto,is_first_time); } +bool RsAccounts::isHiddenNode() +{ + bool hidden = false ; + bool is_tor_only = false ; + bool is_first_time = false ; + + if(!getCurrentAccountOptions(hidden,is_tor_only,is_first_time)) + { + std::cerr << "(EE) Critical problem: RsAccounts::getCurrentAccountOptions() called but no account chosen!" << std::endl; + throw std::runtime_error("inconsistent configuration") ; + } + + return hidden ; +} +bool RsAccounts::isTorAuto() +{ + bool hidden = false ; + bool is_tor_only = false ; + bool is_first_time = false ; + + if(!getCurrentAccountOptions(hidden,is_tor_only,is_first_time)) + { + std::cerr << "(EE) Critical problem: RsAccounts::getCurrentAccountOptions() called but no account chosen!" << std::endl; + throw std::runtime_error("inconsistent configuration") ; + } + + return is_tor_only ; +} bool RsAccounts::GetAccountIds(std::list &ids) { diff --git a/libretroshare/src/rsserver/rsinit.cc b/libretroshare/src/rsserver/rsinit.cc index 2a8ae144f..f4458e42f 100644 --- a/libretroshare/src/rsserver/rsinit.cc +++ b/libretroshare/src/rsserver/rsinit.cc @@ -657,7 +657,7 @@ int RsInit::LoadCertificates(bool autoLoginNT) bool RsInit::RsClearAutoLogin() { RsPeerId preferredId; - if (!rsAccounts->getPreferredAccountId(preferredId)) + if (!RsAccounts::getSelectedAccountId(preferredId)) { std::cerr << "RsInit::RsClearAutoLogin() No Account Selected" << std::endl; return 0; @@ -817,11 +817,8 @@ RsGRouter *rsGRouter = NULL ; #include "pqi/p3linkmgr.h" #include "pqi/p3netmgr.h" -#ifndef RETROTOR #include "tcponudp/tou.h" #include "tcponudp/rsudpstack.h" -#endif - #ifdef RS_USE_BITDHT #include "dht/p3bitdht.h" @@ -868,6 +865,17 @@ RsControl *RsControl::instance() int RsServer::StartupRetroShare() { + RsPeerId ownId = AuthSSL::getAuthSSL()->OwnId(); + + std::cerr << "========================================================================" << std::endl; + std::cerr << "== RsInit:: starting up Retroshare core ==" << std::endl; + std::cerr << "== ==" << std::endl; + std::cerr << "== Account/SSL ID : " << ownId << " ==" << std::endl; + std::cerr << "== Node type : " << (RsAccounts::isHiddenNode()?"Hidden":"Normal") << " ==" << std::endl; + if(RsAccounts::isHiddenNode()) + std::cerr << "== Tor/I2P configuration : " << (RsAccounts::isTorAuto()?"Tor Auto":"Manual ") << " ==" << std::endl; + std::cerr << "========================================================================" << std::endl; + /**************************************************************************/ /* STARTUP procedure */ /**************************************************************************/ @@ -883,8 +891,6 @@ int RsServer::StartupRetroShare() return false ; } - RsPeerId ownId = AuthSSL::getAuthSSL()->OwnId(); - /**************************************************************************/ /* Any Initial Configuration (Commandline Options) */ /**************************************************************************/ @@ -981,36 +987,40 @@ int RsServer::StartupRetroShare() sockaddr_clear(&tmpladdr); tmpladdr.sin_port = htons(rsInitConfig->port); + rsUdpStack *mDhtStack = NULL ; + if(!RsAccounts::isHiddenNode()) + { #ifdef LOCALNET_TESTING - rsUdpStack *mDhtStack = new rsUdpStack(UDP_TEST_RESTRICTED_LAYER, tmpladdr); + mDhtStack = new rsUdpStack(UDP_TEST_RESTRICTED_LAYER, tmpladdr); - /* parse portRestrictions */ - unsigned int lport, uport; + /* parse portRestrictions */ + unsigned int lport, uport; - if (doPortRestrictions) - { - if (2 == sscanf(portRestrictions.c_str(), "%u-%u", &lport, &uport)) + if (doPortRestrictions) { - std::cerr << "Adding Port Restriction (" << lport << "-" << uport << ")"; - std::cerr << std::endl; - } - else - { - std::cerr << "Failed to parse Port Restrictions ... exiting"; - std::cerr << std::endl; - exit(1); - } + if (2 == sscanf(portRestrictions.c_str(), "%u-%u", &lport, &uport)) + { + std::cerr << "Adding Port Restriction (" << lport << "-" << uport << ")"; + std::cerr << std::endl; + } + else + { + std::cerr << "Failed to parse Port Restrictions ... exiting"; + std::cerr << std::endl; + exit(1); + } - RestrictedUdpLayer *url = (RestrictedUdpLayer *) mDhtStack->getUdpLayer(); - url->addRestrictedPortRange(lport, uport); - } + RestrictedUdpLayer *url = (RestrictedUdpLayer *) mDhtStack->getUdpLayer(); + url->addRestrictedPortRange(lport, uport); + } #else //LOCALNET_TESTING #ifdef RS_USE_BITDHT - rsUdpStack *mDhtStack = new rsUdpStack(tmpladdr); + mDhtStack = new rsUdpStack(tmpladdr); #endif #endif //LOCALNET_TESTING + } #ifdef RS_USE_BITDHT @@ -1090,96 +1100,105 @@ int RsServer::StartupRetroShare() /* construct the rest of the stack, important to build them in the correct order! */ /* MOST OF THIS IS COMMENTED OUT UNTIL THE REST OF libretroshare IS READY FOR IT! */ - UdpSubReceiver *udpReceivers[RSUDP_NUM_TOU_RECVERS]; - int udpTypes[RSUDP_NUM_TOU_RECVERS]; + p3BitDht *mBitDht = NULL ; + rsDht = NULL ; + rsFixedUdpStack *mProxyStack = NULL ; -#ifdef RS_USE_DHT_STUNNER - // FIRST DHT STUNNER. - UdpStunner *mDhtStunner = new UdpStunner(mDhtStack); - mDhtStunner->setTargetStunPeriod(300); /* slow (5mins) */ - mDhtStack->addReceiver(mDhtStunner); - -#ifdef LOCALNET_TESTING - mDhtStunner->SetAcceptLocalNet(); -#endif -#endif // RS_USE_DHT_STUNNER - - - // NEXT BITDHT. - p3BitDht *mBitDht = new p3BitDht(ownId, mLinkMgr, mNetMgr, mDhtStack, bootstrapfile, filteredipfile); - - /* install external Pointer for Interface */ - rsDht = mBitDht; - - // NEXT THE RELAY (NEED to keep a reference for installing RELAYS) - UdpRelayReceiver *mRelay = new UdpRelayReceiver(mDhtStack); - udpReceivers[RSUDP_TOU_RECVER_RELAY_IDX] = mRelay; /* RELAY Connections (DHT Port) */ - udpTypes[RSUDP_TOU_RECVER_RELAY_IDX] = TOU_RECEIVER_TYPE_UDPRELAY; - mDhtStack->addReceiver(udpReceivers[RSUDP_TOU_RECVER_RELAY_IDX]); - - // LAST ON THIS STACK IS STANDARD DIRECT TOU - udpReceivers[RSUDP_TOU_RECVER_DIRECT_IDX] = new UdpPeerReceiver(mDhtStack); /* standard DIRECT Connections (DHT Port) */ - udpTypes[RSUDP_TOU_RECVER_DIRECT_IDX] = TOU_RECEIVER_TYPE_UDPPEER; - mDhtStack->addReceiver(udpReceivers[RSUDP_TOU_RECVER_DIRECT_IDX]); - - // NOW WE BUILD THE SECOND STACK. - // Create the Second UdpStack... Port should be random (but openable!). - // We do this by binding to xx.xx.xx.xx:0 which which gives us a random port. - - struct sockaddr_in sndladdr; - sockaddr_clear(&sndladdr); - -#ifdef LOCALNET_TESTING - - // // HACK Proxy Port near Dht Port - For Relay Testing. - // uint16_t rndport = rsInitConfig->port + 3; - // sndladdr.sin_port = htons(rndport); - - rsFixedUdpStack *mProxyStack = new rsFixedUdpStack(UDP_TEST_RESTRICTED_LAYER, sndladdr); - - /* portRestrictions already parsed */ - if (doPortRestrictions) + if(!RsAccounts::isHiddenNode()) { - RestrictedUdpLayer *url = (RestrictedUdpLayer *) mProxyStack->getUdpLayer(); - url->addRestrictedPortRange(lport, uport); - } -#else - rsFixedUdpStack *mProxyStack = new rsFixedUdpStack(sndladdr); -#endif + UdpSubReceiver *udpReceivers[RSUDP_NUM_TOU_RECVERS]; + int udpTypes[RSUDP_NUM_TOU_RECVERS]; #ifdef RS_USE_DHT_STUNNER - // FIRSTLY THE PROXY STUNNER. - UdpStunner *mProxyStunner = new UdpStunner(mProxyStack); - mProxyStunner->setTargetStunPeriod(300); /* slow (5mins) */ - mProxyStack->addReceiver(mProxyStunner); + // FIRST DHT STUNNER. + UdpStunner *mDhtStunner = new UdpStunner(mDhtStack); + mDhtStunner->setTargetStunPeriod(300); /* slow (5mins) */ + mDhtStack->addReceiver(mDhtStunner); #ifdef LOCALNET_TESTING - mProxyStunner->SetAcceptLocalNet(); + mDhtStunner->SetAcceptLocalNet(); #endif #endif // RS_USE_DHT_STUNNER - // FINALLY THE PROXY UDP CONNECTIONS - udpReceivers[RSUDP_TOU_RECVER_PROXY_IDX] = new UdpPeerReceiver(mProxyStack); /* PROXY Connections (Alt UDP Port) */ - udpTypes[RSUDP_TOU_RECVER_PROXY_IDX] = TOU_RECEIVER_TYPE_UDPPEER; - mProxyStack->addReceiver(udpReceivers[RSUDP_TOU_RECVER_PROXY_IDX]); + // NEXT BITDHT. - // REAL INITIALISATION - WITH THREE MODES - tou_init((void **) udpReceivers, udpTypes, RSUDP_NUM_TOU_RECVERS); + + mBitDht = new p3BitDht(ownId, mLinkMgr, mNetMgr, mDhtStack, bootstrapfile, filteredipfile); + + // NEXT THE RELAY (NEED to keep a reference for installing RELAYS) + UdpRelayReceiver *mRelay = new UdpRelayReceiver(mDhtStack); + udpReceivers[RSUDP_TOU_RECVER_RELAY_IDX] = mRelay; /* RELAY Connections (DHT Port) */ + udpTypes[RSUDP_TOU_RECVER_RELAY_IDX] = TOU_RECEIVER_TYPE_UDPRELAY; + mDhtStack->addReceiver(udpReceivers[RSUDP_TOU_RECVER_RELAY_IDX]); + + // LAST ON THIS STACK IS STANDARD DIRECT TOU + udpReceivers[RSUDP_TOU_RECVER_DIRECT_IDX] = new UdpPeerReceiver(mDhtStack); /* standard DIRECT Connections (DHT Port) */ + udpTypes[RSUDP_TOU_RECVER_DIRECT_IDX] = TOU_RECEIVER_TYPE_UDPPEER; + mDhtStack->addReceiver(udpReceivers[RSUDP_TOU_RECVER_DIRECT_IDX]); + + /* install external Pointer for Interface */ + rsDht = mBitDht; + + // NOW WE BUILD THE SECOND STACK. + // Create the Second UdpStack... Port should be random (but openable!). + // We do this by binding to xx.xx.xx.xx:0 which which gives us a random port. + + struct sockaddr_in sndladdr; + sockaddr_clear(&sndladdr); + +#ifdef LOCALNET_TESTING + + // // HACK Proxy Port near Dht Port - For Relay Testing. + // uint16_t rndport = rsInitConfig->port + 3; + // sndladdr.sin_port = htons(rndport); + + mProxyStack = new rsFixedUdpStack(UDP_TEST_RESTRICTED_LAYER, sndladdr); + + /* portRestrictions already parsed */ + if (doPortRestrictions) + { + RestrictedUdpLayer *url = (RestrictedUdpLayer *) mProxyStack->getUdpLayer(); + url->addRestrictedPortRange(lport, uport); + } +#else + mProxyStack = new rsFixedUdpStack(sndladdr); +#endif #ifdef RS_USE_DHT_STUNNER - mBitDht->setupConnectBits(mDhtStunner, mProxyStunner, mRelay); + // FIRSTLY THE PROXY STUNNER. + UdpStunner *mProxyStunner = new UdpStunner(mProxyStack); + mProxyStunner->setTargetStunPeriod(300); /* slow (5mins) */ + mProxyStack->addReceiver(mProxyStunner); + +#ifdef LOCALNET_TESTING + mProxyStunner->SetAcceptLocalNet(); +#endif +#endif // RS_USE_DHT_STUNNER + + + // FINALLY THE PROXY UDP CONNECTIONS + udpReceivers[RSUDP_TOU_RECVER_PROXY_IDX] = new UdpPeerReceiver(mProxyStack); /* PROXY Connections (Alt UDP Port) */ + udpTypes[RSUDP_TOU_RECVER_PROXY_IDX] = TOU_RECEIVER_TYPE_UDPPEER; + mProxyStack->addReceiver(udpReceivers[RSUDP_TOU_RECVER_PROXY_IDX]); + + // REAL INITIALISATION - WITH THREE MODES + tou_init((void **) udpReceivers, udpTypes, RSUDP_NUM_TOU_RECVERS); + +#ifdef RS_USE_DHT_STUNNER + mBitDht->setupConnectBits(mDhtStunner, mProxyStunner, mRelay); #else // RS_USE_DHT_STUNNER - mBitDht->setupConnectBits(mRelay); + mBitDht->setupConnectBits(mRelay); #endif // RS_USE_DHT_STUNNER #ifdef RS_USE_DHT_STUNNER - mNetMgr->setAddrAssist(new stunAddrAssist(mDhtStunner), new stunAddrAssist(mProxyStunner)); + mNetMgr->setAddrAssist(new stunAddrAssist(mDhtStunner), new stunAddrAssist(mProxyStunner)); #endif // RS_USE_DHT_STUNNER -// #else //RS_USE_BITDHT -// /* install NULL Pointer for rsDht Interface */ -// rsDht = NULL; + // #else //RS_USE_BITDHT + // /* install NULL Pointer for rsDht Interface */ + // rsDht = NULL; #endif //RS_USE_BITDHT + } /**************************** BITDHT ***********************************/ @@ -1210,7 +1229,7 @@ int RsServer::StartupRetroShare() std::vector plugins_directories ; #ifdef __APPLE__ - plugins_directories.push_back(rsAccounts->PathDataDirectory()) ; + plugins_directories.push_back(RsAccounts::systemPathDataDirectory()) ; #endif #if !defined(WINDOWS_SYS) && defined(PLUGIN_DIR) plugins_directories.push_back(std::string(PLUGIN_DIR)) ; @@ -1543,13 +1562,17 @@ int RsServer::StartupRetroShare() #endif // new services to test. -#ifndef RETROTOR - p3BanList *mBanList = new p3BanList(serviceCtrl, mNetMgr); - rsBanList = mBanList ; - pqih -> addService(mBanList, true); -#else - rsBanList = NULL ; -#endif + + p3BanList *mBanList = NULL; + + if(!RsAccounts::isHiddenNode()) + { + mBanList = new p3BanList(serviceCtrl, mNetMgr); + rsBanList = mBanList ; + pqih -> addService(mBanList, true); + } + else + rsBanList = NULL ; #ifdef RS_USE_BITDHT mBitDht->setupPeerSharer(mBanList); @@ -1567,30 +1590,32 @@ int RsServer::StartupRetroShare() /**************************************************************************/ + if(!RsAccounts::isHiddenNode()) + { #ifdef RS_USE_BITDHT - mNetMgr->addNetAssistConnect(1, mBitDht); - mNetMgr->addNetListener(mDhtStack); - mNetMgr->addNetListener(mProxyStack); - + mNetMgr->addNetAssistConnect(1, mBitDht); + mNetMgr->addNetListener(mDhtStack); + mNetMgr->addNetListener(mProxyStack); #endif #ifdef RS_ENABLE_ZEROCONF - p3ZeroConf *mZeroConf = new p3ZeroConf( - AuthGPG::getAuthGPG()->getGPGOwnId(), ownId, - mLinkMgr, mNetMgr, mPeerMgr); - mNetMgr->addNetAssistConnect(2, mZeroConf); - mNetMgr->addNetListener(mZeroConf); + p3ZeroConf *mZeroConf = new p3ZeroConf( + AuthGPG::getAuthGPG()->getGPGOwnId(), ownId, + mLinkMgr, mNetMgr, mPeerMgr); + mNetMgr->addNetAssistConnect(2, mZeroConf); + mNetMgr->addNetListener(mZeroConf); #endif #ifdef RS_ENABLE_ZCNATASSIST - // Apple's UPnP & NAT-PMP assistance. - p3zcNatAssist *mZcNatAssist = new p3zcNatAssist(); - mNetMgr->addNetAssistFirewall(1, mZcNatAssist); + // Apple's UPnP & NAT-PMP assistance. + p3zcNatAssist *mZcNatAssist = new p3zcNatAssist(); + mNetMgr->addNetAssistFirewall(1, mZcNatAssist); #else - // Original UPnP Interface. - pqiNetAssistFirewall *mUpnpMgr = new upnphandler(); - mNetMgr->addNetAssistFirewall(1, mUpnpMgr); + // Original UPnP Interface. + pqiNetAssistFirewall *mUpnpMgr = new upnphandler(); + mNetMgr->addNetAssistFirewall(1, mUpnpMgr); #endif + } /**************************************************************************/ /* need to Monitor too! */ @@ -1623,9 +1648,10 @@ int RsServer::StartupRetroShare() mConfigMgr->addConfiguration("p3History.cfg" , mHistoryMgr); mConfigMgr->addConfiguration("p3Status.cfg" , mStatusSrv); mConfigMgr->addConfiguration("turtle.cfg" , tr); -#ifndef RETROTOR - mConfigMgr->addConfiguration("banlist.cfg" , mBanList); -#endif + + if(!RsAccounts::isHiddenNode()) + mConfigMgr->addConfiguration("banlist.cfg" , mBanList); + mConfigMgr->addConfiguration("servicecontrol.cfg", serviceCtrl); mConfigMgr->addConfiguration("reputations.cfg" , mReputations); #ifdef ENABLE_GROUTER @@ -1896,6 +1922,10 @@ int RsServer::StartupRetroShare() /* Startup this thread! */ start("rs main") ; + std::cerr << "========================================================================" << std::endl; + std::cerr << "== RsInit:: Retroshare core started ==" << std::endl; + std::cerr << "========================================================================" << std::endl; + return 1; } diff --git a/retroshare-gui/src/gui/GenCertDialog.cpp b/retroshare-gui/src/gui/GenCertDialog.cpp index 22206b1b4..def31196e 100644 --- a/retroshare-gui/src/gui/GenCertDialog.cpp +++ b/retroshare-gui/src/gui/GenCertDialog.cpp @@ -195,10 +195,10 @@ GenCertDialog::GenCertDialog(bool onlyGenerateIdentity, QWidget *parent) ui.nodeType_CB->setCurrentIndex(1); ui.nodeType_CB->setEnabled(false); #endif -#ifdef RETROTOR - ui.adv_checkbox->setChecked(false); - ui.adv_checkbox->setVisible(true); -#endif +//#ifdef RETROTOR +// ui.adv_checkbox->setChecked(false); +// ui.adv_checkbox->setVisible(true); +//#endif initKeyList(); setupState(); @@ -258,12 +258,7 @@ void GenCertDialog::mouseMoveEvent(QMouseEvent *e) void GenCertDialog::setupState() { bool adv_state = ui.adv_checkbox->isChecked(); - -#ifdef RETROTOR - bool retrotor = true ; -#else bool retrotor = false ; -#endif if(!adv_state) { diff --git a/retroshare-gui/src/gui/MainWindow.cpp b/retroshare-gui/src/gui/MainWindow.cpp index ffa7a49fd..07d0b01a5 100644 --- a/retroshare-gui/src/gui/MainWindow.cpp +++ b/retroshare-gui/src/gui/MainWindow.cpp @@ -84,12 +84,13 @@ #include "statusbar/ToasterDisable.h" #include "statusbar/SysTrayStatus.h" #include "statusbar/torstatus.h" -#include -#include -#include -#include -#include +#include "retroshare/rsstatus.h" +#include "retroshare/rsiface.h" +#include "retroshare/rspeers.h" +#include "retroshare/rsfiles.h" +#include "retroshare/rsnotify.h" +#include "retroshare/rsinit.h" #include "gui/gxschannels/GxsChannelDialog.h" #include "gui/gxsforums/GxsForumsDialog.h" @@ -250,14 +251,15 @@ MainWindow::MainWindow(QWidget* parent, Qt::WindowFlags flags) if(hiddenmode) { -#ifdef RETROTOR - torstatus = new TorStatus(); - torstatus->setVisible(Settings->valueFromGroup("StatusBar", "ShowTor", QVariant(true)).toBool()); - statusBar()->addWidget(torstatus); - torstatus->getTorStatus(); -#else - torstatus = NULL ; -#endif + if(RsAccounts::isHiddenNode()) + { + torstatus = new TorStatus(); + torstatus->setVisible(Settings->valueFromGroup("StatusBar", "ShowTor", QVariant(true)).toBool()); + statusBar()->addWidget(torstatus); + torstatus->getTorStatus(); + } + else + torstatus = NULL ; natstatus = NULL ; dhtstatus = NULL ; diff --git a/retroshare-gui/src/gui/settings/ServerPage.cpp b/retroshare-gui/src/gui/settings/ServerPage.cpp index dcfe29426..7cd537c68 100755 --- a/retroshare-gui/src/gui/settings/ServerPage.cpp +++ b/retroshare-gui/src/gui/settings/ServerPage.cpp @@ -29,11 +29,12 @@ #include -#include -#include -#include -#include -#include +#include "retroshare/rsbanlist.h" +#include "retroshare/rsconfig.h" +#include "retroshare/rsdht.h" +#include "retroshare/rspeers.h" +#include "retroshare/rsturtle.h" +#include "retroshare/rsinit.h" #include #include @@ -62,15 +63,6 @@ /// // Tabs numbers *after* non relevant tabs are removed. So do not use them to add/remove tabs!! -#ifdef RETROTOR -static const uint32_t TAB_HIDDEN_SERVICE_OUTGOING = 0; -static const uint32_t TAB_HIDDEN_SERVICE_INCOMING = 1; - -static const uint32_t TAB_NETWORK = 0; -static const uint32_t TAB_HIDDEN_SERVICE = 1; -static const uint32_t TAB_IP_FILTERS = 99; // This is a trick: these tabs do not exist, so enabling/disabling them has no effect -static const uint32_t TAB_RELAYS = 99; -#else const static uint32_t TAB_HIDDEN_SERVICE_OUTGOING = 0; const static uint32_t TAB_HIDDEN_SERVICE_INCOMING = 2; @@ -78,7 +70,6 @@ const static uint32_t TAB_NETWORK = 0; const static uint32_t TAB_IP_FILTERS = 1; const static uint32_t TAB_HIDDEN_SERVICE = 2; const static uint32_t TAB_RELAYS = 3; -#endif //#define SERVER_DEBUG 1 @@ -90,7 +81,8 @@ ServerPage::ServerPage(QWidget * parent, Qt::WindowFlags flags) manager = NULL ; -#ifdef RETROTOR + if(RsAccounts::isTorAuto()) + { // Here we use absolute numbers instead of consts defined above, because the consts correspond to the tab number *after* this tab removal. ui.tabWidget->removeTab(3) ; // remove relays. Not useful in Tor mode. @@ -109,7 +101,8 @@ ServerPage::ServerPage(QWidget * parent, Qt::WindowFlags flags) ui.hiddenpage_outHeader->setText(tr("Tor has been automatically configured by Retroshare. You shouldn't need to change anything here.")) ; ui.hiddenpage_inHeader->setText(tr("Tor has been automatically configured by Retroshare. You shouldn't need to change anything here.")) ; -#endif + } + ui.filteredIpsTable->setHorizontalHeaderItem(COLUMN_RANGE,new QTableWidgetItem(tr("IP Range"))) ; ui.filteredIpsTable->setHorizontalHeaderItem(COLUMN_STATUS,new QTableWidgetItem(tr("Status"))) ; ui.filteredIpsTable->setHorizontalHeaderItem(COLUMN_ORIGIN,new QTableWidgetItem(tr("Origin"))) ; diff --git a/retroshare-gui/src/gui/settings/rsharesettings.h b/retroshare-gui/src/gui/settings/rsharesettings.h index 99e33b5f2..0dfd3dc7f 100644 --- a/retroshare-gui/src/gui/settings/rsharesettings.h +++ b/retroshare-gui/src/gui/settings/rsharesettings.h @@ -187,9 +187,7 @@ public: /** Sets whether the bandwidth graph is always on top. */ void setBWGraphAlwaysOnTop(bool alwaysOnTop); -#ifdef RETROTOR void setHiddenServiceKey() ; -#endif uint getNewsFeedFlags(); void setNewsFeedFlags(uint flags); diff --git a/retroshare-gui/src/gui/statusbar/torstatus.cpp b/retroshare-gui/src/gui/statusbar/torstatus.cpp index 399243ac4..26c9a896a 100644 --- a/retroshare-gui/src/gui/statusbar/torstatus.cpp +++ b/retroshare-gui/src/gui/statusbar/torstatus.cpp @@ -26,12 +26,11 @@ #include #include "retroshare/rsconfig.h" +#include "retroshare/rsinit.h" #include "util/misc.h" -#ifdef RETROTOR #include "TorControl/TorManager.h" #include "TorControl/TorControl.h" -#endif #include @@ -86,53 +85,56 @@ void TorStatus::getTorStatus() int S = QFontMetricsF(torstatusLabel->font()).height(); -#ifdef RETROTOR - // get Tor status - int tor_control_status = Tor::TorManager::instance()->control()->status(); - int torstatus = Tor::TorManager::instance()->control()->torStatus(); - - QString tor_control_status_str,torstatus_str ; - bool tor_control_ok ; - - switch(tor_control_status) + if(RsAccounts::isTorAuto()) { - default: - case Tor::TorControl::Error : tor_control_ok = false ; tor_control_status_str = "Error" ; break ; - case Tor::TorControl::NotConnected: tor_control_ok = false ; tor_control_status_str = "Not connected" ; break ; - case Tor::TorControl::Connecting: tor_control_ok = false ; tor_control_status_str = "Connecting" ; break ; - case Tor::TorControl::Authenticating: tor_control_ok = false ; tor_control_status_str = "Authenticating" ; break ; - case Tor::TorControl::Connected: tor_control_ok = true ; tor_control_status_str = "Connected" ; break ; - } + // get Tor status + int tor_control_status = Tor::TorManager::instance()->control()->status(); + int torstatus = Tor::TorManager::instance()->control()->torStatus(); - switch(torstatus) - { - default: - case Tor::TorControl::TorUnknown: torstatus_str = "Unknown" ; break ; - case Tor::TorControl::TorOffline: torstatus_str = "Tor offline" ; break ; - case Tor::TorControl::TorReady: torstatus_str = "Tor ready" ; break ; - } + QString tor_control_status_str,torstatus_str ; + bool tor_control_ok ; + + switch(tor_control_status) + { + default: + case Tor::TorControl::Error : tor_control_ok = false ; tor_control_status_str = "Error" ; break ; + case Tor::TorControl::NotConnected: tor_control_ok = false ; tor_control_status_str = "Not connected" ; break ; + case Tor::TorControl::Connecting: tor_control_ok = false ; tor_control_status_str = "Connecting" ; break ; + case Tor::TorControl::Authenticating: tor_control_ok = false ; tor_control_status_str = "Authenticating" ; break ; + case Tor::TorControl::Connected: tor_control_ok = true ; tor_control_status_str = "Connected" ; break ; + } + + switch(torstatus) + { + default: + case Tor::TorControl::TorUnknown: torstatus_str = "Unknown" ; break ; + case Tor::TorControl::TorOffline: torstatus_str = "Tor offline" ; break ; + case Tor::TorControl::TorReady: torstatus_str = "Tor ready" ; break ; + } #define MIN_RS_NET_SIZE 10 - if(torstatus == Tor::TorControl::TorOffline || !online || !tor_control_ok) + if(torstatus == Tor::TorControl::TorOffline || !online || !tor_control_ok) + { + // RED - some issue. + torstatusLabel->setPixmap(QPixmap(":/icons/tor-stopping.png").scaledToHeight(1.5*S,Qt::SmoothTransformation)); + torstatusLabel->setToolTip( text + tr("Tor is currently offline")); + } + else if(torstatus == Tor::TorControl::TorReady && online && tor_control_ok) + { + torstatusLabel->setPixmap(QPixmap(":/icons/tor-on.png").scaledToHeight(1.5*S,Qt::SmoothTransformation)); + torstatusLabel->setToolTip( text + tr("Tor is OK")); + } + else // torstatus == Tor::TorControl::TorUnknown + { + // GRAY. + torstatusLabel->setPixmap(QPixmap(":/icons/no-tor.png").scaledToHeight(1.5*S,Qt::SmoothTransformation)); + torstatusLabel->setToolTip( text + tr("No tor configuration")); + } + } + else { - // RED - some issue. - torstatusLabel->setPixmap(QPixmap(":/icons/tor-stopping.png").scaledToHeight(1.5*S,Qt::SmoothTransformation)); + torstatusLabel->setPixmap(QPixmap(":/icons/tor-stopping.png").scaledToHeight(S,Qt::SmoothTransformation)); torstatusLabel->setToolTip( text + tr("Tor is currently offline")); } - else if(torstatus == Tor::TorControl::TorReady && online && tor_control_ok) - { - torstatusLabel->setPixmap(QPixmap(":/icons/tor-on.png").scaledToHeight(1.5*S,Qt::SmoothTransformation)); - torstatusLabel->setToolTip( text + tr("Tor is OK")); - } - else // torstatus == Tor::TorControl::TorUnknown - { - // GRAY. - torstatusLabel->setPixmap(QPixmap(":/icons/no-tor.png").scaledToHeight(1.5*S,Qt::SmoothTransformation)); - torstatusLabel->setToolTip( text + tr("No tor configuration")); - } -#else - torstatusLabel->setPixmap(QPixmap(":/icons/tor-stopping.png").scaledToHeight(S,Qt::SmoothTransformation)); - torstatusLabel->setToolTip( text + tr("Tor is currently offline")); -#endif } diff --git a/retroshare-gui/src/main.cpp b/retroshare-gui/src/main.cpp index 604c15026..ad3298eab 100644 --- a/retroshare-gui/src/main.cpp +++ b/retroshare-gui/src/main.cpp @@ -51,10 +51,8 @@ # include "gui/settings/WebuiPage.h" #endif -#ifdef RETROTOR -# include "TorControl/TorManager.h" -# include "TorControl/TorControlWindow.h" -#endif +#include "TorControl/TorManager.h" +#include "TorControl/TorControlWindow.h" #include "retroshare/rsidentity.h" #include "retroshare/rspeers.h" @@ -355,8 +353,7 @@ feenableexcept(FE_INVALID | FE_DIVBYZERO); RsAccounts::getCurrentAccountOptions(is_hidden_node,is_auto_tor,is_first_time); -#ifdef UNFINISHED - if(RsAccounts::AccountType() == RS_ACCOUNT_TYPE_HIDDEN_TOR_AUTO) + if(is_auto_tor) { // Now that we know the Tor service running, and we know the SSL id, we can make sure it provides a viable hidden service @@ -402,7 +399,6 @@ feenableexcept(FE_INVALID | FE_DIVBYZERO); } } } -#endif QSplashScreen splashScreen(QPixmap(":/images/logo/logo_splash.png")/* , Qt::WindowStaysOnTopHint*/); @@ -418,33 +414,35 @@ feenableexcept(FE_INVALID | FE_DIVBYZERO); return 1; } -#ifdef RETROTOR - // Tor works with viable hidden service. Let's use it! + if(is_auto_tor) + { + // Tor works with viable hidden service. Let's use it! - QString service_id ; - QString onion_address ; - uint16_t service_port ; - uint16_t service_target_port ; - uint16_t proxy_server_port ; - QHostAddress service_target_address ; - QHostAddress proxy_server_address ; + QString service_id ; + QString onion_address ; + uint16_t service_port ; + uint16_t service_target_port ; + uint16_t proxy_server_port ; + QHostAddress service_target_address ; + QHostAddress proxy_server_address ; - torManager->getHiddenServiceInfo(service_id,onion_address,service_port,service_target_address,service_target_port); - torManager->getProxyServerInfo(proxy_server_address,proxy_server_port) ; + Tor::TorManager *torManager = Tor::TorManager::instance(); + torManager->getHiddenServiceInfo(service_id,onion_address,service_port,service_target_address,service_target_port); + torManager->getProxyServerInfo(proxy_server_address,proxy_server_port) ; - std::cerr << "Got hidden service info: " << std::endl; - std::cerr << " onion address : " << onion_address.toStdString() << std::endl; - std::cerr << " service_id : " << service_id.toStdString() << std::endl; - std::cerr << " service port : " << service_port << std::endl; - std::cerr << " target port : " << service_target_port << std::endl; - std::cerr << " target address : " << service_target_address.toString().toStdString() << std::endl; + std::cerr << "Got hidden service info: " << std::endl; + std::cerr << " onion address : " << onion_address.toStdString() << std::endl; + std::cerr << " service_id : " << service_id.toStdString() << std::endl; + std::cerr << " service port : " << service_port << std::endl; + std::cerr << " target port : " << service_target_port << std::endl; + std::cerr << " target address : " << service_target_address.toString().toStdString() << std::endl; - std::cerr << "Setting proxy server to " << service_target_address.toString().toStdString() << ":" << service_target_port << std::endl; + std::cerr << "Setting proxy server to " << service_target_address.toString().toStdString() << ":" << service_target_port << std::endl; - rsPeers->setLocalAddress(rsPeers->getOwnId(), service_target_address.toString().toStdString(), service_target_port); - rsPeers->setHiddenNode(rsPeers->getOwnId(), onion_address.toStdString(), service_port); - rsPeers->setProxyServer(RS_HIDDEN_TYPE_TOR, proxy_server_address.toString().toStdString(),proxy_server_port) ; -#endif + rsPeers->setLocalAddress(rsPeers->getOwnId(), service_target_address.toString().toStdString(), service_target_port); + rsPeers->setHiddenNode(rsPeers->getOwnId(), onion_address.toStdString(), service_port); + rsPeers->setProxyServer(RS_HIDDEN_TYPE_TOR, proxy_server_address.toString().toStdString(),proxy_server_port) ; + } Rshare::initPlugins(); diff --git a/retroshare-gui/src/retroshare-gui.pro b/retroshare-gui/src/retroshare-gui.pro index 8899de337..d973e5de8 100644 --- a/retroshare-gui/src/retroshare-gui.pro +++ b/retroshare-gui/src/retroshare-gui.pro @@ -19,11 +19,9 @@ libresapihttpserver { !include("../../libretroshare/src/use_libretroshare.pri"):error("Including") -retrotor { - FORMS += TorControl/TorControlWindow.ui - SOURCES += TorControl/TorControlWindow.cpp - HEADERS += TorControl/TorControlWindow.h -} +FORMS += TorControl/TorControlWindow.ui +SOURCES += TorControl/TorControlWindow.cpp +HEADERS += TorControl/TorControlWindow.h #QMAKE_CFLAGS += -fmudflap #LIBS *= /usr/lib/gcc/x86_64-linux-gnu/4.4/libmudflap.a /usr/lib/gcc/x86_64-linux-gnu/4.4/libmudflapth.a @@ -285,7 +283,8 @@ wikipoos { LIBS *= $$OUT_PWD/../../supportlibs/pegmarkdown/lib/libpegmarkdown.a } -retrotor { +# Tor controller + HEADERS += TorControl/AddOnionCommand.h \ TorControl/AuthenticateCommand.h \ TorControl/GetConfCommand.h \ @@ -324,7 +323,6 @@ SOURCES += TorControl/AddOnionCommand.cpp \ TorControl/SecureRNG.cpp \ TorControl/Settings.cpp \ TorControl/StrUtil.cpp -} # Input HEADERS += rshare.h \ diff --git a/retroshare.pri b/retroshare.pri index 79527a7c8..1e237f97c 100644 --- a/retroshare.pri +++ b/retroshare.pri @@ -91,15 +91,6 @@ no_sqlcipher:CONFIG -= sqlcipher CONFIG *= no_rs_autologin rs_autologin:CONFIG -= no_rs_autologin -# To build RetroShare Tor only version with automatic hidden node setup append -# the following assignation to qmake command line "CONFIG+=retrotor" -CONFIG *= no_retrotor -retrotor { - CONFIG -= no_retrotor - CONFIG *= rs_onlyhiddennode - DEFINES *= RETROTOR -} - # To have only hidden node generation append the following assignation # to qmake command line "CONFIG+=rs_onlyhiddennode" CONFIG *= no_rs_onlyhiddennode @@ -144,7 +135,7 @@ rs_macos10.10:CONFIG -= rs_macos10.11 rs_macos10.12:CONFIG -= rs_macos10.11 # To disable deep search append the following assignation to qmake command line -# "CONFIG+=no_rs_deep_search" +CONFIG+=no_rs_deep_search CONFIG *= rs_deep_search no_rs_deep_search:CONFIG -= rs_deep_search