aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/OpenSim/Grid/UserServer/Main.cs
diff options
context:
space:
mode:
Diffstat (limited to 'OpenSim/Grid/UserServer/Main.cs')
-rw-r--r--OpenSim/Grid/UserServer/Main.cs145
1 files changed, 72 insertions, 73 deletions
diff --git a/OpenSim/Grid/UserServer/Main.cs b/OpenSim/Grid/UserServer/Main.cs
index 25e1585..0534e3b 100644
--- a/OpenSim/Grid/UserServer/Main.cs
+++ b/OpenSim/Grid/UserServer/Main.cs
@@ -48,61 +48,12 @@ namespace OpenSim.Grid.UserServer
48 private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); 48 private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
49 49
50 private UserConfig Cfg; 50 private UserConfig Cfg;
51 private LLUUID m_lastCreatedUser = LLUUID.Random(); 51
52
53 public UserLoginService m_loginService;
54 public MessageServersConnector m_messagesService;
55 public UserManager m_userManager; 52 public UserManager m_userManager;
53 public UserLoginService m_loginService;
54 public MessageServersConnector m_messagesService;
56 55
57 private OpenUser_Main() 56 private LLUUID m_lastCreatedUser = LLUUID.Random();
58 {
59 m_console = new ConsoleBase("OpenUser", this);
60 MainConsole.Instance = m_console;
61 }
62
63 #region conscmd_callback Members
64
65 public override void RunCmd(string cmd, string[] cmdparams)
66 {
67 base.RunCmd(cmd, cmdparams);
68
69 switch (cmd)
70 {
71 case "help":
72 m_console.Notice("create user - create a new user");
73 m_console.Notice("stats - statistical information for this server");
74 m_console.Notice("shutdown - shutdown the grid (USE CAUTION!)");
75 break;
76
77 case "create":
78 do_create(cmdparams[0]);
79 break;
80
81 case "shutdown":
82 m_loginService.OnUserLoggedInAtLocation -= NotifyMessageServersUserLoggedInToLocation;
83 m_console.Close();
84 Environment.Exit(0);
85 break;
86
87 case "stats":
88 m_console.Notice(StatsManager.UserStats.Report());
89 break;
90
91 case "test-inventory":
92 // RestObjectPosterResponse<List<InventoryFolderBase>> requester = new RestObjectPosterResponse<List<InventoryFolderBase>>();
93 // requester.ReturnResponseVal = TestResponse;
94 // requester.BeginPostObject<LLUUID>(m_userManager._config.InventoryUrl + "RootFolders/", m_lastCreatedUser);
95 SynchronousRestObjectPoster.BeginPostObject<LLUUID, List<InventoryFolderBase>>("POST",
96 m_userManager.
97 _config.
98 InventoryUrl +
99 "RootFolders/",
100 m_lastCreatedUser);
101 break;
102 }
103 }
104
105 #endregion
106 57
107 [STAThread] 58 [STAThread]
108 public static void Main(string[] args) 59 public static void Main(string[] args)
@@ -117,6 +68,12 @@ namespace OpenSim.Grid.UserServer
117 userserver.Work(); 68 userserver.Work();
118 } 69 }
119 70
71 private OpenUser_Main()
72 {
73 m_console = new ConsoleBase("OpenUser", this);
74 MainConsole.Instance = m_console;
75 }
76
120 private void Work() 77 private void Work()
121 { 78 {
122 m_console.Notice("Enter help for a list of commands\n"); 79 m_console.Notice("Enter help for a list of commands\n");
@@ -130,16 +87,16 @@ namespace OpenSim.Grid.UserServer
130 public void Startup() 87 public void Startup()
131 { 88 {
132 Cfg = new UserConfig("USER SERVER", (Path.Combine(Util.configDir(), "UserServer_Config.xml"))); 89 Cfg = new UserConfig("USER SERVER", (Path.Combine(Util.configDir(), "UserServer_Config.xml")));
133 90
134 StatsManager.StartCollectingUserStats(); 91 StatsManager.StartCollectingUserStats();
135 92
136 m_log.Info("[REGION]: Establishing data connection"); 93 m_log.Info("[REGION]: Establishing data connection");
137 m_userManager = new UserManager(); 94 m_userManager = new UserManager();
138 m_userManager._config = Cfg; 95 m_userManager._config = Cfg;
139 m_userManager.AddPlugin(Cfg.DatabaseProvider); 96 m_userManager.AddPlugin(Cfg.DatabaseProvider);
140 97
141 m_loginService = new UserLoginService( 98 m_loginService = new UserLoginService(
142 m_userManager, new LibraryRootFolder(), Cfg, Cfg.DefaultStartupMsg); 99 m_userManager, new LibraryRootFolder(), Cfg, Cfg.DefaultStartupMsg);
143 100
144 m_messagesService = new MessageServersConnector(); 101 m_messagesService = new MessageServersConnector();
145 102
@@ -147,7 +104,7 @@ namespace OpenSim.Grid.UserServer
147 m_userManager.OnLogOffUser += NotifyMessageServersUserLoggOff; 104 m_userManager.OnLogOffUser += NotifyMessageServersUserLoggOff;
148 105
149 m_log.Info("[REGION]: Starting HTTP process"); 106 m_log.Info("[REGION]: Starting HTTP process");
150 107
151 m_httpServer = new BaseHttpServer(Cfg.HttpPort); 108 m_httpServer = new BaseHttpServer(Cfg.HttpPort);
152 AddHttpHandlers(); 109 AddHttpHandlers();
153 m_httpServer.Start(); 110 m_httpServer.Start();
@@ -160,7 +117,7 @@ namespace OpenSim.Grid.UserServer
160 m_httpServer.AddXmlRPCHandler("login_to_simulator", m_loginService.XmlRpcLoginMethod); 117 m_httpServer.AddXmlRPCHandler("login_to_simulator", m_loginService.XmlRpcLoginMethod);
161 118
162 m_httpServer.AddHTTPHandler("login", m_loginService.ProcessHTMLLogin); 119 m_httpServer.AddHTTPHandler("login", m_loginService.ProcessHTMLLogin);
163 120
164 m_httpServer.SetLLSDHandler(m_loginService.LLSDLoginMethod); 121 m_httpServer.SetLLSDHandler(m_loginService.LLSDLoginMethod);
165 122
166 m_httpServer.AddXmlRPCHandler("get_user_by_name", m_userManager.XmlRPCGetUserMethodName); 123 m_httpServer.AddXmlRPCHandler("get_user_by_name", m_userManager.XmlRPCGetUserMethodName);
@@ -171,7 +128,7 @@ namespace OpenSim.Grid.UserServer
171 m_httpServer.AddXmlRPCHandler("update_user_friend_perms", m_userManager.XmlRpcResponseXmlRPCUpdateUserFriendPerms); 128 m_httpServer.AddXmlRPCHandler("update_user_friend_perms", m_userManager.XmlRpcResponseXmlRPCUpdateUserFriendPerms);
172 m_httpServer.AddXmlRPCHandler("get_user_friend_list", m_userManager.XmlRpcResponseXmlRPCGetUserFriendList); 129 m_httpServer.AddXmlRPCHandler("get_user_friend_list", m_userManager.XmlRpcResponseXmlRPCGetUserFriendList);
173 m_httpServer.AddXmlRPCHandler("logout_of_simulator", m_userManager.XmlRPCLogOffUserMethodUUID); 130 m_httpServer.AddXmlRPCHandler("logout_of_simulator", m_userManager.XmlRPCLogOffUserMethodUUID);
174 131
175 // Message Server ---> User Server 132 // Message Server ---> User Server
176 m_httpServer.AddXmlRPCHandler("register_messageserver", m_messagesService.XmlRPCRegisterMessageServer); 133 m_httpServer.AddXmlRPCHandler("register_messageserver", m_messagesService.XmlRPCRegisterMessageServer);
177 m_httpServer.AddXmlRPCHandler("agent_change_region", m_messagesService.XmlRPCUserMovedtoRegion); 134 m_httpServer.AddXmlRPCHandler("agent_change_region", m_messagesService.XmlRPCUserMovedtoRegion);
@@ -206,17 +163,17 @@ namespace OpenSim.Grid.UserServer
206 { 163 {
207 m_log.ErrorFormat( 164 m_log.ErrorFormat(
208 "[USERS]: A user with the name {0} {1} already exists!", tempfirstname, templastname); 165 "[USERS]: A user with the name {0} {1} already exists!", tempfirstname, templastname);
209 166
210 break; 167 break;
211 } 168 }
212 169
213 tempMD5Passwd = Util.Md5Hash(Util.Md5Hash(tempMD5Passwd) + ":" + String.Empty); 170 tempMD5Passwd = Util.Md5Hash(Util.Md5Hash(tempMD5Passwd) + ":" + String.Empty);
214 171
215 LLUUID userID = new LLUUID(); 172 LLUUID userID = new LLUUID();
216 try 173 try
217 { 174 {
218 userID = m_userManager.AddUserProfile(tempfirstname, templastname, tempMD5Passwd, regX, regY); 175 userID = m_userManager.AddUserProfile(tempfirstname, templastname, tempMD5Passwd, regX, regY);
219 } 176 }
220 catch (Exception ex) 177 catch (Exception ex)
221 { 178 {
222 m_log.ErrorFormat("[USERS]: Error creating user: {0}", ex.ToString()); 179 m_log.ErrorFormat("[USERS]: Error creating user: {0}", ex.ToString());
@@ -224,35 +181,76 @@ namespace OpenSim.Grid.UserServer
224 181
225 try 182 try
226 { 183 {
227 bool created 184 bool created
228 = SynchronousRestObjectPoster.BeginPostObject<Guid, bool>( 185 = SynchronousRestObjectPoster.BeginPostObject<Guid, bool>(
229 "POST", m_userManager._config.InventoryUrl + "CreateInventory/", userID.UUID); 186 "POST", m_userManager._config.InventoryUrl + "CreateInventory/", userID.UUID);
230 187
231 if (!created) 188 if (!created)
232 { 189 {
233 throw new Exception( 190 throw new Exception(
234 String.Format( 191 String.Format(
235 "The inventory creation request for user {0} did not succeed." 192 "The inventory creation request for user {0} did not succeed."
236 + " Please contact your inventory service provider for more information.", 193 + " Please contact your inventory service provider for more information.",
237 userID)); 194 userID));
238 } 195 }
196
239 } 197 }
240 catch (WebException e) 198 catch (WebException e)
241 { 199 {
242 m_log.ErrorFormat( 200 m_log.ErrorFormat(
243 "[USERS]: Could not contact the inventory service at {0} to create an inventory for {1}", 201 "[USERS]: Could not contact the inventory service at {0} to create an inventory for {1}",
244 m_userManager._config.InventoryUrl + "CreateInventory/", userID.UUID); 202 m_userManager._config.InventoryUrl + "CreateInventory/", userID.UUID);
245 } 203 }
246 catch (Exception e) 204 catch (Exception e)
247 { 205 {
248 m_log.ErrorFormat("[USERS]: Error creating inventory for user: {0}", e); 206 m_log.ErrorFormat("[USERS]: Error creating inventory for user: {0}", e);
249 } 207 }
250 208
251 m_lastCreatedUser = userID; 209 m_lastCreatedUser = userID;
252 break; 210 break;
253 } 211 }
254 } 212 }
255 213
214 public override void RunCmd(string cmd, string[] cmdparams)
215 {
216 base.RunCmd(cmd, cmdparams);
217
218 switch (cmd)
219 {
220 case "help":
221 m_console.Notice("create user - create a new user");
222 m_console.Notice("stats - statistical information for this server");
223 m_console.Notice("shutdown - shutdown the grid (USE CAUTION!)");
224 break;
225
226 case "create":
227 do_create(cmdparams[0]);
228 break;
229
230 case "shutdown":
231 m_loginService.OnUserLoggedInAtLocation -= NotifyMessageServersUserLoggedInToLocation;
232 m_console.Close();
233 Environment.Exit(0);
234 break;
235
236 case "stats":
237 m_console.Notice(StatsManager.UserStats.Report());
238 break;
239
240 case "test-inventory":
241 // RestObjectPosterResponse<List<InventoryFolderBase>> requester = new RestObjectPosterResponse<List<InventoryFolderBase>>();
242 // requester.ReturnResponseVal = TestResponse;
243 // requester.BeginPostObject<LLUUID>(m_userManager._config.InventoryUrl + "RootFolders/", m_lastCreatedUser);
244 SynchronousRestObjectPoster.BeginPostObject<LLUUID, List<InventoryFolderBase>>("POST",
245 m_userManager.
246 _config.
247 InventoryUrl +
248 "RootFolders/",
249 m_lastCreatedUser);
250 break;
251 }
252 }
253
256 public void TestResponse(List<InventoryFolderBase> resp) 254 public void TestResponse(List<InventoryFolderBase> resp)
257 { 255 {
258 m_console.Notice("response got"); 256 m_console.Notice("response got");
@@ -264,11 +262,12 @@ namespace OpenSim.Grid.UserServer
264 } 262 }
265 263
266 public void NotifyMessageServersUserLoggedInToLocation(LLUUID agentID, LLUUID sessionID, LLUUID RegionID, 264 public void NotifyMessageServersUserLoggedInToLocation(LLUUID agentID, LLUUID sessionID, LLUUID RegionID,
267 ulong regionhandle, float positionX, float positionY, 265 ulong regionhandle, float positionX, float positionY,
268 float positionZ, string firstname, string lastname) 266 float positionZ, string firstname, string lastname)
269 { 267 {
270 m_messagesService.TellMessageServersAboutUser(agentID, sessionID, RegionID, regionhandle, positionX, 268
271 positionY, positionZ, firstname, lastname); 269 m_messagesService.TellMessageServersAboutUser( agentID, sessionID, RegionID, regionhandle, positionX,
270 positionY, positionZ, firstname, lastname);
272 } 271 }
273 } 272 }
274} \ No newline at end of file 273}