Added option to auto connect
This commit is contained in:
parent
87271193e2
commit
0d880802a9
|
@ -1,7 +1,9 @@
|
||||||
module.exports = {
|
module.exports = {
|
||||||
|
nick: "temp_name",
|
||||||
|
fullname: "Temporary Name",
|
||||||
|
autoConnect: true,
|
||||||
host: "irc.freenode.org",
|
host: "irc.freenode.org",
|
||||||
nick: "temp_user",
|
|
||||||
channels: [
|
channels: [
|
||||||
"#temp_chan"
|
"#temp_chan"
|
||||||
]
|
],
|
||||||
};
|
};
|
|
@ -77,8 +77,7 @@ models.ChannelCollection = Backbone.Collection.extend({
|
||||||
models.Network = Backbone.Model.extend({
|
models.Network = Backbone.Model.extend({
|
||||||
defaults: {
|
defaults: {
|
||||||
host: "",
|
host: "",
|
||||||
nick: config.nick,
|
nick: config.nick
|
||||||
connect: true
|
|
||||||
},
|
},
|
||||||
initialize: function() {
|
initialize: function() {
|
||||||
this.set({
|
this.set({
|
||||||
|
@ -97,26 +96,28 @@ models.Network = Backbone.Model.extend({
|
||||||
type: "network",
|
type: "network",
|
||||||
name: this.get("host")
|
name: this.get("host")
|
||||||
}));
|
}));
|
||||||
|
},
|
||||||
if (this.get("connect")) {
|
connect: function(channels) {
|
||||||
this.irc = new irc.Client(
|
var client = new irc.Client(
|
||||||
this.get("host"),
|
this.get("host"),
|
||||||
this.get("nick"), {
|
this.get("nick"), {
|
||||||
channels: config.channels
|
fullname: config.fullname,
|
||||||
|
channels: channels
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
this.irc.addListener(
|
|
||||||
"error", function() {
|
this.irc = client;
|
||||||
|
this.irc.addListener("error", function() {
|
||||||
// ..
|
// ..
|
||||||
}
|
});
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
this.on("remove", function() {
|
this.on("remove", function() {
|
||||||
if (typeof this.irc !== "undefined") {
|
if (typeof this.irc !== "undefined") {
|
||||||
this.irc.disconnect();
|
this.irc.disconnect();
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
return this.irc;
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
|
@ -13,6 +13,7 @@ function Server() {
|
||||||
}
|
}
|
||||||
|
|
||||||
Server.prototype.listen = function(port) {
|
Server.prototype.listen = function(port) {
|
||||||
|
var self = this;
|
||||||
var http = connect()
|
var http = connect()
|
||||||
.use(connect.static("client"))
|
.use(connect.static("client"))
|
||||||
.listen(port);
|
.listen(port);
|
||||||
|
@ -29,11 +30,7 @@ Server.prototype.listen = function(port) {
|
||||||
}
|
}
|
||||||
}, this);
|
}, this);
|
||||||
|
|
||||||
this.sockets = io
|
this.sockets = io.listen(http, {log: false}).sockets;
|
||||||
.listen(http, {log: false})
|
|
||||||
.sockets;
|
|
||||||
|
|
||||||
var self = this;
|
|
||||||
this.sockets.on("connection", function(socket) {
|
this.sockets.on("connection", function(socket) {
|
||||||
socket.emit(
|
socket.emit(
|
||||||
"networks", self.networks
|
"networks", self.networks
|
||||||
|
@ -46,9 +43,23 @@ Server.prototype.listen = function(port) {
|
||||||
);
|
);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
if (config.autoConnect) {
|
||||||
|
this.connect(config.host, config.channels);
|
||||||
|
}
|
||||||
|
|
||||||
return this;
|
return this;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
Server.prototype.connect = function(host, channels) {
|
||||||
|
var network = new models.Network({
|
||||||
|
host: host
|
||||||
|
});
|
||||||
|
this.networks.add(network);
|
||||||
|
network.connect(channels).addListener("raw", function() {
|
||||||
|
handleEvent.apply(network, arguments);
|
||||||
|
});
|
||||||
|
};
|
||||||
|
|
||||||
function handleInput(input) {
|
function handleInput(input) {
|
||||||
var target = this.networks.find(input.id);
|
var target = this.networks.find(input.id);
|
||||||
if (!target) {
|
if (!target) {
|
||||||
|
@ -79,14 +90,7 @@ function handleInput(input) {
|
||||||
|
|
||||||
case "SERVER":
|
case "SERVER":
|
||||||
case "CONNECT":
|
case "CONNECT":
|
||||||
var network = new models.Network({
|
this.connect(argv[1]);
|
||||||
host: argv[1] || config.host
|
|
||||||
});
|
|
||||||
this.networks.add(network);
|
|
||||||
network.irc.addListener("raw", function() {
|
|
||||||
handleEvent.apply(network, arguments);
|
|
||||||
}
|
|
||||||
);
|
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case "QUIT":
|
case "QUIT":
|
||||||
|
@ -183,6 +187,15 @@ function handleEvent(argv) {
|
||||||
|
|
||||||
switch (event) {
|
switch (event) {
|
||||||
|
|
||||||
|
case "ERROR":
|
||||||
|
channels.first().get("messages").add(
|
||||||
|
new models.Message({
|
||||||
|
text: argv.args.slice(2).join(" "),
|
||||||
|
type: "error"
|
||||||
|
})
|
||||||
|
);
|
||||||
|
break;
|
||||||
|
|
||||||
case "PRIVMSG":
|
case "PRIVMSG":
|
||||||
var target = argv.args[0];
|
var target = argv.args[0];
|
||||||
if (target.charAt(0) != "#") {
|
if (target.charAt(0) != "#") {
|
||||||
|
@ -209,7 +222,7 @@ function handleEvent(argv) {
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case "NOTICE":
|
case "NOTICE":
|
||||||
var from = argv.nick ? argv.nick : argv.prefix;
|
var from = argv.nick ? argv.nick : "-!-";
|
||||||
var message = new models.Message({
|
var message = new models.Message({
|
||||||
user: from,
|
user: from,
|
||||||
text: "notice: " + argv.args[1],
|
text: "notice: " + argv.args[1],
|
||||||
|
@ -336,11 +349,13 @@ function handleEvent(argv) {
|
||||||
);
|
);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case "ERROR":
|
case "rpl_motdstart":
|
||||||
|
case "rpl_endofmotd":
|
||||||
|
case "rpl_motd":
|
||||||
channels.first().get("messages").add(
|
channels.first().get("messages").add(
|
||||||
new models.Message({
|
new models.Message({
|
||||||
text: argv.args.slice(2).join(" "),
|
user: "-!-",
|
||||||
type: "error"
|
text: argv.args[1]
|
||||||
})
|
})
|
||||||
);
|
);
|
||||||
break;
|
break;
|
||||||
|
|
Loading…
Reference in New Issue