+/*jslint sloppy: true, continue: true, forin: true, regexp: true, undef: false, node: true, nomen: true, plusplus: true, maxerr: 50, indent: 4 */
+/*globals kiwi_root */
var tls = null;
var net = null;
var http = null;
_ = objs._;
starttls = objs.starttls;
kiwi = require('./kiwi.js');
-}
+};
*/
this.setTitle = function () {
process.title = 'kiwiirc';
-}
+};
this.changeUser = function () {
if (typeof kiwi.config.group !== 'undefined' && kiwi.config.group !== '') {
RPL_WHOISIDLE: '317',
RPL_ENDOFWHOIS: '318',
RPL_WHOISCHANNELS: '319',
+ RPL_LISTSTART: '321',
+ RPL_LIST: '322',
+ RPL_LISTEND: '323',
RPL_NOTOPIC: '331',
RPL_TOPIC: '332',
RPL_NAMEREPLY: '353',
this.parseIRCMessage = function (websocket, ircSocket, data) {
/*global ircSocketDataHandler */
- var msg, regex, opts, options, opt, i, j, matches, nick, users, chan, channel, params, prefix, prefixes, nicklist, caps, rtn, obj;
+ var msg, regex, opts, options, opt, i, j, matches, nick, users, chan, channel, params, prefix, prefixes, nicklist, caps, rtn, obj, tmp, namespace;
//regex = /^(?::(?:([a-z0-9\x5B-\x60\x7B-\x7D\.\-]+)|([a-z0-9\x5B-\x60\x7B-\x7D\.\-]+)!([a-z0-9~\.\-_|]+)@?([a-z0-9\.\-:\/]+)?) )?([a-z0-9]+)(?:(?: ([^:]+))?(?: :(.+))?)$/i;
//regex = /^(?::(\S+) )?(\S+)(?: (?!:)(.+?))?(?: :(.+))?$/i;
regex = /^(?::(?:([a-z0-9\x5B-\x60\x7B-\x7D\.\-]+)|([a-z0-9\x5B-\x60\x7B-\x7D\.\-]+)!([a-z0-9~\.\-_|]+)@?([a-z0-9\.\-:\/]+)?) )?(\S+)(?: (?!:)(.+?))?(?: :(.+))?$/i;
case ircNumerics.RPL_WHOISMODES:
websocket.sendClientEvent('whois', {server: '', nick: msg.params.split(" ", 3)[1], "msg": msg.trailing});
break;
+
+ case ircNumerics.RPL_LISTSTART:
+ (function () {
+ websocket.sendClientEvent('list_start', {server: ''});
+ }());
+ break;
+ case ircNumerics.RPL_LISTEND:
+ (function () {
+ websocket.sendClientEvent('list_end', {server: ''});
+ }());
+ break;
+
+ case ircNumerics.RPL_LIST:
+ (function () {
+ var parts, channel, num_users, modes, topic;
+
+ parts = msg.params.split(' ');
+ channel = parts[1];
+ num_users = parts[2];
+ modes = msg.trailing.split(' ', 1);
+ topic = msg.trailing.substring(msg.trailing.indexOf(' ') + 1);
+
+ websocket.sendClientEvent('list_channel', {
+ server: '',
+ channel: channel,
+ topic: topic,
+ modes: modes,
+ num_users: num_users
+ });
+ }());
+ break;
+
case ircNumerics.RPL_WHOISIDLE:
params = msg.params.split(" ", 4);
rtn = {server: '', nick: params[1], idle: params[2]};
if (msg.trailing.substr(1, 6) === 'ACTION') {
websocket.sendClientEvent('action', {nick: msg.nick, ident: msg.ident, hostname: msg.hostname, channel: msg.params.trim(), msg: msg.trailing.substr(7, msg.trailing.length - 2)});
} else if (msg.trailing.substr(1, 4) === 'KIWI') {
- var tmp = msg.trailing.substr(6, msg.trailing.length - 2);
- var namespace = tmp.split(' ', 1)[0];
- websocket.sendClientEvent('kiwi', {namespace: namespace, data: tmp.substr(namespace.length+1)});
+ tmp = msg.trailing.substr(6, msg.trailing.length - 2);
+ namespace = tmp.split(' ', 1)[0];
+ websocket.sendClientEvent('kiwi', {namespace: namespace, data: tmp.substr(namespace.length + 1)});
} else if (msg.trailing.substr(1, 7) === 'VERSION') {
ircSocket.write('NOTICE ' + msg.nick + ' :' + String.fromCharCode(1) + 'VERSION KiwiIRC' + String.fromCharCode(1) + '\r\n');
if (kiwi.cache.alljs === '') {
public_http_path = kiwi.kiwi_root + '/' + kiwi.config.public_http;
+ min.underscore = fs.readFileSync(public_http_path + 'js/underscore.min.js');
min.util = fs.readFileSync(public_http_path + 'js/util.js');
min.gateway = fs.readFileSync(public_http_path + 'js/gateway.js');
min.front = fs.readFileSync(public_http_path + 'js/front.js');
min.iscroll = fs.readFileSync(public_http_path + 'js/iscroll.js');
- min.ast = jsp.parse(min.util + min.gateway + min.front + min.iscroll);
+ min.ast = jsp.parse(min.underscore + min.util + min.gateway + min.front + min.iscroll);
min.ast = pro.ast_mangle(min.ast);
min.ast = pro.ast_squeeze(min.ast);
min.final_code = pro.gen_code(min.ast);
websocket.sendClientEvent = function (event_name, data) {
var ev = kiwi.kiwi_mod.run(event_name, data, {websocket: this});
- if(ev === null) return;
+ if (ev === null) {
+ return;
+ }
data.event = event_name;
websocket.emit('message', data);
break;
case 'action':
if ((args.target) && (args.msg)) {
- websocket.sendServerLine('PRIVMSG ' + args.target + ' :\001ACTION ' + args.msg + '\001');
+ websocket.sendServerLine('PRIVMSG ' + args.target + ' :' + String.fromCharCode(1) + 'ACTION ' + args.msg + String.fromCharCode(1));
}
break;
case 'kiwi':
if ((args.target) && (args.data)) {
- websocket.sendServerLine('PRIVMSG ' + args.target + ' :\001KIWI ' + args.data + '\001');
+ websocket.sendServerLine('PRIVMSG ' + args.target + ' :' + String.fromCharCode(1) + 'KIWI ' + args.data + String.fromCharCode(1));
}
break;
* KiwiIRC controlling via STDIN
*/
this.manageControll = function (data) {
- var parts = data.toString().trim().split(' ');
+ var parts = data.toString().trim().split(' '),
+ connections_cnt = 0,
+ i;
switch (parts[0]) {
case 'rehash':
console.log('Rehashing...');
break;
case 'status':
- var connections_cnt = 0;
- for (var i in kiwi.connections) {
+ for (i in kiwi.connections) {
connections_cnt = connections_cnt + parseInt(kiwi.connections[i].count, 10);
}
console.log(connections_cnt.toString() + ' connected clients');
default:
console.log('Unknown command \'' + parts[0] + '\'');
}
-};
\ No newline at end of file
+};