aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/OpenSim/Region/OptionalModules/Agent/InternetRelayClientView
diff options
context:
space:
mode:
authorJeff Ames2009-05-31 16:26:18 +0000
committerJeff Ames2009-05-31 16:26:18 +0000
commitdb2c4ab94cc40bf16910806fd4fe0d9a2b7cbd8f (patch)
tree59640d71ec7a7dcae97e261ba3197df0d5e688e3 /OpenSim/Region/OptionalModules/Agent/InternetRelayClientView
parent* Adds MRM scripting commands, World.Objects.Create(Vector3 position) and Wor... (diff)
downloadopensim-SC-db2c4ab94cc40bf16910806fd4fe0d9a2b7cbd8f.zip
opensim-SC-db2c4ab94cc40bf16910806fd4fe0d9a2b7cbd8f.tar.gz
opensim-SC-db2c4ab94cc40bf16910806fd4fe0d9a2b7cbd8f.tar.bz2
opensim-SC-db2c4ab94cc40bf16910806fd4fe0d9a2b7cbd8f.tar.xz
Update svn properties.
Diffstat (limited to 'OpenSim/Region/OptionalModules/Agent/InternetRelayClientView')
-rw-r--r--OpenSim/Region/OptionalModules/Agent/InternetRelayClientView/IRCStackModule.cs132
-rw-r--r--OpenSim/Region/OptionalModules/Agent/InternetRelayClientView/Server/IRCClientView.cs3146
-rw-r--r--OpenSim/Region/OptionalModules/Agent/InternetRelayClientView/Server/IRCServer.cs122
3 files changed, 1700 insertions, 1700 deletions
diff --git a/OpenSim/Region/OptionalModules/Agent/InternetRelayClientView/IRCStackModule.cs b/OpenSim/Region/OptionalModules/Agent/InternetRelayClientView/IRCStackModule.cs
index 5c8bfc6..808f1f9 100644
--- a/OpenSim/Region/OptionalModules/Agent/InternetRelayClientView/IRCStackModule.cs
+++ b/OpenSim/Region/OptionalModules/Agent/InternetRelayClientView/IRCStackModule.cs
@@ -1,66 +1,66 @@
1using System.Net; 1using System.Net;
2using System.Reflection; 2using System.Reflection;
3using log4net; 3using log4net;
4using Nini.Config; 4using Nini.Config;
5using OpenSim.Region.Framework.Interfaces; 5using OpenSim.Region.Framework.Interfaces;
6using OpenSim.Region.Framework.Scenes; 6using OpenSim.Region.Framework.Scenes;
7using OpenSim.Region.OptionalModules.Agent.InternetRelayClientView.Server; 7using OpenSim.Region.OptionalModules.Agent.InternetRelayClientView.Server;
8 8
9namespace OpenSim.Region.OptionalModules.Agent.InternetRelayClientView 9namespace OpenSim.Region.OptionalModules.Agent.InternetRelayClientView
10{ 10{
11 public class IRCStackModule : IRegionModule 11 public class IRCStackModule : IRegionModule
12 { 12 {
13 private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); 13 private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
14 14
15 private IRCServer m_server; 15 private IRCServer m_server;
16 private Scene m_scene; 16 private Scene m_scene;
17 17
18 #region Implementation of IRegionModule 18 #region Implementation of IRegionModule
19 19
20 public void Initialise(Scene scene, IConfigSource source) 20 public void Initialise(Scene scene, IConfigSource source)
21 { 21 {
22 if (null != source.Configs["IRCd"] && 22 if (null != source.Configs["IRCd"] &&
23 source.Configs["IRCd"].GetBoolean("Enabled",false)) 23 source.Configs["IRCd"].GetBoolean("Enabled",false))
24 { 24 {
25 m_scene = scene; 25 m_scene = scene;
26 m_server = new IRCServer(IPAddress.Parse("0.0.0.0"), 6666, scene); 26 m_server = new IRCServer(IPAddress.Parse("0.0.0.0"), 6666, scene);
27 m_server.OnNewIRCClient += m_server_OnNewIRCClient; 27 m_server.OnNewIRCClient += m_server_OnNewIRCClient;
28 } 28 }
29 } 29 }
30 30
31 void m_server_OnNewIRCClient(IRCClientView user) 31 void m_server_OnNewIRCClient(IRCClientView user)
32 { 32 {
33 user.OnIRCReady += user_OnIRCReady; 33 user.OnIRCReady += user_OnIRCReady;
34 } 34 }
35 35
36 void user_OnIRCReady(IRCClientView cv) 36 void user_OnIRCReady(IRCClientView cv)
37 { 37 {
38 m_log.Info("[IRCd] Adding user..."); 38 m_log.Info("[IRCd] Adding user...");
39 m_scene.ClientManager.Add(cv.CircuitCode, cv); 39 m_scene.ClientManager.Add(cv.CircuitCode, cv);
40 cv.Start(); 40 cv.Start();
41 m_log.Info("[IRCd] Added user to Scene"); 41 m_log.Info("[IRCd] Added user to Scene");
42 } 42 }
43 43
44 public void PostInitialise() 44 public void PostInitialise()
45 { 45 {
46 46
47 } 47 }
48 48
49 public void Close() 49 public void Close()
50 { 50 {
51 51
52 } 52 }
53 53
54 public string Name 54 public string Name
55 { 55 {
56 get { return "IRCClientStackModule"; } 56 get { return "IRCClientStackModule"; }
57 } 57 }
58 58
59 public bool IsSharedModule 59 public bool IsSharedModule
60 { 60 {
61 get { return false; } 61 get { return false; }
62 } 62 }
63 63
64 #endregion 64 #endregion
65 } 65 }
66} 66}
diff --git a/OpenSim/Region/OptionalModules/Agent/InternetRelayClientView/Server/IRCClientView.cs b/OpenSim/Region/OptionalModules/Agent/InternetRelayClientView/Server/IRCClientView.cs
index eb70b71..e3d1b59 100644
--- a/OpenSim/Region/OptionalModules/Agent/InternetRelayClientView/Server/IRCClientView.cs
+++ b/OpenSim/Region/OptionalModules/Agent/InternetRelayClientView/Server/IRCClientView.cs
@@ -1,1573 +1,1573 @@
1using System; 1using System;
2using System.Collections.Generic; 2using System.Collections.Generic;
3using System.IO; 3using System.IO;
4using System.Net; 4using System.Net;
5using System.Net.Sockets; 5using System.Net.Sockets;
6using System.Reflection; 6using System.Reflection;
7using System.Text; 7using System.Text;
8using System.Threading; 8using System.Threading;
9using log4net; 9using log4net;
10using OpenMetaverse; 10using OpenMetaverse;
11using OpenMetaverse.Packets; 11using OpenMetaverse.Packets;
12using OpenSim.Framework; 12using OpenSim.Framework;
13using OpenSim.Framework.Client; 13using OpenSim.Framework.Client;
14using OpenSim.Region.Framework.Scenes; 14using OpenSim.Region.Framework.Scenes;
15 15
16namespace OpenSim.Region.OptionalModules.Agent.InternetRelayClientView.Server 16namespace OpenSim.Region.OptionalModules.Agent.InternetRelayClientView.Server
17{ 17{
18 public delegate void OnIRCClientReadyDelegate(IRCClientView cv); 18 public delegate void OnIRCClientReadyDelegate(IRCClientView cv);
19 19
20 public class IRCClientView : IClientAPI, IClientCore, IClientIPEndpoint 20 public class IRCClientView : IClientAPI, IClientCore, IClientIPEndpoint
21 { 21 {
22 public event OnIRCClientReadyDelegate OnIRCReady; 22 public event OnIRCClientReadyDelegate OnIRCReady;
23 23
24 private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); 24 private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
25 25
26 private readonly TcpClient m_client; 26 private readonly TcpClient m_client;
27 private readonly Scene m_scene; 27 private readonly Scene m_scene;
28 28
29 private UUID m_agentID = UUID.Random(); 29 private UUID m_agentID = UUID.Random();
30 30
31 private string m_username; 31 private string m_username;
32 private string m_nick; 32 private string m_nick;
33 33
34 private bool m_hasNick = false; 34 private bool m_hasNick = false;
35 private bool m_hasUser = false; 35 private bool m_hasUser = false;
36 36
37 private bool m_connected = true; 37 private bool m_connected = true;
38 38
39 public IRCClientView(TcpClient client, Scene scene) 39 public IRCClientView(TcpClient client, Scene scene)
40 { 40 {
41 m_client = client; 41 m_client = client;
42 m_scene = scene; 42 m_scene = scene;
43 43
44 Thread loopThread = new Thread(InternalLoop); 44 Thread loopThread = new Thread(InternalLoop);
45 loopThread.Start(); 45 loopThread.Start();
46 } 46 }
47 47
48 private void SendServerCommand(string command) 48 private void SendServerCommand(string command)
49 { 49 {
50 SendCommand(":opensimircd " + command); 50 SendCommand(":opensimircd " + command);
51 } 51 }
52 52
53 private void SendCommand(string command) 53 private void SendCommand(string command)
54 { 54 {
55 m_log.Info("[IRCd] Sending >>> " + command); 55 m_log.Info("[IRCd] Sending >>> " + command);
56 56
57 byte[] buf = Encoding.UTF8.GetBytes(command + "\r\n"); 57 byte[] buf = Encoding.UTF8.GetBytes(command + "\r\n");
58 58
59 m_client.GetStream().BeginWrite(buf, 0, buf.Length, SendComplete, null); 59 m_client.GetStream().BeginWrite(buf, 0, buf.Length, SendComplete, null);
60 } 60 }
61 61
62 private void SendComplete(IAsyncResult result) 62 private void SendComplete(IAsyncResult result)
63 { 63 {
64 m_log.Info("[IRCd] Send Complete."); 64 m_log.Info("[IRCd] Send Complete.");
65 } 65 }
66 66
67 private string IrcRegionName 67 private string IrcRegionName
68 { 68 {
69 // I know &Channel is more technically correct, but people are used to seeing #Channel 69 // I know &Channel is more technically correct, but people are used to seeing #Channel
70 // Dont shoot me! 70 // Dont shoot me!
71 get { return "#" + m_scene.RegionInfo.RegionName.Replace(" ", "-"); } 71 get { return "#" + m_scene.RegionInfo.RegionName.Replace(" ", "-"); }
72 } 72 }
73 73
74 private void InternalLoop() 74 private void InternalLoop()
75 { 75 {
76 try 76 try
77 { 77 {
78 string strbuf = ""; 78 string strbuf = "";
79 79
80 while (m_connected && m_client.Connected) 80 while (m_connected && m_client.Connected)
81 { 81 {
82 byte[] buf = new byte[8]; // RFC1459 defines max message size as 512. 82 byte[] buf = new byte[8]; // RFC1459 defines max message size as 512.
83 83
84 int count = m_client.GetStream().Read(buf, 0, buf.Length); 84 int count = m_client.GetStream().Read(buf, 0, buf.Length);
85 string line = Encoding.UTF8.GetString(buf, 0, count); 85 string line = Encoding.UTF8.GetString(buf, 0, count);
86 86
87 strbuf += line; 87 strbuf += line;
88 88
89 string message = ExtractMessage(strbuf); 89 string message = ExtractMessage(strbuf);
90 if (message != null) 90 if (message != null)
91 { 91 {
92 // Remove from buffer 92 // Remove from buffer
93 strbuf = strbuf.Remove(0, message.Length); 93 strbuf = strbuf.Remove(0, message.Length);
94 94
95 m_log.Info("[IRCd] Recieving <<< " + message); 95 m_log.Info("[IRCd] Recieving <<< " + message);
96 message = message.Trim(); 96 message = message.Trim();
97 97
98 // Extract command sequence 98 // Extract command sequence
99 string command = ExtractCommand(message); 99 string command = ExtractCommand(message);
100 ProcessInMessage(message, command); 100 ProcessInMessage(message, command);
101 } 101 }
102 else 102 else
103 { 103 {
104 //m_log.Info("[IRCd] Recieved data, but not enough to make a message. BufLen is " + strbuf.Length + 104 //m_log.Info("[IRCd] Recieved data, but not enough to make a message. BufLen is " + strbuf.Length +
105 // "[" + strbuf + "]"); 105 // "[" + strbuf + "]");
106 if (strbuf.Length == 0) 106 if (strbuf.Length == 0)
107 { 107 {
108 m_connected = false; 108 m_connected = false;
109 m_log.Info("[IRCd] Buffer zero, closing..."); 109 m_log.Info("[IRCd] Buffer zero, closing...");
110 if (OnDisconnectUser != null) 110 if (OnDisconnectUser != null)
111 OnDisconnectUser(); 111 OnDisconnectUser();
112 } 112 }
113 } 113 }
114 114
115 Thread.Sleep(0); 115 Thread.Sleep(0);
116 } 116 }
117 } 117 }
118 catch (IOException) 118 catch (IOException)
119 { 119 {
120 if (OnDisconnectUser != null) 120 if (OnDisconnectUser != null)
121 OnDisconnectUser(); 121 OnDisconnectUser();
122 122
123 m_log.Warn("[IRCd] Disconnected client."); 123 m_log.Warn("[IRCd] Disconnected client.");
124 } 124 }
125 catch (SocketException) 125 catch (SocketException)
126 { 126 {
127 if (OnDisconnectUser != null) 127 if (OnDisconnectUser != null)
128 OnDisconnectUser(); 128 OnDisconnectUser();
129 129
130 m_log.Warn("[IRCd] Disconnected client."); 130 m_log.Warn("[IRCd] Disconnected client.");
131 } 131 }
132 } 132 }
133 133
134 private void ProcessInMessage(string message, string command) 134 private void ProcessInMessage(string message, string command)
135 { 135 {
136 m_log.Info("[IRCd] Processing [MSG:" + message + "] [COM:" + command + "]"); 136 m_log.Info("[IRCd] Processing [MSG:" + message + "] [COM:" + command + "]");
137 if(command != null) 137 if(command != null)
138 { 138 {
139 switch(command) 139 switch(command)
140 { 140 {
141 case "ADMIN": 141 case "ADMIN":
142 case "AWAY": 142 case "AWAY":
143 case "CONNECT": 143 case "CONNECT":
144 case "DIE": 144 case "DIE":
145 case "ERROR": 145 case "ERROR":
146 case "INFO": 146 case "INFO":
147 case "INVITE": 147 case "INVITE":
148 case "ISON": 148 case "ISON":
149 case "KICK": 149 case "KICK":
150 case "KILL": 150 case "KILL":
151 case "LINKS": 151 case "LINKS":
152 case "LUSERS": 152 case "LUSERS":
153 case "OPER": 153 case "OPER":
154 case "PART": 154 case "PART":
155 case "REHASH": 155 case "REHASH":
156 case "SERVICE": 156 case "SERVICE":
157 case "SERVLIST": 157 case "SERVLIST":
158 case "SERVER": 158 case "SERVER":
159 case "SQUERY": 159 case "SQUERY":
160 case "SQUIT": 160 case "SQUIT":
161 case "STATS": 161 case "STATS":
162 case "SUMMON": 162 case "SUMMON":
163 case "TIME": 163 case "TIME":
164 case "TRACE": 164 case "TRACE":
165 case "VERSION": 165 case "VERSION":
166 case "WALLOPS": 166 case "WALLOPS":
167 case "WHOIS": 167 case "WHOIS":
168 case "WHOWAS": 168 case "WHOWAS":
169 SendServerCommand("421 " + command + " :Command unimplemented"); 169 SendServerCommand("421 " + command + " :Command unimplemented");
170 break; 170 break;
171 171
172 // Connection Commands 172 // Connection Commands
173 case "PASS": 173 case "PASS":
174 break; // Ignore for now. I want to implement authentication later however. 174 break; // Ignore for now. I want to implement authentication later however.
175 175
176 case "JOIN": 176 case "JOIN":
177 IRC_SendReplyJoin(); 177 IRC_SendReplyJoin();
178 break; 178 break;
179 179
180 case "MODE": 180 case "MODE":
181 IRC_SendReplyModeChannel(); 181 IRC_SendReplyModeChannel();
182 break; 182 break;
183 183
184 case "USER": 184 case "USER":
185 IRC_ProcessUser(message); 185 IRC_ProcessUser(message);
186 IRC_Ready(); 186 IRC_Ready();
187 break; 187 break;
188 188
189 case "USERHOST": 189 case "USERHOST":
190 string[] userhostArgs = ExtractParameters(message); 190 string[] userhostArgs = ExtractParameters(message);
191 if (userhostArgs[0] == ":" + m_nick) 191 if (userhostArgs[0] == ":" + m_nick)
192 { 192 {
193 SendServerCommand("302 :" + m_nick + "=+" + m_nick + "@" + 193 SendServerCommand("302 :" + m_nick + "=+" + m_nick + "@" +
194 ((IPEndPoint) m_client.Client.RemoteEndPoint).Address); 194 ((IPEndPoint) m_client.Client.RemoteEndPoint).Address);
195 } 195 }
196 break; 196 break;
197 case "NICK": 197 case "NICK":
198 IRC_ProcessNick(message); 198 IRC_ProcessNick(message);
199 IRC_Ready(); 199 IRC_Ready();
200 200
201 break; 201 break;
202 case "TOPIC": 202 case "TOPIC":
203 IRC_SendReplyTopic(); 203 IRC_SendReplyTopic();
204 break; 204 break;
205 case "USERS": 205 case "USERS":
206 IRC_SendReplyUsers(); 206 IRC_SendReplyUsers();
207 break; 207 break;
208 208
209 case "LIST": 209 case "LIST":
210 break; // TODO 210 break; // TODO
211 211
212 case "MOTD": 212 case "MOTD":
213 IRC_SendMOTD(); 213 IRC_SendMOTD();
214 break; 214 break;
215 215
216 case "NOTICE": // TODO 216 case "NOTICE": // TODO
217 break; 217 break;
218 218
219 case "WHO": // TODO 219 case "WHO": // TODO
220 IRC_SendNamesReply(); 220 IRC_SendNamesReply();
221 IRC_SendWhoReply(); 221 IRC_SendWhoReply();
222 break; 222 break;
223 223
224 case "PING": 224 case "PING":
225 IRC_ProcessPing(message); 225 IRC_ProcessPing(message);
226 break; 226 break;
227 227
228 // Special case, ignore this completely. 228 // Special case, ignore this completely.
229 case "PONG": 229 case "PONG":
230 break; 230 break;
231 231
232 case "QUIT": 232 case "QUIT":
233 if (OnDisconnectUser != null) 233 if (OnDisconnectUser != null)
234 OnDisconnectUser(); 234 OnDisconnectUser();
235 break; 235 break;
236 236
237 case "NAMES": 237 case "NAMES":
238 IRC_SendNamesReply(); 238 IRC_SendNamesReply();
239 break; 239 break;
240 case "PRIVMSG": 240 case "PRIVMSG":
241 IRC_ProcessPrivmsg(message); 241 IRC_ProcessPrivmsg(message);
242 break; 242 break;
243 243
244 default: 244 default:
245 SendServerCommand("421 " + command + " :Unknown command"); 245 SendServerCommand("421 " + command + " :Unknown command");
246 break; 246 break;
247 } 247 }
248 } 248 }
249 } 249 }
250 250
251 private void IRC_Ready() 251 private void IRC_Ready()
252 { 252 {
253 if (m_hasUser && m_hasNick) 253 if (m_hasUser && m_hasNick)
254 { 254 {
255 SendServerCommand("001 " + m_nick + " :Welcome to OpenSimulator IRCd"); 255 SendServerCommand("001 " + m_nick + " :Welcome to OpenSimulator IRCd");
256 SendServerCommand("002 " + m_nick + " :Running OpenSimVersion"); 256 SendServerCommand("002 " + m_nick + " :Running OpenSimVersion");
257 SendServerCommand("003 " + m_nick + " :This server was created over 9000 years ago"); 257 SendServerCommand("003 " + m_nick + " :This server was created over 9000 years ago");
258 SendServerCommand("004 " + m_nick + " :opensimirc r1 aoOirw abeiIklmnoOpqrstv"); 258 SendServerCommand("004 " + m_nick + " :opensimirc r1 aoOirw abeiIklmnoOpqrstv");
259 SendServerCommand("251 " + m_nick + " :There are 0 users and 0 services on 1 servers"); 259 SendServerCommand("251 " + m_nick + " :There are 0 users and 0 services on 1 servers");
260 SendServerCommand("252 " + m_nick + " 0 :operators online"); 260 SendServerCommand("252 " + m_nick + " 0 :operators online");
261 SendServerCommand("253 " + m_nick + " 0 :unknown connections"); 261 SendServerCommand("253 " + m_nick + " 0 :unknown connections");
262 SendServerCommand("254 " + m_nick + " 1 :channels formed"); 262 SendServerCommand("254 " + m_nick + " 1 :channels formed");
263 SendServerCommand("255 " + m_nick + " :I have 1 users, 0 services and 1 servers"); 263 SendServerCommand("255 " + m_nick + " :I have 1 users, 0 services and 1 servers");
264 SendCommand(":" + m_nick + " MODE " + m_nick + " :+i"); 264 SendCommand(":" + m_nick + " MODE " + m_nick + " :+i");
265 SendCommand(":" + m_nick + " JOIN :" + IrcRegionName); 265 SendCommand(":" + m_nick + " JOIN :" + IrcRegionName);
266 266
267 // Rename to 'Real Name' 267 // Rename to 'Real Name'
268 SendCommand(":" + m_nick + " NICK :" + m_username.Replace(" ", "")); 268 SendCommand(":" + m_nick + " NICK :" + m_username.Replace(" ", ""));
269 m_nick = m_username.Replace(" ", ""); 269 m_nick = m_username.Replace(" ", "");
270 270
271 IRC_SendReplyJoin(); 271 IRC_SendReplyJoin();
272 IRC_SendChannelPrivmsg("System", "Welcome to OpenSimulator."); 272 IRC_SendChannelPrivmsg("System", "Welcome to OpenSimulator.");
273 IRC_SendChannelPrivmsg("System", "You are in a maze of twisty little passages, all alike."); 273 IRC_SendChannelPrivmsg("System", "You are in a maze of twisty little passages, all alike.");
274 IRC_SendChannelPrivmsg("System", "It is pitch black. You are likely to be eaten by a grue."); 274 IRC_SendChannelPrivmsg("System", "It is pitch black. You are likely to be eaten by a grue.");
275 275
276 if (OnIRCReady != null) 276 if (OnIRCReady != null)
277 OnIRCReady(this); 277 OnIRCReady(this);
278 } 278 }
279 } 279 }
280 280
281 private void IRC_SendReplyJoin() 281 private void IRC_SendReplyJoin()
282 { 282 {
283 IRC_SendReplyTopic(); 283 IRC_SendReplyTopic();
284 IRC_SendNamesReply(); 284 IRC_SendNamesReply();
285 } 285 }
286 286
287 private void IRC_SendReplyModeChannel() 287 private void IRC_SendReplyModeChannel()
288 { 288 {
289 SendServerCommand("324 " + m_nick + " " + IrcRegionName + " +n"); 289 SendServerCommand("324 " + m_nick + " " + IrcRegionName + " +n");
290 //SendCommand(":" + IrcRegionName + " MODE +n"); 290 //SendCommand(":" + IrcRegionName + " MODE +n");
291 } 291 }
292 292
293 private void IRC_ProcessUser(string message) 293 private void IRC_ProcessUser(string message)
294 { 294 {
295 string[] userArgs = ExtractParameters(message); 295 string[] userArgs = ExtractParameters(message);
296 string username = userArgs[0]; 296 string username = userArgs[0];
297 string hostname = userArgs[1]; 297 string hostname = userArgs[1];
298 string servername = userArgs[2]; 298 string servername = userArgs[2];
299 string realname = userArgs[3].Replace(":", ""); 299 string realname = userArgs[3].Replace(":", "");
300 300
301 m_username = realname; 301 m_username = realname;
302 m_hasUser = true; 302 m_hasUser = true;
303 } 303 }
304 304
305 private void IRC_ProcessNick(string message) 305 private void IRC_ProcessNick(string message)
306 { 306 {
307 string[] nickArgs = ExtractParameters(message); 307 string[] nickArgs = ExtractParameters(message);
308 string nickname = nickArgs[0].Replace(":",""); 308 string nickname = nickArgs[0].Replace(":","");
309 m_nick = nickname; 309 m_nick = nickname;
310 m_hasNick = true; 310 m_hasNick = true;
311 } 311 }
312 312
313 private void IRC_ProcessPing(string message) 313 private void IRC_ProcessPing(string message)
314 { 314 {
315 string[] pingArgs = ExtractParameters(message); 315 string[] pingArgs = ExtractParameters(message);
316 string pingHost = pingArgs[0]; 316 string pingHost = pingArgs[0];
317 SendCommand("PONG " + pingHost); 317 SendCommand("PONG " + pingHost);
318 } 318 }
319 319
320 private void IRC_ProcessPrivmsg(string message) 320 private void IRC_ProcessPrivmsg(string message)
321 { 321 {
322 string[] privmsgArgs = ExtractParameters(message); 322 string[] privmsgArgs = ExtractParameters(message);
323 if (privmsgArgs[0] == IrcRegionName) 323 if (privmsgArgs[0] == IrcRegionName)
324 { 324 {
325 if (OnChatFromClient != null) 325 if (OnChatFromClient != null)
326 { 326 {
327 OSChatMessage msg = new OSChatMessage(); 327 OSChatMessage msg = new OSChatMessage();
328 msg.Sender = this; 328 msg.Sender = this;
329 msg.Channel = 0; 329 msg.Channel = 0;
330 msg.From = this.Name; 330 msg.From = this.Name;
331 msg.Message = privmsgArgs[1].Replace(":", ""); 331 msg.Message = privmsgArgs[1].Replace(":", "");
332 msg.Position = Vector3.Zero; 332 msg.Position = Vector3.Zero;
333 msg.Scene = m_scene; 333 msg.Scene = m_scene;
334 msg.SenderObject = null; 334 msg.SenderObject = null;
335 msg.SenderUUID = this.AgentId; 335 msg.SenderUUID = this.AgentId;
336 msg.Type = ChatTypeEnum.Say; 336 msg.Type = ChatTypeEnum.Say;
337 337
338 OnChatFromClient(this, msg); 338 OnChatFromClient(this, msg);
339 } 339 }
340 } 340 }
341 else 341 else
342 { 342 {
343 // Handle as an IM, later. 343 // Handle as an IM, later.
344 } 344 }
345 } 345 }
346 346
347 private void IRC_SendNamesReply() 347 private void IRC_SendNamesReply()
348 { 348 {
349 List<EntityBase> users = m_scene.Entities.GetAllByType<ScenePresence>(); 349 List<EntityBase> users = m_scene.Entities.GetAllByType<ScenePresence>();
350 350
351 foreach (EntityBase user in users) 351 foreach (EntityBase user in users)
352 { 352 {
353 SendServerCommand("353 " + m_nick + " = " + IrcRegionName + " :" + user.Name.Replace(" ", "")); 353 SendServerCommand("353 " + m_nick + " = " + IrcRegionName + " :" + user.Name.Replace(" ", ""));
354 } 354 }
355 SendServerCommand("366 " + IrcRegionName + " :End of /NAMES list"); 355 SendServerCommand("366 " + IrcRegionName + " :End of /NAMES list");
356 } 356 }
357 357
358 private void IRC_SendWhoReply() 358 private void IRC_SendWhoReply()
359 { 359 {
360 List<EntityBase> users = m_scene.Entities.GetAllByType<ScenePresence>(); 360 List<EntityBase> users = m_scene.Entities.GetAllByType<ScenePresence>();
361 361
362 foreach (EntityBase user in users) 362 foreach (EntityBase user in users)
363 { 363 {
364 /*SendServerCommand(String.Format("352 {0} {1} {2} {3} {4} {5} :0 {6}", IrcRegionName, 364 /*SendServerCommand(String.Format("352 {0} {1} {2} {3} {4} {5} :0 {6}", IrcRegionName,
365 user.Name.Replace(" ", ""), "nohost.com", "opensimircd", 365 user.Name.Replace(" ", ""), "nohost.com", "opensimircd",
366 user.Name.Replace(" ", ""), 'H', user.Name));*/ 366 user.Name.Replace(" ", ""), 'H', user.Name));*/
367 367
368 SendServerCommand("352 " + m_nick + " " + IrcRegionName + " n=" + user.Name.Replace(" ", "") + " fakehost.com " + user.Name.Replace(" ", "") + " H " + ":0 " + user.Name); 368 SendServerCommand("352 " + m_nick + " " + IrcRegionName + " n=" + user.Name.Replace(" ", "") + " fakehost.com " + user.Name.Replace(" ", "") + " H " + ":0 " + user.Name);
369 369
370 //SendServerCommand("352 " + IrcRegionName + " " + user.Name.Replace(" ", "") + " nohost.com irc.opensimulator " + user.Name.Replace(" ", "") + " H " + ":0 " + user.Name); 370 //SendServerCommand("352 " + IrcRegionName + " " + user.Name.Replace(" ", "") + " nohost.com irc.opensimulator " + user.Name.Replace(" ", "") + " H " + ":0 " + user.Name);
371 } 371 }
372 SendServerCommand("315 " + m_nick + " " + IrcRegionName + " :End of /WHO list"); 372 SendServerCommand("315 " + m_nick + " " + IrcRegionName + " :End of /WHO list");
373 } 373 }
374 374
375 private void IRC_SendMOTD() 375 private void IRC_SendMOTD()
376 { 376 {
377 SendServerCommand("375 :- OpenSimulator Message of the day -"); 377 SendServerCommand("375 :- OpenSimulator Message of the day -");
378 SendServerCommand("372 :- Hiya!"); 378 SendServerCommand("372 :- Hiya!");
379 SendServerCommand("376 :End of /MOTD command"); 379 SendServerCommand("376 :End of /MOTD command");
380 } 380 }
381 381
382 private void IRC_SendReplyTopic() 382 private void IRC_SendReplyTopic()
383 { 383 {
384 SendServerCommand("332 " + IrcRegionName + " :OpenSimulator IRC Server"); 384 SendServerCommand("332 " + IrcRegionName + " :OpenSimulator IRC Server");
385 } 385 }
386 386
387 private void IRC_SendReplyUsers() 387 private void IRC_SendReplyUsers()
388 { 388 {
389 List<EntityBase> users = m_scene.Entities.GetAllByType<ScenePresence>(); 389 List<EntityBase> users = m_scene.Entities.GetAllByType<ScenePresence>();
390 390
391 SendServerCommand("392 :UserID Terminal Host"); 391 SendServerCommand("392 :UserID Terminal Host");
392 392
393 if (users.Count == 0) 393 if (users.Count == 0)
394 { 394 {
395 SendServerCommand("395 :Nobody logged in"); 395 SendServerCommand("395 :Nobody logged in");
396 return; 396 return;
397 } 397 }
398 398
399 foreach (EntityBase user in users) 399 foreach (EntityBase user in users)
400 { 400 {
401 char[] nom = new char[8]; 401 char[] nom = new char[8];
402 char[] term = "terminal_".ToCharArray(); 402 char[] term = "terminal_".ToCharArray();
403 char[] host = "hostname".ToCharArray(); 403 char[] host = "hostname".ToCharArray();
404 404
405 string userName = user.Name.Replace(" ",""); 405 string userName = user.Name.Replace(" ","");
406 for (int i = 0; i < nom.Length; i++) 406 for (int i = 0; i < nom.Length; i++)
407 { 407 {
408 if (userName.Length < i) 408 if (userName.Length < i)
409 nom[i] = userName[i]; 409 nom[i] = userName[i];
410 else 410 else
411 nom[i] = ' '; 411 nom[i] = ' ';
412 } 412 }
413 413
414 SendServerCommand("393 :" + nom + " " + term + " " + host + ""); 414 SendServerCommand("393 :" + nom + " " + term + " " + host + "");
415 } 415 }
416 416
417 SendServerCommand("394 :End of users"); 417 SendServerCommand("394 :End of users");
418 } 418 }
419 419
420 private static string ExtractMessage(string buffer) 420 private static string ExtractMessage(string buffer)
421 { 421 {
422 int pos = buffer.IndexOf("\r\n"); 422 int pos = buffer.IndexOf("\r\n");
423 423
424 if (pos == -1) 424 if (pos == -1)
425 return null; 425 return null;
426 426
427 string command = buffer.Substring(0, pos + 2); 427 string command = buffer.Substring(0, pos + 2);
428 428
429 return command; 429 return command;
430 } 430 }
431 431
432 private static string ExtractCommand(string msg) 432 private static string ExtractCommand(string msg)
433 { 433 {
434 string[] msgs = msg.Split(' '); 434 string[] msgs = msg.Split(' ');
435 435
436 if (msgs.Length < 2) 436 if (msgs.Length < 2)
437 { 437 {
438 m_log.Warn("[IRCd] Dropped msg: " + msg); 438 m_log.Warn("[IRCd] Dropped msg: " + msg);
439 return null; 439 return null;
440 } 440 }
441 441
442 if (msgs[0].StartsWith(":")) 442 if (msgs[0].StartsWith(":"))
443 return msgs[1]; 443 return msgs[1];
444 444
445 return msgs[0]; 445 return msgs[0];
446 } 446 }
447 447
448 private static string[] ExtractParameters(string msg) 448 private static string[] ExtractParameters(string msg)
449 { 449 {
450 string[] msgs = msg.Split(' '); 450 string[] msgs = msg.Split(' ');
451 List<string> parms = new List<string>(msgs.Length); 451 List<string> parms = new List<string>(msgs.Length);
452 452
453 bool foundCommand = false; 453 bool foundCommand = false;
454 string command = ExtractCommand(msg); 454 string command = ExtractCommand(msg);
455 455
456 456
457 for(int i=0;i<msgs.Length;i++) 457 for(int i=0;i<msgs.Length;i++)
458 { 458 {
459 if(msgs[i] == command) 459 if(msgs[i] == command)
460 { 460 {
461 foundCommand = true; 461 foundCommand = true;
462 continue; 462 continue;
463 } 463 }
464 464
465 if(foundCommand != true) 465 if(foundCommand != true)
466 continue; 466 continue;
467 467
468 if(i != 0 && msgs[i].StartsWith(":")) 468 if(i != 0 && msgs[i].StartsWith(":"))
469 { 469 {
470 List<string> tmp = new List<string>(); 470 List<string> tmp = new List<string>();
471 for(int j=i;j<msgs.Length;j++) 471 for(int j=i;j<msgs.Length;j++)
472 { 472 {
473 tmp.Add(msgs[j]); 473 tmp.Add(msgs[j]);
474 } 474 }
475 parms.Add(string.Join(" ", tmp.ToArray())); 475 parms.Add(string.Join(" ", tmp.ToArray()));
476 break; 476 break;
477 } 477 }
478 478
479 parms.Add(msgs[i]); 479 parms.Add(msgs[i]);
480 } 480 }
481 481
482 return parms.ToArray(); 482 return parms.ToArray();
483 } 483 }
484 484
485 #region Implementation of IClientAPI 485 #region Implementation of IClientAPI
486 486
487 public Vector3 StartPos 487 public Vector3 StartPos
488 { 488 {
489 get { return new Vector3(128, 128, 50); } 489 get { return new Vector3(128, 128, 50); }
490 set { } 490 set { }
491 } 491 }
492 492
493 public bool TryGet<T>(out T iface) 493 public bool TryGet<T>(out T iface)
494 { 494 {
495 iface = default(T); 495 iface = default(T);
496 return false; 496 return false;
497 } 497 }
498 498
499 public T Get<T>() 499 public T Get<T>()
500 { 500 {
501 return default(T); 501 return default(T);
502 } 502 }
503 503
504 public UUID AgentId 504 public UUID AgentId
505 { 505 {
506 get { return m_agentID; } 506 get { return m_agentID; }
507 } 507 }
508 508
509 public void Disconnect(string reason) 509 public void Disconnect(string reason)
510 { 510 {
511 IRC_SendChannelPrivmsg("System", "You have been eaten by a grue. (" + reason + ")"); 511 IRC_SendChannelPrivmsg("System", "You have been eaten by a grue. (" + reason + ")");
512 512
513 m_connected = false; 513 m_connected = false;
514 m_client.Close(); 514 m_client.Close();
515 } 515 }
516 516
517 public void Disconnect() 517 public void Disconnect()
518 { 518 {
519 IRC_SendChannelPrivmsg("System", "You have been eaten by a grue."); 519 IRC_SendChannelPrivmsg("System", "You have been eaten by a grue.");
520 520
521 m_connected = false; 521 m_connected = false;
522 m_client.Close(); 522 m_client.Close();
523 } 523 }
524 524
525 public UUID SessionId 525 public UUID SessionId
526 { 526 {
527 get { return m_agentID; } 527 get { return m_agentID; }
528 } 528 }
529 529
530 public UUID SecureSessionId 530 public UUID SecureSessionId
531 { 531 {
532 get { return m_agentID; } 532 get { return m_agentID; }
533 } 533 }
534 534
535 public UUID ActiveGroupId 535 public UUID ActiveGroupId
536 { 536 {
537 get { return UUID.Zero; } 537 get { return UUID.Zero; }
538 } 538 }
539 539
540 public string ActiveGroupName 540 public string ActiveGroupName
541 { 541 {
542 get { return "IRCd User"; } 542 get { return "IRCd User"; }
543 } 543 }
544 544
545 public ulong ActiveGroupPowers 545 public ulong ActiveGroupPowers
546 { 546 {
547 get { return 0; } 547 get { return 0; }
548 } 548 }
549 549
550 public ulong GetGroupPowers(UUID groupID) 550 public ulong GetGroupPowers(UUID groupID)
551 { 551 {
552 return 0; 552 return 0;
553 } 553 }
554 554
555 public bool IsGroupMember(UUID GroupID) 555 public bool IsGroupMember(UUID GroupID)
556 { 556 {
557 return false; 557 return false;
558 } 558 }
559 559
560 public string FirstName 560 public string FirstName
561 { 561 {
562 get 562 get
563 { 563 {
564 string[] names = m_username.Split(' '); 564 string[] names = m_username.Split(' ');
565 return names[0]; 565 return names[0];
566 } 566 }
567 } 567 }
568 568
569 public string LastName 569 public string LastName
570 { 570 {
571 get 571 get
572 { 572 {
573 string[] names = m_username.Split(' '); 573 string[] names = m_username.Split(' ');
574 if (names.Length > 1) 574 if (names.Length > 1)
575 return names[1]; 575 return names[1];
576 return names[0]; 576 return names[0];
577 } 577 }
578 } 578 }
579 579
580 public IScene Scene 580 public IScene Scene
581 { 581 {
582 get { return m_scene; } 582 get { return m_scene; }
583 } 583 }
584 584
585 public int NextAnimationSequenceNumber 585 public int NextAnimationSequenceNumber
586 { 586 {
587 get { return 0; } 587 get { return 0; }
588 } 588 }
589 589
590 public string Name 590 public string Name
591 { 591 {
592 get { return m_username; } 592 get { return m_username; }
593 } 593 }
594 594
595 public bool IsActive 595 public bool IsActive
596 { 596 {
597 get { return true; } 597 get { return true; }
598 set { if (!value) Disconnect("IsActive Disconnected?"); } 598 set { if (!value) Disconnect("IsActive Disconnected?"); }
599 } 599 }
600 600
601 public bool SendLogoutPacketWhenClosing 601 public bool SendLogoutPacketWhenClosing
602 { 602 {
603 set { } 603 set { }
604 } 604 }
605 605
606 public uint CircuitCode 606 public uint CircuitCode
607 { 607 {
608 get { return (uint)Util.RandomClass.Next(0,int.MaxValue); } 608 get { return (uint)Util.RandomClass.Next(0,int.MaxValue); }
609 } 609 }
610 610
611 public event GenericMessage OnGenericMessage; 611 public event GenericMessage OnGenericMessage;
612 public event ImprovedInstantMessage OnInstantMessage; 612 public event ImprovedInstantMessage OnInstantMessage;
613 public event ChatMessage OnChatFromClient; 613 public event ChatMessage OnChatFromClient;
614 public event TextureRequest OnRequestTexture; 614 public event TextureRequest OnRequestTexture;
615 public event RezObject OnRezObject; 615 public event RezObject OnRezObject;
616 public event ModifyTerrain OnModifyTerrain; 616 public event ModifyTerrain OnModifyTerrain;
617 public event BakeTerrain OnBakeTerrain; 617 public event BakeTerrain OnBakeTerrain;
618 public event EstateChangeInfo OnEstateChangeInfo; 618 public event EstateChangeInfo OnEstateChangeInfo;
619 public event SetAppearance OnSetAppearance; 619 public event SetAppearance OnSetAppearance;
620 public event AvatarNowWearing OnAvatarNowWearing; 620 public event AvatarNowWearing OnAvatarNowWearing;
621 public event RezSingleAttachmentFromInv OnRezSingleAttachmentFromInv; 621 public event RezSingleAttachmentFromInv OnRezSingleAttachmentFromInv;
622 public event RezMultipleAttachmentsFromInv OnRezMultipleAttachmentsFromInv; 622 public event RezMultipleAttachmentsFromInv OnRezMultipleAttachmentsFromInv;
623 public event UUIDNameRequest OnDetachAttachmentIntoInv; 623 public event UUIDNameRequest OnDetachAttachmentIntoInv;
624 public event ObjectAttach OnObjectAttach; 624 public event ObjectAttach OnObjectAttach;
625 public event ObjectDeselect OnObjectDetach; 625 public event ObjectDeselect OnObjectDetach;
626 public event ObjectDrop OnObjectDrop; 626 public event ObjectDrop OnObjectDrop;
627 public event StartAnim OnStartAnim; 627 public event StartAnim OnStartAnim;
628 public event StopAnim OnStopAnim; 628 public event StopAnim OnStopAnim;
629 public event LinkObjects OnLinkObjects; 629 public event LinkObjects OnLinkObjects;
630 public event DelinkObjects OnDelinkObjects; 630 public event DelinkObjects OnDelinkObjects;
631 public event RequestMapBlocks OnRequestMapBlocks; 631 public event RequestMapBlocks OnRequestMapBlocks;
632 public event RequestMapName OnMapNameRequest; 632 public event RequestMapName OnMapNameRequest;
633 public event TeleportLocationRequest OnTeleportLocationRequest; 633 public event TeleportLocationRequest OnTeleportLocationRequest;
634 public event DisconnectUser OnDisconnectUser; 634 public event DisconnectUser OnDisconnectUser;
635 public event RequestAvatarProperties OnRequestAvatarProperties; 635 public event RequestAvatarProperties OnRequestAvatarProperties;
636 public event SetAlwaysRun OnSetAlwaysRun; 636 public event SetAlwaysRun OnSetAlwaysRun;
637 public event TeleportLandmarkRequest OnTeleportLandmarkRequest; 637 public event TeleportLandmarkRequest OnTeleportLandmarkRequest;
638 public event DeRezObject OnDeRezObject; 638 public event DeRezObject OnDeRezObject;
639 public event Action<IClientAPI> OnRegionHandShakeReply; 639 public event Action<IClientAPI> OnRegionHandShakeReply;
640 public event GenericCall2 OnRequestWearables; 640 public event GenericCall2 OnRequestWearables;
641 public event GenericCall2 OnCompleteMovementToRegion; 641 public event GenericCall2 OnCompleteMovementToRegion;
642 public event UpdateAgent OnAgentUpdate; 642 public event UpdateAgent OnAgentUpdate;
643 public event AgentRequestSit OnAgentRequestSit; 643 public event AgentRequestSit OnAgentRequestSit;
644 public event AgentSit OnAgentSit; 644 public event AgentSit OnAgentSit;
645 public event AvatarPickerRequest OnAvatarPickerRequest; 645 public event AvatarPickerRequest OnAvatarPickerRequest;
646 public event Action<IClientAPI> OnRequestAvatarsData; 646 public event Action<IClientAPI> OnRequestAvatarsData;
647 public event AddNewPrim OnAddPrim; 647 public event AddNewPrim OnAddPrim;
648 public event FetchInventory OnAgentDataUpdateRequest; 648 public event FetchInventory OnAgentDataUpdateRequest;
649 public event TeleportLocationRequest OnSetStartLocationRequest; 649 public event TeleportLocationRequest OnSetStartLocationRequest;
650 public event RequestGodlikePowers OnRequestGodlikePowers; 650 public event RequestGodlikePowers OnRequestGodlikePowers;
651 public event GodKickUser OnGodKickUser; 651 public event GodKickUser OnGodKickUser;
652 public event ObjectDuplicate OnObjectDuplicate; 652 public event ObjectDuplicate OnObjectDuplicate;
653 public event ObjectDuplicateOnRay OnObjectDuplicateOnRay; 653 public event ObjectDuplicateOnRay OnObjectDuplicateOnRay;
654 public event GrabObject OnGrabObject; 654 public event GrabObject OnGrabObject;
655 public event ObjectSelect OnDeGrabObject; 655 public event ObjectSelect OnDeGrabObject;
656 public event MoveObject OnGrabUpdate; 656 public event MoveObject OnGrabUpdate;
657 public event SpinStart OnSpinStart; 657 public event SpinStart OnSpinStart;
658 public event SpinObject OnSpinUpdate; 658 public event SpinObject OnSpinUpdate;
659 public event SpinStop OnSpinStop; 659 public event SpinStop OnSpinStop;
660 public event UpdateShape OnUpdatePrimShape; 660 public event UpdateShape OnUpdatePrimShape;
661 public event ObjectExtraParams OnUpdateExtraParams; 661 public event ObjectExtraParams OnUpdateExtraParams;
662 public event ObjectSelect OnObjectSelect; 662 public event ObjectSelect OnObjectSelect;
663 public event ObjectDeselect OnObjectDeselect; 663 public event ObjectDeselect OnObjectDeselect;
664 public event GenericCall7 OnObjectDescription; 664 public event GenericCall7 OnObjectDescription;
665 public event GenericCall7 OnObjectName; 665 public event GenericCall7 OnObjectName;
666 public event GenericCall7 OnObjectClickAction; 666 public event GenericCall7 OnObjectClickAction;
667 public event GenericCall7 OnObjectMaterial; 667 public event GenericCall7 OnObjectMaterial;
668 public event RequestObjectPropertiesFamily OnRequestObjectPropertiesFamily; 668 public event RequestObjectPropertiesFamily OnRequestObjectPropertiesFamily;
669 public event UpdatePrimFlags OnUpdatePrimFlags; 669 public event UpdatePrimFlags OnUpdatePrimFlags;
670 public event UpdatePrimTexture OnUpdatePrimTexture; 670 public event UpdatePrimTexture OnUpdatePrimTexture;
671 public event UpdateVector OnUpdatePrimGroupPosition; 671 public event UpdateVector OnUpdatePrimGroupPosition;
672 public event UpdateVector OnUpdatePrimSinglePosition; 672 public event UpdateVector OnUpdatePrimSinglePosition;
673 public event UpdatePrimRotation OnUpdatePrimGroupRotation; 673 public event UpdatePrimRotation OnUpdatePrimGroupRotation;
674 public event UpdatePrimSingleRotation OnUpdatePrimSingleRotation; 674 public event UpdatePrimSingleRotation OnUpdatePrimSingleRotation;
675 public event UpdatePrimGroupRotation OnUpdatePrimGroupMouseRotation; 675 public event UpdatePrimGroupRotation OnUpdatePrimGroupMouseRotation;
676 public event UpdateVector OnUpdatePrimScale; 676 public event UpdateVector OnUpdatePrimScale;
677 public event UpdateVector OnUpdatePrimGroupScale; 677 public event UpdateVector OnUpdatePrimGroupScale;
678 public event StatusChange OnChildAgentStatus; 678 public event StatusChange OnChildAgentStatus;
679 public event GenericCall2 OnStopMovement; 679 public event GenericCall2 OnStopMovement;
680 public event Action<UUID> OnRemoveAvatar; 680 public event Action<UUID> OnRemoveAvatar;
681 public event ObjectPermissions OnObjectPermissions; 681 public event ObjectPermissions OnObjectPermissions;
682 public event CreateNewInventoryItem OnCreateNewInventoryItem; 682 public event CreateNewInventoryItem OnCreateNewInventoryItem;
683 public event CreateInventoryFolder OnCreateNewInventoryFolder; 683 public event CreateInventoryFolder OnCreateNewInventoryFolder;
684 public event UpdateInventoryFolder OnUpdateInventoryFolder; 684 public event UpdateInventoryFolder OnUpdateInventoryFolder;
685 public event MoveInventoryFolder OnMoveInventoryFolder; 685 public event MoveInventoryFolder OnMoveInventoryFolder;
686 public event FetchInventoryDescendents OnFetchInventoryDescendents; 686 public event FetchInventoryDescendents OnFetchInventoryDescendents;
687 public event PurgeInventoryDescendents OnPurgeInventoryDescendents; 687 public event PurgeInventoryDescendents OnPurgeInventoryDescendents;
688 public event FetchInventory OnFetchInventory; 688 public event FetchInventory OnFetchInventory;
689 public event RequestTaskInventory OnRequestTaskInventory; 689 public event RequestTaskInventory OnRequestTaskInventory;
690 public event UpdateInventoryItem OnUpdateInventoryItem; 690 public event UpdateInventoryItem OnUpdateInventoryItem;
691 public event CopyInventoryItem OnCopyInventoryItem; 691 public event CopyInventoryItem OnCopyInventoryItem;
692 public event MoveInventoryItem OnMoveInventoryItem; 692 public event MoveInventoryItem OnMoveInventoryItem;
693 public event RemoveInventoryFolder OnRemoveInventoryFolder; 693 public event RemoveInventoryFolder OnRemoveInventoryFolder;
694 public event RemoveInventoryItem OnRemoveInventoryItem; 694 public event RemoveInventoryItem OnRemoveInventoryItem;
695 public event UDPAssetUploadRequest OnAssetUploadRequest; 695 public event UDPAssetUploadRequest OnAssetUploadRequest;
696 public event XferReceive OnXferReceive; 696 public event XferReceive OnXferReceive;
697 public event RequestXfer OnRequestXfer; 697 public event RequestXfer OnRequestXfer;
698 public event ConfirmXfer OnConfirmXfer; 698 public event ConfirmXfer OnConfirmXfer;
699 public event AbortXfer OnAbortXfer; 699 public event AbortXfer OnAbortXfer;
700 public event RezScript OnRezScript; 700 public event RezScript OnRezScript;
701 public event UpdateTaskInventory OnUpdateTaskInventory; 701 public event UpdateTaskInventory OnUpdateTaskInventory;
702 public event MoveTaskInventory OnMoveTaskItem; 702 public event MoveTaskInventory OnMoveTaskItem;
703 public event RemoveTaskInventory OnRemoveTaskItem; 703 public event RemoveTaskInventory OnRemoveTaskItem;
704 public event RequestAsset OnRequestAsset; 704 public event RequestAsset OnRequestAsset;
705 public event UUIDNameRequest OnNameFromUUIDRequest; 705 public event UUIDNameRequest OnNameFromUUIDRequest;
706 public event ParcelAccessListRequest OnParcelAccessListRequest; 706 public event ParcelAccessListRequest OnParcelAccessListRequest;
707 public event ParcelAccessListUpdateRequest OnParcelAccessListUpdateRequest; 707 public event ParcelAccessListUpdateRequest OnParcelAccessListUpdateRequest;
708 public event ParcelPropertiesRequest OnParcelPropertiesRequest; 708 public event ParcelPropertiesRequest OnParcelPropertiesRequest;
709 public event ParcelDivideRequest OnParcelDivideRequest; 709 public event ParcelDivideRequest OnParcelDivideRequest;
710 public event ParcelJoinRequest OnParcelJoinRequest; 710 public event ParcelJoinRequest OnParcelJoinRequest;
711 public event ParcelPropertiesUpdateRequest OnParcelPropertiesUpdateRequest; 711 public event ParcelPropertiesUpdateRequest OnParcelPropertiesUpdateRequest;
712 public event ParcelSelectObjects OnParcelSelectObjects; 712 public event ParcelSelectObjects OnParcelSelectObjects;
713 public event ParcelObjectOwnerRequest OnParcelObjectOwnerRequest; 713 public event ParcelObjectOwnerRequest OnParcelObjectOwnerRequest;
714 public event ParcelAbandonRequest OnParcelAbandonRequest; 714 public event ParcelAbandonRequest OnParcelAbandonRequest;
715 public event ParcelGodForceOwner OnParcelGodForceOwner; 715 public event ParcelGodForceOwner OnParcelGodForceOwner;
716 public event ParcelReclaim OnParcelReclaim; 716 public event ParcelReclaim OnParcelReclaim;
717 public event ParcelReturnObjectsRequest OnParcelReturnObjectsRequest; 717 public event ParcelReturnObjectsRequest OnParcelReturnObjectsRequest;
718 public event ParcelDeedToGroup OnParcelDeedToGroup; 718 public event ParcelDeedToGroup OnParcelDeedToGroup;
719 public event RegionInfoRequest OnRegionInfoRequest; 719 public event RegionInfoRequest OnRegionInfoRequest;
720 public event EstateCovenantRequest OnEstateCovenantRequest; 720 public event EstateCovenantRequest OnEstateCovenantRequest;
721 public event FriendActionDelegate OnApproveFriendRequest; 721 public event FriendActionDelegate OnApproveFriendRequest;
722 public event FriendActionDelegate OnDenyFriendRequest; 722 public event FriendActionDelegate OnDenyFriendRequest;
723 public event FriendshipTermination OnTerminateFriendship; 723 public event FriendshipTermination OnTerminateFriendship;
724 public event MoneyTransferRequest OnMoneyTransferRequest; 724 public event MoneyTransferRequest OnMoneyTransferRequest;
725 public event EconomyDataRequest OnEconomyDataRequest; 725 public event EconomyDataRequest OnEconomyDataRequest;
726 public event MoneyBalanceRequest OnMoneyBalanceRequest; 726 public event MoneyBalanceRequest OnMoneyBalanceRequest;
727 public event UpdateAvatarProperties OnUpdateAvatarProperties; 727 public event UpdateAvatarProperties OnUpdateAvatarProperties;
728 public event ParcelBuy OnParcelBuy; 728 public event ParcelBuy OnParcelBuy;
729 public event RequestPayPrice OnRequestPayPrice; 729 public event RequestPayPrice OnRequestPayPrice;
730 public event ObjectSaleInfo OnObjectSaleInfo; 730 public event ObjectSaleInfo OnObjectSaleInfo;
731 public event ObjectBuy OnObjectBuy; 731 public event ObjectBuy OnObjectBuy;
732 public event BuyObjectInventory OnBuyObjectInventory; 732 public event BuyObjectInventory OnBuyObjectInventory;
733 public event RequestTerrain OnRequestTerrain; 733 public event RequestTerrain OnRequestTerrain;
734 public event RequestTerrain OnUploadTerrain; 734 public event RequestTerrain OnUploadTerrain;
735 public event ObjectIncludeInSearch OnObjectIncludeInSearch; 735 public event ObjectIncludeInSearch OnObjectIncludeInSearch;
736 public event UUIDNameRequest OnTeleportHomeRequest; 736 public event UUIDNameRequest OnTeleportHomeRequest;
737 public event ScriptAnswer OnScriptAnswer; 737 public event ScriptAnswer OnScriptAnswer;
738 public event AgentSit OnUndo; 738 public event AgentSit OnUndo;
739 public event ForceReleaseControls OnForceReleaseControls; 739 public event ForceReleaseControls OnForceReleaseControls;
740 public event GodLandStatRequest OnLandStatRequest; 740 public event GodLandStatRequest OnLandStatRequest;
741 public event DetailedEstateDataRequest OnDetailedEstateDataRequest; 741 public event DetailedEstateDataRequest OnDetailedEstateDataRequest;
742 public event SetEstateFlagsRequest OnSetEstateFlagsRequest; 742 public event SetEstateFlagsRequest OnSetEstateFlagsRequest;
743 public event SetEstateTerrainBaseTexture OnSetEstateTerrainBaseTexture; 743 public event SetEstateTerrainBaseTexture OnSetEstateTerrainBaseTexture;
744 public event SetEstateTerrainDetailTexture OnSetEstateTerrainDetailTexture; 744 public event SetEstateTerrainDetailTexture OnSetEstateTerrainDetailTexture;
745 public event SetEstateTerrainTextureHeights OnSetEstateTerrainTextureHeights; 745 public event SetEstateTerrainTextureHeights OnSetEstateTerrainTextureHeights;
746 public event CommitEstateTerrainTextureRequest OnCommitEstateTerrainTextureRequest; 746 public event CommitEstateTerrainTextureRequest OnCommitEstateTerrainTextureRequest;
747 public event SetRegionTerrainSettings OnSetRegionTerrainSettings; 747 public event SetRegionTerrainSettings OnSetRegionTerrainSettings;
748 public event EstateRestartSimRequest OnEstateRestartSimRequest; 748 public event EstateRestartSimRequest OnEstateRestartSimRequest;
749 public event EstateChangeCovenantRequest OnEstateChangeCovenantRequest; 749 public event EstateChangeCovenantRequest OnEstateChangeCovenantRequest;
750 public event UpdateEstateAccessDeltaRequest OnUpdateEstateAccessDeltaRequest; 750 public event UpdateEstateAccessDeltaRequest OnUpdateEstateAccessDeltaRequest;
751 public event SimulatorBlueBoxMessageRequest OnSimulatorBlueBoxMessageRequest; 751 public event SimulatorBlueBoxMessageRequest OnSimulatorBlueBoxMessageRequest;
752 public event EstateBlueBoxMessageRequest OnEstateBlueBoxMessageRequest; 752 public event EstateBlueBoxMessageRequest OnEstateBlueBoxMessageRequest;
753 public event EstateDebugRegionRequest OnEstateDebugRegionRequest; 753 public event EstateDebugRegionRequest OnEstateDebugRegionRequest;
754 public event EstateTeleportOneUserHomeRequest OnEstateTeleportOneUserHomeRequest; 754 public event EstateTeleportOneUserHomeRequest OnEstateTeleportOneUserHomeRequest;
755 public event EstateTeleportAllUsersHomeRequest OnEstateTeleportAllUsersHomeRequest; 755 public event EstateTeleportAllUsersHomeRequest OnEstateTeleportAllUsersHomeRequest;
756 public event UUIDNameRequest OnUUIDGroupNameRequest; 756 public event UUIDNameRequest OnUUIDGroupNameRequest;
757 public event RegionHandleRequest OnRegionHandleRequest; 757 public event RegionHandleRequest OnRegionHandleRequest;
758 public event ParcelInfoRequest OnParcelInfoRequest; 758 public event ParcelInfoRequest OnParcelInfoRequest;
759 public event RequestObjectPropertiesFamily OnObjectGroupRequest; 759 public event RequestObjectPropertiesFamily OnObjectGroupRequest;
760 public event ScriptReset OnScriptReset; 760 public event ScriptReset OnScriptReset;
761 public event GetScriptRunning OnGetScriptRunning; 761 public event GetScriptRunning OnGetScriptRunning;
762 public event SetScriptRunning OnSetScriptRunning; 762 public event SetScriptRunning OnSetScriptRunning;
763 public event UpdateVector OnAutoPilotGo; 763 public event UpdateVector OnAutoPilotGo;
764 public event TerrainUnacked OnUnackedTerrain; 764 public event TerrainUnacked OnUnackedTerrain;
765 public event ActivateGesture OnActivateGesture; 765 public event ActivateGesture OnActivateGesture;
766 public event DeactivateGesture OnDeactivateGesture; 766 public event DeactivateGesture OnDeactivateGesture;
767 public event ObjectOwner OnObjectOwner; 767 public event ObjectOwner OnObjectOwner;
768 public event DirPlacesQuery OnDirPlacesQuery; 768 public event DirPlacesQuery OnDirPlacesQuery;
769 public event DirFindQuery OnDirFindQuery; 769 public event DirFindQuery OnDirFindQuery;
770 public event DirLandQuery OnDirLandQuery; 770 public event DirLandQuery OnDirLandQuery;
771 public event DirPopularQuery OnDirPopularQuery; 771 public event DirPopularQuery OnDirPopularQuery;
772 public event DirClassifiedQuery OnDirClassifiedQuery; 772 public event DirClassifiedQuery OnDirClassifiedQuery;
773 public event EventInfoRequest OnEventInfoRequest; 773 public event EventInfoRequest OnEventInfoRequest;
774 public event ParcelSetOtherCleanTime OnParcelSetOtherCleanTime; 774 public event ParcelSetOtherCleanTime OnParcelSetOtherCleanTime;
775 public event MapItemRequest OnMapItemRequest; 775 public event MapItemRequest OnMapItemRequest;
776 public event OfferCallingCard OnOfferCallingCard; 776 public event OfferCallingCard OnOfferCallingCard;
777 public event AcceptCallingCard OnAcceptCallingCard; 777 public event AcceptCallingCard OnAcceptCallingCard;
778 public event DeclineCallingCard OnDeclineCallingCard; 778 public event DeclineCallingCard OnDeclineCallingCard;
779 public event SoundTrigger OnSoundTrigger; 779 public event SoundTrigger OnSoundTrigger;
780 public event StartLure OnStartLure; 780 public event StartLure OnStartLure;
781 public event TeleportLureRequest OnTeleportLureRequest; 781 public event TeleportLureRequest OnTeleportLureRequest;
782 public event NetworkStats OnNetworkStatsUpdate; 782 public event NetworkStats OnNetworkStatsUpdate;
783 public event ClassifiedInfoRequest OnClassifiedInfoRequest; 783 public event ClassifiedInfoRequest OnClassifiedInfoRequest;
784 public event ClassifiedInfoUpdate OnClassifiedInfoUpdate; 784 public event ClassifiedInfoUpdate OnClassifiedInfoUpdate;
785 public event ClassifiedDelete OnClassifiedDelete; 785 public event ClassifiedDelete OnClassifiedDelete;
786 public event ClassifiedDelete OnClassifiedGodDelete; 786 public event ClassifiedDelete OnClassifiedGodDelete;
787 public event EventNotificationAddRequest OnEventNotificationAddRequest; 787 public event EventNotificationAddRequest OnEventNotificationAddRequest;
788 public event EventNotificationRemoveRequest OnEventNotificationRemoveRequest; 788 public event EventNotificationRemoveRequest OnEventNotificationRemoveRequest;
789 public event EventGodDelete OnEventGodDelete; 789 public event EventGodDelete OnEventGodDelete;
790 public event ParcelDwellRequest OnParcelDwellRequest; 790 public event ParcelDwellRequest OnParcelDwellRequest;
791 public event UserInfoRequest OnUserInfoRequest; 791 public event UserInfoRequest OnUserInfoRequest;
792 public event UpdateUserInfo OnUpdateUserInfo; 792 public event UpdateUserInfo OnUpdateUserInfo;
793 public event RetrieveInstantMessages OnRetrieveInstantMessages; 793 public event RetrieveInstantMessages OnRetrieveInstantMessages;
794 public event PickDelete OnPickDelete; 794 public event PickDelete OnPickDelete;
795 public event PickGodDelete OnPickGodDelete; 795 public event PickGodDelete OnPickGodDelete;
796 public event PickInfoUpdate OnPickInfoUpdate; 796 public event PickInfoUpdate OnPickInfoUpdate;
797 public event AvatarNotesUpdate OnAvatarNotesUpdate; 797 public event AvatarNotesUpdate OnAvatarNotesUpdate;
798 public event MuteListRequest OnMuteListRequest; 798 public event MuteListRequest OnMuteListRequest;
799 public event PlacesQuery OnPlacesQuery; 799 public event PlacesQuery OnPlacesQuery;
800 800
801 public void SetDebugPacketLevel(int newDebug) 801 public void SetDebugPacketLevel(int newDebug)
802 { 802 {
803 803
804 } 804 }
805 805
806 public void InPacket(object NewPack) 806 public void InPacket(object NewPack)
807 { 807 {
808 808
809 } 809 }
810 810
811 public void ProcessInPacket(Packet NewPack) 811 public void ProcessInPacket(Packet NewPack)
812 { 812 {
813 813
814 } 814 }
815 815
816 public void Close(bool ShutdownCircuit) 816 public void Close(bool ShutdownCircuit)
817 { 817 {
818 Disconnect(); 818 Disconnect();
819 } 819 }
820 820
821 public void Kick(string message) 821 public void Kick(string message)
822 { 822 {
823 Disconnect(message); 823 Disconnect(message);
824 } 824 }
825 825
826 public void Start() 826 public void Start()
827 { 827 {
828 Scene.AddNewClient(this); 828 Scene.AddNewClient(this);
829 829
830 // Mimicking LLClientView which gets always set appearance from client. 830 // Mimicking LLClientView which gets always set appearance from client.
831 Scene scene = (Scene)Scene; 831 Scene scene = (Scene)Scene;
832 AvatarAppearance appearance; 832 AvatarAppearance appearance;
833 scene.GetAvatarAppearance(this, out appearance); 833 scene.GetAvatarAppearance(this, out appearance);
834 List<byte> visualParams = new List<byte>(); 834 List<byte> visualParams = new List<byte>();
835 foreach (byte visualParam in appearance.VisualParams) 835 foreach (byte visualParam in appearance.VisualParams)
836 { 836 {
837 visualParams.Add(visualParam); 837 visualParams.Add(visualParam);
838 } 838 }
839 OnSetAppearance(appearance.Texture.GetBytes(), visualParams); 839 OnSetAppearance(appearance.Texture.GetBytes(), visualParams);
840 } 840 }
841 841
842 public void SendRegionHandshake(RegionInfo regionInfo, RegionHandshakeArgs args) 842 public void SendRegionHandshake(RegionInfo regionInfo, RegionHandshakeArgs args)
843 { 843 {
844 m_log.Info("[IRCd ClientStack] Completing Handshake to Region"); 844 m_log.Info("[IRCd ClientStack] Completing Handshake to Region");
845 845
846 if (OnRegionHandShakeReply != null) 846 if (OnRegionHandShakeReply != null)
847 { 847 {
848 OnRegionHandShakeReply(this); 848 OnRegionHandShakeReply(this);
849 } 849 }
850 850
851 if (OnCompleteMovementToRegion != null) 851 if (OnCompleteMovementToRegion != null)
852 { 852 {
853 OnCompleteMovementToRegion(); 853 OnCompleteMovementToRegion();
854 } 854 }
855 } 855 }
856 856
857 public void Stop() 857 public void Stop()
858 { 858 {
859 Disconnect(); 859 Disconnect();
860 } 860 }
861 861
862 public void SendWearables(AvatarWearable[] wearables, int serial) 862 public void SendWearables(AvatarWearable[] wearables, int serial)
863 { 863 {
864 864
865 } 865 }
866 866
867 public void SendAppearance(UUID agentID, byte[] visualParams, byte[] textureEntry) 867 public void SendAppearance(UUID agentID, byte[] visualParams, byte[] textureEntry)
868 { 868 {
869 869
870 } 870 }
871 871
872 public void SendStartPingCheck(byte seq) 872 public void SendStartPingCheck(byte seq)
873 { 873 {
874 874
875 } 875 }
876 876
877 public void SendKillObject(ulong regionHandle, uint localID) 877 public void SendKillObject(ulong regionHandle, uint localID)
878 { 878 {
879 879
880 } 880 }
881 881
882 public void SendAnimations(UUID[] animID, int[] seqs, UUID sourceAgentId, UUID[] objectIDs) 882 public void SendAnimations(UUID[] animID, int[] seqs, UUID sourceAgentId, UUID[] objectIDs)
883 { 883 {
884 884
885 } 885 }
886 886
887 public void SendChatMessage(string message, byte type, Vector3 fromPos, string fromName, UUID fromAgentID, byte source, byte audible) 887 public void SendChatMessage(string message, byte type, Vector3 fromPos, string fromName, UUID fromAgentID, byte source, byte audible)
888 { 888 {
889 if (audible > 0 && message.Length > 0) 889 if (audible > 0 && message.Length > 0)
890 IRC_SendChannelPrivmsg(fromName, message); 890 IRC_SendChannelPrivmsg(fromName, message);
891 } 891 }
892 892
893 private void IRC_SendChannelPrivmsg(string fromName, string message) 893 private void IRC_SendChannelPrivmsg(string fromName, string message)
894 { 894 {
895 SendCommand(":" + fromName.Replace(" ", "") + " PRIVMSG " + IrcRegionName + " :" + message); 895 SendCommand(":" + fromName.Replace(" ", "") + " PRIVMSG " + IrcRegionName + " :" + message);
896 } 896 }
897 897
898 public void SendInstantMessage(GridInstantMessage im) 898 public void SendInstantMessage(GridInstantMessage im)
899 { 899 {
900 // TODO 900 // TODO
901 } 901 }
902 902
903 public void SendGenericMessage(string method, List<string> message) 903 public void SendGenericMessage(string method, List<string> message)
904 { 904 {
905 905
906 } 906 }
907 907
908 public void SendLayerData(float[] map) 908 public void SendLayerData(float[] map)
909 { 909 {
910 910
911 } 911 }
912 912
913 public void SendLayerData(int px, int py, float[] map) 913 public void SendLayerData(int px, int py, float[] map)
914 { 914 {
915 915
916 } 916 }
917 917
918 public void SendWindData(Vector2[] windSpeeds) 918 public void SendWindData(Vector2[] windSpeeds)
919 { 919 {
920 920
921 } 921 }
922 922
923 public void SendCloudData(float[] cloudCover) 923 public void SendCloudData(float[] cloudCover)
924 { 924 {
925 925
926 } 926 }
927 927
928 public void MoveAgentIntoRegion(RegionInfo regInfo, Vector3 pos, Vector3 look) 928 public void MoveAgentIntoRegion(RegionInfo regInfo, Vector3 pos, Vector3 look)
929 { 929 {
930 930
931 } 931 }
932 932
933 public void InformClientOfNeighbour(ulong neighbourHandle, IPEndPoint neighbourExternalEndPoint) 933 public void InformClientOfNeighbour(ulong neighbourHandle, IPEndPoint neighbourExternalEndPoint)
934 { 934 {
935 935
936 } 936 }
937 937
938 public AgentCircuitData RequestClientInfo() 938 public AgentCircuitData RequestClientInfo()
939 { 939 {
940 return new AgentCircuitData(); 940 return new AgentCircuitData();
941 } 941 }
942 942
943 public void CrossRegion(ulong newRegionHandle, Vector3 pos, Vector3 lookAt, IPEndPoint newRegionExternalEndPoint, string capsURL) 943 public void CrossRegion(ulong newRegionHandle, Vector3 pos, Vector3 lookAt, IPEndPoint newRegionExternalEndPoint, string capsURL)
944 { 944 {
945 945
946 } 946 }
947 947
948 public void SendMapBlock(List<MapBlockData> mapBlocks, uint flag) 948 public void SendMapBlock(List<MapBlockData> mapBlocks, uint flag)
949 { 949 {
950 950
951 } 951 }
952 952
953 public void SendLocalTeleport(Vector3 position, Vector3 lookAt, uint flags) 953 public void SendLocalTeleport(Vector3 position, Vector3 lookAt, uint flags)
954 { 954 {
955 955
956 } 956 }
957 957
958 public void SendRegionTeleport(ulong regionHandle, byte simAccess, IPEndPoint regionExternalEndPoint, uint locationID, uint flags, string capsURL) 958 public void SendRegionTeleport(ulong regionHandle, byte simAccess, IPEndPoint regionExternalEndPoint, uint locationID, uint flags, string capsURL)
959 { 959 {
960 960
961 } 961 }
962 962
963 public void SendTeleportFailed(string reason) 963 public void SendTeleportFailed(string reason)
964 { 964 {
965 965
966 } 966 }
967 967
968 public void SendTeleportLocationStart() 968 public void SendTeleportLocationStart()
969 { 969 {
970 970
971 } 971 }
972 972
973 public void SendMoneyBalance(UUID transaction, bool success, byte[] description, int balance) 973 public void SendMoneyBalance(UUID transaction, bool success, byte[] description, int balance)
974 { 974 {
975 975
976 } 976 }
977 977
978 public void SendPayPrice(UUID objectID, int[] payPrice) 978 public void SendPayPrice(UUID objectID, int[] payPrice)
979 { 979 {
980 980
981 } 981 }
982 982
983 public void SendAvatarData(ulong regionHandle, string firstName, string lastName, string grouptitle, UUID avatarID, uint avatarLocalID, Vector3 Pos, byte[] textureEntry, uint parentID, Quaternion rotation) 983 public void SendAvatarData(ulong regionHandle, string firstName, string lastName, string grouptitle, UUID avatarID, uint avatarLocalID, Vector3 Pos, byte[] textureEntry, uint parentID, Quaternion rotation)
984 { 984 {
985 985
986 } 986 }
987 987
988 public void SendAvatarTerseUpdate(ulong regionHandle, ushort timeDilation, uint localID, Vector3 position, Vector3 velocity, Quaternion rotation, UUID agentid) 988 public void SendAvatarTerseUpdate(ulong regionHandle, ushort timeDilation, uint localID, Vector3 position, Vector3 velocity, Quaternion rotation, UUID agentid)
989 { 989 {
990 990
991 } 991 }
992 992
993 public void SendCoarseLocationUpdate(List<UUID> users, List<Vector3> CoarseLocations) 993 public void SendCoarseLocationUpdate(List<UUID> users, List<Vector3> CoarseLocations)
994 { 994 {
995 995
996 } 996 }
997 997
998 public void AttachObject(uint localID, Quaternion rotation, byte attachPoint, UUID ownerID) 998 public void AttachObject(uint localID, Quaternion rotation, byte attachPoint, UUID ownerID)
999 { 999 {
1000 1000
1001 } 1001 }
1002 1002
1003 public void SetChildAgentThrottle(byte[] throttle) 1003 public void SetChildAgentThrottle(byte[] throttle)
1004 { 1004 {
1005 1005
1006 } 1006 }
1007 1007
1008 public void SendPrimitiveToClient(ulong regionHandle, ushort timeDilation, uint localID, PrimitiveBaseShape primShape, Vector3 pos, Vector3 vel, Vector3 acc, Quaternion rotation, Vector3 rvel, uint flags, UUID objectID, UUID ownerID, string text, byte[] color, uint parentID, byte[] particleSystem, byte clickAction, byte material, byte[] textureanim, bool attachment, uint AttachPoint, UUID AssetId, UUID SoundId, double SoundVolume, byte SoundFlags, double SoundRadius) 1008 public void SendPrimitiveToClient(ulong regionHandle, ushort timeDilation, uint localID, PrimitiveBaseShape primShape, Vector3 pos, Vector3 vel, Vector3 acc, Quaternion rotation, Vector3 rvel, uint flags, UUID objectID, UUID ownerID, string text, byte[] color, uint parentID, byte[] particleSystem, byte clickAction, byte material, byte[] textureanim, bool attachment, uint AttachPoint, UUID AssetId, UUID SoundId, double SoundVolume, byte SoundFlags, double SoundRadius)
1009 { 1009 {
1010 1010
1011 } 1011 }
1012 1012
1013 public void SendPrimitiveToClient(ulong regionHandle, ushort timeDilation, uint localID, PrimitiveBaseShape primShape, Vector3 pos, Vector3 vel, Vector3 acc, Quaternion rotation, Vector3 rvel, uint flags, UUID objectID, UUID ownerID, string text, byte[] color, uint parentID, byte[] particleSystem, byte clickAction, byte material) 1013 public void SendPrimitiveToClient(ulong regionHandle, ushort timeDilation, uint localID, PrimitiveBaseShape primShape, Vector3 pos, Vector3 vel, Vector3 acc, Quaternion rotation, Vector3 rvel, uint flags, UUID objectID, UUID ownerID, string text, byte[] color, uint parentID, byte[] particleSystem, byte clickAction, byte material)
1014 { 1014 {
1015 1015
1016 } 1016 }
1017 1017
1018 public void SendPrimTerseUpdate(ulong regionHandle, ushort timeDilation, uint localID, Vector3 position, Quaternion rotation, Vector3 velocity, Vector3 rotationalvelocity, byte state, UUID AssetId, UUID owner, int attachPoint) 1018 public void SendPrimTerseUpdate(ulong regionHandle, ushort timeDilation, uint localID, Vector3 position, Quaternion rotation, Vector3 velocity, Vector3 rotationalvelocity, byte state, UUID AssetId, UUID owner, int attachPoint)
1019 { 1019 {
1020 1020
1021 } 1021 }
1022 1022
1023 public void SendInventoryFolderDetails(UUID ownerID, UUID folderID, List<InventoryItemBase> items, List<InventoryFolderBase> folders, bool fetchFolders, bool fetchItems) 1023 public void SendInventoryFolderDetails(UUID ownerID, UUID folderID, List<InventoryItemBase> items, List<InventoryFolderBase> folders, bool fetchFolders, bool fetchItems)
1024 { 1024 {
1025 1025
1026 } 1026 }
1027 1027
1028 public void FlushPrimUpdates() 1028 public void FlushPrimUpdates()
1029 { 1029 {
1030 1030
1031 } 1031 }
1032 1032
1033 public void SendInventoryItemDetails(UUID ownerID, InventoryItemBase item) 1033 public void SendInventoryItemDetails(UUID ownerID, InventoryItemBase item)
1034 { 1034 {
1035 1035
1036 } 1036 }
1037 1037
1038 public void SendInventoryItemCreateUpdate(InventoryItemBase Item, uint callbackId) 1038 public void SendInventoryItemCreateUpdate(InventoryItemBase Item, uint callbackId)
1039 { 1039 {
1040 1040
1041 } 1041 }
1042 1042
1043 public void SendRemoveInventoryItem(UUID itemID) 1043 public void SendRemoveInventoryItem(UUID itemID)
1044 { 1044 {
1045 1045
1046 } 1046 }
1047 1047
1048 public void SendTakeControls(int controls, bool passToAgent, bool TakeControls) 1048 public void SendTakeControls(int controls, bool passToAgent, bool TakeControls)
1049 { 1049 {
1050 1050
1051 } 1051 }
1052 1052
1053 public void SendTaskInventory(UUID taskID, short serial, byte[] fileName) 1053 public void SendTaskInventory(UUID taskID, short serial, byte[] fileName)
1054 { 1054 {
1055 1055
1056 } 1056 }
1057 1057
1058 public void SendBulkUpdateInventory(InventoryNodeBase node) 1058 public void SendBulkUpdateInventory(InventoryNodeBase node)
1059 { 1059 {
1060 1060
1061 } 1061 }
1062 1062
1063 public void SendXferPacket(ulong xferID, uint packet, byte[] data) 1063 public void SendXferPacket(ulong xferID, uint packet, byte[] data)
1064 { 1064 {
1065 1065
1066 } 1066 }
1067 1067
1068 public void SendEconomyData(float EnergyEfficiency, int ObjectCapacity, int ObjectCount, int PriceEnergyUnit, int PriceGroupCreate, int PriceObjectClaim, float PriceObjectRent, float PriceObjectScaleFactor, int PriceParcelClaim, float PriceParcelClaimFactor, int PriceParcelRent, int PricePublicObjectDecay, int PricePublicObjectDelete, int PriceRentLight, int PriceUpload, int TeleportMinPrice, float TeleportPriceExponent) 1068 public void SendEconomyData(float EnergyEfficiency, int ObjectCapacity, int ObjectCount, int PriceEnergyUnit, int PriceGroupCreate, int PriceObjectClaim, float PriceObjectRent, float PriceObjectScaleFactor, int PriceParcelClaim, float PriceParcelClaimFactor, int PriceParcelRent, int PricePublicObjectDecay, int PricePublicObjectDelete, int PriceRentLight, int PriceUpload, int TeleportMinPrice, float TeleportPriceExponent)
1069 { 1069 {
1070 1070
1071 } 1071 }
1072 1072
1073 public void SendAvatarPickerReply(AvatarPickerReplyAgentDataArgs AgentData, List<AvatarPickerReplyDataArgs> Data) 1073 public void SendAvatarPickerReply(AvatarPickerReplyAgentDataArgs AgentData, List<AvatarPickerReplyDataArgs> Data)
1074 { 1074 {
1075 1075
1076 } 1076 }
1077 1077
1078 public void SendAgentDataUpdate(UUID agentid, UUID activegroupid, string firstname, string lastname, ulong grouppowers, string groupname, string grouptitle) 1078 public void SendAgentDataUpdate(UUID agentid, UUID activegroupid, string firstname, string lastname, ulong grouppowers, string groupname, string grouptitle)
1079 { 1079 {
1080 1080
1081 } 1081 }
1082 1082
1083 public void SendPreLoadSound(UUID objectID, UUID ownerID, UUID soundID) 1083 public void SendPreLoadSound(UUID objectID, UUID ownerID, UUID soundID)
1084 { 1084 {
1085 1085
1086 } 1086 }
1087 1087
1088 public void SendPlayAttachedSound(UUID soundID, UUID objectID, UUID ownerID, float gain, byte flags) 1088 public void SendPlayAttachedSound(UUID soundID, UUID objectID, UUID ownerID, float gain, byte flags)
1089 { 1089 {
1090 1090
1091 } 1091 }
1092 1092
1093 public void SendTriggeredSound(UUID soundID, UUID ownerID, UUID objectID, UUID parentID, ulong handle, Vector3 position, float gain) 1093 public void SendTriggeredSound(UUID soundID, UUID ownerID, UUID objectID, UUID parentID, ulong handle, Vector3 position, float gain)
1094 { 1094 {
1095 1095
1096 } 1096 }
1097 1097
1098 public void SendAttachedSoundGainChange(UUID objectID, float gain) 1098 public void SendAttachedSoundGainChange(UUID objectID, float gain)
1099 { 1099 {
1100 1100
1101 } 1101 }
1102 1102
1103 public void SendNameReply(UUID profileId, string firstname, string lastname) 1103 public void SendNameReply(UUID profileId, string firstname, string lastname)
1104 { 1104 {
1105 1105
1106 } 1106 }
1107 1107
1108 public void SendAlertMessage(string message) 1108 public void SendAlertMessage(string message)
1109 { 1109 {
1110 IRC_SendChannelPrivmsg("Alert",message); 1110 IRC_SendChannelPrivmsg("Alert",message);
1111 } 1111 }
1112 1112
1113 public void SendAgentAlertMessage(string message, bool modal) 1113 public void SendAgentAlertMessage(string message, bool modal)
1114 { 1114 {
1115 1115
1116 } 1116 }
1117 1117
1118 public void SendLoadURL(string objectname, UUID objectID, UUID ownerID, bool groupOwned, string message, string url) 1118 public void SendLoadURL(string objectname, UUID objectID, UUID ownerID, bool groupOwned, string message, string url)
1119 { 1119 {
1120 IRC_SendChannelPrivmsg(objectname,url); 1120 IRC_SendChannelPrivmsg(objectname,url);
1121 } 1121 }
1122 1122
1123 public void SendDialog(string objectname, UUID objectID, string ownerFirstName, string ownerLastName, string msg, UUID textureID, int ch, string[] buttonlabels) 1123 public void SendDialog(string objectname, UUID objectID, string ownerFirstName, string ownerLastName, string msg, UUID textureID, int ch, string[] buttonlabels)
1124 { 1124 {
1125 1125
1126 } 1126 }
1127 1127
1128 public bool AddMoney(int debit) 1128 public bool AddMoney(int debit)
1129 { 1129 {
1130 return true; 1130 return true;
1131 } 1131 }
1132 1132
1133 public void SendSunPos(Vector3 sunPos, Vector3 sunVel, ulong CurrentTime, uint SecondsPerSunCycle, uint SecondsPerYear, float OrbitalPosition) 1133 public void SendSunPos(Vector3 sunPos, Vector3 sunVel, ulong CurrentTime, uint SecondsPerSunCycle, uint SecondsPerYear, float OrbitalPosition)
1134 { 1134 {
1135 1135
1136 } 1136 }
1137 1137
1138 public void SendViewerEffect(ViewerEffectPacket.EffectBlock[] effectBlocks) 1138 public void SendViewerEffect(ViewerEffectPacket.EffectBlock[] effectBlocks)
1139 { 1139 {
1140 1140
1141 } 1141 }
1142 1142
1143 public void SendViewerTime(int phase) 1143 public void SendViewerTime(int phase)
1144 { 1144 {
1145 1145
1146 } 1146 }
1147 1147
1148 public UUID GetDefaultAnimation(string name) 1148 public UUID GetDefaultAnimation(string name)
1149 { 1149 {
1150 return UUID.Zero; 1150 return UUID.Zero;
1151 } 1151 }
1152 1152
1153 public void SendAvatarProperties(UUID avatarID, string aboutText, string bornOn, byte[] charterMember, string flAbout, uint flags, UUID flImageID, UUID imageID, string profileURL, UUID partnerID) 1153 public void SendAvatarProperties(UUID avatarID, string aboutText, string bornOn, byte[] charterMember, string flAbout, uint flags, UUID flImageID, UUID imageID, string profileURL, UUID partnerID)
1154 { 1154 {
1155 1155
1156 } 1156 }
1157 1157
1158 public void SendScriptQuestion(UUID taskID, string taskName, string ownerName, UUID itemID, int question) 1158 public void SendScriptQuestion(UUID taskID, string taskName, string ownerName, UUID itemID, int question)
1159 { 1159 {
1160 1160
1161 } 1161 }
1162 1162
1163 public void SendHealth(float health) 1163 public void SendHealth(float health)
1164 { 1164 {
1165 1165
1166 } 1166 }
1167 1167
1168 public void SendEstateManagersList(UUID invoice, UUID[] EstateManagers, uint estateID) 1168 public void SendEstateManagersList(UUID invoice, UUID[] EstateManagers, uint estateID)
1169 { 1169 {
1170 1170
1171 } 1171 }
1172 1172
1173 public void SendBannedUserList(UUID invoice, EstateBan[] banlist, uint estateID) 1173 public void SendBannedUserList(UUID invoice, EstateBan[] banlist, uint estateID)
1174 { 1174 {
1175 1175
1176 } 1176 }
1177 1177
1178 public void SendRegionInfoToEstateMenu(RegionInfoForEstateMenuArgs args) 1178 public void SendRegionInfoToEstateMenu(RegionInfoForEstateMenuArgs args)
1179 { 1179 {
1180 1180
1181 } 1181 }
1182 1182
1183 public void SendEstateCovenantInformation(UUID covenant) 1183 public void SendEstateCovenantInformation(UUID covenant)
1184 { 1184 {
1185 1185
1186 } 1186 }
1187 1187
1188 public void SendDetailedEstateData(UUID invoice, string estateName, uint estateID, uint parentEstate, uint estateFlags, uint sunPosition, UUID covenant, string abuseEmail, UUID estateOwner) 1188 public void SendDetailedEstateData(UUID invoice, string estateName, uint estateID, uint parentEstate, uint estateFlags, uint sunPosition, UUID covenant, string abuseEmail, UUID estateOwner)
1189 { 1189 {
1190 1190
1191 } 1191 }
1192 1192
1193 public void SendLandProperties(int sequence_id, bool snap_selection, int request_result, LandData landData, float simObjectBonusFactor, int parcelObjectCapacity, int simObjectCapacity, uint regionFlags) 1193 public void SendLandProperties(int sequence_id, bool snap_selection, int request_result, LandData landData, float simObjectBonusFactor, int parcelObjectCapacity, int simObjectCapacity, uint regionFlags)
1194 { 1194 {
1195 1195
1196 } 1196 }
1197 1197
1198 public void SendLandAccessListData(List<UUID> avatars, uint accessFlag, int localLandID) 1198 public void SendLandAccessListData(List<UUID> avatars, uint accessFlag, int localLandID)
1199 { 1199 {
1200 1200
1201 } 1201 }
1202 1202
1203 public void SendForceClientSelectObjects(List<uint> objectIDs) 1203 public void SendForceClientSelectObjects(List<uint> objectIDs)
1204 { 1204 {
1205 1205
1206 } 1206 }
1207 1207
1208 public void SendLandObjectOwners(LandData land, List<UUID> groups, Dictionary<UUID, int> ownersAndCount) 1208 public void SendLandObjectOwners(LandData land, List<UUID> groups, Dictionary<UUID, int> ownersAndCount)
1209 { 1209 {
1210 1210
1211 } 1211 }
1212 1212
1213 public void SendLandParcelOverlay(byte[] data, int sequence_id) 1213 public void SendLandParcelOverlay(byte[] data, int sequence_id)
1214 { 1214 {
1215 1215
1216 } 1216 }
1217 1217
1218 public void SendParcelMediaCommand(uint flags, ParcelMediaCommandEnum command, float time) 1218 public void SendParcelMediaCommand(uint flags, ParcelMediaCommandEnum command, float time)
1219 { 1219 {
1220 1220
1221 } 1221 }
1222 1222
1223 public void SendParcelMediaUpdate(string mediaUrl, UUID mediaTextureID, byte autoScale, string mediaType, string mediaDesc, int mediaWidth, int mediaHeight, byte mediaLoop) 1223 public void SendParcelMediaUpdate(string mediaUrl, UUID mediaTextureID, byte autoScale, string mediaType, string mediaDesc, int mediaWidth, int mediaHeight, byte mediaLoop)
1224 { 1224 {
1225 1225
1226 } 1226 }
1227 1227
1228 public void SendAssetUploadCompleteMessage(sbyte AssetType, bool Success, UUID AssetFullID) 1228 public void SendAssetUploadCompleteMessage(sbyte AssetType, bool Success, UUID AssetFullID)
1229 { 1229 {
1230 1230
1231 } 1231 }
1232 1232
1233 public void SendConfirmXfer(ulong xferID, uint PacketID) 1233 public void SendConfirmXfer(ulong xferID, uint PacketID)
1234 { 1234 {
1235 1235
1236 } 1236 }
1237 1237
1238 public void SendXferRequest(ulong XferID, short AssetType, UUID vFileID, byte FilePath, byte[] FileName) 1238 public void SendXferRequest(ulong XferID, short AssetType, UUID vFileID, byte FilePath, byte[] FileName)
1239 { 1239 {
1240 1240
1241 } 1241 }
1242 1242
1243 public void SendInitiateDownload(string simFileName, string clientFileName) 1243 public void SendInitiateDownload(string simFileName, string clientFileName)
1244 { 1244 {
1245 1245
1246 } 1246 }
1247 1247
1248 public void SendImageFirstPart(ushort numParts, UUID ImageUUID, uint ImageSize, byte[] ImageData, byte imageCodec) 1248 public void SendImageFirstPart(ushort numParts, UUID ImageUUID, uint ImageSize, byte[] ImageData, byte imageCodec)
1249 { 1249 {
1250 1250
1251 } 1251 }
1252 1252
1253 public void SendImageNextPart(ushort partNumber, UUID imageUuid, byte[] imageData) 1253 public void SendImageNextPart(ushort partNumber, UUID imageUuid, byte[] imageData)
1254 { 1254 {
1255 1255
1256 } 1256 }
1257 1257
1258 public void SendImageNotFound(UUID imageid) 1258 public void SendImageNotFound(UUID imageid)
1259 { 1259 {
1260 1260
1261 } 1261 }
1262 1262
1263 public void SendShutdownConnectionNotice() 1263 public void SendShutdownConnectionNotice()
1264 { 1264 {
1265 // TODO 1265 // TODO
1266 } 1266 }
1267 1267
1268 public void SendSimStats(SimStats stats) 1268 public void SendSimStats(SimStats stats)
1269 { 1269 {
1270 1270
1271 } 1271 }
1272 1272
1273 public void SendObjectPropertiesFamilyData(uint RequestFlags, UUID ObjectUUID, UUID OwnerID, UUID GroupID, uint BaseMask, uint OwnerMask, uint GroupMask, uint EveryoneMask, uint NextOwnerMask, int OwnershipCost, byte SaleType, int SalePrice, uint Category, UUID LastOwnerID, string ObjectName, string Description) 1273 public void SendObjectPropertiesFamilyData(uint RequestFlags, UUID ObjectUUID, UUID OwnerID, UUID GroupID, uint BaseMask, uint OwnerMask, uint GroupMask, uint EveryoneMask, uint NextOwnerMask, int OwnershipCost, byte SaleType, int SalePrice, uint Category, UUID LastOwnerID, string ObjectName, string Description)
1274 { 1274 {
1275 1275
1276 } 1276 }
1277 1277
1278 public void SendObjectPropertiesReply(UUID ItemID, ulong CreationDate, UUID CreatorUUID, UUID FolderUUID, UUID FromTaskUUID, UUID GroupUUID, short InventorySerial, UUID LastOwnerUUID, UUID ObjectUUID, UUID OwnerUUID, string TouchTitle, byte[] TextureID, string SitTitle, string ItemName, string ItemDescription, uint OwnerMask, uint NextOwnerMask, uint GroupMask, uint EveryoneMask, uint BaseMask, byte saleType, int salePrice) 1278 public void SendObjectPropertiesReply(UUID ItemID, ulong CreationDate, UUID CreatorUUID, UUID FolderUUID, UUID FromTaskUUID, UUID GroupUUID, short InventorySerial, UUID LastOwnerUUID, UUID ObjectUUID, UUID OwnerUUID, string TouchTitle, byte[] TextureID, string SitTitle, string ItemName, string ItemDescription, uint OwnerMask, uint NextOwnerMask, uint GroupMask, uint EveryoneMask, uint BaseMask, byte saleType, int salePrice)
1279 { 1279 {
1280 1280
1281 } 1281 }
1282 1282
1283 public void SendAgentOffline(UUID[] agentIDs) 1283 public void SendAgentOffline(UUID[] agentIDs)
1284 { 1284 {
1285 1285
1286 } 1286 }
1287 1287
1288 public void SendAgentOnline(UUID[] agentIDs) 1288 public void SendAgentOnline(UUID[] agentIDs)
1289 { 1289 {
1290 1290
1291 } 1291 }
1292 1292
1293 public void SendSitResponse(UUID TargetID, Vector3 OffsetPos, Quaternion SitOrientation, bool autopilot, Vector3 CameraAtOffset, Vector3 CameraEyeOffset, bool ForceMouseLook) 1293 public void SendSitResponse(UUID TargetID, Vector3 OffsetPos, Quaternion SitOrientation, bool autopilot, Vector3 CameraAtOffset, Vector3 CameraEyeOffset, bool ForceMouseLook)
1294 { 1294 {
1295 1295
1296 } 1296 }
1297 1297
1298 public void SendAdminResponse(UUID Token, uint AdminLevel) 1298 public void SendAdminResponse(UUID Token, uint AdminLevel)
1299 { 1299 {
1300 1300
1301 } 1301 }
1302 1302
1303 public void SendGroupMembership(GroupMembershipData[] GroupMembership) 1303 public void SendGroupMembership(GroupMembershipData[] GroupMembership)
1304 { 1304 {
1305 1305
1306 } 1306 }
1307 1307
1308 public void SendGroupNameReply(UUID groupLLUID, string GroupName) 1308 public void SendGroupNameReply(UUID groupLLUID, string GroupName)
1309 { 1309 {
1310 1310
1311 } 1311 }
1312 1312
1313 public void SendJoinGroupReply(UUID groupID, bool success) 1313 public void SendJoinGroupReply(UUID groupID, bool success)
1314 { 1314 {
1315 1315
1316 } 1316 }
1317 1317
1318 public void SendEjectGroupMemberReply(UUID agentID, UUID groupID, bool success) 1318 public void SendEjectGroupMemberReply(UUID agentID, UUID groupID, bool success)
1319 { 1319 {
1320 1320
1321 } 1321 }
1322 1322
1323 public void SendLeaveGroupReply(UUID groupID, bool success) 1323 public void SendLeaveGroupReply(UUID groupID, bool success)
1324 { 1324 {
1325 1325
1326 } 1326 }
1327 1327
1328 public void SendCreateGroupReply(UUID groupID, bool success, string message) 1328 public void SendCreateGroupReply(UUID groupID, bool success, string message)
1329 { 1329 {
1330 1330
1331 } 1331 }
1332 1332
1333 public void SendLandStatReply(uint reportType, uint requestFlags, uint resultCount, LandStatReportItem[] lsrpia) 1333 public void SendLandStatReply(uint reportType, uint requestFlags, uint resultCount, LandStatReportItem[] lsrpia)
1334 { 1334 {
1335 1335
1336 } 1336 }
1337 1337
1338 public void SendScriptRunningReply(UUID objectID, UUID itemID, bool running) 1338 public void SendScriptRunningReply(UUID objectID, UUID itemID, bool running)
1339 { 1339 {
1340 1340
1341 } 1341 }
1342 1342
1343 public void SendAsset(AssetRequestToClient req) 1343 public void SendAsset(AssetRequestToClient req)
1344 { 1344 {
1345 1345
1346 } 1346 }
1347 1347
1348 public void SendTexture(AssetBase TextureAsset) 1348 public void SendTexture(AssetBase TextureAsset)
1349 { 1349 {
1350 1350
1351 } 1351 }
1352 1352
1353 public byte[] GetThrottlesPacked(float multiplier) 1353 public byte[] GetThrottlesPacked(float multiplier)
1354 { 1354 {
1355 return new byte[0]; 1355 return new byte[0];
1356 } 1356 }
1357 1357
1358 public event ViewerEffectEventHandler OnViewerEffect; 1358 public event ViewerEffectEventHandler OnViewerEffect;
1359 public event Action<IClientAPI> OnLogout; 1359 public event Action<IClientAPI> OnLogout;
1360 public event Action<IClientAPI> OnConnectionClosed; 1360 public event Action<IClientAPI> OnConnectionClosed;
1361 1361
1362 public void SendBlueBoxMessage(UUID FromAvatarID, string FromAvatarName, string Message) 1362 public void SendBlueBoxMessage(UUID FromAvatarID, string FromAvatarName, string Message)
1363 { 1363 {
1364 IRC_SendChannelPrivmsg(FromAvatarName, Message); 1364 IRC_SendChannelPrivmsg(FromAvatarName, Message);
1365 } 1365 }
1366 1366
1367 public void SendLogoutPacket() 1367 public void SendLogoutPacket()
1368 { 1368 {
1369 Disconnect(); 1369 Disconnect();
1370 } 1370 }
1371 1371
1372 public ClientInfo GetClientInfo() 1372 public ClientInfo GetClientInfo()
1373 { 1373 {
1374 return new ClientInfo(); 1374 return new ClientInfo();
1375 } 1375 }
1376 1376
1377 public void SetClientInfo(ClientInfo info) 1377 public void SetClientInfo(ClientInfo info)
1378 { 1378 {
1379 1379
1380 } 1380 }
1381 1381
1382 public void SetClientOption(string option, string value) 1382 public void SetClientOption(string option, string value)
1383 { 1383 {
1384 1384
1385 } 1385 }
1386 1386
1387 public string GetClientOption(string option) 1387 public string GetClientOption(string option)
1388 { 1388 {
1389 return String.Empty; 1389 return String.Empty;
1390 } 1390 }
1391 1391
1392 public void Terminate() 1392 public void Terminate()
1393 { 1393 {
1394 Disconnect(); 1394 Disconnect();
1395 } 1395 }
1396 1396
1397 public void SendSetFollowCamProperties(UUID objectID, SortedDictionary<int, float> parameters) 1397 public void SendSetFollowCamProperties(UUID objectID, SortedDictionary<int, float> parameters)
1398 { 1398 {
1399 1399
1400 } 1400 }
1401 1401
1402 public void SendClearFollowCamProperties(UUID objectID) 1402 public void SendClearFollowCamProperties(UUID objectID)
1403 { 1403 {
1404 1404
1405 } 1405 }
1406 1406
1407 public void SendRegionHandle(UUID regoinID, ulong handle) 1407 public void SendRegionHandle(UUID regoinID, ulong handle)
1408 { 1408 {
1409 1409
1410 } 1410 }
1411 1411
1412 public void SendParcelInfo(RegionInfo info, LandData land, UUID parcelID, uint x, uint y) 1412 public void SendParcelInfo(RegionInfo info, LandData land, UUID parcelID, uint x, uint y)
1413 { 1413 {
1414 1414
1415 } 1415 }
1416 1416
1417 public void SendScriptTeleportRequest(string objName, string simName, Vector3 pos, Vector3 lookAt) 1417 public void SendScriptTeleportRequest(string objName, string simName, Vector3 pos, Vector3 lookAt)
1418 { 1418 {
1419 1419
1420 } 1420 }
1421 1421
1422 public void SendDirPlacesReply(UUID queryID, DirPlacesReplyData[] data) 1422 public void SendDirPlacesReply(UUID queryID, DirPlacesReplyData[] data)
1423 { 1423 {
1424 1424
1425 } 1425 }
1426 1426
1427 public void SendDirPeopleReply(UUID queryID, DirPeopleReplyData[] data) 1427 public void SendDirPeopleReply(UUID queryID, DirPeopleReplyData[] data)
1428 { 1428 {
1429 1429
1430 } 1430 }
1431 1431
1432 public void SendDirEventsReply(UUID queryID, DirEventsReplyData[] data) 1432 public void SendDirEventsReply(UUID queryID, DirEventsReplyData[] data)
1433 { 1433 {
1434 1434
1435 } 1435 }
1436 1436
1437 public void SendDirGroupsReply(UUID queryID, DirGroupsReplyData[] data) 1437 public void SendDirGroupsReply(UUID queryID, DirGroupsReplyData[] data)
1438 { 1438 {
1439 1439
1440 } 1440 }
1441 1441
1442 public void SendDirClassifiedReply(UUID queryID, DirClassifiedReplyData[] data) 1442 public void SendDirClassifiedReply(UUID queryID, DirClassifiedReplyData[] data)
1443 { 1443 {
1444 1444
1445 } 1445 }
1446 1446
1447 public void SendDirLandReply(UUID queryID, DirLandReplyData[] data) 1447 public void SendDirLandReply(UUID queryID, DirLandReplyData[] data)
1448 { 1448 {
1449 1449
1450 } 1450 }
1451 1451
1452 public void SendDirPopularReply(UUID queryID, DirPopularReplyData[] data) 1452 public void SendDirPopularReply(UUID queryID, DirPopularReplyData[] data)
1453 { 1453 {
1454 1454
1455 } 1455 }
1456 1456
1457 public void SendEventInfoReply(EventData info) 1457 public void SendEventInfoReply(EventData info)
1458 { 1458 {
1459 1459
1460 } 1460 }
1461 1461
1462 public void SendMapItemReply(mapItemReply[] replies, uint mapitemtype, uint flags) 1462 public void SendMapItemReply(mapItemReply[] replies, uint mapitemtype, uint flags)
1463 { 1463 {
1464 1464
1465 } 1465 }
1466 1466
1467 public void SendAvatarGroupsReply(UUID avatarID, GroupMembershipData[] data) 1467 public void SendAvatarGroupsReply(UUID avatarID, GroupMembershipData[] data)
1468 { 1468 {
1469 1469
1470 } 1470 }
1471 1471
1472 public void SendOfferCallingCard(UUID srcID, UUID transactionID) 1472 public void SendOfferCallingCard(UUID srcID, UUID transactionID)
1473 { 1473 {
1474 1474
1475 } 1475 }
1476 1476
1477 public void SendAcceptCallingCard(UUID transactionID) 1477 public void SendAcceptCallingCard(UUID transactionID)
1478 { 1478 {
1479 1479
1480 } 1480 }
1481 1481
1482 public void SendDeclineCallingCard(UUID transactionID) 1482 public void SendDeclineCallingCard(UUID transactionID)
1483 { 1483 {
1484 1484
1485 } 1485 }
1486 1486
1487 public void SendTerminateFriend(UUID exFriendID) 1487 public void SendTerminateFriend(UUID exFriendID)
1488 { 1488 {
1489 1489
1490 } 1490 }
1491 1491
1492 public void SendAvatarClassifiedReply(UUID targetID, UUID[] classifiedID, string[] name) 1492 public void SendAvatarClassifiedReply(UUID targetID, UUID[] classifiedID, string[] name)
1493 { 1493 {
1494 1494
1495 } 1495 }
1496 1496
1497 public void SendClassifiedInfoReply(UUID classifiedID, UUID creatorID, uint creationDate, uint expirationDate, uint category, string name, string description, UUID parcelID, uint parentEstate, UUID snapshotID, string simName, Vector3 globalPos, string parcelName, byte classifiedFlags, int price) 1497 public void SendClassifiedInfoReply(UUID classifiedID, UUID creatorID, uint creationDate, uint expirationDate, uint category, string name, string description, UUID parcelID, uint parentEstate, UUID snapshotID, string simName, Vector3 globalPos, string parcelName, byte classifiedFlags, int price)
1498 { 1498 {
1499 1499
1500 } 1500 }
1501 1501
1502 public void SendAgentDropGroup(UUID groupID) 1502 public void SendAgentDropGroup(UUID groupID)
1503 { 1503 {
1504 1504
1505 } 1505 }
1506 1506
1507 public void RefreshGroupMembership() 1507 public void RefreshGroupMembership()
1508 { 1508 {
1509 1509
1510 } 1510 }
1511 1511
1512 public void SendAvatarNotesReply(UUID targetID, string text) 1512 public void SendAvatarNotesReply(UUID targetID, string text)
1513 { 1513 {
1514 1514
1515 } 1515 }
1516 1516
1517 public void SendAvatarPicksReply(UUID targetID, Dictionary<UUID, string> picks) 1517 public void SendAvatarPicksReply(UUID targetID, Dictionary<UUID, string> picks)
1518 { 1518 {
1519 1519
1520 } 1520 }
1521 1521
1522 public void SendPickInfoReply(UUID pickID, UUID creatorID, bool topPick, UUID parcelID, string name, string desc, UUID snapshotID, string user, string originalName, string simName, Vector3 posGlobal, int sortOrder, bool enabled) 1522 public void SendPickInfoReply(UUID pickID, UUID creatorID, bool topPick, UUID parcelID, string name, string desc, UUID snapshotID, string user, string originalName, string simName, Vector3 posGlobal, int sortOrder, bool enabled)
1523 { 1523 {
1524 1524
1525 } 1525 }
1526 1526
1527 public void SendAvatarClassifiedReply(UUID targetID, Dictionary<UUID, string> classifieds) 1527 public void SendAvatarClassifiedReply(UUID targetID, Dictionary<UUID, string> classifieds)
1528 { 1528 {
1529 1529
1530 } 1530 }
1531 1531
1532 public void SendParcelDwellReply(int localID, UUID parcelID, float dwell) 1532 public void SendParcelDwellReply(int localID, UUID parcelID, float dwell)
1533 { 1533 {
1534 1534
1535 } 1535 }
1536 1536
1537 public void SendUserInfoReply(bool imViaEmail, bool visible, string email) 1537 public void SendUserInfoReply(bool imViaEmail, bool visible, string email)
1538 { 1538 {
1539 1539
1540 } 1540 }
1541 1541
1542 public void SendUseCachedMuteList() 1542 public void SendUseCachedMuteList()
1543 { 1543 {
1544 1544
1545 } 1545 }
1546 1546
1547 public void SendMuteListUpdate(string filename) 1547 public void SendMuteListUpdate(string filename)
1548 { 1548 {
1549 1549
1550 } 1550 }
1551 1551
1552 public void KillEndDone() 1552 public void KillEndDone()
1553 { 1553 {
1554 1554
1555 } 1555 }
1556 1556
1557 public bool AddGenericPacketHandler(string MethodName, GenericMessage handler) 1557 public bool AddGenericPacketHandler(string MethodName, GenericMessage handler)
1558 { 1558 {
1559 return true; 1559 return true;
1560 } 1560 }
1561 1561
1562 #endregion 1562 #endregion
1563 1563
1564 #region Implementation of IClientIPEndpoint 1564 #region Implementation of IClientIPEndpoint
1565 1565
1566 public IPAddress EndPoint 1566 public IPAddress EndPoint
1567 { 1567 {
1568 get { return ((IPEndPoint) m_client.Client.RemoteEndPoint).Address; } 1568 get { return ((IPEndPoint) m_client.Client.RemoteEndPoint).Address; }
1569 } 1569 }
1570 1570
1571 #endregion 1571 #endregion
1572 } 1572 }
1573} 1573}
diff --git a/OpenSim/Region/OptionalModules/Agent/InternetRelayClientView/Server/IRCServer.cs b/OpenSim/Region/OptionalModules/Agent/InternetRelayClientView/Server/IRCServer.cs
index b8f5afa..612ac48 100644
--- a/OpenSim/Region/OptionalModules/Agent/InternetRelayClientView/Server/IRCServer.cs
+++ b/OpenSim/Region/OptionalModules/Agent/InternetRelayClientView/Server/IRCServer.cs
@@ -1,61 +1,61 @@
1using System; 1using System;
2using System.Collections.Generic; 2using System.Collections.Generic;
3using System.Net; 3using System.Net;
4using System.Net.Sockets; 4using System.Net.Sockets;
5using System.Reflection; 5using System.Reflection;
6using System.Text; 6using System.Text;
7using System.Threading; 7using System.Threading;
8using log4net; 8using log4net;
9using OpenSim.Region.Framework.Scenes; 9using OpenSim.Region.Framework.Scenes;
10 10
11namespace OpenSim.Region.OptionalModules.Agent.InternetRelayClientView.Server 11namespace OpenSim.Region.OptionalModules.Agent.InternetRelayClientView.Server
12{ 12{
13 public delegate void OnNewIRCUserDelegate(IRCClientView user); 13 public delegate void OnNewIRCUserDelegate(IRCClientView user);
14 14
15 /// <summary> 15 /// <summary>
16 /// Adam's completely hacked up not-probably-compliant RFC1459 server class. 16 /// Adam's completely hacked up not-probably-compliant RFC1459 server class.
17 /// </summary> 17 /// </summary>
18 class IRCServer 18 class IRCServer
19 { 19 {
20 private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); 20 private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
21 21
22 public event OnNewIRCUserDelegate OnNewIRCClient; 22 public event OnNewIRCUserDelegate OnNewIRCClient;
23 23
24 private readonly TcpListener m_listener; 24 private readonly TcpListener m_listener;
25 private readonly Scene m_baseScene; 25 private readonly Scene m_baseScene;
26 private bool m_running = true; 26 private bool m_running = true;
27 27
28 public IRCServer(IPAddress listener, int port, Scene baseScene) 28 public IRCServer(IPAddress listener, int port, Scene baseScene)
29 { 29 {
30 m_listener = new TcpListener(listener, port); 30 m_listener = new TcpListener(listener, port);
31 31
32 m_listener.Start(50); 32 m_listener.Start(50);
33 33
34 Thread thread = new Thread(ListenLoop); 34 Thread thread = new Thread(ListenLoop);
35 thread.Start(); 35 thread.Start();
36 m_baseScene = baseScene; 36 m_baseScene = baseScene;
37 } 37 }
38 38
39 public void Stop() 39 public void Stop()
40 { 40 {
41 m_running = false; 41 m_running = false;
42 m_listener.Stop(); 42 m_listener.Stop();
43 } 43 }
44 44
45 private void ListenLoop() 45 private void ListenLoop()
46 { 46 {
47 while(m_running) 47 while(m_running)
48 { 48 {
49 AcceptClient(m_listener.AcceptTcpClient()); 49 AcceptClient(m_listener.AcceptTcpClient());
50 } 50 }
51 } 51 }
52 52
53 private void AcceptClient(TcpClient client) 53 private void AcceptClient(TcpClient client)
54 { 54 {
55 IRCClientView cv = new IRCClientView(client, m_baseScene); 55 IRCClientView cv = new IRCClientView(client, m_baseScene);
56 56
57 if (OnNewIRCClient != null) 57 if (OnNewIRCClient != null)
58 OnNewIRCClient(cv); 58 OnNewIRCClient(cv);
59 } 59 }
60 } 60 }
61} 61}