rlgwebd: switch to dgamelaunch's SQLite database.

The quickrypt utility is replaced with sqlickrypt, which takes a username
and password pair and checks them against the SQLite password database
used by dgamelaunch.  This will be more extensible to using rlgwebd to
register, change passwords, etc.
This commit is contained in:
John "Elwin" Edwards 2012-05-20 15:52:07 -07:00
parent 94f8630eb4
commit e7bcd4be4a
3 changed files with 84 additions and 53 deletions

View file

@ -296,7 +296,12 @@ function login(req, res, formdata) {
// check the password
if (code != 0) {
sendError(res, 3);
console.log("Password check failed for user " + username);
if (code == 1)
console.log("Password check failed for user " + username);
else if (code == 2)
console.log("Attempted login by nonexistent user " + username);
else
console.log("Login failed: sqlickrypt error " + code);
return;
}
// check for an existing game
@ -306,6 +311,7 @@ function login(req, res, formdata) {
for (var i = 0; i < files.length; i++) {
if (files[i].match(fre)) {
sendError(res, 4, null);
console.log(username + " is already playing " + gname);
return;
}
}
@ -314,27 +320,10 @@ function login(req, res, formdata) {
startgame();
});
}
/* Look for the user in the password file */
fs.readFile(passwdfile, "utf8", function(err, data) {
if (err) {
sendError(res, 3);
console.log("Can't authenticate: " + err.toString());
return;
}
var dlines = data.split('\n');
for (var n = 0; n < dlines.length; n++) {
var fields = dlines[n].split(':');
if (fields[0] == username) {
// check the password with the quickrypt utility
checker = require('child_process').spawn("/bin/quickrypt")
checker.on("exit", checkit);
checker.stdin.end(password + '\n' + fields[2] + '\n', "utf8");
return;
}
}
sendError(res, 3);
console.log("Attempted login by nonexistent user " + username);
});
/* Launch the sqlickrypt utility to check the password. */
var checker = require('child_process').spawn("/bin/sqlickrypt");
checker.on("exit", checkit);
checker.stdin.end(username + '\n' + password + '\n', "utf8");
return;
}