Author Topic: Global Login System (Implementation Discussion)  (Read 83199 times)

AgentSmith

  • VM-68
  • Posts: 159
Re: Global Login System (Implementation Discussion)
« Reply #60 on: June 08, 2006, 03:10:58 PM »
Just an Idea how to trick whole system:

If I'm just fast, download build 17 and then quickly call my self "jitspoe" and create an account on that dpball.com server, I would be jitspoe without any probs!
(jitspoe is just anexample...)

Will there be possibility of having 2 nicks?

I think something like a Web-Interface would be cool, where I can add and delete Nicknames I am actually using..

Smokey

  • Autococker
  • Posts: 1172
Re: Global Login System (Implementation Discussion)
« Reply #61 on: June 08, 2006, 03:27:08 PM »
nah, im sure if someone takes  a players name jitspoe will help us out and delete the name under that persons account.

Smokey

  • Autococker
  • Posts: 1172
Re: Global Login System (Implementation Discussion)
« Reply #62 on: June 08, 2006, 03:27:22 PM »
im regging newbie

jitspoe

  • Administrator
  • Autococker
  • Posts: 18802
Re: Global Login System (Implementation Discussion)
« Reply #63 on: June 08, 2006, 03:39:02 PM »
Intentional name theft will incur some kind of stiff penalty, such as a global ban, or at least an account suspension, so don't do it.  There are plenty of server logs, so it should be easy to determine who legitimately uses a name.  There will also be reserved names that people can't use for logins, such as "newbie."

bug

  • 68 Carbine
  • Posts: 335
Re: Global Login System (Implementation Discussion)
« Reply #64 on: June 08, 2006, 04:40:05 PM »
Also, you mentioned that case did not matter in names. If the actual eR33t player BoB registers the name [eR33t]BoB, will that allow someone else to register [eR33T]BoB [er33t]bob [ER33T]BOB, etc? Another question, will we be able to change our names at will after using our global-login name? It would be quite a hindrance if you could never change your name for a clan change, new name idea, etc.

Smokey

  • Autococker
  • Posts: 1172
Re: Global Login System (Implementation Discussion)
« Reply #65 on: June 08, 2006, 05:03:02 PM »
read the topic. all those questions are answered.

jitspoe

  • Administrator
  • Autococker
  • Posts: 18802
Re: Global Login System (Implementation Discussion)
« Reply #66 on: June 26, 2006, 04:15:55 PM »
I'm working on the database side of it now.  I haven't done much with databases, but here's what I have so far:

User account table:
id|timestamp|passwdhash|pubkey|encprivkey|randstr|email|realname|primarynameid
- id & timestamp are auto
- password hash is for the web logins
- pubkey is for RSA encryption used with in-game logins.
- randstr is generated every login
- encprivkey is an encrypted copy of the user's private RSA key, in case the user ever reinstalls or plays on a different machine where his profile doesn't exist.
- primarynameid is the id for the name the player primarily uses.

Name-account id remap table:
id|timestamp|name|playerid
This table simply maps a player name back to a user account.

Name history table:
id|timestamp|name|playerid
Keeps a history of names used with a particular account.

Clan table:
id|timestamp|name|tag|website|ircchan

Clan member table:
id|timestamp|clanid|playerid|memberstatus
Pretty straightforward -- maps player id's and clan id's together, so you can tell which players belong to a clan, and visa versa.  Member status would be a flag field for things like leader, co-leader, active/inactive, etc.

I've installed a local copy of mySQL to tinker with so I don't blow anything up. :)

supertanker

  • VM-68
  • Posts: 127
Re: Global Login System (Implementation Discussion)
« Reply #67 on: July 04, 2006, 03:42:24 PM »
Two suggestions:

First, when you do any sort of table joining (EG, to find out what clan a user belongs to), conflicting field names (such as ID) can be a problem. I would make it look like:


User account table:
userid|timestamp|passwdhash|pubkey|encprivkey|randstr|email|realname|primarynameid
Name-account id remap table:
id|timestamp|name|playerid
This table simply maps a player name back to a user account.

Name history table:
nameid|timestamp|name|playerid
Keeps a history of names used with a particular account.

Clan table:
clanid|timestamp|name|tag|website|ircchan

Clan member table:
id|timestamp|clannum|playerid|memberstatus

Or similar.

Of course, the forum has a built in user database....

jitspoe

  • Administrator
  • Autococker
  • Posts: 18802
Re: Global Login System (Implementation Discussion)
« Reply #68 on: July 04, 2006, 06:12:44 PM »
What's the second suggestion?

supertanker

  • VM-68
  • Posts: 127
Re: Global Login System (Implementation Discussion)
« Reply #69 on: July 05, 2006, 05:35:24 PM »
It was going to be to modify the forum's database, but I forgot I already suggested that.

Ummm....maybe a sort of Karma or Rating system?

Like, add the column "userkarma" as an INT, from 1 to 10. When someone registers make it start at 5 as default, and users can rate others for behavior

TinMan

  • Autococker
  • Posts: 1347
Re: Global Login System (Implementation Discussion)
« Reply #70 on: July 05, 2006, 05:54:22 PM »
Psh, but then Jitspoe would be at 2 just for jokes and Vinne would be at 10, it wouldn't be very realistic.

jitspoe

  • Administrator
  • Autococker
  • Posts: 18802
Re: Global Login System (Implementation Discussion)
« Reply #71 on: July 06, 2006, 12:12:14 PM »
I was planning to do something like that a while back.  It's a nice idea in theory, but like TinMan said, in practice, it just doesn't work out very well.  One of the forums I visit has something like that, and the people who are constantly spamming annoying posts somehow manage to get high ratings, while the people who post fewer, more constructive posts don't get much.  That and I can see the trouble makers in the community grouping up and giving each other positive rating while picking on a few select members they don't like and, as a group, giving them significant negative rating.

Anyway, that goes above and beyond the basic login system.  Those kinds of things can be added later.  Right now I'm working on the structure to simply let people log in and reserve names and clan tags.

mischief

  • PGP
  • Posts: 9
Re: Global Login System (Implementation Discussion)
« Reply #72 on: July 07, 2006, 03:01:07 AM »
Could you incorporate a stats system into this? like where you can login to a stats database on the site and look up your stats, and maybe a buddy list.

Just throwing out ideas/suggestions.

If someone already asked about this, sorry. I didnt read the whole discussion. :D

Pimp

  • VM-68
  • Posts: 122
Re: Global Login System (Implementation Discussion)
« Reply #73 on: July 07, 2006, 04:45:55 AM »
I can only recommend you to read it, it's very intresting what jit's talking about and also to see how this login system is moving forward.

mischief

  • PGP
  • Posts: 9
Re: Global Login System (Implementation Discussion)
« Reply #74 on: July 07, 2006, 05:06:21 AM »
Yeah I read through some of it, didnt know if i missed a stats comment or not. :D

jitspoe

  • Administrator
  • Autococker
  • Posts: 18802
Re: Global Login System (Implementation Discussion)
« Reply #75 on: July 07, 2006, 03:15:49 PM »
This is the first step toward a stats system.  Right now I'm just creating the login system.

GreenAffairz

  • Autococker
  • Posts: 515
Re: Global Login System (Implementation Discussion)
« Reply #76 on: July 08, 2006, 04:10:03 PM »
A buddy list would be pretty cool.

bitmate

  • Autococker
  • Posts: 1248
Re: Global Login System (Implementation Discussion)
« Reply #77 on: July 08, 2006, 04:59:26 PM »
... and add Vinne to the buddy list by default!

Eiii

  • Autococker
  • Posts: 4595
Re: Global Login System (Implementation Discussion)
« Reply #78 on: July 08, 2006, 05:58:59 PM »
Why would you need a buddy list? If you're trying to find someone there are never more than 4 or 5 servers full, and jit's server browser lists clients. :P

jitspoe

  • Administrator
  • Autococker
  • Posts: 18802
Re: Global Login System (Implementation Discussion)
« Reply #79 on: July 09, 2006, 02:54:16 PM »
What does a buddy list have to do with logins?  Anyway, here's what I have for the DB so far.  Still a work in progress:

Code: [Select]
CREATE TABLE `dplogin_accounts` (
  `id` int UNSIGNED NOT NULL auto_increment,
  `timestamp` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
  `pwhash` char(32) NOT NULL,
  `pubkey` VARBINARY(128) NOT NULL,
  `encprivkey` VARBINARY(128) NOT NULL,
  `email` varchar(255) collate utf8_bin NOT NULL default '',
  `realname` varchar(64) collate utf8_bin NOT NULL default '',
  `flags` INT UNSIGNED NOT NULL,
  PRIMARY KEY  (`id`),
  INDEX (email(8))
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_bin COMMENT='Account' AUTO_INCREMENT=1;


CREATE TABLE `dplogin_names` (
  `id` INT UNSIGNED NOT NULL AUTO_INCREMENT,
  `timestamp` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
  `name` varchar(32) collate utf8_bin NOT NULL default '',
  `playerid` int UNSIGNED NOT NULL,
  PRIMARY KEY  (`id`),
  INDEX (name(8)),
  INDEX (playerid)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_bin COMMENT='Name to ID remap';


CREATE TABLE `dplogin_clans` (
  `id` int UNSIGNED NOT NULL auto_increment,
  `timestamp` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
  `name` varchar(64) collate utf8_bin NOT NULL default '',
  `tag` varchar(16) collate utf8_bin NOT NULL default '',
  `website` varchar(255) collate utf8_bin NOT NULL default '',
  `ircchan` varchar(32) collate utf8_bin NOT NULL default '',
  PRIMARY KEY  (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_bin COMMENT='Account' AUTO_INCREMENT=1;


CREATE TABLE `dplogin_clanmembers` (
  `id` INT UNSIGNED NOT NULL AUTO_INCREMENT,
  `timestamp` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
  `clanid` int UNSIGNED NOT NULL,
  `playerid` int UNSIGNED NOT NULL,
  PRIMARY KEY  (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_bin COMMENT='Name to ID remap' AUTO_INCREMENT=1;


CREATE TABLE `dplogin_ips` (
  `id` int UNSIGNED NOT NULL AUTO_INCREMENT,
  `ip` varchar(16)  collate utf8_bin NOT NULL default 'BADIP',
  PRIMARY KEY (`id`)
) COMMENT='IP Tracking Table' CHARSET=utf8 COLLATE=utf8_bin AUTO_INCREMENT=1;


CREATE TABLE `dplogin_hardwareids` (
  `id` int UNSIGNED NOT NULL AUTO_INCREMENT,
  `hardwareid` char(32)  collate utf8_bin NOT NULL default 'BADHWID',
  `hardwareidtype` INT UNSIGNED NOT NULL,
  PRIMARY KEY (`id`)
) COMMENT='IP Tracking Table' CHARSET=utf8 COLLATE=utf8_bin AUTO_INCREMENT=1;


CREATE TABLE `dplogin_connectinfo` (
  `id` INT UNSIGNED NOT NULL AUTO_INCREMENT,
  `playerid` INT UNSIGNED NOT NULL,
  `ipid` INT UNSIGNED NOT NULL,
  `hardwareid1` INT UNSIGNED NOT NULL,
  `hardwareid2` INT UNSIGNED NOT NULL,
  `hardwareid3` INT UNSIGNED NOT NULL,
  `hardwareid4` INT UNSIGNED NOT NULL,
  `hardwareid5` INT UNSIGNED NOT NULL,
  `hardwareid6` INT UNSIGNED NOT NULL,
  PRIMARY KEY (`id`)
) COMMENT='Maps acconuts to IPs and hardware IDs.' CHARSET=utf8 COLLATE=utf8_bin AUTO_INCREMENT=1;