mirror of
https://github.com/RetroShare/RetroShare.git
synced 2024-12-28 17:09:34 -05:00
commit
1a9f19145e
@ -3132,7 +3132,6 @@ bool RsGenExchange::updateValid(RsGxsGrpMetaData& oldGrpMeta, RsNxsGrp& newGrp)
|
||||
// also check this is the latest published group
|
||||
bool latest = newGrp.metaData->mPublishTs > oldGrpMeta.mPublishTs;
|
||||
|
||||
mGixs->timeStampKey(newGrp.metaData->mAuthorId,"Validation of signature for updated grp " + oldGrpMeta.mGroupId.toStdString()) ;
|
||||
return GxsSecurity::validateNxsGrp(newGrp, adminSign, keyMit->second) && latest;
|
||||
}
|
||||
|
||||
|
@ -4218,20 +4218,25 @@ void RsGxsNetService::handleRecvSyncMessage(RsNxsSyncMsgReqItem *item,bool item_
|
||||
{
|
||||
RsGxsMsgMetaData* m = *vit;
|
||||
|
||||
RsIdentityDetails details ;
|
||||
// Check reputation
|
||||
|
||||
if(!rsIdentity->getIdDetails(m->mAuthorId,details))
|
||||
{
|
||||
std::cerr << /* GXSNETDEBUG_PG(item->PeerId(),item->grpId) << */ " not sending grp message ID " << (*vit)->mMsgId << ", because the identity of the author is not accessible (unknown/not cached)" << std::endl;
|
||||
continue ;
|
||||
}
|
||||
|
||||
if(details.mReputation.mOverallReputationLevel < minReputationForForwardingMessages(grpMeta->mSignFlags, details.mFlags))
|
||||
if(!m->mAuthorId.isNull())
|
||||
{
|
||||
//#ifdef NXS_NET_DEBUG_0
|
||||
std::cerr << /* GXSNETDEBUG_PG(item->PeerId(),item->grpId) << */ " not sending item ID " << (*vit)->mMsgId << ", because the author is flags " << std::hex << details.mFlags << std::dec << " and reputation level " << details.mReputation.mOverallReputationLevel << std::endl;
|
||||
//#endif
|
||||
continue ;
|
||||
RsIdentityDetails details ;
|
||||
|
||||
if(!rsIdentity->getIdDetails(m->mAuthorId,details))
|
||||
{
|
||||
std::cerr << /* GXSNETDEBUG_PG(item->PeerId(),item->grpId) << */ " not sending grp message ID " << (*vit)->mMsgId << ", because the identity of the author (" << m->mAuthorId << ") is not accessible (unknown/not cached)" << std::endl;
|
||||
continue ;
|
||||
}
|
||||
|
||||
if(details.mReputation.mOverallReputationLevel < minReputationForForwardingMessages(grpMeta->mSignFlags, details.mFlags))
|
||||
{
|
||||
//#ifdef NXS_NET_DEBUG_0
|
||||
std::cerr << /* GXSNETDEBUG_PG(item->PeerId(),item->grpId) << */ " not sending item ID " << (*vit)->mMsgId << ", because the author is flags " << std::hex << details.mFlags << std::dec << " and reputation level " << details.mReputation.mOverallReputationLevel << std::endl;
|
||||
//#endif
|
||||
continue ;
|
||||
}
|
||||
}
|
||||
// Check publish TS
|
||||
|
||||
|
@ -19,9 +19,9 @@ namespace GXS_SERV {
|
||||
/** START privacy **/
|
||||
|
||||
static const uint32_t FLAG_PRIVACY_MASK = 0x0000000f;
|
||||
static const uint32_t FLAG_PRIVACY_PRIVATE = 0x00000001; // pub key encrypted
|
||||
static const uint32_t FLAG_PRIVACY_RESTRICTED = 0x00000002; // publish private key needed to publish
|
||||
static const uint32_t FLAG_PRIVACY_PUBLIC = 0x00000004; // anyone can publish, publish key pair not needed
|
||||
static const uint32_t FLAG_PRIVACY_PRIVATE = 0x00000001; // pub key encrypted. No-one can read unless he has the key to decrypt the publish key.
|
||||
static const uint32_t FLAG_PRIVACY_RESTRICTED = 0x00000002; // publish private key needed to publish. Typical usage: channels.
|
||||
static const uint32_t FLAG_PRIVACY_PUBLIC = 0x00000004; // anyone can publish, publish key pair not needed. Typical usage: forums.
|
||||
|
||||
/** END privacy **/
|
||||
|
||||
@ -30,11 +30,11 @@ namespace GXS_SERV {
|
||||
/** START author authentication flags **/
|
||||
static const uint32_t FLAG_AUTHOR_AUTHENTICATION_MASK = 0x0000ff00;
|
||||
static const uint32_t FLAG_AUTHOR_AUTHENTICATION_NONE = 0x00000000;
|
||||
static const uint32_t FLAG_AUTHOR_AUTHENTICATION_GPG = 0x00000100;
|
||||
static const uint32_t FLAG_AUTHOR_AUTHENTICATION_GPG = 0x00000100; // Anti-spam feature. Allows to ask higher reputation to anonymous IDs
|
||||
static const uint32_t FLAG_AUTHOR_AUTHENTICATION_REQUIRED = 0x00000200;
|
||||
static const uint32_t FLAG_AUTHOR_AUTHENTICATION_IFNOPUBSIGN = 0x00000400;
|
||||
static const uint32_t FLAG_AUTHOR_AUTHENTICATION_TRACK_MESSAGES = 0x00000800; // not used anymore
|
||||
static const uint32_t FLAG_AUTHOR_AUTHENTICATION_GPG_KNOWN = 0x00001000;
|
||||
static const uint32_t FLAG_AUTHOR_AUTHENTICATION_GPG_KNOWN = 0x00001000; // Anti-spam feature. Allows to ask higher reputation to unknown IDs and anonymous IDs
|
||||
|
||||
static const uint32_t FLAG_GROUP_SIGN_PUBLISH_MASK = 0x000000ff;
|
||||
static const uint32_t FLAG_GROUP_SIGN_PUBLISH_ENCRYPTED = 0x00000001;
|
||||
@ -45,24 +45,25 @@ namespace GXS_SERV {
|
||||
/** START msg authentication flags **/
|
||||
|
||||
static const uint8_t MSG_AUTHEN_MASK = 0x0f;
|
||||
static const uint8_t MSG_AUTHEN_ROOT_PUBLISH_SIGN = 0x01;
|
||||
static const uint8_t MSG_AUTHEN_CHILD_PUBLISH_SIGN = 0x02;
|
||||
static const uint8_t MSG_AUTHEN_ROOT_AUTHOR_SIGN = 0x04;
|
||||
static const uint8_t MSG_AUTHEN_CHILD_AUTHOR_SIGN = 0x08;
|
||||
static const uint8_t MSG_AUTHEN_ROOT_PUBLISH_SIGN = 0x01; // means: new threads need to be signed by the publish signature of the group. Typical use: posts in channels.
|
||||
static const uint8_t MSG_AUTHEN_CHILD_PUBLISH_SIGN = 0x02; // means: all messages need to be signed by the publish signature of the group. Typical use: channels were comments are restricted to the publisher.
|
||||
static const uint8_t MSG_AUTHEN_ROOT_AUTHOR_SIGN = 0x04; // means: new threads need to be signed by the author of the message. Typical use: forums, since posts are signed.
|
||||
static const uint8_t MSG_AUTHEN_CHILD_AUTHOR_SIGN = 0x08; // means: all messages need to be signed by the author of the message. Typical use: forums since response to posts are signed, and signed comments in channels.
|
||||
|
||||
/** END msg authentication flags **/
|
||||
|
||||
/** START group options flag **/
|
||||
|
||||
static const uint8_t GRP_OPTION_AUTHEN_AUTHOR_SIGN = 0x01;
|
||||
static const uint8_t GRP_OPTION_AUTHEN_AUTHOR_SIGN = 0x01; // means: the group options (serialised grp data) needs to be signed by a specific author stored in GroupMeta.mAuthorId
|
||||
// note that it is always signed by the *admin* (means the creator) of the group. This author signature is just an option here.
|
||||
|
||||
/** END group options flag **/
|
||||
|
||||
/** START Subscription Flags. (LOCAL) **/
|
||||
|
||||
static const uint32_t GROUP_SUBSCRIBE_ADMIN = 0x01;
|
||||
static const uint32_t GROUP_SUBSCRIBE_PUBLISH = 0x02;
|
||||
static const uint32_t GROUP_SUBSCRIBE_SUBSCRIBED = 0x04;
|
||||
static const uint32_t GROUP_SUBSCRIBE_ADMIN = 0x01;// means: you have the admin key for this group
|
||||
static const uint32_t GROUP_SUBSCRIBE_PUBLISH = 0x02;// means: you have the publish key for thiss group. Typical use: publish key in channels are shared with specific friends.
|
||||
static const uint32_t GROUP_SUBSCRIBE_SUBSCRIBED = 0x04;// means: you are subscribed to a group, which makes you a source for this group to your friend nodes.
|
||||
static const uint32_t GROUP_SUBSCRIBE_NOT_SUBSCRIBED = 0x08;
|
||||
|
||||
/*!
|
||||
@ -82,11 +83,11 @@ namespace GXS_SERV {
|
||||
* NOTE: RsGxsCommentService uses 0x000f0000.
|
||||
*/
|
||||
static const uint32_t GXS_MSG_STATUS_GEN_MASK = 0x0000ffff;
|
||||
static const uint32_t GXS_MSG_STATUS_UNPROCESSED = 0x00000001;
|
||||
static const uint32_t GXS_MSG_STATUS_GUI_UNREAD = 0x00000002;
|
||||
static const uint32_t GXS_MSG_STATUS_GUI_NEW = 0x00000004;
|
||||
static const uint32_t GXS_MSG_STATUS_KEEP = 0x00000008;
|
||||
static const uint32_t GXS_MSG_STATUS_DELETE = 0x00000020;
|
||||
static const uint32_t GXS_MSG_STATUS_UNPROCESSED = 0x00000001; // Flags to store the read/process status of group messages.
|
||||
static const uint32_t GXS_MSG_STATUS_GUI_UNREAD = 0x00000002; // The actual meaning may depend on the type of service.
|
||||
static const uint32_t GXS_MSG_STATUS_GUI_NEW = 0x00000004; //
|
||||
static const uint32_t GXS_MSG_STATUS_KEEP = 0x00000008; //
|
||||
static const uint32_t GXS_MSG_STATUS_DELETE = 0x00000020; //
|
||||
|
||||
/** END GXS Msg status flags **/
|
||||
|
||||
|
@ -59,7 +59,7 @@ public:
|
||||
|
||||
RsGxsGroupId mGroupId;
|
||||
std::string mGroupName;
|
||||
uint32_t mGroupFlags;
|
||||
uint32_t mGroupFlags; // Combination of FLAGS_PRIVACY_PRIVATE | FLAGS_PRIVACY_RESTRICTED | FLAGS_PRIVACY_PUBLIC
|
||||
uint32_t mSignFlags; // Combination of RSGXS_GROUP_SIGN_PUBLISH_MASK & RSGXS_GROUP_SIGN_AUTHOR_MASK.
|
||||
|
||||
time_t mPublishTs; // Mandatory.
|
||||
|
@ -159,21 +159,17 @@ RsServiceInfo p3GxsCircles::getServiceInfo()
|
||||
|
||||
uint32_t p3GxsCircles::circleAuthenPolicy()
|
||||
{
|
||||
|
||||
uint32_t policy = 0;
|
||||
uint8_t flag = 0;
|
||||
|
||||
|
||||
//flag = GXS_SERV::MSG_AUTHEN_ROOT_PUBLISH_SIGN;
|
||||
//flag = GXS_SERV::MSG_AUTHEN_CHILD_PUBLISH_SIGN;
|
||||
//flag = GXS_SERV::MSG_AUTHEN_ROOT_AUTHOR_SIGN;
|
||||
//flag = GXS_SERV::MSG_AUTHEN_CHILD_AUTHOR_SIGN;
|
||||
flag = GXS_SERV::MSG_AUTHEN_ROOT_AUTHOR_SIGN | GXS_SERV::MSG_AUTHEN_CHILD_AUTHOR_SIGN;
|
||||
RsGenExchange::setAuthenPolicyFlag(flag, policy, RsGenExchange::PUBLIC_GRP_BITS);
|
||||
|
||||
flag |= GXS_SERV::MSG_AUTHEN_ROOT_PUBLISH_SIGN | GXS_SERV::MSG_AUTHEN_CHILD_PUBLISH_SIGN;
|
||||
RsGenExchange::setAuthenPolicyFlag(flag, policy, RsGenExchange::RESTRICTED_GRP_BITS);
|
||||
RsGenExchange::setAuthenPolicyFlag(flag, policy, RsGenExchange::PRIVATE_GRP_BITS);
|
||||
|
||||
flag = 0;
|
||||
//flag = GXS_SERV::GRP_OPTION_AUTHEN_AUTHOR_SIGN;
|
||||
RsGenExchange::setAuthenPolicyFlag(flag, policy, RsGenExchange::GRP_OPTION_BITS);
|
||||
|
||||
return policy;
|
||||
|
Loading…
Reference in New Issue
Block a user