var util = require('util'),
EventBinder = require('./eventbinder.js'),
- _ = require('lodash');
+ _ = require('lodash'),
+ Stats = require('../stats.js');
var IrcServer = function (irc_connection) {
this.irc_connection = irc_connection;
this.list_buffer = [];
this.motd_buffer = '';
+ // Date when registeration with the IRCd had completed
+ this.registered = false;
+
this.irc_events = {
connect: onConnect,
options: onOptions,
not_on_channel: onNotOnChannel,
channel_is_full: onChannelIsFull,
invite_only_channel: onInviteOnlyChannel,
+ user_on_channel: onUserAlreadyInChannel,
banned_from_channel: onBannedFromChannel,
bad_channel_key: onBadChannelKey,
chanop_privs_needed: onChanopPrivsNeeded,
- nickname_in_use: onNicknameInUse
+ nickname_in_use: onNicknameInUse,
+ erroneus_nickname: onErroneusNickname,
+ unknown_command: onUnknownCommand
};
EventBinder.bindIrcEvents('server *', this.irc_events, this, this.irc_connection);
};
+IrcServer.prototype.reset = function() {
+ this.registered = false;
+ this.list_buffer = [];
+ this.motd_buffer = '';
+};
+
+
function onConnect(event) {
+ Stats.incr('irc.connection.registered');
+ this.registered = new Date();
+
this.irc_connection.clientEvent('connect', {
nick: event.nick
});
function onCannotSendToChan(event) {
this.irc_connection.clientEvent('irc_error', {
- error: 'cannot_send_to_chan',
+ error: 'cannot_send_to_channel',
channel: event.channel,
reason: event.reason
});
});
}
+function onUserAlreadyInChannel(event) {
+ this.irc_connection.clientEvent('irc_error', {
+ error: 'user_on_channel',
+ channel: event.channel,
+ nick: event.nick
+ });
+}
+
function onBannedFromChannel(event) {
this.irc_connection.clientEvent('irc_error', {
error: 'banned_from_channel',
reason: event.reason
});
}
+
+function onErroneusNickname(event) {
+ this.irc_connection.clientEvent('irc_error', {
+ error: 'erroneus_nickname',
+ nick: event.nick,
+ reason: event.reason
+ });
+}
+
+function onUnknownCommand(event) {
+ this.irc_connection.clientEvent('unknown_command', {
+ error: 'unknown_command',
+ command: event.command,
+ params: event.params
+ });
+}