Commit Graph

289 Commits

Author SHA1 Message Date
Benjamin Sergeant
3a25a05d9c (ws cobra to sentry) bound the queue size used to hold up cobra messages before they are sent to sentry. Default queue size is a 100 messages. Without such limit the program runs out of memory when a subscriber receive a lot of messages that cannot make it to sentry 2019-12-25 22:15:57 -08:00
Benjamin Sergeant
d2acfd5d1f (ws client) use correct compilation defines so that spdlog is not used as a header only library (reduce binary size and increase compilation speed) 2019-12-25 09:03:57 -08:00
Benjamin Sergeant
9dfcd8ea69 (ws client) all commands use spdlog instead of std::cerr or std::cout for logging 2019-12-24 21:55:34 -08:00
Benjamin Sergeant
ee65f95fe3 (cobra client) send a websocket ping every 30s to keep the connection opened 2019-12-24 17:16:41 -08:00
Benjamin Sergeant
440a1058b3 (doc) fix typo 2019-12-22 20:33:14 -08:00
Benjamin Sergeant
ff489515be v7.6.4 2019-12-22 20:32:10 -08:00
Benjamin Sergeant
e4aed56d72 (doc) mention mbedtls in supported ssl server backend 2019-12-22 20:28:44 -08:00
Benjamin Sergeant
d7318f97e6 (tls) add a simple description of the TLS configuration routine for debugging 2019-12-20 15:18:04 -08:00
Benjamin Sergeant
d1a4cab134 (mbedtls) correct support for using own certificate and private key 2019-12-20 15:13:26 -08:00
Benjamin Sergeant
8e7d310439 (ws commands) in websocket proxy, disable automatic reconnections + in Dockerfile, use alpine 3.11 2019-12-20 09:51:21 -08:00
Benjamin Sergeant
9347664622 (cobra) Add TLS options to all cobra commands and classes. Add example to the doc. 2019-12-19 20:49:28 -08:00
Benjamin Sergeant
626e190d91 (cobra-to-sentry) capture application version from device field 2019-12-18 15:41:59 -08:00
Benjamin Sergeant
494f408320 (tls) Experimental TLS server support with mbedtls (windows) + process cert tlsoption (client + server) 2019-12-18 11:51:02 -08:00
Benjamin Sergeant
299afc1425 (tls servers) Make it clear that apple ssl and mbedtls backends do not support SSL in server mode 2019-12-18 10:43:05 -08:00
Benjamin Sergeant
0679b6399f (tls options client) TLSOptions struct _validated member should be initialized to false 2019-12-17 14:10:28 -08:00
Benjamin Sergeant
862f8ea2d4 (websocket client) improve the error message when connecting to a non websocket server 2019-12-16 17:57:43 -08:00
Benjamin Sergeant
cae016564e (server) attempt at fixing #131 by using blocking writes in server mode 2019-12-12 12:17:29 -08:00
Benjamin Sergeant
e223f8fac2 (ws) cobra to sentry - created events with sentry tags based on tags present in the cobra messages 2019-12-11 17:28:11 -08:00
Benjamin Sergeant
ba4cf75e0f (mac) convert SSL errors to utf8 2019-12-06 16:45:49 -08:00
Benjamin Sergeant
0b2d816320 (ws) cobra to sentry. Handle Error 429 Too Many Requests and politely wait before sending more data to sentry 2019-12-05 15:59:29 -08:00
Benjamin Sergeant
18386ae66f (ws) #125 / fix build problem when jsoncpp is not installed locally 2019-12-03 17:18:16 -08:00
Benjamin Sergeant
5c5ea6dec1 (ws) #125 / cmake detects an already installed jsoncpp and will try to use this one if present 2019-12-03 16:01:46 -08:00
Olivia Zoe
2e1657167f Meta: documentation fixes (#127)
* Clarify versions, minor punctuation fix

* Copyediting, borked URL

* Fix Python comments in C++ code

* Copyediting

* Pretty code

* Copyediting, pretty code

* Typo

* Pretty code
2019-12-03 09:28:18 -08:00
Benjamin Sergeant
c91a0d2a35 (http client) use std::unordered_map instead of std::map for HttpParameters and HttpFormDataParameters class aliases 2019-12-03 09:25:00 -08:00
Benjamin Sergeant
6b98694caa (client) internal IXDNSLookup class requires a valid cancellation request function callback to be passed in 2019-12-02 14:52:19 -08:00
Benjamin Sergeant
d82e05f72d (client) fix an overflow in the exponential back off code 2019-12-02 13:51:45 -08:00
Benjamin Sergeant
94a274ced4 Improve the limitation section in the doc about TLS, cf bug #113 2019-12-02 09:52:05 -08:00
Benjamin Sergeant
a7977cf1a5 ws cobra subcommands / channel is not a positional argument anymore 2019-11-28 15:17:13 -08:00
Benjamin Sergeant
3fffd2ed0b add doc about using ws to run a cobra server/publisher/subscriber 2019-11-27 09:26:45 -08:00
Benjamin Sergeant
a0d5f37402 (http client) Add support for multipart HTTP POST upload + (ixsentry) Add support for uploading a minidump to sentry 2019-11-25 21:11:11 -08:00
Benjamin Sergeant
155bbfa984 On Darwin SSL, add ability to skip peer verification. 2019-11-20 13:58:08 -08:00
Benjamin Sergeant
89aae8b344 bump version for 32-bit fix 2019-11-20 11:35:07 -08:00
Benjamin Sergeant
901c21e499 ws proxy_server / remote server close not forwarded to the client 2019-11-16 14:21:44 -08:00
Benjamin Sergeant
5b282ce3b4 document new proxy command 2019-11-15 17:18:32 -08:00
Benjamin Sergeant
a4cd248368 update readme / add contributing notes 2019-11-15 14:21:28 -08:00
Benjamin Sergeant
6e52723c8c update changelog 2019-11-06 23:12:45 -08:00
Benjamin Sergeant
a3ad92b9d9 update readme 2019-11-06 23:12:45 -08:00
Benjamin Sergeant
081dd2c4bb Add unittest to IXSentryClient to lua backtrace parsing code 2019-10-26 10:54:47 -07:00
Benjamin Sergeant
ac0593bfb3 Add cobra_metrics_to_redis sub-command to create streams for each cobra metric event being received. 2019-10-24 14:42:36 -07:00
Benjamin Sergeant
c3a619f114 Add client support for websocket subprotocol. Look for the new addSubProtocol method for details 2019-10-13 13:37:34 -07:00
Benjamin Sergeant
8152898c4e add more docs about ws 2019-10-09 22:42:03 -07:00
Benjamin Sergeant
1f8944852a bump version 2019-10-01 16:01:32 -07:00
Benjamin Sergeant
afed387bcf Socket Factory has only one function which works for server and client code, and can do tls for both 2019-09-30 22:06:46 -07:00
Benjamin Sergeant
845bbc5208 all ws subcommands propagate tls options to servers (unimplemented) or ws or http client (implemented) (contributed by Matt DeBoer) 2019-09-30 18:21:20 -07:00
Benjamin Sergeant
a1f3c40a2d ws has a --version option 2019-09-30 17:31:33 -07:00
Benjamin Sergeant
1fdbc2bc22 bump version number 2019-09-29 22:10:07 -07:00
Benjamin Sergeant
7939f7ad50 docs: WITH_TLS => USE_TLS 2019-09-29 21:31:13 -07:00
Matt DeBoer
8bfc3c5ea6 document basic usage 2019-09-29 21:29:28 -07:00
Benjamin Sergeant
f6bf2531bb Add ability to use OpenSSL on apple platforms. 2019-09-29 15:34:58 -07:00
Benjamin Sergeant
0ee675e554 ixcobra / fix crash in CobraConnection::publishNext when the queue is empty + handle CobraConnection_PublishMode_Batch in CobraMetricsThreadedPublisher 2019-09-28 10:36:47 -07:00
Benjamin Sergeant
4cd11fdbc7 mbedtls fixes / the unittest now pass on macOS, and hopefully will on Windows/AppVeyor as well. 2019-09-27 14:07:01 -07:00
Benjamin Sergeant
658650cf24 http server: in redirect mode, POST request are given a 200 status code and an empty response 2019-09-26 09:27:27 -07:00
Benjamin Sergeant
8a662b35e1 Http server: add options to ws https to redirect all requests to a given url. 2019-09-26 09:10:30 -07:00
Benjamin Sergeant
3cd7c0194f Stop having ws send subcommand send a binary message in text mode, which would cause error in make ws_test shell script test 2019-09-25 15:39:43 -07:00
Benjamin Sergeant
05f29639e5 fix doc 2019-09-24 15:42:28 -07:00
Benjamin Sergeant
94c589f696 Fix 2 race conditions detected with TSan, one in CobraMetricsPublisher::push and another one in WebSocketTransport::sendData (that one was bad). 2019-09-24 11:46:54 -07:00
Benjamin Sergeant
ceb0c602c9 Add simple Redis Server which is only capable of doing publish / subscribe. New ws redis_server sub-command to use it. The server is used in the unittest, so that we can run on CI in environment where redis isn not available like github actions env. 2019-09-23 21:04:01 -07:00
Benjamin Sergeant
041fa3e340 compiled fixes on mac and windows 2019-09-22 18:43:57 -07:00
Benjamin Sergeant
ed4be773a2 Fix crash in the Linux unittest in the HTTP client code, in Socket::readBytes. Cobra Metrics Publisher code returns the message id of the message that got published, to be used to validated that it got sent properly when receiving an ack. 2019-09-21 09:23:58 -07:00
Benjamin Sergeant
47b3368f78 In DNS lookup code, make sure the weak pointer we use lives through the expected scope (if branch) 2019-09-19 12:51:11 -07:00
Benjamin Sergeant
20ce498d23 On error while doing a client handshake, additionally display port number next to the host name 2019-09-17 12:08:52 -07:00
Benjamin Sergeant
e2121d809e fix unittest warnings + remove trailing spaces 2019-09-12 11:43:52 -07:00
Benjamin Sergeant
65c5c5f894 update ws CLI11 (our command line argument parsing library) to the latest, which fix a compiler bug about optional 2019-09-09 21:25:33 -07:00
Benjamin Sergeant
64d3c99f99 improve some websocket error messages + add a utility function with unittest to parse status line and stop using scanf which triggers warnings on Windows 2019-09-09 21:23:57 -07:00
Benjamin Sergeant
fb271953f7 websocket and http server: server does not close the bound client socket in many cases 2019-09-09 16:48:26 -07:00
Benjamin Sergeant
7080c5679f move poll wrapper on top of select (only used on Windows) to the ix namespace 2019-09-08 11:15:08 -07:00
Benjamin Sergeant
427db5bd59 Fix Windows CI with appveyor (#110)
Fix windows CI with appveyor + minor tweaks.
2019-09-07 14:07:00 -07:00
Benjamin Sergeant
37a7b362d8 add cobra metrics publisher + server unittest 2019-09-05 21:57:05 -07:00
Benjamin Sergeant
24b2475b11 ws snake (cobra simple server) add basic support for unsubscription + subscribe send the proper subscription data + redis client subscription can be cancelled 2019-09-05 20:28:34 -07:00
Benjamin Sergeant
2defe6f597 IXCobraConnection / pdu handlers can crash if they receive json data which is not an object 2019-09-05 20:24:42 -07:00
Benjamin Sergeant
003afc8b56 all client autobahn test should pass ! last failing one was ...
+- zlib/deflate has a bug with windowsbits == 8, so we silently upgrade it to 9/ (fix autobahn test 13.X which uses 8 for the windows size)
2019-09-04 21:01:30 -07:00
Benjamin Sergeant
95a97a197a Fragmentation: for sent messages which are compressed, the continuation fragments should not have the rsv1 bit set (fix all autobahn tests for zlib compression 12.X)
Websocket Server / do a case insensitive string search when looking for an Upgrade header whose value is websocket. (some client use WebSocket with some upper-case characters)
2019-09-04 18:23:56 -07:00
Benjamin Sergeant
eccd8b3c0e ws autobahn / use condition variables for stopping test case + add more logging on errors 2019-09-04 12:21:54 -07:00
Benjamin Sergeant
a43046c921 ws autobahn / report progress with spdlog::info to get timing info 2019-09-04 10:16:32 -07:00
Benjamin Sergeant
0bf185e143 Per message deflate/compression: handle fragmented messages (fix autobahn test: 12.1.X and probably others) 2019-09-03 17:42:48 -07:00
Benjamin Sergeant
da3d134be0 Receiving invalid UTF-8 TEXT message should fail and close the connection (fix remaining autobahn test: 6.X UTF-8 Handling) 2019-09-03 16:07:48 -07:00
Benjamin Sergeant
fdd1ad9b17 Validate close codes. Autobahn 7.9.* 2019-09-03 15:43:16 -07:00
Benjamin Sergeant
1be8d9d46f Validate that the close reason is proper utf-8. Autobahn 7.5.1 2019-09-03 14:35:40 -07:00
Benjamin Sergeant
51799353a6 Sending invalid UTF-8 TEXT message should fail and close the connection (fix remaining autobahn test: 6.X UTF-8 Handling) 2019-09-03 14:12:40 -07:00
Benjamin Sergeant
3ad13a592d Framentation: data and continuation blocks received out of order (fix autobahn test: 5.9 through 5.20 Fragmentation) 2019-09-03 12:02:56 -07:00
Benjamin Sergeant
55934918ff Sending invalid UTF-8 TEXT message should fail and close the connection (fix **tons** of autobahn test: 6.X UTF-8 Handling) 2019-09-03 10:30:22 -07:00
Benjamin Sergeant
ab93e4f168 Message type (TEXT or BINARY) is invalid for received fragmented messages (fix autobahn test: 5.3 through 5.8 Fragmentation) 2019-09-03 09:13:38 -07:00
Benjamin Sergeant
cbe3e7617c Ping and Pong messages cannot be fragmented (autobahn test: 5.1 and 5.2 Fragmentation) 2019-09-02 10:13:40 -07:00
Benjamin Sergeant
94c8966e86 Close connections when reserved bits are used (autobahn test: 3 Reserved Bits) 2019-09-01 16:23:00 -07:00
Benjamin Sergeant
d973a062c2 changelog 2019-09-01 11:39:00 -07:00
Benjamin Sergeant
b5b0de2083 +add utf-8 validation code, not hooked up properly yet
+ws autobahn / Add code to test websocket client compliance with the autobahn test-suite
+Ping received with a payload too large (> 125 bytes) trigger a connection closure
+cobra / add tracking about published messages
+cobra / publish returns a message id, that can be used when
+cobra / new message type in the message received handler when publish/ok is received (can be used to implement an ack system).
2019-08-31 16:47:10 -07:00
Benjamin Sergeant
7a73ec7c06 New option to cap the max wait between reconnection attempts. Still default to 10s. (setMaxWaitBetweenReconnectionRetries) (#108) 2019-08-30 12:46:35 -07:00
Benjamin Sergeant
225b7d7db7 doc / bring back detailed APIs 2019-08-26 22:11:35 -07:00
Benjamin Sergeant
56def6def4 Add md doc made with mkdocs 2019-08-26 21:25:45 -07:00