Commit graph

511 commits

Author SHA1 Message Date
Jonathan Barrow
e1d1dfe90a Removed broken pings and fixed client state reuse
Ping packets were never being sent from the server. This is now fixed. Also removed the buggy StartPing loop, which never worked due to struct properties not being updated in different goroutine threads. Ping packets now get sent from the server whenever one is sent from the client

Client states were also being reused when a connection was made with an existing port on the same console, which broke NNID switching. Client states now get reset when connections begin
2020-02-16 16:48:54 -05:00
Jonathan Barrow
5bfbd6ee09 Made server more concurrent
Server should now be able to handle concurrent connections from more clients
2020-01-31 23:18:26 -05:00
Jonathan Barrow
82c62bc806 Added ping timeout check 2020-01-31 13:08:37 -05:00
Jonathan Barrow
c124c9a204 Added Kick method to server and disconnect kicking 2020-01-31 03:28:06 -05:00
Jonathan Barrow
17208659c4 Error handling and data validation
Now validates data before passing it to crunch in order to avoid buffer read/write out of bounds panics. This API update is breaking and all code using it will need to be updated
2020-01-31 02:50:23 -05:00
Jonathan Barrow
ca8b98c807 bump crunch version 2020-01-29 18:18:28 -05:00
Jonathan Barrow
70daceae50 updated structures to take in StreamOut in Bytes
Structure.Bytes() now requires an instance of StreamOut. This is so any Structures who contain properties which are also Structures can be passed the same stream during their encoding process and retain the stream content/settings
2020-01-27 15:10:44 -05:00
Jonathan Barrow
8ab25b0f16 new stream implementation and Structure type handling
Split the Stream struct into 2 separate stream types for clearer intent. Also now pass them a reference to the server pointer to access server config (namely the NEX minor version)

Structure NEX types are now being implemented (a push to nex-protocols-go will follow shortly). However the implementation is pretty jank and could use some work. Currently uses emulated inheritance
2020-01-26 21:38:33 -05:00
Jonathan Barrow
11bd735033 PRUDPv1 and goroutines
Added goroutines to packet handlers and added just enough of PRUDPv1 to get Super Mario Maker connecting
2020-01-24 18:14:04 -05:00
Jonathan Barrow
f75b44113a Added qBuffer read support to stream 2020-01-19 16:14:44 -05:00
Jonathan Barrow
d8804c76f9 Update rmc.go 2020-01-18 23:36:52 -05:00
Jonathan Barrow
7713999b7a removed debug field and added missing godoc comments 2020-01-17 12:57:30 -05:00
Jonathan Barrow
8e489e4165 Complete rewrite 2020-01-17 12:42:59 -05:00
superwhiskers
894de44ff4
Merge pull request #8 from Virepri/refactor/crunch
Remove streams in favor of crunch
2019-08-29 11:18:24 -05:00
Adele Reed
6d516d160d Replace used bytes.Buffers with crunch buffers 2019-08-11 22:21:10 -07:00
Adele Reed
f1f02ad30c Finish stream removal with kerberos.go 2019-08-11 16:07:16 -07:00
Adele Reed
582c07a95c Refactor rmc to use crunch instead of streams 2019-08-11 16:03:28 -07:00
Adele Reed
c31644abca Refactor packet_v1 to use crunch instead of streams 2019-08-11 15:59:57 -07:00
Adele Reed
d8f080807a Refactor packet_v0 to use crunch instead of streams 2019-08-11 15:42:39 -07:00
Adele Reed
c157d16a3c Add gitignore for Jetbrains files, include crunch in go.mod 2019-08-11 15:42:17 -07:00
SuperMarioDaBom
547d4ed6a5 made some adjustments; can't guarentee this'll work as intended though 2019-05-26 15:31:27 -07:00
RedDucks
3db4831968
Merge pull request #7 from Stary2001/pr
Miscellaneous improvements + fixes
2019-01-15 19:26:22 -05:00
Ezekiel Bethel
b564a9c890 +1 -> +4 in RMCResponse.Bytes() 2019-01-15 22:40:08 +00:00
Ezekiel Bethel
7b200b9e16 syntax + comment fixes 2019-01-15 22:21:28 +00:00
Ezekiel Bethel
dfa28c0be0 Fix RMC sizes being off by 4, fix acks missing their signatures. 2019-01-15 21:53:13 +00:00
Ezekiel Bethel
f9afc4d8a5 SetCipher->SetKey, added AcknowledgeWithPayload 2019-01-15 18:23:48 +00:00
Ezekiel Bethel
4be4ec432b NEX stream additions 2018-12-24 17:57:47 +00:00
RedDucks
f2f3e75777
Merge pull request #6 from RedDuckss/master
Made RMC requests stream based
2018-10-11 13:07:12 -04:00
RedDuckss
4817764086 Made RMC requests stream based 2018-10-08 20:05:29 -04:00
RedDucks
9849844a24
Merge pull request #5 from RedDuckss/master
Made v0 stream-based
2018-10-02 18:02:53 -04:00
RedDuckss
ffb2e1fb5d Made v0 stream-based like v1 2018-10-02 18:01:03 -04:00
RedDucks
2eb470426e
Merge pull request #4 from RedDuckss/master
Updated README to have a basic example
2018-10-02 17:29:34 -04:00
RedDuckss
444749f792 Updated README to have a basic example 2018-10-02 17:28:10 -04:00
RedDucks
f478ebe45d
Merge pull request #3 from RedDuckss/master
Some small code clean up
2018-10-02 17:20:23 -04:00
RedDuckss
a8e90ad38b Some small code clean up 2018-10-02 17:18:54 -04:00
RedDucks
4860e91213
Merge pull request #2 from RedDuckss/master
Added GoDoc comments on exported values
2018-10-02 17:12:07 -04:00
RedDuckss
2b0a8d8ea6 Added GoDoc comments on exported values 2018-10-02 17:10:59 -04:00
RedDucks
a4c486fca4
Merge pull request #1 from RedDuckss/master
Basic v1 implementation (still kinda broken)
2018-10-02 17:05:43 -04:00
RedDuckss
24ee0aad2b Basic v1 implementation (still kinda broken) 2018-10-02 17:02:36 -04:00
RedDuckss
686a59737c Properly send fragmented packets + godoc comments
Server now properly splits the packet payload into multiple fragments if needed.

Server settings now properly get defaults.

Added the basis for compression support, though it doesn't do anything right now.

Removed unused NEX type structs.

And finally, fixed all godoc and other linting issues.
2018-09-26 21:42:48 -04:00
RedDuckss
126a1016cb Minor updates 2018-09-25 10:10:20 -04:00
RedDuckss
c19f0e7dda It work now 2018-09-18 22:05:12 -04:00
RedDuckss
d0138036ed RMC fixes and README updated 2018-09-18 19:22:25 -04:00
RedDuckss
71a1387f0e RC4 and session ID fixes 2018-09-18 18:50:11 -04:00
SuperMarioDaBom
acfc4c10c6 Quick patch - Added OR by 0x80 to ProtocolID in RMC 2018-09-17 23:16:36 -07:00
RedDuckss
2f60727e4e restructure and, rewrite. Things do things now 2018-09-18 00:25:31 -04:00
RedDuckss
6fb0e6b78f defaults 2018-08-28 13:40:15 -04:00
RedDuckss
c1200be076 v0 checksum tweaks 2018-08-27 01:50:12 -04:00
RedDuckss
4416ea2764 Small reworks 2018-08-27 00:35:25 -04:00
RedDuckss
8d25f65d8b Bug fix 2018-08-16 03:21:41 -04:00