diff options
Diffstat (limited to 'OpenSim/Grid')
-rw-r--r-- | OpenSim/Grid/InventoryServer/GridInventoryService.cs | 104 | ||||
-rw-r--r-- | OpenSim/Grid/InventoryServer/Main.cs | 34 | ||||
-rw-r--r-- | OpenSim/Grid/UserServer/Main.cs | 19 | ||||
-rw-r--r-- | OpenSim/Grid/UserServer/UserLoginService.cs | 50 |
4 files changed, 202 insertions, 5 deletions
diff --git a/OpenSim/Grid/InventoryServer/GridInventoryService.cs b/OpenSim/Grid/InventoryServer/GridInventoryService.cs new file mode 100644 index 0000000..dda2f61 --- /dev/null +++ b/OpenSim/Grid/InventoryServer/GridInventoryService.cs | |||
@@ -0,0 +1,104 @@ | |||
1 | using System; | ||
2 | using System.Collections.Generic; | ||
3 | using System.Text; | ||
4 | using OpenSim.Framework; | ||
5 | using OpenSim.Framework.Communications; | ||
6 | using libsecondlife; | ||
7 | |||
8 | namespace OpenSim.Grid.InventoryServer | ||
9 | { | ||
10 | public class GridInventoryService : InventoryServiceBase | ||
11 | { | ||
12 | public override void RequestInventoryForUser(LLUUID userID, InventoryFolderInfo folderCallBack, | ||
13 | InventoryItemInfo itemCallBack) | ||
14 | { | ||
15 | |||
16 | } | ||
17 | |||
18 | private bool TryGetUsersInventory(LLUUID userID, out List<InventoryFolderBase> folderList, out List<InventoryItemBase> itemsList) | ||
19 | { | ||
20 | List<InventoryFolderBase> folders = RequestFirstLevelFolders(userID); | ||
21 | List<InventoryItemBase> allItems = new List<InventoryItemBase>(); | ||
22 | |||
23 | if (folders != null) | ||
24 | { | ||
25 | foreach (InventoryFolderBase folder in folders) | ||
26 | { | ||
27 | if (folder.parentID != LLUUID.Zero) | ||
28 | { | ||
29 | List<InventoryItemBase> items = RequestFolderItems(folder.folderID); | ||
30 | if (items != null) | ||
31 | { | ||
32 | allItems.InsertRange(0, items); | ||
33 | } | ||
34 | } | ||
35 | } | ||
36 | } | ||
37 | |||
38 | folderList = folders; | ||
39 | itemsList = allItems; | ||
40 | if (folderList != null) | ||
41 | { | ||
42 | return true; | ||
43 | } | ||
44 | else | ||
45 | { | ||
46 | return false; | ||
47 | } | ||
48 | } | ||
49 | |||
50 | public InventoryCollection GetUserInventory(LLUUID userID) | ||
51 | { | ||
52 | InventoryCollection invCollection = new InventoryCollection(); | ||
53 | List<InventoryFolderBase> folders; | ||
54 | List<InventoryItemBase> allItems; | ||
55 | if (TryGetUsersInventory(userID, out folders, out allItems)) | ||
56 | { | ||
57 | invCollection.AllItems = allItems; | ||
58 | invCollection.Folders = folders; | ||
59 | invCollection.UserID = userID; | ||
60 | } | ||
61 | return invCollection; | ||
62 | } | ||
63 | |||
64 | public bool CreateUsersInventory(LLUUID user) | ||
65 | { | ||
66 | CreateNewUserInventory(user); | ||
67 | return true; | ||
68 | } | ||
69 | |||
70 | |||
71 | public override void AddNewInventoryFolder(LLUUID userID, InventoryFolderBase folder) | ||
72 | { | ||
73 | AddFolder(folder); | ||
74 | } | ||
75 | |||
76 | public override void AddNewInventoryItem(LLUUID userID, InventoryItemBase item) | ||
77 | { | ||
78 | AddItem(item); | ||
79 | } | ||
80 | |||
81 | public bool AddInventoryFolder( InventoryFolderBase folder) | ||
82 | { | ||
83 | AddNewInventoryFolder(folder.agentID, folder); | ||
84 | return true; | ||
85 | } | ||
86 | |||
87 | public bool AddInventoryItem( InventoryItemBase item) | ||
88 | { | ||
89 | AddNewInventoryItem(item.avatarID, item); | ||
90 | return true; | ||
91 | } | ||
92 | |||
93 | public override void DeleteInventoryItem(LLUUID userID, InventoryItemBase item) | ||
94 | { | ||
95 | DeleteItem(item); | ||
96 | } | ||
97 | |||
98 | public bool DeleteInvItem( InventoryItemBase item) | ||
99 | { | ||
100 | DeleteInventoryItem(item.avatarID, item); | ||
101 | return true; | ||
102 | } | ||
103 | } | ||
104 | } | ||
diff --git a/OpenSim/Grid/InventoryServer/Main.cs b/OpenSim/Grid/InventoryServer/Main.cs index 1bc396b..8d232c2 100644 --- a/OpenSim/Grid/InventoryServer/Main.cs +++ b/OpenSim/Grid/InventoryServer/Main.cs | |||
@@ -47,6 +47,7 @@ namespace OpenSim.Grid.InventoryServer | |||
47 | LogBase m_console; | 47 | LogBase m_console; |
48 | InventoryManager m_inventoryManager; | 48 | InventoryManager m_inventoryManager; |
49 | InventoryConfig m_config; | 49 | InventoryConfig m_config; |
50 | GridInventoryService m_inventoryService; | ||
50 | 51 | ||
51 | public const string LogName = "INVENTORY"; | 52 | public const string LogName = "INVENTORY"; |
52 | 53 | ||
@@ -69,13 +70,35 @@ namespace OpenSim.Grid.InventoryServer | |||
69 | { | 70 | { |
70 | MainLog.Instance.Notice("Initialising inventory manager..."); | 71 | MainLog.Instance.Notice("Initialising inventory manager..."); |
71 | m_config = new InventoryConfig(LogName, (Path.Combine(Util.configDir(), "InventoryServer_Config.xml"))); | 72 | m_config = new InventoryConfig(LogName, (Path.Combine(Util.configDir(), "InventoryServer_Config.xml"))); |
72 | 73 | ||
73 | m_inventoryManager = new InventoryManager(); | 74 | m_inventoryService = new GridInventoryService(); |
74 | m_inventoryManager.AddDatabasePlugin(m_config.DatabaseProvider); | 75 | // m_inventoryManager = new InventoryManager(); |
76 | m_inventoryService.AddPlugin(m_config.DatabaseProvider); | ||
77 | |||
75 | MainLog.Instance.Notice(LogName, "Starting HTTP server ..."); | 78 | MainLog.Instance.Notice(LogName, "Starting HTTP server ..."); |
76 | BaseHttpServer httpServer = new BaseHttpServer(m_config.HttpPort); | 79 | BaseHttpServer httpServer = new BaseHttpServer(m_config.HttpPort); |
80 | httpServer.AddStreamHandler( | ||
81 | new RestDeserialisehandler<LLUUID, InventoryCollection>("POST", "/GetInventory/", | ||
82 | m_inventoryService.GetUserInventory)); | ||
83 | httpServer.AddStreamHandler( | ||
84 | new RestDeserialisehandler<LLUUID, bool>("POST", "/CreateInventory/", | ||
85 | m_inventoryService.CreateUsersInventory)); | ||
86 | httpServer.AddStreamHandler( | ||
87 | new RestDeserialisehandler<InventoryFolderBase, bool>("POST", "/NewFolder/", | ||
88 | m_inventoryService.AddInventoryFolder)); | ||
89 | |||
90 | httpServer.AddStreamHandler( | ||
91 | new RestDeserialisehandler<InventoryItemBase, bool>("POST", "/NewItem/", | ||
92 | m_inventoryService.AddInventoryItem)); | ||
93 | httpServer.AddStreamHandler( | ||
94 | new RestDeserialisehandler<InventoryItemBase, bool>("POST", "/DeleteItem/", | ||
95 | m_inventoryService.DeleteInvItem)); | ||
77 | 96 | ||
78 | httpServer.AddStreamHandler(new InventoryManager.GetInventory(m_inventoryManager)); | 97 | httpServer.AddStreamHandler( |
98 | new RestDeserialisehandler<LLUUID, List<InventoryFolderBase>>("POST", "/RootFolders/", | ||
99 | m_inventoryService.RequestFirstLevelFolders)); | ||
100 | |||
101 | // httpServer.AddStreamHandler(new InventoryManager.GetInventory(m_inventoryManager)); | ||
79 | 102 | ||
80 | httpServer.Start(); | 103 | httpServer.Start(); |
81 | MainLog.Instance.Notice(LogName, "Started HTTP server"); | 104 | MainLog.Instance.Notice(LogName, "Started HTTP server"); |
@@ -96,6 +119,9 @@ namespace OpenSim.Grid.InventoryServer | |||
96 | switch (cmd) | 119 | switch (cmd) |
97 | { | 120 | { |
98 | case "quit": | 121 | case "quit": |
122 | case "add-user": | ||
123 | m_inventoryService.CreateUsersInventory(LLUUID.Random()); | ||
124 | break; | ||
99 | case "shutdown": | 125 | case "shutdown": |
100 | m_console.Close(); | 126 | m_console.Close(); |
101 | Environment.Exit(0); | 127 | Environment.Exit(0); |
diff --git a/OpenSim/Grid/UserServer/Main.cs b/OpenSim/Grid/UserServer/Main.cs index 779a72b..b00bb76 100644 --- a/OpenSim/Grid/UserServer/Main.cs +++ b/OpenSim/Grid/UserServer/Main.cs | |||
@@ -27,7 +27,9 @@ | |||
27 | */ | 27 | */ |
28 | 28 | ||
29 | using System; | 29 | using System; |
30 | using System.Collections.Generic; | ||
30 | using System.IO; | 31 | using System.IO; |
32 | using libsecondlife; | ||
31 | using OpenSim.Framework; | 33 | using OpenSim.Framework; |
32 | using OpenSim.Framework.Console; | 34 | using OpenSim.Framework.Console; |
33 | using OpenSim.Framework.Servers; | 35 | using OpenSim.Framework.Servers; |
@@ -44,6 +46,7 @@ namespace OpenSim.Grid.UserServer | |||
44 | public UserLoginService m_loginService; | 46 | public UserLoginService m_loginService; |
45 | 47 | ||
46 | private LogBase m_console; | 48 | private LogBase m_console; |
49 | private LLUUID m_lastCreatedUser = LLUUID.Random(); | ||
47 | 50 | ||
48 | [STAThread] | 51 | [STAThread] |
49 | public static void Main(string[] args) | 52 | public static void Main(string[] args) |
@@ -123,7 +126,9 @@ namespace OpenSim.Grid.UserServer | |||
123 | 126 | ||
124 | tempMD5Passwd = Util.Md5Hash(Util.Md5Hash(tempMD5Passwd) + ":" + ""); | 127 | tempMD5Passwd = Util.Md5Hash(Util.Md5Hash(tempMD5Passwd) + ":" + ""); |
125 | 128 | ||
126 | m_userManager.AddUserProfile(tempfirstname, templastname, tempMD5Passwd, regX, regY); | 129 | LLUUID userID = m_userManager.AddUserProfile(tempfirstname, templastname, tempMD5Passwd, regX, regY); |
130 | RestObjectPoster.BeginPostObject<LLUUID>(m_userManager._config.InventoryUrl + "CreateInventory/", userID); | ||
131 | m_lastCreatedUser = userID; | ||
127 | break; | 132 | break; |
128 | } | 133 | } |
129 | } | 134 | } |
@@ -145,9 +150,21 @@ namespace OpenSim.Grid.UserServer | |||
145 | m_console.Close(); | 150 | m_console.Close(); |
146 | Environment.Exit(0); | 151 | Environment.Exit(0); |
147 | break; | 152 | break; |
153 | |||
154 | case "test-inventory": | ||
155 | // RestObjectPosterResponse<List<InventoryFolderBase>> requester = new RestObjectPosterResponse<List<InventoryFolderBase>>(); | ||
156 | // requester.ReturnResponseVal = TestResponse; | ||
157 | // requester.BeginPostObject<LLUUID>(m_userManager._config.InventoryUrl + "RootFolders/", m_lastCreatedUser); | ||
158 | List<InventoryFolderBase> folders = SyncRestObjectPoster.BeginPostObject<LLUUID, List<InventoryFolderBase>>(m_userManager._config.InventoryUrl + "RootFolders/", m_lastCreatedUser); | ||
159 | break; | ||
148 | } | 160 | } |
149 | } | 161 | } |
150 | 162 | ||
163 | public void TestResponse(List<InventoryFolderBase> resp) | ||
164 | { | ||
165 | System.Console.WriteLine("response got"); | ||
166 | } | ||
167 | |||
151 | /*private void ConfigDB(IGenericConfig configData) | 168 | /*private void ConfigDB(IGenericConfig configData) |
152 | { | 169 | { |
153 | try | 170 | try |
diff --git a/OpenSim/Grid/UserServer/UserLoginService.cs b/OpenSim/Grid/UserServer/UserLoginService.cs index 0af5790..d3164ad 100644 --- a/OpenSim/Grid/UserServer/UserLoginService.cs +++ b/OpenSim/Grid/UserServer/UserLoginService.cs | |||
@@ -28,12 +28,16 @@ | |||
28 | 28 | ||
29 | using System; | 29 | using System; |
30 | using System.Collections; | 30 | using System.Collections; |
31 | using System.Collections.Generic; | ||
31 | using System.Net; | 32 | using System.Net; |
32 | using Nwc.XmlRpc; | 33 | using Nwc.XmlRpc; |
34 | using libsecondlife; | ||
33 | using OpenSim.Framework; | 35 | using OpenSim.Framework; |
34 | using OpenSim.Framework.Console; | 36 | using OpenSim.Framework.Console; |
37 | using OpenSim.Framework.Servers; | ||
35 | using OpenSim.Framework.Data; | 38 | using OpenSim.Framework.Data; |
36 | using OpenSim.Framework.UserManagement; | 39 | using OpenSim.Framework.UserManagement; |
40 | using InventoryFolder = OpenSim.Framework.InventoryFolder; | ||
37 | 41 | ||
38 | namespace OpenSim.Grid.UserServer | 42 | namespace OpenSim.Grid.UserServer |
39 | { | 43 | { |
@@ -189,5 +193,51 @@ namespace OpenSim.Grid.UserServer | |||
189 | 193 | ||
190 | } | 194 | } |
191 | } | 195 | } |
196 | |||
197 | protected override InventoryData CreateInventoryData(LLUUID userID) | ||
198 | { | ||
199 | List<InventoryFolderBase> folders = SyncRestObjectPoster.BeginPostObject<LLUUID, List<InventoryFolderBase>>(m_config.InventoryUrl + "RootFolders/", userID); | ||
200 | if (folders.Count > 0) | ||
201 | { | ||
202 | LLUUID rootID = LLUUID.Zero; | ||
203 | ArrayList AgentInventoryArray = new ArrayList(); | ||
204 | Hashtable TempHash; | ||
205 | foreach (InventoryFolderBase InvFolder in folders) | ||
206 | { | ||
207 | if (InvFolder.parentID == LLUUID.Zero) | ||
208 | { | ||
209 | rootID = InvFolder.folderID; | ||
210 | } | ||
211 | TempHash = new Hashtable(); | ||
212 | TempHash["name"] = InvFolder.name; | ||
213 | TempHash["parent_id"] = InvFolder.parentID.ToStringHyphenated(); | ||
214 | TempHash["version"] = (Int32)InvFolder.version; | ||
215 | TempHash["type_default"] = (Int32)InvFolder.type; | ||
216 | TempHash["folder_id"] = InvFolder.folderID.ToStringHyphenated(); | ||
217 | AgentInventoryArray.Add(TempHash); | ||
218 | } | ||
219 | return new InventoryData(AgentInventoryArray, rootID); | ||
220 | } | ||
221 | else | ||
222 | { | ||
223 | AgentInventory userInventory = new AgentInventory(); | ||
224 | userInventory.CreateRootFolder(userID, false); | ||
225 | |||
226 | ArrayList AgentInventoryArray = new ArrayList(); | ||
227 | Hashtable TempHash; | ||
228 | foreach (InventoryFolder InvFolder in userInventory.InventoryFolders.Values) | ||
229 | { | ||
230 | TempHash = new Hashtable(); | ||
231 | TempHash["name"] = InvFolder.FolderName; | ||
232 | TempHash["parent_id"] = InvFolder.ParentID.ToStringHyphenated(); | ||
233 | TempHash["version"] = (Int32)InvFolder.Version; | ||
234 | TempHash["type_default"] = (Int32)InvFolder.DefaultType; | ||
235 | TempHash["folder_id"] = InvFolder.FolderID.ToStringHyphenated(); | ||
236 | AgentInventoryArray.Add(TempHash); | ||
237 | } | ||
238 | |||
239 | return new InventoryData(AgentInventoryArray, userInventory.InventoryRoot.FolderID); | ||
240 | } | ||
241 | } | ||
192 | } | 242 | } |
193 | } \ No newline at end of file | 243 | } \ No newline at end of file |