Add initial blocking of new users in chat
This commit is contained in:
parent
6245dc84da
commit
701d470494
4 changed files with 48 additions and 1 deletions
|
|
@ -131,6 +131,21 @@ ChatModule.prototype.handleChatMsg = function (user, data) {
|
|||
|
||||
// Limit to 240 characters
|
||||
data.msg = data.msg.substring(0, 240);
|
||||
|
||||
const firstSeen = user.getFirstSeenTime();
|
||||
// TODO: configurable times
|
||||
if (firstSeen > Date.now() - 5 * 60 * 1000) {
|
||||
user.socket.emit("spamFiltered", {
|
||||
reason: "NEW_USER_CHAT"
|
||||
});
|
||||
return;
|
||||
} else if ((firstSeen > Date.now() - 24 * 60 * 60 * 1000) && data.msg.match(LINK)) {
|
||||
user.socket.emit("spamFiltered", {
|
||||
reason: "NEW_USER_CHAT_LINK"
|
||||
});
|
||||
return;
|
||||
}
|
||||
|
||||
// If channel doesn't permit them, strip ASCII control characters
|
||||
if (!this.channel.modules.options ||
|
||||
!this.channel.modules.options.get("allow_ascii_control")) {
|
||||
|
|
|
|||
|
|
@ -52,7 +52,8 @@ function handleAuth(socket, accept) {
|
|||
if (!err) {
|
||||
socket.user = {
|
||||
name: user.name,
|
||||
global_rank: user.global_rank
|
||||
global_rank: user.global_rank,
|
||||
registrationTime: new Date(user.time)
|
||||
};
|
||||
}
|
||||
accept(null, true);
|
||||
|
|
@ -235,6 +236,7 @@ function handleConnection(sock) {
|
|||
user.setFlag(Flags.U_REGISTERED);
|
||||
user.clearFlag(Flags.U_READY);
|
||||
user.account.name = sock.user.name;
|
||||
user.registrationTime = sock.user.registrationTime;
|
||||
user.refreshAccount(function (err, account) {
|
||||
if (err) {
|
||||
user.clearFlag(Flags.U_REGISTERED);
|
||||
|
|
|
|||
14
src/user.js
14
src/user.js
|
|
@ -449,4 +449,18 @@ User.prototype.refreshAccount = function (cb) {
|
|||
});
|
||||
};
|
||||
|
||||
User.prototype.getFirstSeenTime = function getFirstSeenTime() {
|
||||
if (this.registrationTime && this.socket.ipReputation && this.socket.ipReputation.first_seen) {
|
||||
return Math.min(this.registrationTime.getTime(), this.socket.ipReputation.first_seen.getTime());
|
||||
} else if (this.registrationTime) {
|
||||
return this.registrationTime.getTime();
|
||||
} else if (this.socket.ipReputation && this.socket.ipReputation.first_seen) {
|
||||
return this.socket.ipReputation.first_seen.getTime();
|
||||
} else {
|
||||
Logger.errlog.log(`User "${this.getName()}" (IP: ${this.realip}) has neither ` +
|
||||
"an IP reputation nor a registered account.");
|
||||
return Date.now();
|
||||
}
|
||||
};
|
||||
|
||||
module.exports = User;
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue