mirror of
https://github.com/RetroShare/RetroShare.git
synced 2025-06-19 11:54:22 -04:00
Merge branch 'master' into qmlapp_pex_alpha
This commit is contained in:
commit
ccaf4881a8
35 changed files with 399 additions and 260 deletions
|
@ -44,6 +44,12 @@
|
||||||
|
|
||||||
//#define DEBUG_CHACHA20
|
//#define DEBUG_CHACHA20
|
||||||
|
|
||||||
|
#if OPENSSL_VERSION_NUMBER >= 0x010100000L
|
||||||
|
#define AEAD_chacha20_poly1305_openssl AEAD_chacha20_poly1305
|
||||||
|
#else
|
||||||
|
#define AEAD_chacha20_poly1305_rs AEAD_chacha20_poly1305
|
||||||
|
#endif
|
||||||
|
|
||||||
namespace librs {
|
namespace librs {
|
||||||
namespace crypto {
|
namespace crypto {
|
||||||
|
|
||||||
|
@ -273,6 +279,7 @@ static void quotient(const uint256_32& n,const uint256_32& p,uint256_32& q,uint2
|
||||||
q += m ;
|
q += m ;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static void remainder(const uint256_32& n,const uint256_32& p,uint256_32& r)
|
static void remainder(const uint256_32& n,const uint256_32& p,uint256_32& r)
|
||||||
{
|
{
|
||||||
// simple algorithm: add up multiples of u while keeping below *this. Once done, substract.
|
// simple algorithm: add up multiples of u while keeping below *this. Once done, substract.
|
||||||
|
@ -356,7 +363,7 @@ static void print(const chacha20_state& s)
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
void chacha20_encrypt(uint8_t key[32], uint32_t block_counter, uint8_t nonce[12], uint8_t *data, uint32_t size)
|
void chacha20_encrypt_rs(uint8_t key[32], uint32_t block_counter, uint8_t nonce[12], uint8_t *data, uint32_t size)
|
||||||
{
|
{
|
||||||
for(uint32_t i=0;i<size/64 + 1;++i)
|
for(uint32_t i=0;i<size/64 + 1;++i)
|
||||||
{
|
{
|
||||||
|
@ -379,6 +386,50 @@ void chacha20_encrypt(uint8_t key[32], uint32_t block_counter, uint8_t nonce[12]
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#if OPENSSL_VERSION_NUMBER >= 0x010100000L
|
||||||
|
void chacha20_encrypt_openssl(uint8_t key[32], uint32_t block_counter, uint8_t nonce[12], uint8_t *data, uint32_t size)
|
||||||
|
{
|
||||||
|
EVP_CIPHER_CTX *ctx;
|
||||||
|
|
||||||
|
int len;
|
||||||
|
int tmp_len;
|
||||||
|
uint8_t tmp[size];
|
||||||
|
uint8_t iv[16];
|
||||||
|
|
||||||
|
// create iv with nonce and block counter
|
||||||
|
memcpy(iv, &block_counter, 4);
|
||||||
|
memcpy(iv + 4, nonce, 12);
|
||||||
|
|
||||||
|
/* Create and initialise the context */
|
||||||
|
if(!(ctx = EVP_CIPHER_CTX_new())) return;
|
||||||
|
|
||||||
|
/* Initialise the encryption operation. IMPORTANT - ensure you use a key
|
||||||
|
* and IV size appropriate for your cipher
|
||||||
|
* In this example we are using 256 bit AES (i.e. a 256 bit key). The
|
||||||
|
* IV size for *most* modes is the same as the block size. For AES this
|
||||||
|
* is 128 bits */
|
||||||
|
if(1 != EVP_EncryptInit_ex(ctx, EVP_chacha20(), NULL, key, iv)) goto out;
|
||||||
|
|
||||||
|
/* Provide the message to be encrypted, and obtain the encrypted output.
|
||||||
|
* EVP_EncryptUpdate can be called multiple times if necessary
|
||||||
|
*/
|
||||||
|
if(1 != EVP_EncryptUpdate(ctx, tmp, &len, data, size)) goto out;
|
||||||
|
tmp_len = len;
|
||||||
|
|
||||||
|
/* Finalise the encryption. Further ciphertext bytes may be written at
|
||||||
|
* this stage.
|
||||||
|
*/
|
||||||
|
if(1 != EVP_EncryptFinal_ex(ctx, tmp + len, &len)) goto out;
|
||||||
|
tmp_len += len;
|
||||||
|
|
||||||
|
memcpy(data, tmp, tmp_len);
|
||||||
|
|
||||||
|
out:
|
||||||
|
/* Clean up */
|
||||||
|
EVP_CIPHER_CTX_free(ctx);
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
struct poly1305_state
|
struct poly1305_state
|
||||||
{
|
{
|
||||||
uint256_32 r ;
|
uint256_32 r ;
|
||||||
|
@ -475,7 +526,7 @@ bool constant_time_memory_compare(const uint8_t *m1,const uint8_t *m2,uint32_t s
|
||||||
return !CRYPTO_memcmp(m1,m2,size) ;
|
return !CRYPTO_memcmp(m1,m2,size) ;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool AEAD_chacha20_poly1305(uint8_t key[32], uint8_t nonce[12],uint8_t *data,uint32_t data_size,uint8_t *aad,uint32_t aad_size,uint8_t tag[16],bool encrypt)
|
bool AEAD_chacha20_poly1305_rs(uint8_t key[32], uint8_t nonce[12],uint8_t *data,uint32_t data_size,uint8_t *aad,uint32_t aad_size,uint8_t tag[16],bool encrypt)
|
||||||
{
|
{
|
||||||
// encrypt + tag. See RFC7539-2.8
|
// encrypt + tag. See RFC7539-2.8
|
||||||
|
|
||||||
|
@ -492,7 +543,7 @@ bool AEAD_chacha20_poly1305(uint8_t key[32], uint8_t nonce[12],uint8_t *data,uin
|
||||||
|
|
||||||
if(encrypt)
|
if(encrypt)
|
||||||
{
|
{
|
||||||
chacha20_encrypt(key,1,nonce,data,data_size);
|
chacha20_encrypt_rs(key,1,nonce,data,data_size);
|
||||||
|
|
||||||
poly1305_state pls ;
|
poly1305_state pls ;
|
||||||
|
|
||||||
|
@ -520,19 +571,107 @@ bool AEAD_chacha20_poly1305(uint8_t key[32], uint8_t nonce[12],uint8_t *data,uin
|
||||||
|
|
||||||
// decrypt
|
// decrypt
|
||||||
|
|
||||||
chacha20_encrypt(key,1,nonce,data,data_size);
|
chacha20_encrypt_rs(key,1,nonce,data,data_size);
|
||||||
|
|
||||||
return constant_time_memory_compare(tag,computed_tag,16) ;
|
return constant_time_memory_compare(tag,computed_tag,16) ;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#if OPENSSL_VERSION_NUMBER >= 0x010100000L
|
||||||
|
#define errorOut {ret = false; goto out;}
|
||||||
|
|
||||||
|
bool AEAD_chacha20_poly1305_openssl(uint8_t key[32], uint8_t nonce[12], uint8_t *data, uint32_t data_size, uint8_t *aad, uint32_t aad_size, uint8_t tag[16], bool encrypt_or_decrypt)
|
||||||
|
{
|
||||||
|
EVP_CIPHER_CTX *ctx;
|
||||||
|
|
||||||
|
bool ret = true;
|
||||||
|
int len;
|
||||||
|
const uint8_t tag_len = 16;
|
||||||
|
int tmp_len;
|
||||||
|
uint8_t tmp[data_size];
|
||||||
|
|
||||||
|
/* Create and initialise the context */
|
||||||
|
if(!(ctx = EVP_CIPHER_CTX_new())) return false;
|
||||||
|
|
||||||
|
if (encrypt_or_decrypt) {
|
||||||
|
/* Initialise the encryption operation. */
|
||||||
|
if(1 != EVP_EncryptInit_ex(ctx, EVP_chacha20_poly1305(), NULL, NULL, NULL)) errorOut
|
||||||
|
|
||||||
|
/* Initialise key and IV */
|
||||||
|
if(1 != EVP_EncryptInit_ex(ctx, NULL, NULL, key, nonce)) errorOut
|
||||||
|
|
||||||
|
/* Provide any AAD data. This can be called zero or more times as
|
||||||
|
* required
|
||||||
|
*/
|
||||||
|
if(1 != EVP_EncryptUpdate(ctx, NULL, &len, aad, aad_size)) errorOut
|
||||||
|
|
||||||
|
/* Provide the message to be encrypted, and obtain the encrypted output.
|
||||||
|
* EVP_EncryptUpdate can be called multiple times if necessary
|
||||||
|
*/
|
||||||
|
if(1 != EVP_EncryptUpdate(ctx, tmp, &len, data, data_size)) errorOut
|
||||||
|
tmp_len = len;
|
||||||
|
|
||||||
|
/* Finalise the encryption. Normally ciphertext bytes may be written at
|
||||||
|
* this stage, but this does not occur in GCM mode
|
||||||
|
*/
|
||||||
|
if(1 != EVP_EncryptFinal_ex(ctx, data + len, &len)) errorOut
|
||||||
|
tmp_len += len;
|
||||||
|
|
||||||
|
/* Get the tag */
|
||||||
|
if(1 != EVP_CIPHER_CTX_ctrl(ctx, EVP_CTRL_AEAD_GET_TAG, tag_len, tag)) errorOut
|
||||||
|
} else {
|
||||||
|
/* Initialise the decryption operation. */
|
||||||
|
if(!EVP_DecryptInit_ex(ctx, EVP_chacha20_poly1305(), NULL, key, nonce)) errorOut
|
||||||
|
|
||||||
|
/* Provide any AAD data. This can be called zero or more times as
|
||||||
|
* required
|
||||||
|
*/
|
||||||
|
if(!EVP_DecryptUpdate(ctx, NULL, &len, aad, aad_size)) errorOut
|
||||||
|
|
||||||
|
/* Provide the message to be decrypted, and obtain the plaintext output.
|
||||||
|
* EVP_DecryptUpdate can be called multiple times if necessary
|
||||||
|
*/
|
||||||
|
if(!EVP_DecryptUpdate(ctx, tmp, &len, data, data_size)) errorOut
|
||||||
|
tmp_len = len;
|
||||||
|
|
||||||
|
/* Set expected tag value. Works in OpenSSL 1.0.1d and later */
|
||||||
|
if(!EVP_CIPHER_CTX_ctrl(ctx, EVP_CTRL_AEAD_SET_TAG, tag_len, tag)) errorOut
|
||||||
|
|
||||||
|
/* Finalise the decryption. A positive return value indicates success,
|
||||||
|
* anything else is a failure - the plaintext is not trustworthy.
|
||||||
|
*/
|
||||||
|
if(EVP_DecryptFinal_ex(ctx, tmp + len, &len) > 0) {
|
||||||
|
/* Success */
|
||||||
|
tmp_len += len;
|
||||||
|
ret = true;
|
||||||
|
} else {
|
||||||
|
/* Verify failed */
|
||||||
|
errorOut
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
memcpy(data, tmp, tmp_len);
|
||||||
|
|
||||||
|
out:
|
||||||
|
/* Clean up */
|
||||||
|
EVP_CIPHER_CTX_free(ctx);
|
||||||
|
return !!ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
#undef errorOut
|
||||||
|
#endif
|
||||||
|
|
||||||
bool AEAD_chacha20_sha256(uint8_t key[32], uint8_t nonce[12],uint8_t *data,uint32_t data_size,uint8_t *aad,uint32_t aad_size,uint8_t tag[16],bool encrypt)
|
bool AEAD_chacha20_sha256(uint8_t key[32], uint8_t nonce[12],uint8_t *data,uint32_t data_size,uint8_t *aad,uint32_t aad_size,uint8_t tag[16],bool encrypt)
|
||||||
{
|
{
|
||||||
// encrypt + tag. See RFC7539-2.8
|
// encrypt + tag. See RFC7539-2.8
|
||||||
|
|
||||||
if(encrypt)
|
if(encrypt)
|
||||||
{
|
{
|
||||||
chacha20_encrypt(key,1,nonce,data,data_size);
|
#if OPENSSL_VERSION_NUMBER < 0x10100000L
|
||||||
|
chacha20_encrypt_rs(key,1,nonce,data,data_size);
|
||||||
|
#else
|
||||||
|
chacha20_encrypt_openssl(key, 1, nonce, data, data_size);
|
||||||
|
#endif
|
||||||
|
|
||||||
uint8_t computed_tag[EVP_MAX_MD_SIZE];
|
uint8_t computed_tag[EVP_MAX_MD_SIZE];
|
||||||
unsigned int md_size ;
|
unsigned int md_size ;
|
||||||
|
@ -594,7 +733,11 @@ bool AEAD_chacha20_sha256(uint8_t key[32], uint8_t nonce[12],uint8_t *data,uint3
|
||||||
|
|
||||||
// decrypt
|
// decrypt
|
||||||
|
|
||||||
chacha20_encrypt(key,1,nonce,data,data_size);
|
#if OPENSSL_VERSION_NUMBER < 0x10100000L
|
||||||
|
chacha20_encrypt_rs(key,1,nonce,data,data_size);
|
||||||
|
#else
|
||||||
|
chacha20_encrypt_openssl(key, 1, nonce, data, data_size);
|
||||||
|
#endif
|
||||||
|
|
||||||
return constant_time_memory_compare(tag,computed_tag,16) ;
|
return constant_time_memory_compare(tag,computed_tag,16) ;
|
||||||
}
|
}
|
||||||
|
@ -674,7 +817,7 @@ bool perform_tests()
|
||||||
0x74, 0x2e
|
0x74, 0x2e
|
||||||
};
|
};
|
||||||
|
|
||||||
chacha20_encrypt(key,1,nounce2,plaintext,7*16+2) ;
|
chacha20_encrypt_rs(key,1,nounce2,plaintext,7*16+2) ;
|
||||||
|
|
||||||
#ifdef DEBUG_CHACHA20
|
#ifdef DEBUG_CHACHA20
|
||||||
fprintf(stdout,"CipherText: \n") ;
|
fprintf(stdout,"CipherText: \n") ;
|
||||||
|
@ -1154,12 +1297,12 @@ bool perform_tests()
|
||||||
uint8_t tag[16] ;
|
uint8_t tag[16] ;
|
||||||
uint8_t test_tag[16] = { 0x1a,0xe1,0x0b,0x59,0x4f,0x09,0xe2,0x6a,0x7e,0x90,0x2e,0xcb,0xd0,0x60,0x06,0x91 };
|
uint8_t test_tag[16] = { 0x1a,0xe1,0x0b,0x59,0x4f,0x09,0xe2,0x6a,0x7e,0x90,0x2e,0xcb,0xd0,0x60,0x06,0x91 };
|
||||||
|
|
||||||
AEAD_chacha20_poly1305(key,nonce,msg,7*16+2,aad,12,tag,true) ;
|
AEAD_chacha20_poly1305_rs(key,nonce,msg,7*16+2,aad,12,tag,true) ;
|
||||||
|
|
||||||
if(!constant_time_memory_compare(msg,test_msg,7*16+2)) return false ;
|
if(!constant_time_memory_compare(msg,test_msg,7*16+2)) return false ;
|
||||||
if(!constant_time_memory_compare(tag,test_tag,16)) return false ;
|
if(!constant_time_memory_compare(tag,test_tag,16)) return false ;
|
||||||
|
|
||||||
bool res = AEAD_chacha20_poly1305(key,nonce,msg,7*16+2,aad,12,tag,false) ;
|
bool res = AEAD_chacha20_poly1305_rs(key,nonce,msg,7*16+2,aad,12,tag,false) ;
|
||||||
|
|
||||||
if(!res) return false ;
|
if(!res) return false ;
|
||||||
}
|
}
|
||||||
|
@ -1197,7 +1340,7 @@ bool perform_tests()
|
||||||
|
|
||||||
uint8_t received_tag[16] = { 0xee,0xad,0x9d,0x67,0x89,0x0c,0xbb,0x22,0x39,0x23,0x36,0xfe,0xa1,0x85,0x1f,0x38 };
|
uint8_t received_tag[16] = { 0xee,0xad,0x9d,0x67,0x89,0x0c,0xbb,0x22,0x39,0x23,0x36,0xfe,0xa1,0x85,0x1f,0x38 };
|
||||||
|
|
||||||
if(!AEAD_chacha20_poly1305(key,nonce,ciphertext,16*16+9,aad,12,received_tag,false))
|
if(!AEAD_chacha20_poly1305_rs(key,nonce,ciphertext,16*16+9,aad,12,received_tag,false))
|
||||||
return false ;
|
return false ;
|
||||||
|
|
||||||
uint8_t cleartext[16*16+9] = {
|
uint8_t cleartext[16*16+9] = {
|
||||||
|
@ -1243,21 +1386,29 @@ bool perform_tests()
|
||||||
|
|
||||||
{
|
{
|
||||||
RsScopeTimer s("AEAD1") ;
|
RsScopeTimer s("AEAD1") ;
|
||||||
chacha20_encrypt(key, 1, nonce, ten_megabyte_data,SIZE) ;
|
chacha20_encrypt_rs(key, 1, nonce, ten_megabyte_data,SIZE) ;
|
||||||
|
|
||||||
std::cerr << " Chacha20 encryption speed : " << SIZE / (1024.0*1024.0) / s.duration() << " MB/s" << std::endl;
|
std::cerr << " Chacha20 encryption speed : " << SIZE / (1024.0*1024.0) / s.duration() << " MB/s" << std::endl;
|
||||||
}
|
}
|
||||||
{
|
{
|
||||||
RsScopeTimer s("AEAD2") ;
|
RsScopeTimer s("AEAD2") ;
|
||||||
AEAD_chacha20_poly1305(key,nonce,ten_megabyte_data,SIZE,aad,12,received_tag,true) ;
|
AEAD_chacha20_poly1305_rs(key,nonce,ten_megabyte_data,SIZE,aad,12,received_tag,true) ;
|
||||||
|
|
||||||
std::cerr << " AEAD/poly1305 encryption speed: " << SIZE / (1024.0*1024.0) / s.duration() << " MB/s" << std::endl;
|
std::cerr << " AEAD/poly1305 own encryption speed : " << SIZE / (1024.0*1024.0) / s.duration() << " MB/s" << std::endl;
|
||||||
}
|
}
|
||||||
|
#if OPENSSL_VERSION_NUMBER >= 0x010100000L
|
||||||
{
|
{
|
||||||
RsScopeTimer s("AEAD3") ;
|
RsScopeTimer s("AEAD3") ;
|
||||||
|
AEAD_chacha20_poly1305_openssl(key,nonce,ten_megabyte_data,SIZE,aad,12,received_tag,true) ;
|
||||||
|
|
||||||
|
std::cerr << " AEAD/poly1305 openssl encryption speed: " << SIZE / (1024.0*1024.0) / s.duration() << " MB/s" << std::endl;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
{
|
||||||
|
RsScopeTimer s("AEAD4") ;
|
||||||
AEAD_chacha20_sha256(key,nonce,ten_megabyte_data,SIZE,aad,12,received_tag,true) ;
|
AEAD_chacha20_sha256(key,nonce,ten_megabyte_data,SIZE,aad,12,received_tag,true) ;
|
||||||
|
|
||||||
std::cerr << " AEAD/sha256 encryption speed : " << SIZE / (1024.0*1024.0) / s.duration() << " MB/s" << std::endl;
|
std::cerr << " AEAD/sha256 encryption speed : " << SIZE / (1024.0*1024.0) / s.duration() << " MB/s" << std::endl;
|
||||||
}
|
}
|
||||||
|
|
||||||
free(ten_megabyte_data) ;
|
free(ten_megabyte_data) ;
|
||||||
|
|
|
@ -53,11 +53,6 @@ void ftExtraList::data_tick()
|
||||||
bool todo = false;
|
bool todo = false;
|
||||||
time_t now = time(NULL);
|
time_t now = time(NULL);
|
||||||
|
|
||||||
#ifdef DEBUG_ELIST
|
|
||||||
//std::cerr << "ftExtraList::run() Iteration";
|
|
||||||
//std::cerr << std::endl;
|
|
||||||
#endif
|
|
||||||
|
|
||||||
{
|
{
|
||||||
RsStackMutex stack(extMutex);
|
RsStackMutex stack(extMutex);
|
||||||
|
|
||||||
|
@ -131,6 +126,7 @@ void ftExtraList::hashAFile()
|
||||||
|
|
||||||
/* stick it in the available queue */
|
/* stick it in the available queue */
|
||||||
mFiles[details.info.hash] = details;
|
mFiles[details.info.hash] = details;
|
||||||
|
mHashOfHash[makeEncryptedHash(details.info.hash)] = details.info.hash ;
|
||||||
|
|
||||||
/* add to the path->hash map */
|
/* add to the path->hash map */
|
||||||
mHashedList[details.info.path] = details.info.hash;
|
mHashedList[details.info.path] = details.info.hash;
|
||||||
|
@ -169,6 +165,7 @@ bool ftExtraList::addExtraFile(std::string path, const RsFileHash& hash,
|
||||||
|
|
||||||
/* stick it in the available queue */
|
/* stick it in the available queue */
|
||||||
mFiles[details.info.hash] = details;
|
mFiles[details.info.hash] = details;
|
||||||
|
mHashOfHash[makeEncryptedHash(details.info.hash)] = details.info.hash ;
|
||||||
|
|
||||||
IndicateConfigChanged();
|
IndicateConfigChanged();
|
||||||
|
|
||||||
|
@ -190,6 +187,8 @@ bool ftExtraList::removeExtraFile(const RsFileHash& hash, TransferRequestFlags f
|
||||||
|
|
||||||
RsStackMutex stack(extMutex);
|
RsStackMutex stack(extMutex);
|
||||||
|
|
||||||
|
mHashOfHash.erase(makeEncryptedHash(hash)) ;
|
||||||
|
|
||||||
std::map<RsFileHash, FileDetails>::iterator it;
|
std::map<RsFileHash, FileDetails>::iterator it;
|
||||||
it = mFiles.find(hash);
|
it = mFiles.find(hash);
|
||||||
if (it == mFiles.end())
|
if (it == mFiles.end())
|
||||||
|
@ -242,29 +241,26 @@ bool ftExtraList::cleanupOldFiles()
|
||||||
time_t now = time(NULL);
|
time_t now = time(NULL);
|
||||||
|
|
||||||
std::list<RsFileHash> toRemove;
|
std::list<RsFileHash> toRemove;
|
||||||
std::list<RsFileHash>::iterator rit;
|
|
||||||
|
|
||||||
std::map<RsFileHash, FileDetails>::iterator it;
|
for( std::map<RsFileHash, FileDetails>::iterator it = mFiles.begin(); it != mFiles.end(); ++it) /* check timestamps */
|
||||||
for(it = mFiles.begin(); it != mFiles.end(); ++it)
|
|
||||||
{
|
|
||||||
/* check timestamps */
|
|
||||||
if ((time_t)it->second.info.age < now)
|
if ((time_t)it->second.info.age < now)
|
||||||
{
|
|
||||||
toRemove.push_back(it->first);
|
toRemove.push_back(it->first);
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (toRemove.size() > 0)
|
if (toRemove.size() > 0)
|
||||||
{
|
{
|
||||||
|
std::map<RsFileHash, FileDetails>::iterator it;
|
||||||
|
|
||||||
/* remove items */
|
/* remove items */
|
||||||
for(rit = toRemove.begin(); rit != toRemove.end(); ++rit)
|
for(std::list<RsFileHash>::iterator rit = toRemove.begin(); rit != toRemove.end(); ++rit)
|
||||||
{
|
{
|
||||||
if (mFiles.end() != (it = mFiles.find(*rit)))
|
if (mFiles.end() != (it = mFiles.find(*rit)))
|
||||||
{
|
{
|
||||||
cleanupEntry(it->second.info.path, it->second.info.transfer_info_flags);
|
cleanupEntry(it->second.info.path, it->second.info.transfer_info_flags);
|
||||||
mFiles.erase(it);
|
mFiles.erase(it);
|
||||||
}
|
}
|
||||||
}
|
mHashOfHash.erase(makeEncryptedHash(*rit)) ;
|
||||||
|
}
|
||||||
|
|
||||||
IndicateConfigChanged();
|
IndicateConfigChanged();
|
||||||
}
|
}
|
||||||
return true;
|
return true;
|
||||||
|
@ -333,31 +329,71 @@ bool ftExtraList::hashExtraFileDone(std::string path, FileInfo &info)
|
||||||
**/
|
**/
|
||||||
bool ftExtraList::search(const RsFileHash &hash, FileSearchFlags /*hintflags*/, FileInfo &info) const
|
bool ftExtraList::search(const RsFileHash &hash, FileSearchFlags /*hintflags*/, FileInfo &info) const
|
||||||
{
|
{
|
||||||
|
|
||||||
#ifdef DEBUG_ELIST
|
#ifdef DEBUG_ELIST
|
||||||
std::cerr << "ftExtraList::search()";
|
std::cerr << "ftExtraList::search() hash=" << hash ;
|
||||||
std::cerr << std::endl;
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/* find hash */
|
/* find hash */
|
||||||
std::map<RsFileHash, FileDetails>::const_iterator fit;
|
std::map<RsFileHash, FileDetails>::const_iterator fit;
|
||||||
if (mFiles.end() == (fit = mFiles.find(hash)))
|
if (mFiles.end() == (fit = mFiles.find(hash)))
|
||||||
{
|
{
|
||||||
return false;
|
#ifdef DEBUG_ELIST
|
||||||
|
std::cerr << " not found in mFiles. Trying encrypted... " ;
|
||||||
|
#endif
|
||||||
|
// File not found. We try to look for encrypted hash.
|
||||||
|
|
||||||
|
std::map<RsFileHash,RsFileHash>::const_iterator hit = mHashOfHash.find(hash) ;
|
||||||
|
|
||||||
|
if(hit == mHashOfHash.end())
|
||||||
|
{
|
||||||
|
#ifdef DEBUG_ELIST
|
||||||
|
std::cerr << " not found." << std::endl;
|
||||||
|
#endif
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
#ifdef DEBUG_ELIST
|
||||||
|
std::cerr << " found! Reaching data..." ;
|
||||||
|
#endif
|
||||||
|
|
||||||
|
fit = mFiles.find(hit->second) ;
|
||||||
|
|
||||||
|
if(fit == mFiles.end()) // not found. This is an error.
|
||||||
|
{
|
||||||
|
#ifdef DEBUG_ELIST
|
||||||
|
std::cerr << " no data. Returning false." << std::endl;
|
||||||
|
#endif
|
||||||
|
return false ;
|
||||||
|
}
|
||||||
|
|
||||||
|
#ifdef DEBUG_ELIST
|
||||||
|
std::cerr << " ok! Accepting encrypted transfer." << std::endl;
|
||||||
|
#endif
|
||||||
|
info = fit->second.info;
|
||||||
|
info.storage_permission_flags = FileStorageFlags(DIR_FLAGS_ANONYMOUS_DOWNLOAD) ;
|
||||||
|
info.transfer_info_flags |= RS_FILE_REQ_ENCRYPTED ;
|
||||||
}
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
#ifdef DEBUG_ELIST
|
||||||
|
std::cerr << " found! Accepting direct transfer" << std::endl;
|
||||||
|
#endif
|
||||||
|
info = fit->second.info;
|
||||||
|
|
||||||
info = fit->second.info;
|
// Unencrypted file transfer: We only allow direct transfers. This is not exactly secure since another friend can
|
||||||
|
// swarm the file. But the hash being kept secret, there's no risk here.
|
||||||
// Now setup the file storage flags so that the client can know how to handle permissions
|
//
|
||||||
//
|
info.storage_permission_flags = FileStorageFlags(DIR_FLAGS_BROWSABLE) ;
|
||||||
#warning mr-alice: make sure this is right
|
}
|
||||||
info.storage_permission_flags = FileStorageFlags(0) ;//DIR_FLAGS_BROWSABLE_OTHERS ;
|
|
||||||
|
|
||||||
if(info.transfer_info_flags & RS_FILE_REQ_ANONYMOUS_ROUTING) info.storage_permission_flags |= DIR_FLAGS_ANONYMOUS_DOWNLOAD ;
|
if(info.transfer_info_flags & RS_FILE_REQ_ANONYMOUS_ROUTING) info.storage_permission_flags |= DIR_FLAGS_ANONYMOUS_DOWNLOAD ;
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
RsFileHash ftExtraList::makeEncryptedHash(const RsFileHash& hash)
|
||||||
|
{
|
||||||
|
return RsDirUtil::sha1sum(hash.toByteArray(),hash.SIZE_IN_BYTES);
|
||||||
|
}
|
||||||
|
|
||||||
/***
|
/***
|
||||||
* Configuration - store extra files.
|
* Configuration - store extra files.
|
||||||
|
@ -472,6 +508,8 @@ bool ftExtraList::loadList(std::list<RsItem *>& load)
|
||||||
|
|
||||||
/* stick it in the available queue */
|
/* stick it in the available queue */
|
||||||
mFiles[details.info.hash] = details;
|
mFiles[details.info.hash] = details;
|
||||||
|
mHashOfHash[makeEncryptedHash(details.info.hash)] = details.info.hash ;
|
||||||
|
|
||||||
delete (*it);
|
delete (*it);
|
||||||
|
|
||||||
/* short sleep */
|
/* short sleep */
|
||||||
|
|
|
@ -109,66 +109,69 @@ const uint32_t CLEANUP_PERIOD = 600; /* 10 minutes */
|
||||||
class ftExtraList: public RsTickingThread, public p3Config, public ftSearch
|
class ftExtraList: public RsTickingThread, public p3Config, public ftSearch
|
||||||
{
|
{
|
||||||
|
|
||||||
public:
|
public:
|
||||||
|
|
||||||
ftExtraList();
|
ftExtraList();
|
||||||
|
|
||||||
/***
|
/***
|
||||||
* If the File is alreay Hashed, then just add it in.
|
* If the File is alreay Hashed, then just add it in.
|
||||||
**/
|
**/
|
||||||
|
|
||||||
bool addExtraFile(std::string path, const RsFileHash &hash,
|
bool addExtraFile(std::string path, const RsFileHash &hash,
|
||||||
uint64_t size, uint32_t period, TransferRequestFlags flags);
|
uint64_t size, uint32_t period, TransferRequestFlags flags);
|
||||||
|
|
||||||
bool removeExtraFile(const RsFileHash& hash, TransferRequestFlags flags);
|
bool removeExtraFile(const RsFileHash& hash, TransferRequestFlags flags);
|
||||||
bool moveExtraFile(std::string fname, const RsFileHash& hash, uint64_t size,
|
bool moveExtraFile(std::string fname, const RsFileHash& hash, uint64_t size,
|
||||||
std::string destpath);
|
std::string destpath);
|
||||||
|
|
||||||
|
|
||||||
/***
|
/***
|
||||||
* Hash file, and add to the files,
|
* Hash file, and add to the files,
|
||||||
* file is removed after period.
|
* file is removed after period.
|
||||||
**/
|
**/
|
||||||
|
|
||||||
bool hashExtraFile(std::string path, uint32_t period, TransferRequestFlags flags);
|
bool hashExtraFile(std::string path, uint32_t period, TransferRequestFlags flags);
|
||||||
bool hashExtraFileDone(std::string path, FileInfo &info);
|
bool hashExtraFileDone(std::string path, FileInfo &info);
|
||||||
|
|
||||||
/***
|
/***
|
||||||
* Search Function - used by File Transfer
|
* Search Function - used by File Transfer
|
||||||
* implementation of ftSearch.
|
* implementation of ftSearch.
|
||||||
*
|
*
|
||||||
**/
|
**/
|
||||||
virtual bool search(const RsFileHash &hash, FileSearchFlags hintflags, FileInfo &info) const;
|
virtual bool search(const RsFileHash &hash, FileSearchFlags hintflags, FileInfo &info) const;
|
||||||
|
|
||||||
/***
|
/***
|
||||||
* Thread Main Loop
|
* Thread Main Loop
|
||||||
**/
|
**/
|
||||||
virtual void data_tick();
|
virtual void data_tick();
|
||||||
|
|
||||||
/***
|
/***
|
||||||
* Configuration - store extra files.
|
* Configuration - store extra files.
|
||||||
*
|
*
|
||||||
**/
|
**/
|
||||||
protected:
|
protected:
|
||||||
virtual RsSerialiser *setupSerialiser();
|
virtual RsSerialiser *setupSerialiser();
|
||||||
virtual bool saveList(bool &cleanup, std::list<RsItem*>&);
|
virtual bool saveList(bool &cleanup, std::list<RsItem*>&);
|
||||||
virtual bool loadList(std::list<RsItem *>& load);
|
virtual bool loadList(std::list<RsItem *>& load);
|
||||||
|
|
||||||
private:
|
static RsFileHash makeEncryptedHash(const RsFileHash& hash);
|
||||||
|
|
||||||
/* Worker Functions */
|
private:
|
||||||
void hashAFile();
|
|
||||||
bool cleanupOldFiles();
|
|
||||||
bool cleanupEntry(std::string path, TransferRequestFlags flags);
|
|
||||||
|
|
||||||
mutable RsMutex extMutex;
|
/* Worker Functions */
|
||||||
|
void hashAFile();
|
||||||
|
bool cleanupOldFiles();
|
||||||
|
bool cleanupEntry(std::string path, TransferRequestFlags flags);
|
||||||
|
|
||||||
std::list<FileDetails> mToHash;
|
mutable RsMutex extMutex;
|
||||||
|
|
||||||
std::map<std::string, RsFileHash> mHashedList; /* path -> hash ( not saved ) */
|
std::list<FileDetails> mToHash;
|
||||||
std::map<RsFileHash, FileDetails> mFiles;
|
|
||||||
|
|
||||||
time_t cleanup ;
|
std::map<std::string, RsFileHash> mHashedList; /* path -> hash ( not saved ) */
|
||||||
|
std::map<RsFileHash, FileDetails> mFiles;
|
||||||
|
std::map<RsFileHash, RsFileHash> mHashOfHash; /* sha1(hash) map so as to answer requests to encrypted transfers */
|
||||||
|
|
||||||
|
time_t cleanup ;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -1371,6 +1371,18 @@ bool RsGenExchange::getGroupData(const uint32_t &token, std::vector<RsGxsGrpItem
|
||||||
gItem->meta.mPop = 0;
|
gItem->meta.mPop = 0;
|
||||||
gItem->meta.mVisibleMsgCount = 0;
|
gItem->meta.mVisibleMsgCount = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Also check the group privacy flags. A while ago, it as possible to publish a group without privacy flags. Now it is not possible anymore.
|
||||||
|
// As a consequence, it's important to supply a correct value in this flag before the data can be edited/updated.
|
||||||
|
|
||||||
|
if((gItem->meta.mGroupFlags & GXS_SERV::FLAG_PRIVACY_MASK) == 0)
|
||||||
|
{
|
||||||
|
#ifdef GEN_EXCH_DEBUG
|
||||||
|
std::cerr << "(WW) getGroupData(): mGroupFlags for group " << gItem->meta.mGroupId << " has incorrect value " << std::hex << gItem->meta.mGroupFlags << std::dec << ". Setting value to GXS_SERV::FLAG_PRIVACY_PUBLIC." << std::endl;
|
||||||
|
#endif
|
||||||
|
gItem->meta.mGroupFlags |= GXS_SERV::FLAG_PRIVACY_PUBLIC;
|
||||||
|
}
|
||||||
|
|
||||||
grpItem.push_back(gItem);
|
grpItem.push_back(gItem);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
|
|
@ -7,6 +7,8 @@
|
||||||
#include "serialiser/rsserializer.h"
|
#include "serialiser/rsserializer.h"
|
||||||
#include "util/stacktrace.h"
|
#include "util/stacktrace.h"
|
||||||
|
|
||||||
|
#include <typeinfo>
|
||||||
|
|
||||||
class RsItem: public RsMemoryManagement::SmallObject
|
class RsItem: public RsMemoryManagement::SmallObject
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
|
|
|
@ -162,6 +162,19 @@ void RsNxsGrp::clear()
|
||||||
meta.TlvClear();
|
meta.TlvClear();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
RsNxsGrp* RsNxsGrp::clone() const {
|
||||||
|
RsNxsGrp* grp = new RsNxsGrp(this->grp.tlvtype);
|
||||||
|
*grp = *this;
|
||||||
|
|
||||||
|
if(this->metaData)
|
||||||
|
{
|
||||||
|
grp->metaData = new RsGxsGrpMetaData();
|
||||||
|
*(grp->metaData) = *(this->metaData);
|
||||||
|
}
|
||||||
|
|
||||||
|
return grp;
|
||||||
|
}
|
||||||
|
|
||||||
void RsNxsSyncGrpReqItem::clear()
|
void RsNxsSyncGrpReqItem::clear()
|
||||||
{
|
{
|
||||||
flag = 0;
|
flag = 0;
|
||||||
|
|
|
@ -37,6 +37,8 @@
|
||||||
#include <map>
|
#include <map>
|
||||||
#include <vector>
|
#include <vector>
|
||||||
#include <iostream>
|
#include <iostream>
|
||||||
|
#include <typeinfo>
|
||||||
|
|
||||||
|
|
||||||
/***
|
/***
|
||||||
* #define RSSERIAL_DEBUG 1
|
* #define RSSERIAL_DEBUG 1
|
||||||
|
@ -385,7 +387,7 @@ RsItem * RsSerialiser::deserialise(void *data, uint32_t *size)
|
||||||
//std::cerr << "RsSerialiser::deserialise() RsItem Type: " << std::hex << getRsItemId(data) << " Size: " << pkt_size;
|
//std::cerr << "RsSerialiser::deserialise() RsItem Type: " << std::hex << getRsItemId(data) << " Size: " << pkt_size;
|
||||||
//std::cerr << std::endl;
|
//std::cerr << std::endl;
|
||||||
|
|
||||||
if (pkt_size != *size)
|
if (pkt_size > *size)
|
||||||
{
|
{
|
||||||
#ifdef RSSERIAL_ERROR_DEBUG
|
#ifdef RSSERIAL_ERROR_DEBUG
|
||||||
std::cerr << "RsSerialiser::deserialise() ERROR Size mismatch(2)";
|
std::cerr << "RsSerialiser::deserialise() ERROR Size mismatch(2)";
|
||||||
|
|
|
@ -60,12 +60,14 @@ RsItem *RsServiceSerializer::deserialise(void *data, uint32_t *size)
|
||||||
|
|
||||||
item->serial_process(RsGenericSerializer::DESERIALIZE, ctx) ;
|
item->serial_process(RsGenericSerializer::DESERIALIZE, ctx) ;
|
||||||
|
|
||||||
if(ctx.mSize != ctx.mOffset)
|
if(ctx.mSize < ctx.mOffset)
|
||||||
{
|
{
|
||||||
std::cerr << "RsSerializer::deserialise(): ERROR. offset does not match expected size!" << std::endl;
|
std::cerr << "RsSerializer::deserialise(): ERROR. offset does not match expected size!" << std::endl;
|
||||||
delete item ;
|
delete item ;
|
||||||
return NULL ;
|
return NULL ;
|
||||||
}
|
}
|
||||||
|
*size = ctx.mOffset ;
|
||||||
|
|
||||||
if(ctx.mOk)
|
if(ctx.mOk)
|
||||||
return item ;
|
return item ;
|
||||||
|
|
||||||
|
@ -96,12 +98,14 @@ RsItem *RsConfigSerializer::deserialise(void *data, uint32_t *size)
|
||||||
|
|
||||||
item->serial_process(DESERIALIZE, ctx) ;
|
item->serial_process(DESERIALIZE, ctx) ;
|
||||||
|
|
||||||
if(ctx.mSize != ctx.mOffset)
|
if(ctx.mSize < ctx.mOffset)
|
||||||
{
|
{
|
||||||
std::cerr << "RsSerializer::deserialise(): ERROR. offset does not match expected size!" << std::endl;
|
std::cerr << "RsSerializer::deserialise(): ERROR. offset does not match expected size!" << std::endl;
|
||||||
delete item ;
|
delete item ;
|
||||||
return NULL ;
|
return NULL ;
|
||||||
}
|
}
|
||||||
|
*size = ctx.mOffset ;
|
||||||
|
|
||||||
if(ctx.mOk)
|
if(ctx.mOk)
|
||||||
return item ;
|
return item ;
|
||||||
|
|
||||||
|
@ -139,6 +143,8 @@ bool RsGenericSerializer::serialise(RsItem *item,void *data,uint32_t *size)
|
||||||
std::cerr << "RsSerializer::serialise(): ERROR. offset does not match expected size!" << std::endl;
|
std::cerr << "RsSerializer::serialise(): ERROR. offset does not match expected size!" << std::endl;
|
||||||
return false ;
|
return false ;
|
||||||
}
|
}
|
||||||
|
*size = ctx.mOffset ;
|
||||||
|
|
||||||
return true ;
|
return true ;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -32,6 +32,9 @@
|
||||||
#include "util/rsprint.h"
|
#include "util/rsprint.h"
|
||||||
|
|
||||||
#include <iomanip>
|
#include <iomanip>
|
||||||
|
#include <typeinfo>
|
||||||
|
#include <time.h>
|
||||||
|
|
||||||
|
|
||||||
static const uint32_t MAX_SERIALIZED_ARRAY_SIZE = 500 ;
|
static const uint32_t MAX_SERIALIZED_ARRAY_SIZE = 500 ;
|
||||||
static const uint32_t MAX_SERIALIZED_CHUNK_SIZE = 10*1024*1024 ; // 10 MB.
|
static const uint32_t MAX_SERIALIZED_CHUNK_SIZE = 10*1024*1024 ; // 10 MB.
|
||||||
|
|
|
@ -27,6 +27,8 @@
|
||||||
#include "rsitems/rsposteditems.h"
|
#include "rsitems/rsposteditems.h"
|
||||||
|
|
||||||
#include <math.h>
|
#include <math.h>
|
||||||
|
#include <typeinfo>
|
||||||
|
|
||||||
|
|
||||||
/****
|
/****
|
||||||
* #define POSTED_DEBUG 1
|
* #define POSTED_DEBUG 1
|
||||||
|
|
|
@ -265,7 +265,7 @@ MainWindow::MainWindow(QWidget* parent, Qt::WindowFlags flags)
|
||||||
statusBar()->addPermanentWidget(ratesstatus);
|
statusBar()->addPermanentWidget(ratesstatus);
|
||||||
|
|
||||||
opModeStatus = new OpModeStatus();
|
opModeStatus = new OpModeStatus();
|
||||||
opModeStatus->setVisible(Settings->valueFromGroup("StatusBar", "ShowOpMode", QVariant(true)).toBool());
|
opModeStatus->setVisible(Settings->valueFromGroup("StatusBar", "ShowOpMode", QVariant(false)).toBool());
|
||||||
statusBar()->addPermanentWidget(opModeStatus);
|
statusBar()->addPermanentWidget(opModeStatus);
|
||||||
|
|
||||||
soundStatus = new SoundStatus();
|
soundStatus = new SoundStatus();
|
||||||
|
|
|
@ -19,11 +19,13 @@
|
||||||
* Boston, MA 02110-1301, USA.
|
* Boston, MA 02110-1301, USA.
|
||||||
****************************************************************/
|
****************************************************************/
|
||||||
|
|
||||||
#include <rshare.h>
|
#include <QMessageBox>
|
||||||
#include <retroshare/rsinit.h>
|
|
||||||
|
#include "rshare.h"
|
||||||
|
#include "retroshare/rsinit.h"
|
||||||
#include "StartDialog.h"
|
#include "StartDialog.h"
|
||||||
#include "LogoBar.h"
|
#include "LogoBar.h"
|
||||||
#include <QMessageBox>
|
#include "retroshare/rsnotify.h"
|
||||||
#include "settings/rsharesettings.h"
|
#include "settings/rsharesettings.h"
|
||||||
|
|
||||||
#include <iostream>
|
#include <iostream>
|
||||||
|
@ -43,10 +45,6 @@ StartDialog::StartDialog(QWidget *parent)
|
||||||
|
|
||||||
Settings->loadWidgetInformation(this);
|
Settings->loadWidgetInformation(this);
|
||||||
|
|
||||||
ui.loadButton->setFocus();
|
|
||||||
|
|
||||||
connect(ui.loadButton, SIGNAL(clicked()), this, SLOT(loadPerson()));
|
|
||||||
|
|
||||||
/* get all available pgp private certificates....
|
/* get all available pgp private certificates....
|
||||||
* mark last one as default.
|
* mark last one as default.
|
||||||
*/
|
*/
|
||||||
|
@ -75,12 +73,21 @@ StartDialog::StartDialog(QWidget *parent)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
QObject::connect(ui.loadName,SIGNAL(currentIndexChanged(int)),this,SLOT(updateSelectedProfile(int))) ;
|
||||||
|
QObject::connect(ui.password_input,SIGNAL(returnPressed()),this,SLOT(loadPerson())) ;
|
||||||
|
|
||||||
if (pidx > 0)
|
if (pidx > 0)
|
||||||
{
|
{
|
||||||
ui.loadName->setCurrentIndex(pidx);
|
ui.loadName->setCurrentIndex(pidx);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void StartDialog::updateSelectedProfile(int)
|
||||||
|
{
|
||||||
|
ui.password_input->clear();
|
||||||
|
ui.password_input->setFocus();
|
||||||
|
}
|
||||||
|
|
||||||
void StartDialog::closeEvent (QCloseEvent * event)
|
void StartDialog::closeEvent (QCloseEvent * event)
|
||||||
{
|
{
|
||||||
Settings->saveWidgetInformation(this);
|
Settings->saveWidgetInformation(this);
|
||||||
|
@ -101,18 +108,22 @@ void StartDialog::loadPerson()
|
||||||
QVariant data = ui.loadName->itemData(pgpidx);
|
QVariant data = ui.loadName->itemData(pgpidx);
|
||||||
RsPeerId accountId = RsPeerId((data.toString()).toStdString());
|
RsPeerId accountId = RsPeerId((data.toString()).toStdString());
|
||||||
|
|
||||||
if (Rshare::loadCertificate(accountId, ui.autologin_checkbox->isChecked())) {
|
// Cache the passphrase, so that it is not asked again.
|
||||||
|
|
||||||
|
rsNotify->cachePgpPassphrase(ui.password_input->text().toUtf8().constData()) ;
|
||||||
|
|
||||||
|
bool res = Rshare::loadCertificate(accountId, ui.autologin_checkbox->isChecked()) ;
|
||||||
|
|
||||||
|
rsNotify->clearPgpPassphrase();
|
||||||
|
|
||||||
|
if(res)
|
||||||
accept();
|
accept();
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void StartDialog::on_labelProfile_linkActivated(QString /*link*/)
|
void StartDialog::on_labelProfile_linkActivated(QString /*link*/)
|
||||||
{
|
{
|
||||||
// if ((QMessageBox::question(this, tr("Create a New Profile"),tr("This will generate a new Profile\n Are you sure you want to continue?"),QMessageBox::Yes|QMessageBox::No, QMessageBox::Yes))== QMessageBox::Yes)
|
|
||||||
// {
|
|
||||||
reqNewCert = true;
|
reqNewCert = true;
|
||||||
accept();
|
accept();
|
||||||
// }
|
|
||||||
}
|
}
|
||||||
|
|
||||||
bool StartDialog::requestedNewCert()
|
bool StartDialog::requestedNewCert()
|
||||||
|
|
|
@ -39,6 +39,7 @@ protected:
|
||||||
|
|
||||||
private slots:
|
private slots:
|
||||||
void loadPerson();
|
void loadPerson();
|
||||||
|
void updateSelectedProfile(int);
|
||||||
|
|
||||||
#ifdef RS_AUTOLOGIN
|
#ifdef RS_AUTOLOGIN
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -6,8 +6,8 @@
|
||||||
<rect>
|
<rect>
|
||||||
<x>0</x>
|
<x>0</x>
|
||||||
<y>0</y>
|
<y>0</y>
|
||||||
<width>430</width>
|
<width>656</width>
|
||||||
<height>552</height>
|
<height>645</height>
|
||||||
</rect>
|
</rect>
|
||||||
</property>
|
</property>
|
||||||
<property name="windowTitle">
|
<property name="windowTitle">
|
||||||
|
@ -42,76 +42,6 @@
|
||||||
<number>0</number>
|
<number>0</number>
|
||||||
</property>
|
</property>
|
||||||
<item row="0" column="0" colspan="4">
|
<item row="0" column="0" colspan="4">
|
||||||
<layout class="QGridLayout">
|
|
||||||
<property name="leftMargin">
|
|
||||||
<number>0</number>
|
|
||||||
</property>
|
|
||||||
<property name="topMargin">
|
|
||||||
<number>6</number>
|
|
||||||
</property>
|
|
||||||
<property name="rightMargin">
|
|
||||||
<number>0</number>
|
|
||||||
</property>
|
|
||||||
<property name="bottomMargin">
|
|
||||||
<number>6</number>
|
|
||||||
</property>
|
|
||||||
<property name="spacing">
|
|
||||||
<number>6</number>
|
|
||||||
</property>
|
|
||||||
<item row="0" column="0">
|
|
||||||
<spacer>
|
|
||||||
<property name="orientation">
|
|
||||||
<enum>Qt::Horizontal</enum>
|
|
||||||
</property>
|
|
||||||
<property name="sizeHint" stdset="0">
|
|
||||||
<size>
|
|
||||||
<width>40</width>
|
|
||||||
<height>20</height>
|
|
||||||
</size>
|
|
||||||
</property>
|
|
||||||
</spacer>
|
|
||||||
</item>
|
|
||||||
<item row="0" column="1">
|
|
||||||
<widget class="QToolButton" name="toolButton">
|
|
||||||
<property name="styleSheet">
|
|
||||||
<string notr="true">QToolButton {
|
|
||||||
border-image: url(:/images/avatar_background.png);
|
|
||||||
}</string>
|
|
||||||
</property>
|
|
||||||
<property name="text">
|
|
||||||
<string/>
|
|
||||||
</property>
|
|
||||||
<property name="icon">
|
|
||||||
<iconset resource="images.qrc">
|
|
||||||
<normaloff>:/images/user/personal64.png</normaloff>:/images/user/personal64.png</iconset>
|
|
||||||
</property>
|
|
||||||
<property name="iconSize">
|
|
||||||
<size>
|
|
||||||
<width>96</width>
|
|
||||||
<height>96</height>
|
|
||||||
</size>
|
|
||||||
</property>
|
|
||||||
<property name="autoRaise">
|
|
||||||
<bool>true</bool>
|
|
||||||
</property>
|
|
||||||
</widget>
|
|
||||||
</item>
|
|
||||||
<item row="0" column="2">
|
|
||||||
<spacer>
|
|
||||||
<property name="orientation">
|
|
||||||
<enum>Qt::Horizontal</enum>
|
|
||||||
</property>
|
|
||||||
<property name="sizeHint" stdset="0">
|
|
||||||
<size>
|
|
||||||
<width>40</width>
|
|
||||||
<height>20</height>
|
|
||||||
</size>
|
|
||||||
</property>
|
|
||||||
</spacer>
|
|
||||||
</item>
|
|
||||||
</layout>
|
|
||||||
</item>
|
|
||||||
<item row="1" column="0" colspan="4">
|
|
||||||
<layout class="QGridLayout" name="gridLayout_2">
|
<layout class="QGridLayout" name="gridLayout_2">
|
||||||
<item row="0" column="0">
|
<item row="0" column="0">
|
||||||
<spacer name="horizontalSpacer">
|
<spacer name="horizontalSpacer">
|
||||||
|
@ -134,12 +64,6 @@
|
||||||
<height>0</height>
|
<height>0</height>
|
||||||
</size>
|
</size>
|
||||||
</property>
|
</property>
|
||||||
<property name="maximumSize">
|
|
||||||
<size>
|
|
||||||
<width>16777215</width>
|
|
||||||
<height>32</height>
|
|
||||||
</size>
|
|
||||||
</property>
|
|
||||||
<property name="palette">
|
<property name="palette">
|
||||||
<palette>
|
<palette>
|
||||||
<active>
|
<active>
|
||||||
|
@ -183,7 +107,10 @@
|
||||||
</font>
|
</font>
|
||||||
</property>
|
</property>
|
||||||
<property name="text">
|
<property name="text">
|
||||||
<string>Login</string>
|
<string/>
|
||||||
|
</property>
|
||||||
|
<property name="pixmap">
|
||||||
|
<pixmap resource="images.qrc">:/images/logo/logo_splash.png</pixmap>
|
||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
|
@ -202,7 +129,7 @@
|
||||||
</item>
|
</item>
|
||||||
</layout>
|
</layout>
|
||||||
</item>
|
</item>
|
||||||
<item row="3" column="1" rowspan="2" colspan="2">
|
<item row="2" column="1" rowspan="2" colspan="2">
|
||||||
<widget class="QGroupBox" name="groupBox">
|
<widget class="QGroupBox" name="groupBox">
|
||||||
<property name="enabled">
|
<property name="enabled">
|
||||||
<bool>true</bool>
|
<bool>true</bool>
|
||||||
|
@ -220,13 +147,27 @@
|
||||||
<item>
|
<item>
|
||||||
<widget class="QLabel" name="label_3">
|
<widget class="QLabel" name="label_3">
|
||||||
<property name="text">
|
<property name="text">
|
||||||
<string>Profile - Location</string>
|
<string>Profile - Location:</string>
|
||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
<item>
|
<item>
|
||||||
<widget class="QComboBox" name="loadName"/>
|
<widget class="QComboBox" name="loadName"/>
|
||||||
</item>
|
</item>
|
||||||
|
<item>
|
||||||
|
<widget class="QLabel" name="label_2">
|
||||||
|
<property name="text">
|
||||||
|
<string>Password:</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<widget class="QLineEdit" name="password_input">
|
||||||
|
<property name="echoMode">
|
||||||
|
<enum>QLineEdit::Password</enum>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
<item>
|
<item>
|
||||||
<widget class="QCheckBox" name="autologin_checkbox">
|
<widget class="QCheckBox" name="autologin_checkbox">
|
||||||
<property name="text">
|
<property name="text">
|
||||||
|
@ -240,56 +181,7 @@
|
||||||
</layout>
|
</layout>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
<item row="5" column="0" colspan="4">
|
<item row="4" column="1" colspan="2">
|
||||||
<layout class="QGridLayout" name="gridLayout_3">
|
|
||||||
<property name="topMargin">
|
|
||||||
<number>9</number>
|
|
||||||
</property>
|
|
||||||
<property name="bottomMargin">
|
|
||||||
<number>9</number>
|
|
||||||
</property>
|
|
||||||
<item row="0" column="1">
|
|
||||||
<widget class="QPushButton" name="loadButton">
|
|
||||||
<property name="text">
|
|
||||||
<string>Log In</string>
|
|
||||||
</property>
|
|
||||||
<property name="default">
|
|
||||||
<bool>true</bool>
|
|
||||||
</property>
|
|
||||||
<property name="flat">
|
|
||||||
<bool>false</bool>
|
|
||||||
</property>
|
|
||||||
</widget>
|
|
||||||
</item>
|
|
||||||
<item row="0" column="0">
|
|
||||||
<spacer>
|
|
||||||
<property name="orientation">
|
|
||||||
<enum>Qt::Horizontal</enum>
|
|
||||||
</property>
|
|
||||||
<property name="sizeHint" stdset="0">
|
|
||||||
<size>
|
|
||||||
<width>61</width>
|
|
||||||
<height>20</height>
|
|
||||||
</size>
|
|
||||||
</property>
|
|
||||||
</spacer>
|
|
||||||
</item>
|
|
||||||
<item row="0" column="2">
|
|
||||||
<spacer>
|
|
||||||
<property name="orientation">
|
|
||||||
<enum>Qt::Horizontal</enum>
|
|
||||||
</property>
|
|
||||||
<property name="sizeHint" stdset="0">
|
|
||||||
<size>
|
|
||||||
<width>71</width>
|
|
||||||
<height>20</height>
|
|
||||||
</size>
|
|
||||||
</property>
|
|
||||||
</spacer>
|
|
||||||
</item>
|
|
||||||
</layout>
|
|
||||||
</item>
|
|
||||||
<item row="6" column="1" colspan="2">
|
|
||||||
<widget class="QLabel" name="labelProfile">
|
<widget class="QLabel" name="labelProfile">
|
||||||
<property name="toolTip">
|
<property name="toolTip">
|
||||||
<string>Opens a dialog for creating a new profile or
|
<string>Opens a dialog for creating a new profile or
|
||||||
|
@ -305,7 +197,7 @@ p, li { white-space: pre-wrap; }
|
||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
<item row="7" column="0" colspan="4">
|
<item row="5" column="0" colspan="4">
|
||||||
<widget class="LogoBar" name="callBarFrame">
|
<widget class="LogoBar" name="callBarFrame">
|
||||||
<property name="minimumSize">
|
<property name="minimumSize">
|
||||||
<size>
|
<size>
|
||||||
|
@ -333,10 +225,6 @@ p, li { white-space: pre-wrap; }
|
||||||
<container>1</container>
|
<container>1</container>
|
||||||
</customwidget>
|
</customwidget>
|
||||||
</customwidgets>
|
</customwidgets>
|
||||||
<tabstops>
|
|
||||||
<tabstop>loadButton</tabstop>
|
|
||||||
<tabstop>toolButton</tabstop>
|
|
||||||
</tabstops>
|
|
||||||
<resources>
|
<resources>
|
||||||
<include location="images.qrc"/>
|
<include location="images.qrc"/>
|
||||||
</resources>
|
</resources>
|
||||||
|
|
|
@ -33,6 +33,7 @@
|
||||||
#include <QWidgetAction>
|
#include <QWidgetAction>
|
||||||
|
|
||||||
#include "ChatLobbyDialog.h"
|
#include "ChatLobbyDialog.h"
|
||||||
|
#include "util/QtVersion.h"
|
||||||
#include "gui/ChatLobbyWidget.h"
|
#include "gui/ChatLobbyWidget.h"
|
||||||
#include "ChatTabWidget.h"
|
#include "ChatTabWidget.h"
|
||||||
#include "gui/settings/rsharesettings.h"
|
#include "gui/settings/rsharesettings.h"
|
||||||
|
@ -54,10 +55,10 @@
|
||||||
|
|
||||||
#include <time.h>
|
#include <time.h>
|
||||||
|
|
||||||
#define COLUMN_ICON 0
|
#define COLUMN_NAME 0
|
||||||
#define COLUMN_NAME 1
|
#define COLUMN_ACTIVITY 1
|
||||||
#define COLUMN_ACTIVITY 2
|
#define COLUMN_ID 2
|
||||||
#define COLUMN_ID 3
|
#define COLUMN_ICON 3
|
||||||
#define COLUMN_COUNT 4
|
#define COLUMN_COUNT 4
|
||||||
|
|
||||||
#define ROLE_SORT Qt::UserRole + 1
|
#define ROLE_SORT Qt::UserRole + 1
|
||||||
|
@ -80,12 +81,16 @@ ChatLobbyDialog::ChatLobbyDialog(const ChatLobbyId& lid, QWidget *parent, Qt::Wi
|
||||||
connect(ui.filterLineEdit, SIGNAL(textChanged(QString)), this, SLOT(filterChanged(QString)));
|
connect(ui.filterLineEdit, SIGNAL(textChanged(QString)), this, SLOT(filterChanged(QString)));
|
||||||
|
|
||||||
int S = QFontMetricsF(font()).height() ;
|
int S = QFontMetricsF(font()).height() ;
|
||||||
ui.participantsList->setIconSize(QSize(1.3*S,1.3*S));
|
ui.participantsList->setIconSize(QSize(1.4*S,1.4*S));
|
||||||
|
|
||||||
ui.participantsList->setColumnCount(COLUMN_COUNT);
|
ui.participantsList->setColumnCount(COLUMN_COUNT);
|
||||||
ui.participantsList->setColumnWidth(COLUMN_ICON, 1.4*S);
|
ui.participantsList->setColumnWidth(COLUMN_ICON, 1.7*S);
|
||||||
ui.participantsList->setColumnHidden(COLUMN_ACTIVITY,true);
|
ui.participantsList->setColumnHidden(COLUMN_ACTIVITY,true);
|
||||||
ui.participantsList->setColumnHidden(COLUMN_ID,true);
|
ui.participantsList->setColumnHidden(COLUMN_ID,true);
|
||||||
|
|
||||||
|
/* Set header resize modes and initial section sizes */
|
||||||
|
QHeaderView * header = ui.participantsList->header();
|
||||||
|
QHeaderView_setSectionResizeModeColumn(header, COLUMN_NAME, QHeaderView::Stretch);
|
||||||
|
|
||||||
muteAct = new QAction(QIcon(), tr("Mute participant"), this);
|
muteAct = new QAction(QIcon(), tr("Mute participant"), this);
|
||||||
voteNegativeAct = new QAction(QIcon(":/icons/png/thumbs-down.png"), tr("Ban this person (Sets negative opinion)"), this);
|
voteNegativeAct = new QAction(QIcon(":/icons/png/thumbs-down.png"), tr("Ban this person (Sets negative opinion)"), this);
|
||||||
|
|
|
@ -145,11 +145,9 @@
|
||||||
<attribute name="headerVisible">
|
<attribute name="headerVisible">
|
||||||
<bool>false</bool>
|
<bool>false</bool>
|
||||||
</attribute>
|
</attribute>
|
||||||
<column>
|
<attribute name="headerStretchLastSection">
|
||||||
<property name="text">
|
<bool>false</bool>
|
||||||
<string>Participants</string>
|
</attribute>
|
||||||
</property>
|
|
||||||
</column>
|
|
||||||
<column>
|
<column>
|
||||||
<property name="text">
|
<property name="text">
|
||||||
<string>Name</string>
|
<string>Name</string>
|
||||||
|
|
|
@ -304,9 +304,9 @@ void AppearancePage::load()
|
||||||
whileBlocking(ui.checkBoxShowNATStatus)-> setChecked(Settings->valueFromGroup("StatusBar", "ShowNAT", QVariant(true)).toBool());
|
whileBlocking(ui.checkBoxShowNATStatus)-> setChecked(Settings->valueFromGroup("StatusBar", "ShowNAT", QVariant(true)).toBool());
|
||||||
whileBlocking(ui.checkBoxShowDHTStatus)-> setChecked(Settings->valueFromGroup("StatusBar", "ShowDHT", QVariant(true)).toBool());
|
whileBlocking(ui.checkBoxShowDHTStatus)-> setChecked(Settings->valueFromGroup("StatusBar", "ShowDHT", QVariant(true)).toBool());
|
||||||
whileBlocking(ui.checkBoxShowHashingStatus)-> setChecked(Settings->valueFromGroup("StatusBar", "ShowHashing", QVariant(true)).toBool());
|
whileBlocking(ui.checkBoxShowHashingStatus)-> setChecked(Settings->valueFromGroup("StatusBar", "ShowHashing", QVariant(true)).toBool());
|
||||||
whileBlocking(ui.checkBoxShowDiscStatus)-> setChecked(Settings->valueFromGroup("StatusBar", "ShowDisc", QVariant(true)).toBool());
|
whileBlocking(ui.checkBoxShowDiscStatus)-> setChecked(Settings->valueFromGroup("StatusBar", "ShowDisc", QVariant(true)).toBool());
|
||||||
whileBlocking(ui.checkBoxShowRateStatus)-> setChecked(Settings->valueFromGroup("StatusBar", "ShowRate", QVariant(true)).toBool());
|
whileBlocking(ui.checkBoxShowRateStatus)-> setChecked(Settings->valueFromGroup("StatusBar", "ShowRate", QVariant(true)).toBool());
|
||||||
whileBlocking(ui.checkBoxShowOpModeStatus)-> setChecked(Settings->valueFromGroup("StatusBar", "ShowOpMode", QVariant(true)).toBool());
|
whileBlocking(ui.checkBoxShowOpModeStatus)-> setChecked(Settings->valueFromGroup("StatusBar", "ShowOpMode", QVariant(false)).toBool());
|
||||||
whileBlocking(ui.checkBoxShowSoundStatus)-> setChecked(Settings->valueFromGroup("StatusBar", "ShowSound", QVariant(true)).toBool());
|
whileBlocking(ui.checkBoxShowSoundStatus)-> setChecked(Settings->valueFromGroup("StatusBar", "ShowSound", QVariant(true)).toBool());
|
||||||
whileBlocking(ui.checkBoxShowToasterDisable)->setChecked(Settings->valueFromGroup("StatusBar", "ShowToaster", QVariant(true)).toBool());
|
whileBlocking(ui.checkBoxShowToasterDisable)->setChecked(Settings->valueFromGroup("StatusBar", "ShowToaster", QVariant(true)).toBool());
|
||||||
whileBlocking(ui.checkBoxShowSystrayOnStatus)->setChecked(Settings->valueFromGroup("StatusBar", "ShowSysTrayOnStatusBar", QVariant(false)).toBool());
|
whileBlocking(ui.checkBoxShowSystrayOnStatus)->setChecked(Settings->valueFromGroup("StatusBar", "ShowSysTrayOnStatusBar", QVariant(false)).toBool());
|
||||||
|
|
|
@ -1,6 +1,7 @@
|
||||||
|
|
||||||
#include <list>
|
#include <list>
|
||||||
#include "retroshare/rsids.h"
|
#include "retroshare/rsids.h"
|
||||||
|
#include "rsitems/rsitem.h"
|
||||||
#include "serialiser/rsserial.h"
|
#include "serialiser/rsserial.h"
|
||||||
|
|
||||||
#include "testing/IsolatedServiceTester.h"
|
#include "testing/IsolatedServiceTester.h"
|
||||||
|
|
|
@ -1,6 +1,8 @@
|
||||||
|
|
||||||
#include "SetFilter.h"
|
#include "SetFilter.h"
|
||||||
|
|
||||||
|
#include "rsitems/rsitem.h"
|
||||||
|
|
||||||
bool SetFilter::filter(const SetPacket &pkt)
|
bool SetFilter::filter(const SetPacket &pkt)
|
||||||
{
|
{
|
||||||
switch(mFilterMode)
|
switch(mFilterMode)
|
||||||
|
|
|
@ -2,6 +2,7 @@
|
||||||
|
|
||||||
#include <list>
|
#include <list>
|
||||||
#include "retroshare/rsids.h"
|
#include "retroshare/rsids.h"
|
||||||
|
#include "rsitems/rsitem.h"
|
||||||
#include "pqi/p3linkmgr.h"
|
#include "pqi/p3linkmgr.h"
|
||||||
|
|
||||||
#include "SetPacket.h"
|
#include "SetPacket.h"
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
#include "serialiser/rsnxsitems.h"
|
#include "rsitems/rsnxsitems.h"
|
||||||
#include "gxs/rsgxsdata.h"
|
#include "gxs/rsgxsdata.h"
|
||||||
|
|
||||||
#define RS_SERVICE_TYPE_PLUGIN_SIMPLE_FORUM 0x012
|
#define RS_SERVICE_TYPE_PLUGIN_SIMPLE_FORUM 0x012
|
||||||
|
|
|
@ -2,7 +2,7 @@
|
||||||
#define RSDATASERVICE_TEST_H
|
#define RSDATASERVICE_TEST_H
|
||||||
|
|
||||||
#include "util/rsthreads.h"
|
#include "util/rsthreads.h"
|
||||||
#include "serialiser/rsnxsitems.h"
|
#include "rsitems/rsnxsitems.h"
|
||||||
#include "gxs/rsgds.h"
|
#include "gxs/rsgds.h"
|
||||||
|
|
||||||
void test_messageStoresAndRetrieve();
|
void test_messageStoresAndRetrieve();
|
||||||
|
|
|
@ -6,7 +6,7 @@
|
||||||
|
|
||||||
#include "gxs/rsnxs.h"
|
#include "gxs/rsnxs.h"
|
||||||
#include "gxs/rsgixs.h"
|
#include "gxs/rsgixs.h"
|
||||||
#include "serialiser/rsgxsitems.h"
|
#include "rsitems/rsgxsitems.h"
|
||||||
|
|
||||||
class RsDummyNetService: public RsNetworkExchangeService
|
class RsDummyNetService: public RsNetworkExchangeService
|
||||||
{
|
{
|
||||||
|
|
|
@ -28,7 +28,7 @@
|
||||||
*/
|
*/
|
||||||
#include <gtest/gtest.h>
|
#include <gtest/gtest.h>
|
||||||
|
|
||||||
#include "serialiser/rsgxsiditems.h"
|
#include "rsitems/rsgxsiditems.h"
|
||||||
#include "support.h"
|
#include "support.h"
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -8,7 +8,7 @@
|
||||||
#include <gtest/gtest.h>
|
#include <gtest/gtest.h>
|
||||||
|
|
||||||
#include "support.h"
|
#include "support.h"
|
||||||
#include "serialiser/rsgxsupdateitems.h"
|
#include "rsitems/rsgxsupdateitems.h"
|
||||||
#define RS_SERVICE_TYPE_PLUGIN_SIMPLE_FORUM 0x0010
|
#define RS_SERVICE_TYPE_PLUGIN_SIMPLE_FORUM 0x0010
|
||||||
|
|
||||||
RsSerialType* init_item(RsGxsGrpUpdateItem& i)
|
RsSerialType* init_item(RsGxsGrpUpdateItem& i)
|
||||||
|
|
|
@ -26,7 +26,7 @@
|
||||||
#include <iostream>
|
#include <iostream>
|
||||||
|
|
||||||
#include "util/rsrandom.h"
|
#include "util/rsrandom.h"
|
||||||
#include "serialiser/rsmsgitems.h"
|
#include "rsitems/rsmsgitems.h"
|
||||||
#include "chat/rschatitems.h"
|
#include "chat/rschatitems.h"
|
||||||
|
|
||||||
#include "support.h"
|
#include "support.h"
|
||||||
|
@ -141,7 +141,7 @@ RsSerialType* init_item(RsMsgItem& mi)
|
||||||
mi.sendTime = mi.recvTime;
|
mi.sendTime = mi.recvTime;
|
||||||
mi.msgFlags = mi.recvTime;
|
mi.msgFlags = mi.recvTime;
|
||||||
|
|
||||||
return new RsMsgSerialiser(true);
|
return new RsMsgSerialiser(RsServiceSerializer::SERIALIZATION_FLAG_NONE);
|
||||||
}
|
}
|
||||||
|
|
||||||
RsSerialType* init_item(RsMsgTagType& mtt)
|
RsSerialType* init_item(RsMsgTagType& mtt)
|
||||||
|
@ -150,7 +150,7 @@ RsSerialType* init_item(RsMsgTagType& mtt)
|
||||||
mtt.tagId = rand()%24242;
|
mtt.tagId = rand()%24242;
|
||||||
randString(SHORT_STR, mtt.text);
|
randString(SHORT_STR, mtt.text);
|
||||||
|
|
||||||
return new RsMsgSerialiser();
|
return new RsMsgSerialiser(RsServiceSerializer::SERIALIZATION_FLAG_NONE);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -163,7 +163,7 @@ RsSerialType* init_item(RsMsgTags& mt)
|
||||||
mt.tagIds.push_back(rand()%21341);
|
mt.tagIds.push_back(rand()%21341);
|
||||||
}
|
}
|
||||||
|
|
||||||
return new RsMsgSerialiser();
|
return new RsMsgSerialiser(RsServiceSerializer::SERIALIZATION_FLAG_NONE);
|
||||||
}
|
}
|
||||||
|
|
||||||
RsSerialType* init_item(RsMsgSrcId& ms)
|
RsSerialType* init_item(RsMsgSrcId& ms)
|
||||||
|
@ -171,7 +171,7 @@ RsSerialType* init_item(RsMsgSrcId& ms)
|
||||||
ms.msgId = rand()%434;
|
ms.msgId = rand()%434;
|
||||||
ms.srcId = RsPeerId::random();
|
ms.srcId = RsPeerId::random();
|
||||||
|
|
||||||
return new RsMsgSerialiser();
|
return new RsMsgSerialiser(RsServiceSerializer::SERIALIZATION_FLAG_NONE);
|
||||||
}
|
}
|
||||||
|
|
||||||
RsSerialType* init_item(RsMsgParentId& ms)
|
RsSerialType* init_item(RsMsgParentId& ms)
|
||||||
|
@ -179,7 +179,7 @@ RsSerialType* init_item(RsMsgParentId& ms)
|
||||||
ms.msgId = rand()%354;
|
ms.msgId = rand()%354;
|
||||||
ms.msgParentId = rand()%476;
|
ms.msgParentId = rand()%476;
|
||||||
|
|
||||||
return new RsMsgSerialiser();
|
return new RsMsgSerialiser(RsServiceSerializer::SERIALIZATION_FLAG_NONE);
|
||||||
}
|
}
|
||||||
|
|
||||||
bool operator ==(const struct VisibleChatLobbyInfo& l, const struct VisibleChatLobbyInfo& r)
|
bool operator ==(const struct VisibleChatLobbyInfo& l, const struct VisibleChatLobbyInfo& r)
|
||||||
|
@ -288,7 +288,7 @@ bool operator ==(const RsMsgItem& miLeft, const RsMsgItem& miRight)
|
||||||
if(miLeft.recvTime != miRight.recvTime) return false;
|
if(miLeft.recvTime != miRight.recvTime) return false;
|
||||||
if(miLeft.sendTime != miRight.sendTime) return false;
|
if(miLeft.sendTime != miRight.sendTime) return false;
|
||||||
if(miLeft.subject != miRight.subject) return false;
|
if(miLeft.subject != miRight.subject) return false;
|
||||||
if(miLeft.msgId != miRight.msgId) return false;
|
//if(miLeft.msgId != miRight.msgId) return false;
|
||||||
|
|
||||||
if(!(miLeft.attachment == miRight.attachment)) return false;
|
if(!(miLeft.attachment == miRight.attachment)) return false;
|
||||||
if(!(miLeft.rspeerid_msgbcc == miRight.rspeerid_msgbcc)) return false;
|
if(!(miLeft.rspeerid_msgbcc == miRight.rspeerid_msgbcc)) return false;
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
|
|
||||||
#include "support.h"
|
#include "support.h"
|
||||||
#include "libretroshare/gxs/common/data_support.h"
|
#include "libretroshare/gxs/common/data_support.h"
|
||||||
#include "serialiser/rsnxsitems.h"
|
#include "rsitems/rsnxsitems.h"
|
||||||
|
|
||||||
|
|
||||||
#define NUM_BIN_OBJECTS 5
|
#define NUM_BIN_OBJECTS 5
|
||||||
|
|
|
@ -25,7 +25,7 @@
|
||||||
|
|
||||||
|
|
||||||
#include "support.h"
|
#include "support.h"
|
||||||
#include "serialiser/rsstatusitems.h"
|
#include "rsitems/rsstatusitems.h"
|
||||||
|
|
||||||
RsSerialType* init_item(RsStatusItem& rsi)
|
RsSerialType* init_item(RsStatusItem& rsi)
|
||||||
{
|
{
|
||||||
|
|
|
@ -5,7 +5,7 @@
|
||||||
|
|
||||||
// from libretroshare
|
// from libretroshare
|
||||||
#include "services/p3statusservice.h"
|
#include "services/p3statusservice.h"
|
||||||
#include "serialiser/rsstatusitems.h"
|
#include "rsitems/rsstatusitems.h"
|
||||||
#include "gxs/rsgixs.h"
|
#include "gxs/rsgixs.h"
|
||||||
#include "gxs/rsdataservice.h"
|
#include "gxs/rsdataservice.h"
|
||||||
#include "gxs/rsgxsnetservice.h"
|
#include "gxs/rsgxsnetservice.h"
|
||||||
|
|
|
@ -5,7 +5,7 @@
|
||||||
#include "gxstestservice.h"
|
#include "gxstestservice.h"
|
||||||
|
|
||||||
// libretroshare
|
// libretroshare
|
||||||
#include "serialiser/rsnxsitems.h"
|
#include "rsitems/rsnxsitems.h"
|
||||||
|
|
||||||
GxsPairServiceTester::GxsPairServiceTester(const RsPeerId &peerId1, const RsPeerId &peerId2, int testMode, bool useIdentityService)
|
GxsPairServiceTester::GxsPairServiceTester(const RsPeerId &peerId1, const RsPeerId &peerId2, int testMode, bool useIdentityService)
|
||||||
:SetServiceTester()
|
:SetServiceTester()
|
||||||
|
|
|
@ -4,7 +4,7 @@
|
||||||
// from librssimulator
|
// from librssimulator
|
||||||
|
|
||||||
// from libretroshare
|
// from libretroshare
|
||||||
#include "serialiser/rsnxsitems.h"
|
#include "rsitems/rsnxsitems.h"
|
||||||
|
|
||||||
// local
|
// local
|
||||||
#include "GxsPairServiceTester.h"
|
#include "GxsPairServiceTester.h"
|
||||||
|
|
|
@ -8,7 +8,7 @@
|
||||||
//#include "gxs/rsgixs.h"
|
//#include "gxs/rsgixs.h"
|
||||||
//#include "gxs/rsdataservice.h"
|
//#include "gxs/rsdataservice.h"
|
||||||
//#include "gxs/rsgxsnetservice.h"
|
//#include "gxs/rsgxsnetservice.h"
|
||||||
#include "serialiser/rsnxsitems.h"
|
#include "rsitems/rsnxsitems.h"
|
||||||
|
|
||||||
// local
|
// local
|
||||||
#include "GxsIsolatedServiceTester.h"
|
#include "GxsIsolatedServiceTester.h"
|
||||||
|
|
|
@ -4,7 +4,7 @@
|
||||||
// from librssimulator
|
// from librssimulator
|
||||||
|
|
||||||
// from libretroshare
|
// from libretroshare
|
||||||
#include "serialiser/rsnxsitems.h"
|
#include "rsitems/rsnxsitems.h"
|
||||||
|
|
||||||
// local
|
// local
|
||||||
#include "GxsPairServiceTester.h"
|
#include "GxsPairServiceTester.h"
|
||||||
|
|
|
@ -30,7 +30,7 @@
|
||||||
#include "rsitems/rsserviceids.h"
|
#include "rsitems/rsserviceids.h"
|
||||||
#include "serialiser/rsserial.h"
|
#include "serialiser/rsserial.h"
|
||||||
|
|
||||||
#include "serialiser/rsgxsitems.h"
|
#include "rsitems/rsgxsitems.h"
|
||||||
#include "gxstestservice.h"
|
#include "gxstestservice.h"
|
||||||
|
|
||||||
const uint8_t RS_PKT_SUBTYPE_TEST_GROUP_ITEM = 0x02;
|
const uint8_t RS_PKT_SUBTYPE_TEST_GROUP_ITEM = 0x02;
|
||||||
|
|
|
@ -7,7 +7,7 @@
|
||||||
|
|
||||||
// from libretroshare
|
// from libretroshare
|
||||||
#include "services/p3statusservice.h"
|
#include "services/p3statusservice.h"
|
||||||
#include "serialiser/rsstatusitems.h"
|
#include "rsitems/rsstatusitems.h"
|
||||||
|
|
||||||
#define N_PEERS 10
|
#define N_PEERS 10
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue