added settings page for plugins.

git-svn-id: http://svn.code.sf.net/p/retroshare/code/trunk@4283 b45a01b8-16f6-495d-af2f-9b41ad6348cc
This commit is contained in:
csoler 2011-06-17 19:59:01 +00:00
parent 3c93d21b34
commit e6f2d22a8c
12 changed files with 699 additions and 6 deletions

View file

@ -138,7 +138,8 @@ PUBLIC_HEADERS = retroshare/rsblogs.h \
retroshare/rsturtle.h \
retroshare/rstypes.h
HEADERS += plugins/pluginmanager.h
HEADERS += plugins/pluginmanager.h \
plugins/dlfcn_win32.h
HEADERS += $$PUBLIC_HEADERS
@ -483,7 +484,8 @@ SOURCES += rsserver/p3discovery.cc \
rsserver/rsloginhandler.cc \
rsserver/rstypes.cc
SOURCES += plugins/pluginmanager.cc
SOURCES += plugins/pluginmanager.cc \
plugins/dlfcn_win32.cc
SOURCES += serialiser/rsbaseitems.cc \
serialiser/rsbaseserial.cc \

View file

@ -20,6 +20,8 @@
std::string RsPluginManager::_plugin_entry_symbol ;
std::string RsPluginManager::_local_cache_dir ;
std::string RsPluginManager::_remote_cache_dir ;
std::vector<std::string> RsPluginManager::_plugin_directories ;
ftServer *RsPluginManager::_ftserver = NULL ;
p3ConnectMgr *RsPluginManager::_connectmgr = NULL ;
@ -45,6 +47,7 @@ bool RsPluginManager::acceptablePluginName(const std::string& name)
void RsPluginManager::loadPlugins(const std::vector<std::string>& plugin_directories)
{
_plugin_directories = plugin_directories ;
_plugin_entry_symbol = "RETROSHARE_PLUGIN_provide" ;
// 0 - get the list of files to read
@ -55,7 +58,7 @@ void RsPluginManager::loadPlugins(const std::vector<std::string>& plugin_directo
if(!dirIt.isValid())
{
std::cerr << "Plugin directory : " << plugin_directories[i] << " does not exist." << std::endl ;
return ;
continue ;
}
while(dirIt.readdir())

View file

@ -16,6 +16,8 @@ class RsPluginManager: public RsPluginHandler
virtual int nbPlugins() const { return _plugins.size() ; }
virtual RsPlugin *plugin(int i) { return _plugins[i] ; }
virtual const std::vector<std::string>& getPluginDirectories() const { return _plugin_directories ; }
virtual void slowTickPlugins(time_t sec) ;
virtual void addConfigurations(p3ConfigMgr *cfgMgr) ;
@ -44,5 +46,7 @@ class RsPluginManager: public RsPluginHandler
static std::string _local_cache_dir ;
static ftServer *_ftserver ;
static p3ConnectMgr *_connectmgr ;
static std::vector<std::string> _plugin_directories ;
};

View file

@ -28,6 +28,7 @@
#include <time.h>
#include <stdint.h>
#include <string>
#include <vector>
class RsPluginHandler ;
extern RsPluginHandler *rsPlugins ;
@ -61,6 +62,8 @@ class RsPluginHandler
//
virtual int nbPlugins() const = 0 ;
virtual RsPlugin *plugin(int i) = 0 ;
virtual const std::vector<std::string>& getPluginDirectories() const = 0;
virtual void slowTickPlugins(time_t sec) = 0 ;
virtual const std::string& getLocalCacheDir() const =0;

View file

@ -1925,10 +1925,13 @@ int RsServer::StartupRetroShare()
std::string channelsdir = config_dir + "/channels";
std::string blogsdir = config_dir + "/blogs";
std::string forumdir = config_dir + "/forums";
std::string plugins_dir = "." ;
std::vector<std::string> plugins_directories ;
#ifndef WINDOWS_SYS
plugins_directories.push_back(std::string("/usr/lib/retroshare/extensions/")) ;
#endif
plugins_directories.push_back(RsInitConfig::basedir + "/extensions/") ;
plugins_directories.push_back(".") ; // this list should be saved/set to some correct value.
// possible entries include: /usr/lib/retroshare, ~/.retroshare/extensions/, etc.