aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/OpenSim/Region/OptionalModules/Agent/InternetRelayClientView/Server
diff options
context:
space:
mode:
authorAdam Frisby2009-05-30 03:53:04 +0000
committerAdam Frisby2009-05-30 03:53:04 +0000
commit29bc2962adc2b0a297bb2c2eb70b5261d7cafc70 (patch)
tree6dd5bf8d920d0fa5d32cea0827ea94a2b6306282 /OpenSim/Region/OptionalModules/Agent/InternetRelayClientView/Server
parent* May partially implement a C# IRCd & IRCClientStack. (diff)
downloadopensim-SC_OLD-29bc2962adc2b0a297bb2c2eb70b5261d7cafc70.zip
opensim-SC_OLD-29bc2962adc2b0a297bb2c2eb70b5261d7cafc70.tar.gz
opensim-SC_OLD-29bc2962adc2b0a297bb2c2eb70b5261d7cafc70.tar.bz2
opensim-SC_OLD-29bc2962adc2b0a297bb2c2eb70b5261d7cafc70.tar.xz
* More IRCClientView fiddling. Now implements IClientAPI & IClientCore.
Diffstat (limited to 'OpenSim/Region/OptionalModules/Agent/InternetRelayClientView/Server')
-rw-r--r--OpenSim/Region/OptionalModules/Agent/InternetRelayClientView/Server/IRCClientView.cs384
-rw-r--r--OpenSim/Region/OptionalModules/Agent/InternetRelayClientView/Server/IRCServer.cs18
2 files changed, 228 insertions, 174 deletions
diff --git a/OpenSim/Region/OptionalModules/Agent/InternetRelayClientView/Server/IRCClientView.cs b/OpenSim/Region/OptionalModules/Agent/InternetRelayClientView/Server/IRCClientView.cs
index 97731ee..c3bc5ad 100644
--- a/OpenSim/Region/OptionalModules/Agent/InternetRelayClientView/Server/IRCClientView.cs
+++ b/OpenSim/Region/OptionalModules/Agent/InternetRelayClientView/Server/IRCClientView.cs
@@ -2,8 +2,10 @@
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.Text; 6using System.Text;
6using System.Threading; 7using System.Threading;
8using log4net;
7using OpenMetaverse; 9using OpenMetaverse;
8using OpenMetaverse.Packets; 10using OpenMetaverse.Packets;
9using OpenSim.Framework; 11using OpenSim.Framework;
@@ -12,16 +14,22 @@ using OpenSim.Region.Framework.Scenes;
12 14
13namespace OpenSim.Region.OptionalModules.Agent.InternetRelayClientView.Server 15namespace OpenSim.Region.OptionalModules.Agent.InternetRelayClientView.Server
14{ 16{
15 class IRCClientView : IClientAPI, IClientCore, IClientIPEndpoint 17 public class IRCClientView : IClientAPI, IClientCore, IClientIPEndpoint
16 { 18 {
19 private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
20
17 private readonly TcpClient m_client; 21 private readonly TcpClient m_client;
18 private readonly Scene m_scene; 22 private readonly Scene m_scene;
19 23
24 private UUID m_agentID = UUID.Random();
25
20 private string m_username; 26 private string m_username;
21 27
22 private bool m_hasNick = false; 28 private bool m_hasNick = false;
23 private bool m_hasUser = false; 29 private bool m_hasUser = false;
24 30
31 private bool m_connected = true;
32
25 public IRCClientView(TcpClient client, Scene scene) 33 public IRCClientView(TcpClient client, Scene scene)
26 { 34 {
27 m_client = client; 35 m_client = client;
@@ -35,6 +43,8 @@ namespace OpenSim.Region.OptionalModules.Agent.InternetRelayClientView.Server
35 { 43 {
36 lock(m_client) 44 lock(m_client)
37 { 45 {
46 m_log.Info("[IRCd] Sending >>> " + command);
47
38 byte[] buf = Encoding.UTF8.GetBytes(command + "\r\n"); 48 byte[] buf = Encoding.UTF8.GetBytes(command + "\r\n");
39 49
40 m_client.GetStream().Write(buf, 0, buf.Length); 50 m_client.GetStream().Write(buf, 0, buf.Length);
@@ -52,7 +62,7 @@ namespace OpenSim.Region.OptionalModules.Agent.InternetRelayClientView.Server
52 { 62 {
53 string strbuf = ""; 63 string strbuf = "";
54 64
55 while(true) 65 while(m_connected)
56 { 66 {
57 string line; 67 string line;
58 byte[] buf = new byte[520]; // RFC1459 defines max message size as 512. 68 byte[] buf = new byte[520]; // RFC1459 defines max message size as 512.
@@ -68,6 +78,8 @@ namespace OpenSim.Region.OptionalModules.Agent.InternetRelayClientView.Server
68 string message = ExtractMessage(strbuf); 78 string message = ExtractMessage(strbuf);
69 if(message != null) 79 if(message != null)
70 { 80 {
81 m_log.Info("[IRCd] Recieving <<< " + message);
82
71 // Remove from buffer 83 // Remove from buffer
72 strbuf = strbuf.Remove(0, message.Length); 84 strbuf = strbuf.Remove(0, message.Length);
73 85
@@ -124,6 +136,7 @@ namespace OpenSim.Region.OptionalModules.Agent.InternetRelayClientView.Server
124 break; // Ignore for now. I want to implement authentication later however. 136 break; // Ignore for now. I want to implement authentication later however.
125 137
126 case "JOIN": 138 case "JOIN":
139 IRC_SendReplyJoin();
127 break; 140 break;
128 141
129 case "USER": 142 case "USER":
@@ -271,6 +284,13 @@ namespace OpenSim.Region.OptionalModules.Agent.InternetRelayClientView.Server
271 List<EntityBase> users = m_scene.Entities.GetAllByType<ScenePresence>(); 284 List<EntityBase> users = m_scene.Entities.GetAllByType<ScenePresence>();
272 285
273 SendCommand("392 RPL_USERSSTART \":UserID Terminal Host\""); 286 SendCommand("392 RPL_USERSSTART \":UserID Terminal Host\"");
287
288 if (users.Count == 0)
289 {
290 SendCommand("395 RPL_NOUSERS \":Nobody logged in\"");
291 return;
292 }
293
274 foreach (EntityBase user in users) 294 foreach (EntityBase user in users)
275 { 295 {
276 char[] nom = new char[8]; 296 char[] nom = new char[8];
@@ -358,109 +378,122 @@ namespace OpenSim.Region.OptionalModules.Agent.InternetRelayClientView.Server
358 378
359 public Vector3 StartPos 379 public Vector3 StartPos
360 { 380 {
361 get { throw new System.NotImplementedException(); } 381 get { return Vector3.Zero; }
362 set { throw new System.NotImplementedException(); } 382 set { }
363 } 383 }
364 384
365 public bool TryGet<T>(out T iface) 385 public bool TryGet<T>(out T iface)
366 { 386 {
367 throw new System.NotImplementedException(); 387 iface = default(T);
388 return false;
368 } 389 }
369 390
370 public T Get<T>() 391 public T Get<T>()
371 { 392 {
372 throw new System.NotImplementedException(); 393 return default(T);
373 } 394 }
374 395
375 public UUID AgentId 396 public UUID AgentId
376 { 397 {
377 get { return UUID.Zero; } 398 get { return m_agentID; }
378 } 399 }
379 400
380 public void Disconnect(string reason) 401 public void Disconnect(string reason)
381 { 402 {
382 throw new System.NotImplementedException(); 403 m_connected = false;
404 m_client.Close();
383 } 405 }
384 406
385 public void Disconnect() 407 public void Disconnect()
386 { 408 {
387 throw new System.NotImplementedException(); 409 m_connected = false;
410 m_client.Close();
388 } 411 }
389 412
390 public UUID SessionId 413 public UUID SessionId
391 { 414 {
392 get { throw new System.NotImplementedException(); } 415 get { return m_agentID; }
393 } 416 }
394 417
395 public UUID SecureSessionId 418 public UUID SecureSessionId
396 { 419 {
397 get { throw new System.NotImplementedException(); } 420 get { return m_agentID; }
398 } 421 }
399 422
400 public UUID ActiveGroupId 423 public UUID ActiveGroupId
401 { 424 {
402 get { throw new System.NotImplementedException(); } 425 get { return UUID.Zero; }
403 } 426 }
404 427
405 public string ActiveGroupName 428 public string ActiveGroupName
406 { 429 {
407 get { throw new System.NotImplementedException(); } 430 get { return "IRCd User"; }
408 } 431 }
409 432
410 public ulong ActiveGroupPowers 433 public ulong ActiveGroupPowers
411 { 434 {
412 get { throw new System.NotImplementedException(); } 435 get { return 0; }
413 } 436 }
414 437
415 public ulong GetGroupPowers(UUID groupID) 438 public ulong GetGroupPowers(UUID groupID)
416 { 439 {
417 throw new System.NotImplementedException(); 440 return 0;
418 } 441 }
419 442
420 public bool IsGroupMember(UUID GroupID) 443 public bool IsGroupMember(UUID GroupID)
421 { 444 {
422 throw new System.NotImplementedException(); 445 return false;
423 } 446 }
424 447
425 public string FirstName 448 public string FirstName
426 { 449 {
427 get { throw new System.NotImplementedException(); } 450 get
451 {
452 string[] names = m_username.Split(' ');
453 return names[0];
454 }
428 } 455 }
429 456
430 public string LastName 457 public string LastName
431 { 458 {
432 get { throw new System.NotImplementedException(); } 459 get
460 {
461 string[] names = m_username.Split(' ');
462 if (names.Length > 1)
463 return names[1];
464 return names[0];
465 }
433 } 466 }
434 467
435 public IScene Scene 468 public IScene Scene
436 { 469 {
437 get { throw new System.NotImplementedException(); } 470 get { return m_scene; }
438 } 471 }
439 472
440 public int NextAnimationSequenceNumber 473 public int NextAnimationSequenceNumber
441 { 474 {
442 get { throw new System.NotImplementedException(); } 475 get { return 0; }
443 } 476 }
444 477
445 public string Name 478 public string Name
446 { 479 {
447 get { throw new System.NotImplementedException(); } 480 get { return m_username; }
448 } 481 }
449 482
450 public bool IsActive 483 public bool IsActive
451 { 484 {
452 get { throw new System.NotImplementedException(); } 485 get { return true; }
453 set { throw new System.NotImplementedException(); } 486 set { if (!value) Disconnect("IsActive Disconnected?"); }
454 } 487 }
455 488
456 public bool SendLogoutPacketWhenClosing 489 public bool SendLogoutPacketWhenClosing
457 { 490 {
458 set { throw new System.NotImplementedException(); } 491 set { }
459 } 492 }
460 493
461 public uint CircuitCode 494 public uint CircuitCode
462 { 495 {
463 get { throw new System.NotImplementedException(); } 496 get { return 0; }
464 } 497 }
465 498
466 public event GenericMessage OnGenericMessage; 499 public event GenericMessage OnGenericMessage;
@@ -652,737 +685,744 @@ namespace OpenSim.Region.OptionalModules.Agent.InternetRelayClientView.Server
652 public event AvatarNotesUpdate OnAvatarNotesUpdate; 685 public event AvatarNotesUpdate OnAvatarNotesUpdate;
653 public event MuteListRequest OnMuteListRequest; 686 public event MuteListRequest OnMuteListRequest;
654 public event PlacesQuery OnPlacesQuery; 687 public event PlacesQuery OnPlacesQuery;
688
655 public void SetDebugPacketLevel(int newDebug) 689 public void SetDebugPacketLevel(int newDebug)
656 { 690 {
657 throw new System.NotImplementedException(); 691
658 } 692 }
659 693
660 public void InPacket(object NewPack) 694 public void InPacket(object NewPack)
661 { 695 {
662 throw new System.NotImplementedException(); 696
663 } 697 }
664 698
665 public void ProcessInPacket(Packet NewPack) 699 public void ProcessInPacket(Packet NewPack)
666 { 700 {
667 throw new System.NotImplementedException(); 701
668 } 702 }
669 703
670 public void Close(bool ShutdownCircuit) 704 public void Close(bool ShutdownCircuit)
671 { 705 {
672 throw new System.NotImplementedException(); 706 Disconnect();
673 } 707 }
674 708
675 public void Kick(string message) 709 public void Kick(string message)
676 { 710 {
677 throw new System.NotImplementedException(); 711 Disconnect(message);
678 } 712 }
679 713
680 public void Start() 714 public void Start()
681 { 715 {
682 throw new System.NotImplementedException(); 716
683 } 717 }
684 718
685 public void Stop() 719 public void Stop()
686 { 720 {
687 throw new System.NotImplementedException(); 721 Disconnect();
688 } 722 }
689 723
690 public void SendWearables(AvatarWearable[] wearables, int serial) 724 public void SendWearables(AvatarWearable[] wearables, int serial)
691 { 725 {
692 throw new System.NotImplementedException(); 726
693 } 727 }
694 728
695 public void SendAppearance(UUID agentID, byte[] visualParams, byte[] textureEntry) 729 public void SendAppearance(UUID agentID, byte[] visualParams, byte[] textureEntry)
696 { 730 {
697 throw new System.NotImplementedException(); 731
698 } 732 }
699 733
700 public void SendStartPingCheck(byte seq) 734 public void SendStartPingCheck(byte seq)
701 { 735 {
702 throw new System.NotImplementedException(); 736
703 } 737 }
704 738
705 public void SendKillObject(ulong regionHandle, uint localID) 739 public void SendKillObject(ulong regionHandle, uint localID)
706 { 740 {
707 throw new System.NotImplementedException(); 741
708 } 742 }
709 743
710 public void SendAnimations(UUID[] animID, int[] seqs, UUID sourceAgentId, UUID[] objectIDs) 744 public void SendAnimations(UUID[] animID, int[] seqs, UUID sourceAgentId, UUID[] objectIDs)
711 { 745 {
712 throw new System.NotImplementedException(); 746
713 } 747 }
714 748
715 public void SendRegionHandshake(RegionInfo regionInfo, RegionHandshakeArgs args) 749 public void SendRegionHandshake(RegionInfo regionInfo, RegionHandshakeArgs args)
716 { 750 {
717 throw new System.NotImplementedException(); 751
718 } 752 }
719 753
720 public void SendChatMessage(string message, byte type, Vector3 fromPos, string fromName, UUID fromAgentID, byte source, byte audible) 754 public void SendChatMessage(string message, byte type, Vector3 fromPos, string fromName, UUID fromAgentID, byte source, byte audible)
721 { 755 {
722 throw new System.NotImplementedException(); 756 IRC_SendChannelPrivmsg(fromName, message);
757 }
758
759 private void IRC_SendChannelPrivmsg(string fromName, string message)
760 {
761 SendCommand(":" + fromName.Replace(" ", "") + " PRIVMSG " + IrcRegionName + " :" + message);
723 } 762 }
724 763
725 public void SendInstantMessage(GridInstantMessage im) 764 public void SendInstantMessage(GridInstantMessage im)
726 { 765 {
727 throw new System.NotImplementedException(); 766 // TODO
728 } 767 }
729 768
730 public void SendGenericMessage(string method, List<string> message) 769 public void SendGenericMessage(string method, List<string> message)
731 { 770 {
732 throw new System.NotImplementedException(); 771
733 } 772 }
734 773
735 public void SendLayerData(float[] map) 774 public void SendLayerData(float[] map)
736 { 775 {
737 throw new System.NotImplementedException(); 776
738 } 777 }
739 778
740 public void SendLayerData(int px, int py, float[] map) 779 public void SendLayerData(int px, int py, float[] map)
741 { 780 {
742 throw new System.NotImplementedException(); 781
743 } 782 }
744 783
745 public void SendWindData(Vector2[] windSpeeds) 784 public void SendWindData(Vector2[] windSpeeds)
746 { 785 {
747 throw new System.NotImplementedException(); 786
748 } 787 }
749 788
750 public void SendCloudData(float[] cloudCover) 789 public void SendCloudData(float[] cloudCover)
751 { 790 {
752 throw new System.NotImplementedException(); 791
753 } 792 }
754 793
755 public void MoveAgentIntoRegion(RegionInfo regInfo, Vector3 pos, Vector3 look) 794 public void MoveAgentIntoRegion(RegionInfo regInfo, Vector3 pos, Vector3 look)
756 { 795 {
757 throw new System.NotImplementedException(); 796
758 } 797 }
759 798
760 public void InformClientOfNeighbour(ulong neighbourHandle, IPEndPoint neighbourExternalEndPoint) 799 public void InformClientOfNeighbour(ulong neighbourHandle, IPEndPoint neighbourExternalEndPoint)
761 { 800 {
762 throw new System.NotImplementedException(); 801
763 } 802 }
764 803
765 public AgentCircuitData RequestClientInfo() 804 public AgentCircuitData RequestClientInfo()
766 { 805 {
767 throw new System.NotImplementedException(); 806 return new AgentCircuitData();
768 } 807 }
769 808
770 public void CrossRegion(ulong newRegionHandle, Vector3 pos, Vector3 lookAt, IPEndPoint newRegionExternalEndPoint, string capsURL) 809 public void CrossRegion(ulong newRegionHandle, Vector3 pos, Vector3 lookAt, IPEndPoint newRegionExternalEndPoint, string capsURL)
771 { 810 {
772 throw new System.NotImplementedException(); 811
773 } 812 }
774 813
775 public void SendMapBlock(List<MapBlockData> mapBlocks, uint flag) 814 public void SendMapBlock(List<MapBlockData> mapBlocks, uint flag)
776 { 815 {
777 throw new System.NotImplementedException(); 816
778 } 817 }
779 818
780 public void SendLocalTeleport(Vector3 position, Vector3 lookAt, uint flags) 819 public void SendLocalTeleport(Vector3 position, Vector3 lookAt, uint flags)
781 { 820 {
782 throw new System.NotImplementedException(); 821
783 } 822 }
784 823
785 public void SendRegionTeleport(ulong regionHandle, byte simAccess, IPEndPoint regionExternalEndPoint, uint locationID, uint flags, string capsURL) 824 public void SendRegionTeleport(ulong regionHandle, byte simAccess, IPEndPoint regionExternalEndPoint, uint locationID, uint flags, string capsURL)
786 { 825 {
787 throw new System.NotImplementedException(); 826
788 } 827 }
789 828
790 public void SendTeleportFailed(string reason) 829 public void SendTeleportFailed(string reason)
791 { 830 {
792 throw new System.NotImplementedException(); 831
793 } 832 }
794 833
795 public void SendTeleportLocationStart() 834 public void SendTeleportLocationStart()
796 { 835 {
797 throw new System.NotImplementedException(); 836
798 } 837 }
799 838
800 public void SendMoneyBalance(UUID transaction, bool success, byte[] description, int balance) 839 public void SendMoneyBalance(UUID transaction, bool success, byte[] description, int balance)
801 { 840 {
802 throw new System.NotImplementedException(); 841
803 } 842 }
804 843
805 public void SendPayPrice(UUID objectID, int[] payPrice) 844 public void SendPayPrice(UUID objectID, int[] payPrice)
806 { 845 {
807 throw new System.NotImplementedException(); 846
808 } 847 }
809 848
810 public void SendAvatarData(ulong regionHandle, string firstName, string lastName, string grouptitle, UUID avatarID, uint avatarLocalID, Vector3 Pos, byte[] textureEntry, uint parentID, Quaternion rotation) 849 public void SendAvatarData(ulong regionHandle, string firstName, string lastName, string grouptitle, UUID avatarID, uint avatarLocalID, Vector3 Pos, byte[] textureEntry, uint parentID, Quaternion rotation)
811 { 850 {
812 throw new System.NotImplementedException(); 851
813 } 852 }
814 853
815 public void SendAvatarTerseUpdate(ulong regionHandle, ushort timeDilation, uint localID, Vector3 position, Vector3 velocity, Quaternion rotation, UUID agentid) 854 public void SendAvatarTerseUpdate(ulong regionHandle, ushort timeDilation, uint localID, Vector3 position, Vector3 velocity, Quaternion rotation, UUID agentid)
816 { 855 {
817 throw new System.NotImplementedException(); 856
818 } 857 }
819 858
820 public void SendCoarseLocationUpdate(List<UUID> users, List<Vector3> CoarseLocations) 859 public void SendCoarseLocationUpdate(List<UUID> users, List<Vector3> CoarseLocations)
821 { 860 {
822 throw new System.NotImplementedException(); 861
823 } 862 }
824 863
825 public void AttachObject(uint localID, Quaternion rotation, byte attachPoint, UUID ownerID) 864 public void AttachObject(uint localID, Quaternion rotation, byte attachPoint, UUID ownerID)
826 { 865 {
827 throw new System.NotImplementedException(); 866
828 } 867 }
829 868
830 public void SetChildAgentThrottle(byte[] throttle) 869 public void SetChildAgentThrottle(byte[] throttle)
831 { 870 {
832 throw new System.NotImplementedException(); 871
833 } 872 }
834 873
835 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) 874 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)
836 { 875 {
837 throw new System.NotImplementedException(); 876
838 } 877 }
839 878
840 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) 879 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)
841 { 880 {
842 throw new System.NotImplementedException(); 881
843 } 882 }
844 883
845 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) 884 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)
846 { 885 {
847 throw new System.NotImplementedException(); 886
848 } 887 }
849 888
850 public void SendInventoryFolderDetails(UUID ownerID, UUID folderID, List<InventoryItemBase> items, List<InventoryFolderBase> folders, bool fetchFolders, bool fetchItems) 889 public void SendInventoryFolderDetails(UUID ownerID, UUID folderID, List<InventoryItemBase> items, List<InventoryFolderBase> folders, bool fetchFolders, bool fetchItems)
851 { 890 {
852 throw new System.NotImplementedException(); 891
853 } 892 }
854 893
855 public void FlushPrimUpdates() 894 public void FlushPrimUpdates()
856 { 895 {
857 throw new System.NotImplementedException(); 896
858 } 897 }
859 898
860 public void SendInventoryItemDetails(UUID ownerID, InventoryItemBase item) 899 public void SendInventoryItemDetails(UUID ownerID, InventoryItemBase item)
861 { 900 {
862 throw new System.NotImplementedException(); 901
863 } 902 }
864 903
865 public void SendInventoryItemCreateUpdate(InventoryItemBase Item, uint callbackId) 904 public void SendInventoryItemCreateUpdate(InventoryItemBase Item, uint callbackId)
866 { 905 {
867 throw new System.NotImplementedException(); 906
868 } 907 }
869 908
870 public void SendRemoveInventoryItem(UUID itemID) 909 public void SendRemoveInventoryItem(UUID itemID)
871 { 910 {
872 throw new System.NotImplementedException(); 911
873 } 912 }
874 913
875 public void SendTakeControls(int controls, bool passToAgent, bool TakeControls) 914 public void SendTakeControls(int controls, bool passToAgent, bool TakeControls)
876 { 915 {
877 throw new System.NotImplementedException(); 916
878 } 917 }
879 918
880 public void SendTaskInventory(UUID taskID, short serial, byte[] fileName) 919 public void SendTaskInventory(UUID taskID, short serial, byte[] fileName)
881 { 920 {
882 throw new System.NotImplementedException(); 921
883 } 922 }
884 923
885 public void SendBulkUpdateInventory(InventoryNodeBase node) 924 public void SendBulkUpdateInventory(InventoryNodeBase node)
886 { 925 {
887 throw new System.NotImplementedException(); 926
888 } 927 }
889 928
890 public void SendXferPacket(ulong xferID, uint packet, byte[] data) 929 public void SendXferPacket(ulong xferID, uint packet, byte[] data)
891 { 930 {
892 throw new System.NotImplementedException(); 931
893 } 932 }
894 933
895 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) 934 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)
896 { 935 {
897 throw new System.NotImplementedException(); 936
898 } 937 }
899 938
900 public void SendAvatarPickerReply(AvatarPickerReplyAgentDataArgs AgentData, List<AvatarPickerReplyDataArgs> Data) 939 public void SendAvatarPickerReply(AvatarPickerReplyAgentDataArgs AgentData, List<AvatarPickerReplyDataArgs> Data)
901 { 940 {
902 throw new System.NotImplementedException(); 941
903 } 942 }
904 943
905 public void SendAgentDataUpdate(UUID agentid, UUID activegroupid, string firstname, string lastname, ulong grouppowers, string groupname, string grouptitle) 944 public void SendAgentDataUpdate(UUID agentid, UUID activegroupid, string firstname, string lastname, ulong grouppowers, string groupname, string grouptitle)
906 { 945 {
907 throw new System.NotImplementedException(); 946
908 } 947 }
909 948
910 public void SendPreLoadSound(UUID objectID, UUID ownerID, UUID soundID) 949 public void SendPreLoadSound(UUID objectID, UUID ownerID, UUID soundID)
911 { 950 {
912 throw new System.NotImplementedException(); 951
913 } 952 }
914 953
915 public void SendPlayAttachedSound(UUID soundID, UUID objectID, UUID ownerID, float gain, byte flags) 954 public void SendPlayAttachedSound(UUID soundID, UUID objectID, UUID ownerID, float gain, byte flags)
916 { 955 {
917 throw new System.NotImplementedException(); 956
918 } 957 }
919 958
920 public void SendTriggeredSound(UUID soundID, UUID ownerID, UUID objectID, UUID parentID, ulong handle, Vector3 position, float gain) 959 public void SendTriggeredSound(UUID soundID, UUID ownerID, UUID objectID, UUID parentID, ulong handle, Vector3 position, float gain)
921 { 960 {
922 throw new System.NotImplementedException(); 961
923 } 962 }
924 963
925 public void SendAttachedSoundGainChange(UUID objectID, float gain) 964 public void SendAttachedSoundGainChange(UUID objectID, float gain)
926 { 965 {
927 throw new System.NotImplementedException(); 966
928 } 967 }
929 968
930 public void SendNameReply(UUID profileId, string firstname, string lastname) 969 public void SendNameReply(UUID profileId, string firstname, string lastname)
931 { 970 {
932 throw new System.NotImplementedException(); 971
933 } 972 }
934 973
935 public void SendAlertMessage(string message) 974 public void SendAlertMessage(string message)
936 { 975 {
937 throw new System.NotImplementedException(); 976 IRC_SendChannelPrivmsg("Alert",message);
938 } 977 }
939 978
940 public void SendAgentAlertMessage(string message, bool modal) 979 public void SendAgentAlertMessage(string message, bool modal)
941 { 980 {
942 throw new System.NotImplementedException(); 981
943 } 982 }
944 983
945 public void SendLoadURL(string objectname, UUID objectID, UUID ownerID, bool groupOwned, string message, string url) 984 public void SendLoadURL(string objectname, UUID objectID, UUID ownerID, bool groupOwned, string message, string url)
946 { 985 {
947 throw new System.NotImplementedException(); 986 IRC_SendChannelPrivmsg(objectname,url);
948 } 987 }
949 988
950 public void SendDialog(string objectname, UUID objectID, string ownerFirstName, string ownerLastName, string msg, UUID textureID, int ch, string[] buttonlabels) 989 public void SendDialog(string objectname, UUID objectID, string ownerFirstName, string ownerLastName, string msg, UUID textureID, int ch, string[] buttonlabels)
951 { 990 {
952 throw new System.NotImplementedException(); 991
953 } 992 }
954 993
955 public bool AddMoney(int debit) 994 public bool AddMoney(int debit)
956 { 995 {
957 throw new System.NotImplementedException(); 996 return true;
958 } 997 }
959 998
960 public void SendSunPos(Vector3 sunPos, Vector3 sunVel, ulong CurrentTime, uint SecondsPerSunCycle, uint SecondsPerYear, float OrbitalPosition) 999 public void SendSunPos(Vector3 sunPos, Vector3 sunVel, ulong CurrentTime, uint SecondsPerSunCycle, uint SecondsPerYear, float OrbitalPosition)
961 { 1000 {
962 throw new System.NotImplementedException(); 1001
963 } 1002 }
964 1003
965 public void SendViewerEffect(ViewerEffectPacket.EffectBlock[] effectBlocks) 1004 public void SendViewerEffect(ViewerEffectPacket.EffectBlock[] effectBlocks)
966 { 1005 {
967 throw new System.NotImplementedException(); 1006
968 } 1007 }
969 1008
970 public void SendViewerTime(int phase) 1009 public void SendViewerTime(int phase)
971 { 1010 {
972 throw new System.NotImplementedException(); 1011
973 } 1012 }
974 1013
975 public UUID GetDefaultAnimation(string name) 1014 public UUID GetDefaultAnimation(string name)
976 { 1015 {
977 throw new System.NotImplementedException(); 1016 return UUID.Zero;
978 } 1017 }
979 1018
980 public void SendAvatarProperties(UUID avatarID, string aboutText, string bornOn, byte[] charterMember, string flAbout, uint flags, UUID flImageID, UUID imageID, string profileURL, UUID partnerID) 1019 public void SendAvatarProperties(UUID avatarID, string aboutText, string bornOn, byte[] charterMember, string flAbout, uint flags, UUID flImageID, UUID imageID, string profileURL, UUID partnerID)
981 { 1020 {
982 throw new System.NotImplementedException(); 1021
983 } 1022 }
984 1023
985 public void SendScriptQuestion(UUID taskID, string taskName, string ownerName, UUID itemID, int question) 1024 public void SendScriptQuestion(UUID taskID, string taskName, string ownerName, UUID itemID, int question)
986 { 1025 {
987 throw new System.NotImplementedException(); 1026
988 } 1027 }
989 1028
990 public void SendHealth(float health) 1029 public void SendHealth(float health)
991 { 1030 {
992 throw new System.NotImplementedException(); 1031
993 } 1032 }
994 1033
995 public void SendEstateManagersList(UUID invoice, UUID[] EstateManagers, uint estateID) 1034 public void SendEstateManagersList(UUID invoice, UUID[] EstateManagers, uint estateID)
996 { 1035 {
997 throw new System.NotImplementedException(); 1036
998 } 1037 }
999 1038
1000 public void SendBannedUserList(UUID invoice, EstateBan[] banlist, uint estateID) 1039 public void SendBannedUserList(UUID invoice, EstateBan[] banlist, uint estateID)
1001 { 1040 {
1002 throw new System.NotImplementedException(); 1041
1003 } 1042 }
1004 1043
1005 public void SendRegionInfoToEstateMenu(RegionInfoForEstateMenuArgs args) 1044 public void SendRegionInfoToEstateMenu(RegionInfoForEstateMenuArgs args)
1006 { 1045 {
1007 throw new System.NotImplementedException(); 1046
1008 } 1047 }
1009 1048
1010 public void SendEstateCovenantInformation(UUID covenant) 1049 public void SendEstateCovenantInformation(UUID covenant)
1011 { 1050 {
1012 throw new System.NotImplementedException(); 1051
1013 } 1052 }
1014 1053
1015 public void SendDetailedEstateData(UUID invoice, string estateName, uint estateID, uint parentEstate, uint estateFlags, uint sunPosition, UUID covenant, string abuseEmail, UUID estateOwner) 1054 public void SendDetailedEstateData(UUID invoice, string estateName, uint estateID, uint parentEstate, uint estateFlags, uint sunPosition, UUID covenant, string abuseEmail, UUID estateOwner)
1016 { 1055 {
1017 throw new System.NotImplementedException(); 1056
1018 } 1057 }
1019 1058
1020 public void SendLandProperties(int sequence_id, bool snap_selection, int request_result, LandData landData, float simObjectBonusFactor, int parcelObjectCapacity, int simObjectCapacity, uint regionFlags) 1059 public void SendLandProperties(int sequence_id, bool snap_selection, int request_result, LandData landData, float simObjectBonusFactor, int parcelObjectCapacity, int simObjectCapacity, uint regionFlags)
1021 { 1060 {
1022 throw new System.NotImplementedException(); 1061
1023 } 1062 }
1024 1063
1025 public void SendLandAccessListData(List<UUID> avatars, uint accessFlag, int localLandID) 1064 public void SendLandAccessListData(List<UUID> avatars, uint accessFlag, int localLandID)
1026 { 1065 {
1027 throw new System.NotImplementedException(); 1066
1028 } 1067 }
1029 1068
1030 public void SendForceClientSelectObjects(List<uint> objectIDs) 1069 public void SendForceClientSelectObjects(List<uint> objectIDs)
1031 { 1070 {
1032 throw new System.NotImplementedException(); 1071
1033 } 1072 }
1034 1073
1035 public void SendLandObjectOwners(LandData land, List<UUID> groups, Dictionary<UUID, int> ownersAndCount) 1074 public void SendLandObjectOwners(LandData land, List<UUID> groups, Dictionary<UUID, int> ownersAndCount)
1036 { 1075 {
1037 throw new System.NotImplementedException(); 1076
1038 } 1077 }
1039 1078
1040 public void SendLandParcelOverlay(byte[] data, int sequence_id) 1079 public void SendLandParcelOverlay(byte[] data, int sequence_id)
1041 { 1080 {
1042 throw new System.NotImplementedException(); 1081
1043 } 1082 }
1044 1083
1045 public void SendParcelMediaCommand(uint flags, ParcelMediaCommandEnum command, float time) 1084 public void SendParcelMediaCommand(uint flags, ParcelMediaCommandEnum command, float time)
1046 { 1085 {
1047 throw new System.NotImplementedException(); 1086
1048 } 1087 }
1049 1088
1050 public void SendParcelMediaUpdate(string mediaUrl, UUID mediaTextureID, byte autoScale, string mediaType, string mediaDesc, int mediaWidth, int mediaHeight, byte mediaLoop) 1089 public void SendParcelMediaUpdate(string mediaUrl, UUID mediaTextureID, byte autoScale, string mediaType, string mediaDesc, int mediaWidth, int mediaHeight, byte mediaLoop)
1051 { 1090 {
1052 throw new System.NotImplementedException(); 1091
1053 } 1092 }
1054 1093
1055 public void SendAssetUploadCompleteMessage(sbyte AssetType, bool Success, UUID AssetFullID) 1094 public void SendAssetUploadCompleteMessage(sbyte AssetType, bool Success, UUID AssetFullID)
1056 { 1095 {
1057 throw new System.NotImplementedException(); 1096
1058 } 1097 }
1059 1098
1060 public void SendConfirmXfer(ulong xferID, uint PacketID) 1099 public void SendConfirmXfer(ulong xferID, uint PacketID)
1061 { 1100 {
1062 throw new System.NotImplementedException(); 1101
1063 } 1102 }
1064 1103
1065 public void SendXferRequest(ulong XferID, short AssetType, UUID vFileID, byte FilePath, byte[] FileName) 1104 public void SendXferRequest(ulong XferID, short AssetType, UUID vFileID, byte FilePath, byte[] FileName)
1066 { 1105 {
1067 throw new System.NotImplementedException(); 1106
1068 } 1107 }
1069 1108
1070 public void SendInitiateDownload(string simFileName, string clientFileName) 1109 public void SendInitiateDownload(string simFileName, string clientFileName)
1071 { 1110 {
1072 throw new System.NotImplementedException(); 1111
1073 } 1112 }
1074 1113
1075 public void SendImageFirstPart(ushort numParts, UUID ImageUUID, uint ImageSize, byte[] ImageData, byte imageCodec) 1114 public void SendImageFirstPart(ushort numParts, UUID ImageUUID, uint ImageSize, byte[] ImageData, byte imageCodec)
1076 { 1115 {
1077 throw new System.NotImplementedException(); 1116
1078 } 1117 }
1079 1118
1080 public void SendImageNextPart(ushort partNumber, UUID imageUuid, byte[] imageData) 1119 public void SendImageNextPart(ushort partNumber, UUID imageUuid, byte[] imageData)
1081 { 1120 {
1082 throw new System.NotImplementedException(); 1121
1083 } 1122 }
1084 1123
1085 public void SendImageNotFound(UUID imageid) 1124 public void SendImageNotFound(UUID imageid)
1086 { 1125 {
1087 throw new System.NotImplementedException(); 1126
1088 } 1127 }
1089 1128
1090 public void SendShutdownConnectionNotice() 1129 public void SendShutdownConnectionNotice()
1091 { 1130 {
1092 throw new System.NotImplementedException(); 1131 // TODO
1093 } 1132 }
1094 1133
1095 public void SendSimStats(SimStats stats) 1134 public void SendSimStats(SimStats stats)
1096 { 1135 {
1097 throw new System.NotImplementedException(); 1136
1098 } 1137 }
1099 1138
1100 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) 1139 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)
1101 { 1140 {
1102 throw new System.NotImplementedException(); 1141
1103 } 1142 }
1104 1143
1105 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) 1144 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)
1106 { 1145 {
1107 throw new System.NotImplementedException(); 1146
1108 } 1147 }
1109 1148
1110 public void SendAgentOffline(UUID[] agentIDs) 1149 public void SendAgentOffline(UUID[] agentIDs)
1111 { 1150 {
1112 throw new System.NotImplementedException(); 1151
1113 } 1152 }
1114 1153
1115 public void SendAgentOnline(UUID[] agentIDs) 1154 public void SendAgentOnline(UUID[] agentIDs)
1116 { 1155 {
1117 throw new System.NotImplementedException(); 1156
1118 } 1157 }
1119 1158
1120 public void SendSitResponse(UUID TargetID, Vector3 OffsetPos, Quaternion SitOrientation, bool autopilot, Vector3 CameraAtOffset, Vector3 CameraEyeOffset, bool ForceMouseLook) 1159 public void SendSitResponse(UUID TargetID, Vector3 OffsetPos, Quaternion SitOrientation, bool autopilot, Vector3 CameraAtOffset, Vector3 CameraEyeOffset, bool ForceMouseLook)
1121 { 1160 {
1122 throw new System.NotImplementedException(); 1161
1123 } 1162 }
1124 1163
1125 public void SendAdminResponse(UUID Token, uint AdminLevel) 1164 public void SendAdminResponse(UUID Token, uint AdminLevel)
1126 { 1165 {
1127 throw new System.NotImplementedException(); 1166
1128 } 1167 }
1129 1168
1130 public void SendGroupMembership(GroupMembershipData[] GroupMembership) 1169 public void SendGroupMembership(GroupMembershipData[] GroupMembership)
1131 { 1170 {
1132 throw new System.NotImplementedException(); 1171
1133 } 1172 }
1134 1173
1135 public void SendGroupNameReply(UUID groupLLUID, string GroupName) 1174 public void SendGroupNameReply(UUID groupLLUID, string GroupName)
1136 { 1175 {
1137 throw new System.NotImplementedException(); 1176
1138 } 1177 }
1139 1178
1140 public void SendJoinGroupReply(UUID groupID, bool success) 1179 public void SendJoinGroupReply(UUID groupID, bool success)
1141 { 1180 {
1142 throw new System.NotImplementedException(); 1181
1143 } 1182 }
1144 1183
1145 public void SendEjectGroupMemberReply(UUID agentID, UUID groupID, bool success) 1184 public void SendEjectGroupMemberReply(UUID agentID, UUID groupID, bool success)
1146 { 1185 {
1147 throw new System.NotImplementedException(); 1186
1148 } 1187 }
1149 1188
1150 public void SendLeaveGroupReply(UUID groupID, bool success) 1189 public void SendLeaveGroupReply(UUID groupID, bool success)
1151 { 1190 {
1152 throw new System.NotImplementedException(); 1191
1153 } 1192 }
1154 1193
1155 public void SendCreateGroupReply(UUID groupID, bool success, string message) 1194 public void SendCreateGroupReply(UUID groupID, bool success, string message)
1156 { 1195 {
1157 throw new System.NotImplementedException(); 1196
1158 } 1197 }
1159 1198
1160 public void SendLandStatReply(uint reportType, uint requestFlags, uint resultCount, LandStatReportItem[] lsrpia) 1199 public void SendLandStatReply(uint reportType, uint requestFlags, uint resultCount, LandStatReportItem[] lsrpia)
1161 { 1200 {
1162 throw new System.NotImplementedException(); 1201
1163 } 1202 }
1164 1203
1165 public void SendScriptRunningReply(UUID objectID, UUID itemID, bool running) 1204 public void SendScriptRunningReply(UUID objectID, UUID itemID, bool running)
1166 { 1205 {
1167 throw new System.NotImplementedException(); 1206
1168 } 1207 }
1169 1208
1170 public void SendAsset(AssetRequestToClient req) 1209 public void SendAsset(AssetRequestToClient req)
1171 { 1210 {
1172 throw new System.NotImplementedException(); 1211
1173 } 1212 }
1174 1213
1175 public void SendTexture(AssetBase TextureAsset) 1214 public void SendTexture(AssetBase TextureAsset)
1176 { 1215 {
1177 throw new System.NotImplementedException(); 1216
1178 } 1217 }
1179 1218
1180 public byte[] GetThrottlesPacked(float multiplier) 1219 public byte[] GetThrottlesPacked(float multiplier)
1181 { 1220 {
1182 throw new System.NotImplementedException(); 1221 return new byte[0];
1183 } 1222 }
1184 1223
1185 public event ViewerEffectEventHandler OnViewerEffect; 1224 public event ViewerEffectEventHandler OnViewerEffect;
1186 public event Action<IClientAPI> OnLogout; 1225 public event Action<IClientAPI> OnLogout;
1187 public event Action<IClientAPI> OnConnectionClosed; 1226 public event Action<IClientAPI> OnConnectionClosed;
1227
1188 public void SendBlueBoxMessage(UUID FromAvatarID, string FromAvatarName, string Message) 1228 public void SendBlueBoxMessage(UUID FromAvatarID, string FromAvatarName, string Message)
1189 { 1229 {
1190 throw new System.NotImplementedException(); 1230 IRC_SendChannelPrivmsg(FromAvatarName, Message);
1191 } 1231 }
1192 1232
1193 public void SendLogoutPacket() 1233 public void SendLogoutPacket()
1194 { 1234 {
1195 throw new System.NotImplementedException(); 1235 Disconnect();
1196 } 1236 }
1197 1237
1198 public ClientInfo GetClientInfo() 1238 public ClientInfo GetClientInfo()
1199 { 1239 {
1200 throw new System.NotImplementedException(); 1240 return new ClientInfo();
1201 } 1241 }
1202 1242
1203 public void SetClientInfo(ClientInfo info) 1243 public void SetClientInfo(ClientInfo info)
1204 { 1244 {
1205 throw new System.NotImplementedException(); 1245
1206 } 1246 }
1207 1247
1208 public void SetClientOption(string option, string value) 1248 public void SetClientOption(string option, string value)
1209 { 1249 {
1210 throw new System.NotImplementedException(); 1250
1211 } 1251 }
1212 1252
1213 public string GetClientOption(string option) 1253 public string GetClientOption(string option)
1214 { 1254 {
1215 throw new System.NotImplementedException(); 1255 return String.Empty;
1216 } 1256 }
1217 1257
1218 public void Terminate() 1258 public void Terminate()
1219 { 1259 {
1220 throw new System.NotImplementedException(); 1260 Disconnect();
1221 } 1261 }
1222 1262
1223 public void SendSetFollowCamProperties(UUID objectID, SortedDictionary<int, float> parameters) 1263 public void SendSetFollowCamProperties(UUID objectID, SortedDictionary<int, float> parameters)
1224 { 1264 {
1225 throw new System.NotImplementedException(); 1265
1226 } 1266 }
1227 1267
1228 public void SendClearFollowCamProperties(UUID objectID) 1268 public void SendClearFollowCamProperties(UUID objectID)
1229 { 1269 {
1230 throw new System.NotImplementedException(); 1270
1231 } 1271 }
1232 1272
1233 public void SendRegionHandle(UUID regoinID, ulong handle) 1273 public void SendRegionHandle(UUID regoinID, ulong handle)
1234 { 1274 {
1235 throw new System.NotImplementedException(); 1275
1236 } 1276 }
1237 1277
1238 public void SendParcelInfo(RegionInfo info, LandData land, UUID parcelID, uint x, uint y) 1278 public void SendParcelInfo(RegionInfo info, LandData land, UUID parcelID, uint x, uint y)
1239 { 1279 {
1240 throw new System.NotImplementedException(); 1280
1241 } 1281 }
1242 1282
1243 public void SendScriptTeleportRequest(string objName, string simName, Vector3 pos, Vector3 lookAt) 1283 public void SendScriptTeleportRequest(string objName, string simName, Vector3 pos, Vector3 lookAt)
1244 { 1284 {
1245 throw new System.NotImplementedException(); 1285
1246 } 1286 }
1247 1287
1248 public void SendDirPlacesReply(UUID queryID, DirPlacesReplyData[] data) 1288 public void SendDirPlacesReply(UUID queryID, DirPlacesReplyData[] data)
1249 { 1289 {
1250 throw new System.NotImplementedException(); 1290
1251 } 1291 }
1252 1292
1253 public void SendDirPeopleReply(UUID queryID, DirPeopleReplyData[] data) 1293 public void SendDirPeopleReply(UUID queryID, DirPeopleReplyData[] data)
1254 { 1294 {
1255 throw new System.NotImplementedException(); 1295
1256 } 1296 }
1257 1297
1258 public void SendDirEventsReply(UUID queryID, DirEventsReplyData[] data) 1298 public void SendDirEventsReply(UUID queryID, DirEventsReplyData[] data)
1259 { 1299 {
1260 throw new System.NotImplementedException(); 1300
1261 } 1301 }
1262 1302
1263 public void SendDirGroupsReply(UUID queryID, DirGroupsReplyData[] data) 1303 public void SendDirGroupsReply(UUID queryID, DirGroupsReplyData[] data)
1264 { 1304 {
1265 throw new System.NotImplementedException(); 1305
1266 } 1306 }
1267 1307
1268 public void SendDirClassifiedReply(UUID queryID, DirClassifiedReplyData[] data) 1308 public void SendDirClassifiedReply(UUID queryID, DirClassifiedReplyData[] data)
1269 { 1309 {
1270 throw new System.NotImplementedException(); 1310
1271 } 1311 }
1272 1312
1273 public void SendDirLandReply(UUID queryID, DirLandReplyData[] data) 1313 public void SendDirLandReply(UUID queryID, DirLandReplyData[] data)
1274 { 1314 {
1275 throw new System.NotImplementedException(); 1315
1276 } 1316 }
1277 1317
1278 public void SendDirPopularReply(UUID queryID, DirPopularReplyData[] data) 1318 public void SendDirPopularReply(UUID queryID, DirPopularReplyData[] data)
1279 { 1319 {
1280 throw new System.NotImplementedException(); 1320
1281 } 1321 }
1282 1322
1283 public void SendEventInfoReply(EventData info) 1323 public void SendEventInfoReply(EventData info)
1284 { 1324 {
1285 throw new System.NotImplementedException(); 1325
1286 } 1326 }
1287 1327
1288 public void SendMapItemReply(mapItemReply[] replies, uint mapitemtype, uint flags) 1328 public void SendMapItemReply(mapItemReply[] replies, uint mapitemtype, uint flags)
1289 { 1329 {
1290 throw new System.NotImplementedException(); 1330
1291 } 1331 }
1292 1332
1293 public void SendAvatarGroupsReply(UUID avatarID, GroupMembershipData[] data) 1333 public void SendAvatarGroupsReply(UUID avatarID, GroupMembershipData[] data)
1294 { 1334 {
1295 throw new System.NotImplementedException(); 1335
1296 } 1336 }
1297 1337
1298 public void SendOfferCallingCard(UUID srcID, UUID transactionID) 1338 public void SendOfferCallingCard(UUID srcID, UUID transactionID)
1299 { 1339 {
1300 throw new System.NotImplementedException(); 1340
1301 } 1341 }
1302 1342
1303 public void SendAcceptCallingCard(UUID transactionID) 1343 public void SendAcceptCallingCard(UUID transactionID)
1304 { 1344 {
1305 throw new System.NotImplementedException(); 1345
1306 } 1346 }
1307 1347
1308 public void SendDeclineCallingCard(UUID transactionID) 1348 public void SendDeclineCallingCard(UUID transactionID)
1309 { 1349 {
1310 throw new System.NotImplementedException(); 1350
1311 } 1351 }
1312 1352
1313 public void SendTerminateFriend(UUID exFriendID) 1353 public void SendTerminateFriend(UUID exFriendID)
1314 { 1354 {
1315 throw new System.NotImplementedException(); 1355
1316 } 1356 }
1317 1357
1318 public void SendAvatarClassifiedReply(UUID targetID, UUID[] classifiedID, string[] name) 1358 public void SendAvatarClassifiedReply(UUID targetID, UUID[] classifiedID, string[] name)
1319 { 1359 {
1320 throw new System.NotImplementedException(); 1360
1321 } 1361 }
1322 1362
1323 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) 1363 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)
1324 { 1364 {
1325 throw new System.NotImplementedException(); 1365
1326 } 1366 }
1327 1367
1328 public void SendAgentDropGroup(UUID groupID) 1368 public void SendAgentDropGroup(UUID groupID)
1329 { 1369 {
1330 throw new System.NotImplementedException(); 1370
1331 } 1371 }
1332 1372
1333 public void RefreshGroupMembership() 1373 public void RefreshGroupMembership()
1334 { 1374 {
1335 throw new System.NotImplementedException(); 1375
1336 } 1376 }
1337 1377
1338 public void SendAvatarNotesReply(UUID targetID, string text) 1378 public void SendAvatarNotesReply(UUID targetID, string text)
1339 { 1379 {
1340 throw new System.NotImplementedException(); 1380
1341 } 1381 }
1342 1382
1343 public void SendAvatarPicksReply(UUID targetID, Dictionary<UUID, string> picks) 1383 public void SendAvatarPicksReply(UUID targetID, Dictionary<UUID, string> picks)
1344 { 1384 {
1345 throw new System.NotImplementedException(); 1385
1346 } 1386 }
1347 1387
1348 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) 1388 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)
1349 { 1389 {
1350 throw new System.NotImplementedException(); 1390
1351 } 1391 }
1352 1392
1353 public void SendAvatarClassifiedReply(UUID targetID, Dictionary<UUID, string> classifieds) 1393 public void SendAvatarClassifiedReply(UUID targetID, Dictionary<UUID, string> classifieds)
1354 { 1394 {
1355 throw new System.NotImplementedException(); 1395
1356 } 1396 }
1357 1397
1358 public void SendParcelDwellReply(int localID, UUID parcelID, float dwell) 1398 public void SendParcelDwellReply(int localID, UUID parcelID, float dwell)
1359 { 1399 {
1360 throw new System.NotImplementedException(); 1400
1361 } 1401 }
1362 1402
1363 public void SendUserInfoReply(bool imViaEmail, bool visible, string email) 1403 public void SendUserInfoReply(bool imViaEmail, bool visible, string email)
1364 { 1404 {
1365 throw new System.NotImplementedException(); 1405
1366 } 1406 }
1367 1407
1368 public void SendUseCachedMuteList() 1408 public void SendUseCachedMuteList()
1369 { 1409 {
1370 throw new System.NotImplementedException(); 1410
1371 } 1411 }
1372 1412
1373 public void SendMuteListUpdate(string filename) 1413 public void SendMuteListUpdate(string filename)
1374 { 1414 {
1375 throw new System.NotImplementedException(); 1415
1376 } 1416 }
1377 1417
1378 public void KillEndDone() 1418 public void KillEndDone()
1379 { 1419 {
1380 throw new System.NotImplementedException(); 1420
1381 } 1421 }
1382 1422
1383 public bool AddGenericPacketHandler(string MethodName, GenericMessage handler) 1423 public bool AddGenericPacketHandler(string MethodName, GenericMessage handler)
1384 { 1424 {
1385 throw new System.NotImplementedException(); 1425 return true;
1386 } 1426 }
1387 1427
1388 #endregion 1428 #endregion
@@ -1391,7 +1431,7 @@ namespace OpenSim.Region.OptionalModules.Agent.InternetRelayClientView.Server
1391 1431
1392 public IPAddress EndPoint 1432 public IPAddress EndPoint
1393 { 1433 {
1394 get { throw new System.NotImplementedException(); } 1434 get { return ((IPEndPoint) m_client.Client.RemoteEndPoint).Address; }
1395 } 1435 }
1396 1436
1397 #endregion 1437 #endregion
diff --git a/OpenSim/Region/OptionalModules/Agent/InternetRelayClientView/Server/IRCServer.cs b/OpenSim/Region/OptionalModules/Agent/InternetRelayClientView/Server/IRCServer.cs
index 4b39b92..23c213f 100644
--- a/OpenSim/Region/OptionalModules/Agent/InternetRelayClientView/Server/IRCServer.cs
+++ b/OpenSim/Region/OptionalModules/Agent/InternetRelayClientView/Server/IRCServer.cs
@@ -2,20 +2,30 @@
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.Text; 6using System.Text;
6using System.Threading; 7using System.Threading;
8using log4net;
9using OpenSim.Region.Framework.Scenes;
7 10
8namespace OpenSim.Region.OptionalModules.Agent.InternetRelayClientView.Server 11namespace OpenSim.Region.OptionalModules.Agent.InternetRelayClientView.Server
9{ 12{
13 public delegate void OnNewIRCUserDelegate(IRCClientView user);
14
10 /// <summary> 15 /// <summary>
11 /// Adam's completely hacked up not-probably-compliant RFC1459 server class. 16 /// Adam's completely hacked up not-probably-compliant RFC1459 server class.
12 /// </summary> 17 /// </summary>
13 class IRCServer 18 class IRCServer
14 { 19 {
20 private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
21
22 public event OnNewIRCUserDelegate OnNewIRCClient;
23
15 private TcpListener m_listener; 24 private TcpListener m_listener;
25 private Scene m_baseScene;
16 private bool m_running = true; 26 private bool m_running = true;
17 27
18 public IRCServer(IPAddress listener, int port) 28 public IRCServer(IPAddress listener, int port, Scene baseScene)
19 { 29 {
20 m_listener = new TcpListener(listener, port); 30 m_listener = new TcpListener(listener, port);
21 31
@@ -23,6 +33,7 @@ namespace OpenSim.Region.OptionalModules.Agent.InternetRelayClientView.Server
23 33
24 Thread thread = new Thread(ListenLoop); 34 Thread thread = new Thread(ListenLoop);
25 thread.Start(); 35 thread.Start();
36 m_baseScene = baseScene;
26 } 37 }
27 38
28 public void Stop() 39 public void Stop()
@@ -41,7 +52,10 @@ namespace OpenSim.Region.OptionalModules.Agent.InternetRelayClientView.Server
41 52
42 private void AcceptClient(TcpClient client) 53 private void AcceptClient(TcpClient client)
43 { 54 {
44 55 IRCClientView cv = new IRCClientView(client, m_baseScene);
56
57 if (OnNewIRCClient != null)
58 OnNewIRCClient(cv);
45 } 59 }
46 } 60 }
47} 61}