diff --git a/build_scripts/Debian+Ubuntu/changelog b/build_scripts/Debian+Ubuntu/changelog index c92f9b330..9610bcc43 100644 --- a/build_scripts/Debian+Ubuntu/changelog +++ b/build_scripts/Debian+Ubuntu/changelog @@ -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 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 bf8bd4b Phenom Wed, 7 Feb 2018 19:00:08 +0100 Add Only Connected in FriendSelectionWidget. diff --git a/build_scripts/Debian+Ubuntu/clean.sh b/build_scripts/Debian+Ubuntu/clean.sh index 4f3ce57f0..cb71980e0 100755 --- a/build_scripts/Debian+Ubuntu/clean.sh +++ b/build_scripts/Debian+Ubuntu/clean.sh @@ -1,11 +1,11 @@ #!/bin/sh rm -f ./libssh-0.5.4.tar.gz.* -rm -f ./retroshare_0.6.3-1.*_source.build -rm -f ./retroshare_0.6.3-1.*_source.changes -rm -f ./retroshare_0.6.3-1.*.tar.gz -rm -f ./retroshare_0.6.3-1.*.diff.gz -rm -f ./retroshare_0.6.3-1.*.dsc +rm -f ./retroshare_0.?.?-1.*_source.build +rm -f ./retroshare_0.?.?-1.*_source.changes +rm -f ./retroshare_0.?.?-1.*.tar.gz +rm -f ./retroshare_0.?.?-1.*.diff.gz +rm -f ./retroshare_0.?.?-1.*.dsc rm -f *.upload rm -f *~ diff --git a/build_scripts/Debian+Ubuntu/debian/rules b/build_scripts/Debian+Ubuntu/debian/rules index a5cc9dd9a..ef740237e 100755 --- a/build_scripts/Debian+Ubuntu/debian/rules +++ b/build_scripts/Debian+Ubuntu/debian/rules @@ -3,7 +3,7 @@ configure: configure-stamp configure-stamp: 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 $@ diff --git a/build_scripts/Debian+Ubuntu/makeSourcePackage.sh b/build_scripts/Debian+Ubuntu/makeSourcePackage.sh index 5364ec75e..26ebd651b 100755 --- a/build_scripts/Debian+Ubuntu/makeSourcePackage.sh +++ b/build_scripts/Debian+Ubuntu/makeSourcePackage.sh @@ -1,14 +1,23 @@ #!/bin/sh ###################### PARAMETERS #################### -version="0.6.3" gitpath="https://github.com/RetroShare/RetroShare.git" -workdir=retroshare-${version} branch="master" #branch="v0.6.3-official_release" #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. if test -d "${workdir}" ; then @@ -68,29 +77,32 @@ if test "${useretrotor}" = "true"; then fi if test "${dist}" = "" ; then - dist="precise trusty xenial zesty artful" + dist="trusty xenial artful" fi echo Attempting to get revision number... ccount=`git rev-list --count --all` ccount=`expr $ccount + 8613 - 8267` -echo " "Using PGP key id : ${gpgkey} -echo " "Using distributions: ${dist} -echo " "Commit count : ${ccount} -echo " "Date : ${date} -echo " "Time : ${time} -echo " "Hash : ${hhsh} -echo " "Using branch : ${branch} -echo " "Using revision : ${rev} +echo " Workdir :"${workdir} +echo " Version :"${version_number} +echo " Using revision :"${rev} +echo " Commit count :"${ccount} +echo " Hash :"${hhsh} +echo " Date :"${date} +echo " Time :"${time} +echo " Using branch :"${branch} +echo " Using distributions:"${dist} +echo " Using PGP key id :"${gpgkey} if test ${useretrotor} = "true"; then echo " "Specific flags : retrotor fi echo Done. -version="${version}"."${rev}" -echo Got version number ${version}. +version="${version_number}"."${rev}" +echo Got version number ${version} +echo echo Please check that the changelog is up to date. echo Hit ENTER if this is correct. Otherwise hit Ctrl+C read tmp @@ -136,7 +148,7 @@ echo Cleaning... echo Calling debuild... for i in ${dist}; do 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 cp ../rules.retrotor debian/rules diff --git a/build_scripts/Debian+Ubuntu/ppa_upload.sh b/build_scripts/Debian+Ubuntu/ppa_upload.sh index b39a0d845..ff0cbc086 100644 --- a/build_scripts/Debian+Ubuntu/ppa_upload.sh +++ b/build_scripts/Debian+Ubuntu/ppa_upload.sh @@ -1,4 +1,4 @@ #!/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 done diff --git a/libretroshare/src/gxs/rsdataservice.cc b/libretroshare/src/gxs/rsdataservice.cc index 305f8dee1..5fddf1897 100644 --- a/libretroshare/src/gxs/rsdataservice.cc +++ b/libretroshare/src/gxs/rsdataservice.cc @@ -39,6 +39,7 @@ #endif #include "rsdataservice.h" +#include "retroshare/rsgxsflags.h" #include "util/rsstring.h" #define MSG_TABLE_NAME std::string("MESSAGES") @@ -572,6 +573,38 @@ RsGxsGrpMetaData* RsDataService::locked_getGrpMeta(RetroCursor &c, int colOffset c.getString(mColGrpMeta_ParentGrpId, 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) return grpMeta; else @@ -933,7 +966,9 @@ void RsDataService::locked_clearGrpMetaCache(const RsGxsGroupId& gid) if(it != mGrpMetaDataCache.end()) { +#ifdef RS_DATA_SERVICE_DEBUG 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)) ; @@ -947,7 +982,9 @@ void RsDataService::locked_clearGrpMetaCache(const RsGxsGroupId& gid) 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; +#endif delete (*it2).second ; it2 = mOldCachedItems.erase(it2) ; diff --git a/libretroshare/src/gxs/rsgenexchange.cc b/libretroshare/src/gxs/rsgenexchange.cc index e1d15d614..14a2471e1 100644 --- a/libretroshare/src/gxs/rsgenexchange.cc +++ b/libretroshare/src/gxs/rsgenexchange.cc @@ -1643,7 +1643,7 @@ void RsGenExchange::notifyReceivePublishKey(const RsGxsGroupId &grpId) { 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); mNotifications.push_back(gc); } @@ -2580,7 +2580,11 @@ void RsGenExchange::publishGrps() ggps.mKeys = fullKeySet; } else + { + // We should just merge the keys instead of overwriting them, because the update may not contain private parts. + fullKeySet = ggps.mKeys; + } // find private admin key RsTlvPrivateRSAKey privAdminKey; @@ -2756,7 +2760,7 @@ void RsGenExchange::publishGrps() if(!grpChanged.empty()) { - RsGxsGroupChange* gc = new RsGxsGroupChange(RsGxsNotify::TYPE_PUBLISH, false); + RsGxsGroupChange* gc = new RsGxsGroupChange(RsGxsNotify::TYPE_RECEIVE, true); gc->mGrpIdList = grpChanged; mNotifications.push_back(gc); #ifdef GEN_EXCH_DEBUG @@ -2770,8 +2774,8 @@ void RsGenExchange::publishGrps() // This is done off-mutex to avoid possible cross deadlocks with the net service. if(mNetService!=NULL) - for(std::list::const_iterator it(groups_to_subscribe.begin());it!=groups_to_subscribe.end();++it) - mNetService->subscribeStatusChanged((*it),true) ; + for(std::list::const_iterator it(groups_to_subscribe.begin());it!=groups_to_subscribe.end();++it) + mNetService->subscribeStatusChanged((*it),true) ; } @@ -2886,7 +2890,9 @@ void RsGenExchange::processRecvdMessages() 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; +#endif delete gpsi.mItem; pend_it = mMsgPendingValidate.erase(pend_it); @@ -3214,6 +3220,13 @@ void RsGenExchange::performUpdateValidation() 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 " <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); } else @@ -3252,7 +3265,7 @@ void RsGenExchange::performUpdateValidation() mGroupUpdates.clear(); } -bool RsGenExchange::updateValid(const RsGxsGrpMetaData& oldGrpMeta, RsNxsGrp& newGrp) const +bool RsGenExchange::updateValid(const RsGxsGrpMetaData& oldGrpMeta, const RsNxsGrp& newGrp) const { std::map& signSet = newGrp.metaData->signSet.keySignSet; std::map::iterator mit = signSet.find(INDEX_AUTHEN_ADMIN); diff --git a/libretroshare/src/gxs/rsgenexchange.h b/libretroshare/src/gxs/rsgenexchange.h index 677d1d963..491ff017b 100644 --- a/libretroshare/src/gxs/rsgenexchange.h +++ b/libretroshare/src/gxs/rsgenexchange.h @@ -835,7 +835,7 @@ private: * @param newGrp the new group that updates the old group (must have meta data member initialised) * @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 diff --git a/libretroshare/src/gxs/rsgxsnetservice.cc b/libretroshare/src/gxs/rsgxsnetservice.cc index 8f055bc1b..48a9e9234 100644 --- a/libretroshare/src/gxs/rsgxsnetservice.cc +++ b/libretroshare/src/gxs/rsgxsnetservice.cc @@ -389,6 +389,8 @@ int RsGxsNetService::tick() should_notify = should_notify || !mNewGroupsToNotify.empty() ; should_notify = should_notify || !mNewMessagesToNotify.empty() ; + should_notify = should_notify || !mNewPublishKeysToNotify.empty() ; + should_notify = should_notify || !mNewStatsToNotify.empty() ; } if(should_notify) @@ -451,8 +453,11 @@ void RsGxsNetService::processObserverNotifications() if(!grps_copy.empty()) mObserver->notifyNewGroups (grps_copy); if(!msgs_copy.empty()) mObserver->notifyNewMessages(msgs_copy); - for(std::set::const_iterator it(keys_copy.begin());it!=keys_copy.end();++it) mObserver->notifyReceivePublishKey(*it); - for(std::set::const_iterator it(stat_copy.begin());it!=stat_copy.end();++it) mObserver->notifyChangedGroupStats(*it); + for(std::set::const_iterator it(keys_copy.begin());it!=keys_copy.end();++it) + mObserver->notifyReceivePublishKey(*it); + + for(std::set::const_iterator it(stat_copy.begin());it!=stat_copy.end();++it) + mObserver->notifyChangedGroupStats(*it); } void RsGxsNetService::rejectMessage(const RsGxsMessageId& msg_id) @@ -4756,6 +4761,7 @@ void RsGxsNetService::handleRecvPublishKeys(RsNxsGroupPublishKeyItem *item) #ifdef NXS_NET_DEBUG_3 GXSNETDEBUG_PG(item->PeerId(),item->grpId)<< " (EE) Publish key already present in database. Discarding message." << std::endl; #endif + mNewPublishKeysToNotify.insert(item->grpId) ; return ; } diff --git a/libretroshare/src/gxstunnel/p3gxstunnel.cc b/libretroshare/src/gxstunnel/p3gxstunnel.cc index 62e026393..eef365230 100644 --- a/libretroshare/src/gxstunnel/p3gxstunnel.cc +++ b/libretroshare/src/gxstunnel/p3gxstunnel.cc @@ -143,7 +143,10 @@ void p3GxsTunnelService::flush() for(std::list::iterator it=pendingDHItems.begin();it!=pendingDHItems.end();) if(locked_sendClearTunnelData(*it) ) + { + delete *it ; it = pendingDHItems.erase(it) ; + } else ++it ; } @@ -155,7 +158,10 @@ void p3GxsTunnelService::flush() for(std::list::iterator it=pendingGxsTunnelItems.begin();it!=pendingGxsTunnelItems.end();) if(locked_sendEncryptedTunnelData(*it) ) + { + delete *it ; it = pendingGxsTunnelItems.erase(it) ; + } else { ++it ; @@ -744,6 +750,8 @@ void p3GxsTunnelService::receiveTurtleData(RsTurtleGenericTunnelItem *gitem,cons } else std::cerr << "(EE) Deserialiased item has unexpected type." << std::endl; + + delete citem ; } } diff --git a/libretroshare/src/pgp/rscertificate.cc b/libretroshare/src/pgp/rscertificate.cc index 2088f020f..70a00328f 100644 --- a/libretroshare/src/pgp/rscertificate.cc +++ b/libretroshare/src/pgp/rscertificate.cc @@ -360,8 +360,9 @@ bool RsCertificate::initFromString(const std::string& instr,uint32_t& err_code) } break ; default: - err_code = CERTIFICATE_PARSING_ERROR_UNKNOWN_SECTION_PTAG ; - return false ; + std::cerr << "(WW) unknwown PTAG 0x" << std::hex << ptag << std::dec << " in certificate! Ignoring it." << std::endl; + buf = &buf[s] ; + break ; } total_s += s ; diff --git a/libretroshare/src/retroshare/rsversion.h b/libretroshare/src/retroshare/rsversion.h index 09d437d85..d194024d7 100644 --- a/libretroshare/src/retroshare/rsversion.h +++ b/libretroshare/src/retroshare/rsversion.h @@ -1,6 +1,6 @@ #define RS_MAJOR_VERSION 0 #define RS_MINOR_VERSION 6 -#define RS_BUILD_NUMBER 3 +#define RS_BUILD_NUMBER 4 #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: // git log --pretty="%H" | head -1 | cut -c1-8 diff --git a/libretroshare/src/retroshare/rsversion.in b/libretroshare/src/retroshare/rsversion.in index 2a9b07142..4449dbe12 100644 --- a/libretroshare/src/retroshare/rsversion.in +++ b/libretroshare/src/retroshare/rsversion.in @@ -1,6 +1,6 @@ #define RS_MAJOR_VERSION 0 #define RS_MINOR_VERSION 6 -#define RS_BUILD_NUMBER 3 +#define RS_BUILD_NUMBER 4 #define RS_BUILD_NUMBER_ADD "" // The revision number should be the 4 first bytes of the git revision hash, which is obtained using: diff --git a/libretroshare/src/util/rstime.cc b/libretroshare/src/util/rstime.cc index 067466d65..9733ac55d 100644 --- a/libretroshare/src/util/rstime.cc +++ b/libretroshare/src/util/rstime.cc @@ -26,8 +26,8 @@ #include #include #include -#include #include + #include "rstime.h" namespace rstime { diff --git a/retroshare-gui/src/gui/Identity/IdDialog.cpp b/retroshare-gui/src/gui/Identity/IdDialog.cpp index d901c813d..71bf7be40 100644 --- a/retroshare-gui/src/gui/Identity/IdDialog.cpp +++ b/retroshare-gui/src/gui/Identity/IdDialog.cpp @@ -2608,9 +2608,10 @@ void IdDialog::sendInvite() 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->inviteButton->setEnabled(false); } diff --git a/retroshare-gui/src/gui/NewsFeed.cpp b/retroshare-gui/src/gui/NewsFeed.cpp index 93ba2fc13..45c8c1cb6 100644 --- a/retroshare-gui/src/gui/NewsFeed.cpp +++ b/retroshare-gui/src/gui/NewsFeed.cpp @@ -58,24 +58,6 @@ #include "common/FeedNotify.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 TOKEN_TYPE_GROUP 1 @@ -281,20 +263,20 @@ void NewsFeed::updateDisplay() mTokenQueueChannel = new TokenQueue(rsGxsChannels->getTokenService(), instance); } - RsGxsGroupId grpId(fi.mId1); - if (!grpId.isNull()) { - RsTokReqOptions opts; - opts.mReqType = GXS_REQUEST_TYPE_GROUP_DATA; + addFeedItemChannelPublishKey(fi); - std::list grpIds; - grpIds.push_back(grpId); - - uint32_t token; - mTokenQueueChannel->requestGroupInfo(token, RS_TOKREQ_ANSTYPE_SUMMARY, opts, grpIds, TOKEN_TYPE_PUBLISHKEY); - } +// RsGxsGroupId grpId(fi.mId1); +// if (!grpId.isNull()) { +// RsTokReqOptions opts; +// opts.mReqType = GXS_REQUEST_TYPE_GROUP_DATA; +// +// std::list 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; case RS_FEED_ITEM_FORUM_NEW: @@ -769,6 +751,14 @@ void NewsFeed::loadChannelPublishKey(const uint32_t &token) #ifdef UNUSED_CODE MessageComposer::sendChannelPublishKey(groups[0]); #endif + + RsGxsChannelGroup& grp = *groups.begin(); + + RsFeedItem fi; + fi.mId1 = grp.mMeta.mGroupId.toStdString(); + + + addFeedItemChannelPublishKey(fi); } void NewsFeed::loadForumGroup(const uint32_t &token) @@ -863,6 +853,8 @@ void NewsFeed::loadForumPublishKey(const uint32_t &token) #ifdef UNUSED_CODE MessageComposer::sendForumPublishKey(groups[0]); #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) @@ -1357,6 +1349,24 @@ void NewsFeed::addFeedItemChannelMsg(const RsFeedItem &fi) /* add to layout */ 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 std::cerr << "NewsFeed::addFeedItemChanMsg()"; std::cerr << std::endl; diff --git a/retroshare-gui/src/gui/NewsFeed.h b/retroshare-gui/src/gui/NewsFeed.h index 9fceaf486..258702d78 100644 --- a/retroshare-gui/src/gui/NewsFeed.h +++ b/retroshare-gui/src/gui/NewsFeed.h @@ -30,6 +30,25 @@ #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 { class NewsFeed; } @@ -102,6 +121,7 @@ private: void addFeedItemChannelNew(const RsFeedItem &fi); // void addFeedItemChannelUpdate(const RsFeedItem &fi); void addFeedItemChannelMsg(const RsFeedItem &fi); + void addFeedItemChannelPublishKey(const RsFeedItem &fi); void addFeedItemForumNew(const RsFeedItem &fi); // void addFeedItemForumUpdate(const RsFeedItem &fi); diff --git a/retroshare-gui/src/gui/chat/ChatWidget.ui b/retroshare-gui/src/gui/chat/ChatWidget.ui index e9e1e0bfe..9ea7277ef 100644 --- a/retroshare-gui/src/gui/chat/ChatWidget.ui +++ b/retroshare-gui/src/gui/chat/ChatWidget.ui @@ -578,12 +578,6 @@ border-image: url(:/images/closepressed.png) Send - - <html><head/><body><p>QToolButton:disabled {</p><p> image: url(:/icons/png/send-message-blocked.png) ;</p><p>}</p><p><br/></p></body></html> - - - - :/icons/png/send-message.png:/icons/png/send-message.png diff --git a/retroshare-gui/src/gui/connect/ConnectFriendWizard.ui b/retroshare-gui/src/gui/connect/ConnectFriendWizard.ui index 181b164c0..6a1fd816f 100644 --- a/retroshare-gui/src/gui/connect/ConnectFriendWizard.ui +++ b/retroshare-gui/src/gui/connect/ConnectFriendWizard.ui @@ -6,8 +6,8 @@ 0 0 - 1161 - 1223 + 760 + 538 diff --git a/retroshare-gui/src/gui/feeds/GxsChannelGroupItem.cpp b/retroshare-gui/src/gui/feeds/GxsChannelGroupItem.cpp index 26f4ad160..9d80244c6 100644 --- a/retroshare-gui/src/gui/feeds/GxsChannelGroupItem.cpp +++ b/retroshare-gui/src/gui/feeds/GxsChannelGroupItem.cpp @@ -23,6 +23,7 @@ #include "ui_GxsChannelGroupItem.h" #include "FeedHolder.h" +#include "gui/NewsFeed.h" #include "gui/RetroShareLink.h" /**** @@ -144,14 +145,14 @@ void GxsChannelGroupItem::fill() ui->subscribeButton->setEnabled(true); } -// if (mIsNew) -// { - ui->titleLabel->setText(tr("New Channel")); -// } -// else -// { -// ui->titleLabel->setText(tr("Updated Channel")); -// } + switch(mFeedId) + { + case NEWSFEED_CHANNELPUBKEYLIST: ui->titleLabel->setText(tr("Publish permission received for channel: ")); + break ; + + case NEWSFEED_CHANNELNEWLIST: ui->titleLabel->setText(tr("New Channel: ")); + break ; + } if (mIsHome) { diff --git a/retroshare-gui/src/gui/feeds/MsgItem.cpp b/retroshare-gui/src/gui/feeds/MsgItem.cpp index 8bed391bd..97570a537 100644 --- a/retroshare-gui/src/gui/feeds/MsgItem.cpp +++ b/retroshare-gui/src/gui/feeds/MsgItem.cpp @@ -370,9 +370,9 @@ void MsgItem::sendInvite() if (!rsMail->getMessage(mMsgId, mi)) 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) - { - MessageComposer::sendInvite(mi.rsgxsid_srcId); - } + //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,false); + //} } diff --git a/retroshare-gui/src/gui/feeds/MsgItem.ui b/retroshare-gui/src/gui/feeds/MsgItem.ui index a14bfedd7..d273f935d 100644 --- a/retroshare-gui/src/gui/feeds/MsgItem.ui +++ b/retroshare-gui/src/gui/feeds/MsgItem.ui @@ -442,7 +442,7 @@ - You get Invite, accept request and send your own Certificate back + This message invites you to make friend! You may accept this request and send your own Certificate back diff --git a/retroshare-gui/src/gui/msgs/MessageComposer.cpp b/retroshare-gui/src/gui/msgs/MessageComposer.cpp index c7b21df03..a402ee3b9 100644 --- a/retroshare-gui/src/gui/msgs/MessageComposer.cpp +++ b/retroshare-gui/src/gui/msgs/MessageComposer.cpp @@ -2775,12 +2775,12 @@ QString MessageComposer::inviteMessage() return tr("Hi,
I want to be friends with you on RetroShare.
"); } -void MessageComposer::sendInvite(const RsGxsId &to, const QString &/*msg*/, bool autoSend) +void MessageComposer::sendInvite(const RsGxsId &to, bool autoSend) { /* create a message */ MessageComposer *composer = MessageComposer::newMsg(); - composer->setTitleText(tr("You have a friend invite")); + composer->setTitleText(tr("Invite message")); composer->msgFlags |= RS_MSG_USER_REQUEST; @@ -2803,8 +2803,8 @@ void MessageComposer::sendInvite(const RsGxsId &to, const QString &/*msg*/, bool return; } } - - //composer->show(); + else + composer->show(); /* window will destroy itself! */ } diff --git a/retroshare-gui/src/gui/msgs/MessageComposer.h b/retroshare-gui/src/gui/msgs/MessageComposer.h index 6dddf17ff..1891c0312 100644 --- a/retroshare-gui/src/gui/msgs/MessageComposer.h +++ b/retroshare-gui/src/gui/msgs/MessageComposer.h @@ -64,7 +64,7 @@ public: static QString recommendMessage(); static void recommendFriend(const std::set &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 sendInvite(const RsGxsId &to = RsGxsId(), const QString &msg = "", bool autoSend = true); + static void sendInvite(const RsGxsId &to, bool autoSend); #ifdef UNUSED_CODE static void sendChannelPublishKey(RsGxsChannelGroup &group); static void sendForumPublishKey(RsGxsForumGroup &group); diff --git a/retroshare-gui/src/gui/msgs/MessageWidget.cpp b/retroshare-gui/src/gui/msgs/MessageWidget.cpp index 38319bafc..8fbf30039 100644 --- a/retroshare-gui/src/gui/msgs/MessageWidget.cpp +++ b/retroshare-gui/src/gui/msgs/MessageWidget.cpp @@ -789,9 +789,9 @@ void MessageWidget::sendInvite() if (!rsMail->getMessage(currMsgId, mi)) 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) - { - MessageComposer::sendInvite(mi.rsgxsid_srcId); - } + //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,false); + //} } diff --git a/retroshare-gui/src/gui/msgs/MessageWidget.ui b/retroshare-gui/src/gui/msgs/MessageWidget.ui index 3ec22c157..aece924af 100644 --- a/retroshare-gui/src/gui/msgs/MessageWidget.ui +++ b/retroshare-gui/src/gui/msgs/MessageWidget.ui @@ -415,7 +415,7 @@ - You get Invite, accept request and send your own Certificate back + You got an invite to make friend! You may accept this request and send your own Certificate back diff --git a/retroshare.pri b/retroshare.pri index b0e0b3283..54fd2da11 100644 --- a/retroshare.pri +++ b/retroshare.pri @@ -94,7 +94,7 @@ rs_async_chat:CONFIG -= no_rs_async_chat # To select your MacOsX version append the following assignation to qmake # 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.9:CONFIG -= rs_macos10.11 rs_macos10.10:CONFIG -= rs_macos10.11