mirror of
https://github.com/RetroShare/RetroShare.git
synced 2025-06-08 22:52:54 -04:00
fixed a few bugs in display of tracking info
This commit is contained in:
parent
2096cd6c52
commit
79c80c968a
8 changed files with 53 additions and 26 deletions
|
@ -27,7 +27,7 @@
|
||||||
#include "groutermatrix.h"
|
#include "groutermatrix.h"
|
||||||
#include "grouteritems.h"
|
#include "grouteritems.h"
|
||||||
|
|
||||||
//#define ROUTING_MATRIX_DEBUG
|
#define ROUTING_MATRIX_DEBUG
|
||||||
|
|
||||||
GRouterMatrix::GRouterMatrix()
|
GRouterMatrix::GRouterMatrix()
|
||||||
{
|
{
|
||||||
|
@ -197,6 +197,10 @@ void GRouterMatrix::debugDump() const
|
||||||
std::cerr << it->second[i] << " " ;
|
std::cerr << it->second[i] << " " ;
|
||||||
std::cerr << std::endl;
|
std::cerr << std::endl;
|
||||||
}
|
}
|
||||||
|
std::cerr << " Tracking clues: " << std::endl;
|
||||||
|
|
||||||
|
for(std::map<RsGxsMessageId, RoutingTrackEntry>::const_iterator it(_tracking_clues.begin());it!=_tracking_clues.end();++it)
|
||||||
|
std::cerr << " " << it->first << ": from " << it->second.friend_id << " " << now - it->second.time_stamp << " secs ago." << std::endl;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool GRouterMatrix::computeRoutingProbabilities(const GRouterKeyId& key_id, const std::vector<RsPeerId>& friends, std::vector<float>& probas) const
|
bool GRouterMatrix::computeRoutingProbabilities(const GRouterKeyId& key_id, const std::vector<RsPeerId>& friends, std::vector<float>& probas) const
|
||||||
|
|
|
@ -39,7 +39,7 @@ static const uint16_t GROUTER_CLIENT_ID_MESSAGES = 0x1001 ;
|
||||||
|
|
||||||
static const uint32_t RS_GROUTER_MATRIX_MAX_HIT_ENTRIES = 10 ; // max number of clues to store
|
static const uint32_t RS_GROUTER_MATRIX_MAX_HIT_ENTRIES = 10 ; // max number of clues to store
|
||||||
static const uint32_t RS_GROUTER_MATRIX_MIN_TIME_BETWEEN_HITS = 60 ; // can be set to up to half the publish time interval. Prevents flooding routes.
|
static const uint32_t RS_GROUTER_MATRIX_MIN_TIME_BETWEEN_HITS = 60 ; // can be set to up to half the publish time interval. Prevents flooding routes.
|
||||||
static const uint32_t RS_GROUTER_MIN_CONFIG_SAVE_PERIOD = 5 ; // at most save config every 5 seconds
|
static const uint32_t RS_GROUTER_MIN_CONFIG_SAVE_PERIOD = 10 ; // at most save config every 10 seconds
|
||||||
static const uint32_t RS_GROUTER_MAX_KEEP_TRACKING_CLUES = 86400*10 ; // max time for which we keep record of tracking info: 10 days.
|
static const uint32_t RS_GROUTER_MAX_KEEP_TRACKING_CLUES = 86400*10 ; // max time for which we keep record of tracking info: 10 days.
|
||||||
|
|
||||||
static const float RS_GROUTER_BASE_WEIGHT_ROUTED_MSG = 1.0f ; // base contribution of routed message clue to routing matrix
|
static const float RS_GROUTER_BASE_WEIGHT_ROUTED_MSG = 1.0f ; // base contribution of routed message clue to routing matrix
|
||||||
|
|
|
@ -1703,9 +1703,10 @@ void p3GRouter::addTrackingInfo(const RsGxsMessageId& mid,const RsPeerId& peer_i
|
||||||
{
|
{
|
||||||
RS_STACK_MUTEX(grMtx) ;
|
RS_STACK_MUTEX(grMtx) ;
|
||||||
#ifdef GROUTER_DEBUG
|
#ifdef GROUTER_DEBUG
|
||||||
grouter_debug() << "Received new routing clue for key " << id << " from peer " << peer_id << std::endl;
|
grouter_debug() << "Received new routing clue for key " << mid << " from peer " << peer_id << std::endl;
|
||||||
#endif
|
#endif
|
||||||
_routing_matrix.addTrackingInfo(mid,peer_id) ;
|
_routing_matrix.addTrackingInfo(mid,peer_id) ;
|
||||||
|
_changed = true ;
|
||||||
}
|
}
|
||||||
void p3GRouter::addRoutingClue(const GRouterKeyId& id,const RsPeerId& peer_id)
|
void p3GRouter::addRoutingClue(const GRouterKeyId& id,const RsPeerId& peer_id)
|
||||||
{
|
{
|
||||||
|
@ -1714,6 +1715,7 @@ void p3GRouter::addRoutingClue(const GRouterKeyId& id,const RsPeerId& peer_id)
|
||||||
grouter_debug() << "Received new routing clue for key " << id << " from peer " << peer_id << std::endl;
|
grouter_debug() << "Received new routing clue for key " << id << " from peer " << peer_id << std::endl;
|
||||||
#endif
|
#endif
|
||||||
_routing_matrix.addRoutingClue(id,peer_id,RS_GROUTER_BASE_WEIGHT_GXS_PACKET) ;
|
_routing_matrix.addRoutingClue(id,peer_id,RS_GROUTER_BASE_WEIGHT_GXS_PACKET) ;
|
||||||
|
_changed = true ;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool p3GRouter::registerClientService(const GRouterServiceId& id,GRouterClientService *service)
|
bool p3GRouter::registerClientService(const GRouterServiceId& id,GRouterClientService *service)
|
||||||
|
@ -2230,8 +2232,8 @@ void p3GRouter::debugDump()
|
||||||
|
|
||||||
grouter_debug() << " Routing matrix: " << std::endl;
|
grouter_debug() << " Routing matrix: " << std::endl;
|
||||||
|
|
||||||
// if(_debug_enabled)
|
if(_debug_enabled)
|
||||||
// _routing_matrix.debugDump() ;
|
_routing_matrix.debugDump() ;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -681,12 +681,25 @@ bool GxsSecurity::validateNxsGrp(const RsNxsGrp& grp, const RsTlvKeySignature& s
|
||||||
EVP_VerifyInit(mdctx, EVP_sha1());
|
EVP_VerifyInit(mdctx, EVP_sha1());
|
||||||
EVP_VerifyUpdate(mdctx, allGrpData, allGrpDataLen);
|
EVP_VerifyUpdate(mdctx, allGrpData, allGrpDataLen);
|
||||||
int signOk = EVP_VerifyFinal(mdctx, sigbuf, siglen, signKey);
|
int signOk = EVP_VerifyFinal(mdctx, sigbuf, siglen, signKey);
|
||||||
|
EVP_MD_CTX_destroy(mdctx);
|
||||||
|
|
||||||
|
if(signOk != 1) // try previous API. This is a hack to accept groups previously signed with old APIs.
|
||||||
|
{
|
||||||
|
EVP_MD_CTX *mdctx = EVP_MD_CTX_create();
|
||||||
|
|
||||||
|
EVP_VerifyInit(mdctx, EVP_sha1());
|
||||||
|
EVP_VerifyUpdate(mdctx, allGrpData, allGrpDataLen-4); // that means ommit the last
|
||||||
|
signOk = EVP_VerifyFinal(mdctx, sigbuf, siglen, signKey);
|
||||||
|
EVP_MD_CTX_destroy(mdctx);
|
||||||
|
|
||||||
|
if(signOk)
|
||||||
|
std::cerr << "(WW) GXS group with old API found. Signature still checks!" << std::endl;
|
||||||
|
}
|
||||||
|
|
||||||
delete[] allGrpData ;
|
delete[] allGrpData ;
|
||||||
|
|
||||||
/* clean up */
|
/* clean up */
|
||||||
EVP_PKEY_free(signKey);
|
EVP_PKEY_free(signKey);
|
||||||
EVP_MD_CTX_destroy(mdctx);
|
|
||||||
|
|
||||||
grpMeta.signSet = signSet;
|
grpMeta.signSet = signSet;
|
||||||
|
|
||||||
|
|
|
@ -2661,7 +2661,7 @@ void RsGenExchange::processRecvdMessages()
|
||||||
{
|
{
|
||||||
|
|
||||||
#ifdef GEN_EXCH_DEBUG
|
#ifdef GEN_EXCH_DEBUG
|
||||||
std::cerr << "failed to deserialise incoming meta, msgId: "
|
std::cerr << "Validation failed for message id "
|
||||||
<< "msg->grpId: " << msg->grpId << ", msgId: " << msg->msgId << std::endl;
|
<< "msg->grpId: " << msg->grpId << ", msgId: " << msg->msgId << std::endl;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
@ -2795,8 +2795,7 @@ void RsGenExchange::processRecvdGroups()
|
||||||
else if(ret == VALIDATE_FAIL)
|
else if(ret == VALIDATE_FAIL)
|
||||||
{
|
{
|
||||||
#ifdef GEN_EXCH_DEBUG
|
#ifdef GEN_EXCH_DEBUG
|
||||||
std::cerr << "failed to deserialise incoming meta, grpId: "
|
std::cerr << "failed to validate incoming meta, grpId: " << grp->grpId << ": wrong signature" << std::endl;
|
||||||
<< grp->grpId << std::endl;
|
|
||||||
#endif
|
#endif
|
||||||
delete grp;
|
delete grp;
|
||||||
erase = true;
|
erase = true;
|
||||||
|
@ -2805,8 +2804,7 @@ void RsGenExchange::processRecvdGroups()
|
||||||
{
|
{
|
||||||
|
|
||||||
#ifdef GEN_EXCH_DEBUG
|
#ifdef GEN_EXCH_DEBUG
|
||||||
std::cerr << "failed to validate incoming grp, trying again. grpId: "
|
std::cerr << "failed to validate incoming grp, trying again. grpId: " << grp->grpId << std::endl;
|
||||||
<< grp->grpId << std::endl;
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
if(gpsi.mAttempts == VALIDATE_MAX_ATTEMPTS)
|
if(gpsi.mAttempts == VALIDATE_MAX_ATTEMPTS)
|
||||||
|
@ -2822,6 +2820,7 @@ void RsGenExchange::processRecvdGroups()
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
std::cerr << "(EE) deserialise error in group meta data" << std::endl;
|
||||||
delete grp;
|
delete grp;
|
||||||
delete meta;
|
delete meta;
|
||||||
erase = true;
|
erase = true;
|
||||||
|
|
|
@ -54,7 +54,8 @@ uint32_t RsGxsGrpMetaData::serial_size()
|
||||||
s += 4; // for mCircleType
|
s += 4; // for mCircleType
|
||||||
s += mCircleId.serial_size();
|
s += mCircleId.serial_size();
|
||||||
s += 4; // mAuthenFlag
|
s += 4; // mAuthenFlag
|
||||||
s += mParentGrpId.serial_size();
|
s += mParentGrpId.serial_size(); // mParentGroupId
|
||||||
|
s += 4; // mSignFlag
|
||||||
|
|
||||||
return s;
|
return s;
|
||||||
}
|
}
|
||||||
|
@ -227,9 +228,8 @@ uint32_t RsGxsMsgMetaData::serial_size()
|
||||||
|
|
||||||
s += signSet.TlvSize();
|
s += signSet.TlvSize();
|
||||||
s += GetTlvStringSize(mMsgName);
|
s += GetTlvStringSize(mMsgName);
|
||||||
s += 4; // mAuthenFlags
|
s += 4; // mPublishTS
|
||||||
s += 4; // mSignFlags
|
s += 4; // mMsgFlags
|
||||||
s += 4;
|
|
||||||
|
|
||||||
return s;
|
return s;
|
||||||
}
|
}
|
||||||
|
|
|
@ -216,7 +216,9 @@ void p3GxsReputation::updateIdentityFlags()
|
||||||
{
|
{
|
||||||
RsStackMutex stack(mReputationMtx); /****** LOCKED MUTEX *******/
|
RsStackMutex stack(mReputationMtx); /****** LOCKED MUTEX *******/
|
||||||
|
|
||||||
|
#ifdef DEBUG_REPUTATION
|
||||||
std::cerr << "Updating reputation identity flags" << std::endl;
|
std::cerr << "Updating reputation identity flags" << std::endl;
|
||||||
|
#endif
|
||||||
|
|
||||||
for( std::map<RsGxsId, Reputation>::iterator rit = mReputations.begin();rit!=mReputations.end();++rit)
|
for( std::map<RsGxsId, Reputation>::iterator rit = mReputations.begin();rit!=mReputations.end();++rit)
|
||||||
if(rit->second.mIdentityFlags & REPUTATION_IDENTITY_FLAG_NEEDS_UPDATE)
|
if(rit->second.mIdentityFlags & REPUTATION_IDENTITY_FLAG_NEEDS_UPDATE)
|
||||||
|
@ -229,7 +231,9 @@ void p3GxsReputation::updateIdentityFlags()
|
||||||
|
|
||||||
if(!rsIdentity->getIdDetails(*rit,details))
|
if(!rsIdentity->getIdDetails(*rit,details))
|
||||||
{
|
{
|
||||||
|
#ifdef DEBUG_REPUTATION
|
||||||
std::cerr << " cannot obtain info for " << *rit << ". Will do it later." << std::endl;
|
std::cerr << " cannot obtain info for " << *rit << ". Will do it later." << std::endl;
|
||||||
|
#endif
|
||||||
continue ;
|
continue ;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -247,7 +251,9 @@ void p3GxsReputation::updateIdentityFlags()
|
||||||
if(details.mPgpLinked) it->second.mIdentityFlags |= REPUTATION_IDENTITY_FLAG_PGP_LINKED ;
|
if(details.mPgpLinked) it->second.mIdentityFlags |= REPUTATION_IDENTITY_FLAG_PGP_LINKED ;
|
||||||
if(details.mPgpKnown ) it->second.mIdentityFlags |= REPUTATION_IDENTITY_FLAG_PGP_KNOWN ;
|
if(details.mPgpKnown ) it->second.mIdentityFlags |= REPUTATION_IDENTITY_FLAG_PGP_KNOWN ;
|
||||||
|
|
||||||
|
#ifdef DEBUG_REPUTATION
|
||||||
std::cerr << " updated flags for " << *rit << " to " << std::hex << it->second.mIdentityFlags << std::dec << std::endl;
|
std::cerr << " updated flags for " << *rit << " to " << std::hex << it->second.mIdentityFlags << std::dec << std::endl;
|
||||||
|
#endif
|
||||||
|
|
||||||
it->second.updateReputation() ;
|
it->second.updateReputation() ;
|
||||||
IndicateConfigChanged();
|
IndicateConfigChanged();
|
||||||
|
|
|
@ -548,6 +548,17 @@ void GxsForumThreadWidget::changedThread()
|
||||||
mThreadId = RsGxsMessageId(item->data(COLUMN_THREAD_DATA, ROLE_THREAD_MSGID).toString().toStdString());
|
mThreadId = RsGxsMessageId(item->data(COLUMN_THREAD_DATA, ROLE_THREAD_MSGID).toString().toStdString());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Show info about who passed on this message.
|
||||||
|
if(mForumGroup.mMeta.mSignFlags & GXS_SERV::FLAG_AUTHOR_AUTHENTICATION_TRACK_MESSAGES)
|
||||||
|
{
|
||||||
|
RsPeerId providerId ;
|
||||||
|
std::string msgId = item->data(COLUMN_THREAD_DATA, ROLE_THREAD_MSGID).toString().toStdString();
|
||||||
|
RsGxsMessageId mid(msgId) ;
|
||||||
|
|
||||||
|
if(rsGRouter->getTrackingInfo(mid,providerId) && !providerId.isNull() )
|
||||||
|
item->setToolTip(COLUMN_THREAD_TITLE,tr("This message was obtained from %1").arg(QString::fromUtf8(rsPeers->getPeerName(providerId).c_str())));
|
||||||
|
}
|
||||||
|
|
||||||
if (mFillThread) {
|
if (mFillThread) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
@ -952,14 +963,6 @@ QTreeWidgetItem *GxsForumThreadWidget::convertMsgToThreadWidget(const RsGxsForum
|
||||||
// Set later with GxsIdRSTreeWidgetItem::setId
|
// Set later with GxsIdRSTreeWidgetItem::setId
|
||||||
item->setData(COLUMN_THREAD_DATA, ROLE_THREAD_AUTHOR, QString::fromStdString(msg.mMeta.mAuthorId.toStdString()));
|
item->setData(COLUMN_THREAD_DATA, ROLE_THREAD_AUTHOR, QString::fromStdString(msg.mMeta.mAuthorId.toStdString()));
|
||||||
|
|
||||||
// Show info about who passed on this message.
|
|
||||||
if(mForumGroup.mMeta.mSignFlags & GXS_SERV::FLAG_AUTHOR_AUTHENTICATION_TRACK_MESSAGES)
|
|
||||||
{
|
|
||||||
RsPeerId providerId ;
|
|
||||||
|
|
||||||
if(rsGRouter->getTrackingInfo(msg.mMeta.mMsgId,providerId) && !providerId.isNull() )
|
|
||||||
item->setToolTip(COLUMN_THREAD_TITLE,tr("This message was obtained from %1").arg(QString::fromUtf8(rsPeers->getPeerName(providerId).c_str())));
|
|
||||||
}
|
|
||||||
//#TODO
|
//#TODO
|
||||||
#if 0
|
#if 0
|
||||||
text = QString::fromUtf8(authorName.c_str());
|
text = QString::fromUtf8(authorName.c_str());
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue