diff --git a/libretroshare/src/libretroshare.pro b/libretroshare/src/libretroshare.pro index de0cfed2a..490cfb39c 100644 --- a/libretroshare/src/libretroshare.pro +++ b/libretroshare/src/libretroshare.pro @@ -493,7 +493,6 @@ SOURCES += rsserver/p3discovery.cc \ rsserver/p3msgs.cc \ rsserver/p3peers.cc \ rsserver/p3status.cc \ - rsserver/rsiface.cc \ rsserver/rsinit.cc \ rsserver/rsloginhandler.cc \ rsserver/rstypes.cc \ diff --git a/libretroshare/src/pqi/authssl.cc b/libretroshare/src/pqi/authssl.cc index 04d072b0a..b7c87ba25 100644 --- a/libretroshare/src/pqi/authssl.cc +++ b/libretroshare/src/pqi/authssl.cc @@ -326,7 +326,10 @@ static int initLib = 0; sslctx = SSL_CTX_new(TLSv1_method()); // setup cipher lists. - SSL_CTX_set_cipher_list(sslctx, "DEFAULT"); + std::string cipherString = "HIGH:!DSS:!aNULL:!3DES"; + //SSL_CTX_set_cipher_list(sslctx, "DEFAULT"); + SSL_CTX_set_cipher_list(sslctx, cipherString.c_str()); + // certificates (Set Local Server Certificate). FILE *ownfp = RsDirUtil::rs_fopen(cert_file, "r"); diff --git a/libretroshare/src/retroshare/rsconfig.h b/libretroshare/src/retroshare/rsconfig.h index b1e8ebe55..c1726b47d 100644 --- a/libretroshare/src/retroshare/rsconfig.h +++ b/libretroshare/src/retroshare/rsconfig.h @@ -182,8 +182,10 @@ class RsConfigNetStatus { localPort = extPort = 0 ; firewalled = forwardPort = false ; - DHTActive = uPnPActive = netLocalOk = netUpnpOk = netDhtOk = netStunOk = netExtraAddressOk = false ; - uPnPState = DHTPeers = 0 ; + DHTActive = uPnPActive = netLocalOk = netUpnpOk = netDhtOk = netStunOk = netExtAddressOk = false ; + uPnPState = 0 ; + //DHTPeers = 0 ; + } std::string ownId; @@ -193,7 +195,7 @@ class RsConfigNetStatus int localPort; std::string extAddr; int extPort; - std::string extName; + std::string extDynDns; bool firewalled; bool forwardPort; @@ -203,14 +205,13 @@ class RsConfigNetStatus bool uPnPActive; int uPnPState; - int DHTPeers; /* Flags for Network Status */ bool netLocalOk; /* That we've talked to someone! */ bool netUpnpOk; /* upnp is enabled and active */ bool netDhtOk; /* response from dht */ bool netStunOk; /* recvd stun / udp packets */ - bool netExtraAddressOk; /* recvd ip address with external finder*/ + bool netExtAddressOk; /* from Dht/Stun or External IP Finder */ uint32_t netDhtNetSize; /* response from dht */ uint32_t netDhtRsNetSize; /* response from dht */ diff --git a/libretroshare/src/retroshare/rsiface.h b/libretroshare/src/retroshare/rsiface.h index 35f06abde..dac20747e 100644 --- a/libretroshare/src/retroshare/rsiface.h +++ b/libretroshare/src/retroshare/rsiface.h @@ -32,15 +32,12 @@ #include class NotifyBase; -class RsIface; class RsControl; class RsInit; class RsPeerCryptoParams; struct TurtleFileInfo ; /* declare single RsIface for everyone to use! */ - -extern RsIface *rsiface; extern RsControl *rsicontrol; /* RsInit -> Configuration Parameters for RetroShare Startup @@ -71,76 +68,15 @@ bool RsClearAutoLogin(std::string basedir); // Handle actual Login. int LoadCertificates(RsInit *config, bool autoLoginNT); -RsIface *createRsIface (NotifyBase ¬ify); -RsControl *createRsControl(RsIface &iface, NotifyBase ¬ify); - - -class RsIface /* The Main Interface Class - create a single one! */ -{ -public: - RsIface(NotifyBase &callback) - :cb(callback) { return; } - virtual ~RsIface() { return; } - -/****************************************/ - - /* Stubs for Very Important Fns -> Locking Functions */ -virtual void lockData() = 0; -virtual void unlockData() = 0; - - const RsConfig &getConfig() - { return mConfig; } -/****************************************/ - - - /* Flags to indicate used or not */ - enum DataFlags - { - Neighbour = 0, - Friend = 1, - DirLocal = 2, /* Not Used - QModel instead */ - DirRemote = 3, /* Not Used - QModel instead */ - Transfer = 4, - Message = 5, - Channel = 6, - Chat = 7, - Recommend = 8, - Config = 9, - NumOfFlags = 10 - }; - - - /* - * Operations for flags - */ - -bool setChanged(DataFlags set); /* set to true */ -bool getChanged(DataFlags set); /* leaves it */ -bool hasChanged(DataFlags set); /* resets it */ - - private: - -void fillLists(); /* create some dummy data to display */ - - /* Internals */ - bool mChanged[NumOfFlags]; - - RsConfig mConfig; - - NotifyBase &cb; - - /* Classes which can update the Lists! */ - friend class RsControl; - friend class RsServer; -}; +RsControl *createRsControl(NotifyBase ¬ify); class RsControl /* The Main Interface Class - for controlling the server */ { public: - RsControl(RsIface &i, NotifyBase &callback) - :cb(callback), rsIface(i) { return; } + RsControl(NotifyBase &callback) + :cb(callback) { return; } virtual ~RsControl() { return; } @@ -165,13 +101,11 @@ class RsControl /* The Main Interface Class - for controlling the server */ /****************************************/ NotifyBase & getNotify() { return cb; } - RsIface & getIface() { return rsIface; } virtual bool getPeerCryptoDetails(const std::string& ssl_id,RsPeerCryptoParams& params) = 0; private: NotifyBase &cb; - RsIface &rsIface; }; diff --git a/libretroshare/src/retroshare/rstypes.h b/libretroshare/src/retroshare/rstypes.h index 9a3807331..b8a3ae4ea 100644 --- a/libretroshare/src/retroshare/rstypes.h +++ b/libretroshare/src/retroshare/rstypes.h @@ -99,58 +99,6 @@ enum DwlSpeed { SPEED_LOW = 0x00, -/* matched to the uPnP states */ -#define UPNP_STATE_UNINITIALISED 0 -#define UPNP_STATE_UNAVAILABILE 1 -#define UPNP_STATE_READY 2 -#define UPNP_STATE_FAILED_TCP 3 -#define UPNP_STATE_FAILED_UDP 4 -#define UPNP_STATE_ACTIVE 5 - -class RsConfig -{ - public: - RsConfig() - { - localPort = extPort = 0 ; - firewalled = forwardPort = false ; - promptAtBoot = 0 ; - DHTActive = uPnPActive = netLocalOk = netUpnpOk = netDhtOk = netStunOk = netExtraAddressOk = false ; - uPnPState = DHTPeers = 0 ; - } - std::string ownId; - std::string ownName; - - std::string localAddr; - int localPort; - std::string extAddr; - int extPort; - std::string extName; - - bool firewalled; - bool forwardPort; - - int promptAtBoot; /* popup the password prompt */ - - /* older data types */ - bool DHTActive; - bool uPnPActive; - - int uPnPState; - int DHTPeers; - - /* Flags for Network Status */ - bool netLocalOk; /* That we've talked to someone! */ - bool netUpnpOk; /* upnp is enabled and active */ - bool netDhtOk; /* response from dht */ - bool netStunOk; /* recvd stun / udp packets */ - bool netExtraAddressOk; /* recvd ip address with external finder*/ - - uint32_t netDhtNetSize; /* response from dht */ - uint32_t netDhtRsNetSize; /* response from dht */ - -}; - /********************** For Search Interface *****************/ /* This is still rough, implement later! */ diff --git a/libretroshare/src/rsserver/p3face-config.cc b/libretroshare/src/rsserver/p3face-config.cc index aef64505d..14c6ff172 100644 --- a/libretroshare/src/rsserver/p3face-config.cc +++ b/libretroshare/src/rsserver/p3face-config.cc @@ -66,68 +66,6 @@ int RsServer::ConfigSetBootPrompt( bool /*on*/ ) return 1; } - -int RsServer::UpdateAllConfig() -{ - /* fill the rsiface class */ - RsIface &iface = getIface(); - - /* lock Mutexes */ - lockRsCore(); /* LOCK */ - iface.lockData(); /* LOCK */ - - RsConfig &config = iface.mConfig; - - config.ownId = AuthSSL::getAuthSSL()->OwnId(); - config.ownName = AuthGPG::getAuthGPG()->getGPGOwnName(); - peerState pstate; - mPeerMgr->getOwnNetStatus(pstate); - - /* ports */ - config.localAddr = rs_inet_ntoa(pstate.localaddr.sin_addr); - config.localPort = ntohs(pstate.localaddr.sin_port); - - config.firewalled = true; - config.forwardPort = true; - - config.extAddr = rs_inet_ntoa(pstate.serveraddr.sin_addr); - config.extPort = ntohs(pstate.serveraddr.sin_port); - config.promptAtBoot = true; /* popup the password prompt */ - - /* update network configuration */ - - pqiNetStatus status; - mNetMgr->getNetStatus(status); - - config.netLocalOk = status.mLocalAddrOk; - config.netUpnpOk = status.mUpnpOk; - config.netStunOk = false; - config.netExtraAddressOk = status.mExtAddrOk; - - config.netDhtOk = status.mDhtOk; - config.netDhtNetSize = status.mDhtNetworkSize; - config.netDhtRsNetSize = status.mDhtRsNetworkSize; - - /* update DHT/UPnP config */ - - config.uPnPState = mNetMgr->getUPnPState(); - config.uPnPActive = mNetMgr->getUPnPEnabled(); - config.DHTPeers = 20; - config.DHTActive = mNetMgr->getDHTEnabled(); - - /* Notify of Changes */ -// iface.setChanged(RsIface::Config); - rsicontrol->getNotify().notifyListChange(NOTIFY_LIST_CONFIG, NOTIFY_TYPE_MOD); - - /* unlock Mutexes */ - iface.unlockData(); /* UNLOCK */ - unlockRsCore(); /* UNLOCK */ - - return 1; - - -} - void RsServer::ConfigFinalSave() { /* force saving of transfers TODO */ diff --git a/libretroshare/src/rsserver/p3face-server.cc b/libretroshare/src/rsserver/p3face-server.cc index 625e11ff2..7c42f6fac 100644 --- a/libretroshare/src/rsserver/p3face-server.cc +++ b/libretroshare/src/rsserver/p3face-server.cc @@ -51,8 +51,8 @@ int rsserverzone = 101; #define WARN_BIG_CYCLE_TIME (0.2) -RsServer::RsServer(RsIface &i, NotifyBase &callback) - :RsControl(i, callback), coreMutex("RsServer") +RsServer::RsServer(NotifyBase &callback) + :RsControl(callback), coreMutex("RsServer") { ftserver = NULL; @@ -232,8 +232,6 @@ void RsServer::run() #ifdef DEBUG_TICK std::cerr << "RsServer::run() Updates()" << std::endl; #endif - UpdateAllConfig(); - mConfigMgr->tick(); /* saves stuff */ diff --git a/libretroshare/src/rsserver/p3face.h b/libretroshare/src/rsserver/p3face.h index 0a61391fe..cf8a7664d 100644 --- a/libretroshare/src/rsserver/p3face.h +++ b/libretroshare/src/rsserver/p3face.h @@ -87,7 +87,7 @@ class RsServer: public RsControl, public RsThread /****************************************/ /* p3face.cc: main loop / util fns / locking. */ - RsServer(RsIface &i, NotifyBase &callback); + RsServer(NotifyBase &callback); virtual ~RsServer(); /* Thread Fn: Run the Core */ @@ -153,8 +153,6 @@ class RsServer: public RsControl, public RsThread * i.e. releases all held resources and saves current configuration */ virtual void rsGlobalShutDown( ); - private: - int UpdateAllConfig(); /****************************************/ diff --git a/libretroshare/src/rsserver/p3serverconfig.cc b/libretroshare/src/rsserver/p3serverconfig.cc index b6a5e313b..617a0d611 100644 --- a/libretroshare/src/rsserver/p3serverconfig.cc +++ b/libretroshare/src/rsserver/p3serverconfig.cc @@ -27,6 +27,9 @@ #include "rsserver/p3serverconfig.h" #include "services/p3bwctrl.h" +#include "pqi/authgpg.h" +#include "pqi/authssl.h" + RsServerConfig *rsConfig = NULL; static const std::string pqih_ftr("PQIH_FTR"); @@ -137,16 +140,50 @@ bool p3ServerConfig::setConfigurationOption(uint32_t key, const std::string &opt return true; } - /* From RsIface::RsConfig */ - -int p3ServerConfig::getConfigNetStatus(RsConfigNetStatus &/*status*/) +int p3ServerConfig::getConfigNetStatus(RsConfigNetStatus &status) { - return 0; + status.ownId = AuthSSL::getAuthSSL()->OwnId(); + status.ownName = AuthGPG::getAuthGPG()->getGPGOwnName(); + + // Details from PeerMgr. + peerState pstate; + mPeerMgr->getOwnNetStatus(pstate); + + status.localAddr = rs_inet_ntoa(pstate.localaddr.sin_addr); + status.localPort = ntohs(pstate.localaddr.sin_port); + + status.extAddr = rs_inet_ntoa(pstate.serveraddr.sin_addr); + status.extPort = ntohs(pstate.serveraddr.sin_port); + status.extDynDns = pstate.dyndns; + + status.firewalled = true; + status.forwardPort = true; + + /* update network configuration */ + pqiNetStatus nstatus; + mNetMgr->getNetStatus(nstatus); + + status.netLocalOk = nstatus.mLocalAddrOk; + status.netUpnpOk = nstatus.mUpnpOk; + status.netStunOk = false; + status.netExtAddressOk = nstatus.mExtAddrOk; + + status.netDhtOk = nstatus.mDhtOk; + status.netDhtNetSize = nstatus.mDhtNetworkSize; + status.netDhtRsNetSize = nstatus.mDhtRsNetworkSize; + + /* update DHT/UPnP status */ + status.uPnPState = mNetMgr->getUPnPState(); + status.uPnPActive = mNetMgr->getUPnPEnabled(); + status.DHTActive = mNetMgr->getDHTEnabled(); + + return 1; } int p3ServerConfig::getConfigStartup(RsConfigStartup &/*params*/) { + //status.promptAtBoot = true; /* popup the password prompt */ return 0; } diff --git a/libretroshare/src/rsserver/rsiface.cc b/libretroshare/src/rsserver/rsiface.cc deleted file mode 100644 index 0110eeed1..000000000 --- a/libretroshare/src/rsserver/rsiface.cc +++ /dev/null @@ -1,107 +0,0 @@ - -/* - * "$Id: rsiface.cc,v 1.6 2007-04-15 18:45:23 rmf24 Exp $" - * - * RetroShare C++ Interface. - * - * Copyright 2004-2007 by Robert Fernie. - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Library General Public - * License Version 2 as published by the Free Software Foundation. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Library General Public License for more details. - * - * You should have received a copy of the GNU Library General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA. - * - * Please report all bugs and problems to "retroshare@lunamutt.com". - * - */ - - - -#include "retroshare/rsiface.h" -#include "util/rsdir.h" - -/* global variable */ -RsIface *rsiface = NULL; - - -/* set to true */ -bool RsIface::setChanged(DataFlags set) -{ - if ((int) set < (int) NumOfFlags) - { - /* go for it */ - mChanged[(int) set ] = true; - return true; - } - return false; -} - - -/* leaves it */ -bool RsIface::getChanged(DataFlags set) -{ - if ((int) set < (int) NumOfFlags) - { - /* go for it */ - return mChanged[(int) set ]; - } - return false; -} - -/* resets it */ -bool RsIface::hasChanged(DataFlags set) -{ - if ((int) set < (int) NumOfFlags) - { - /* go for it */ - if (mChanged[(int) set ]) - { - mChanged[(int) set ] = false; - return true; - } - } - return false; -} - -/*************************** THE REAL RSIFACE (with MUTEXES) *******/ - -#include "util/rsthreads.h" - -class RsIfaceReal: public RsIface -{ -public: - RsIfaceReal(NotifyBase &callback) - :RsIface(callback), rsIfaceMutex("RsIface") - { return; } - - virtual void lockData() - { - return rsIfaceMutex.lock(); - } - - virtual void unlockData() - { - return rsIfaceMutex.unlock(); - } - -private: - RsMutex rsIfaceMutex; -}; - -RsIface *createRsIface(NotifyBase &cb) -{ - rsiface = new RsIfaceReal(cb); - return rsiface; -} - - - diff --git a/libretroshare/src/rsserver/rsinit.cc b/libretroshare/src/rsserver/rsinit.cc index 37e9598f9..244a1e608 100644 --- a/libretroshare/src/rsserver/rsinit.cc +++ b/libretroshare/src/rsserver/rsinit.cc @@ -1824,9 +1824,9 @@ RsTurtle *rsTurtle = NULL ; #include "services/p3dsdv.h" -RsControl *createRsControl(RsIface &iface, NotifyBase ¬ify) +RsControl *createRsControl(NotifyBase ¬ify) { - RsServer *srv = new RsServer(iface, notify); + RsServer *srv = new RsServer(notify); rsicontrol = srv; return srv; } diff --git a/libretroshare/src/turtle/rsturtleitem.cc b/libretroshare/src/turtle/rsturtleitem.cc index 9446e8686..5813fd84e 100644 --- a/libretroshare/src/turtle/rsturtleitem.cc +++ b/libretroshare/src/turtle/rsturtleitem.cc @@ -544,7 +544,7 @@ RsTurtleGenericDataItem::RsTurtleGenericDataItem(void *data,uint32_t pktsize) if(data_bytes != NULL) { - memcpy(data_bytes,data+offset,data_size) ; + memcpy(data_bytes,(void *)((uint8_t *)data+offset),data_size) ; offset += data_size ; } else @@ -585,7 +585,7 @@ bool RsTurtleGenericDataItem::serialize(void *data,uint32_t& pktsize) ok &= setRawUInt32(data, tlvsize, &offset, tunnel_id); ok &= setRawUInt32(data, tlvsize, &offset, data_size); - memcpy(data+offset,data_bytes,data_size) ; + memcpy((void *)((uint8_t *)data+offset),data_bytes,data_size) ; offset += data_size ; if (offset != tlvsize)