Commit Graph

69 Commits

Author SHA1 Message Date
Gioacchino Mazzurco
4a34cfaf11
Improve API to create locations
Improve on top of sehraf work, add documentation for API token params
Deprecate old version and disable it once RS 0.6.6 is released
New method take relevant paramethers explicitely instead of having them
  incapsualted inside a RsLoginHelper::Location struct
New method return a proper error_condition instead of boolean + string
RsLoginHelper::attemptLogin doesn't need manual wrapper anymore
2020-06-09 20:13:22 +02:00
G10h4ck
f456389580
Merge pull request #2006 from sehraf/pr_remove_rs_pw_as_token
remove retroshare password from json tokens
2020-06-09 16:19:11 +02:00
sehraf
878111d224
remove password from json tokens 2020-06-06 22:28:54 +02:00
Gioacchino Mazzurco
aef87fb1f8
Multiple improvements in debugging helpers
Add variadic style macro helpers that make debugging code disappear completely
  (also the paramethers evaluation) when debugging level is lower
Chained style << is now atomic like variadic style, still can't benefit
  of paramethers eveluation stripping
Reduced to minimum the difference between Android and other platform
  debugging code
Port debugging code to new helpers, expecially a few corner cases to
  test it, and as examples of how to use it.
2020-06-01 00:53:58 +02:00
Gioacchino Mazzurco
0c3fd6f27c
Explicit type as requested by Cyril 2020-04-14 12:24:58 +02:00
Gioacchino Mazzurco
b701ca8da3
Keep 10 extra unassigned slots for event types
Proper error reporting + cruft removal
2020-04-14 12:24:58 +02:00
Gioacchino Mazzurco
4c0baa1ec3
Fix JSON API event handler registering behavior
As a bonus the behaviour is now homogeneous between C++ API and JSON API
Fix a bunch of compiler warning
RsEvents implementation is now safer
mHandlerMaps size is known at compile time, so use an std::array instead
  of vector
2020-04-14 12:24:57 +02:00
Gioacchino Mazzurco
5610cc8600
Fix memory management and deprecated removal from serialization
Fix missing RsDiscPgpKeyItem initialization
Fix inconsistent new[]/delete[] usage in RsDiscPgpKeyItem and
  PGPHandler::exportPublicKey which now consistently uses malloc/free
Remove deprecated RsGenericSerializer::FORMAT_*
Move from deprecated RsServiceSerializer::SERIALIZATION_FLAG_* to
  RsSerializationFlags
Solve a bunch of compiler warnings
Stricter checks in SerializeContext costructor
2020-04-14 12:17:01 +02:00
Gioacchino Mazzurco
b62b3ec54b
Fix crash on Android due to dangling reference
JSON API debug lambda returned a dangling reference on Android, fix by
  moving the scope of the returned object
What made this a bit tricky to understand was the fact that it happened
only on Android, while the code was formally incorrect for all
platforms, and strangely caused a stack overflow due to two std lib
functions (sentry and flush) calling each other ad infinitum

+#23379 0x603cb2a8 in std::__ndk1::basic_ostream<char, std::__ndk1::char_traits<char> >::flush (this=0x618e92bc) at /opt/android-ndk/sources/cxx-stl/llvm-libc++/include/ostream:949
+#23380 0x603cad08 in std::__ndk1::basic_ostream<char, std::__ndk1::char_traits<char> >::sentry::sentry (this=0x618e9284, __os=...) at /opt/android-ndk/sources/cxx-stl/llvm-libc++/include/ostream:270
+#23381 0x603cb2a8 in std::__ndk1::basic_ostream<char, std::__ndk1::char_traits<char> >::flush (this=0x618e92bc) at /opt/android-ndk/sources/cxx-stl/llvm-libc++/include/ostream:949
+#23382 0x603cad08 in std::__ndk1::basic_ostream<char, std::__ndk1::char_traits<char> >::sentry::sentry (this=0x618e9304, __os=...) at /opt/android-ndk/sources/cxx-stl/llvm-libc++/include/ostream:270
+#23383 0x603caa6c in std::__ndk1::__put_character_sequence<char, std::__ndk1::char_traits<char> > (__os=..., __str=0x61379a60 " user: ", __len=7) at /opt/android-ndk/sources/cxx-stl/llvm-libc++/include/ostream:726
+#23384 0x603caa30 in std::__ndk1::operator<< <std::__ndk1::char_traits<char> > (__os=..., __str=0x61379a60 " user: ") at /opt/android-ndk/sources/cxx-stl/llvm-libc++/include/ostream:869
+#23385 0x60522184 in t_RsLogger<(RsLoggerCategories)5>::operator<< <char [8]> (this=0x618e92bc, val=...) at ../../../../Development/rs-develop/libretroshare/src/util/rsdebug.h:53
+#23386 0x60bbe5ec in JsonApiServer::registerHandler(std::__ndk1::basic_string<char, std::__ndk1::char_traits<char>, std::__ndk1::allocator<char> > const&, std::__ndk1::function<void (std::__ndk1::shared_ptr<restbed::Session>)> const&, bool)::$_259::operator()(std::__ndk1::shared_ptr<restbed::Session>, std::__ndk1::function<void (std::__ndk1::shared_ptr<restbed::Session>)> const&) const (this=0x617d8364, session=..., callback=...) at ../../../../Development/rs-develop/libretroshare/src/jsonapi/jsonapi.cpp:517
2020-03-06 18:21:32 +01:00
Gioacchino Mazzurco
039e8f653d
Solve race condition in JSON API restart
Improve atomic access to restbed service
Protect JSON API restart against bursts
Fix JSON API error condition enum registration
Provide ostream helper for error_condition
Provide optional forced thread cancel for debugging purpose, disabled by
  default at compile time define RS_THREAD_FORCE_STOP to enable it
Avoid double fullstop in retroshare-gui json api apply button
2020-02-05 18:56:47 +01:00
Gioacchino Mazzurco
7757c685c5
Fixup token parsing
If the token is like "somethingA:somethinchB:somethingC" then user is
"somethingA" and password is "somethinchB:somethingC"
2020-02-01 16:40:26 +01:00
Gioacchino Mazzurco
b0358759e5
Delete experimental deadcode 2020-01-30 18:11:49 +01:00
Gioacchino Mazzurco
8c9310f754
Fix global shutdown call from JSON API 2020-01-27 23:40:18 +01:00
Gioacchino Mazzurco
5dbbe1ffd7
Improve debugabbility of JSON API
JSON API server uses standardized error handling based on
  std::error_condition for a few method, this improve debugabbility both
  from library size and from API client side
JSON API auth token are now more flexible, now the only proibition is using
  colon character ':' in user name
Implemented TO_JSON operation for std::error_condition
Avoid unkown serial job handling code duplication via fatalUnknownSerialJob
Usability improvement in t_RsLogger
Disable compilation of now unused is_alphanumeric
2020-01-27 21:22:49 +01:00
Gioacchino Mazzurco
92990c55e7
JSON API spit out CORS headers also on error
Browsers won't let JavaScript properly handle the error if the corsa
  headers are missing thanks Saud for report see:
  retroshare://forum?name=Shouldn%27t%20CORS%20headers%20be%20present%20for%20all%20API%20responses%3F&id=8fd22bd8f99754461e7ba1ca8a727995&msgid=e3232ae3a1b76698576a9159ba962fa5091e710c
2020-01-21 12:56:52 +01:00
csoler
6a4c98b2ed
allowed some clients to Event handler to register with type NONE, which means that all event types will be sent to the client 2020-01-11 19:01:43 +01:00
csoler
f76b81ba49
fixed compilation in jsonapi to cope with new event type field in registerEventHandler() 2020-01-11 16:10:28 +01:00
Gioacchino Mazzurco
33c2f56a8e
Fixup jsonapi server stopping 2020-01-08 23:16:05 +01:00
Gioacchino Mazzurco
f12ec2b535
JSON API service and RsThread fixups 2020-01-08 14:24:46 +01:00
Gioacchino Mazzurco
f4f7b8a1ea
Few fixes after rebase 2020-01-06 14:46:36 +01:00
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
2a0e1ab59d
Fix Android compilation
Fix also a couple of warnings and update build documentation
2019-12-11 01:25:14 +01:00
Gioacchino Mazzurco
610fedabb8
Fix JSON API related files licensing based on talk with Cyril and FSFE suggestions 2019-11-29 19:46:46 +01:00
Gioacchino Mazzurco
5bf8792bc5
Fix windows compile due to rsversion JSON API 2019-11-28 17:41:03 +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
csoler
c7af86b4c1
using static resources for webui 2019-11-24 10:50:58 +01:00
csoler
c2d47b01df
added extra check when restarting rb service 2019-11-24 09:40:35 +01:00
csoler
d1a9f839a4
fixed restart of webui 2019-11-23 18:40:31 +01:00
csoler
b8b7d103e1
fixed compilation by modifying wrappers to account for the shared_ptr mService 2019-11-23 15:11:22 +01:00
csoler
009ed54ce2
changed layout of restbed/json/webui so that JsonApi is the only server (with thread functionality in a separate class) and webui is a resource provider 2019-11-23 00:17:17 +01:00
csoler
997501a24d
fixed retroshare_service with embedded webui 2019-11-17 22:01:49 +01:00
csoler
9491f1a78e
fixed interactions between webui and jsonapi in GUI 2019-11-16 18:19:07 +01:00
csoler
6878a7773d
fixed start/stop of jsonapi in GUI 2019-11-16 14:30:36 +01:00
csoler
a304ec20ef
converted JsonAPI with public api and using RestbedService system 2019-11-16 00:02:02 +01:00
csoler
3ca22f0052
created separate class for restbed services 2019-11-14 22:02:42 +01:00
csoler
a584b822a8
fixed typo 2019-11-13 21:54:11 +01:00
csoler
1b8f137dee
improved UI for jsonapi and webui pages 2019-11-13 21:35:57 +01:00
csoler
9007d266a8
fixed start/stop of webinterface from GUI 2019-11-13 21:06:20 +01:00
csoler
d19d1685de
made JsonApiServer an singleton through static method instance() 2019-11-12 22:32:18 +01:00
csoler
3b45fc5199
added user-based token management to jsonApiServer 2019-11-11 22:48:35 +01: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
90d0686e88
removed Qt from unix version of retroshare service. Enabled loging at start with option -u 2019-08-27 21:54:17 +02:00
Gioacchino Mazzurco
9b8d0afacb
Fix sporadic crash in JSON API async calls
In Restbed one is not supposed to call session->yield outside the
  threads controlled by Restbed. RetroShare JSON API async call were
  calling session->yield from threads controlled by RetroShare all the
  times, this caused crashes in some cases, like when the JSON API
  socket timed out concurrently with the session->yield call .
  To solve this problem session->yield from async
  calls are now wrapped insto mService->schedule to ensure they are
  executed on the right thread (aka one of the threads controlled by
  Restbed).
While solving this issue I realized also that passing RsEvents as const
  references around was quite limiting in cases where the event need to
  be finally handled in another thread, in that case passing by const
  reference the RsEvent needed to be copied by value into the thread
  that process it, in this copy by value process the information of
  which was the original specific type is lost, and then only the data
  and methods from general RsEvents are available, unless the handler
  does tricky stuff with type coercion etc. To solve this limitation
  pass the events as std::shared_ptr<const RsEvent> seems the safer and
  more elegant solution.
2019-08-27 11:59:38 +02:00
Gioacchino Mazzurco
98b9152204
Fix a couple compliler warnings in JSON API 2019-08-23 12:02:25 +02:00
Gioacchino Mazzurco
7dab487bde
Implement a JSON API friendly notification system
This should bit by bit substitute RsNotify which would be very difficult
  to support properly in JSON API.
The new system is much simpler to use also from the C++ side of the
  moon.
BroadcastDiscovery take advantage of the new system to notify about new
  non friend peer discovered, tested successfully also in JSON API.
2019-04-15 00:31:49 +02:00
Gioacchino Mazzurco
e7a2cb5501
Fix licensing in broadcast discovery and JSON API 2019-04-14 12:34: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
Gioacchino Mazzurco
bdf9bd5c56
JSON API fix OPTION method handling for authenticated methods 2018-12-06 20:49:51 +01:00
csoler
602bc36eec
fixed missing licenses in libretroshare 2018-11-11 14:24:47 +01:00