Including the node_modules folder for socket.io code.
[KiwiIRC.git] / dev_processClientMessage.php
1 <?php
2
3
4 //deb("FROM IPC CLIENT:\n$data\n-----");
5 $d = json_decode($data, 1);
6 //deb('Processed data: '.print_r($d, 1));
7 switch($d['method']){
8 case 'addbuffer':
9 $buffer[] = json_encode($d['args']);
10 break;
11
12 case 'read':
13 // The 'read' command adds this web client to the read buffer queue
14 if(!in_array($cl, $ipc_read)) $ipc_read[] = $cl;
15 break;
16
17 case 'quit':
18 deb('Quitting');
19 $bot = null;
20 break;
21
22 case 'connect':
23 $args = $d['args'];
24 deb('Connecting with: '.print_r($args, 1));
25 if(!isset($args['server'], $args['port'], $args['ssl'], $args['nick'])){
26 $buffer[] = json_encode(array('error'=>'invalid_args'));
27 break;
28 } else {
29 $kiwi = null;
30 /*if($config['memcache_use']){
31 $conf_key = 'kiwi_conf_'.$args['server'];
32 $conf = (int)GLOB::$mc->get($conf_key);
33 if($conf){
34 $c = @unserialize($conf);
35 if($c){
36 //$hostname = GET HOSTNAME HERE
37 //$ip = GET IP HERE
38 $kiwi = "WEBIRC {$c['password']} {$c['user']} $hostname $ip";
39 }
40 }
41 }*/
42 deb("ARGSLOL: ".print_r($app_args, 1));
43 $opts = array();
44 if(isset($app_args['remote_host'])) $opts['ident'] = md5($app_args['remote_host']);
45
46 $bot = new IRCConnection("irc://{$args['nick']}@{$args['server']}:{$args['port']}", $kiwi, $opts);
47 if(isset($args['channels'])) $bot->chans = explode(',', $args['channels']);
48 if($bot->connected){
49 // We're.. connected!
50 } else {
51 $buffer[] = json_encode(array('event'=>'server_connect', 'connected'=>false, 'host'=>$args['server']));
52 unset($bot);
53 }
54 }
55 break;
56
57 case 'join':
58 $args = $d['args'];
59 if(!isset($args['channel'])){
60 $buffer[] = json_encode(array('error'=>'invalid_args'));
61 break;
62 } else {
63 $chans = explode(',', $args['channel']);
64 foreach($chans as $c)
65 $bot->Join($c);
66 }
67 break;
68
69 case 'msg':
70 $args = $d['args'];
71 deb('msg with: '.print_r($args, 1));
72 if(!isset($args['target'],$args['msg'])){
73 $buffer[] = json_encode(array('error'=>'invalid_args'));
74 break;
75 } else {
76 $bot->SendMessage($args['target'], $args['msg']);
77 $buffer[] = json_encode($data);
78 }
79 break;
80
81 case 'action':
82 $args = $d['args'];
83 deb('action with: '.print_r($args, 1));
84 if(!isset($args['target'],$args['msg'])){
85 $buffer[] = json_encode(array('error'=>'invalid_args'));
86 break;
87 } else {
88 $bot->SendMessage($args['target'], chr(1)."ACTION {$args['msg']}".chr(1));
89 $buffer[] = json_encode($data);
90 }
91 break;
92
93 case 'raw':
94 $args = $d['args'];
95 if(!isset($args['data'])){
96 $buffer[] = json_encode(array('error'=>'invalid_args'));
97 break;
98 } else {
99 $bot->stream->Write("{$args['data']}\r\n");
100 //$bot->SendMessage($args['target'], $args['msg']);
101 }
102 break;
103
104
105 case 'debug':
106 $send_debug = !$send_debug;
107 $data = array(
108 'event' => 'debug',
109 'msg' => 'Debugging '.($send_debug)?'on':'off',
110 'time' => time()
111 );
112 $buffer[] = json_encode($data);
113 break;
114
115
116 case 'sync':
117 // Clear the current buffer as we're gonna send only scrollback
118 $buffer = array();
119
120 // Send the settings and channels over
121 if($bot){
122 $data = array('event'=>'sync');
123 $data['nick'] = $bot->nick;
124 $data['tabviews'] = array();
125 if($bot->chanlist){
126 foreach($bot->chanlist as $chan_name => $chan){
127 $data['tabviews'][] = array('name'=>$chan_name, 'userlist'=>$chan['userlist']);
128 }
129 $buffer[] = json_encode($data);
130 }
131
132 // Send the message scrollback
133 foreach($bot->scrollback as $line) $buffer[] = json_encode($line);
134 //$bot->scrollback = array();
135 } else {
136 $data = array('error'=>'no_data');
137 }
138
139 $buffer[] = json_encode($data);
140
141 break;
142 }