123
-=+=- -=+=- -=+=- -=+=- -=+=- -=+=- -=+=- -=+=- -=+=- -=+=- -=+=- -=+=- -=+=- -=+=- -=+=- -=+=- -=+=- -=+=- -=+=- -=+=- -=+=- -=+=- -=+=- -=+=- -=+=- -=+=- -=+=- -=+=- -=+=- -=+=- (c) WidthPadding Industries 1987 0|762|0 -=+=- -=+=- -=+=- -=+=- -=+=- -=+=- -=+=- -=+=- -=+=- -=+=- -=+=- -=+=- -=+=- -=+=- -=+=- -=+=- -=+=- -=+=- -=+=- -=+=- -=+=- -=+=- -=+=- -=+=- -=+=- -=+=- -=+=- -=+=- -=+=- -=+=-
Socoder -> On Topic -> Parlo - secure communication for .NET

Tue, 11 Apr 2023, 09:45
Afr0

Parlo - secure communication for .NET


I made a thing.

This is the first concrete result of all my years working on remaking The Sims Online that is available for public consumption.
I still haven’t added documentation to GitHub, but the API should be pretty straight-forward. I will eventually release this as a NuGet package, and maybe add support for UDP.

Features:

- TCP asynchronous networking, tested locally with 500 clients at the same time.
- Communication encryption with AES or Blowfish.

TODO:

- Compression

Coming soon:

Parlo.SecureProtocol library that automates the process of setting up secure communication using Parlo to exchange session keys securely with SRP6 and then encrypting the (now secure) communication using the session key as a key for AES or Blowfish.

I’m also planning on porting Parlo to C++ which would, amongst other things, provide secure communication to all Blitz-based languages!

Please give this a star if you’re on GitHub!

-=-=-
Afr0 Games

Project Dollhouse on Github - Please fork!
Wed, 12 Apr 2023, 06:37
Afr0
As of about right now, Parlo has a built-in Heartbeat system which means clients will be disposed of by the server if they're no longer connected.
The next thing to tackle is compression, then creating a NuGet package and converting it to C++!

-=-=-
Afr0 Games

Project Dollhouse on Github - Please fork!
Fri, 28 Apr 2023, 04:57
Afr0
Parlo now supports adaptive compression based on the size of the data being sent and the RTT (Round Trip Time).
Now I want to focus on getting test coverage, and then maybe adding UDP support.
Parlo will be released as a NuGet package shortly!
I was convinced that I wanted to convert it to C++ soon, but I think I might put it on the back burner for a while, because I want to continue working on Dollhouse.

-=-=-
Afr0 Games

Project Dollhouse on Github - Please fork!
Fri, 28 Apr 2023, 05:06
Pakz
Project Dollhouse got a lot of stars there
Sat, 06 May 2023, 17:03
Afr0
Parlo has sprouted unit tests, and they're all passing at the moment!
Has also been tested locally with 3k clients.

-=-=-
Afr0 Games

Project Dollhouse on Github - Please fork!
Sat, 06 May 2023, 17:13
Jayenkai
That's great news!
Sun, 07 May 2023, 03:03
Afr0
Thanks
Mon, 21 Aug 2023, 15:55
Afr0
So this took a while, because I was working for EA Games all summer.
But Parlo finally exists as a nuGet package that you can include in your project via the package manager in Visual Studio. Hurray!


It also has a wiki that shows how use it to establish a secure communications channel.

Last but not least, it has been ported to Java. The Java port thus far only supports TCP, and only two of three unit tests have been ported. It *should* work but it might very well not, yet.

I hope this’ll be useful for someone, some day. Let me know if you make a MMO with it!

-=-=-
Afr0 Games

Project Dollhouse on Github - Please fork!
Mon, 21 Aug 2023, 16:00
Kuron
Congrats on the EA gig! Also Kudos on getting this released!
Mon, 21 Aug 2023, 16:01
Afr0
Thanks
Mon, 21 Aug 2023, 16:04
Kuron
Slightly OT, is JAVA still a CF or did Oracle finally settle down and get things straightened out a bit?
Mon, 21 Aug 2023, 16:54
Afr0
Ehhh. Its asynchronous model seems like it was added as an afterthought and designed by committee. But the rest of the language is very kosher. Very similar to C#.

-=-=-
Afr0 Games

Project Dollhouse on Github - Please fork!
Tue, 22 Aug 2023, 01:26
Jayenkai
How is it, working for the man?
Tue, 22 Aug 2023, 01:53
Afr0
EA is the best company I’ve ever worked for! Great colleagues, respectful working environment, free unlimited lattes, snacks etc

-=-=-
Afr0 Games

Project Dollhouse on Github - Please fork!
Tue, 22 Aug 2023, 05:02
Jayenkai
Congrats on success \o/yeay\o/
Tue, 22 Aug 2023, 09:49
Afr0
Thank you!
Tue, 22 Aug 2023, 09:56
Pakz
Seems you did it by the book Make a great 'mod'. Get hired by 'the' company.

Congrads!
Thu, 24 Aug 2023, 01:29
Afr0
I wasn't a developer, I wish I could say I was.
I was a localization tester. It's like being a game tester, only for linguistics.
And it was a summer job/internship kinda thing. But I applied for a permanent position, and I'm waiting for a reply.
I think if I get a foot permanently inside EA it'd be easier to apply for dev positions.

-=-=-
Afr0 Games

Project Dollhouse on Github - Please fork!
Thu, 24 Aug 2023, 23:55
Afr0
I released a quick update yesterday, version 1.1.0
The only difference is that it is also explicitly compiled for .NET (Core) 6.0, so you should be able to use it in those projects if you need to.
.NET Standard 2.1 *should* be compatible with .NET 6.0, but I couldn’t get it to work with my project - the compiler kept insisting that certain delegates were void when in fact they return Task - so I decided to explicitly target both.

Also, slightly unrelated - for the past couple of days I’ve been building a new main branch for Project Dollhouse and last night I made it compile and run again. It now has network capabilities thanks to Parlo so hopefully I’ll be able to release a test version soon, yeay!

-=-=-
Afr0 Games

Project Dollhouse on Github - Please fork!
Mon, 18 Dec 2023, 02:49
Afr0
Parlo now has a Docker container that showcases how to implement a secure login protocol using Parlo.
Hopefully some of you might find it useful! If you just build it as a regular VS project it’ll also produce a standalone app.

-=-=-
Afr0 Games

Project Dollhouse on Github - Please fork!
Mon, 18 Dec 2023, 03:01
Jayenkai
Neato!