Commit Graph

632 Commits

Author SHA1 Message Date
Gioacchino Mazzurco
df87fe53b1
Cleanup RsThread and related classes
Removed antipattern abstraction RsSingleJobThread
Rename runloop() method to run() in RsThread
Ported few classes ineriting from RsSingleJobThread to RsThread
RsThread use std::atomic instead of self implemented strange binary semaphores
Removed RsTickingThread::shutdown() use RsThread::askForStop() instead
Removed RsTickingThread::fullstop() use RsThread::fullstop() instead
Stop properly JSON API server in retroshare-gui
Centralize errno traslation to literal in util/rserrno.*
2019-12-30 10:38:54 +01:00
Gioacchino Mazzurco
3bb42ca799
Fix wrong rapidjson include on Appveyor 2019-11-28 01:38:49 +01:00
Gioacchino Mazzurco
1d4ca64dee
Prepare for merging 2019-11-27 18:44:10 +01:00
csoler
7aa51423a4
fixes required by review of pr1700 2019-11-25 22:16:32 +01:00
G10h4ck
f5bf093409
Merge pull request #1696 from G10h4ck/modern_cpp
Take advantage of modern C++ features
2019-11-21 17:46:53 +01:00
Gioacchino Mazzurco
056904c90b
Improve RsUrl
Fix a bug in RsUrl::fromString eating one character when parsing URL
  string with IPv6 host
Offer explicit conversion from sockaddr_storage
2019-11-11 11:17:13 +01:00
Gioacchino Mazzurco
7697a57611
Backport rs_unique_cast from grouter_missing_key branch 2019-11-07 19:54:11 +01:00
Gioacchino Mazzurco
05260ace94
Backport as_const C++17 helper
This is expecially useful to use const_iterator without giving up on
  using auto keyword
2019-11-07 19:51:25 +01:00
csoler
9b78447109
used RsInfo instead of std::cerr in authssl.cc 2019-09-22 17:36:08 +02:00
csoler
4f4b3bfcdb
Merge pull request #1624 from csoler/v0.6-RetroshareService
V0.6 retroshare service
2019-09-09 10:33:18 +02:00
csoler
6419b03a2a
merged upstream/master 2019-09-08 20:35:23 +02:00
csoler
5b5ad6e6f6
added missing iostream for windows 2019-09-07 13:40:45 +02:00
csoler
f182b358f4
fixed compilation in new getpass method 2019-09-06 22:51:10 +02:00
csoler
c365a96489
moved getpass() method into a cross-plateform file rskbdinput.h/cc 2019-09-05 23:54:48 +02:00
G10h4ck
06a158e677
Merge pull request #1628 from G10h4ck/gxs_sqlite_sqlcipher_compat
Improve SQLCipher/SQLite support
2019-09-02 16:28:26 +02:00
Gioacchino Mazzurco
6edf503ae0
Improve SQLCipher/SQLite support
When compiled with SQLCipher it is now capable of handling databases
  created by SQLite-only versions
Add support for SQLCipher on Android arm64
2019-08-31 16:22:24 +02:00
csoler
1bf07f72c4
added destructor in RsTickingThread calling for fullstop, which prevents the crash due to threads being killed when still running 2019-08-30 21:47:17 +02:00
csoler
7d9db1fc22
added destructor in RsTickingThread calling for fullstop, which prevents the crash due to threads being killed when still running 2019-08-30 21:44:05 +02:00
Gioacchino Mazzurco
3820e324b0
Implement stracktrace for Android
Tested both on armeabi and arm64
2019-08-23 11:49:26 +02:00
csoler
56e591f728
added a flag in peerState specific to short invites, and several checks for consistency 2019-05-22 21:46:11 +02:00
csoler
2748275397
changed std::cerr to the new RsErr() method 2019-05-12 11:00:33 +02:00
csoler
1cee069243
added warning when deleting a thread that isnot finished 2019-05-12 10:46:08 +02:00
csoler
7b2541e35c
fixed thread bug caused by deleting a thread before it is actually terminated 2019-05-11 23:43:54 +02:00
csoler
6a18e242bb
added compile option to use sanitizer and already fixed a few misalignment errors with it 2019-05-11 22:25:02 +02:00
Gioacchino Mazzurco
e655d4d257
Use RsRandom name also inside windows #ifdef 2019-05-01 20:42:19 +02:00
Gioacchino Mazzurco
6ca85ca7b6
Cleanup RsRandom
Rename RSRandom -> RsRandom for consistency
Cleanup documentation to use Doxygen format
Solve a bunch of compiler warning (there are still a lot)
2019-04-28 14:06:52 +02:00
Gioacchino Mazzurco
3feb048c37
Add sockaddr_storage ostream operator<< for comfortable debugging 2019-04-28 13:38:16 +02:00
Gioacchino Mazzurco
79af081f84
Introduce RetroShare logging helpers
Support for chaining like std::cerr
Support for compile-time optimization without #ifdef around
Support for Android native logging without depending on
  AndroidStdIOCatcher workaround
Support for automatic timestamp (on Android it's provided by Android
  native log)
Standardized messages categories
2019-04-28 02:31:44 +02:00
Gioacchino Mazzurco
d113f60ca1
RsUrl add method to test presence and get fields from query 2019-04-27 23:48:15 +02:00
Gioacchino Mazzurco
9c7a8d479f
Pass initialization value in RS_DEFAULT_STORAGE_PARAM 2019-04-15 00:09:01 +02:00
Gioacchino Mazzurco
7b38c1c75a
Initial work on Broadcast Domain Discovery
Discover peers on the same broadcast domain/LAN
Implements own node announcement
Implements others announcement listening
Implements API to get notifiend when other nodes get discovered
Implements API to get discovered nodes
Add discovered peer locator to rsPeers if it is already friend

Yet a bunch of things to do to take full advantage of this new
implementation
2019-04-12 02:53:39 +02:00
G10h4ck
276328dd91
Merge pull request #1512 from G10h4ck/csoler-jsonapi-channel
Improve GxsChannels API
2019-04-11 10:13:52 +02:00
Gioacchino Mazzurco
9ad79f0c89
Improve documentation 2019-04-10 21:10:21 +02:00
zapek
3f8611f40f the cache is corrected and saved 2019-04-06 00:15:01 +02:00
Gioacchino Mazzurco
ab80d9a374
Fix compilation, retrocompatibility and enums
Workaround miss-behaviour on old Android phones
Cleanup indentation a bit
Consistent param naming
Introduce default parameter values also for output paramethers
2019-04-05 01:43:23 +02:00
Gioacchino Mazzurco
7a2c81d06b
Deprecate rs_usleep as it is not useful anymore
C++11 standard library offer better functions
2019-02-13 17:07:03 -03:00
csoler
a802e494f8
Merge pull request #1401 from G10h4ck/forum_api
0.6.5 Safer forum API
2018-11-20 21:45:45 +01:00
csoler
8c8ce53e4b
Merge pull request #1385 from G10h4ck/safer_api
0.6.5 Safer rsGxsChannel API
2018-11-20 21:44:40 +01:00
csoler
630609c11c
fixed retroshare.project email in licenses 2018-11-11 20:42:48 +01:00
Gioacchino Mazzurco
b8d2d9cade
Print stack trace on crash 2018-11-11 14:25:44 +01:00
csoler
9c3d5acd8e
fixed license in libretroshare 2018-11-11 14:24:48 +01:00
Gioacchino Mazzurco
f84824271f
Implement ostream operator<< for RsSerializable
So it is not necessary to define it for each class we want to print in
  debug
2018-11-10 16:24:47 +01:00
Gioacchino Mazzurco
f6b22d25da
Fix typo in documentation 2018-11-09 12:41:09 +01:00
Gioacchino Mazzurco
ea86fe2615
Safer RsGxsChannel API
Deprecated old method which exposed interna async mechanism to the API
  users, making their and out life difficult
Things that really need to be async like turtle search/requests now accept
  callbacks, so the caller can be notified everytime some result is got
  back
Implement RsThread::async commodity wrapper to execute blocking API
  calls without blocking the caller, this could be optimized
  trasparently using a thread pool if necessary
Added hints into some retroshare-gui files on how to use RsThread::async
  thoghether with QMetaObject::invokeMethod and blocking RetroShare API
  to simplyfy interaction between GUI and libretroshare
2018-11-09 12:41:08 +01:00
Gioacchino Mazzurco
c4cbcf78f3
Fix DNS resolution for hostnames that has also AAAA record
rsGetHostByName doesn't support IPv6 addresses.
Before this commit when
an hostname had both AAAA and A record rsGetHostByName retrurned success
but with 0.0.0.0 invalid address. As rsGetHostByName is not capable of
handling IPv6 (fixing it would require API change and a bunch of
refactors around) just avoid to receive IPv6 addresses on resolition, so
the correct IPv4 address is returned if present, otherwise fail
gracefully (A record not found).
2018-11-08 13:23:06 +01:00
Gioacchino Mazzurco
81cad2ab02
Fix missing include 2018-11-05 14:02:44 +01:00
Gioacchino Mazzurco
c0ca1a5aad
Print stack trace on crash 2018-11-05 00:19:45 +01:00
csoler
eb078d462e
added more info to deserialization warning in rsrecogn 2018-11-01 21:42:07 +01:00
Gioacchino Mazzurco
7a1375ff6f
rsPeers add few JSON API calls 2018-10-20 21:13:10 +02:00
G10h4ck
03cdd6c7b6
Merge pull request #1363 from G10h4ck/jsonapi
New cross-platform target retroshare-service
2018-10-16 16:06:09 +02:00
thunder2
6e1de5b5ed Fixed Windows compile with MinGW 2018-10-14 15:28:20 +02:00
G10h4ck
047ae7f723
Merge branch 'master' into jsonapi 2018-10-10 22:23:28 +02:00
csoler
09b109d522
Merge pull request #1364 from G10h4ck/safer_time
Use safer rstime_t instead of time_t
2018-10-10 22:03:51 +02:00
Gioacchino Mazzurco
ddf3164545
Fix ctime(&rstime_t) error on windows
rstime_t not neccesary in those cases so use plain time_t instead
2018-10-07 14:41:13 +02:00
Gioacchino Mazzurco
329050a9c2
Use safer rstime_t instead of time_t
Avoid problems to serialization on different platforms, without breaking
nested STL containers serialization.

The conversion have been made with sed, and checked with grep, plus
kdiff3 visual ispection, plus rutime tests, so it should be fine.
2018-10-07 13:07:06 +02:00
csoler
4de0498208
fixed bad signature checking code for config files 2018-10-05 16:54:36 +02:00
Gioacchino Mazzurco
e6e5700ed6
Fix warning caused by clang defining _GNUC_ 2018-10-03 19:07:46 +02:00
Gioacchino Mazzurco
0078501dba
Initial work on a RetroShare cross-platform service
This doesn't need any interacion of the user at startup, unlike
retroshare-nogui which requires the user to login on the shell this doesn't
even need a TTY.
At startup this just parse command line, read the PGP keyring, look for
available locations, and start listening for JSON API requests.
Another difference with retroshare-nogui is that this is capable to
generate/import PGP identities, generate locations, and in general anything
possible through the RetroShare API.
retroshare-service is suitable also to run it as a system service, even
in very constrained systems such as Android ot a Docker container.
retroshare-service drop support for libresapi so only the new JSON API
is exposed, it will completely obsolete retroshare-android-service once
retroshare-qml-app is ported to the new JSON API.
2018-09-29 00:15:10 +02:00
Gioacchino Mazzurco
92f90178c4
RS version is now parametrizable at compile time
Avoid the need of dirty patching to set the version at build time
In case RS version is not passed as argument attempt to determine it
  using git describe, if unavailable use hardcoded default
2018-09-12 10:49:36 +02:00
csoler
c294971633
Merge pull request #1289 from G10h4ck/jsonapi
Implement automatic JSON API generation
2018-08-28 19:11:08 +02:00
sehraf
9557a5246e
remove unnecessary locking, print log entries also to stdout 2018-08-25 17:54:34 +02:00
Gioacchino Mazzurco
396fe49312
Merge branch 'master' into jsonapi 2018-08-22 16:59:42 +02:00
Gioacchino Mazzurco
4b6f751b09
Implement JSON API generation for async API calls
Move JSON helpers to util/rsjson.* for better usability
Implement JSON ostream manipulator to print compact and pretty JSON
Use lambdas for API wrappers, integrate better and avoid namespace
  pollution
Removed experimental JSON API for notify client wrapper, notifications
  can be implemented automatically with moderns async API calls
Implement and automatically expose to JSON API
  RsGxsChannels::turtleSearchRequest(
        const std::string& matchString,
        const std::function<void (const RsGxsGroupSummary&)>& multiCallback,
        std::time_t maxWait )
2018-08-16 23:48:21 +02:00
csoler
cc51298de6
fixed warning about badly overloaded function in rsexpr.h 2018-08-02 14:13:14 +02:00
csoler
c948517c3d
Merge pull request #1306 from csoler/v0.6-TorOnly
V0.6 tor only
2018-07-31 14:18:24 +02:00
csoler
1297d2e106
fixed double calls to pthread_exit() (one being implicit after return from main thread method) -- patch from sss 2018-07-30 10:50:32 +02:00
csoler
0f758902cd
started cleaning the mess with rsAccounts: only exposed useful functionality of rsAccount beyond a static class and removed all references to rsAccounts in the code 2018-07-24 23:47:32 +02:00
csoler
6848a586f3
merged upstream/master 2018-07-08 21:17:48 +02:00
Gioacchino Mazzurco
1dd707710b
Merge branch 'master' into extra_locators_merge 2018-07-02 12:22:23 +02:00
csoler
8641da189c
relicensed util/ and moved rsaes to crypto/ 2018-05-30 21:34:38 +02:00
csoler
858dcfc14c
removed unused tempering in random number generator, added comments and license text 2018-05-30 21:19:53 +02:00
csoler
6cf2090149
relicensed tcponudp, turtle, unused, upnp, and part of util/ 2018-05-30 21:19:13 +02:00
Gioacchino Mazzurco
f20705b36d
Workaround for systems that miss IPV6_V6ONLY
This should improve compatibility with old systems that miss
IPV6_V6ONLY and in particular for Windows XP
2018-04-15 12:32:39 +02:00
csoler
73c6deebf4
Merge pull request #1191 from G10h4ck/IPv6-v3
IPv6 support
2018-03-27 20:54:31 +02:00
Gioacchino Mazzurco
bed856425f
Share additional addresses via RsCertificate 2018-03-03 00:08:56 +01:00
Gioacchino Mazzurco
8542abd4f0
Few fixes in RsUrl 2018-03-02 20:08:50 +01:00
Gioacchino Mazzurco
518df99243
Merge branch 'master' into extra_locators 2018-03-02 19:31:37 +01:00
Gioacchino Mazzurco
923c383a13
Add naif URL manipulation class RsUrl
Use RsUrl to convert sockaddre_storage from/to string
2018-03-02 19:20:56 +01:00
Gioacchino Mazzurco
f5160338ed
sockaddr_storage_familytostring be quite if not debugging 2018-02-25 13:18:34 +01:00
Gioacchino Mazzurco
9a446fc1ff
Fix compilation for Android 2018-02-25 11:28:26 +01:00
Gioacchino Mazzurco
4a138e07b9
Implement IPv6 listening
With this commit IPv6-v3 surpass v0.6-IPv6-2 in term of features
  obsoleting it.
p3BitDht handle gracefully unwanted non IPv4 addresses
rsUdpStack handle gracefully unwanted non IPv4 addresses
pqissludp handle gracefully unwanted non IPv4 addresses
Move single address limitation workaround from
  p3discovery2::sendOwnContactInfo to better
  place p3PeerMgrIMPL::UpdateOwnAddress this way local address list is
  queried less often and only id there is some suggestion that it may
  have changed (probably ir will not be called all the times there is a
  changes in local network interfaces but is good enough)
Implement crossplatform rs_setsockopt to avoid too much ifdef around
Implement sockaddr_storage_copy to safely copy sockaddr_storage objects
2018-02-24 17:14:49 +01:00
Gioacchino Mazzurco
b3c7d195c8
Port pqissl to dual stack IPv6+IPv4
Changed unix_connect signature to be more comfortable for dual stack
  usage
Remove dead code in pqissl::pqissl(...)
Adapt p3I2pBob::connectI2P() to new unix_connect
Adapt extaddrfinder to new unix_connect
Add sockaddr_storage_ipv4_to_ipv6 to convert from flat IPv4 to IPv4
  mapped as IPv6
2018-02-24 14:29:56 +01:00
Gioacchino Mazzurco
0c99975800
Use link local address only if necessary
This should solve APIPA address being always selected as preferred local
address on Windows which was causing problems connecting to machines on
the same local network.
Now the link local address is used as fallback only if there is non link
local private address available.
2018-02-19 23:23:15 +01:00
csoler
8f7582588a fixed windows compilation 2018-01-27 20:59:11 +01:00
csoler
d0039241d3 replaced usleep() by rstime::rs_usleep() which accepts times >= 1 sec. Should fix problems on windows 2018-01-27 20:22:31 +01:00
csoler
122f6af30a fixed compilation on ubuntu precise 2017-12-24 11:06:03 +01:00
csoler
99e35b131c rename file in partials into real name before moving it; check for destination directory before moving file 2017-12-16 15:04:16 +01:00
csoler
7472f78223 added sha256 calculation functions, and non backward compatible SSL Id computation code to active later (0.7) 2017-11-15 23:24:43 +01:00
csoler
ba7cf4995b
Merge pull request #1037 from RetroPooh/searchspy
Searchspy
2017-11-14 20:53:24 +01:00
RetroPooh
919d6503d7 in search strings change comma to space for better look 2017-11-14 16:09:05 +03:00
csoler
5fab053fb8 added toStdString() method to search strings so as to display what is searched 2017-11-13 23:37:53 +01:00
csoler
3bb694f439 added display of hashing speed. Changed hashing buffer size to 10MB to improve performance 2017-10-29 21:24:34 +01:00
RetroPooh
41251fdd9e search spy 2017-09-15 15:03:06 +03:00
Gioacchino Mazzurco
541b1ea498 Introduce C++11 compatibility macro for gcc < 4.6 2017-07-31 18:26:51 +02:00
csoler
286e7e0b1a Merge pull request #961 from csoler/v0.6.3
V0.6.3
2017-07-26 14:01:28 +02:00
csoler
461ccf3b84 removed aliasing in storeMessages/storeGroups, removed several memory leaks in unittests, improved auto-delete structures in rsgxsutil, added deletion for members of RsGenExchange, removed shared pointers from unittests (they cause a memory leak and are only used in unittests) 2017-07-25 00:07:53 +02:00
Phenom
2afc1bf423 Fix CppCheck Error in contentvalue.cc
/libretroshare/src/util/contentvalue.cc:189: error: Cppcheck(memleak):
Memory leak: dest
2017-07-21 15:04:34 +02:00
Phenom
f888913800 Set Operating Mode in RsInit::InitRetroShare so noGUI could use it. 2017-07-17 15:40:14 +02:00
Phenom
b11022a239 Fix warning: this statement may fall through
/libretroshare/src/util/dnsresolver.cc:49: warning: this statement may
fall through [-Wimplicit-fallthrough=]
       case DNSResolver::DNS_LOOKUP_ERROR:  if(it-
>second.last_lookup_time + MAX_TIME_BEFORE_RETRY > now)
/libretroshare/src/util/dnsresolver.cc:52: here
       case DNSResolver::DNS_DONT_HAVE:   next_call = it->first ;
2017-07-16 20:38:43 +02:00
Phenom
0e302e254e Fix warning: this statement may fall through
/libretroshare/src/util/rsnet_ss.cc:1031: warning: this statement may
fall through [-Wimplicit-fallthrough=]
   success = inet_ntop( addr.ss_family, (const void *) &(addrv4p-
>sin_addr), ipStr, INET_ADDRSTRLEN );
/libretroshare/src/util/rsnet_ss.cc:1033: here
  case AF_INET6:
2017-07-16 20:36:16 +02:00