Benjamin Sergeant
0bb5462504
Feature/ci windows ( #163 )
...
* win only
* disable ixcrypto mbedtls search on windows
* ws cmakefile do not search for openssl
* ci builds files on top of cmaking
* ci builds files on top of cmaking / syntax tweak
* use gha-setup-vsdevenv syntax
* build fix and hacks
* try to run unittest on win
* try to run unittest on win (syntax error)
* unittest wip
* wip
* wip again
* wip again (working-directory)
* cleanup
* dumb compile error
2020-03-15 18:38:09 -07:00
Benjamin Sergeant
44f599747e
(cobra client) ws cobra subscribe resubscribe at latest position after being disconnected
2020-03-13 17:30:31 -07:00
Benjamin Sergeant
9801ebdb36
(cobra client) can subscribe with a position
2020-03-13 16:06:13 -07:00
Benjamin Sergeant
332ffb0603
(cobra client) pass the message position to the subscription data callback
2020-03-13 12:49:37 -07:00
Benjamin Sergeant
90df3d1805
(openssl tls backend) Fix a hand in OpenSSL when using TLS v1.3 ... by disabling TLS v1.3
2020-03-12 16:27:25 -07:00
Benjamin Sergeant
d4e1f71e3c
(cobra2sentry bot) take a sentry client as input instead of a dsn
2020-03-12 12:30:58 -07:00
Benjamin Sergeant
adf6aa1d6c
(cobra2sentry bot) remove the jobs option passed to ws, and only use one sentry sender
2020-03-12 12:24:25 -07:00
Benjamin Sergeant
cb1f9f5a44
clang formatting
2020-03-12 12:15:56 -07:00
Benjamin Sergeant
83ae105edb
minor refactoring to delete files which are not needed
2020-03-12 12:13:31 -07:00
Benjamin Sergeant
cb1ec7dc96
add unittest for cobra to sentry bots
2020-03-12 09:07:01 -07:00
Benjamin Sergeant
3df7c942d7
move sentry and statsd cobra ws commands into a new ixbots folder
2020-03-11 15:55:56 -07:00
Benjamin Sergeant
6a4d69afc5
(cobra) IXCobraConfig struct has tlsOptions and per message deflate options
2020-03-11 12:40:32 -07:00
Benjamin Sergeant
0a11132b07
(cobra) add IXCobraConfig struct to pass cobra config around
2020-03-11 10:48:41 -07:00
Benjamin Sergeant
b1f30bb40f
(ws cobra_subscribe) add a --fluentd option to wrap a message in an enveloppe so that fluentd can recognize it
2020-03-09 15:25:43 -07:00
Benjamin Sergeant
140a21c8b3
(ws_connect) display sent/received bytes statistics on exit
2020-02-26 11:23:36 -08:00
Benjamin Sergeant
4c66a7561e
(WebSocketServer) add option to disable deflate compression, exposed with the -x option to ws echo_server
2020-02-18 21:38:28 -08:00
Benjamin Sergeant
111475e65c
(ws cobra to statsd and sentry sender) exit if no messages are received for one minute, which is a sign that something goes wrong on the server side. That should be changed to be configurable in the future
2020-02-18 12:43:07 -08:00
Benjamin Sergeant
45061b0b14
(http client + sentry minidump upload) Multipart stream closing boundary is invalid + mark some options as mandatory in the command line toolsj
2020-02-13 12:25:18 -08:00
Benjamin Sergeant
5f6c54bb90
(snake) add an option to disable answering pongs as response to pings, to test cobra client behavior with hanged connections
2020-01-31 16:55:54 -08:00
Benjamin Sergeant
f3760318b7
(cobra to sentry) remove noisy logging
2020-01-31 16:07:36 -08:00
Benjamin Sergeant
aa12098cb5
add -6 option to ws echo_server / cf #148
2020-01-26 16:44:44 -08:00
Benjamin Sergeant
fad9f89846
(ws) add a dnslookup sub-command, to get the ip address of a remote host
2020-01-26 16:21:56 -08:00
Benjamin Sergeant
b96b3b099f
test broadcast server
2020-01-12 21:32:26 -08:00
Benjamin Sergeant
9651f3823d
(apple ssl) model write method after the OpenSSL one for consistency
...
More test code for #140 .
2020-01-10 18:32:34 -08:00
Benjamin Sergeant
c8bf2a0d82
formatting
2020-01-09 13:45:31 -08:00
Benjamin Sergeant
4d96804b22
ws send / detect disconnection earlier
2020-01-09 13:30:08 -08:00
Benjamin Sergeant
28952cb0b0
ws send / check that we are connected when waiting for the send buffer to be flushed, and if so, abort
2020-01-09 12:16:12 -08:00
Benjamin Sergeant
1320e4ddaf
Windows ws build fix
2020-01-07 17:37:38 -08:00
Benjamin Sergeant
a5bc39be55
(websocket client) better error propagation when errors are detected while sending data + (ws send) detect failures to send big files, terminate in those cases and report error (troubleshooting #140 )
2020-01-06 14:34:43 -08:00
Benjamin Sergeant
f56098dd4c
(ws send) add option (-x) to disable per message deflate compression
2020-01-04 15:08:36 -08:00
Benjamin Sergeant
e0187b2d8e
fix typo in ws embedded help
2020-01-04 14:37:53 -08:00
Benjamin Sergeant
31682f5f2d
(ws send + receive) handle all message types (ping + pong + fragment) / investigate #140
2020-01-04 13:45:07 -08:00
Benjamin Sergeant
d60777b9cc
clang-format
2019-12-30 08:46:18 -08:00
Benjamin Sergeant
8b5e42fe84
(ws cobra to sentry/statsd) fix for handling null events properly for empty queues + use queue to send data to statsd
2019-12-28 17:28:05 -08:00
Benjamin Sergeant
d89d152ad7
(ws cobra to sentry) handle null events for empty queues
2019-12-28 10:16:18 -08:00
Benjamin Sergeant
47a3736b24
(ws cobra to sentry) game is picked in a fair manner, so that all games get the same share of sent events
2019-12-27 19:10:15 -08:00
Benjamin Sergeant
1cd7cf340a
(ws cobra to sentry) refactor queue related code into a class
2019-12-27 18:24:45 -08:00
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
db0ff4ecd1
(ws) ws_cobra_publish: register callbacks before connecting
2019-12-22 20:29:37 -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
4e240e4992
formatting
2019-12-19 19:13:55 -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
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
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
fde0b717d3
sentry minidump upload timeout
2019-12-05 15:19:27 -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
Benjamin Sergeant
48622a24db
ws cobra_subscribe / sleep 1s instead of 10ms in the main loop
2019-12-02 09:52:52 -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
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
cc492bf1a3
add a python websocket proxy which works on Linux, while ws proxy_server does not
2019-11-18 13:46:11 -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
16c6f08e2d
fix android build + proxy work
2019-11-16 06:51:53 -08:00
Benjamin Sergeant
5b282ce3b4
document new proxy command
2019-11-15 17:18:32 -08:00
Benjamin Sergeant
c7b2446164
proxy works but crash when the connection is refused
2019-11-15 17:07:31 -08:00
Benjamin Sergeant
0e43c618a5
add stub code for ws proxy server
2019-11-15 14:30:20 -08:00
Benjamin Sergeant
af6100b90f
fix typo
2019-11-15 14:28:30 -08:00
Benjamin Sergeant
bbfa76a2c9
move sentry code around and add a stub unittest for it
2019-10-25 14:54:31 -07:00
Benjamin Sergeant
16a060131a
ws cobra to sentry / simplify sent and received message statistic reporting
2019-10-25 14:34:48 -07:00
Benjamin Sergeant
6dabc68d29
remove unused quiet argument of ws cobra_metrics_to_redis command
2019-10-25 14:02:56 -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
6de426a574
remove unused code in ws cobra_publish
2019-10-14 11:15:14 -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
2c32f5c593
add a target for building wihout ssl + take Matt Boer updated script to run ws test with SSL (still broken for large payload)
2019-10-03 07:47:34 -07:00
Benjamin Sergeant
41cbee2cd2
ws: Signal handling code isn't include on Windows
2019-10-01 16:12:32 -07:00
Benjamin Sergeant
a0cfaff528
Implement SSL server with OpenSSL backend / still flaky
2019-10-01 15:43:37 -07:00
Benjamin Sergeant
d6542383ed
Add --tls option to pass to ws server command, to enable/disable tls
2019-10-01 13:54:46 -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
7a26ff4de8
clang-format
2019-09-30 17:52:39 -07:00
Benjamin Sergeant
a1f3c40a2d
ws has a --version option
2019-09-30 17:31:33 -07:00
Benjamin Sergeant
55141aa875
ws curl + http client tls option handling + ca cert processing for mbedtls
2019-09-29 21:13:11 -07:00
Benjamin Sergeant
864249b62d
most ws command take tls options, no-op for now (contributed by Matt DeBoer)
2019-09-29 18:29:51 -07:00
Benjamin Sergeant
d1fc31b894
ws transfer + send + receive / improved logging (contributed by Matt DeBoer)
2019-09-29 17:21:52 -07:00
Benjamin Sergeant
05c7a26e3a
Export port 8008 for Docker + test_ws.sh is /bin/sh compatible
2019-09-26 14:36:14 -07:00
Benjamin Sergeant
6762978ddf
http server unittest + refactoring
2019-09-26 09:45:59 -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
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
95722e3bbb
fix linux compilation error, by ordering dependant libraries properly
2019-09-23 12:32:04 -07:00
Benjamin Sergeant
1cde26771a
move snake code to its own subfolder like ixcobra, ixcrypto, etc...
2019-09-23 11:46:16 -07:00
Benjamin Sergeant
cd3c9d879c
reformat everything with clang-format
2019-09-23 10:25:23 -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
fcdb57f31d
missing file in ws tool
2019-09-19 12:51:34 -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
e2121d809e
fix unittest warnings + remove trailing spaces
2019-09-12 11:43:52 -07:00
Benjamin Sergeant
2453f5b717
restructure project
2019-09-10 12:19:22 -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
21404c23dd
snake unsubscription fixes
2019-09-05 20:47:15 -07:00
Benjamin Sergeant
eeefc9cf4b
Fix compiler warning
2019-09-05 20:29:14 -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
f9dc460325
cobra publish fix
2019-09-05 14:31:28 -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
b360fb9ca0
truncate module
2019-09-03 20:14:35 -07:00
Benjamin Sergeant
96380dd462
doc
2019-09-01 11:28:27 -07:00
Benjamin Sergeant
61bd765784
compute test case count properly
2019-09-01 11:17:28 -07:00
Benjamin Sergeant
4a0f06193b
refactoring
2019-09-01 11:10:27 -07:00
Benjamin Sergeant
826917ef17
condition variable instead of busy looping
2019-09-01 10:50:16 -07:00
Benjamin Sergeant
4e1dbbbecf
quiet mode
2019-09-01 10:45:51 -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
185869e628
tentative gcc build fix
2019-08-26 14:29:16 -07:00
Benjamin Sergeant
d3e5a63fa2
ws connect has a new option to send HTTP headers + use WebSocketHttpHeaders instead of unordered_map<string, string>
2019-08-26 10:19:09 -07:00
Benjamin Sergeant
0847e60d2a
CobraConnection: sets a unique id field for all messages sent to [cobra]( https://github.com/machinezone/cobra ).
...
CobraConnection: sets a counter as a field for each event published.
2019-08-26 09:51:37 -07:00
Benjamin Sergeant
ff75846d2d
Windows: use select instead of WSAPoll, through a poll wrapper
2019-08-22 10:34:17 -07:00
Benjamin Sergeant
2f730303c2
CobraMetricThreadedPublisher _enable flag is an atomic, and CobraMetricsPublisher is enabled by default
2019-08-14 19:54:30 -07:00
Benjamin Sergeant
5cc21c87fb
new options for cobra commands
...
- ws cobra_subscribe has a new -q (quiet) option
- ws cobra_subscribe knows to and display msg stats (count and # of messages received per second)
- ws cobra_subscribe, cobra_to_statsd and cobra_to_sentry commands have a new option, --filter to restrict the events they want to receive
2019-08-01 15:22:24 -07:00
Benjamin Sergeant
505e0c79d9
ws connect command has a new option to send in binary mode (still default to text)
2019-07-25 15:48:45 -07:00
Benjamin Sergeant
ca9d59c1c1
add better line editing capability to ws connect, thanks to linenoise-cpp
2019-07-25 11:54:50 -07:00
Benjamin Sergeant
f84bc53c8d
Feature/httpd ( #94 )
...
* Stub code for http server
* can send a response, cannot process body yet
* write headers to the response
* remove commented code
* add simple test + set default http handler
* tweak CI + unittest
* add missing file
* rewrite http::trim in a simple way
* doc
2019-06-23 14:54:21 -07:00
Benjamin Sergeant
dbd62b8622
cobra_to_sentry / backtraces are reversed and line number is not extracted correctly
2019-06-13 10:18:40 -07:00
Benjamin Sergeant
3e15840b14
- WebSocket::send() sends message in TEXT mode by default
...
- WebSocketMessage sets a new binary field, which tells whether the received incoming message is binary or text
2019-06-09 11:56:47 -07:00
Benjamin Sergeant
be93f7480a
WebSocket callback only take one object, a const ix::WebSocketMessagePtr& msg
2019-06-09 11:33:17 -07:00
Benjamin Sergeant
2e5f24f1f8
...
2019-06-09 10:22:27 -07:00
Benjamin Sergeant
9623ceb4d5
ws echo_server has a -g option to print a greeting message on connect
2019-06-08 09:16:33 -07:00
Benjamin Sergeant
076e8bf6a3
add an option to easily disable per message deflate compression
2019-06-06 13:48:53 -07:00
Benjamin Sergeant
f4f3eed78d
cobra to sentry / more error handling
2019-06-05 19:37:51 -07:00
Benjamin Sergeant
89909c15bc
cobra to sentry fixes
2019-06-05 18:47:48 -07:00
Benjamin Sergeant
78b3d7ff2d
Feature/http async ( #90 )
...
* unittest working / uses shared_ptr for a bunch of things 🗿
* fix command line tools
* fix ws + add doc
* add more logging
2019-06-05 17:04:24 -07:00
Benjamin Sergeant
012193c74e
Fix compile error with JSON uint64_t 🚯
2019-06-04 13:45:29 -07:00
Benjamin Sergeant
539abe5151
HttpResponse is a struct, not a tuple 🉐
2019-06-03 22:12:52 -07:00
Benjamin Sergeant
396d0d9bdc
Feature/ws windows ( #86 )
...
* try to build ws on window on travis 📮
* cmake invocation fixed on windows 🐝
* Can use mbedtls to calculate hmac + no openssl config option
* build only windows on travis 🕢
* run msbuild 💷
* proper command to build 🕛
* some build fixes
* change weird sizeof call 🐙
* warning and missing includes fixes 💮
* ifdef out statsd code on windows 🐍
* logic invertion in ifdef 👄
* bring back makefile 📜
* command line tool is built with mbedtls 🏥
2019-06-02 20:46:20 -07:00
Benjamin Sergeant
ba4a9e1586
(clang format) fix indent and make (rarely) accessor/setters in class on a single line
2019-05-31 00:53:14 -07:00
Benjamin Sergeant
285386e47f
fix cobra to sentry + change ws docker file to use alpine (much smaller footprint)
2019-05-31 00:43:22 -07:00
Benjamin Sergeant
c65fec7271
clang format, based on cpprest
2019-05-30 08:46:50 -07:00
Benjamin Sergeant
964fb20df9
try to run ws test on linux + macOS on travis
2019-05-16 13:57:33 -07:00
Dimon4eg
99a3bbc4f9
use C++11 enums ( #67 )
...
* use C++11 enums
* small rename
* update tests
* update tests
* update ws
* update ws
* update README.md
2019-05-11 14:22:06 -07:00
Benjamin Sergeant
6189e0cd50
remove irrelevant comment
2019-05-11 12:24:11 -07:00
Dimon4eg
2254421ead
minor improvements ( #66 )
...
* minor improvements
* fix build
* improve tests code
2019-05-11 12:20:58 -07:00
Benjamin Sergeant
fcf5c41b43
add env var to display the ws command typed in
2019-05-10 16:27:23 -07:00
Benjamin Sergeant
88adbf0ca2
cout -> spdlog
2019-05-10 12:33:34 -07:00
Benjamin Sergeant
dc1f9fb243
use spdlog for logging in ws + unittest + remove un-needed mutex
2019-05-09 15:30:44 -07:00
Benjamin Sergeant
7c30c8aa07
cout -> cerr
2019-05-09 15:06:42 -07:00
Benjamin Sergeant
094b5834b7
warning police
2019-05-09 09:25:56 -07:00
Benjamin Sergeant
232aa069d2
IXCobraMetricsThreadedPublisher.cpp uses a lambda to log instead of std::cerr
2019-05-08 18:53:32 -07:00
Benjamin Sergeant
d53c9c5ecf
change default ports for the ws command line tool
2019-05-08 13:56:42 -07:00
Benjamin Sergeant
48c19b4f3c
ws connect display more accurate messages for incoming messages
2019-05-08 13:56:42 -07:00
Benjamin Sergeant
b5aae88a0b
remove un-needed _backgroundThreadRunning variable
2019-05-01 11:09:25 -07:00
Benjamin Sergeant
bee97237d9
Make AutomaticReconnection optional ( #47 )
...
* unittest pass + commands behave as expected
* cleanup
2019-04-29 21:12:34 -07:00
Benjamin Sergeant
9ee05bf591
ws connect mode / add a flag to disable automatic reconnection, not hooked up yet
2019-04-29 14:31:29 -07:00
Benjamin Sergeant
1c7c07e128
initialize netSystem (aka winsock on windows) explicitely
2019-04-25 16:38:15 -07:00
Benjamin Sergeant
f6ae490723
Fix data race in WebSocket where _url is accessed without protection in setThreadName
...
Also fix with url usage + docker container uses fedora and works with tsan
2019-04-25 16:11:46 -07:00
Benjamin Sergeant
cf37816602
compiler warning police
2019-04-24 09:45:03 -07:00