aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/OpenSim/ApplicationPlugins/RemoteController
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--OpenSim/ApplicationPlugins/RemoteController/RemoteAdminPlugin.cs498
1 files changed, 250 insertions, 248 deletions
diff --git a/OpenSim/ApplicationPlugins/RemoteController/RemoteAdminPlugin.cs b/OpenSim/ApplicationPlugins/RemoteController/RemoteAdminPlugin.cs
index 9400788..c59ea28 100644
--- a/OpenSim/ApplicationPlugins/RemoteController/RemoteAdminPlugin.cs
+++ b/OpenSim/ApplicationPlugins/RemoteController/RemoteAdminPlugin.cs
@@ -41,7 +41,7 @@ using OpenMetaverse;
41using OpenSim; 41using OpenSim;
42using OpenSim.Framework; 42using OpenSim.Framework;
43using OpenSim.Framework.Communications; 43using OpenSim.Framework.Communications;
44using OpenSim.Framework.Communications.Cache; 44
45using OpenSim.Framework.Console; 45using OpenSim.Framework.Console;
46using OpenSim.Framework.Servers; 46using OpenSim.Framework.Servers;
47using OpenSim.Framework.Servers.HttpServer; 47using OpenSim.Framework.Servers.HttpServer;
@@ -49,6 +49,8 @@ using OpenSim.Region.CoreModules.World.Terrain;
49using OpenSim.Region.Framework.Interfaces; 49using OpenSim.Region.Framework.Interfaces;
50using OpenSim.Region.Framework.Scenes; 50using OpenSim.Region.Framework.Scenes;
51using OpenSim.Services.Interfaces; 51using OpenSim.Services.Interfaces;
52using PresenceInfo = OpenSim.Services.Interfaces.PresenceInfo;
53using GridRegion = OpenSim.Services.Interfaces.GridRegion;
52 54
53namespace OpenSim.ApplicationPlugins.RemoteController 55namespace OpenSim.ApplicationPlugins.RemoteController
54{ 56{
@@ -582,39 +584,8 @@ namespace OpenSim.ApplicationPlugins.RemoteController
582 { 584 {
583 // ok, client wants us to use an explicit UUID 585 // ok, client wants us to use an explicit UUID
584 // regardless of what the avatar name provided 586 // regardless of what the avatar name provided
585 userID = new UUID((string) requestData["region_master_uuid"]); 587 userID = new UUID((string) requestData["estate_owner_uuid"]);
586 } 588 }
587 else
588 {
589 if (masterFirst != String.Empty && masterLast != String.Empty) // User requests a master avatar
590 {
591 // no client supplied UUID: look it up...
592 CachedUserInfo userInfo
593 = m_app.CommunicationsManager.UserProfileCacheService.GetUserDetails(
594 masterFirst, masterLast);
595
596 if (null == userInfo)
597 {
598 m_log.InfoFormat("master avatar does not exist, creating it");
599 // ...or create new user
600 userID = m_app.CommunicationsManager.UserAdminService.AddUser(
601 masterFirst, masterLast, masterPassword, "", region.RegionLocX, region.RegionLocY);
602
603 if (userID == UUID.Zero)
604 throw new Exception(String.Format("failed to create new user {0} {1}",
605 masterFirst, masterLast));
606 }
607 else
608 {
609 userID = userInfo.UserProfile.ID;
610 }
611 }
612 }
613
614 region.MasterAvatarFirstName = masterFirst;
615 region.MasterAvatarLastName = masterLast;
616 region.MasterAvatarSandboxPassword = masterPassword;
617 region.MasterAvatarAssignedUUID = userID;
618 589
619 bool persist = Convert.ToBoolean((string) requestData["persist"]); 590 bool persist = Convert.ToBoolean((string) requestData["persist"]);
620 if (persist) 591 if (persist)
@@ -659,6 +630,7 @@ namespace OpenSim.ApplicationPlugins.RemoteController
659 // If an access specification was provided, use it. 630 // If an access specification was provided, use it.
660 // Otherwise accept the default. 631 // Otherwise accept the default.
661 newscene.RegionInfo.EstateSettings.PublicAccess = getBoolean(requestData, "public", m_publicAccess); 632 newscene.RegionInfo.EstateSettings.PublicAccess = getBoolean(requestData, "public", m_publicAccess);
633 newscene.RegionInfo.EstateSettings.EstateOwner = userID;
662 if (persist) 634 if (persist)
663 newscene.RegionInfo.EstateSettings.Save(); 635 newscene.RegionInfo.EstateSettings.Save();
664 636
@@ -1032,30 +1004,37 @@ namespace OpenSim.ApplicationPlugins.RemoteController
1032 if (requestData.Contains("user_email")) 1004 if (requestData.Contains("user_email"))
1033 email = (string)requestData["user_email"]; 1005 email = (string)requestData["user_email"];
1034 1006
1035 CachedUserInfo userInfo = 1007 UUID scopeID = m_app.SceneManager.CurrentOrFirstScene.RegionInfo.ScopeID;
1036 m_app.CommunicationsManager.UserProfileCacheService.GetUserDetails(firstname, lastname);
1037 1008
1038 if (null != userInfo) 1009 UserAccount account = m_app.SceneManager.CurrentOrFirstScene.UserAccountService.GetUserAccount(scopeID, firstname, lastname);
1039 throw new Exception(String.Format("Avatar {0} {1} already exists", firstname, lastname));
1040 1010
1041 UUID userID = 1011 if (null != account)
1042 m_app.CommunicationsManager.UserAdminService.AddUser(firstname, lastname, 1012 throw new Exception(String.Format("Account {0} {1} already exists", firstname, lastname));
1043 passwd, email, regX, regY);
1044 1013
1045 if (userID == UUID.Zero) 1014 account = new UserAccount(scopeID, firstname, lastname, email);
1015 // REFACTORING PROBLEM: no method to set the password!
1016
1017 bool success = m_app.SceneManager.CurrentOrFirstScene.UserAccountService.StoreUserAccount(account);
1018
1019 if (!success)
1046 throw new Exception(String.Format("failed to create new user {0} {1}", 1020 throw new Exception(String.Format("failed to create new user {0} {1}",
1047 firstname, lastname)); 1021 firstname, lastname));
1048 1022
1023 GridRegion home = m_app.SceneManager.CurrentOrFirstScene.GridService.GetRegionByPosition(scopeID,
1024 (int)(regX * Constants.RegionSize), (int)(regY * Constants.RegionSize));
1025 if (home == null)
1026 m_log.WarnFormat("[RADMIN]: Unable to set home region for newly created user account {0} {1}", firstname, lastname);
1027
1049 // Establish the avatar's initial appearance 1028 // Establish the avatar's initial appearance
1050 1029
1051 updateUserAppearance(responseData, requestData, userID); 1030 updateUserAppearance(responseData, requestData, account.PrincipalID);
1052 1031
1053 responseData["success"] = true; 1032 responseData["success"] = true;
1054 responseData["avatar_uuid"] = userID.ToString(); 1033 responseData["avatar_uuid"] = account.PrincipalID.ToString();
1055 1034
1056 response.Value = responseData; 1035 response.Value = responseData;
1057 1036
1058 m_log.InfoFormat("[RADMIN]: CreateUser: User {0} {1} created, UUID {2}", firstname, lastname, userID); 1037 m_log.InfoFormat("[RADMIN]: CreateUser: User {0} {1} created, UUID {2}", firstname, lastname, account.PrincipalID);
1059 } 1038 }
1060 catch (Exception e) 1039 catch (Exception e)
1061 { 1040 {
@@ -1124,21 +1103,27 @@ namespace OpenSim.ApplicationPlugins.RemoteController
1124 string firstname = (string) requestData["user_firstname"]; 1103 string firstname = (string) requestData["user_firstname"];
1125 string lastname = (string) requestData["user_lastname"]; 1104 string lastname = (string) requestData["user_lastname"];
1126 1105
1127 CachedUserInfo userInfo
1128 = m_app.CommunicationsManager.UserProfileCacheService.GetUserDetails(firstname, lastname);
1129
1130 responseData["user_firstname"] = firstname; 1106 responseData["user_firstname"] = firstname;
1131 responseData["user_lastname"] = lastname; 1107 responseData["user_lastname"] = lastname;
1132 1108
1133 if (null == userInfo) 1109 UUID scopeID = m_app.SceneManager.CurrentOrFirstScene.RegionInfo.ScopeID;
1110
1111 UserAccount account = m_app.SceneManager.CurrentOrFirstScene.UserAccountService.GetUserAccount(scopeID, firstname, lastname);
1112
1113 if (null == account)
1134 { 1114 {
1135 responseData["success"] = false; 1115 responseData["success"] = false;
1136 responseData["lastlogin"] = 0; 1116 responseData["lastlogin"] = 0;
1137 } 1117 }
1138 else 1118 else
1139 { 1119 {
1120 PresenceInfo[] pinfos = m_app.SceneManager.CurrentOrFirstScene.PresenceService.GetAgents(new string[] { account.PrincipalID.ToString() });
1121 if (pinfos != null && pinfos.Length >= 1)
1122 responseData["lastlogin"] = pinfos[0].Login;
1123 else
1124 responseData["lastlogin"] = 0;
1125
1140 responseData["success"] = true; 1126 responseData["success"] = true;
1141 responseData["lastlogin"] = userInfo.UserProfile.LastLogin;
1142 } 1127 }
1143 1128
1144 response.Value = responseData; 1129 response.Value = responseData;
@@ -1200,117 +1185,118 @@ namespace OpenSim.ApplicationPlugins.RemoteController
1200 public XmlRpcResponse XmlRpcUpdateUserAccountMethod(XmlRpcRequest request, IPEndPoint remoteClient) 1185 public XmlRpcResponse XmlRpcUpdateUserAccountMethod(XmlRpcRequest request, IPEndPoint remoteClient)
1201 { 1186 {
1202 m_log.Info("[RADMIN]: UpdateUserAccount: new request"); 1187 m_log.Info("[RADMIN]: UpdateUserAccount: new request");
1188 m_log.Warn("[RADMIN]: This method needs update for 0.7");
1203 XmlRpcResponse response = new XmlRpcResponse(); 1189 XmlRpcResponse response = new XmlRpcResponse();
1204 Hashtable responseData = new Hashtable(); 1190 Hashtable responseData = new Hashtable();
1205 1191
1206 lock (rslock) 1192 //lock (rslock)
1207 { 1193 //{
1208 try 1194 // try
1209 { 1195 // {
1210 Hashtable requestData = (Hashtable) request.Params[0]; 1196 // Hashtable requestData = (Hashtable) request.Params[0];
1211 1197
1212 // check completeness 1198 // // check completeness
1213 checkStringParameters(request, new string[] { 1199 // checkStringParameters(request, new string[] {
1214 "password", "user_firstname", 1200 // "password", "user_firstname",
1215 "user_lastname"}); 1201 // "user_lastname"});
1216 1202
1217 // check password 1203 // // check password
1218 if (!String.IsNullOrEmpty(m_requiredPassword) && 1204 // if (!String.IsNullOrEmpty(m_requiredPassword) &&
1219 (string) requestData["password"] != m_requiredPassword) throw new Exception("wrong password"); 1205 // (string) requestData["password"] != m_requiredPassword) throw new Exception("wrong password");
1220 1206
1221 // do the job 1207 // // do the job
1222 string firstname = (string) requestData["user_firstname"]; 1208 // string firstname = (string) requestData["user_firstname"];
1223 string lastname = (string) requestData["user_lastname"]; 1209 // string lastname = (string) requestData["user_lastname"];
1224 1210
1225 string passwd = String.Empty; 1211 // string passwd = String.Empty;
1226 uint? regX = null; 1212 // uint? regX = null;
1227 uint? regY = null; 1213 // uint? regY = null;
1228 uint? ulaX = null; 1214 // uint? ulaX = null;
1229 uint? ulaY = null; 1215 // uint? ulaY = null;
1230 uint? ulaZ = null; 1216 // uint? ulaZ = null;
1231 uint? usaX = null; 1217 // uint? usaX = null;
1232 uint? usaY = null; 1218 // uint? usaY = null;
1233 uint? usaZ = null; 1219 // uint? usaZ = null;
1234 string aboutFirstLive = String.Empty; 1220 // string aboutFirstLive = String.Empty;
1235 string aboutAvatar = String.Empty; 1221 // string aboutAvatar = String.Empty;
1236 1222
1237 if (requestData.ContainsKey("user_password")) passwd = (string) requestData["user_password"]; 1223 // if (requestData.ContainsKey("user_password")) passwd = (string) requestData["user_password"];
1238 if (requestData.ContainsKey("start_region_x")) 1224 // if (requestData.ContainsKey("start_region_x"))
1239 regX = Convert.ToUInt32((Int32) requestData["start_region_x"]); 1225 // regX = Convert.ToUInt32((Int32) requestData["start_region_x"]);
1240 if (requestData.ContainsKey("start_region_y")) 1226 // if (requestData.ContainsKey("start_region_y"))
1241 regY = Convert.ToUInt32((Int32) requestData["start_region_y"]); 1227 // regY = Convert.ToUInt32((Int32) requestData["start_region_y"]);
1242 1228
1243 if (requestData.ContainsKey("start_lookat_x")) 1229 // if (requestData.ContainsKey("start_lookat_x"))
1244 ulaX = Convert.ToUInt32((Int32) requestData["start_lookat_x"]); 1230 // ulaX = Convert.ToUInt32((Int32) requestData["start_lookat_x"]);
1245 if (requestData.ContainsKey("start_lookat_y")) 1231 // if (requestData.ContainsKey("start_lookat_y"))
1246 ulaY = Convert.ToUInt32((Int32) requestData["start_lookat_y"]); 1232 // ulaY = Convert.ToUInt32((Int32) requestData["start_lookat_y"]);
1247 if (requestData.ContainsKey("start_lookat_z")) 1233 // if (requestData.ContainsKey("start_lookat_z"))
1248 ulaZ = Convert.ToUInt32((Int32) requestData["start_lookat_z"]); 1234 // ulaZ = Convert.ToUInt32((Int32) requestData["start_lookat_z"]);
1249 1235
1250 if (requestData.ContainsKey("start_standat_x")) 1236 // if (requestData.ContainsKey("start_standat_x"))
1251 usaX = Convert.ToUInt32((Int32) requestData["start_standat_x"]); 1237 // usaX = Convert.ToUInt32((Int32) requestData["start_standat_x"]);
1252 if (requestData.ContainsKey("start_standat_y")) 1238 // if (requestData.ContainsKey("start_standat_y"))
1253 usaY = Convert.ToUInt32((Int32) requestData["start_standat_y"]); 1239 // usaY = Convert.ToUInt32((Int32) requestData["start_standat_y"]);
1254 if (requestData.ContainsKey("start_standat_z")) 1240 // if (requestData.ContainsKey("start_standat_z"))
1255 usaZ = Convert.ToUInt32((Int32) requestData["start_standat_z"]); 1241 // usaZ = Convert.ToUInt32((Int32) requestData["start_standat_z"]);
1256 if (requestData.ContainsKey("about_real_world")) 1242 // if (requestData.ContainsKey("about_real_world"))
1257 aboutFirstLive = (string)requestData["about_real_world"]; 1243 // aboutFirstLive = (string)requestData["about_real_world"];
1258 if (requestData.ContainsKey("about_virtual_world")) 1244 // if (requestData.ContainsKey("about_virtual_world"))
1259 aboutAvatar = (string)requestData["about_virtual_world"]; 1245 // aboutAvatar = (string)requestData["about_virtual_world"];
1260 1246
1261 UserProfileData userProfile 1247 // UserProfileData userProfile
1262 = m_app.CommunicationsManager.UserService.GetUserProfile(firstname, lastname); 1248 // = m_app.CommunicationsManager.UserService.GetUserProfile(firstname, lastname);
1263 1249
1264 if (null == userProfile) 1250 // if (null == userProfile)
1265 throw new Exception(String.Format("avatar {0} {1} does not exist", firstname, lastname)); 1251 // throw new Exception(String.Format("avatar {0} {1} does not exist", firstname, lastname));
1266 1252
1267 if (!String.IsNullOrEmpty(passwd)) 1253 // if (!String.IsNullOrEmpty(passwd))
1268 { 1254 // {
1269 m_log.DebugFormat("[RADMIN]: UpdateUserAccount: updating password for avatar {0} {1}", firstname, lastname); 1255 // m_log.DebugFormat("[RADMIN]: UpdateUserAccount: updating password for avatar {0} {1}", firstname, lastname);
1270 string md5PasswdHash = Util.Md5Hash(Util.Md5Hash(passwd) + ":" + String.Empty); 1256 // string md5PasswdHash = Util.Md5Hash(Util.Md5Hash(passwd) + ":" + String.Empty);
1271 userProfile.PasswordHash = md5PasswdHash; 1257 // userProfile.PasswordHash = md5PasswdHash;
1272 } 1258 // }
1273 1259
1274 if (null != regX) userProfile.HomeRegionX = (uint) regX; 1260 // if (null != regX) userProfile.HomeRegionX = (uint) regX;
1275 if (null != regY) userProfile.HomeRegionY = (uint) regY; 1261 // if (null != regY) userProfile.HomeRegionY = (uint) regY;
1276 1262
1277 if (null != usaX) userProfile.HomeLocationX = (uint) usaX; 1263 // if (null != usaX) userProfile.HomeLocationX = (uint) usaX;
1278 if (null != usaY) userProfile.HomeLocationY = (uint) usaY; 1264 // if (null != usaY) userProfile.HomeLocationY = (uint) usaY;
1279 if (null != usaZ) userProfile.HomeLocationZ = (uint) usaZ; 1265 // if (null != usaZ) userProfile.HomeLocationZ = (uint) usaZ;
1280 1266
1281 if (null != ulaX) userProfile.HomeLookAtX = (uint) ulaX; 1267 // if (null != ulaX) userProfile.HomeLookAtX = (uint) ulaX;
1282 if (null != ulaY) userProfile.HomeLookAtY = (uint) ulaY; 1268 // if (null != ulaY) userProfile.HomeLookAtY = (uint) ulaY;
1283 if (null != ulaZ) userProfile.HomeLookAtZ = (uint) ulaZ; 1269 // if (null != ulaZ) userProfile.HomeLookAtZ = (uint) ulaZ;
1284 1270
1285 if (String.Empty != aboutFirstLive) userProfile.FirstLifeAboutText = aboutFirstLive; 1271 // if (String.Empty != aboutFirstLive) userProfile.FirstLifeAboutText = aboutFirstLive;
1286 if (String.Empty != aboutAvatar) userProfile.AboutText = aboutAvatar; 1272 // if (String.Empty != aboutAvatar) userProfile.AboutText = aboutAvatar;
1287 1273
1288 // User has been created. Now establish gender and appearance. 1274 // // User has been created. Now establish gender and appearance.
1289 1275
1290 updateUserAppearance(responseData, requestData, userProfile.ID); 1276 // updateUserAppearance(responseData, requestData, userProfile.ID);
1291 1277
1292 if (!m_app.CommunicationsManager.UserService.UpdateUserProfile(userProfile)) 1278 // if (!m_app.CommunicationsManager.UserService.UpdateUserProfile(userProfile))
1293 throw new Exception("did not manage to update user profile"); 1279 // throw new Exception("did not manage to update user profile");
1294 1280
1295 responseData["success"] = true; 1281 // responseData["success"] = true;
1296 1282
1297 response.Value = responseData; 1283 // response.Value = responseData;
1298 1284
1299 m_log.InfoFormat("[RADMIN]: UpdateUserAccount: account for user {0} {1} updated, UUID {2}", 1285 // m_log.InfoFormat("[RADMIN]: UpdateUserAccount: account for user {0} {1} updated, UUID {2}",
1300 firstname, lastname, 1286 // firstname, lastname,
1301 userProfile.ID); 1287 // userProfile.ID);
1302 } 1288 // }
1303 catch (Exception e) 1289 // catch (Exception e)
1304 { 1290 // {
1305 m_log.ErrorFormat("[RADMIN] UpdateUserAccount: failed: {0}", e.Message); 1291 // m_log.ErrorFormat("[RADMIN] UpdateUserAccount: failed: {0}", e.Message);
1306 m_log.DebugFormat("[RADMIN] UpdateUserAccount: failed: {0}", e.ToString()); 1292 // m_log.DebugFormat("[RADMIN] UpdateUserAccount: failed: {0}", e.ToString());
1307 1293
1308 responseData["success"] = false; 1294 // responseData["success"] = false;
1309 responseData["error"] = e.Message; 1295 // responseData["error"] = e.Message;
1310 1296
1311 response.Value = responseData; 1297 // response.Value = responseData;
1312 } 1298 // }
1313 } 1299 //}
1314 1300
1315 m_log.Info("[RADMIN]: UpdateUserAccount: request complete"); 1301 m_log.Info("[RADMIN]: UpdateUserAccount: request complete");
1316 return response; 1302 return response;
@@ -1327,72 +1313,73 @@ namespace OpenSim.ApplicationPlugins.RemoteController
1327 private void updateUserAppearance(Hashtable responseData, Hashtable requestData, UUID userid) 1313 private void updateUserAppearance(Hashtable responseData, Hashtable requestData, UUID userid)
1328 { 1314 {
1329 m_log.DebugFormat("[RADMIN] updateUserAppearance"); 1315 m_log.DebugFormat("[RADMIN] updateUserAppearance");
1316 m_log.Warn("[RADMIN]: This method needs update for 0.7");
1330 1317
1331 string dmale = m_config.GetString("default_male", "Default Male"); 1318 //string dmale = m_config.GetString("default_male", "Default Male");
1332 string dfemale = m_config.GetString("default_female", "Default Female"); 1319 //string dfemale = m_config.GetString("default_female", "Default Female");
1333 string dneut = m_config.GetString("default_female", "Default Default"); 1320 //string dneut = m_config.GetString("default_female", "Default Default");
1334 string model = String.Empty; 1321 string model = String.Empty;
1335 1322
1336 // Has a gender preference been supplied? 1323 //// Has a gender preference been supplied?
1337 1324
1338 if (requestData.Contains("gender")) 1325 //if (requestData.Contains("gender"))
1339 { 1326 //{
1340 switch ((string)requestData["gender"]) 1327 // switch ((string)requestData["gender"])
1341 { 1328 // {
1342 case "m" : 1329 // case "m" :
1343 model = dmale; 1330 // model = dmale;
1344 break; 1331 // break;
1345 case "f" : 1332 // case "f" :
1346 model = dfemale; 1333 // model = dfemale;
1347 break; 1334 // break;
1348 case "n" : 1335 // case "n" :
1349 default : 1336 // default :
1350 model = dneut; 1337 // model = dneut;
1351 break; 1338 // break;
1352 } 1339 // }
1353 } 1340 //}
1354 1341
1355 // Has an explicit model been specified? 1342 //// Has an explicit model been specified?
1356 1343
1357 if (requestData.Contains("model")) 1344 //if (requestData.Contains("model"))
1358 { 1345 //{
1359 model = (string)requestData["model"]; 1346 // model = (string)requestData["model"];
1360 } 1347 //}
1361 1348
1362 // No appearance attributes were set 1349 //// No appearance attributes were set
1363 1350
1364 if (model == String.Empty) 1351 //if (model == String.Empty)
1365 { 1352 //{
1366 m_log.DebugFormat("[RADMIN] Appearance update not requested"); 1353 // m_log.DebugFormat("[RADMIN] Appearance update not requested");
1367 return; 1354 // return;
1368 } 1355 //}
1369 1356
1370 m_log.DebugFormat("[RADMIN] Setting appearance for avatar {0}, using model {1}", userid, model); 1357 //m_log.DebugFormat("[RADMIN] Setting appearance for avatar {0}, using model {1}", userid, model);
1371 1358
1372 string[] nomens = model.Split(); 1359 //string[] nomens = model.Split();
1373 if (nomens.Length != 2) 1360 //if (nomens.Length != 2)
1374 { 1361 //{
1375 m_log.WarnFormat("[RADMIN] User appearance not set for {0}. Invalid model name : <{1}>", userid, model); 1362 // m_log.WarnFormat("[RADMIN] User appearance not set for {0}. Invalid model name : <{1}>", userid, model);
1376 // nomens = dmodel.Split(); 1363 // // nomens = dmodel.Split();
1377 return; 1364 // return;
1378 } 1365 //}
1379 1366
1380 UserProfileData mprof = m_app.CommunicationsManager.UserService.GetUserProfile(nomens[0], nomens[1]); 1367 //UserProfileData mprof = m_app.CommunicationsManager.UserService.GetUserProfile(nomens[0], nomens[1]);
1381 1368
1382 // Is this the first time one of the default models has been used? Create it if that is the case 1369 //// Is this the first time one of the default models has been used? Create it if that is the case
1383 // otherwise default to male. 1370 //// otherwise default to male.
1384 1371
1385 if (mprof == null) 1372 //if (mprof == null)
1386 { 1373 //{
1387 m_log.WarnFormat("[RADMIN] Requested model ({0}) not found. Appearance unchanged", model); 1374 // m_log.WarnFormat("[RADMIN] Requested model ({0}) not found. Appearance unchanged", model);
1388 return; 1375 // return;
1389 } 1376 //}
1390 1377
1391 // Set current user's appearance. This bit is easy. The appearance structure is populated with 1378 //// Set current user's appearance. This bit is easy. The appearance structure is populated with
1392 // actual asset ids, however to complete the magic we need to populate the inventory with the 1379 //// actual asset ids, however to complete the magic we need to populate the inventory with the
1393 // assets in question. 1380 //// assets in question.
1394 1381
1395 establishAppearance(userid, mprof.ID); 1382 //establishAppearance(userid, mprof.ID);
1396 1383
1397 m_log.DebugFormat("[RADMIN] Finished setting appearance for avatar {0}, using model {1}", 1384 m_log.DebugFormat("[RADMIN] Finished setting appearance for avatar {0}, using model {1}",
1398 userid, model); 1385 userid, model);
@@ -1407,8 +1394,10 @@ namespace OpenSim.ApplicationPlugins.RemoteController
1407 private void establishAppearance(UUID dest, UUID srca) 1394 private void establishAppearance(UUID dest, UUID srca)
1408 { 1395 {
1409 m_log.DebugFormat("[RADMIN] Initializing inventory for {0} from {1}", dest, srca); 1396 m_log.DebugFormat("[RADMIN] Initializing inventory for {0} from {1}", dest, srca);
1410 1397 AvatarAppearance ava = null;
1411 AvatarAppearance ava = m_app.CommunicationsManager.AvatarService.GetUserAppearance(srca); 1398 AvatarData avatar = m_app.SceneManager.CurrentOrFirstScene.AvatarService.GetAvatar(srca);
1399 if (avatar != null)
1400 ava = avatar.ToAvatarAppearance(srca);
1412 1401
1413 // If the model has no associated appearance we're done. 1402 // If the model has no associated appearance we're done.
1414 1403
@@ -1501,7 +1490,8 @@ namespace OpenSim.ApplicationPlugins.RemoteController
1501 throw new Exception("Unable to load both inventories"); 1490 throw new Exception("Unable to load both inventories");
1502 } 1491 }
1503 1492
1504 m_app.CommunicationsManager.AvatarService.UpdateUserAppearance(dest, ava); 1493 AvatarData adata = new AvatarData(ava);
1494 m_app.SceneManager.CurrentOrFirstScene.AvatarService.SetAvatar(dest, adata);
1505 } 1495 }
1506 catch (Exception e) 1496 catch (Exception e)
1507 { 1497 {
@@ -1556,7 +1546,6 @@ namespace OpenSim.ApplicationPlugins.RemoteController
1556 uint regX = 1000; 1546 uint regX = 1000;
1557 uint regY = 1000; 1547 uint regY = 1000;
1558 string passwd = UUID.Random().ToString(); // No requirement to sign-in. 1548 string passwd = UUID.Random().ToString(); // No requirement to sign-in.
1559 CachedUserInfo UI;
1560 UUID ID = UUID.Zero; 1549 UUID ID = UUID.Zero;
1561 AvatarAppearance mava; 1550 AvatarAppearance mava;
1562 XmlNodeList avatars; 1551 XmlNodeList avatars;
@@ -1575,7 +1564,7 @@ namespace OpenSim.ApplicationPlugins.RemoteController
1575 assets = doc.GetElementsByTagName("RequiredAsset"); 1564 assets = doc.GetElementsByTagName("RequiredAsset");
1576 foreach (XmlNode asset in assets) 1565 foreach (XmlNode asset in assets)
1577 { 1566 {
1578 AssetBase rass = new AssetBase(UUID.Random(), GetStringAttribute(asset,"name",""), SByte.Parse(GetStringAttribute(asset,"type",""))); 1567 AssetBase rass = new AssetBase(UUID.Random(), GetStringAttribute(asset, "name", ""), SByte.Parse(GetStringAttribute(asset, "type", "")), UUID.Zero.ToString());
1579 rass.Description = GetStringAttribute(asset,"desc",""); 1568 rass.Description = GetStringAttribute(asset,"desc","");
1580 rass.Local = Boolean.Parse(GetStringAttribute(asset,"local","")); 1569 rass.Local = Boolean.Parse(GetStringAttribute(asset,"local",""));
1581 rass.Temporary = Boolean.Parse(GetStringAttribute(asset,"temporary","")); 1570 rass.Temporary = Boolean.Parse(GetStringAttribute(asset,"temporary",""));
@@ -1604,20 +1593,27 @@ namespace OpenSim.ApplicationPlugins.RemoteController
1604 passwd = GetStringAttribute(avatar,"password",passwd); 1593 passwd = GetStringAttribute(avatar,"password",passwd);
1605 1594
1606 string[] nomens = name.Split(); 1595 string[] nomens = name.Split();
1607 UI = m_app.CommunicationsManager.UserProfileCacheService.GetUserDetails(nomens[0], nomens[1]); 1596 UUID scopeID = m_app.SceneManager.CurrentOrFirstScene.RegionInfo.ScopeID;
1608 if (null == UI) 1597 UserAccount account = m_app.SceneManager.CurrentOrFirstScene.UserAccountService.GetUserAccount(scopeID, nomens[0], nomens[1]);
1598 if (null == account)
1609 { 1599 {
1610 ID = m_app.CommunicationsManager.UserAdminService.AddUser(nomens[0], nomens[1], 1600 account = new UserAccount(scopeID, nomens[0], nomens[1], email);
1611 passwd, email, regX, regY); 1601 bool success = m_app.SceneManager.CurrentOrFirstScene.UserAccountService.StoreUserAccount(account);
1612 if (ID == UUID.Zero) 1602 if (!success)
1613 { 1603 {
1614 m_log.ErrorFormat("[RADMIN] Avatar {0} {1} was not created", nomens[0], nomens[1]); 1604 m_log.ErrorFormat("[RADMIN] Avatar {0} {1} was not created", nomens[0], nomens[1]);
1615 return false; 1605 return false;
1616 } 1606 }
1607 // !!! REFACTORING PROBLEM: need to set the password
1608
1609 GridRegion home = m_app.SceneManager.CurrentOrFirstScene.GridService.GetRegionByPosition(scopeID,
1610 (int)(regX * Constants.RegionSize), (int)(regY * Constants.RegionSize));
1611 if (home != null)
1612 m_app.SceneManager.CurrentOrFirstScene.PresenceService.SetHomeLocation(account.PrincipalID.ToString(), home.RegionID, new Vector3(128, 128, 0), new Vector3(0, 1, 0));
1617 } 1613 }
1618 else 1614 else
1619 { 1615 {
1620 ID = UI.UserProfile.ID; 1616 ID = account.PrincipalID;
1621 } 1617 }
1622 1618
1623 m_log.DebugFormat("[RADMIN] User {0}[{1}] created or retrieved", name, ID); 1619 m_log.DebugFormat("[RADMIN] User {0}[{1}] created or retrieved", name, ID);
@@ -1641,10 +1637,11 @@ namespace OpenSim.ApplicationPlugins.RemoteController
1641 iserv.GetUserInventory(ID, uic.callback); 1637 iserv.GetUserInventory(ID, uic.callback);
1642 1638
1643 // While the inventory is being fetched, setup for appearance processing 1639 // While the inventory is being fetched, setup for appearance processing
1644 if ((mava = m_app.CommunicationsManager.AvatarService.GetUserAppearance(ID)) == null) 1640 AvatarData adata = m_app.SceneManager.CurrentOrFirstScene.AvatarService.GetAvatar(ID);
1645 { 1641 if (adata != null)
1642 mava = adata.ToAvatarAppearance(ID);
1643 else
1646 mava = new AvatarAppearance(); 1644 mava = new AvatarAppearance();
1647 }
1648 1645
1649 { 1646 {
1650 AvatarWearable[] wearables = mava.Wearables; 1647 AvatarWearable[] wearables = mava.Wearables;
@@ -1779,7 +1776,8 @@ namespace OpenSim.ApplicationPlugins.RemoteController
1779 m_log.DebugFormat("[RADMIN] Outfit {0} load completed", oname); 1776 m_log.DebugFormat("[RADMIN] Outfit {0} load completed", oname);
1780 } // foreach outfit 1777 } // foreach outfit
1781 m_log.DebugFormat("[RADMIN] Inventory update complete for {0}", name); 1778 m_log.DebugFormat("[RADMIN] Inventory update complete for {0}", name);
1782 m_app.CommunicationsManager.AvatarService.UpdateUserAppearance(ID, mava); 1779 AvatarData adata2 = new AvatarData(mava);
1780 m_app.SceneManager.CurrentOrFirstScene.AvatarService.SetAvatar(ID, adata2);
1783 } 1781 }
1784 catch (Exception e) 1782 catch (Exception e)
1785 { 1783 {
@@ -2391,17 +2389,18 @@ namespace OpenSim.ApplicationPlugins.RemoteController
2391 2389
2392 if (requestData.Contains("users")) 2390 if (requestData.Contains("users"))
2393 { 2391 {
2394 UserProfileCacheService ups = m_app.CommunicationsManager.UserProfileCacheService; 2392 UUID scopeID = m_app.SceneManager.CurrentOrFirstScene.RegionInfo.ScopeID;
2393 IUserAccountService userService = m_app.SceneManager.CurrentOrFirstScene.UserAccountService;
2395 Scene s = m_app.SceneManager.CurrentScene; 2394 Scene s = m_app.SceneManager.CurrentScene;
2396 Hashtable users = (Hashtable) requestData["users"]; 2395 Hashtable users = (Hashtable) requestData["users"];
2397 List<UUID> uuids = new List<UUID>(); 2396 List<UUID> uuids = new List<UUID>();
2398 foreach (string name in users.Values) 2397 foreach (string name in users.Values)
2399 { 2398 {
2400 string[] parts = name.Split(); 2399 string[] parts = name.Split();
2401 CachedUserInfo udata = ups.GetUserDetails(parts[0],parts[1]); 2400 UserAccount account = userService.GetUserAccount(scopeID, parts[0], parts[1]);
2402 if (udata != null) 2401 if (account != null)
2403 { 2402 {
2404 uuids.Add(udata.UserProfile.ID); 2403 uuids.Add(account.PrincipalID);
2405 m_log.DebugFormat("[RADMIN] adding \"{0}\" to ACL for \"{1}\"", name, s.RegionInfo.RegionName); 2404 m_log.DebugFormat("[RADMIN] adding \"{0}\" to ACL for \"{1}\"", name, s.RegionInfo.RegionName);
2406 } 2405 }
2407 } 2406 }
@@ -2477,21 +2476,23 @@ namespace OpenSim.ApplicationPlugins.RemoteController
2477 2476
2478 if (requestData.Contains("users")) 2477 if (requestData.Contains("users"))
2479 { 2478 {
2480 UserProfileCacheService ups = m_app.CommunicationsManager.UserProfileCacheService; 2479 UUID scopeID = m_app.SceneManager.CurrentOrFirstScene.RegionInfo.ScopeID;
2480 IUserAccountService userService = m_app.SceneManager.CurrentOrFirstScene.UserAccountService;
2481 //UserProfileCacheService ups = m_app.CommunicationsManager.UserProfileCacheService;
2481 Scene s = m_app.SceneManager.CurrentScene; 2482 Scene s = m_app.SceneManager.CurrentScene;
2482 Hashtable users = (Hashtable) requestData["users"]; 2483 Hashtable users = (Hashtable) requestData["users"];
2483 List<UUID> uuids = new List<UUID>(); 2484 List<UUID> uuids = new List<UUID>();
2484 foreach (string name in users.Values) 2485 foreach (string name in users.Values)
2485 { 2486 {
2486 string[] parts = name.Split(); 2487 string[] parts = name.Split();
2487 CachedUserInfo udata = ups.GetUserDetails(parts[0],parts[1]); 2488 UserAccount account = userService.GetUserAccount(scopeID, parts[0], parts[1]);
2488 if (udata != null) 2489 if (account != null)
2489 { 2490 {
2490 uuids.Add(udata.UserProfile.ID); 2491 uuids.Add(account.PrincipalID);
2491 } 2492 }
2492 } 2493 }
2493 List<UUID> acl = new List<UUID>(s.RegionInfo.EstateSettings.EstateAccess); 2494 List<UUID> acl = new List<UUID>(s.RegionInfo.EstateSettings.EstateAccess);
2494 foreach (UUID uuid in uuids) 2495 foreach (UUID uuid in uuids)
2495 { 2496 {
2496 if (acl.Contains(uuid)) 2497 if (acl.Contains(uuid))
2497 { 2498 {
@@ -2564,10 +2565,11 @@ namespace OpenSim.ApplicationPlugins.RemoteController
2564 2565
2565 foreach (UUID user in acl) 2566 foreach (UUID user in acl)
2566 { 2567 {
2567 CachedUserInfo udata = m_app.CommunicationsManager.UserProfileCacheService.GetUserDetails(user); 2568 UUID scopeID = m_app.SceneManager.CurrentOrFirstScene.RegionInfo.ScopeID;
2568 if (udata != null) 2569 UserAccount account = m_app.SceneManager.CurrentOrFirstScene.UserAccountService.GetUserAccount(scopeID, user);
2570 if (account != null)
2569 { 2571 {
2570 users[user.ToString()] = udata.UserProfile.Name; 2572 users[user.ToString()] = account.FirstName + " " + account.LastName;
2571 } 2573 }
2572 } 2574 }
2573 2575