Merge branch 'master' into extra_locators

This commit is contained in:
Gioacchino Mazzurco 2018-03-02 19:31:37 +01:00
commit 518df99243
No known key found for this signature in database
GPG Key ID: A1FBCA3872E87051
27 changed files with 297 additions and 99 deletions

View File

@ -1,4 +1,99 @@
retroshare (0.6.3-1.XXXXXX~YYYYYY) YYYYYY; urgency=low retroshare (ZZZZZZ-1.XXXXXX~YYYYYY) YYYYYY; urgency=low
3d7be85 csoler Thu, 1 Mar 2018 11:46:47 +0100 Merge pull request #1199 from csoler/v0.6-SecurityFixes
026951f csoler Thu, 1 Mar 2018 11:45:54 +0100 added consistency check in getGroupMeta so that ADMIN/PUBLISH flags always correspond to what the key set reflects
028a246 csoler Thu, 1 Mar 2018 09:44:59 +0100 Merge pull request #1197 from csoler/v0.6-SecurityFixes
ac64d2a csoler Thu, 1 Mar 2018 09:42:47 +0100 Merge pull request #1195 from PhenomRetroShare/Fix_NoTrIconInChatWidget
0651f4a csoler Thu, 1 Mar 2018 09:42:06 +0100 Merge pull request #1198 from G10h4ck/master
0c8b3ed Gioacc Wed, 28 Feb 2018 23:32:13 +0100 Set default Mac OS X version only if macx
5d58943 csoler Wed, 28 Feb 2018 23:18:50 +0100 forced notification of type RECEIVE when creating a new group so that the GxsIFaceHelper updates the group list
29ab0e9 csoler Wed, 28 Feb 2018 22:40:04 +0100 fixed bug that would erase private publish key when a group update is received
165b241 csoler Tue, 27 Feb 2018 23:19:27 +0100 made add of publish key a meta group change, to force reload the list of groups
3bc5b45 csoler Tue, 27 Feb 2018 22:42:48 +0100 added a FeedItem to warn when publish permissions are received for a channel
aad9397 csoler Mon, 26 Feb 2018 23:37:19 +0100 fixed memory leak in p3GxsTunnel
23c389c Phenom Mon, 26 Feb 2018 23:29:06 +0100 Remove non translatable text ChatWidget.ui
dd9f67a csoler Sun, 25 Feb 2018 17:52:49 +0100 fixed version number problem
3e700ab csoler Sun, 25 Feb 2018 16:12:46 +0100 Merge pull request #1194 from G10h4ck/fixAndroidCompilation
9f0421c csoler Sun, 25 Feb 2018 14:39:29 +0100 attempt to fix large size in ConnectFriendDialog.ui
f9896a0 csoler Sun, 25 Feb 2018 11:46:18 +0100 updated ppa_upload.sh to 0.6.4
5c029c5 csoler Sun, 25 Feb 2018 11:43:30 +0100 fixed typo in changelog
31ab87c csoler Fri, 23 Feb 2018 14:06:49 +0100 added rs plugins into rules for ubuntu packaging
681f543 csoler Sat, 24 Feb 2018 22:04:26 +0100 Merge pull request #1183 from csoler/v0.6.4
05613a2 csoler Sat, 24 Feb 2018 21:58:58 +0100 Merge pull request #1193 from csoler/v0.6-SecurityFixes
39e70ed csoler Sat, 24 Feb 2018 21:51:18 +0100 ignore unknown ptags in certificates instead of causing an error, for future backward compatibility
062e00d csoler Sat, 24 Feb 2018 18:05:26 +0100 Merge pull request #1189 from csoler/v0.6-SecurityFixes
13441ff csoler Fri, 23 Feb 2018 15:13:13 +0100 removed debug info in rsgenexchange.cc
49b321d csoler Fri, 23 Feb 2018 14:39:08 +0100 fixed the text in invitation system
d8e950c csoler Fri, 23 Feb 2018 14:28:22 +0100 removed debug output from rsdataservice
5a4d0f5 csoler Fri, 23 Feb 2018 14:26:23 +0100 made the invite system non automatic, because it was confusing and could generate unwanted emails
fa84d1c csoler Fri, 23 Feb 2018 14:01:43 +0100 Merge pull request #1185 from G10h4ck/disablePluginByDefault
ff7633f csoler Fri, 23 Feb 2018 14:00:39 +0100 Merge pull request #1184 from G10h4ck/linkLocalFallback
8d5cd8a Gioacc Thu, 22 Feb 2018 15:38:20 +0100 Increase size of list of ip shared via discovery2
9dd1aef Gioacc Fri, 23 Feb 2018 01:05:35 +0100 Discovery do not distribute addresses to hidden nodes
e7facc1 Gioacc Fri, 23 Feb 2018 01:05:04 +0100 Prevent discovery to share local addresses if hidden
4fa6bdc Gioacc Wed, 21 Feb 2018 17:38:31 +0100 Improve discovery
385f44b csoler Thu, 22 Feb 2018 23:03:48 +0100 Merge pull request #1188 from PhenomRetroShare/Fix_SharedFileDialogShowColumn
c141eae Phenom Thu, 22 Feb 2018 18:54:14 +0100 Fix SharedFilesDialog show old hidden column.
2044a2c Gioacc Wed, 21 Feb 2018 04:24:12 +0100 Use retrocompatible iterators
4dfeab2 csoler Tue, 20 Feb 2018 23:30:52 +0100 Merge pull request #1187 from csoler/master
73d11e1 Phenom Thu, 15 Feb 2018 19:04:55 +0100 Fix Gcc Warning in nxsmsgsync_test.cc
737a2b4 Phenom Thu, 15 Feb 2018 18:57:16 +0100 Fix Gcc Warning in nxstesthub.cc
cfcdec4 Phenom Thu, 15 Feb 2018 18:44:03 +0100 Fix Gcc Warning in support.h
aadb9ac Phenom Fri, 8 Dec 2017 19:47:00 +0100 Fix Gcc Warning in NetworkDialog.cpp
e3d8d86 csoler Tue, 20 Feb 2018 23:03:33 +0100 updated translation files
4d7997b csoler Tue, 20 Feb 2018 21:08:09 +0100 Merge pull request #1186 from csoler/v0.6-FT
a1b378e csoler Tue, 20 Feb 2018 21:07:02 +0100 fixed ghost rows in TransfersDialog
c897962 csoler Tue, 20 Feb 2018 20:26:33 +0100 merged
11d607e csoler Tue, 20 Feb 2018 20:19:10 +0100 Merge pull request #1179 from PhenomRetroShare/Add_ChangeAddIconForChannelForum
35b54bb csoler Tue, 20 Feb 2018 20:18:31 +0100 Merge pull request #1180 from PhenomRetroShare/Add_ClearGxsGroupFrameWhenNoSelection
fec2b2e csoler Tue, 20 Feb 2018 19:20:02 +0100 Merge pull request #1182 from PhenomRetroShare/Add_SplitFileNbSize
b2217fc Gioacc Tue, 20 Feb 2018 15:56:16 +0100 Build plugin only if requested
0c99975 Gioacc Mon, 19 Feb 2018 23:23:15 +0100 Use link local address only if necessary
5667763 csoler Mon, 19 Feb 2018 21:49:06 +0100 switched version to 0.6.4
798ad15 Phenom Mon, 19 Feb 2018 20:13:38 +0100 Split Number of Files and Size in RemoteDirModel.
afc43d0 G10h4c Mon, 19 Feb 2018 15:33:28 +0100 Merge pull request #1181 from Kcchouette/patch-1
8492a40 Kcchou Mon, 19 Feb 2018 15:17:59 +0100 Update markdown to be visible on github
71e1a46 Phenom Sun, 18 Feb 2018 23:12:59 +0100 Clear GxsGroupFrame When No Selection
8710761 Phenom Sun, 18 Feb 2018 19:15:01 +0100 Change Add Channel/Forum post by Add.png
51f5d19 csoler Sun, 18 Feb 2018 18:00:24 +0100 merged uptream/master
2bc0629 csoler Sun, 18 Feb 2018 17:59:00 +0100 Merge pull request #1178 from PhenomRetroShare/Fix_BugsInRsCollectionDialog
2511934 csoler Sun, 18 Feb 2018 17:58:06 +0100 Merge pull request #1177 from csoler/v0.6-FT
7a84492 csoler Sun, 18 Feb 2018 17:57:42 +0100 Merge pull request #1176 from csoler/v0.6-SecurityFixes
7cda064 csoler Sun, 18 Feb 2018 17:56:51 +0100 merged uptream/master
931fdd0 Phenom Sun, 18 Feb 2018 17:30:01 +0100 Fix bug in processSettings in RsCollectionDialog.cpp
d87061d Phenom Sun, 18 Feb 2018 09:18:44 +0100 Fix bug when adding new items when hashing in RsCollectionDialog
6d0945f Phenom Sun, 18 Feb 2018 08:53:31 +0100 Fix bug when removing root item in RsCollectionDialog
6fe1413 csoler Sat, 17 Feb 2018 23:37:25 +0100 added limiter in number of responses forwarded back by turtle search, which should avoid bursts of bandwidth for popular requests
8708dd9 csoler Sat, 17 Feb 2018 12:04:13 +0100 fixed bug due to wrong service ID in serializer
d57f933 csoler Fri, 16 Feb 2018 23:51:43 +0100 added load/save of known channels to avoid re-displaying it in the NewsFeed after then have been deleted.
252626f csoler Fri, 16 Feb 2018 23:24:01 +0100 added load/save of known forums to avoid re-displaying it in the NewsFeed after then have been deleted.
63ddccd csoler Fri, 16 Feb 2018 13:22:19 +0100 Merge pull request #1175 from PhenomRetroShare/Fix_NewChatInvite
83b6205 Phenom Fri, 16 Feb 2018 10:22:59 +0100 Fix New Chat Invite
5e34467 csoler Thu, 15 Feb 2018 00:06:13 +0100 Merge pull request #1174 from csoler/v0.6-SecurityFixes
47f9a49 csoler Thu, 15 Feb 2018 00:02:08 +0100 improved cost of reseting search in SharedFileDialog by saving hidden indexes list
9c60ff7 csoler Wed, 14 Feb 2018 22:10:11 +0100 Merge pull request #1172 from csoler/v0.6-SecurityFixes
72124bb csoler Wed, 14 Feb 2018 22:08:07 +0100 hide advanced mode option since it is not used anywhere in the software
ede51ab csoler Wed, 14 Feb 2018 22:02:20 +0100 Merge pull request #1171 from csoler/v0.6-SecurityFixes
cf33221 csoler Wed, 14 Feb 2018 22:00:46 +0100 removed dead code in previous commit
ddb2c45 csoler Wed, 14 Feb 2018 21:56:12 +0100 disable and hide signature checkbox when key is already signed in ConnectWizard
42b8ecc csoler Wed, 14 Feb 2018 21:48:56 +0100 prevent RS from making friends with your own location
558bb9f csoler Mon, 12 Feb 2018 23:17:29 +0100 fixed retro-tor build on master branch
3f9c72e csoler Mon, 12 Feb 2018 22:42:22 +0100 Merge pull request #1170 from csoler/v0.6-FT
d8b193c csoler Mon, 12 Feb 2018 22:40:15 +0100 fixed merge with master
01cc232 csoler Mon, 12 Feb 2018 22:39:11 +0100 fixed appearing false line in Transfers
8afa127 csoler Mon, 12 Feb 2018 20:30:01 +0100 fixed crash in RsCollection creation
0491e43 csoler Sun, 11 Feb 2018 21:28:43 +0100 Merge pull request #1169 from csoler/v0.6-FT
7a2d874 csoler Sun, 11 Feb 2018 20:49:45 +0100 Merge pull request #1153 from csoler/v0.6-TorOnly
a2eb145 csoler Sun, 11 Feb 2018 20:40:38 +0100 fixed option in .pri for retrotor configuration
5f106c4 csoler Sat, 10 Feb 2018 15:42:24 +0100 fixed compilation on ubuntu precise
4beadfe csoler Sat, 10 Feb 2018 14:28:15 +0100 updated changelog
fc3beca csoler Fri, 9 Feb 2018 23:02:27 +0100 fixed performance issue (patch from sss)
faf4517 csoler Thu, 8 Feb 2018 15:26:21 +0100 proper error handlign when Tor is not available
644fce8 csoler Thu, 8 Feb 2018 11:14:12 +0100 fixed download menu from Messages
-- Retroshare Dev Team <contact@retroshare.net> Sun, 25 Feb 2018 12:00:00 +0100
retroshare (0.6.3-1.20180210~4beadfe4) xenial; urgency=low
9352a7c csoler Thu, 8 Feb 2018 10:34:46 +0100 Merge pull request #1168 from PhenomRetroShare/Add_ConnFilterInFriendSel 9352a7c csoler Thu, 8 Feb 2018 10:34:46 +0100 Merge pull request #1168 from PhenomRetroShare/Add_ConnFilterInFriendSel
bf8bd4b Phenom Wed, 7 Feb 2018 19:00:08 +0100 Add Only Connected in FriendSelectionWidget. bf8bd4b Phenom Wed, 7 Feb 2018 19:00:08 +0100 Add Only Connected in FriendSelectionWidget.

View File

@ -1,11 +1,11 @@
#!/bin/sh #!/bin/sh
rm -f ./libssh-0.5.4.tar.gz.* rm -f ./libssh-0.5.4.tar.gz.*
rm -f ./retroshare_0.6.3-1.*_source.build rm -f ./retroshare_0.?.?-1.*_source.build
rm -f ./retroshare_0.6.3-1.*_source.changes rm -f ./retroshare_0.?.?-1.*_source.changes
rm -f ./retroshare_0.6.3-1.*.tar.gz rm -f ./retroshare_0.?.?-1.*.tar.gz
rm -f ./retroshare_0.6.3-1.*.diff.gz rm -f ./retroshare_0.?.?-1.*.diff.gz
rm -f ./retroshare_0.6.3-1.*.dsc rm -f ./retroshare_0.?.?-1.*.dsc
rm -f *.upload rm -f *.upload
rm -f *~ rm -f *~

View File

@ -3,7 +3,7 @@
configure: configure-stamp configure: configure-stamp
configure-stamp: configure-stamp:
dh_testdir dh_testdir
cd src && qmake "CONFIG-=debug" "CONFIG+=release" "CONFIG+=rs_autologin" PREFIX=/usr LIB_DIR=/usr/lib RetroShare.pro cd src && qmake "CONFIG-=debug" "CONFIG+=release" "CONFIG+=rs_autologin" "CONFIG+=retroshare_plugins" PREFIX=/usr LIB_DIR=/usr/lib RetroShare.pro
touch $@ touch $@

View File

@ -1,14 +1,23 @@
#!/bin/sh #!/bin/sh
###################### PARAMETERS #################### ###################### PARAMETERS ####################
version="0.6.3"
gitpath="https://github.com/RetroShare/RetroShare.git" gitpath="https://github.com/RetroShare/RetroShare.git"
workdir=retroshare-${version}
branch="master" branch="master"
#branch="v0.6.3-official_release" #branch="v0.6.3-official_release"
#bubba3="Y" # comment out to compile for bubba3 #bubba3="Y" # comment out to compile for bubba3
###################################################### ######################################################
RS_MAJOR_VERSION=`fgrep RS_MAJOR_VERSION ../../libretroshare/src/retroshare/rsversion.h | cut -d\\ -f3- | sed -e s\/\ \/\/g | cut -c1`
RS_MINOR_VERSION=`fgrep RS_MINOR_VERSION ../../libretroshare/src/retroshare/rsversion.h | cut -d\\ -f3- | sed -e s\/\ \/\/g | cut -c1`
RS_BUILD_NUMBER=`fgrep RS_BUILD_NUMBER ../../libretroshare/src/retroshare/rsversion.h | grep -v BUILD_NUMBER_ADD | cut -d\\ -f3- | sed -e s\/\ \/\/g | cut -c1`
# echo "RS_MAJOR_VERSION="${RS_MAJOR_VERSION}
# echo "RS_MINOR_VERSION="${RS_MINOR_VERSION}
# echo "RS_BUILD_NUMBER="${RS_BUILD_NUMBER}
version_number="${RS_MAJOR_VERSION}"'.'"${RS_MINOR_VERSION}"'.'"${RS_BUILD_NUMBER}"
workdir=retroshare-${version_number}
echo This script is going to build the debian source package for RetroShare, from the Git repository. echo This script is going to build the debian source package for RetroShare, from the Git repository.
if test -d "${workdir}" ; then if test -d "${workdir}" ; then
@ -68,29 +77,32 @@ if test "${useretrotor}" = "true"; then
fi fi
if test "${dist}" = "" ; then if test "${dist}" = "" ; then
dist="precise trusty xenial zesty artful" dist="trusty xenial artful"
fi fi
echo Attempting to get revision number... echo Attempting to get revision number...
ccount=`git rev-list --count --all` ccount=`git rev-list --count --all`
ccount=`expr $ccount + 8613 - 8267` ccount=`expr $ccount + 8613 - 8267`
echo " "Using PGP key id : ${gpgkey} echo " Workdir :"${workdir}
echo " "Using distributions: ${dist} echo " Version :"${version_number}
echo " "Commit count : ${ccount} echo " Using revision :"${rev}
echo " "Date : ${date} echo " Commit count :"${ccount}
echo " "Time : ${time} echo " Hash :"${hhsh}
echo " "Hash : ${hhsh} echo " Date :"${date}
echo " "Using branch : ${branch} echo " Time :"${time}
echo " "Using revision : ${rev} echo " Using branch :"${branch}
echo " Using distributions:"${dist}
echo " Using PGP key id :"${gpgkey}
if test ${useretrotor} = "true"; then if test ${useretrotor} = "true"; then
echo " "Specific flags : retrotor echo " "Specific flags : retrotor
fi fi
echo Done. echo Done.
version="${version}"."${rev}" version="${version_number}"."${rev}"
echo Got version number ${version}. echo Got version number ${version}
echo
echo Please check that the changelog is up to date. echo Please check that the changelog is up to date.
echo Hit ENTER if this is correct. Otherwise hit Ctrl+C echo Hit ENTER if this is correct. Otherwise hit Ctrl+C
read tmp read tmp
@ -136,7 +148,7 @@ echo Cleaning...
echo Calling debuild... echo Calling debuild...
for i in ${dist}; do for i in ${dist}; do
echo copying changelog for ${i} echo copying changelog for ${i}
sed -e s/XXXXXX/"${rev}"/g -e s/YYYYYY/"${i}"/g ../changelog > debian/changelog sed -e s/XXXXXX/"${rev}"/g -e s/YYYYYY/"${i}"/g -e s/ZZZZZZ/"${version_number}"/g ../changelog > debian/changelog
if test ${useretrotor} = "true"; then if test ${useretrotor} = "true"; then
cp ../rules.retrotor debian/rules cp ../rules.retrotor debian/rules

View File

@ -1,4 +1,4 @@
#!/bin/sh #!/bin/sh
for i in `ls retroshare_0.6.3-1.*.changes` ; do for i in `ls retroshare_0.6.4-1.*.changes` ; do
dput ppa:retroshare/unstable $i dput ppa:retroshare/unstable $i
done done

View File

@ -39,6 +39,7 @@
#endif #endif
#include "rsdataservice.h" #include "rsdataservice.h"
#include "retroshare/rsgxsflags.h"
#include "util/rsstring.h" #include "util/rsstring.h"
#define MSG_TABLE_NAME std::string("MESSAGES") #define MSG_TABLE_NAME std::string("MESSAGES")
@ -572,6 +573,38 @@ RsGxsGrpMetaData* RsDataService::locked_getGrpMeta(RetroCursor &c, int colOffset
c.getString(mColGrpMeta_ParentGrpId, tempId); c.getString(mColGrpMeta_ParentGrpId, tempId);
grpMeta->mParentGrpId = RsGxsGroupId(tempId); grpMeta->mParentGrpId = RsGxsGroupId(tempId);
// make sure that flags and keys are actually consistent
bool have_private_admin_key = false ;
bool have_private_publish_key = false ;
for(auto mit = grpMeta->keys.private_keys.begin(); mit != grpMeta->keys.private_keys.end();++mit)
{
if(mit->second.keyFlags == (RSTLV_KEY_DISTRIB_PUBLISH | RSTLV_KEY_TYPE_FULL)) have_private_publish_key = true ;
if(mit->second.keyFlags == (RSTLV_KEY_DISTRIB_ADMIN | RSTLV_KEY_TYPE_FULL)) have_private_admin_key = true ;
}
if(have_private_admin_key && !(grpMeta->mSubscribeFlags & GXS_SERV::GROUP_SUBSCRIBE_ADMIN))
{
std::cerr << "(WW) inconsistency in group " << grpMeta->mGroupId << ": group does not have flag ADMIN but an admin key was found. Updating the flags." << std::endl;
grpMeta->mSubscribeFlags |= GXS_SERV::GROUP_SUBSCRIBE_ADMIN;
}
if(!have_private_admin_key && (grpMeta->mSubscribeFlags & GXS_SERV::GROUP_SUBSCRIBE_ADMIN))
{
std::cerr << "(WW) inconsistency in group " << grpMeta->mGroupId << ": group has flag ADMIN but no admin key found. Updating the flags." << std::endl;
grpMeta->mSubscribeFlags &= ~GXS_SERV::GROUP_SUBSCRIBE_ADMIN;
}
if(have_private_publish_key && !(grpMeta->mSubscribeFlags & GXS_SERV::GROUP_SUBSCRIBE_PUBLISH))
{
std::cerr << "(WW) inconsistency in group " << grpMeta->mGroupId << ": group does not have flag PUBLISH but an admin key was found. Updating the flags." << std::endl;
grpMeta->mSubscribeFlags |= GXS_SERV::GROUP_SUBSCRIBE_PUBLISH;
}
if(!have_private_publish_key && (grpMeta->mSubscribeFlags & GXS_SERV::GROUP_SUBSCRIBE_PUBLISH))
{
std::cerr << "(WW) inconsistency in group " << grpMeta->mGroupId << ": group has flag PUBLISH but no admin key found. Updating the flags." << std::endl;
grpMeta->mSubscribeFlags &= ~GXS_SERV::GROUP_SUBSCRIBE_PUBLISH;
}
if(ok) if(ok)
return grpMeta; return grpMeta;
else else
@ -933,7 +966,9 @@ void RsDataService::locked_clearGrpMetaCache(const RsGxsGroupId& gid)
if(it != mGrpMetaDataCache.end()) if(it != mGrpMetaDataCache.end())
{ {
#ifdef RS_DATA_SERVICE_DEBUG
std::cerr << "(II) moving database cache entry " << (void*)(*it).second << " to dead list." << std::endl; std::cerr << "(II) moving database cache entry " << (void*)(*it).second << " to dead list." << std::endl;
#endif
mOldCachedItems.push_back(std::make_pair(now,it->second)) ; mOldCachedItems.push_back(std::make_pair(now,it->second)) ;
@ -947,7 +982,9 @@ void RsDataService::locked_clearGrpMetaCache(const RsGxsGroupId& gid)
while(it2!=mOldCachedItems.end() && (*it2).first + CACHE_ENTRY_GRACE_PERIOD < now) while(it2!=mOldCachedItems.end() && (*it2).first + CACHE_ENTRY_GRACE_PERIOD < now)
{ {
#ifdef RS_DATA_SERVICE_DEBUG
std::cerr << "(II) deleting old GXS database cache entry " << (void*)(*it2).second << ", " << now - (*it2).first << " seconds old." << std::endl; std::cerr << "(II) deleting old GXS database cache entry " << (void*)(*it2).second << ", " << now - (*it2).first << " seconds old." << std::endl;
#endif
delete (*it2).second ; delete (*it2).second ;
it2 = mOldCachedItems.erase(it2) ; it2 = mOldCachedItems.erase(it2) ;

View File

@ -1643,7 +1643,7 @@ void RsGenExchange::notifyReceivePublishKey(const RsGxsGroupId &grpId)
{ {
RS_STACK_MUTEX(mGenMtx); RS_STACK_MUTEX(mGenMtx);
RsGxsGroupChange* gc = new RsGxsGroupChange(RsGxsNotify::TYPE_PUBLISHKEY, false); RsGxsGroupChange* gc = new RsGxsGroupChange(RsGxsNotify::TYPE_PUBLISHKEY, true);
gc->mGrpIdList.push_back(grpId); gc->mGrpIdList.push_back(grpId);
mNotifications.push_back(gc); mNotifications.push_back(gc);
} }
@ -2580,7 +2580,11 @@ void RsGenExchange::publishGrps()
ggps.mKeys = fullKeySet; ggps.mKeys = fullKeySet;
} }
else else
{
// We should just merge the keys instead of overwriting them, because the update may not contain private parts.
fullKeySet = ggps.mKeys; fullKeySet = ggps.mKeys;
}
// find private admin key // find private admin key
RsTlvPrivateRSAKey privAdminKey; RsTlvPrivateRSAKey privAdminKey;
@ -2756,7 +2760,7 @@ void RsGenExchange::publishGrps()
if(!grpChanged.empty()) if(!grpChanged.empty())
{ {
RsGxsGroupChange* gc = new RsGxsGroupChange(RsGxsNotify::TYPE_PUBLISH, false); RsGxsGroupChange* gc = new RsGxsGroupChange(RsGxsNotify::TYPE_RECEIVE, true);
gc->mGrpIdList = grpChanged; gc->mGrpIdList = grpChanged;
mNotifications.push_back(gc); mNotifications.push_back(gc);
#ifdef GEN_EXCH_DEBUG #ifdef GEN_EXCH_DEBUG
@ -2886,7 +2890,9 @@ void RsGenExchange::processRecvdMessages()
if(!accept_new_msg || gpsi.mFirstTryTS + VALIDATE_MAX_WAITING_TIME < now) if(!accept_new_msg || gpsi.mFirstTryTS + VALIDATE_MAX_WAITING_TIME < now)
{ {
#ifdef GEN_EXCH_DEBUG
std::cerr << "Pending validation grp=" << gpsi.mId.first << ", msg=" << gpsi.mId.second << ", has exceeded validation time limit. The author's key can probably not be obtained. This is unexpected." << std::endl; std::cerr << "Pending validation grp=" << gpsi.mId.first << ", msg=" << gpsi.mId.second << ", has exceeded validation time limit. The author's key can probably not be obtained. This is unexpected." << std::endl;
#endif
delete gpsi.mItem; delete gpsi.mItem;
pend_it = mMsgPendingValidate.erase(pend_it); pend_it = mMsgPendingValidate.erase(pend_it);
@ -3214,6 +3220,13 @@ void RsGenExchange::performUpdateValidation()
gu.newGrp->metaData->mSubscribeFlags = gu.oldGrpMeta->mSubscribeFlags ; gu.newGrp->metaData->mSubscribeFlags = gu.oldGrpMeta->mSubscribeFlags ;
// Also keep private keys if present
if(!gu.newGrp->metaData->keys.private_keys.empty())
std::cerr << "(EE) performUpdateValidation() group " <<gu.newGrp->metaData->mGroupId << " has been received with private keys. This is very unexpected!" << std::endl;
else
gu.newGrp->metaData->keys.private_keys = gu.oldGrpMeta->keys.private_keys ;
grps.push_back(gu.newGrp); grps.push_back(gu.newGrp);
} }
else else
@ -3252,7 +3265,7 @@ void RsGenExchange::performUpdateValidation()
mGroupUpdates.clear(); mGroupUpdates.clear();
} }
bool RsGenExchange::updateValid(const RsGxsGrpMetaData& oldGrpMeta, RsNxsGrp& newGrp) const bool RsGenExchange::updateValid(const RsGxsGrpMetaData& oldGrpMeta, const RsNxsGrp& newGrp) const
{ {
std::map<SignType, RsTlvKeySignature>& signSet = newGrp.metaData->signSet.keySignSet; std::map<SignType, RsTlvKeySignature>& signSet = newGrp.metaData->signSet.keySignSet;
std::map<SignType, RsTlvKeySignature>::iterator mit = signSet.find(INDEX_AUTHEN_ADMIN); std::map<SignType, RsTlvKeySignature>::iterator mit = signSet.find(INDEX_AUTHEN_ADMIN);

View File

@ -835,7 +835,7 @@ private:
* @param newGrp the new group that updates the old group (must have meta data member initialised) * @param newGrp the new group that updates the old group (must have meta data member initialised)
* @return * @return
*/ */
bool updateValid(const RsGxsGrpMetaData& oldGrp, RsNxsGrp& newGrp) const; bool updateValid(const RsGxsGrpMetaData& oldGrp, const RsNxsGrp& newGrp) const;
/*! /*!
* convenience function for checking private publish and admin keys are present * convenience function for checking private publish and admin keys are present

View File

@ -389,6 +389,8 @@ int RsGxsNetService::tick()
should_notify = should_notify || !mNewGroupsToNotify.empty() ; should_notify = should_notify || !mNewGroupsToNotify.empty() ;
should_notify = should_notify || !mNewMessagesToNotify.empty() ; should_notify = should_notify || !mNewMessagesToNotify.empty() ;
should_notify = should_notify || !mNewPublishKeysToNotify.empty() ;
should_notify = should_notify || !mNewStatsToNotify.empty() ;
} }
if(should_notify) if(should_notify)
@ -451,8 +453,11 @@ void RsGxsNetService::processObserverNotifications()
if(!grps_copy.empty()) mObserver->notifyNewGroups (grps_copy); if(!grps_copy.empty()) mObserver->notifyNewGroups (grps_copy);
if(!msgs_copy.empty()) mObserver->notifyNewMessages(msgs_copy); if(!msgs_copy.empty()) mObserver->notifyNewMessages(msgs_copy);
for(std::set<RsGxsGroupId>::const_iterator it(keys_copy.begin());it!=keys_copy.end();++it) mObserver->notifyReceivePublishKey(*it); for(std::set<RsGxsGroupId>::const_iterator it(keys_copy.begin());it!=keys_copy.end();++it)
for(std::set<RsGxsGroupId>::const_iterator it(stat_copy.begin());it!=stat_copy.end();++it) mObserver->notifyChangedGroupStats(*it); mObserver->notifyReceivePublishKey(*it);
for(std::set<RsGxsGroupId>::const_iterator it(stat_copy.begin());it!=stat_copy.end();++it)
mObserver->notifyChangedGroupStats(*it);
} }
void RsGxsNetService::rejectMessage(const RsGxsMessageId& msg_id) void RsGxsNetService::rejectMessage(const RsGxsMessageId& msg_id)
@ -4756,6 +4761,7 @@ void RsGxsNetService::handleRecvPublishKeys(RsNxsGroupPublishKeyItem *item)
#ifdef NXS_NET_DEBUG_3 #ifdef NXS_NET_DEBUG_3
GXSNETDEBUG_PG(item->PeerId(),item->grpId)<< " (EE) Publish key already present in database. Discarding message." << std::endl; GXSNETDEBUG_PG(item->PeerId(),item->grpId)<< " (EE) Publish key already present in database. Discarding message." << std::endl;
#endif #endif
mNewPublishKeysToNotify.insert(item->grpId) ;
return ; return ;
} }

View File

@ -143,7 +143,10 @@ void p3GxsTunnelService::flush()
for(std::list<RsGxsTunnelDHPublicKeyItem*>::iterator it=pendingDHItems.begin();it!=pendingDHItems.end();) for(std::list<RsGxsTunnelDHPublicKeyItem*>::iterator it=pendingDHItems.begin();it!=pendingDHItems.end();)
if(locked_sendClearTunnelData(*it) ) if(locked_sendClearTunnelData(*it) )
{
delete *it ;
it = pendingDHItems.erase(it) ; it = pendingDHItems.erase(it) ;
}
else else
++it ; ++it ;
} }
@ -155,7 +158,10 @@ void p3GxsTunnelService::flush()
for(std::list<RsGxsTunnelItem*>::iterator it=pendingGxsTunnelItems.begin();it!=pendingGxsTunnelItems.end();) for(std::list<RsGxsTunnelItem*>::iterator it=pendingGxsTunnelItems.begin();it!=pendingGxsTunnelItems.end();)
if(locked_sendEncryptedTunnelData(*it) ) if(locked_sendEncryptedTunnelData(*it) )
{
delete *it ;
it = pendingGxsTunnelItems.erase(it) ; it = pendingGxsTunnelItems.erase(it) ;
}
else else
{ {
++it ; ++it ;
@ -744,6 +750,8 @@ void p3GxsTunnelService::receiveTurtleData(RsTurtleGenericTunnelItem *gitem,cons
} }
else else
std::cerr << "(EE) Deserialiased item has unexpected type." << std::endl; std::cerr << "(EE) Deserialiased item has unexpected type." << std::endl;
delete citem ;
} }
} }

View File

@ -360,8 +360,9 @@ bool RsCertificate::initFromString(const std::string& instr,uint32_t& err_code)
} }
break ; break ;
default: default:
err_code = CERTIFICATE_PARSING_ERROR_UNKNOWN_SECTION_PTAG ; std::cerr << "(WW) unknwown PTAG 0x" << std::hex << ptag << std::dec << " in certificate! Ignoring it." << std::endl;
return false ; buf = &buf[s] ;
break ;
} }
total_s += s ; total_s += s ;

View File

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

View File

@ -1,6 +1,6 @@
#define RS_MAJOR_VERSION 0 #define RS_MAJOR_VERSION 0
#define RS_MINOR_VERSION 6 #define RS_MINOR_VERSION 6
#define RS_BUILD_NUMBER 3 #define RS_BUILD_NUMBER 4
#define RS_BUILD_NUMBER_ADD "" #define RS_BUILD_NUMBER_ADD ""
// The revision number should be the 4 first bytes of the git revision hash, which is obtained using: // The revision number should be the 4 first bytes of the git revision hash, which is obtained using:

View File

@ -26,8 +26,8 @@
#include <iostream> #include <iostream>
#include <thread> #include <thread>
#include <sys/time.h> #include <sys/time.h>
#include <sys/unistd.h>
#include <unistd.h> #include <unistd.h>
#include "rstime.h" #include "rstime.h"
namespace rstime { namespace rstime {

View File

@ -2608,9 +2608,10 @@ void IdDialog::sendInvite()
RsGxsId id(ui->lineEdit_KeyId->text().toStdString()); RsGxsId id(ui->lineEdit_KeyId->text().toStdString());
if ((QMessageBox::question(this, tr("Send invite?"),tr("Do you really want send a invite with your Certificate?"),QMessageBox::Yes|QMessageBox::No, QMessageBox::Yes))== QMessageBox::Yes) //if ((QMessageBox::question(this, tr("Send invite?"),tr("Do you really want send a invite with your Certificate?"),QMessageBox::Yes|QMessageBox::No, QMessageBox::Yes))== QMessageBox::Yes)
{ {
MessageComposer::sendInvite(id); MessageComposer::sendInvite(id,false);
ui->inviteFrame->show(); ui->inviteFrame->show();
ui->inviteButton->setEnabled(false); ui->inviteButton->setEnabled(false);
} }

View File

@ -58,24 +58,6 @@
#include "common/FeedNotify.h" #include "common/FeedNotify.h"
#include "notifyqt.h" #include "notifyqt.h"
const uint32_t NEWSFEED_PEERLIST = 0x0001;
const uint32_t NEWSFEED_FORUMNEWLIST = 0x0002;
const uint32_t NEWSFEED_FORUMMSGLIST = 0x0003;
const uint32_t NEWSFEED_CHANNELNEWLIST = 0x0004;
//const uint32_t NEWSFEED_CHANNELMSGLIST = 0x0005;
#if 0
const uint32_t NEWSFEED_BLOGNEWLIST = 0x0006;
const uint32_t NEWSFEED_BLOGMSGLIST = 0x0007;
#endif
const uint32_t NEWSFEED_MESSAGELIST = 0x0008;
const uint32_t NEWSFEED_CHATMSGLIST = 0x0009;
const uint32_t NEWSFEED_SECLIST = 0x000a;
const uint32_t NEWSFEED_POSTEDNEWLIST = 0x000b;
const uint32_t NEWSFEED_POSTEDMSGLIST = 0x000c;
const uint32_t NEWSFEED_CIRCLELIST = 0x000d;
#define ROLE_RECEIVED FEED_TREEWIDGET_SORTROLE #define ROLE_RECEIVED FEED_TREEWIDGET_SORTROLE
#define TOKEN_TYPE_GROUP 1 #define TOKEN_TYPE_GROUP 1
@ -281,20 +263,20 @@ void NewsFeed::updateDisplay()
mTokenQueueChannel = new TokenQueue(rsGxsChannels->getTokenService(), instance); mTokenQueueChannel = new TokenQueue(rsGxsChannels->getTokenService(), instance);
} }
RsGxsGroupId grpId(fi.mId1); addFeedItemChannelPublishKey(fi);
if (!grpId.isNull()) {
RsTokReqOptions opts;
opts.mReqType = GXS_REQUEST_TYPE_GROUP_DATA;
std::list<RsGxsGroupId> grpIds; // RsGxsGroupId grpId(fi.mId1);
grpIds.push_back(grpId); // if (!grpId.isNull()) {
// RsTokReqOptions opts;
uint32_t token; // opts.mReqType = GXS_REQUEST_TYPE_GROUP_DATA;
mTokenQueueChannel->requestGroupInfo(token, RS_TOKREQ_ANSTYPE_SUMMARY, opts, grpIds, TOKEN_TYPE_PUBLISHKEY); //
// std::list<RsGxsGroupId> grpIds;
// grpIds.push_back(grpId);
//
// uint32_t token;
// mTokenQueueChannel->requestGroupInfo(token, RS_TOKREQ_ANSTYPE_SUMMARY, opts, grpIds, TOKEN_TYPE_PUBLISHKEY);
// }
} }
}
// if (flags & RS_FEED_TYPE_CHANNEL)
// addFeedItemChannelPublishKey(fi);
break; break;
case RS_FEED_ITEM_FORUM_NEW: case RS_FEED_ITEM_FORUM_NEW:
@ -769,6 +751,14 @@ void NewsFeed::loadChannelPublishKey(const uint32_t &token)
#ifdef UNUSED_CODE #ifdef UNUSED_CODE
MessageComposer::sendChannelPublishKey(groups[0]); MessageComposer::sendChannelPublishKey(groups[0]);
#endif #endif
RsGxsChannelGroup& grp = *groups.begin();
RsFeedItem fi;
fi.mId1 = grp.mMeta.mGroupId.toStdString();
addFeedItemChannelPublishKey(fi);
} }
void NewsFeed::loadForumGroup(const uint32_t &token) void NewsFeed::loadForumGroup(const uint32_t &token)
@ -863,6 +853,8 @@ void NewsFeed::loadForumPublishKey(const uint32_t &token)
#ifdef UNUSED_CODE #ifdef UNUSED_CODE
MessageComposer::sendForumPublishKey(groups[0]); MessageComposer::sendForumPublishKey(groups[0]);
#endif #endif
std::cerr << "(EE) Unimplemented code: received an order to load/display item for received forum publish key, but the implementation is missing." << std::endl;
} }
void NewsFeed::loadPostedGroup(const uint32_t &token) void NewsFeed::loadPostedGroup(const uint32_t &token)
@ -1357,6 +1349,24 @@ void NewsFeed::addFeedItemChannelMsg(const RsFeedItem &fi)
/* add to layout */ /* add to layout */
addFeedItem(item); addFeedItem(item);
#ifdef NEWS_DEBUG
std::cerr << "NewsFeed::addFeedItemChanMsg()";
std::cerr << std::endl;
#endif
}
void NewsFeed::addFeedItemChannelPublishKey(const RsFeedItem &fi)
{
RsGxsGroupId grpId(fi.mId1);
if (grpId.isNull())
return;
/* make new widget */
GxsChannelGroupItem *item = new GxsChannelGroupItem(this, NEWSFEED_CHANNELPUBKEYLIST, grpId, false, true);
/* add to layout */
addFeedItem(item);
#ifdef NEWS_DEBUG #ifdef NEWS_DEBUG
std::cerr << "NewsFeed::addFeedItemChanMsg()"; std::cerr << "NewsFeed::addFeedItemChanMsg()";
std::cerr << std::endl; std::cerr << std::endl;

View File

@ -30,6 +30,25 @@
#define IMAGE_NEWSFEED ":/icons/plugins_128.png" #define IMAGE_NEWSFEED ":/icons/plugins_128.png"
const uint32_t NEWSFEED_PEERLIST = 0x0001;
const uint32_t NEWSFEED_FORUMNEWLIST = 0x0002;
const uint32_t NEWSFEED_FORUMMSGLIST = 0x0003;
const uint32_t NEWSFEED_CHANNELNEWLIST = 0x0004;
//const uint32_t NEWSFEED_CHANNELMSGLIST = 0x0005;
#if 0
const uint32_t NEWSFEED_BLOGNEWLIST = 0x0006;
const uint32_t NEWSFEED_BLOGMSGLIST = 0x0007;
#endif
const uint32_t NEWSFEED_MESSAGELIST = 0x0008;
const uint32_t NEWSFEED_CHATMSGLIST = 0x0009;
const uint32_t NEWSFEED_SECLIST = 0x000a;
const uint32_t NEWSFEED_POSTEDNEWLIST = 0x000b;
const uint32_t NEWSFEED_POSTEDMSGLIST = 0x000c;
const uint32_t NEWSFEED_CIRCLELIST = 0x000d;
const uint32_t NEWSFEED_CHANNELPUBKEYLIST= 0x000e;
namespace Ui { namespace Ui {
class NewsFeed; class NewsFeed;
} }
@ -102,6 +121,7 @@ private:
void addFeedItemChannelNew(const RsFeedItem &fi); void addFeedItemChannelNew(const RsFeedItem &fi);
// void addFeedItemChannelUpdate(const RsFeedItem &fi); // void addFeedItemChannelUpdate(const RsFeedItem &fi);
void addFeedItemChannelMsg(const RsFeedItem &fi); void addFeedItemChannelMsg(const RsFeedItem &fi);
void addFeedItemChannelPublishKey(const RsFeedItem &fi);
void addFeedItemForumNew(const RsFeedItem &fi); void addFeedItemForumNew(const RsFeedItem &fi);
// void addFeedItemForumUpdate(const RsFeedItem &fi); // void addFeedItemForumUpdate(const RsFeedItem &fi);

View File

@ -578,12 +578,6 @@ border-image: url(:/images/closepressed.png)
<property name="toolTip"> <property name="toolTip">
<string>Send</string> <string>Send</string>
</property> </property>
<property name="whatsThis">
<string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;QToolButton:disabled {&lt;/p&gt;&lt;p&gt; image: url(:/icons/png/send-message-blocked.png) ;&lt;/p&gt;&lt;p&gt;}&lt;/p&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
</property>
<property name="styleSheet">
<string notr="true"/>
</property>
<property name="icon"> <property name="icon">
<iconset resource="../icons.qrc"> <iconset resource="../icons.qrc">
<normaloff>:/icons/png/send-message.png</normaloff>:/icons/png/send-message.png</iconset> <normaloff>:/icons/png/send-message.png</normaloff>:/icons/png/send-message.png</iconset>

View File

@ -6,8 +6,8 @@
<rect> <rect>
<x>0</x> <x>0</x>
<y>0</y> <y>0</y>
<width>1161</width> <width>760</width>
<height>1223</height> <height>538</height>
</rect> </rect>
</property> </property>
<property name="windowTitle"> <property name="windowTitle">

View File

@ -23,6 +23,7 @@
#include "ui_GxsChannelGroupItem.h" #include "ui_GxsChannelGroupItem.h"
#include "FeedHolder.h" #include "FeedHolder.h"
#include "gui/NewsFeed.h"
#include "gui/RetroShareLink.h" #include "gui/RetroShareLink.h"
/**** /****
@ -144,14 +145,14 @@ void GxsChannelGroupItem::fill()
ui->subscribeButton->setEnabled(true); ui->subscribeButton->setEnabled(true);
} }
// if (mIsNew) switch(mFeedId)
// { {
ui->titleLabel->setText(tr("New Channel")); case NEWSFEED_CHANNELPUBKEYLIST: ui->titleLabel->setText(tr("Publish permission received for channel: "));
// } break ;
// else
// { case NEWSFEED_CHANNELNEWLIST: ui->titleLabel->setText(tr("New Channel: "));
// ui->titleLabel->setText(tr("Updated Channel")); break ;
// } }
if (mIsHome) if (mIsHome)
{ {

View File

@ -370,9 +370,9 @@ void MsgItem::sendInvite()
if (!rsMail->getMessage(mMsgId, mi)) if (!rsMail->getMessage(mMsgId, mi))
return; return;
if ((QMessageBox::question(this, tr("Send invite?"),tr("Do you really want send a invite with your Certificate?"),QMessageBox::Yes|QMessageBox::No, QMessageBox::Yes))== QMessageBox::Yes) //if ((QMessageBox::question(this, tr("Send invite?"),tr("Do you really want send a invite with your Certificate?"),QMessageBox::Yes|QMessageBox::No, QMessageBox::Yes))== QMessageBox::Yes)
{ //{
MessageComposer::sendInvite(mi.rsgxsid_srcId); MessageComposer::sendInvite(mi.rsgxsid_srcId,false);
} //}
} }

View File

@ -442,7 +442,7 @@
<item> <item>
<widget class="QLabel" name="infoLabel"> <widget class="QLabel" name="infoLabel">
<property name="text"> <property name="text">
<string notr="true">You get Invite, accept request and send your own Certificate back</string> <string notr="true">This message invites you to make friend! You may accept this request and send your own Certificate back</string>
</property> </property>
</widget> </widget>
</item> </item>

View File

@ -2775,12 +2775,12 @@ QString MessageComposer::inviteMessage()
return tr("Hi,<br>I want to be friends with you on RetroShare.<br>"); return tr("Hi,<br>I want to be friends with you on RetroShare.<br>");
} }
void MessageComposer::sendInvite(const RsGxsId &to, const QString &/*msg*/, bool autoSend) void MessageComposer::sendInvite(const RsGxsId &to, bool autoSend)
{ {
/* create a message */ /* create a message */
MessageComposer *composer = MessageComposer::newMsg(); MessageComposer *composer = MessageComposer::newMsg();
composer->setTitleText(tr("You have a friend invite")); composer->setTitleText(tr("Invite message"));
composer->msgFlags |= RS_MSG_USER_REQUEST; composer->msgFlags |= RS_MSG_USER_REQUEST;
@ -2803,8 +2803,8 @@ void MessageComposer::sendInvite(const RsGxsId &to, const QString &/*msg*/, bool
return; return;
} }
} }
else
//composer->show(); composer->show();
/* window will destroy itself! */ /* window will destroy itself! */
} }

View File

@ -64,7 +64,7 @@ public:
static QString recommendMessage(); static QString recommendMessage();
static void recommendFriend(const std::set <RsPeerId> &sslIds, const RsPeerId &to = RsPeerId(), const QString &msg = "", bool autoSend = false); static void recommendFriend(const std::set <RsPeerId> &sslIds, const RsPeerId &to = RsPeerId(), const QString &msg = "", bool autoSend = false);
static void sendConnectAttemptMsg(const RsPgpId &gpgId, const RsPeerId &sslId, const QString &sslName); static void sendConnectAttemptMsg(const RsPgpId &gpgId, const RsPeerId &sslId, const QString &sslName);
static void sendInvite(const RsGxsId &to = RsGxsId(), const QString &msg = "", bool autoSend = true); static void sendInvite(const RsGxsId &to, bool autoSend);
#ifdef UNUSED_CODE #ifdef UNUSED_CODE
static void sendChannelPublishKey(RsGxsChannelGroup &group); static void sendChannelPublishKey(RsGxsChannelGroup &group);
static void sendForumPublishKey(RsGxsForumGroup &group); static void sendForumPublishKey(RsGxsForumGroup &group);

View File

@ -789,9 +789,9 @@ void MessageWidget::sendInvite()
if (!rsMail->getMessage(currMsgId, mi)) if (!rsMail->getMessage(currMsgId, mi))
return; return;
if ((QMessageBox::question(this, tr("Send invite?"),tr("Do you really want send a invite with your Certificate?"),QMessageBox::Yes|QMessageBox::No, QMessageBox::Yes))== QMessageBox::Yes) //if ((QMessageBox::question(this, tr("Send invite?"),tr("Do you really want send a invite with your Certificate?"),QMessageBox::Yes|QMessageBox::No, QMessageBox::Yes))== QMessageBox::Yes)
{ //{
MessageComposer::sendInvite(mi.rsgxsid_srcId); MessageComposer::sendInvite(mi.rsgxsid_srcId,false);
} //}
} }

View File

@ -415,7 +415,7 @@
<item> <item>
<widget class="QLabel" name="infoLabel"> <widget class="QLabel" name="infoLabel">
<property name="text"> <property name="text">
<string notr="true">You get Invite, accept request and send your own Certificate back</string> <string notr="true">You got an invite to make friend! You may accept this request and send your own Certificate back</string>
</property> </property>
</widget> </widget>
</item> </item>

View File

@ -94,7 +94,7 @@ rs_async_chat:CONFIG -= no_rs_async_chat
# To select your MacOsX version append the following assignation to qmake # To select your MacOsX version append the following assignation to qmake
# command line "CONFIG+=rs_macos10.11" where 10.11 depends your version # command line "CONFIG+=rs_macos10.11" where 10.11 depends your version
CONFIG *= rs_macos10.11 macx:CONFIG *= rs_macos10.11
rs_macos10.8:CONFIG -= rs_macos10.11 rs_macos10.8:CONFIG -= rs_macos10.11
rs_macos10.9:CONFIG -= rs_macos10.11 rs_macos10.9:CONFIG -= rs_macos10.11
rs_macos10.10:CONFIG -= rs_macos10.11 rs_macos10.10:CONFIG -= rs_macos10.11