diff options
Diffstat (limited to 'OpenSim/ApplicationPlugins/RemoteController/RemoteAdminPlugin.cs')
-rw-r--r-- | OpenSim/ApplicationPlugins/RemoteController/RemoteAdminPlugin.cs | 498 |
1 files changed, 250 insertions, 248 deletions
diff --git a/OpenSim/ApplicationPlugins/RemoteController/RemoteAdminPlugin.cs b/OpenSim/ApplicationPlugins/RemoteController/RemoteAdminPlugin.cs index 87eae1e..0c1e3ca 100644 --- a/OpenSim/ApplicationPlugins/RemoteController/RemoteAdminPlugin.cs +++ b/OpenSim/ApplicationPlugins/RemoteController/RemoteAdminPlugin.cs | |||
@@ -41,7 +41,7 @@ using OpenMetaverse; | |||
41 | using OpenSim; | 41 | using OpenSim; |
42 | using OpenSim.Framework; | 42 | using OpenSim.Framework; |
43 | using OpenSim.Framework.Communications; | 43 | using OpenSim.Framework.Communications; |
44 | using OpenSim.Framework.Communications.Cache; | 44 | |
45 | using OpenSim.Framework.Console; | 45 | using OpenSim.Framework.Console; |
46 | using OpenSim.Framework.Servers; | 46 | using OpenSim.Framework.Servers; |
47 | using OpenSim.Framework.Servers.HttpServer; | 47 | using OpenSim.Framework.Servers.HttpServer; |
@@ -49,6 +49,8 @@ using OpenSim.Region.CoreModules.World.Terrain; | |||
49 | using OpenSim.Region.Framework.Interfaces; | 49 | using OpenSim.Region.Framework.Interfaces; |
50 | using OpenSim.Region.Framework.Scenes; | 50 | using OpenSim.Region.Framework.Scenes; |
51 | using OpenSim.Services.Interfaces; | 51 | using OpenSim.Services.Interfaces; |
52 | using PresenceInfo = OpenSim.Services.Interfaces.PresenceInfo; | ||
53 | using GridRegion = OpenSim.Services.Interfaces.GridRegion; | ||
52 | 54 | ||
53 | namespace OpenSim.ApplicationPlugins.RemoteController | 55 | namespace OpenSim.ApplicationPlugins.RemoteController |
54 | { | 56 | { |
@@ -700,39 +702,8 @@ namespace OpenSim.ApplicationPlugins.RemoteController | |||
700 | { | 702 | { |
701 | // ok, client wants us to use an explicit UUID | 703 | // ok, client wants us to use an explicit UUID |
702 | // regardless of what the avatar name provided | 704 | // regardless of what the avatar name provided |
703 | userID = new UUID((string) requestData["region_master_uuid"]); | 705 | userID = new UUID((string) requestData["estate_owner_uuid"]); |
704 | } | 706 | } |
705 | else | ||
706 | { | ||
707 | if (masterFirst != String.Empty && masterLast != String.Empty) // User requests a master avatar | ||
708 | { | ||
709 | // no client supplied UUID: look it up... | ||
710 | CachedUserInfo userInfo | ||
711 | = m_app.CommunicationsManager.UserProfileCacheService.GetUserDetails( | ||
712 | masterFirst, masterLast); | ||
713 | |||
714 | if (null == userInfo) | ||
715 | { | ||
716 | m_log.InfoFormat("master avatar does not exist, creating it"); | ||
717 | // ...or create new user | ||
718 | userID = m_app.CommunicationsManager.UserAdminService.AddUser( | ||
719 | masterFirst, masterLast, masterPassword, "", region.RegionLocX, region.RegionLocY); | ||
720 | |||
721 | if (userID == UUID.Zero) | ||
722 | throw new Exception(String.Format("failed to create new user {0} {1}", | ||
723 | masterFirst, masterLast)); | ||
724 | } | ||
725 | else | ||
726 | { | ||
727 | userID = userInfo.UserProfile.ID; | ||
728 | } | ||
729 | } | ||
730 | } | ||
731 | |||
732 | region.MasterAvatarFirstName = masterFirst; | ||
733 | region.MasterAvatarLastName = masterLast; | ||
734 | region.MasterAvatarSandboxPassword = masterPassword; | ||
735 | region.MasterAvatarAssignedUUID = userID; | ||
736 | 707 | ||
737 | bool persist = Convert.ToBoolean((string) requestData["persist"]); | 708 | bool persist = Convert.ToBoolean((string) requestData["persist"]); |
738 | if (persist) | 709 | if (persist) |
@@ -777,6 +748,7 @@ namespace OpenSim.ApplicationPlugins.RemoteController | |||
777 | // If an access specification was provided, use it. | 748 | // If an access specification was provided, use it. |
778 | // Otherwise accept the default. | 749 | // Otherwise accept the default. |
779 | newscene.RegionInfo.EstateSettings.PublicAccess = getBoolean(requestData, "public", m_publicAccess); | 750 | newscene.RegionInfo.EstateSettings.PublicAccess = getBoolean(requestData, "public", m_publicAccess); |
751 | newscene.RegionInfo.EstateSettings.EstateOwner = userID; | ||
780 | if (persist) | 752 | if (persist) |
781 | newscene.RegionInfo.EstateSettings.Save(); | 753 | newscene.RegionInfo.EstateSettings.Save(); |
782 | 754 | ||
@@ -1150,30 +1122,37 @@ namespace OpenSim.ApplicationPlugins.RemoteController | |||
1150 | if (requestData.Contains("user_email")) | 1122 | if (requestData.Contains("user_email")) |
1151 | email = (string)requestData["user_email"]; | 1123 | email = (string)requestData["user_email"]; |
1152 | 1124 | ||
1153 | CachedUserInfo userInfo = | 1125 | UUID scopeID = m_app.SceneManager.CurrentOrFirstScene.RegionInfo.ScopeID; |
1154 | m_app.CommunicationsManager.UserProfileCacheService.GetUserDetails(firstname, lastname); | ||
1155 | 1126 | ||
1156 | if (null != userInfo) | 1127 | UserAccount account = m_app.SceneManager.CurrentOrFirstScene.UserAccountService.GetUserAccount(scopeID, firstname, lastname); |
1157 | throw new Exception(String.Format("Avatar {0} {1} already exists", firstname, lastname)); | ||
1158 | 1128 | ||
1159 | UUID userID = | 1129 | if (null != account) |
1160 | m_app.CommunicationsManager.UserAdminService.AddUser(firstname, lastname, | 1130 | throw new Exception(String.Format("Account {0} {1} already exists", firstname, lastname)); |
1161 | passwd, email, regX, regY); | ||
1162 | 1131 | ||
1163 | if (userID == UUID.Zero) | 1132 | account = new UserAccount(scopeID, firstname, lastname, email); |
1133 | // REFACTORING PROBLEM: no method to set the password! | ||
1134 | |||
1135 | bool success = m_app.SceneManager.CurrentOrFirstScene.UserAccountService.StoreUserAccount(account); | ||
1136 | |||
1137 | if (!success) | ||
1164 | throw new Exception(String.Format("failed to create new user {0} {1}", | 1138 | throw new Exception(String.Format("failed to create new user {0} {1}", |
1165 | firstname, lastname)); | 1139 | firstname, lastname)); |
1166 | 1140 | ||
1141 | GridRegion home = m_app.SceneManager.CurrentOrFirstScene.GridService.GetRegionByPosition(scopeID, | ||
1142 | (int)(regX * Constants.RegionSize), (int)(regY * Constants.RegionSize)); | ||
1143 | if (home == null) | ||
1144 | m_log.WarnFormat("[RADMIN]: Unable to set home region for newly created user account {0} {1}", firstname, lastname); | ||
1145 | |||
1167 | // Establish the avatar's initial appearance | 1146 | // Establish the avatar's initial appearance |
1168 | 1147 | ||
1169 | updateUserAppearance(responseData, requestData, userID); | 1148 | updateUserAppearance(responseData, requestData, account.PrincipalID); |
1170 | 1149 | ||
1171 | responseData["success"] = true; | 1150 | responseData["success"] = true; |
1172 | responseData["avatar_uuid"] = userID.ToString(); | 1151 | responseData["avatar_uuid"] = account.PrincipalID.ToString(); |
1173 | 1152 | ||
1174 | response.Value = responseData; | 1153 | response.Value = responseData; |
1175 | 1154 | ||
1176 | m_log.InfoFormat("[RADMIN]: CreateUser: User {0} {1} created, UUID {2}", firstname, lastname, userID); | 1155 | m_log.InfoFormat("[RADMIN]: CreateUser: User {0} {1} created, UUID {2}", firstname, lastname, account.PrincipalID); |
1177 | } | 1156 | } |
1178 | catch (Exception e) | 1157 | catch (Exception e) |
1179 | { | 1158 | { |
@@ -1242,21 +1221,27 @@ namespace OpenSim.ApplicationPlugins.RemoteController | |||
1242 | string firstname = (string) requestData["user_firstname"]; | 1221 | string firstname = (string) requestData["user_firstname"]; |
1243 | string lastname = (string) requestData["user_lastname"]; | 1222 | string lastname = (string) requestData["user_lastname"]; |
1244 | 1223 | ||
1245 | CachedUserInfo userInfo | ||
1246 | = m_app.CommunicationsManager.UserProfileCacheService.GetUserDetails(firstname, lastname); | ||
1247 | |||
1248 | responseData["user_firstname"] = firstname; | 1224 | responseData["user_firstname"] = firstname; |
1249 | responseData["user_lastname"] = lastname; | 1225 | responseData["user_lastname"] = lastname; |
1250 | 1226 | ||
1251 | if (null == userInfo) | 1227 | UUID scopeID = m_app.SceneManager.CurrentOrFirstScene.RegionInfo.ScopeID; |
1228 | |||
1229 | UserAccount account = m_app.SceneManager.CurrentOrFirstScene.UserAccountService.GetUserAccount(scopeID, firstname, lastname); | ||
1230 | |||
1231 | if (null == account) | ||
1252 | { | 1232 | { |
1253 | responseData["success"] = false; | 1233 | responseData["success"] = false; |
1254 | responseData["lastlogin"] = 0; | 1234 | responseData["lastlogin"] = 0; |
1255 | } | 1235 | } |
1256 | else | 1236 | else |
1257 | { | 1237 | { |
1238 | PresenceInfo[] pinfos = m_app.SceneManager.CurrentOrFirstScene.PresenceService.GetAgents(new string[] { account.PrincipalID.ToString() }); | ||
1239 | if (pinfos != null && pinfos.Length >= 1) | ||
1240 | responseData["lastlogin"] = pinfos[0].Login; | ||
1241 | else | ||
1242 | responseData["lastlogin"] = 0; | ||
1243 | |||
1258 | responseData["success"] = true; | 1244 | responseData["success"] = true; |
1259 | responseData["lastlogin"] = userInfo.UserProfile.LastLogin; | ||
1260 | } | 1245 | } |
1261 | 1246 | ||
1262 | response.Value = responseData; | 1247 | response.Value = responseData; |
@@ -1318,117 +1303,118 @@ namespace OpenSim.ApplicationPlugins.RemoteController | |||
1318 | public XmlRpcResponse XmlRpcUpdateUserAccountMethod(XmlRpcRequest request, IPEndPoint remoteClient) | 1303 | public XmlRpcResponse XmlRpcUpdateUserAccountMethod(XmlRpcRequest request, IPEndPoint remoteClient) |
1319 | { | 1304 | { |
1320 | m_log.Info("[RADMIN]: UpdateUserAccount: new request"); | 1305 | m_log.Info("[RADMIN]: UpdateUserAccount: new request"); |
1306 | m_log.Warn("[RADMIN]: This method needs update for 0.7"); | ||
1321 | XmlRpcResponse response = new XmlRpcResponse(); | 1307 | XmlRpcResponse response = new XmlRpcResponse(); |
1322 | Hashtable responseData = new Hashtable(); | 1308 | Hashtable responseData = new Hashtable(); |
1323 | 1309 | ||
1324 | lock (rslock) | 1310 | //lock (rslock) |
1325 | { | 1311 | //{ |
1326 | try | 1312 | // try |
1327 | { | 1313 | // { |
1328 | Hashtable requestData = (Hashtable) request.Params[0]; | 1314 | // Hashtable requestData = (Hashtable) request.Params[0]; |
1329 | 1315 | ||
1330 | // check completeness | 1316 | // // check completeness |
1331 | checkStringParameters(request, new string[] { | 1317 | // checkStringParameters(request, new string[] { |
1332 | "password", "user_firstname", | 1318 | // "password", "user_firstname", |
1333 | "user_lastname"}); | 1319 | // "user_lastname"}); |
1334 | 1320 | ||
1335 | // check password | 1321 | // // check password |
1336 | if (!String.IsNullOrEmpty(m_requiredPassword) && | 1322 | // if (!String.IsNullOrEmpty(m_requiredPassword) && |
1337 | (string) requestData["password"] != m_requiredPassword) throw new Exception("wrong password"); | 1323 | // (string) requestData["password"] != m_requiredPassword) throw new Exception("wrong password"); |
1338 | 1324 | ||
1339 | // do the job | 1325 | // // do the job |
1340 | string firstname = (string) requestData["user_firstname"]; | 1326 | // string firstname = (string) requestData["user_firstname"]; |
1341 | string lastname = (string) requestData["user_lastname"]; | 1327 | // string lastname = (string) requestData["user_lastname"]; |
1342 | 1328 | ||
1343 | string passwd = String.Empty; | 1329 | // string passwd = String.Empty; |
1344 | uint? regX = null; | 1330 | // uint? regX = null; |
1345 | uint? regY = null; | 1331 | // uint? regY = null; |
1346 | uint? ulaX = null; | 1332 | // uint? ulaX = null; |
1347 | uint? ulaY = null; | 1333 | // uint? ulaY = null; |
1348 | uint? ulaZ = null; | 1334 | // uint? ulaZ = null; |
1349 | uint? usaX = null; | 1335 | // uint? usaX = null; |
1350 | uint? usaY = null; | 1336 | // uint? usaY = null; |
1351 | uint? usaZ = null; | 1337 | // uint? usaZ = null; |
1352 | string aboutFirstLive = String.Empty; | 1338 | // string aboutFirstLive = String.Empty; |
1353 | string aboutAvatar = String.Empty; | 1339 | // string aboutAvatar = String.Empty; |
1354 | 1340 | ||
1355 | if (requestData.ContainsKey("user_password")) passwd = (string) requestData["user_password"]; | 1341 | // if (requestData.ContainsKey("user_password")) passwd = (string) requestData["user_password"]; |
1356 | if (requestData.ContainsKey("start_region_x")) | 1342 | // if (requestData.ContainsKey("start_region_x")) |
1357 | regX = Convert.ToUInt32((Int32) requestData["start_region_x"]); | 1343 | // regX = Convert.ToUInt32((Int32) requestData["start_region_x"]); |
1358 | if (requestData.ContainsKey("start_region_y")) | 1344 | // if (requestData.ContainsKey("start_region_y")) |
1359 | regY = Convert.ToUInt32((Int32) requestData["start_region_y"]); | 1345 | // regY = Convert.ToUInt32((Int32) requestData["start_region_y"]); |
1360 | 1346 | ||
1361 | if (requestData.ContainsKey("start_lookat_x")) | 1347 | // if (requestData.ContainsKey("start_lookat_x")) |
1362 | ulaX = Convert.ToUInt32((Int32) requestData["start_lookat_x"]); | 1348 | // ulaX = Convert.ToUInt32((Int32) requestData["start_lookat_x"]); |
1363 | if (requestData.ContainsKey("start_lookat_y")) | 1349 | // if (requestData.ContainsKey("start_lookat_y")) |
1364 | ulaY = Convert.ToUInt32((Int32) requestData["start_lookat_y"]); | 1350 | // ulaY = Convert.ToUInt32((Int32) requestData["start_lookat_y"]); |
1365 | if (requestData.ContainsKey("start_lookat_z")) | 1351 | // if (requestData.ContainsKey("start_lookat_z")) |
1366 | ulaZ = Convert.ToUInt32((Int32) requestData["start_lookat_z"]); | 1352 | // ulaZ = Convert.ToUInt32((Int32) requestData["start_lookat_z"]); |
1367 | 1353 | ||
1368 | if (requestData.ContainsKey("start_standat_x")) | 1354 | // if (requestData.ContainsKey("start_standat_x")) |
1369 | usaX = Convert.ToUInt32((Int32) requestData["start_standat_x"]); | 1355 | // usaX = Convert.ToUInt32((Int32) requestData["start_standat_x"]); |
1370 | if (requestData.ContainsKey("start_standat_y")) | 1356 | // if (requestData.ContainsKey("start_standat_y")) |
1371 | usaY = Convert.ToUInt32((Int32) requestData["start_standat_y"]); | 1357 | // usaY = Convert.ToUInt32((Int32) requestData["start_standat_y"]); |
1372 | if (requestData.ContainsKey("start_standat_z")) | 1358 | // if (requestData.ContainsKey("start_standat_z")) |
1373 | usaZ = Convert.ToUInt32((Int32) requestData["start_standat_z"]); | 1359 | // usaZ = Convert.ToUInt32((Int32) requestData["start_standat_z"]); |
1374 | if (requestData.ContainsKey("about_real_world")) | 1360 | // if (requestData.ContainsKey("about_real_world")) |
1375 | aboutFirstLive = (string)requestData["about_real_world"]; | 1361 | // aboutFirstLive = (string)requestData["about_real_world"]; |
1376 | if (requestData.ContainsKey("about_virtual_world")) | 1362 | // if (requestData.ContainsKey("about_virtual_world")) |
1377 | aboutAvatar = (string)requestData["about_virtual_world"]; | 1363 | // aboutAvatar = (string)requestData["about_virtual_world"]; |
1378 | 1364 | ||
1379 | UserProfileData userProfile | 1365 | // UserProfileData userProfile |
1380 | = m_app.CommunicationsManager.UserService.GetUserProfile(firstname, lastname); | 1366 | // = m_app.CommunicationsManager.UserService.GetUserProfile(firstname, lastname); |
1381 | 1367 | ||
1382 | if (null == userProfile) | 1368 | // if (null == userProfile) |
1383 | throw new Exception(String.Format("avatar {0} {1} does not exist", firstname, lastname)); | 1369 | // throw new Exception(String.Format("avatar {0} {1} does not exist", firstname, lastname)); |
1384 | 1370 | ||
1385 | if (!String.IsNullOrEmpty(passwd)) | 1371 | // if (!String.IsNullOrEmpty(passwd)) |
1386 | { | 1372 | // { |
1387 | m_log.DebugFormat("[RADMIN]: UpdateUserAccount: updating password for avatar {0} {1}", firstname, lastname); | 1373 | // m_log.DebugFormat("[RADMIN]: UpdateUserAccount: updating password for avatar {0} {1}", firstname, lastname); |
1388 | string md5PasswdHash = Util.Md5Hash(Util.Md5Hash(passwd) + ":" + String.Empty); | 1374 | // string md5PasswdHash = Util.Md5Hash(Util.Md5Hash(passwd) + ":" + String.Empty); |
1389 | userProfile.PasswordHash = md5PasswdHash; | 1375 | // userProfile.PasswordHash = md5PasswdHash; |
1390 | } | 1376 | // } |
1391 | 1377 | ||
1392 | if (null != regX) userProfile.HomeRegionX = (uint) regX; | 1378 | // if (null != regX) userProfile.HomeRegionX = (uint) regX; |
1393 | if (null != regY) userProfile.HomeRegionY = (uint) regY; | 1379 | // if (null != regY) userProfile.HomeRegionY = (uint) regY; |
1394 | 1380 | ||
1395 | if (null != usaX) userProfile.HomeLocationX = (uint) usaX; | 1381 | // if (null != usaX) userProfile.HomeLocationX = (uint) usaX; |
1396 | if (null != usaY) userProfile.HomeLocationY = (uint) usaY; | 1382 | // if (null != usaY) userProfile.HomeLocationY = (uint) usaY; |
1397 | if (null != usaZ) userProfile.HomeLocationZ = (uint) usaZ; | 1383 | // if (null != usaZ) userProfile.HomeLocationZ = (uint) usaZ; |
1398 | 1384 | ||
1399 | if (null != ulaX) userProfile.HomeLookAtX = (uint) ulaX; | 1385 | // if (null != ulaX) userProfile.HomeLookAtX = (uint) ulaX; |
1400 | if (null != ulaY) userProfile.HomeLookAtY = (uint) ulaY; | 1386 | // if (null != ulaY) userProfile.HomeLookAtY = (uint) ulaY; |
1401 | if (null != ulaZ) userProfile.HomeLookAtZ = (uint) ulaZ; | 1387 | // if (null != ulaZ) userProfile.HomeLookAtZ = (uint) ulaZ; |
1402 | 1388 | ||
1403 | if (String.Empty != aboutFirstLive) userProfile.FirstLifeAboutText = aboutFirstLive; | 1389 | // if (String.Empty != aboutFirstLive) userProfile.FirstLifeAboutText = aboutFirstLive; |
1404 | if (String.Empty != aboutAvatar) userProfile.AboutText = aboutAvatar; | 1390 | // if (String.Empty != aboutAvatar) userProfile.AboutText = aboutAvatar; |
1405 | 1391 | ||
1406 | // User has been created. Now establish gender and appearance. | 1392 | // // User has been created. Now establish gender and appearance. |
1407 | 1393 | ||
1408 | updateUserAppearance(responseData, requestData, userProfile.ID); | 1394 | // updateUserAppearance(responseData, requestData, userProfile.ID); |
1409 | 1395 | ||
1410 | if (!m_app.CommunicationsManager.UserService.UpdateUserProfile(userProfile)) | 1396 | // if (!m_app.CommunicationsManager.UserService.UpdateUserProfile(userProfile)) |
1411 | throw new Exception("did not manage to update user profile"); | 1397 | // throw new Exception("did not manage to update user profile"); |
1412 | 1398 | ||
1413 | responseData["success"] = true; | 1399 | // responseData["success"] = true; |
1414 | 1400 | ||
1415 | response.Value = responseData; | 1401 | // response.Value = responseData; |
1416 | 1402 | ||
1417 | m_log.InfoFormat("[RADMIN]: UpdateUserAccount: account for user {0} {1} updated, UUID {2}", | 1403 | // m_log.InfoFormat("[RADMIN]: UpdateUserAccount: account for user {0} {1} updated, UUID {2}", |
1418 | firstname, lastname, | 1404 | // firstname, lastname, |
1419 | userProfile.ID); | 1405 | // userProfile.ID); |
1420 | } | 1406 | // } |
1421 | catch (Exception e) | 1407 | // catch (Exception e) |
1422 | { | 1408 | // { |
1423 | m_log.ErrorFormat("[RADMIN] UpdateUserAccount: failed: {0}", e.Message); | 1409 | // m_log.ErrorFormat("[RADMIN] UpdateUserAccount: failed: {0}", e.Message); |
1424 | m_log.DebugFormat("[RADMIN] UpdateUserAccount: failed: {0}", e.ToString()); | 1410 | // m_log.DebugFormat("[RADMIN] UpdateUserAccount: failed: {0}", e.ToString()); |
1425 | 1411 | ||
1426 | responseData["success"] = false; | 1412 | // responseData["success"] = false; |
1427 | responseData["error"] = e.Message; | 1413 | // responseData["error"] = e.Message; |
1428 | 1414 | ||
1429 | response.Value = responseData; | 1415 | // response.Value = responseData; |
1430 | } | 1416 | // } |
1431 | } | 1417 | //} |
1432 | 1418 | ||
1433 | m_log.Info("[RADMIN]: UpdateUserAccount: request complete"); | 1419 | m_log.Info("[RADMIN]: UpdateUserAccount: request complete"); |
1434 | return response; | 1420 | return response; |
@@ -1445,72 +1431,73 @@ namespace OpenSim.ApplicationPlugins.RemoteController | |||
1445 | private void updateUserAppearance(Hashtable responseData, Hashtable requestData, UUID userid) | 1431 | private void updateUserAppearance(Hashtable responseData, Hashtable requestData, UUID userid) |
1446 | { | 1432 | { |
1447 | m_log.DebugFormat("[RADMIN] updateUserAppearance"); | 1433 | m_log.DebugFormat("[RADMIN] updateUserAppearance"); |
1434 | m_log.Warn("[RADMIN]: This method needs update for 0.7"); | ||
1448 | 1435 | ||
1449 | string dmale = m_config.GetString("default_male", "Default Male"); | 1436 | //string dmale = m_config.GetString("default_male", "Default Male"); |
1450 | string dfemale = m_config.GetString("default_female", "Default Female"); | 1437 | //string dfemale = m_config.GetString("default_female", "Default Female"); |
1451 | string dneut = m_config.GetString("default_female", "Default Default"); | 1438 | //string dneut = m_config.GetString("default_female", "Default Default"); |
1452 | string model = String.Empty; | 1439 | string model = String.Empty; |
1453 | 1440 | ||
1454 | // Has a gender preference been supplied? | 1441 | //// Has a gender preference been supplied? |
1455 | 1442 | ||
1456 | if (requestData.Contains("gender")) | 1443 | //if (requestData.Contains("gender")) |
1457 | { | 1444 | //{ |
1458 | switch ((string)requestData["gender"]) | 1445 | // switch ((string)requestData["gender"]) |
1459 | { | 1446 | // { |
1460 | case "m" : | 1447 | // case "m" : |
1461 | model = dmale; | 1448 | // model = dmale; |
1462 | break; | 1449 | // break; |
1463 | case "f" : | 1450 | // case "f" : |
1464 | model = dfemale; | 1451 | // model = dfemale; |
1465 | break; | 1452 | // break; |
1466 | case "n" : | 1453 | // case "n" : |
1467 | default : | 1454 | // default : |
1468 | model = dneut; | 1455 | // model = dneut; |
1469 | break; | 1456 | // break; |
1470 | } | 1457 | // } |
1471 | } | 1458 | //} |
1472 | 1459 | ||
1473 | // Has an explicit model been specified? | 1460 | //// Has an explicit model been specified? |
1474 | 1461 | ||
1475 | if (requestData.Contains("model")) | 1462 | //if (requestData.Contains("model")) |
1476 | { | 1463 | //{ |
1477 | model = (string)requestData["model"]; | 1464 | // model = (string)requestData["model"]; |
1478 | } | 1465 | //} |
1479 | 1466 | ||
1480 | // No appearance attributes were set | 1467 | //// No appearance attributes were set |
1481 | 1468 | ||
1482 | if (model == String.Empty) | 1469 | //if (model == String.Empty) |
1483 | { | 1470 | //{ |
1484 | m_log.DebugFormat("[RADMIN] Appearance update not requested"); | 1471 | // m_log.DebugFormat("[RADMIN] Appearance update not requested"); |
1485 | return; | 1472 | // return; |
1486 | } | 1473 | //} |
1487 | 1474 | ||
1488 | m_log.DebugFormat("[RADMIN] Setting appearance for avatar {0}, using model {1}", userid, model); | 1475 | //m_log.DebugFormat("[RADMIN] Setting appearance for avatar {0}, using model {1}", userid, model); |
1489 | 1476 | ||
1490 | string[] nomens = model.Split(); | 1477 | //string[] nomens = model.Split(); |
1491 | if (nomens.Length != 2) | 1478 | //if (nomens.Length != 2) |
1492 | { | 1479 | //{ |
1493 | m_log.WarnFormat("[RADMIN] User appearance not set for {0}. Invalid model name : <{1}>", userid, model); | 1480 | // m_log.WarnFormat("[RADMIN] User appearance not set for {0}. Invalid model name : <{1}>", userid, model); |
1494 | // nomens = dmodel.Split(); | 1481 | // // nomens = dmodel.Split(); |
1495 | return; | 1482 | // return; |
1496 | } | 1483 | //} |
1497 | 1484 | ||
1498 | UserProfileData mprof = m_app.CommunicationsManager.UserService.GetUserProfile(nomens[0], nomens[1]); | 1485 | //UserProfileData mprof = m_app.CommunicationsManager.UserService.GetUserProfile(nomens[0], nomens[1]); |
1499 | 1486 | ||
1500 | // Is this the first time one of the default models has been used? Create it if that is the case | 1487 | //// Is this the first time one of the default models has been used? Create it if that is the case |
1501 | // otherwise default to male. | 1488 | //// otherwise default to male. |
1502 | 1489 | ||
1503 | if (mprof == null) | 1490 | //if (mprof == null) |
1504 | { | 1491 | //{ |
1505 | m_log.WarnFormat("[RADMIN] Requested model ({0}) not found. Appearance unchanged", model); | 1492 | // m_log.WarnFormat("[RADMIN] Requested model ({0}) not found. Appearance unchanged", model); |
1506 | return; | 1493 | // return; |
1507 | } | 1494 | //} |
1508 | 1495 | ||
1509 | // Set current user's appearance. This bit is easy. The appearance structure is populated with | 1496 | //// Set current user's appearance. This bit is easy. The appearance structure is populated with |
1510 | // actual asset ids, however to complete the magic we need to populate the inventory with the | 1497 | //// actual asset ids, however to complete the magic we need to populate the inventory with the |
1511 | // assets in question. | 1498 | //// assets in question. |
1512 | 1499 | ||
1513 | establishAppearance(userid, mprof.ID); | 1500 | //establishAppearance(userid, mprof.ID); |
1514 | 1501 | ||
1515 | m_log.DebugFormat("[RADMIN] Finished setting appearance for avatar {0}, using model {1}", | 1502 | m_log.DebugFormat("[RADMIN] Finished setting appearance for avatar {0}, using model {1}", |
1516 | userid, model); | 1503 | userid, model); |
@@ -1525,8 +1512,10 @@ namespace OpenSim.ApplicationPlugins.RemoteController | |||
1525 | private void establishAppearance(UUID dest, UUID srca) | 1512 | private void establishAppearance(UUID dest, UUID srca) |
1526 | { | 1513 | { |
1527 | m_log.DebugFormat("[RADMIN] Initializing inventory for {0} from {1}", dest, srca); | 1514 | m_log.DebugFormat("[RADMIN] Initializing inventory for {0} from {1}", dest, srca); |
1528 | 1515 | AvatarAppearance ava = null; | |
1529 | AvatarAppearance ava = m_app.CommunicationsManager.AvatarService.GetUserAppearance(srca); | 1516 | AvatarData avatar = m_app.SceneManager.CurrentOrFirstScene.AvatarService.GetAvatar(srca); |
1517 | if (avatar != null) | ||
1518 | ava = avatar.ToAvatarAppearance(srca); | ||
1530 | 1519 | ||
1531 | // If the model has no associated appearance we're done. | 1520 | // If the model has no associated appearance we're done. |
1532 | 1521 | ||
@@ -1619,7 +1608,8 @@ namespace OpenSim.ApplicationPlugins.RemoteController | |||
1619 | throw new Exception("Unable to load both inventories"); | 1608 | throw new Exception("Unable to load both inventories"); |
1620 | } | 1609 | } |
1621 | 1610 | ||
1622 | m_app.CommunicationsManager.AvatarService.UpdateUserAppearance(dest, ava); | 1611 | AvatarData adata = new AvatarData(ava); |
1612 | m_app.SceneManager.CurrentOrFirstScene.AvatarService.SetAvatar(dest, adata); | ||
1623 | } | 1613 | } |
1624 | catch (Exception e) | 1614 | catch (Exception e) |
1625 | { | 1615 | { |
@@ -1674,7 +1664,6 @@ namespace OpenSim.ApplicationPlugins.RemoteController | |||
1674 | uint regX = 1000; | 1664 | uint regX = 1000; |
1675 | uint regY = 1000; | 1665 | uint regY = 1000; |
1676 | string passwd = UUID.Random().ToString(); // No requirement to sign-in. | 1666 | string passwd = UUID.Random().ToString(); // No requirement to sign-in. |
1677 | CachedUserInfo UI; | ||
1678 | UUID ID = UUID.Zero; | 1667 | UUID ID = UUID.Zero; |
1679 | AvatarAppearance mava; | 1668 | AvatarAppearance mava; |
1680 | XmlNodeList avatars; | 1669 | XmlNodeList avatars; |
@@ -1693,7 +1682,7 @@ namespace OpenSim.ApplicationPlugins.RemoteController | |||
1693 | assets = doc.GetElementsByTagName("RequiredAsset"); | 1682 | assets = doc.GetElementsByTagName("RequiredAsset"); |
1694 | foreach (XmlNode asset in assets) | 1683 | foreach (XmlNode asset in assets) |
1695 | { | 1684 | { |
1696 | AssetBase rass = new AssetBase(UUID.Random(), GetStringAttribute(asset,"name",""), SByte.Parse(GetStringAttribute(asset,"type",""))); | 1685 | AssetBase rass = new AssetBase(UUID.Random(), GetStringAttribute(asset, "name", ""), SByte.Parse(GetStringAttribute(asset, "type", "")), UUID.Zero.ToString()); |
1697 | rass.Description = GetStringAttribute(asset,"desc",""); | 1686 | rass.Description = GetStringAttribute(asset,"desc",""); |
1698 | rass.Local = Boolean.Parse(GetStringAttribute(asset,"local","")); | 1687 | rass.Local = Boolean.Parse(GetStringAttribute(asset,"local","")); |
1699 | rass.Temporary = Boolean.Parse(GetStringAttribute(asset,"temporary","")); | 1688 | rass.Temporary = Boolean.Parse(GetStringAttribute(asset,"temporary","")); |
@@ -1722,20 +1711,27 @@ namespace OpenSim.ApplicationPlugins.RemoteController | |||
1722 | passwd = GetStringAttribute(avatar,"password",passwd); | 1711 | passwd = GetStringAttribute(avatar,"password",passwd); |
1723 | 1712 | ||
1724 | string[] nomens = name.Split(); | 1713 | string[] nomens = name.Split(); |
1725 | UI = m_app.CommunicationsManager.UserProfileCacheService.GetUserDetails(nomens[0], nomens[1]); | 1714 | UUID scopeID = m_app.SceneManager.CurrentOrFirstScene.RegionInfo.ScopeID; |
1726 | if (null == UI) | 1715 | UserAccount account = m_app.SceneManager.CurrentOrFirstScene.UserAccountService.GetUserAccount(scopeID, nomens[0], nomens[1]); |
1716 | if (null == account) | ||
1727 | { | 1717 | { |
1728 | ID = m_app.CommunicationsManager.UserAdminService.AddUser(nomens[0], nomens[1], | 1718 | account = new UserAccount(scopeID, nomens[0], nomens[1], email); |
1729 | passwd, email, regX, regY); | 1719 | bool success = m_app.SceneManager.CurrentOrFirstScene.UserAccountService.StoreUserAccount(account); |
1730 | if (ID == UUID.Zero) | 1720 | if (!success) |
1731 | { | 1721 | { |
1732 | m_log.ErrorFormat("[RADMIN] Avatar {0} {1} was not created", nomens[0], nomens[1]); | 1722 | m_log.ErrorFormat("[RADMIN] Avatar {0} {1} was not created", nomens[0], nomens[1]); |
1733 | return false; | 1723 | return false; |
1734 | } | 1724 | } |
1725 | // !!! REFACTORING PROBLEM: need to set the password | ||
1726 | |||
1727 | GridRegion home = m_app.SceneManager.CurrentOrFirstScene.GridService.GetRegionByPosition(scopeID, | ||
1728 | (int)(regX * Constants.RegionSize), (int)(regY * Constants.RegionSize)); | ||
1729 | if (home != null) | ||
1730 | m_app.SceneManager.CurrentOrFirstScene.PresenceService.SetHomeLocation(account.PrincipalID.ToString(), home.RegionID, new Vector3(128, 128, 0), new Vector3(0, 1, 0)); | ||
1735 | } | 1731 | } |
1736 | else | 1732 | else |
1737 | { | 1733 | { |
1738 | ID = UI.UserProfile.ID; | 1734 | ID = account.PrincipalID; |
1739 | } | 1735 | } |
1740 | 1736 | ||
1741 | m_log.DebugFormat("[RADMIN] User {0}[{1}] created or retrieved", name, ID); | 1737 | m_log.DebugFormat("[RADMIN] User {0}[{1}] created or retrieved", name, ID); |
@@ -1759,10 +1755,11 @@ namespace OpenSim.ApplicationPlugins.RemoteController | |||
1759 | iserv.GetUserInventory(ID, uic.callback); | 1755 | iserv.GetUserInventory(ID, uic.callback); |
1760 | 1756 | ||
1761 | // While the inventory is being fetched, setup for appearance processing | 1757 | // While the inventory is being fetched, setup for appearance processing |
1762 | if ((mava = m_app.CommunicationsManager.AvatarService.GetUserAppearance(ID)) == null) | 1758 | AvatarData adata = m_app.SceneManager.CurrentOrFirstScene.AvatarService.GetAvatar(ID); |
1763 | { | 1759 | if (adata != null) |
1760 | mava = adata.ToAvatarAppearance(ID); | ||
1761 | else | ||
1764 | mava = new AvatarAppearance(); | 1762 | mava = new AvatarAppearance(); |
1765 | } | ||
1766 | 1763 | ||
1767 | { | 1764 | { |
1768 | AvatarWearable[] wearables = mava.Wearables; | 1765 | AvatarWearable[] wearables = mava.Wearables; |
@@ -1897,7 +1894,8 @@ namespace OpenSim.ApplicationPlugins.RemoteController | |||
1897 | m_log.DebugFormat("[RADMIN] Outfit {0} load completed", oname); | 1894 | m_log.DebugFormat("[RADMIN] Outfit {0} load completed", oname); |
1898 | } // foreach outfit | 1895 | } // foreach outfit |
1899 | m_log.DebugFormat("[RADMIN] Inventory update complete for {0}", name); | 1896 | m_log.DebugFormat("[RADMIN] Inventory update complete for {0}", name); |
1900 | m_app.CommunicationsManager.AvatarService.UpdateUserAppearance(ID, mava); | 1897 | AvatarData adata2 = new AvatarData(mava); |
1898 | m_app.SceneManager.CurrentOrFirstScene.AvatarService.SetAvatar(ID, adata2); | ||
1901 | } | 1899 | } |
1902 | catch (Exception e) | 1900 | catch (Exception e) |
1903 | { | 1901 | { |
@@ -2509,17 +2507,18 @@ namespace OpenSim.ApplicationPlugins.RemoteController | |||
2509 | 2507 | ||
2510 | if (requestData.Contains("users")) | 2508 | if (requestData.Contains("users")) |
2511 | { | 2509 | { |
2512 | UserProfileCacheService ups = m_app.CommunicationsManager.UserProfileCacheService; | 2510 | UUID scopeID = m_app.SceneManager.CurrentOrFirstScene.RegionInfo.ScopeID; |
2511 | IUserAccountService userService = m_app.SceneManager.CurrentOrFirstScene.UserAccountService; | ||
2513 | Scene s = m_app.SceneManager.CurrentScene; | 2512 | Scene s = m_app.SceneManager.CurrentScene; |
2514 | Hashtable users = (Hashtable) requestData["users"]; | 2513 | Hashtable users = (Hashtable) requestData["users"]; |
2515 | List<UUID> uuids = new List<UUID>(); | 2514 | List<UUID> uuids = new List<UUID>(); |
2516 | foreach (string name in users.Values) | 2515 | foreach (string name in users.Values) |
2517 | { | 2516 | { |
2518 | string[] parts = name.Split(); | 2517 | string[] parts = name.Split(); |
2519 | CachedUserInfo udata = ups.GetUserDetails(parts[0],parts[1]); | 2518 | UserAccount account = userService.GetUserAccount(scopeID, parts[0], parts[1]); |
2520 | if (udata != null) | 2519 | if (account != null) |
2521 | { | 2520 | { |
2522 | uuids.Add(udata.UserProfile.ID); | 2521 | uuids.Add(account.PrincipalID); |
2523 | m_log.DebugFormat("[RADMIN] adding \"{0}\" to ACL for \"{1}\"", name, s.RegionInfo.RegionName); | 2522 | m_log.DebugFormat("[RADMIN] adding \"{0}\" to ACL for \"{1}\"", name, s.RegionInfo.RegionName); |
2524 | } | 2523 | } |
2525 | } | 2524 | } |
@@ -2595,21 +2594,23 @@ namespace OpenSim.ApplicationPlugins.RemoteController | |||
2595 | 2594 | ||
2596 | if (requestData.Contains("users")) | 2595 | if (requestData.Contains("users")) |
2597 | { | 2596 | { |
2598 | UserProfileCacheService ups = m_app.CommunicationsManager.UserProfileCacheService; | 2597 | UUID scopeID = m_app.SceneManager.CurrentOrFirstScene.RegionInfo.ScopeID; |
2598 | IUserAccountService userService = m_app.SceneManager.CurrentOrFirstScene.UserAccountService; | ||
2599 | //UserProfileCacheService ups = m_app.CommunicationsManager.UserProfileCacheService; | ||
2599 | Scene s = m_app.SceneManager.CurrentScene; | 2600 | Scene s = m_app.SceneManager.CurrentScene; |
2600 | Hashtable users = (Hashtable) requestData["users"]; | 2601 | Hashtable users = (Hashtable) requestData["users"]; |
2601 | List<UUID> uuids = new List<UUID>(); | 2602 | List<UUID> uuids = new List<UUID>(); |
2602 | foreach (string name in users.Values) | 2603 | foreach (string name in users.Values) |
2603 | { | 2604 | { |
2604 | string[] parts = name.Split(); | 2605 | string[] parts = name.Split(); |
2605 | CachedUserInfo udata = ups.GetUserDetails(parts[0],parts[1]); | 2606 | UserAccount account = userService.GetUserAccount(scopeID, parts[0], parts[1]); |
2606 | if (udata != null) | 2607 | if (account != null) |
2607 | { | 2608 | { |
2608 | uuids.Add(udata.UserProfile.ID); | 2609 | uuids.Add(account.PrincipalID); |
2609 | } | 2610 | } |
2610 | } | 2611 | } |
2611 | List<UUID> acl = new List<UUID>(s.RegionInfo.EstateSettings.EstateAccess); | 2612 | List<UUID> acl = new List<UUID>(s.RegionInfo.EstateSettings.EstateAccess); |
2612 | foreach (UUID uuid in uuids) | 2613 | foreach (UUID uuid in uuids) |
2613 | { | 2614 | { |
2614 | if (acl.Contains(uuid)) | 2615 | if (acl.Contains(uuid)) |
2615 | { | 2616 | { |
@@ -2682,10 +2683,11 @@ namespace OpenSim.ApplicationPlugins.RemoteController | |||
2682 | 2683 | ||
2683 | foreach (UUID user in acl) | 2684 | foreach (UUID user in acl) |
2684 | { | 2685 | { |
2685 | CachedUserInfo udata = m_app.CommunicationsManager.UserProfileCacheService.GetUserDetails(user); | 2686 | UUID scopeID = m_app.SceneManager.CurrentOrFirstScene.RegionInfo.ScopeID; |
2686 | if (udata != null) | 2687 | UserAccount account = m_app.SceneManager.CurrentOrFirstScene.UserAccountService.GetUserAccount(scopeID, user); |
2688 | if (account != null) | ||
2687 | { | 2689 | { |
2688 | users[user.ToString()] = udata.UserProfile.Name; | 2690 | users[user.ToString()] = account.FirstName + " " + account.LastName; |
2689 | } | 2691 | } |
2690 | } | 2692 | } |
2691 | 2693 | ||