added option whether to trust friend nodes for banned files

This commit is contained in:
csoler 2018-08-19 15:52:35 +02:00
parent a2804a70ec
commit af7556610a
No known key found for this signature in database
GPG Key ID: 7BCA522266C0804C
4 changed files with 49 additions and 11 deletions

View File

@ -32,6 +32,7 @@ static const uint32_t DELAY_BEFORE_DELETE_EMPTY_REMOTE_DIR = 5*24*86400 ;
static const std::string HASH_CACHE_DURATION_SS = "HASH_CACHE_DURATION" ; // key string to store hash remembering time static const std::string HASH_CACHE_DURATION_SS = "HASH_CACHE_DURATION" ; // key string to store hash remembering time
static const std::string WATCH_FILE_DURATION_SS = "WATCH_FILES_DELAY" ; // key to store delay before re-checking for new files static const std::string WATCH_FILE_DURATION_SS = "WATCH_FILES_DELAY" ; // key to store delay before re-checking for new files
static const std::string WATCH_FILE_ENABLED_SS = "WATCH_FILES_ENABLED"; // key to store ON/OFF flags for file whatch static const std::string WATCH_FILE_ENABLED_SS = "WATCH_FILES_ENABLED"; // key to store ON/OFF flags for file whatch
static const std::string TRUST_FRIEND_NODES_FOR_BANNED_FILES_SS = "TRUST_FRIEND_NODES_FOR_BANNED_FILES"; // should we trust friends for banned files or not
static const std::string FOLLOW_SYMLINKS_SS = "FOLLOW_SYMLINKS"; // dereference symbolic links, or just ignore them. static const std::string FOLLOW_SYMLINKS_SS = "FOLLOW_SYMLINKS"; // dereference symbolic links, or just ignore them.
static const std::string IGNORE_DUPLICATES = "IGNORE_DUPLICATES"; // do not index files that are referenced multiple times because of links static const std::string IGNORE_DUPLICATES = "IGNORE_DUPLICATES"; // do not index files that are referenced multiple times because of links
static const std::string WATCH_HASH_SALT_SS = "WATCH_HASH_SALT"; // Salt that is used to hash directory names static const std::string WATCH_HASH_SALT_SS = "WATCH_HASH_SALT"; // Salt that is used to hash directory names
@ -62,5 +63,6 @@ static const uint64_t ENTRY_INDEX_BIT_MASK_64BITS = 0x0000000
static const uint32_t DELAY_BEFORE_DROP_REQUEST = 600; // every 10 min static const uint32_t DELAY_BEFORE_DROP_REQUEST = 600; // every 10 min
static const bool FOLLOW_SYMLINKS_DEFAULT = true; static const bool FOLLOW_SYMLINKS_DEFAULT = true;
static const bool TRUST_FRIEND_NODES_FOR_BANNED_FILES_DEFAULT = true;
static const uint32_t FL_BASE_TMP_SECTION_SIZE = 4096 ; static const uint32_t FL_BASE_TMP_SECTION_SIZE = 4096 ;

View File

@ -72,6 +72,7 @@ p3FileDatabase::p3FileDatabase(p3ServiceControl *mpeers)
mLastRemoteDirSweepTS = 0 ; mLastRemoteDirSweepTS = 0 ;
mLastCleanupTime = 0 ; mLastCleanupTime = 0 ;
mLastDataRecvTS = 0 ; mLastDataRecvTS = 0 ;
mTrustFriendNodesForBannedFiles = TRUST_FRIEND_NODES_FOR_BANNED_FILES_DEFAULT;
// This is for the transmission of data // This is for the transmission of data
@ -369,6 +370,14 @@ cleanup = true;
{ {
RsTlvKeyValue kv; RsTlvKeyValue kv;
kv.key = TRUST_FRIEND_NODES_FOR_BANNED_FILES_SS;
kv.value = trustFriendNodesForBannedFiles()?"YES":"NO" ;
rskv->tlvkvs.pairs.push_back(kv);
}
{
RsTlvKeyValue kv;
kv.key = WATCH_HASH_SALT_SS; kv.key = WATCH_HASH_SALT_SS;
kv.value = mLocalDirWatcher->hashSalt().toStdString(); kv.value = mLocalDirWatcher->hashSalt().toStdString();
@ -462,6 +471,10 @@ bool p3FileDatabase::loadList(std::list<RsItem *>& load)
{ {
setWatchEnabled(kit->value == "YES") ; setWatchEnabled(kit->value == "YES") ;
} }
else if(kit->key == TRUST_FRIEND_NODES_FOR_BANNED_FILES_SS)
{
setTrustFriendNodesForBannedFiles(kit->value == "YES") ;
}
else if(kit->key == WATCH_HASH_SALT_SS) else if(kit->key == WATCH_HASH_SALT_SS)
{ {
std::cerr << "Initing directory watcher with saved secret salt..." << std::endl; std::cerr << "Initing directory watcher with saved secret salt..." << std::endl;
@ -1895,6 +1908,19 @@ bool p3FileDatabase::getPrimaryBannedFilesList(std::map<RsFileHash,BannedFileEnt
return true ; return true ;
} }
bool p3FileDatabase::trustFriendNodesForBannedFiles() const
{
RS_STACK_MUTEX(mFLSMtx) ;
return mTrustFriendNodesForBannedFiles;
}
void p3FileDatabase::setTrustFriendNodesForBannedFiles(bool b)
{
if(b != mTrustFriendNodesForBannedFiles)
IndicateConfigChanged();
RS_STACK_MUTEX(mFLSMtx) ;
mTrustFriendNodesForBannedFiles = b;
}

View File

@ -135,6 +135,8 @@ class p3FileDatabase: public p3Service, public p3Config, public ftSearch //, pub
bool banFile(const RsFileHash& real_file_hash, const std::string& filename, uint64_t file_size) ; bool banFile(const RsFileHash& real_file_hash, const std::string& filename, uint64_t file_size) ;
bool unbanFile(const RsFileHash& real_file_hash); bool unbanFile(const RsFileHash& real_file_hash);
bool getPrimaryBannedFilesList(std::map<RsFileHash,BannedFileEntry>& banned_files) ; bool getPrimaryBannedFilesList(std::map<RsFileHash,BannedFileEntry>& banned_files) ;
bool trustFriendNodesForBannedFiles() const ;
void setTrustFriendNodesForBannedFiles(bool b) ;
// computes/gathers statistics about shared directories // computes/gathers statistics about shared directories
@ -254,5 +256,6 @@ class p3FileDatabase: public p3Service, public p3Config, public ftSearch //, pub
std::map<RsFileHash,BannedFileEntry> mPrimaryBanList ; // primary list (user controlled) of files banned from FT search and forwarding. map<real hash, BannedFileEntry> std::map<RsFileHash,BannedFileEntry> mPrimaryBanList ; // primary list (user controlled) of files banned from FT search and forwarding. map<real hash, BannedFileEntry>
std::set<RsFileHash> mBannedFileList ; // list of banned hashes. This include original hashs and H(H(f)) when coming from friends. std::set<RsFileHash> mBannedFileList ; // list of banned hashes. This include original hashs and H(H(f)) when coming from friends.
bool mTrustFriendNodesForBannedFiles ;
}; };

View File

@ -447,6 +447,13 @@
</item> </item>
</layout> </layout>
</item> </item>
<item>
<widget class="QCheckBox" name="checkBox">
<property name="text">
<string>Trust friend nodes with banned files</string>
</property>
</widget>
</item>
<item> <item>
<widget class="QTextEdit" name="textEdit"> <widget class="QTextEdit" name="textEdit">
<property name="readOnly"> <property name="readOnly">