Commit Graph

59 Commits

Author SHA1 Message Date
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
Gioacchino Mazzurco
9e2c4ce49e
JSON API authorize token in createLocation
Solve uncoherent 401 behaviour at first use without login
2018-10-19 15:10:15 +02:00
G10h4ck
047ae7f723
Merge branch 'master' into jsonapi 2018-10-10 22:23:28 +02:00
Gioacchino Mazzurco
a89c29030a
Add missing rstime include in jsonapi 2018-10-08 11:56:47 +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
Gioacchino Mazzurco
f5158b3a9f
Allow CORS in JsonApiServer 2018-10-06 18:57:14 +02:00
Gioacchino Mazzurco
1d8bb44811
Fix warnings 2018-10-05 01:55:18 +02:00
Gioacchino Mazzurco
95e0fd338f
JsonApiServer::isAuthTokenValid avoid timing attack
Thanks Cyril for review :)
2018-09-25 17:27:54 +02:00
Gioacchino Mazzurco
eb77f921ec
Implement JSON API HTTP Basic authentication
jsonapi-generator is now capable of generating API for headers outside
  retroshare/ directory
jsonapi-generator do a bit of methods parameter sanity check
JsonApiServer is now integrated in the rsinit hell like other services
Add *::exportGPGKeyPairToString to a bunch of classes in cascade
RsControl is now capable of calling back a function when retroshare is almost
  completely stopped, this is useful when running retroshare toghether with
  externally managed runloop such as QCoreApplication
Expose a bunch of methods through JSON API
retroshare-nogui remove some dead code and fix stopping from the RetroShare API
2018-09-19 21:28:26 +02:00
Gioacchino Mazzurco
43bc80de8e
JSON API export version extra too 2018-09-15 21:53:46 +02:00
Gioacchino Mazzurco
148e46346d
JSON API accessible via HTTP GET method
This is useful in cases where the client cannot use POST method.
/jsonApiServer/shutdown now reply before shutting down the core.
2018-09-12 23:40:34 +02:00