Merge remote-tracking branch 'origin/master' into webui

This commit is contained in:
zeners 2016-02-13 12:31:46 +01:00
commit 9d9a456a67
85 changed files with 59121 additions and 37233 deletions

View File

@ -55,6 +55,9 @@ GXS
VOIP
H [ ] use proper video encoding. What we have now is decent for video, but sound should be prioritized. Experiments
with QtAV seem to work nicely. Finish and integrate!
M [ ] Deactivate Voip Buttons, when Friend has no Voip plugin enabled.
M [ ] Implement Voice for Video Chat
M [ ] Improve Voice and Video Quality
M [ ] Video Quality/Resolution Settings (High, Medium, Low) HD, HQ, SD )
M [ ] Video Device: WebCam(s) or Desktop Selection
M [ ] Audio Input Device Selection (Microphone)
@ -68,6 +71,7 @@ VOIP
Messages
H [X] make the mail system re-send failed emails notified by the global router. This is hard because it needs a proper management of duplicate messages
E [X] add flags to allow distant messaging from contact list only / everyone / noone / only signed ids.
M [ ] add Signature feature to rs messages
Chat
E [X] add flags to allow distant chat from contact list only / everyone / noone / only signed ids.

View File

@ -1,5 +1,25 @@
retroshare06 (0.6.0-1.XXXXXX~YYYYYY) YYYYYY; urgency=low
a41d9df csoler Mon, 1 Feb 2016 09:59:13 -0500 fixed small bug in probability computation in grouter
6d1a393 csoler Mon, 1 Feb 2016 00:33:11 -0500 fixed but in re-sending of failed grouter items
aa194ca csoler Sun, 31 Jan 2016 20:27:53 -0500 fixed bug preventing save of routage info in distant messaging
a85b5d2 csoler Sat, 30 Jan 2016 20:35:08 -0500 re-enabled GRouter tunnels (disabled for testing). Removed debug output.
f0a49a4 csoler Sat, 30 Jan 2016 20:27:56 -0500 changed global router routing strategy. Should be more effective now.
59d4c2c csoler Sat, 30 Jan 2016 20:27:27 -0500 removed some compilation warnings
3cfd976 thunder2 Fri, 29 Jan 2016 16:23:28 +0100 Added Windows installer script for Qt5.
58e59d1 csoler Thu, 28 Jan 2016 20:19:44 -0500 added sounds to chat lobbies (patch fromManuel Davis)
8dde723 thunder2 Thu, 28 Jan 2016 16:20:11 +0100 Added security hardening flags for ASLR and DEP protection for Windows compile.
85cdfcc csoler Thu, 28 Jan 2016 10:44:37 -0500 fixed bug causing multi-tunneling not to be used (found by jo)
b1f165f csoler Thu, 28 Jan 2016 10:22:32 -0500 added sound event to lobbies (patch from Manuel Davis)
3bc444b csoler Tue, 26 Jan 2016 23:00:10 -0500 removed some debug info
af770fd csoler Tue, 26 Jan 2016 22:46:07 -0500 fixed messagebox to remember which from ID was used last time
749ca08 csoler Tue, 26 Jan 2016 22:30:04 -0500 slightly improved message shown over lobby names
f063e5b csoler Tue, 26 Jan 2016 22:16:45 -0500 Allow main window to resize to much smaller size when needed. Should help people with
2072ca4 csoler Tue, 26 Jan 2016 22:08:17 -0500 fixed bug in getPeerDetails causing callstacks to be displayed for non initialised IP
b70057a csoler Tue, 26 Jan 2016 18:50:33 -0500 removed sending probability in GXS since it is not justified anymore. This should fix
39b3df9 csoler Mon, 25 Jan 2016 22:39:10 -0500 fixed bug causing net reset when closing config
49e2ee1 csoler Mon, 25 Jan 2016 21:45:58 -0500 Merge pull request #247 from heini/stretch_qt5
2f3350f electron128 Sun, 24 Jan 2016 19:56:53 +0100 Merge pull request #248 from heini/sqlcipher_needs_fpic
f13c81b csoler Sat, 23 Jan 2016 13:17:12 -0500 Merge pull request #258 from PhenomRetroShare/Fix_QuoteLinesWithImage
9b64b96 csoler Sat, 23 Jan 2016 13:03:29 -0500 fixed potential crash in pqisslstore
1d2be23 Phenom Sat, 23 Jan 2016 18:17:49 +0100 Fix Quote Lines With Image
@ -37,7 +57,7 @@ retroshare06 (0.6.0-1.XXXXXX~YYYYYY) YYYYYY; urgency=low
8296fa9 csoler Sat, 16 Jan 2016 11:30:15 -0500 added checkbox to toggle logscale in statistics
63b88ec defnax Sat, 16 Jan 2016 14:50:12 +0100 correct sorting for "Reputation" in People, patch by Eugene Tooms
-- Cyril Soler <csoler@users.sourceforge.net> Sat, 23 Jan 2016 16:00:00 +0100
-- Cyril Soler <csoler@users.sourceforge.net> Mon, 01 Feb 2016 20:00:00 +0100
retroshare06 (0.6.0-1.20160115.a34f66aa~trusty) trusty; urgency=low

View File

@ -33,14 +33,7 @@ if errorlevel 1 goto exit
if "%Revision%"=="" (
echo.
echo Version not found in
echo %VersionFile%
goto exit
)
if "%BuildAdd%"=="" (
echo.
echo Version not found in
echo %VersionFile%
echo Version not found
goto exit
)

View File

@ -102,7 +102,7 @@ Var StyleSheetDir
!define MUI_COMPONENTSPAGE_SMALLDESC
!define MUI_FINISHPAGE_LINK "Visit the RetroShare forum for the latest news and support"
!define MUI_FINISHPAGE_LINK_LOCATION "http://retroshare.sourceforge.net/forum/"
!define MUI_FINISHPAGE_RUN "$INSTDIR\RetroShare.exe"
!define MUI_FINISHPAGE_RUN "$INSTDIR\RetroShare06.exe"
!define MUI_FINISHPAGE_SHOWREADME $INSTDIR\changelog.txt
!define MUI_FINISHPAGE_SHOWREADME_TEXT changelog.txt
!define MUI_FINISHPAGE_SHOWREADME_NOTCHECKED
@ -175,8 +175,8 @@ Section $(Section_Main) Section_Main
; Main binaries
SetOutPath "$INSTDIR"
File /oname=RetroShare.exe "${RELEASEDIR}\retroshare-gui\src\release\RetroShare06.exe"
File /oname=retroshare-nogui.exe "${RELEASEDIR}\retroshare-nogui\src\release\RetroShare06-nogui.exe"
File /oname=RetroShare06.exe "${RELEASEDIR}\retroshare-gui\src\release\RetroShare06.exe"
File /oname=retroshare06-nogui.exe "${RELEASEDIR}\retroshare-nogui\src\release\RetroShare06-nogui.exe"
; Qt binaries
File "${QTDIR}\bin\QtCore4.dll"
@ -265,7 +265,7 @@ SectionEnd
; WriteRegStr HKCR retroshare "" "PQI File"
; WriteRegBin HKCR retroshare EditFlags 00000100
; WriteRegStr HKCR "retroshare\shell" "" open
; WriteRegStr HKCR "retroshare\shell\open\command" "" `"$INSTDIR\RetroShare.exe" "%1"`
; WriteRegStr HKCR "retroshare\shell\open\command" "" `"$INSTDIR\RetroShare06.exe" "%1"`
;SectionEnd
# Shortcuts
@ -274,24 +274,24 @@ Section $(Section_StartMenu) Section_StartMenu
SetOutPath "$INSTDIR"
CreateDirectory "$SMPROGRAMS\${APPNAME}"
CreateShortCut "$SMPROGRAMS\${APPNAME}\$(Link_Uninstall).lnk" "$INSTDIR\uninstall.exe" "" "$INSTDIR\uninstall.exe" 0
CreateShortCut "$SMPROGRAMS\${APPNAME}\${APPNAME}.lnk" "$INSTDIR\RetroShare.exe" "" "$INSTDIR\RetroShare.exe" 0
CreateShortCut "$SMPROGRAMS\${APPNAME}\${APPNAME}.lnk" "$INSTDIR\RetroShare06.exe" "" "$INSTDIR\RetroShare06.exe" 0
SectionEnd
Section $(Section_Desktop) Section_Desktop
CreateShortCut "$DESKTOP\${APPNAME}.lnk" "$INSTDIR\RetroShare.exe" "" "$INSTDIR\RetroShare.exe" 0
CreateShortCut "$DESKTOP\${APPNAME}.lnk" "$INSTDIR\RetroShare06.exe" "" "$INSTDIR\RetroShare06.exe" 0
SectionEnd
Section $(Section_QuickLaunch) Section_QuickLaunch
CreateShortCut "$QUICKLAUNCH\${APPNAME}.lnk" "$INSTDIR\RetroShare.exe" "" "$INSTDIR\RetroShare.exe" 0
CreateShortCut "$QUICKLAUNCH\${APPNAME}.lnk" "$INSTDIR\RetroShare06.exe" "" "$INSTDIR\RetroShare06.exe" 0
SectionEnd
SectionGroupEnd
Section $(Section_AutoStart) Section_AutoStart
WriteRegStr HKCU "Software\Microsoft\Windows\CurrentVersion\Run" "RetroShare" "$INSTDIR\${APPNAME}.exe -m"
WriteRegStr HKCU "Software\Microsoft\Windows\CurrentVersion\Run" "RetroShare" "$INSTDIR\${APPNAME}06.exe -m"
SectionEnd
;Section $(Section_AutoStart) Section_AutoStart
; CreateShortCut "$SMSTARTUP\${APPNAME}.lnk" "$INSTDIR\RetroShare.exe" "" "$INSTDIR\RetroShare.exe -m" 0
; CreateShortCut "$SMSTARTUP\${APPNAME}.lnk" "$INSTDIR\RetroShare06.exe" "" "$INSTDIR\RetroShare06.exe -m" 0
;SectionEnd
Section -FinishSection
@ -300,7 +300,7 @@ Section -FinishSection
WriteRegStr HKLM "Software\${APPNAME}" "Version" "${VERSION}"
WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${APPNAME}" "DisplayName" "${APPNAME}"
WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${APPNAME}" "DisplayVersion" "${VERSION}"
WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${APPNAME}" "DisplayIcon" "$INSTDIR\RetroShare.exe"
WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${APPNAME}" "DisplayIcon" "$INSTDIR\RetroShare06.exe"
WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${APPNAME}" "Publisher" "${PUBLISHER}"
WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${APPNAME}" "NoModify" "1"
WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${APPNAME}" "NoRepair" "1"

View File

@ -102,7 +102,7 @@ Var StyleSheetDir
!define MUI_COMPONENTSPAGE_SMALLDESC
!define MUI_FINISHPAGE_LINK "Visit the RetroShare forum for the latest news and support"
!define MUI_FINISHPAGE_LINK_LOCATION "http://retroshare.sourceforge.net/forum/"
!define MUI_FINISHPAGE_RUN "$INSTDIR\RetroShare.exe"
!define MUI_FINISHPAGE_RUN "$INSTDIR\RetroShare06.exe"
!define MUI_FINISHPAGE_SHOWREADME $INSTDIR\changelog.txt
!define MUI_FINISHPAGE_SHOWREADME_TEXT changelog.txt
!define MUI_FINISHPAGE_SHOWREADME_NOTCHECKED
@ -175,8 +175,8 @@ Section $(Section_Main) Section_Main
; Main binaries
SetOutPath "$INSTDIR"
File /oname=RetroShare.exe "${RELEASEDIR}\retroshare-gui\src\release\RetroShare06.exe"
File /oname=retroshare-nogui.exe "${RELEASEDIR}\retroshare-nogui\src\release\RetroShare06-nogui.exe"
File /oname=RetroShare06.exe "${RELEASEDIR}\retroshare-gui\src\release\RetroShare06.exe"
File /oname=retroshare06-nogui.exe "${RELEASEDIR}\retroshare-nogui\src\release\RetroShare06-nogui.exe"
; Qt binaries
File "${QTDIR}\bin\Qt5Core.dll"
@ -285,7 +285,7 @@ SectionEnd
; WriteRegStr HKCR retroshare "" "PQI File"
; WriteRegBin HKCR retroshare EditFlags 00000100
; WriteRegStr HKCR "retroshare\shell" "" open
; WriteRegStr HKCR "retroshare\shell\open\command" "" `"$INSTDIR\RetroShare.exe" "%1"`
; WriteRegStr HKCR "retroshare\shell\open\command" "" `"$INSTDIR\RetroShare06.exe" "%1"`
;SectionEnd
# Shortcuts
@ -294,24 +294,24 @@ Section $(Section_StartMenu) Section_StartMenu
SetOutPath "$INSTDIR"
CreateDirectory "$SMPROGRAMS\${APPNAME}"
CreateShortCut "$SMPROGRAMS\${APPNAME}\$(Link_Uninstall).lnk" "$INSTDIR\uninstall.exe" "" "$INSTDIR\uninstall.exe" 0
CreateShortCut "$SMPROGRAMS\${APPNAME}\${APPNAME}.lnk" "$INSTDIR\RetroShare.exe" "" "$INSTDIR\RetroShare.exe" 0
CreateShortCut "$SMPROGRAMS\${APPNAME}\${APPNAME}.lnk" "$INSTDIR\RetroShare06.exe" "" "$INSTDIR\RetroShare06.exe" 0
SectionEnd
Section $(Section_Desktop) Section_Desktop
CreateShortCut "$DESKTOP\${APPNAME}.lnk" "$INSTDIR\RetroShare.exe" "" "$INSTDIR\RetroShare.exe" 0
CreateShortCut "$DESKTOP\${APPNAME}.lnk" "$INSTDIR\RetroShare06.exe" "" "$INSTDIR\RetroShare06.exe" 0
SectionEnd
Section $(Section_QuickLaunch) Section_QuickLaunch
CreateShortCut "$QUICKLAUNCH\${APPNAME}.lnk" "$INSTDIR\RetroShare.exe" "" "$INSTDIR\RetroShare.exe" 0
CreateShortCut "$QUICKLAUNCH\${APPNAME}.lnk" "$INSTDIR\RetroShare06.exe" "" "$INSTDIR\RetroShare06.exe" 0
SectionEnd
SectionGroupEnd
Section $(Section_AutoStart) Section_AutoStart
WriteRegStr HKCU "Software\Microsoft\Windows\CurrentVersion\Run" "RetroShare" "$INSTDIR\${APPNAME}.exe -m"
WriteRegStr HKCU "Software\Microsoft\Windows\CurrentVersion\Run" "RetroShare" "$INSTDIR\${APPNAME}06.exe -m"
SectionEnd
;Section $(Section_AutoStart) Section_AutoStart
; CreateShortCut "$SMSTARTUP\${APPNAME}.lnk" "$INSTDIR\RetroShare.exe" "" "$INSTDIR\RetroShare.exe -m" 0
; CreateShortCut "$SMSTARTUP\${APPNAME}.lnk" "$INSTDIR\RetroShare06.exe" "" "$INSTDIR\RetroShare06.exe -m" 0
;SectionEnd
Section -FinishSection
@ -320,7 +320,7 @@ Section -FinishSection
WriteRegStr HKLM "Software\${APPNAME}" "Version" "${VERSION}"
WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${APPNAME}" "DisplayName" "${APPNAME}"
WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${APPNAME}" "DisplayVersion" "${VERSION}"
WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${APPNAME}" "DisplayIcon" "$INSTDIR\RetroShare.exe"
WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${APPNAME}" "DisplayIcon" "$INSTDIR\RetroShare06.exe"
WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${APPNAME}" "Publisher" "${PUBLISHER}"
WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${APPNAME}" "NoModify" "1"
WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${APPNAME}" "NoRepair" "1"

View File

@ -61,7 +61,7 @@ public:
// This method is called by the global router when a message has been received, or cannot be sent, etc.
//
virtual void notifyDataStatus(const GRouterMsgPropagationId& received_id,uint32_t data_status)
virtual void notifyDataStatus(const GRouterMsgPropagationId& received_id,const RsGxsId& signer_id,uint32_t data_status)
{
std::cerr << "!!!!!! Received Data status from global router, but the client service is not handling it !!!!!!!!!!" << std::endl ;
std::cerr << " message ID = " << received_id << std::endl;

View File

@ -51,6 +51,7 @@ static const uint32_t MAX_TUNNEL_WAIT_TIME = 60 ; // wa
static const uint32_t MAX_TUNNEL_UNMANAGED_TIME = 600 ; // min time before retry tunnels for that msg.
static const uint32_t MAX_DELAY_FOR_RESEND = 2*86400+300 ; // re-send if held for more than 2 days (cache store period) plus security delay.
static const uint32_t MAX_DESTINATION_KEEP_TIME = 20*86400 ; // keep for 20 days in destination cache to avoid re-
static const uint32_t MAX_RECEIPT_KEEP_TIME = 20*86400 ; // keep for 20 days in destination cache to avoid re-
static const uint32_t TUNNEL_OK_WAIT_TIME = 2 ; // wait for 2 seconds after last tunnel ok, so that we have a complete set of tunnels.
static const uint32_t MAX_GROUTER_DATA_SIZE = 2*1024*1024 ; // 2MB size limit. This is of course arbitrary.
static const uint32_t MAX_TRANSACTION_ACK_WAITING_TIME = 60 ; // wait for at most 60 secs for a ACK. If not restart the transaction.

View File

@ -191,6 +191,7 @@
#include "turtle/p3turtle.h"
#include "gxs/rsgixs.h"
#include "retroshare/rspeers.h"
#include "retroshare/rsreputations.h"
#include "p3grouter.h"
#include "grouteritems.h"
@ -1136,7 +1137,6 @@ void p3GRouter::locked_collectAvailableFriends(const GRouterKeyId& gxs_id,const
#endif
// remove incoming peers and peers for which the proba is less than half the maximum proba
float total_probas = 0.0f ;
uint32_t count=0;
for(uint32_t i=0;i<tmp_peers.size();++i)
@ -1149,8 +1149,6 @@ void p3GRouter::locked_collectAvailableFriends(const GRouterKeyId& gxs_id,const
tmp_peers[count] = tmp_peers[i] ;
probas[count] = (max_probability==0.0)? (0.5+0.001*RSRandom::random_f32()) : probas[i] ;
++count ;
total_probas+=probas[i] ;
}
tmp_peers.resize(count) ;
@ -1170,23 +1168,32 @@ void p3GRouter::locked_collectAvailableFriends(const GRouterKeyId& gxs_id,const
for(uint32_t i=0;i<tmp_peers.size();++i)
std::cerr << " " << tmp_peers[i] << ", probability: " << probas[i] << std::endl;
#endif
float probability_threshold = RS_GROUTER_PROBABILITY_THRESHOLD_FOR_RANDOM_ROUTING ;
std::vector<std::pair<float,RsPeerId> > mypairs ;
for(uint32_t i=0;i<tmp_peers.size();++i)
mypairs.push_back(std::make_pair(probas[i]/total_probas,tmp_peers[i])) ;
mypairs.push_back(std::make_pair(probas[i],tmp_peers[i])) ;
// now sort them up
std::sort(mypairs.begin(),mypairs.end(),item_comparator_001()) ;
uint32_t max_count = std::min(std::min((uint32_t)mypairs.size(),(uint32_t)GROUTER_MAX_BRANCHING_FACTOR),duplication_factor);
uint32_t n=0 ;
int max_count = std::min(std::min((uint32_t)mypairs.size(),(uint32_t)GROUTER_MAX_BRANCHING_FACTOR),duplication_factor);
// normalise the probabilities
#ifdef GROUTER_DEBUG
std::cerr << " Normalising probabilities..." << std::endl;
#endif
float total_probas = 0.0f ;
if(mypairs.size() > 0 && max_count > 0)
{
for(int i=mypairs.size()-1,n=0;i>=0 && n<max_count;--i,++n) total_probas += mypairs[i].first ;
for(int i=mypairs.size()-1,n=0;i>=0 && n<max_count;--i,++n) mypairs[i].first /= total_probas ;
}
float duplication_factor_delta =0.0;
uint32_t duplication_factor_buff =duplication_factor ;
for(int i=mypairs.size()-1;i>=0 && n<max_count;--i)
for(int i=mypairs.size()-1,n=0;i>=0 && n<max_count;--i,++n)
{
float ideal_dupl = duplication_factor*mypairs[i].first - duplication_factor_delta ; // correct what was taken in advance
@ -1196,7 +1203,6 @@ void p3GRouter::locked_collectAvailableFriends(const GRouterKeyId& gxs_id,const
std::cerr << " Peer " << mypairs[i].second << " prob=" << mypairs[i].first << ", ideal_dupl=" << ideal_dupl << ", real=" << real_dupl << ". Delta = " << duplication_factor_delta << std::endl;
friend_peers_and_duplication_factors[ mypairs[i].second ] = real_dupl ; // should be updated correctly
++n ;
}
}
@ -1288,19 +1294,30 @@ void p3GRouter::autoWash()
bool items_deleted = false ;
time_t now = time(NULL) ;
std::map<GRouterMsgPropagationId,GRouterClientService *> failed_msgs ;
std::map<GRouterMsgPropagationId,std::pair<GRouterClientService *,RsGxsId> > failed_msgs ;
{
RS_STACK_MUTEX(grMtx) ;
for(std::map<GRouterMsgPropagationId, GRouterRoutingInfo>::iterator it=_pending_messages.begin();it!=_pending_messages.end();)
if( (it->second.data_status == RS_GROUTER_DATA_STATUS_DONE &&
(!(it->second.routing_flags & GRouterRoutingInfo::ROUTING_FLAGS_IS_DESTINATION)
|| it->second.received_time_TS + MAX_DESTINATION_KEEP_TIME < now))
|| ((it->second.received_time_TS + GROUTER_ITEM_MAX_CACHE_KEEP_TIME < now)
&& !(it->second.routing_flags & GRouterRoutingInfo::ROUTING_FLAGS_IS_ORIGIN)
&& !(it->second.routing_flags & GRouterRoutingInfo::ROUTING_FLAGS_IS_DESTINATION)
)) // is the item too old for cache
{
bool delete_entry = false ;
if(it->second.data_status == RS_GROUTER_DATA_STATUS_DONE )
{
if(!(it->second.routing_flags & GRouterRoutingInfo::ROUTING_FLAGS_IS_DESTINATION) || it->second.received_time_TS + MAX_DESTINATION_KEEP_TIME < now) // is the item too old for cache
delete_entry = true ;
}
else if(it->second.data_status == RS_GROUTER_DATA_STATUS_RECEIPT_OK )
{
if(it->second.received_time_TS + MAX_RECEIPT_KEEP_TIME < now) // is the item too old for cache
delete_entry = true ;
}
else
if(it->second.received_time_TS + GROUTER_ITEM_MAX_CACHE_KEEP_TIME < now)
delete_entry = true ;
if(delete_entry)
{
#ifdef GROUTER_DEBUG
grouter_debug() << " Removing cached item " << std::hex << it->first << std::dec << std::endl;
@ -1313,7 +1330,7 @@ void p3GRouter::autoWash()
GRouterClientService *client = NULL;
if(locked_getLocallyRegisteredClientFromServiceId(it->second.client_id,client))
failed_msgs[it->first] = client ;
failed_msgs[it->first] = std::make_pair(client,it->second.data_item->signature.keyId) ;
else
std::cerr << " ERROR: client id " << it->second.client_id << " not registered. Consistency error." << std::endl;
}
@ -1332,6 +1349,7 @@ void p3GRouter::autoWash()
}
else
++it ;
}
// also check all existing tunnels
@ -1371,12 +1389,12 @@ void p3GRouter::autoWash()
}
// Look into pending items.
for(std::map<GRouterMsgPropagationId,GRouterClientService*>::const_iterator it(failed_msgs.begin());it!=failed_msgs.end();++it)
for(std::map<GRouterMsgPropagationId,std::pair<GRouterClientService*,RsGxsId> >::const_iterator it(failed_msgs.begin());it!=failed_msgs.end();++it)
{
#ifdef GROUTER_DEBUG
std::cerr << " notifying client for message id " << std::hex << it->first << " state = FAILED" << std::endl;
#endif
it->second->notifyDataStatus(it->first ,GROUTER_CLIENT_SERVICE_DATA_STATUS_FAILED) ;
it->second.first->notifyDataStatus(it->first,it->second.second ,GROUTER_CLIENT_SERVICE_DATA_STATUS_FAILED) ;
}
if(items_deleted)
@ -1484,13 +1502,13 @@ void p3GRouter::handleIncomingReceiptItem(RsGRouterSignedReceiptItem *receipt_it
std::cerr << "Item content:" << std::endl;
receipt_item->print(std::cerr,2) ;
#endif
RsGxsId signer_id ;
// Because we don't do proxy-transmission yet, the client needs to be notified. Otherwise, we will need to
// first check if we're a proxy or not. We also remove the message from the global router sending list.
// in the proxy case, we should only store the receipt.
GRouterClientService *client_service = NULL;
GRouterServiceId service_id ;
GRouterMsgPropagationId mid = 0 ;
{
@ -1502,6 +1520,7 @@ void p3GRouter::handleIncomingReceiptItem(RsGRouterSignedReceiptItem *receipt_it
std::cerr << " ERROR: no routing ID corresponds to this message. Inconsistency!" << std::endl;
return ;
}
signer_id = it->second.data_item->signature.keyId ;
// check hash.
@ -1558,7 +1577,7 @@ void p3GRouter::handleIncomingReceiptItem(RsGRouterSignedReceiptItem *receipt_it
#ifdef GROUTER_DEBUG
std::cerr << " notifying client " << (void*)client_service << " that msg " << std::hex << mid << std::dec << " was received." << std::endl;
#endif
client_service->notifyDataStatus(mid, GROUTER_CLIENT_SERVICE_DATA_STATUS_RECEIVED) ;
client_service->notifyDataStatus(mid, signer_id, GROUTER_CLIENT_SERVICE_DATA_STATUS_RECEIVED) ;
}
// also note the incoming route in the routing matrix
@ -1953,7 +1972,11 @@ bool p3GRouter::verifySignedDataItem(RsGRouterAbstractMsgItem *item)
{
try
{
RsTlvSecurityKey signature_key ;
if(rsReputations->isIdentityBanned(item->signature.keyId))
{
std::cerr << "(WW) received global router message from banned identity " << item->signature.keyId << ". Rejecting the message." << std::endl;
return false ;
}
uint32_t data_size = item->signed_data_size() ;
RsTemporaryMemory data(data_size) ;
@ -1971,7 +1994,15 @@ bool p3GRouter::verifySignedDataItem(RsGRouterAbstractMsgItem *item)
{
switch(error_status)
{
case RsGixs::RS_GIXS_ERROR_KEY_NOT_AVAILABLE: std::cerr << "(EE) Key for GXS Id " << item->signature.keyId << " is not available. Cannot verify." << std::endl;
case RsGixs::RS_GIXS_ERROR_KEY_NOT_AVAILABLE:
{
std::list<RsPeerId> peer_ids ;
peer_ids.push_back(item->PeerId()) ;
std::cerr << "(EE) Key for GXS Id " << item->signature.keyId << " is not available. Cannot verify. Asking key to peer " << item->PeerId() << std::endl;
mGixs->requestKey(item->signature.keyId,peer_ids) ; // request the key around
}
break ;
case RsGixs::RS_GIXS_ERROR_SIGNATURE_MISMATCH: std::cerr << "(EE) Signature mismatch. Spoofing/Corrupted/MITM?." << std::endl;
break ;

View File

@ -2366,6 +2366,9 @@ void RsGenExchange::publishGrps()
mDataAccess->updateGroupData(grp);
else
mDataAccess->addGroupData(grp);
if(mNetService!=NULL)
mNetService->subscribeStatusChanged(grpId,true) ;
}
else
{

View File

@ -231,8 +231,8 @@
#define TRANSAC_TIMEOUT 2000 // In seconds. Has been increased to avoid epidemic transaction cancelling due to overloaded outqueues.
#define SECURITY_DELAY_TO_FORCE_CLIENT_REUPDATE 3600 // force re-update if there happens to be a large delay between our server side TS and the client side TS of friends
#define REJECTED_MESSAGE_RETRY_DELAY 24*3600 // re-try rejected messages every 24hrs. Most of the time this is because the peer's reputation has changed.
#define GROUP_STATS_UPDATE_DELAY 1800 // update unsubscribed group statistics every 30 mins
#define GROUP_STATS_UPDATE_NB_PEERS 2 // update unsubscribed group statistics every 30 mins
#define GROUP_STATS_UPDATE_DELAY 240 // update unsubscribed group statistics every 3 mins
#define GROUP_STATS_UPDATE_NB_PEERS 2 // number of peers to which the group stats are asked
#define MAX_ALLOWED_GXS_MESSAGE_SIZE 199000 // 200,000 bytes including signature and headers
// Debug system to allow to print only for some IDs (group, Peer, etc)
@ -1405,25 +1405,27 @@ bool RsGxsNetService::loadList(std::list<RsItem *> &load)
// The delete is done in StoreHere, if necessary
std::for_each(load.begin(), load.end(), StoreHere(mClientGrpUpdateMap, mClientMsgUpdateMap, mServerMsgUpdateMap, mGrpServerUpdateItem));
// We reset group statistics here. This is the best place since we know at this point which are all unsubscribed groups.
time_t now = time(NULL);
for(ClientMsgMap::iterator it = mClientMsgUpdateMap.begin();it!=mClientMsgUpdateMap.end();++it)
for(std::map<RsGxsGroupId,RsGxsMsgUpdateItem::MsgUpdateInfo>::const_iterator it2(it->second->msgUpdateInfos.begin());it2!=it->second->msgUpdateInfos.end();++it2)
for(std::map<RsGxsGroupId,RsGroupNetworkStatsRecord>::iterator it(mGroupNetworkStats.begin());it!=mGroupNetworkStats.end();++it)
{
RsGroupNetworkStatsRecord& gnsr = mGroupNetworkStats[it2->first] ;
// At each reload, we reset the count of visible messages. It will be rapidely restored to its real value from friends.
// At each reload, divide the last count by 2. This gradually flushes old information away.
it->second.max_visible_count = 0; // std::max(it2->second.message_count,gnsr.max_visible_count) ;
gnsr.max_visible_count = std::max(it2->second.message_count,gnsr.max_visible_count/2) ;
gnsr.update_TS = now - GROUP_STATS_UPDATE_DELAY + (RSRandom::random_u32()%(GROUP_STATS_UPDATE_DELAY/10)) ;
// the update time stamp is randomised so as not to ask all friends at once about group statistics.
// Similarly, we remove some of the suppliers randomly. If they are
// actual suppliers, they will come back automatically. If they are
// not, they will be forgotten.
it->second.update_TS = now - GROUP_STATS_UPDATE_DELAY + (RSRandom::random_u32()%(GROUP_STATS_UPDATE_DELAY/10)) ;
if(RSRandom::random_f32() > 0.2)
gnsr.suppliers.insert(it->first) ;
// Similarly, we remove all suppliers.
// Actual suppliers will come back automatically.
it->second.suppliers.clear() ;
}
return true;
}
@ -3743,6 +3745,13 @@ void RsGxsNetService::handleRecvSyncMessage(RsNxsSyncMsg* item)
const RsPeerId& peer = item->PeerId();
// Insert the PeerId in suppliers list for this grpId
#ifdef NXS_NET_DEBUG_6
GXSNETDEBUG_PG(item->PeerId(),item->grpId) << "RsGxsNetService::handleRecvSyncMessage(): Inserting PeerId " << item->PeerId() << " in suppliers list for group " << item->grpId << std::endl;
#endif
RsGroupNetworkStatsRecord& rec(mGroupNetworkStats[item->grpId]) ; // this creates it if needed
rec.suppliers.insert(peer) ;
#ifdef NXS_NET_DEBUG_0
GXSNETDEBUG_PG(item->PeerId(),item->grpId) << "handleRecvSyncMsg(): Received last update TS of group " << item->grpId << ", for peer " << peer << ", TS = " << time(NULL) - item->updateTS << " secs ago." ;
#endif

View File

@ -1,7 +1,7 @@
#define RS_MAJOR_VERSION 0
#define RS_MINOR_VERSION 6
#define RS_BUILD_NUMBER 0
#define RS_BUILD_NUMBER_ADD "x" // <-- do we need this?
#define RS_BUILD_NUMBER_ADD ""
// The revision number should be the 4 first bytes of the git revision hash, which is obtained using:
// git log --pretty="%H" | head -1 | cut -c1-8

View File

@ -1336,7 +1336,14 @@ int RsServer::StartupRetroShare()
false,false); // don't synchronise group automatic (need explicit group request)
// don't sync messages at all.
// Normally we wouldn't need this (we do in other service):
// mGxsIdService->setNetworkExchangeService(gxsid_ns) ;
// ...since GxsIds are propagated manually. But that requires the gen exchange of GXSids to
// constantly test that mNetService is not null. The call below is to make the service aware of the
// netService so that it can request the missing ids. We'll need to fix this.
mGxsIdService->setNes(gxsid_ns);
/**** GxsCircle service ****/
// create GXS Circle service

View File

@ -1852,7 +1852,7 @@ void p3MsgService::manageDistantPeers()
}
}
void p3MsgService::notifyDataStatus(const GRouterMsgPropagationId& id,uint32_t data_status)
void p3MsgService::notifyDataStatus(const GRouterMsgPropagationId& id, const RsGxsId &signer_id, uint32_t data_status)
{
if(data_status == GROUTER_CLIENT_SERVICE_DATA_STATUS_FAILED)
{
@ -1868,6 +1868,7 @@ void p3MsgService::notifyDataStatus(const GRouterMsgPropagationId& id,uint32_t d
}
uint32_t msg_id = it->second ;
std::cerr << " message id = " << msg_id << std::endl;
mDistantOutgoingMsgSigners[msg_id] = signer_id ; // this is needed because it's not saved in config, but we should probably include it in _ongoing_messages
std::map<uint32_t,RsMsgItem*>::iterator mit = msgOutgoing.find(msg_id) ;
@ -1991,7 +1992,15 @@ void p3MsgService::sendDistantMsgItem(RsMsgItem *msgitem)
{
RS_STACK_MUTEX(mMsgMtx) ;
signing_key_id = mDistantOutgoingMsgSigners[msgitem->msgId] ;
std::map<uint32_t,RsGxsId>::const_iterator it = mDistantOutgoingMsgSigners.find(msgitem->msgId) ;
if(it == mDistantOutgoingMsgSigners.end())
{
std::cerr << "(EE) no signer registered for distant message " << msgitem->msgId << ". Cannot send!" << std::endl;
return ;
}
signing_key_id = it->second ;
if(signing_key_id.isNull())
{
@ -2032,6 +2041,7 @@ void p3MsgService::sendDistantMsgItem(RsMsgItem *msgitem)
RS_STACK_MUTEX(mMsgMtx) ;
_ongoing_messages[grouter_message_id] = msgitem->msgId ;
}
IndicateConfigChanged(); // save _ongoing_messages
}

View File

@ -142,7 +142,7 @@ private:
virtual bool acceptDataFromPeer(const RsGxsId& gxs_id) ;
virtual void receiveGRouterData(const RsGxsId& destination_key,const RsGxsId& signing_key, GRouterServiceId &client_id, uint8_t *data, uint32_t data_size) ;
virtual void notifyDataStatus(const GRouterMsgPropagationId& msg_id,uint32_t data_status) ;
virtual void notifyDataStatus(const GRouterMsgPropagationId& msg_id,const RsGxsId& signer_id,uint32_t data_status) ;
// Utility functions

View File

@ -134,11 +134,36 @@
<source>Video Processing</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+43"/>
<source>Available bandwidth:</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+7"/>
<source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Use this field to simulate the maximum bandwidth available so as to preview what the encoded video will look like with the corresponding compression rate.&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+3"/>
<source>KB/s</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+21"/>
<source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Display encoded (and then decoded) frame, to check the codec&apos;s quality. If not selected, the image above only shows the frame that is grabbed from your camera.&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+3"/>
<source>preview</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>AudioInputConfig</name>
<message>
<location filename="../gui/AudioInputConfig.cpp" line="+180"/>
<location filename="../gui/AudioInputConfig.cpp" line="+202"/>
<source>Continuous</source>
<translation type="unfinished"></translation>
</message>
@ -168,7 +193,7 @@
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../gui/AudioInputConfig.h" line="+93"/>
<location filename="../gui/AudioInputConfig.h" line="+94"/>
<source>VOIP</source>
<translation type="unfinished"></translation>
</message>
@ -460,7 +485,7 @@
<context>
<name>QObject</name>
<message>
<location filename="../VOIPPlugin.cpp" line="+125"/>
<location filename="../VOIPPlugin.cpp" line="+128"/>
<source>&lt;h3&gt;RetroShare VOIP plugin&lt;/h3&gt;&lt;br/&gt; * Contributors: Cyril Soler, Josselin Jacquard&lt;br/&gt;</source>
<translation type="unfinished"></translation>
</message>
@ -502,31 +527,111 @@
<source>This plugin provides voice communication between friends in RetroShare.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+40"/>
<location line="+4"/>
<location line="+4"/>
<location line="+4"/>
<source>VOIP</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="-11"/>
<source>Incoming audio call</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+4"/>
<source>Incoming video call</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+4"/>
<source>Outgoing audio call</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+4"/>
<source>Outgoing video call</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>VOIPChatWidgetHolder</name>
<message>
<location filename="../gui/VOIPChatWidgetHolder.cpp" line="+63"/>
<location filename="../gui/VOIPChatWidgetHolder.cpp" line="+70"/>
<location line="+146"/>
<source>Mute</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+13"/>
<location line="-128"/>
<location line="+138"/>
<source>Start Call</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+28"/>
<location line="-121"/>
<location line="+131"/>
<source>Start Video Call</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="-14"/>
<location line="-121"/>
<location line="+131"/>
<source>Hangup Call</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+79"/>
<location line="-113"/>
<location line="+626"/>
<source>Hide Chat Text</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="-608"/>
<location line="+106"/>
<location line="+523"/>
<source>Fullscreen mode</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="-412"/>
<source>%1 inviting you to start an audio conversation. Do you want Accept or Decline the invitation?</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+2"/>
<source>Accept Audio Call</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+17"/>
<source>Decline Audio Call</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+1"/>
<source>Refuse audio call</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+33"/>
<source>%1 inviting you to start a video conversation. Do you want Accept or Decline the invitation?</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+19"/>
<source>Decline Video Call</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+1"/>
<source>Refuse video call</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+102"/>
<source>Mute yourself</source>
<translation type="unfinished"></translation>
</message>
@ -536,83 +641,129 @@
<translation type="unfinished"></translation>
</message>
<message>
<location line="+19"/>
<location line="+37"/>
<location line="+38"/>
<location line="+18"/>
<location line="+13"/>
<location line="+92"/>
<location line="+589"/>
<source>Waiting your friend respond your video call.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+14"/>
<source>Your friend is calling you for video. Respond.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="-781"/>
<location line="+53"/>
<location line="+188"/>
<location line="+24"/>
<location line="+57"/>
<location line="+28"/>
<location line="+284"/>
<location line="+11"/>
<location line="+11"/>
<location line="+21"/>
<location line="+11"/>
<source>VoIP Status</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="-198"/>
<source>Outgoing Call stopped.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+19"/>
<location line="-467"/>
<source>Hold Call</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+18"/>
<location line="+20"/>
<source>Outgoing Call is started...</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+15"/>
<location line="+9"/>
<source>Resume Call</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+20"/>
<location line="+16"/>
<source>Outgoing Audio Call stopped.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+46"/>
<source>Shut camera off</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+4"/>
<location line="+11"/>
<source>You&apos;re now sending video...</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+12"/>
<location line="+21"/>
<location line="-266"/>
<location line="+279"/>
<source>Activate camera</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="-15"/>
<location line="+15"/>
<source>Video call stopped</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+13"/>
<source>%1 inviting you to start a video conversation. do you want Accept or Decline the invitation?</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+1"/>
<location line="-295"/>
<source>Accept Video Call</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+91"/>
<source>%1 inviting you to start a audio conversation. do you want Accept or Decline the invitation?</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+1"/>
<source>Accept Call</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+1"/>
<location line="-52"/>
<source>Activate audio</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+384"/>
<source>Show Chat Text</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+19"/>
<source>Return to normal view.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+228"/>
<source>%1 hang up. Your call is closed.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+11"/>
<source>%1 hang up. Your audio call is closed.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+11"/>
<source>%1 hang up. Your video call is closed.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+21"/>
<source>%1 accepted your audio call.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+11"/>
<source>%1 accepted your video call.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+20"/>
<source>Waiting your friend respond your audio call.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+14"/>
<source>Your friend is calling you for audio. Respond.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+17"/>
<location line="+58"/>
<source>Answer</source>
<translation type="unfinished"></translation>
</message>
@ -620,7 +771,7 @@
<context>
<name>VOIPPlugin</name>
<message>
<location filename="../VOIPPlugin.cpp" line="+5"/>
<location filename="../VOIPPlugin.cpp" line="-48"/>
<source>VOIP</source>
<translation type="unfinished"></translation>
</message>
@ -637,6 +788,11 @@
<source>Answer with video</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../gui/VOIPToasterItem.ui" line="+232"/>
<source>Decline</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>VOIPToasterNotify</name>
@ -750,7 +906,7 @@
<context>
<name>voipGraphSource</name>
<message>
<location filename="../gui/AudioInputConfig.cpp" line="-236"/>
<location filename="../gui/AudioInputConfig.cpp" line="-260"/>
<source>Required bandwidth</source>
<translation type="unfinished"></translation>
</message>

Binary file not shown.

View File

@ -588,7 +588,7 @@
<message>
<location line="+13"/>
<source>%1 inviting you to start a video conversation. do you want Accept or Decline the invitation?</source>
<translation>%1 le está invitando a iniciar una conversación de vídeo. ¿Quiere aceptar o declinar la invitación?</translation>
<translation>%1 le está invitando a iniciar una conversación de vídeo. ¿Quiere aceptar o rechazar la invitación?</translation>
</message>
<message>
<location line="+1"/>

Binary file not shown.

View File

@ -508,7 +508,7 @@
<message>
<location filename="../gui/VOIPChatWidgetHolder.cpp" line="+63"/>
<source>Mute</source>
<translation type="unfinished"/>
<translation>Muto</translation>
</message>
<message>
<location line="+13"/>
@ -518,7 +518,7 @@
<message>
<location line="+28"/>
<source>Start Video Call</source>
<translation type="unfinished"/>
<translation>Inizia una Video Chiamata</translation>
</message>
<message>
<location line="-14"/>
@ -548,7 +548,7 @@
<message>
<location line="-198"/>
<source>Outgoing Call stopped.</source>
<translation type="unfinished"/>
<translation>Chiamata in uscita terminata.</translation>
</message>
<message>
<location line="+19"/>
@ -568,48 +568,48 @@
<message>
<location line="+20"/>
<source>Shut camera off</source>
<translation type="unfinished"/>
<translation>Spegni webcam/videocamera</translation>
</message>
<message>
<location line="+4"/>
<source>You&apos;re now sending video...</source>
<translation type="unfinished"/>
<translation>Invio video in corso...</translation>
</message>
<message>
<location line="+12"/>
<location line="+21"/>
<source>Activate camera</source>
<translation type="unfinished"/>
<translation>Attiva webcam/videocamera</translation>
</message>
<message>
<location line="-15"/>
<source>Video call stopped</source>
<translation type="unfinished"/>
<translation>Video chiamata terminata</translation>
</message>
<message>
<location line="+13"/>
<source>%1 inviting you to start a video conversation. do you want Accept or Decline the invitation?</source>
<translation type="unfinished"/>
<translation>%1 vuole iniziare una conversazione video con te. Accetti o Rifiuti l&apos;invito?</translation>
</message>
<message>
<location line="+1"/>
<source>Accept Video Call</source>
<translation type="unfinished"/>
<translation>Accetta Video Chiamata</translation>
</message>
<message>
<location line="+91"/>
<source>%1 inviting you to start a audio conversation. do you want Accept or Decline the invitation?</source>
<translation type="unfinished"/>
<translation>%1 vuole iniziare una conversazione audio con te. Accetti o Rifiuti l&apos;invito?</translation>
</message>
<message>
<location line="+1"/>
<source>Accept Call</source>
<translation type="unfinished"/>
<translation>Accetta Chiamata</translation>
</message>
<message>
<location line="+1"/>
<source>Activate audio</source>
<translation type="unfinished"/>
<translation>Attiva audio</translation>
</message>
<message>
<location line="+21"/>
@ -635,7 +635,7 @@
<message>
<location line="+4"/>
<source>Answer with video</source>
<translation type="unfinished"/>
<translation>Rispondi con video</translation>
</message>
</context>
<context>
@ -653,12 +653,12 @@
<message>
<location line="+1"/>
<source>Bandwidth Information</source>
<translation type="unfinished"/>
<translation>Informazioni Larghezza Banda</translation>
</message>
<message>
<location line="+1"/>
<source>Audio or Video Data</source>
<translation type="unfinished"/>
<translation>Informazioni Audio o Video</translation>
</message>
<message>
<location line="+1"/>
@ -668,17 +668,17 @@
<message>
<location line="+1"/>
<source>Invitation</source>
<translation type="unfinished"/>
<translation>Invito</translation>
</message>
<message>
<location line="+2"/>
<source>Audio Call</source>
<translation type="unfinished"/>
<translation>Audio Chiamata</translation>
</message>
<message>
<location line="+1"/>
<source>Video Call</source>
<translation type="unfinished"/>
<translation>Video Chiamata</translation>
</message>
<message>
<location line="+110"/>
@ -744,7 +744,7 @@
<location line="+25"/>
<location line="+24"/>
<source>calling</source>
<translation type="unfinished"/>
<translation>in chiamata</translation>
</message>
</context>
</TS>

View File

@ -532,7 +532,9 @@ void GenCertDialog::genPerson()
setCursor(Qt::WaitCursor) ;
QCoreApplication::processEvents();
while(QAbstractEventDispatcher::instance()->processEvents(QEventLoop::AllEvents)) ;
QAbstractEventDispatcher* ed = QAbstractEventDispatcher::instance();
if (ed->hasPendingEvents())
while(ed->processEvents(QEventLoop::AllEvents));
std::string email_str = "" ;
RsAccounts::GeneratePGPCertificate(

View File

@ -7,7 +7,7 @@
<x>0</x>
<y>0</y>
<width>745</width>
<height>634</height>
<height>640</height>
</rect>
</property>
<property name="sizePolicy">
@ -513,22 +513,9 @@
&lt;html&gt;&lt;head&gt;&lt;meta name=&quot;qrichtext&quot; content=&quot;1&quot; /&gt;&lt;style type=&quot;text/css&quot;&gt;
p, li { white-space: pre-wrap; }
&lt;/style&gt;&lt;/head&gt;&lt;body style=&quot; font-family:'Sans'; font-size:9pt; font-weight:400; font-style:normal;&quot;&gt;
&lt;p style=&quot; margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;Your own opinion about an identity rules the visibility of that identity for yourself,&lt;/p&gt;
&lt;p style=&quot; margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;and is shared among friends. A final score is calculated according to a formula that accounts your own opinion and your friends' opinions about someone:&lt;/p&gt;
&lt;p style=&quot; margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;Your own opinion about an identity rules the visibility of that identity for yourself and your friend nodes. Your own opinion is shared among friends and used to compute a reputation score: If your opinion about an identity is neutral, the reputation score is the average of your friend's opinions. If not, your own opinion gives the score.&lt;/p&gt;
&lt;p style=&quot; margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;The overall score is used in chat lobbies, forums and channels to decide on the actions to take for each specific identity. When the overall score is lower than -0.6, the identity is banned, which prevents all messages and forums/channels authored by this identity to be forwarded, both ways. Some forums also have special anti-spam flags that require a higher reputation level, making them more sensitive to bad opinions. Banned identities gradually lose their activity and eventually disappear (after 30 days). &lt;/p&gt;
&lt;p style=&quot;-qt-paragraph-type:empty; margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p style=&quot; margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt; S = own_opinion * a + friends_opinion * (1-a)&lt;/p&gt;
&lt;p style=&quot;-qt-paragraph-type:empty; margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p style=&quot; margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;The factor 'a' depends on the type of ID. &lt;/p&gt;
&lt;p style=&quot; margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;- anonymous IDs: &lt;/p&gt;
&lt;p style=&quot; margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;- PGP-signed IDs by unknown PGP keys: a=&lt;/p&gt;
&lt;p style=&quot;-qt-paragraph-type:empty; margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p style=&quot; margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;The overall score is used in chat lobbies, forums and channels to decide on the actions to take for each specific identity:&lt;/p&gt;
&lt;p style=&quot;-qt-paragraph-type:empty; margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p style=&quot; margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;S &amp;lt; -0.5: Posts are not stored, nor forwarded &lt;/p&gt;
&lt;p style=&quot; margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;S &amp;lt; 0.2: Posts are hidden, but still transmitted&lt;/p&gt;
&lt;p style=&quot; margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;S &amp;lt; 0.0: &lt;/p&gt;
&lt;p style=&quot;-qt-paragraph-type:empty; margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p style=&quot; margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;The overall rating is computed in such a way that it is not possible for a single person to deterministically change someone's status at neighbor nodes.&lt;/p&gt;
&lt;p style=&quot;-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
</property>
<property name="currentIndex">

View File

@ -661,3 +661,4 @@ IdEditDialog QLabel#info_label
background: #FFFFD7;
background-color: qlineargradient(x1:0, y1:0, x2:0, y2:1, stop:0 #FFFFD7, stop:1 #FFFFB2);
}

View File

@ -54,7 +54,7 @@
#define COL_SEND 8
#define COL_DUPLICATION_FACTOR 9
static const int PARTIAL_VIEW_SIZE = 5 ;
static const int PARTIAL_VIEW_SIZE = 9 ;
static const int MAX_TUNNEL_REQUESTS_DISPLAY = 10 ;
static QColor colorScale(float f)
@ -350,7 +350,6 @@ void GlobalRouterStatisticsWidget::updateContent()
//if(!is_null)
//{
ids = QString::fromStdString(it->first.toStdString())+" : " ;
mMaxWheelZoneX = ox+2*cellx + fm_monospace.width(ids);
painter.drawText(ox+2*cellx,oy+celly,ids) ;
for(uint32_t i=0;i<matrix_info.friend_ids.size();++i)
@ -368,10 +367,13 @@ void GlobalRouterStatisticsWidget::updateContent()
//}
}
mMaxWheelZoneX = ox+matrix_info.friend_ids.size()*cellx + fm_monospace.width(ids);
RsIdentityDetails iddetails ;
if(rsIdentity->getIdDetails(current_id,iddetails))
painter.drawText(current_width+cellx, current_oy+celly, QString::fromUtf8(iddetails.mNickname.c_str())) ;
else
painter.drawText(current_width+cellx, current_oy+celly, tr("[Unknown identity]")) ;
mMaxWheelZoneY = oy+celly ;
@ -415,10 +417,10 @@ void GlobalRouterStatisticsWidget::wheelEvent(QWheelEvent *e)
return ;
}
if(e->delta() > 0 && mCurrentN+PARTIAL_VIEW_SIZE/2+1 < mNumberOfKnownKeys)
if(e->delta() < 0 && mCurrentN+PARTIAL_VIEW_SIZE/2+1 < mNumberOfKnownKeys)
mCurrentN++ ;
if(e->delta() < 0 && mCurrentN > PARTIAL_VIEW_SIZE/2+1)
if(e->delta() > 0 && mCurrentN > PARTIAL_VIEW_SIZE/2+1)
mCurrentN-- ;
updateContent();

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -272,3 +272,5 @@ QTextBrowser {
QTextEdit {
color: white;
}

View File

@ -172,3 +172,4 @@ QSplitter#splitter{
border-image: url(qss/blue/blue.png);
}

View File

@ -65,4 +65,3 @@ QTreeWidget::item:selected { /* when user selects item using mouse or keyboard *
}
Q

View File

@ -205,3 +205,4 @@ QLabel#fromText{
color: blue;
}

View File

@ -1057,3 +1057,4 @@ QStatusBar::item {
border: 1px solid #3A3939;
border-radius: 3px;
}

View File

@ -287,3 +287,4 @@ QLabel#threadTitle{
background: white;
color: black;
}

View File

@ -135,3 +135,4 @@ QLabel#fromText{
color: blue;
}

View File

@ -162,3 +162,4 @@ QLabel#fromText{
color: blue;
}

View File

@ -301,3 +301,4 @@ QStatusBar {
stop: 0 #BDDF7D, stop: 1 #49881F);
}

View File

@ -85,3 +85,4 @@ QLabel#fromText{
color: blue;
}

View File

@ -205,3 +205,4 @@ QToolBar#chattoolBar{
border-image: url(qss/yaba/yaba.png);
}

View File

@ -168,3 +168,4 @@ QLabel#fromText{
color: blue;
}