Browse Source

Merge pull request #26 from Omnimaga/irc

Irc
Nathaniel van Diepen 10 years ago
parent
commit
a1cf9d997f
4 changed files with 67 additions and 18 deletions
  1. 34 10
      app/OmnomIRC.js
  2. 2 0
      app/api/origins.js
  3. 3 2
      app/www/data/plugins/test/script.js
  4. 28 6
      app/www/js/omnomirc.js

+ 34 - 10
app/OmnomIRC.js

@@ -61,7 +61,11 @@ var fs = require('fs'),
 					messages: {
 						quit: 'Server closed'
 					}
-				}
+				},
+				origins: [
+					['O','OmnomIRC'],
+					['#','IRC']
+				]
 			},
 			i,
 			options;
@@ -78,8 +82,10 @@ var fs = require('fs'),
 				return defaults
 			})(options,defaults);
 		}catch(e){
-			logger.warn('Using default settings. Please create options.json');
+			console.warn('Using default settings. Please create options.json');
+			console.error(e);
 		}
+		defaults.origins.unshift(['S','Server'],['?','Unknown']);
 		options = {};
 		for(i in  defaults){
 			Object.defineProperty(options,i,{
@@ -89,7 +95,15 @@ var fs = require('fs'),
 			});
 		}
 		return options;
-	})();
+	})(),
+	origin = function(name){
+		for(var i in options.origins){
+			if(options.origins[i][1] == name){
+				return i;
+			}
+		}
+		return 1;
+	};
 if(typeof fs.existsSync == 'undefined') fs.existsSync = path.existsSync; // legacy support
 if(cluster.isMaster){
 	var iWorker;
@@ -134,7 +148,7 @@ if(cluster.isMaster){
 	process.on('message',function(msg){
 		var c = msg[0];
 		msg = msg.substr(1);
-		logger.debug('Child recieved command '+c+' with message '+msg);
+		
 		switch(c){
 			case 'Q':
 				if(typeof app != 'undefined' && typeof irc == 'undefined'){
@@ -147,7 +161,7 @@ if(cluster.isMaster){
 				if(typeof irc != 'undefined'){
 					msg = JSON.parse(msg);
 					if(msg.message){
-						irc.say(msg.room,'<'+msg.from+'> '+msg.message);
+						irc.say(msg.room,'('+options.origins[msg.origin][0]+')'+'<'+msg.from+'> '+msg.message);
 					}
 				}
 			break;
@@ -158,12 +172,19 @@ if(cluster.isMaster){
 					logger.info('Connected to IRC');
 					for(var i in options.irc.channels){
 						irc.join(options.irc.channels[i]);
+						//irc.client.send('WHO %s\n',options.irc.channels[i]);
 					}
 				});
 				irc.on('CHANMSG',function(d){
 					console.log(d);
-					message(d.reciever,d.sender,d.message);
+					message(d.reciever,d.sender,d.message,origin('IRC'));
 				});
+				// Beginnings of names handler
+				/*irc.on('names',function(chan,nicks){
+					for(var i in nicks){
+						logger.debug('[NICKS] Channel '+chan+' '+nicks[i]);
+					}
+				});*/
 				irc.connect();
 				logger.debug('Connecting to IRC');	
 			break;
@@ -265,7 +286,8 @@ if(cluster.isMaster){
 										},
 										returnCode: 200,
 										vm: vm,
-										fs: fs
+										fs: fs,
+										options: options
 									};
 								vm.runInNewContext(data,sandbox,filepath);
 								res.writeHead(sandbox.returnCode,sandbox.head);
@@ -400,14 +422,15 @@ if(cluster.isMaster){
 					});
 				}
 			},
-			message = function(room,from,message,socket){
+			message = function(room,from,message,origin,socket){
 				if(typeof socket == 'undefined'){
 					socket = io.sockets.in(room);
 				}
 				socket.emit('message',{
 					message: message,
 					room: room,
-					from: from
+					from: from,
+					origin: origin
 				})
 			},
 			fromServer = function(room,message,socket){
@@ -417,7 +440,8 @@ if(cluster.isMaster){
 				socket.emit('message',{
 					message: message,
 					room: room,
-					from: 0
+					from: 0,
+					origin: 2
 				});
 			};
 	});

+ 2 - 0
app/api/origins.js

@@ -0,0 +1,2 @@
+head = {'Content-Type':'text/json'};
+log(JSON.stringify(options.origins));

+ 3 - 2
app/www/data/plugins/test/script.js

@@ -1,6 +1,7 @@
-hook('message',function(msg,from,room){
+hook('message',function(msg,from,room,origin){
 	if(msg =='funny'){
-		$o.chat.send('Not funny',room);
+		$o.event('test','yay');
+		$o.chat.send(origin,room);
 	}
 });
 hook('send',function(msg,room){

+ 28 - 6
app/www/js/omnomirc.js

@@ -61,7 +61,8 @@
 			nick: 'User',
 			sig: '',
 			tabs: tabs,
-			themes: []
+			themes: [],
+			origins: []
 		},
 		commands = [
 			{ // names
@@ -82,6 +83,7 @@
 					}
 					emit('message',{
 						from: 0,
+						origin: 0,
 						message: properties.nick+' '+ret,
 						room: $o.ui.tabs.current().name
 					});
@@ -177,7 +179,8 @@
 								emit('echo',{
 									room: data.room,
 									message: v+' left the room',
-									from: 0
+									from: 0,
+									origin: 0
 								});
 								runHook('part',[
 									v,
@@ -232,6 +235,7 @@
 					emit('echo',{
 						room: $o.ui.tabs.current().name,
 						from: 0,
+						origin: 0,
 						message: 'reconnected'
 					});
 				}
@@ -246,6 +250,7 @@
 					emit('echo',{
 						room: $o.ui.tabs.current().name,
 						from: 0,
+						origin: 0,
 						message: 'connected'
 					});
 				}
@@ -294,7 +299,8 @@
 					runHook('message',[
 						data.message,
 						data.from,
-						data.room
+						data.room,
+						data.origin
 					]);
 				}
 			}
@@ -312,7 +318,7 @@
 		pluginSandbox = {
 			$: window.jQuery,
 			jQuery: window.jQuery,
-			$o: $o,
+			$o: $o
 		},
 		currentPlugin = 0,
 		Sandbox = function(sandbox){
@@ -388,6 +394,14 @@
 				}).timeago('dispose');
 			}
 		},
+		origin = function(name){
+			for(var i in properties.origins){
+				if(name == properties.origins[i][1]){
+					return i;
+				}
+			}
+			return 1;
+		},
 		socket,$i,$s,$h,$cl,$c,$tl,hht;
 	$.extend($o,{
 		version: function(){
@@ -736,7 +750,8 @@
 								emit('echo',{
 									room: $o.ui.tabs.tab(id).name,
 									message: 'messages cleared',
-									from: 0
+									from: 0,
+									origin: 0
 								});
 							}
 						});
@@ -938,7 +953,8 @@
 							emit('message',{
 								message: msg,
 								room: room,
-								from: properties.nick
+								from: properties.nick,
+								origin: origin('OmnomIRC')
 							});
 						}
 					}
@@ -1182,6 +1198,12 @@
 			.replace(/"/g, '&quot;');
 	};
 	$(document).ready(function(){
+		$.ajax('api/origins.js',{
+			dataType: 'json',
+			success:function(data){
+				properties.origins = data;
+			}
+		});
 		$.extend(settings,$.parseJSON($.localStorage('settings')));
 		$.localStorage('settings',JSON.stringify(settings));
 		settingsConf['theme'].callback(settings['theme'],'theme',true);