From 6cd9faf3ab7b066367fbcb4e8f9ef10a300beef7 Mon Sep 17 00:00:00 2001 From: drbob Date: Sun, 10 Feb 2013 17:52:50 +0000 Subject: [PATCH] added AuthenPolicy code for p3wiki. git-svn-id: http://svn.code.sf.net/p/retroshare/code/trunk@6118 b45a01b8-16f6-495d-af2f-9b41ad6348cc --- libretroshare/src/rsserver/rsinit.cc | 2 +- libretroshare/src/services/p3gxscircles.cc | 30 +++++++++++++++- libretroshare/src/services/p3wiki.cc | 40 ++++++++++++++++++++-- libretroshare/src/services/p3wiki.h | 3 +- 4 files changed, 70 insertions(+), 5 deletions(-) diff --git a/libretroshare/src/rsserver/rsinit.cc b/libretroshare/src/rsserver/rsinit.cc index 040ca1fca..4c83bc0fd 100644 --- a/libretroshare/src/rsserver/rsinit.cc +++ b/libretroshare/src/rsserver/rsinit.cc @@ -2392,7 +2392,7 @@ int RsServer::StartupRetroShare() wiki_ds->resetDataStore(); //TODO: remove, new service data per RS session, for testing #endif - mWiki = new p3Wiki(wiki_ds, NULL); + mWiki = new p3Wiki(wiki_ds, NULL, mGxsIdService); // create GXS photo service RsGxsNetService* wiki_ns = new RsGxsNetService( diff --git a/libretroshare/src/services/p3gxscircles.cc b/libretroshare/src/services/p3gxscircles.cc index e66d815c9..98427cf71 100644 --- a/libretroshare/src/services/p3gxscircles.cc +++ b/libretroshare/src/services/p3gxscircles.cc @@ -130,9 +130,37 @@ p3GxsCircles::p3GxsCircles(RsGeneralDataService *gds, RsNetworkExchangeService * uint32_t p3GxsCircles::circleAuthenPolicy() { - return 0; + + uint32_t policy = 0; + uint8_t flag = 0; + + flag = GXS_SERV::MSG_AUTHEN_ROOT_PUBLISH_SIGN; + //RsGenExchange::setAuthenPolicyFlag(flag, policy, RsGenExchange::PUBLIC_GRP_BITS); + //RsGenExchange::setAuthenPolicyFlag(flag, policy, RsGenExchange::RESTRICTED_GRP_BITS); + //RsGenExchange::setAuthenPolicyFlag(flag, policy, RsGenExchange::PRIVATE_GRP_BITS); + + flag = GXS_SERV::MSG_AUTHEN_CHILD_PUBLISH_SIGN; + //RsGenExchange::setAuthenPolicyFlag(flag, policy, RsGenExchange::PUBLIC_GRP_BITS); + //RsGenExchange::setAuthenPolicyFlag(flag, policy, RsGenExchange::RESTRICTED_GRP_BITS); + //RsGenExchange::setAuthenPolicyFlag(flag, policy, RsGenExchange::PRIVATE_GRP_BITS); + + flag = GXS_SERV::MSG_AUTHEN_ROOT_AUTHOR_SIGN; + //RsGenExchange::setAuthenPolicyFlag(flag, policy, RsGenExchange::PUBLIC_GRP_BITS); + //RsGenExchange::setAuthenPolicyFlag(flag, policy, RsGenExchange::RESTRICTED_GRP_BITS); + //RsGenExchange::setAuthenPolicyFlag(flag, policy, RsGenExchange::PRIVATE_GRP_BITS); + + flag = GXS_SERV::MSG_AUTHEN_CHILD_AUTHOR_SIGN; + //RsGenExchange::setAuthenPolicyFlag(flag, policy, RsGenExchange::PUBLIC_GRP_BITS); + //RsGenExchange::setAuthenPolicyFlag(flag, policy, RsGenExchange::RESTRICTED_GRP_BITS); + //RsGenExchange::setAuthenPolicyFlag(flag, policy, RsGenExchange::PRIVATE_GRP_BITS); + + flag = GXS_SERV::GRP_OPTION_AUTHEN_AUTHOR_SIGN; + //RsGenExchange::setAuthenPolicyFlag(flag, policy, RsGenExchange::GRP_OPTION_BITS); + + return policy; } + void p3GxsCircles::service_tick() { RsTickEvent::tick_events(); diff --git a/libretroshare/src/services/p3wiki.cc b/libretroshare/src/services/p3wiki.cc index f6b35abbe..40450feb9 100644 --- a/libretroshare/src/services/p3wiki.cc +++ b/libretroshare/src/services/p3wiki.cc @@ -24,6 +24,7 @@ */ #include "services/p3wiki.h" +#include "gxs/rsgxsflags.h" #include "serialiser/rswikiitems.h" #include "util/rsrandom.h" @@ -46,8 +47,9 @@ RsWiki *rsWiki = NULL; #define DUMMYSTART_PERIOD 60 // some time for dummyIds to be generated. #define DUMMYTICK_PERIOD 3 -p3Wiki::p3Wiki(RsGeneralDataService* gds, RsNetworkExchangeService* nes) - :RsGenExchange(gds, nes, new RsGxsWikiSerialiser(), RS_SERVICE_GXSV1_TYPE_WIKI), RsWiki(this) +p3Wiki::p3Wiki(RsGeneralDataService* gds, RsNetworkExchangeService* nes, RsGixs *gixs) + :RsGenExchange(gds, nes, new RsGxsWikiSerialiser(), RS_SERVICE_GXSV1_TYPE_WIKI, gixs, wikiAuthenPolicy()), + RsWiki(this) { // Setup of dummy Pages. mAboutActive = false; @@ -62,6 +64,40 @@ p3Wiki::p3Wiki(RsGeneralDataService* gds, RsNetworkExchangeService* nes) } +uint32_t p3Wiki::wikiAuthenPolicy() +{ + uint32_t policy = 0; + uint8_t flag = 0; + + flag = GXS_SERV::MSG_AUTHEN_ROOT_PUBLISH_SIGN; + RsGenExchange::setAuthenPolicyFlag(flag, policy, RsGenExchange::PUBLIC_GRP_BITS); + RsGenExchange::setAuthenPolicyFlag(flag, policy, RsGenExchange::RESTRICTED_GRP_BITS); + RsGenExchange::setAuthenPolicyFlag(flag, policy, RsGenExchange::PRIVATE_GRP_BITS); + + flag = GXS_SERV::MSG_AUTHEN_CHILD_PUBLISH_SIGN; + //RsGenExchange::setAuthenPolicyFlag(flag, policy, RsGenExchange::PUBLIC_GRP_BITS); + //RsGenExchange::setAuthenPolicyFlag(flag, policy, RsGenExchange::RESTRICTED_GRP_BITS); + //RsGenExchange::setAuthenPolicyFlag(flag, policy, RsGenExchange::PRIVATE_GRP_BITS); + + // Root signatures are not required, as root publish signatures are. + flag = GXS_SERV::MSG_AUTHEN_ROOT_AUTHOR_SIGN; + //RsGenExchange::setAuthenPolicyFlag(flag, policy, RsGenExchange::PUBLIC_GRP_BITS); + //RsGenExchange::setAuthenPolicyFlag(flag, policy, RsGenExchange::RESTRICTED_GRP_BITS); + //RsGenExchange::setAuthenPolicyFlag(flag, policy, RsGenExchange::PRIVATE_GRP_BITS); + + // Edits generally need an authors signature. + flag = GXS_SERV::MSG_AUTHEN_CHILD_AUTHOR_SIGN; + RsGenExchange::setAuthenPolicyFlag(flag, policy, RsGenExchange::PUBLIC_GRP_BITS); + RsGenExchange::setAuthenPolicyFlag(flag, policy, RsGenExchange::RESTRICTED_GRP_BITS); + RsGenExchange::setAuthenPolicyFlag(flag, policy, RsGenExchange::PRIVATE_GRP_BITS); + + //flag = GXS_SERV::GRP_OPTION_AUTHEN_AUTHOR_SIGN; + //RsGenExchange::setAuthenPolicyFlag(flag, policy, RsGenExchange::GRP_OPTION_BITS); + + return policy; +} + + void p3Wiki::service_tick() { RsTickEvent::tick_events(); diff --git a/libretroshare/src/services/p3wiki.h b/libretroshare/src/services/p3wiki.h index 94b60c696..16758b557 100644 --- a/libretroshare/src/services/p3wiki.h +++ b/libretroshare/src/services/p3wiki.h @@ -44,7 +44,8 @@ class p3Wiki: public RsGenExchange, public RsWiki, public RsTickEvent { public: - p3Wiki(RsGeneralDataService* gds, RsNetworkExchangeService* nes); + p3Wiki(RsGeneralDataService* gds, RsNetworkExchangeService* nes, RsGixs *gixs); +static uint32_t wikiAuthenPolicy(); protected: