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