-
Notifications
You must be signed in to change notification settings - Fork 12
protocol: change the format of handshake packets #54
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
lib/connection.js
Outdated
| }; | ||
|
|
||
| // Callback of authentication operation | ||
| // username - user login, if any |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
You can probably change order of arguments here as well, to correspond with function signature.
lib/simple-auth.js
Outdated
| // password - null (required by the auth callback contract) | ||
| // strategy - authentication strategy (only 'anonymous' is supported) | ||
| // credentials - authentication credentials | ||
| // callback - callback function that has signature (error, sessionId) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Callback signature here does not correspond to the callback you are calling on line 33.
lib/simple-auth.js
Outdated
| connection, application, | ||
| strategy, credentials, callback | ||
| ) => { | ||
| console.dir({ strategy, credentials }); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Was it intentionally left here?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Leftover of fixing tests. Thanks for noticing it.
doc/protocol.md
Outdated
| There are two supported strategies now: | ||
|
|
||
| * `login` — authentication with login and password. The payload is an array of | ||
| two elements: user name and password, both represented as strings. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
In this case it is usually more appropriate to write "username", not "user name".
b87f0c6 to
8e32661
Compare
|
@belochub updated to resolve the issues and nits. |
belochub
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
LGTM
* Introduce the concept of authentication strategies. * Implement `login` and `anonymous` strategies. * Make handshake packets include the strategy as an action field. * Update tests. * Update docs. Refs: #35 (comment)
8e32661 to
45e6696
Compare
|
Rebased to resolve conflicts. |
|
@tshemsedinov awaiting your review. |
tshemsedinov
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
|
@tshemsedinov it's semver-major anyway, so it will go along with any other breaking changes. All non-breaking changes are still being landed on v0.6 too. |
|
@tshemsedinov and it is still possible to do a protocol-level compatibility fixup for v0.6 granted we have no users named 'login', 'anonymous' or 'session' :) |
|
@tshemsedinov @belochub it has just occurred to me that in fact the protocol-level compatibility will not be broken for our applications because of the reasons I told in the previous comment. Since only anonymous handshakes were used and authentication was performed using RPC methods, and anonymous handshakes syntax has not changed, we can update the server to JSTP 0.7 without updating the clients. |
|
@tshemsedinov @belochub so basically we don't even need backporting this PR to v0.6 and supporting v0.6 at all. |
|
If we introduce any new breaking changes that will not be feasible to work around, we'll release v0.7 in its current state, call new breaking changes v0.8 and continue landing non-breaking changes to v0.7. |
* Introduce the concept of authentication strategies. * Implement `login` and `anonymous` strategies. * Make handshake packets include the strategy as an action field. * Update tests. * Update docs. Refs: #35 (comment) PR-URL: #54
|
Landed in 9e55d3c. |
* Introduce the concept of authentication strategies. * Implement `login` and `anonymous` strategies. * Make handshake packets include the strategy as an action field. * Update tests. * Update docs. Refs: #35 (comment) PR-URL: #54
* Introduce the concept of authentication strategies. * Implement `login` and `anonymous` strategies. * Make handshake packets include the strategy as an action field. * Update tests. * Update docs. Refs: #35 (comment) PR-URL: #54
This is a new and shiny first major release for `metarhia-jstp`.
Changes include API refactoring and improvements, implementations of
CLI, sessions, and application versions, native addon build optimizations,
lots of bug fixes, test coverage increase, and other, less notable changes.
This release also denotes the bump of the protocol version to v1.0.
The only difference from the previous version of the protocol is that
"old" heartbeat messages (`{}`) are now deprecated and `ping`/`pong`
messages must be used for this purpose instead.
Notable changes:
* **src,build:** improve the native module subsystem
*(Alexey Orlenko)*
[#36](#36)
**\[semver-minor\]**
* **build:** compile in ISO C++11 mode
*(Alexey Orlenko)*
[#37](#37)
**\[semver-minor\]**
* **build:** improve error handling
*(Alexey Orlenko)*
[#40](#40)
**\[semver-minor\]**
* **lib:** refactor record-serialization.js
*(Alexey Orlenko)*
[#41](#41)
**\[semver-minor\]**
* **protocol:** change the format of handshake packets
*(Alexey Orlenko)*
[#54](#54)
**\[semver-major\]**
* **parser:** remove special case for '\0' literal
*(Mykola Bilochub)*
[#68](#68)
**\[semver-major\]**
* **client:** drop redundant callback argument
*(Alexey Orlenko)*
[#104](#104)
**\[semver-major\]**
* **client:** handle errors in connectAndInspect
*(Alexey Orlenko)*
[#105](#105)
**\[semver-major\]**
* **socket,ws:** use socket.destroy() properly
*(Alexey Orlenko)*
[#84](#84)
**\[semver-major\]**
* **cli:** add basic implementation
*(Mykola Bilochub)*
[#107](#107)
**\[semver-minor\]**
* **connection:** fix error handling in optional cbs
*(Alexey Orlenko)*
[#147](#147)
**\[semver-major\]**
* **lib:** change event signature
*(Denys Otrishko)*
[#187](#187)
**\[semver-major\]**
* **lib:** add address method to Server
*(Denys Otrishko)*
[#190](#190)
**\[semver-minor\]**
* **lib:** optimize connection events
*(Denys Otrishko)*
[#222](#222)
**\[semver-major\]**
* **lib:** refactor server and client API
*(Denys Otrishko)*
[#209](#209)
**\[semver-major\]**
* **lib,src:** rename term packet usages to message
*(Denys Otrishko)*
[#270](#270)
**\[semver-major\]**
* **lib:** emit events about connection messages
*(Denys Otrishko)*
[#252](#252)
**\[semver-minor\]**
* **connection:** make callback method private
*(Alexey Orlenko)*
[#306](#306)
**\[semver-major\]**
* **lib:** implement sessions
*(Mykola Bilochub)*
[#289](#289)
**\[semver-major\]**
* **connection:** use ping-pong instead of heartbeat
*(Dmytro Nechai)*
[#303](#303)
**\[semver-major\]**
This is a new and shiny first major release for `metarhia-jstp`.
Changes include API refactoring and improvements, implementations of
CLI, sessions, and application versions, native addon build optimizations,
lots of bug fixes, test coverage increase, and other, less notable changes.
This release also denotes the bump of the protocol version to v1.0.
The only difference from the previous version of the protocol is that
"old" heartbeat messages (`{}`) are now deprecated and `ping`/`pong`
messages must be used for this purpose instead.
Notable changes:
* **src,build:** improve the native module subsystem
*(Alexey Orlenko)*
[#36](#36)
**\[semver-minor\]**
* **build:** compile in ISO C++11 mode
*(Alexey Orlenko)*
[#37](#37)
**\[semver-minor\]**
* **build:** improve error handling
*(Alexey Orlenko)*
[#40](#40)
**\[semver-minor\]**
* **lib:** refactor record-serialization.js
*(Alexey Orlenko)*
[#41](#41)
* **parser:** fix a possible memory leak
*(Alexey Orlenko)*
[#44](#44)
**\[semver-minor\]**
* **protocol:** change the format of handshake packets
*(Alexey Orlenko)*
[#54](#54)
**\[semver-major\]**
* **parser:** make parser single-pass
*(Mykola Bilochub)*
[#61](#61)
* **parser:** remove special case for '\0' literal
*(Mykola Bilochub)*
[#68](#68)
**\[semver-major\]**
* **parser:** fix bug causing node to crash
*(Mykola Bilochub)*
[#75](#75)
* **client:** drop redundant callback argument
*(Alexey Orlenko)*
[#104](#104)
**\[semver-major\]**
* **client:** handle errors in connectAndInspect
*(Alexey Orlenko)*
[#105](#105)
**\[semver-major\]**
* **socket,ws:** use socket.destroy() properly
*(Alexey Orlenko)*
[#84](#84)
**\[semver-major\]**
* **cli:** add basic implementation
*(Mykola Bilochub)*
[#107](#107)
**\[semver-minor\]**
* **connection:** fix error handling in optional cbs
*(Alexey Orlenko)*
[#147](#147)
**\[semver-major\]**
* **test:** add JSON5 specs test suite
*(Alexey Orlenko)*
[#158](#158)
* **lib:** change event signature
*(Denys Otrishko)*
[#187](#187)
**\[semver-major\]**
* **lib:** add address method to Server
*(Denys Otrishko)*
[#190](#190)
**\[semver-minor\]**
* **parser:** implement NaN and Infinity parsing
*(Mykola Bilochub)*
[#201](#201)
* **parser:** improve string parsing performance
*(Mykola Bilochub)*
[#220](#220)
* **lib:** optimize connection events
*(Denys Otrishko)*
[#222](#222)
**\[semver-major\]**
* **lib:** refactor server and client API
*(Denys Otrishko)*
[#209](#209)
**\[semver-major\]**
* **lib,src:** rename term packet usages to message
*(Denys Otrishko)*
[#270](#270)
**\[semver-major\]**
* **lib:** emit events about connection messages
*(Denys Otrishko)*
[#252](#252)
**\[semver-minor\]**
* **lib:** implement API versioning
*(Denys Otrishko)*
[#231](#231)
**\[semver-minor\]**
* **lib:** allow to set event handlers in application
*(Denys Otrishko)*
[#286](#286)
**\[semver-minor\]**
* **lib:** allow to broadcast events from server
*(Denys Otrishko)*
[#287](#287)
**\[semver-minor\]**
* **connection:** make callback method private
*(Alexey Orlenko)*
[#306](#306)
**\[semver-major\]**
* **lib:** implement sessions
*(Mykola Bilochub)*
[#289](#289)
**\[semver-major\]**
* **connection:** use ping-pong instead of heartbeat
*(Dmytro Nechai)*
[#303](#303)
**\[semver-major\]**
* Introduce the concept of authentication strategies. * Implement `login` and `anonymous` strategies. * Make handshake packets include the strategy as an action field. * Update tests. * Update docs. Refs: metarhia/jstp#35 (comment) PR-URL: metarhia/jstp#54
* Introduce the concept of authentication strategies. * Implement `login` and `anonymous` strategies. * Make handshake packets include the strategy as an action field. * Update tests. * Update docs. Refs: metarhia/jstp#35 (comment) PR-URL: metarhia/jstp#54
loginandanonymousstrategies.Refs: #35 (comment)
See more details about the implementation in the updated
doc/protocol.md.