thelounge/src/clientManager.js

95 lines
1.7 KiB
JavaScript
Raw Normal View History

2014-08-14 01:43:11 +02:00
var fs = require("fs");
2014-08-14 03:51:54 +02:00
var Client = require("./client");
2014-08-14 01:43:11 +02:00
module.exports = ClientManager;
function ClientManager() {
2014-08-14 03:51:54 +02:00
this.clients = {};
2014-08-14 01:43:11 +02:00
}
2014-08-14 03:51:54 +02:00
ClientManager.prototype.loadUsers = function(sockets) {
2014-08-14 01:43:11 +02:00
var users = this.getUsers();
2014-08-14 03:51:54 +02:00
for (var i in users) {
if (name == "example") {
continue;
}
var name = users[i];
var json = this.loadUser(name);
if (!json) {
continue;
}
if (!this.clients[name]) {
this.clients[name] = new Client(
sockets,
json
);
}
}
};
ClientManager.prototype.loadUser = function(name) {
try {
var json = fs.readFileSync("users/" + name + "/user.json", "utf-8");
json = JSON.parse(json);
} catch(e) {
console.log(e);
return;
}
return json;
2014-08-14 01:43:11 +02:00
};
ClientManager.prototype.getUsers = function() {
var users = [];
try {
users = fs.readdirSync("users/");
} catch(e) {
console.log(e);
return;
}
return users;
};
2014-08-14 03:51:54 +02:00
ClientManager.prototype.addUser = function(name, password) {
2014-08-14 01:43:11 +02:00
var users = this.getUsers();
if (users.indexOf(name) !== -1) {
console.log("User '" + name + "' already exist.");
return;
}
try {
var path = "users/" + name;
2014-08-14 03:51:54 +02:00
var user = {
user: name,
password: password || "",
networks: []
};
2014-08-14 01:43:11 +02:00
fs.mkdirSync(path);
2014-08-14 03:51:54 +02:00
fs.writeFileSync(
path + "/user.json",
JSON.stringify(user, null, " ")
);
2014-08-14 01:43:11 +02:00
} catch(e) {
throw e;
}
console.log(
"Added '" + name + "'."
);
};
ClientManager.prototype.removeUser = function(name) {
var users = this.getUsers();
if (users.indexOf(name) === -1) {
console.log("User '" + name + "' doesn't exist.");
return;
}
try {
var path = "users/" + name;
fs.unlinkSync(path + "/user.json");
fs.rmdirSync(path);
} catch(e) {
throw e;
}
console.log(
"Removed '" + name + "'."
);
};