Upcoming account system

General discussion of the port and Doom-related chat.
Watermelon
Zandrone
Posts: 1244
Joined: Thu Jun 28, 2012 9:07 pm
Location: Rwanda

Upcoming account system

#1

Post by Watermelon » Tue Jan 29, 2013 5:12 pm

Upcoming Account System
For those of you who aren't familiar with the talk that has been going around, there is going to be a competitive account system coming out for Zandronum in the near future.
So far this will be only competitive, but depending on the success it may be able to be moved to the mod scene.

- About the account system

The account system will be a server side stored module that keeps track of your stats in duels and ctf, and can be extended in the future to things such as clan rankings, tdm, or other game modes. Each person will have their own custom account with a username, a password, a clan and a team (team is unused right now but space is made for custom tourneys that may come up). Everytime you play, your stats will be updated accordingly. An account is not mandatory and you will be able to play without needing to login or use an account. The majority of us will probably use accounts, but you have no fear of being forced to use such an account.

You will still be able to alias unless the general community does not want to see aliasing done when logged in. How it will work is you will get a username, and logging in will index your account number -- nothing else (for now). Therefore your in game name can be whatever you want (you can even alias at this point in time), but your account name will have to stay the same on the server. Obviously once a name is taken, you can't get it. Since this will be an easily monitored base, if your name is known among the community and someone takes your name I will be able to easily fix that.

Associated with each account is a rank, which probably will be public -- making it slightly harder to alias if you're an epic destructo-machine in duels for example.
Furthermore, ranked matches are optional in duels, private CTF I'm not too sure. There will be no ranked in public CTF games.
It will be all handled in game via a Graphical User Interface with a mouse in game. Therefore, get excited!




- What it will contain

Each account will have a username, password, clan, team and stats per each map. This will consist of your common elements (flags, frags, deaths, pickups, drops, possibly sprees... let your imagination run wild here).

This will all be accessible in game (!) and through a website. The bot will generate your own dynamic webpage, and will generate pages probably for private CTF matches and clan scrims much like the IDL site has. It will all be automated, and you can view with your own pleasure. Maybe if the Zandro devs add server-side demos there could even be demo uploads. Who knows.

NOTE: There will be per-map stats, and then your overall stats (overall for duels, ctf...etc)




- Usernames/passwords (is my account safe?)

You will log in through a GUI (and mouse) by clicking on a keyboard on screen to enter your username/password. Sorry I can't plug directly into the keyboard you use but zdoom No'd that request and it's pretty complicated to do such a thing right now unless a dev wants to help integrate it into ACS.

Now entering that in each time would suck, so there will be a 'remember me' option.

Your password will NOT be stored in the servers. What I will be doing is hashing it up into a scrambled mess that cannot be 'unscrambled' and this will be stored on the server. I figure this is the safest thing to do, though if you forget your password then I will not be able to retrieve it (and in this case you'll have to manually come to me and get me to issue you a new password). Giving you the scrambled password would do nothing because if you enter that, then the scrambled pass will just get scrambled again leaving you locked out still.

Since you are pressing buttons on a screen, keyloggers won't be able to steal it (but screen recorders can).

Demos may possibly show the user/pass being entered, which is why I will be asking everyone to check the "remember me" box when the time comes (it will be on by default) so that demos won't record you entering it in.

If someone hacks your account somehow, there will be backups every so often and I'll just revert it. Furthermore we can go to the staff with the IP of the person and pursue further action if you're pissed off enough. You should really get your own custom password for this and not use 'one-pass-for-everything' for ultimate safety. I can only prevent so much.

If people want I could also make a 'lockout IP/logging in for account after X tries', though I'd be sort of shocked if someone tried brute forcing someones account on here.




- Location

This will so far only be happening on Best Ever servers. Jenova has been kind enough to let me have some server space on his epic server. No european servers are expected at this date (and would require construction of a self-communicating bot which would be a bit messy, but the idea is not off the table).
Feel free to thank him next time you see him when this gets rolling.




- Wbuild

Servers using this will be using wbuild, but there will be the option to play with the features turned off; your options will be as follows:
  • Allow wbuild for both players (on by default)
  • Disallow it for yourself
  • Disallow it for everyone in the server
WBuild is a modification designed for competitive gameplay. Some people like some of the features, and may dislike some. My goal is to have everything optional so you can play completely vanilla if you wish.






Conclusion

This will not be happening in the immediate future because I'm quite busy with university work, though the foundation for everything above has been laid out and tested. Maybe in a few weeks if I'm lucky. Thus far all that really needs to be done is the ACS for communicating between you to/from the server and everything will be operational. The ranking system is a modified ELO ranking system (as seen in the world famous chess ranking system).

If you have any input you would like to share or ideas you think could be implemented, please feel free to post here. This may be a community standard one day as many mods would love to use an account system/connect to a database (much like Jumpmaze does, but here on a more epic scale hopefully).

I also need GUI graphics. If you want to contribute here, your work will go down possibly in history.
Last edited by Watermelon on Tue Jan 29, 2013 6:41 pm, edited 1 time in total.

User avatar
Torvald
Forum Regular
Posts: 488
Joined: Tue Jun 26, 2012 3:14 am
Location: Nothern Hemisphere

RE: Competitive account system

#2

Post by Torvald » Tue Jan 29, 2013 5:13 pm

OH man, shits getting real now. I'm so psyched for this!
Cyber: was chased by cowboys
Nautilus: Cowboys? more like a buncha kids chasing a fucking ice cream truck
UnixAssassin wrote: The definition of cheating is not this: Using an aim assisting tool in a game
BEST.EVER.
Teamspeak: WUMBO.CA

one_Two
Addicted to Zandronum
Posts: 1753
Joined: Thu Jun 07, 2012 4:47 pm

RE: Competitive account system

#3

Post by one_Two » Tue Jan 29, 2013 5:39 pm

Thanks for doing this water, could you describe the problems with getting it to work on Euro servers a bit more?

Watermelon
Zandrone
Posts: 1244
Joined: Thu Jun 28, 2012 9:07 pm
Location: Rwanda

RE: Competitive account system

#4

Post by Watermelon » Tue Jan 29, 2013 5:46 pm

one_Two wrote: Thanks for doing this water, could you describe the problems with getting it to work on Euro servers a bit more?
- Cost for a reliable good non-laggy server (requires dedicated since almost all VPS's are bad, which is >90$ USD usually)

- Communication (code-wise) with the main server (BE) that is hosting it would be extra work to ensure synchronization between both




Top point is limiting me the most.

Maybe Konar would be able to help but I do not want to name-drop him or make it seem like I expect any more of him than what he does for the community at the moment.
Last edited by Watermelon on Tue Jan 29, 2013 5:47 pm, edited 1 time in total.

Catastrophe
Retired Staff / Community Team Member
Posts: 2565
Joined: Sat Jun 02, 2012 2:44 am

RE: Competitive account system

#5

Post by Catastrophe » Tue Jan 29, 2013 5:49 pm

Get excited guys, this is the beginning of something epic

User avatar
Hammerfest-
Forum Regular
Posts: 209
Joined: Sat Jun 02, 2012 2:45 am
Clan: A3.33333333333333333
Clan Tag: A3.33333333

RE: Competitive account system

#6

Post by Hammerfest- » Tue Jan 29, 2013 5:55 pm

Finally, some action.

This gonna b gud, dawgs.
Swift as a breeze, fierce as a gale.

User avatar
Ænima
Addicted to Zandronum
Posts: 3575
Joined: Tue Jun 05, 2012 6:12 pm

RE: Upcoming account system

#7

Post by Ænima » Tue Jan 29, 2013 6:57 pm

OH SHIT SON


Can't wait until this makes its way to us modders. I have so many ideas.
Reinforcements: midgame Survival joining/respawning
Doom64: Unabsolved: Doom64 + Diablo II
ZandroSkins: a pack made by our community
AeniPuffs: 3D blood and bullet puff effects, free to use for your own mods
Squad Radio: a WASD-based radio chat menu, add your own custom sounds!
Mercenaries (on hold)
Image

Strych6
Forum Regular
Posts: 239
Joined: Sun Sep 16, 2012 6:17 am
Location: West

RE: Upcoming account system

#8

Post by Strych6 » Tue Jan 29, 2013 7:21 pm

Watermelon wrote: let your imagination run wild here).
I'd love a (maybe optional graph) display of how many kills on each weapon. in further detail, it'd be important to display how many rockets fired to juxtapose with rocket kill count. As with bfg ball

A lot of these parameters could have a last effect on gameplay so careful!
Image

User avatar
mr fiat
Frequent Poster Miles card holder
Posts: 858
Joined: Tue Jun 05, 2012 3:28 pm
Location: netherlands

RE: Upcoming account system

#9

Post by mr fiat » Tue Jan 29, 2013 7:57 pm

Watermelon wrote: WBuild is a modification designed for competitive gameplay. Some people like some of the features, and may dislike some. My goal is to have everything optional so you can play completely vanilla if you wish.
I am REALLY glad it is possible to disable this when it comes out, because I'm not really looking forward to this.

Watermelon
Zandrone
Posts: 1244
Joined: Thu Jun 28, 2012 9:07 pm
Location: Rwanda

RE: Upcoming account system

#10

Post by Watermelon » Tue Jan 29, 2013 8:31 pm

mr fiat wrote:
Watermelon wrote: WBuild is a modification designed for competitive gameplay. Some people like some of the features, and may dislike some. My goal is to have everything optional so you can play completely vanilla if you wish.
I am REALLY glad it is possible to disable this when it comes out, because I'm not really looking forward to this.
Would you like to provide reasons why for discussions sake?

User avatar
Slyfox
ZanStuff Reviewer
Posts: 568
Joined: Fri Jun 01, 2012 8:45 pm
Location: bottom text
Contact:

RE: Upcoming account system

#11

Post by Slyfox » Tue Jan 29, 2013 8:33 pm

wooo accounts, yeaaaa; I can already tell how bad my K/d would be with my flag count
Also:
"I am glad this is optional, because this idea sucks and I thought I'd share my wonderful optimism with you guys in this thread"

User avatar
piratefinn
 
Posts: 44
Joined: Tue Oct 30, 2012 11:20 pm
Location: UK

RE: Upcoming account system

#12

Post by piratefinn » Tue Jan 29, 2013 9:13 pm

I can see modders now using ACS to save stats such as where skills are spent etc., no more puke 511 :P
"This sorta situation gettin' kinda bad." "Kinda bad? This here's horrible we're gonna DIE!" "Yeah but I ain't worried." "How is you ain't worried?" "'Cus you can smack 'em all with yo dang-a-lang." "Oh snap, you're right." *whips out BFG*
I'm in game as CubedSoul.
Also we need a BFG similar to beta Doom, other words a Christmas gun.

HumanBones
FNF Team
Posts: 92
Joined: Mon Jun 04, 2012 5:39 pm
Contact:

RE: Upcoming account system

#13

Post by HumanBones » Tue Jan 29, 2013 9:55 pm

Glad to see it remaining optional. All you have to do is look at the other examples of how an account system turns from a cool way to collect stats to a way of controlling who plays your port to see how this just flat out does not work.

Some things that concern me: Even though I don't have to sign up for an account, will it be possible for this system to prevent people who don't have accounts from playing on certain servers? AND, can you ban specific accounts from servers? I would certainly hope not. If so, it's a dangerous and slippery slope if I've ever seen one, and I think we all have. If it is purely for the enjoyment of stats and all of that, then neat idea.

Stall
 
Posts: 29
Joined: Wed Sep 26, 2012 5:43 am
Location: Zimbabwe

RE: Upcoming account system

#14

Post by Stall » Tue Jan 29, 2013 10:20 pm

Yes.

This looks sexy awesome super cool fun times.

It will also show everyone I'm the best.... Jenova is the best too.... So is Sabertooth, no doubt about it!

Jenova
Under Moderation
Posts: 199
Joined: Fri Jun 08, 2012 8:05 am
Location: Africa
Contact:

RE: Upcoming account system

#15

Post by Jenova » Tue Jan 29, 2013 10:42 pm

Stall wrote: Yes.

This looks sexy awesome super cool fun times.

It will also show everyone I'm the best.... Jenova is the best too.... So is Sabertooth, no doubt about it!
Good call my friend, I am looking forward to this.

Eonfge
 
Posts: 67
Joined: Thu Jun 07, 2012 8:41 am
Location: The Netherlands
Contact:

RE: Upcoming account system

#16

Post by Eonfge » Tue Jan 29, 2013 11:22 pm

It's a very interesting system and I'm glad with your idea of implementation. I am a strong advocate of 'free in beer and in freedom' and it would be a shame if Zandronum would slide down too the ZDaemon standard.

Hope you can get the system to work and who knows what great things can come from it. As long as it's optional to hosts and clients.

User avatar
AlexMax
Forum Regular
Posts: 244
Joined: Tue May 29, 2012 10:14 pm
Contact:

RE: Upcoming account system

#17

Post by AlexMax » Tue Jan 29, 2013 11:26 pm

I have long advocated an optional user identification system with ACS hooks, and think you've got a good thing going here. However, I take issue with your implementation:
Watermelon wrote:You will log in through a GUI (and mouse) by clicking on a keyboard on screen to enter your username/password. Sorry I can't plug directly into the keyboard you use but zdoom No'd that request and it's pretty complicated to do such a thing right now unless a dev wants to help integrate it into ACS.
This seems to me like a gigantic mistake. Instead of implementing this through some sort of in-game wizardy, a much better idea would be to coordinate with Torr Samaho to implement some sort of server-login system into the client itself. For example, you could perhaps implement a simple menu screen that accepts a login and password entered via keyboard, and either bring it up immediately upon connecting to the server or have "Login to server" as an option in the "join game" menu.

Creating such a screen in the client seems to me like it would be trivial, making use of the menu system that is already there. The tricky part would be figuring out how to send the login packet securely, but since you would be dealing with actual packets instead of ZDoom wizardry, at least you have options at this point.

The downside is that it would mean that you would have to wait until 1.1 to use it, but when it finally comes out, the gains in user experience would be so worth it.
Now entering that in each time would suck, so there will be a 'remember me' option.
How is the "remember me" function going to work? How can it differentiate between two different clients who are at the same IP address? I think perhaps some sort of "cookie" might be possible by setting a clientside variable that you could use as a session identifier perhaps...
Your password will NOT be stored in the servers. What I will be doing is hashing it up into a scrambled mess that cannot be 'unscrambled' and this will be stored on the server. I figure this is the safest thing to do, though if you forget your password then I will not be able to retrieve it (and in this case you'll have to manually come to me and get me to issue you a new password). Giving you the scrambled password would do nothing because if you enter that, then the scrambled pass will just get scrambled again leaving you locked out still.
I must insist that you use bcrypt as your hashing function. :)
Since you are pressing buttons on a screen, keyloggers won't be able to steal it (but screen recorders can).
Note that a targeted attack is possible simply by listening in on network traffic, since Skulltag Client <-> Skulltag Server traffic is not encrypted at all.

If someone hacks your account somehow, there will be backups every so often and I'll just revert it. Furthermore we can go to the staff with the IP of the person and pursue further action if you're pissed off enough. You should really get your own custom password for this and not use 'one-pass-for-everything' for ultimate safety. I can only prevent so much.
If people want I could also make a 'lockout IP/logging in for account after X tries', though I'd be sort of shocked if someone tried brute forcing someones account on here.
I would go ahead and implement this anyway. I imagine someone with knowledge of Zandronum's network protocol could cook up a headless bruteforcer pretty trivially, why leave it to chance.
This will so far only be happening on Best Ever servers. Jenova has been kind enough to let me have some server space on his epic server. No european servers are expected at this date (and would require construction of a self-communicating bot which would be a bit messy, but the idea is not off the table).
You might want to revisit my idea of a separate login server:

- Client connects to Server
- Server sends back login token X.
- Client sends login token X and user/pass to third-party login server
- Third party login server verifies or denies the client.
- Third party login server sends a message to Server saying Client with login token X is accepted/deined.
The only limit to my freedom is the inevitable closure of the
universe, as inevitable as your own last breath. And yet,
there remains time to create, to create, and escape.

Escape will make me God.

Watermelon
Zandrone
Posts: 1244
Joined: Thu Jun 28, 2012 9:07 pm
Location: Rwanda

RE: Upcoming account system

#18

Post by Watermelon » Wed Jan 30, 2013 12:10 am

AlexMax wrote:
Watermelon wrote:You will log in through a GUI (and mouse) by clicking on a keyboard on screen to enter your username/password. Sorry I can't plug directly into the keyboard you use but zdoom No'd that request and it's pretty complicated to do such a thing right now unless a dev wants to help integrate it into ACS.
This seems to me like a gigantic mistake. Instead of implementing this through some sort of in-game wizardy, a much better idea would be to coordinate with Torr Samaho to implement some sort of server-login system into the client itself. For example, you could perhaps implement a simple menu screen that accepts a login and password entered via keyboard, and either bring it up immediately upon connecting to the server or have "Login to server" as an option in the "join game" menu.

Creating such a screen in the client seems to me like it would be trivial, making use of the menu system that is already there. The tricky part would be figuring out how to send the login packet securely, but since you would be dealing with actual packets instead of ZDoom wizardry, at least you have options at this point.

The downside is that it would mean that you would have to wait until 1.1 to use it, but when it finally comes out, the gains in user experience would be so worth it.
Great stuff here!

If it helps:
- There's currently a tracker ticket for openSSL: http://zandronum.com/tracker/view.php?id=1176
The only problem is I'm unfamiliar with how to run/compile this properly, though I think this option would definitely be the best. Adding the stuff to the menu would be I think quick and easy, I just don't know about the openSSL part. If someone could do a quick confirmation it'd speed this up a lot.

Ideally I'd rather go the route you said above, because rather than me making some obscure huge-coded module, it'd be nice and easy to get accounts through it, and then just have ACS deal with the other stuff.
AlexMax wrote:
Now entering that in each time would suck, so there will be a 'remember me' option.
How is the "remember me" function going to work? How can it differentiate between two different clients who are at the same IP address? I think perhaps some sort of "cookie" might be possible by setting a clientside variable that you could use as a session identifier perhaps...
I was thinking of doing that for people who share a computer. It'd probably have to store it in an .ini file somewhere. The only problem with this is that someone could go through it. I was going to hopefully write some kind of obfuscation with ACS to make it safer but someone if they had enough time and patience could crack it. That's why I'd love the openSSL part because it removes the headache here.
AlexMax wrote:
Your password will NOT be stored in the servers. What I will be doing is hashing it up into a scrambled mess that cannot be 'unscrambled' and this will be stored on the server. I figure this is the safest thing to do, though if you forget your password then I will not be able to retrieve it (and in this case you'll have to manually come to me and get me to issue you a new password). Giving you the scrambled password would do nothing because if you enter that, then the scrambled pass will just get scrambled again leaving you locked out still.
I must insist that you use bcrypt as your hashing function. :)
I'm definitely going to be using this instead, I found out apparently md5's can be cracked easily with a good enough computer
AlexMax wrote:
This will so far only be happening on Best Ever servers. Jenova has been kind enough to let me have some server space on his epic server. No european servers are expected at this date (and would require construction of a self-communicating bot which would be a bit messy, but the idea is not off the table).
You might want to revisit my idea of a separate login server:

- Client connects to Server
- Server sends back login token X.
- Client sends login token X and user/pass to third-party login server
- Third party login server verifies or denies the client.
- Third party login server sends a message to Server saying Client with login token X is accepted/deined.
[/quote]

I'm hoping that the openSSL if implemented would do this. I think this would communicate with the master server, would that be your third party server?

User avatar
AlexMax
Forum Regular
Posts: 244
Joined: Tue May 29, 2012 10:14 pm
Contact:

RE: Upcoming account system

#19

Post by AlexMax » Wed Jan 30, 2013 1:10 am

Watermelon wrote:
AlexMax wrote:
Watermelon wrote:You will log in through a GUI (and mouse) by clicking on a keyboard on screen to enter your username/password. Sorry I can't plug directly into the keyboard you use but zdoom No'd that request and it's pretty complicated to do such a thing right now unless a dev wants to help integrate it into ACS.
This seems to me like a gigantic mistake. Instead of implementing this through some sort of in-game wizardy, a much better idea would be to coordinate with Torr Samaho to implement some sort of server-login system into the client itself. For example, you could perhaps implement a simple menu screen that accepts a login and password entered via keyboard, and either bring it up immediately upon connecting to the server or have "Login to server" as an option in the "join game" menu.

Creating such a screen in the client seems to me like it would be trivial, making use of the menu system that is already there. The tricky part would be figuring out how to send the login packet securely, but since you would be dealing with actual packets instead of ZDoom wizardry, at least you have options at this point.

The downside is that it would mean that you would have to wait until 1.1 to use it, but when it finally comes out, the gains in user experience would be so worth it.
Great stuff here!

If it helps:
- There's currently a tracker ticket for openSSL: http://zandronum.com/tracker/view.php?id=1176
The only problem is I'm unfamiliar with how to run/compile this properly, though I think this option would definitely be the best. Adding the stuff to the menu would be I think quick and easy, I just don't know about the openSSL part. If someone could do a quick confirmation it'd speed this up a lot.

Ideally I'd rather go the route you said above, because rather than me making some obscure huge-coded module, it'd be nice and easy to get accounts through it, and then just have ACS deal with the other stuff.
CMake has a FindOpenSSL module built-in.

That said
- OpenSSL has a reputation for being obtuse and poorly documented
- SSL itself relies on TCP, which is unsuitable for an unreliable datagram transport protocol such as UDP.
- DTLS is a thing that exists and is supported by OpenSSL, but again, see my first point.
- As awfully complicated as OpenSSL is, inventing your own form of encryption is almost always a bad idea.
- Encrypting the entire data stream between the client and server would be silly.  All we really care about is making sure nobody can sniff somebody's password in plaintext over-the-wire.

What's the solution? Heck if I know, I've been googling for an hour without any good solutions...yet. But the fact that you have access to the sent packet means that you at least have the option open, so you can punt on the question sending the password over the wire securely until later.
Last edited by AlexMax on Wed Jan 30, 2013 1:11 am, edited 1 time in total.
The only limit to my freedom is the inevitable closure of the
universe, as inevitable as your own last breath. And yet,
there remains time to create, to create, and escape.

Escape will make me God.

Fluffles
Forum Regular
Posts: 150
Joined: Thu Jun 14, 2012 5:23 pm
Location: England (South)

RE: Upcoming account system

#20

Post by Fluffles » Wed Jan 30, 2013 1:06 pm

Bring on ranked duel matchs :smile: . Oi water you done my OS server yet fool. That one will require ranking once this is available ;)
Last edited by Fluffles on Wed Jan 30, 2013 1:06 pm, edited 1 time in total.

Post Reply