Commit Graph

30 Commits

Author SHA1 Message Date
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
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
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
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
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
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
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
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
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
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
csoler
602bc36eec
fixed missing licenses in libretroshare 2018-11-11 14:24:47 +01:00
Gioacchino Mazzurco
f5158b3a9f
Allow CORS in JsonApiServer 2018-10-06 18:57:14 +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
a194e4cf56
Make JSON API server bind address configurable
Enforce it being 127.0.0.1 by default, I assumed 127.0.0.1 was restbed
default, but as reported by sehraf is not alwayd the case

JSON API bind address now is also configurable via commandline on
retroshare-android-service and retroshare-nogui, while it obey the
configuration of webui (execept for that port is incremented by 2)
in retroshare-gui
2018-09-05 00:08:56 +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
Gioacchino Mazzurco
1bc518041c
Experiment of notification via NotifyClient + JSON API 2018-07-23 14:52:17 +02:00
Gioacchino Mazzurco
d511b6648e
Extend JSON API to shutdown retroshare gracefully 2018-06-28 15:04:06 +02:00
Gioacchino Mazzurco
7ad337c8d2
Implement automatic JSON API generation
qmake file add jsonapi-generator target to compile JSON API generator
qmake files add rs_jsonapi CONFIG option to enable/disable JSON API at compile
  time
RsTypeSerializer pass down same serialization flags when creating new context
  for nested objects serial job
RsGxsChannels expose a few methods through JSON API as example
Derive a few GXS types (RsGxsChannelGroup, RsGxsChannelPost, RsGxsFile,
  RsMsgMetaData) from RsSerializables so they can be used for the JSON API
Create RsGenericSerializer::SERIALIZATION_FLAG_YIELDING so JSON objects that
  miss some fields can be still deserialized, this improve API usability
SerializeContext offer friendly constructor with default paramethers
Add restbed 4.6 library as git submodule as most systems doesn't have it yet
Add a bit of documentation about JSON API into jsonapi-generator/README.adoc
Add JsonApiServer class to expose the JSON API via HTTP protocol
2018-06-24 16:28:33 +02:00