Merge branch 'master' into diva-textures

prioritization
Melanie 2009-10-02 08:23:38 +01:00
commit 31d8cec0f8
356 changed files with 8423 additions and 5997 deletions

View File

@ -53,6 +53,11 @@
</exec> </exec>
<fail message="Failures reported in unit tests." unless="${int::parse(testresult.opensim.framework.servers.tests)==0}" /> <fail message="Failures reported in unit tests." unless="${int::parse(testresult.opensim.framework.servers.tests)==0}" />
<exec program="${nunitcmd}" failonerror="true" resultproperty="testresult.opensim.framework.serialization.tests">
<arg value="./bin/OpenSim.Framework.Serialization.Tests.dll" />
</exec>
<fail message="Failures reported in unit tests." unless="${int::parse(testresult.opensim.framework.serialization.tests)==0}" />
<exec program="${nunitcmd}" failonerror="true" resultproperty="testresult.opensim.region.clientstack.lindenudp.tests"> <exec program="${nunitcmd}" failonerror="true" resultproperty="testresult.opensim.region.clientstack.lindenudp.tests">
<arg value="./bin/OpenSim.Region.ClientStack.LindenUDP.Tests.dll" /> <arg value="./bin/OpenSim.Region.ClientStack.LindenUDP.Tests.dll" />
</exec> </exec>
@ -223,6 +228,11 @@
<arg value="-xml=test-results/OpenSim.Framework.Communications.Tests.dll-Results.xml" /> <arg value="-xml=test-results/OpenSim.Framework.Communications.Tests.dll-Results.xml" />
</exec> </exec>
<exec program="${nunitcmd}" failonerror="false" resultproperty="testresult.opensim.framework.serialization.tests">
<arg value="./bin/OpenSim.Framework.Serialization.Tests.dll" />
<arg value="-xml=test-results/OpenSim.Framework.Serialization.Tests.dll-Results.xml" />
</exec>
<exec program="${nunitcmd}" failonerror="false" resultproperty="testresult.opensim.framework.servers.tests"> <exec program="${nunitcmd}" failonerror="false" resultproperty="testresult.opensim.framework.servers.tests">
<arg value="./bin/OpenSim.Framework.Servers.Tests.dll" /> <arg value="./bin/OpenSim.Framework.Servers.Tests.dll" />
<arg value="-xml=test-results/OpenSim.Framework.Servers.Tests.dll-Results.xml" /> <arg value="-xml=test-results/OpenSim.Framework.Servers.Tests.dll-Results.xml" />

View File

@ -69,7 +69,6 @@ namespace OpenSim.ApplicationPlugins.CreateCommsManager
protected CommunicationsManager m_commsManager; protected CommunicationsManager m_commsManager;
protected GridInfoService m_gridInfoService; protected GridInfoService m_gridInfoService;
protected IHyperlink HGServices = null;
protected IRegionCreator m_regionCreator; protected IRegionCreator m_regionCreator;
@ -144,7 +143,6 @@ namespace OpenSim.ApplicationPlugins.CreateCommsManager
// We are in grid mode // We are in grid mode
InitialiseHGGridServices(libraryRootFolder); InitialiseHGGridServices(libraryRootFolder);
} }
HGCommands.HGServices = HGServices;
} }
protected void InitialiseStandardServices(LibraryRootFolder libraryRootFolder) protected void InitialiseStandardServices(LibraryRootFolder libraryRootFolder)
@ -187,19 +185,12 @@ namespace OpenSim.ApplicationPlugins.CreateCommsManager
} }
protected virtual void InitialiseHGStandaloneServices(LibraryRootFolder libraryRootFolder) protected virtual void InitialiseHGStandaloneServices(LibraryRootFolder libraryRootFolder)
{ {
HGGridServicesStandalone gridService
= new HGGridServicesStandalone(
m_openSim.NetServersInfo, m_httpServer, m_openSim.SceneManager);
m_commsManager m_commsManager
= new HGCommunicationsStandalone( = new HGCommunicationsStandalone(
m_openSim.ConfigurationSettings, m_openSim.NetServersInfo, m_httpServer, m_openSim.ConfigurationSettings, m_openSim.NetServersInfo, m_httpServer,
gridService, libraryRootFolder, false);
libraryRootFolder, false);
HGServices = gridService;
CreateGridInfoService(); CreateGridInfoService();
} }
@ -210,8 +201,6 @@ namespace OpenSim.ApplicationPlugins.CreateCommsManager
m_openSim.NetServersInfo, m_openSim.NetServersInfo,
m_openSim.SceneManager, libraryRootFolder); m_openSim.SceneManager, libraryRootFolder);
HGServices = ((HGCommunicationsGridMode) m_commsManager).HGServices;
m_httpServer.AddStreamHandler(new OpenSim.SimStatusHandler()); m_httpServer.AddStreamHandler(new OpenSim.SimStatusHandler());
m_httpServer.AddStreamHandler(new OpenSim.XSimStatusHandler(m_openSim)); m_httpServer.AddStreamHandler(new OpenSim.XSimStatusHandler(m_openSim));
if (m_openSim.userStatsURI != String.Empty) if (m_openSim.userStatsURI != String.Empty)

View File

@ -69,7 +69,6 @@ namespace OpenSim.ApplicationPlugins.RemoteController
private string m_name = "RemoteAdminPlugin"; private string m_name = "RemoteAdminPlugin";
private string m_version = "0.0"; private string m_version = "0.0";
//AnakinLohner 0.6.5-post-fixes
//guard for XmlRpc-related methods //guard for XmlRpc-related methods
private void FailIfRemoteAdminDisabled(string requestName) private void FailIfRemoteAdminDisabled(string requestName)
{ {
@ -142,7 +141,7 @@ namespace OpenSim.ApplicationPlugins.RemoteController
availableMethods["admin_acl_remove"] = XmlRpcAccessListRemove; availableMethods["admin_acl_remove"] = XmlRpcAccessListRemove;
availableMethods["admin_acl_list"] = XmlRpcAccessListList; availableMethods["admin_acl_list"] = XmlRpcAccessListList;
// Either enable full remote functionality or just selected features // Either enable full remote functionality or just selected features
string enabledMethods = m_config.GetString("enabled_methods", "all"); string enabledMethods = m_config.GetString("enabled_methods", "all");
// To get this, you must explicitly specify "all" or // To get this, you must explicitly specify "all" or
@ -469,7 +468,6 @@ namespace OpenSim.ApplicationPlugins.RemoteController
{ {
m_log.Info("[RADMIN]: CreateRegion: new request"); m_log.Info("[RADMIN]: CreateRegion: new request");
//AnakinLohner 0.6.5-post-fixes
FailIfRemoteAdminDisabled("CreateRegion"); FailIfRemoteAdminDisabled("CreateRegion");
XmlRpcResponse response = new XmlRpcResponse(); XmlRpcResponse response = new XmlRpcResponse();
@ -477,7 +475,6 @@ namespace OpenSim.ApplicationPlugins.RemoteController
lock (rslock) lock (rslock)
{ {
int m_regionLimit = m_config.GetInt("region_limit", 0); int m_regionLimit = m_config.GetInt("region_limit", 0);
bool m_enableVoiceForNewRegions = m_config.GetBoolean("create_region_enable_voice", false); bool m_enableVoiceForNewRegions = m_config.GetBoolean("create_region_enable_voice", false);
bool m_publicAccess = m_config.GetBoolean("create_region_public", true); bool m_publicAccess = m_config.GetBoolean("create_region_public", true);
@ -502,7 +499,7 @@ namespace OpenSim.ApplicationPlugins.RemoteController
// check whether we still have space left (iff we are using limits) // check whether we still have space left (iff we are using limits)
if (m_regionLimit != 0 && m_app.SceneManager.Scenes.Count >= m_regionLimit) if (m_regionLimit != 0 && m_app.SceneManager.Scenes.Count >= m_regionLimit)
throw new Exception(String.Format("cannot instantiate new region, server capacity {0} already reached; delete regions first", throw new Exception(String.Format("cannot instantiate new region, server capacity {0} already reached; delete regions first",
m_regionLimit)); m_regionLimit));
// extract or generate region ID now // extract or generate region ID now
Scene scene = null; Scene scene = null;
@ -561,7 +558,6 @@ namespace OpenSim.ApplicationPlugins.RemoteController
scene.RegionInfo.RegionName, scene.RegionInfo.RegionID, scene.RegionInfo.RegionName, scene.RegionInfo.RegionID,
scene.RegionInfo.RegionLocX, scene.RegionInfo.RegionLocY)); scene.RegionInfo.RegionLocX, scene.RegionInfo.RegionLocY));
region.ExternalHostName = (string) requestData["external_address"]; region.ExternalHostName = (string) requestData["external_address"];
string masterFirst = (string) requestData["region_master_first"]; string masterFirst = (string) requestData["region_master_first"];
@ -580,10 +576,10 @@ namespace OpenSim.ApplicationPlugins.RemoteController
if (masterFirst != String.Empty && masterLast != String.Empty) // User requests a master avatar if (masterFirst != String.Empty && masterLast != String.Empty) // User requests a master avatar
{ {
// no client supplied UUID: look it up... // no client supplied UUID: look it up...
CachedUserInfo userInfo CachedUserInfo userInfo
= m_app.CommunicationsManager.UserProfileCacheService.GetUserDetails( = m_app.CommunicationsManager.UserProfileCacheService.GetUserDetails(
masterFirst, masterLast); masterFirst, masterLast);
if (null == userInfo) if (null == userInfo)
{ {
m_log.InfoFormat("master avatar does not exist, creating it"); m_log.InfoFormat("master avatar does not exist, creating it");
@ -636,7 +632,7 @@ namespace OpenSim.ApplicationPlugins.RemoteController
m_log.DebugFormat("[RADMIN] CreateRegion: persisting region {0} to {1}", m_log.DebugFormat("[RADMIN] CreateRegion: persisting region {0} to {1}",
region.RegionID, regionXmlPath); region.RegionID, regionXmlPath);
region.SaveRegionToFile("dynamic region", regionXmlPath); region.SaveRegionToFile("dynamic region", regionXmlPath);
} }
else else
{ {
region.Persistent = false; region.Persistent = false;
@ -664,7 +660,7 @@ namespace OpenSim.ApplicationPlugins.RemoteController
{ {
parcel.landData.Flags |= (uint) ParcelFlags.AllowVoiceChat; parcel.landData.Flags |= (uint) ParcelFlags.AllowVoiceChat;
parcel.landData.Flags |= (uint) ParcelFlags.UseEstateVoiceChan; parcel.landData.Flags |= (uint) ParcelFlags.UseEstateVoiceChan;
((Scene)newscene).LandChannel.UpdateLandObject(parcel.landData.LocalID, parcel.landData); ((Scene)newscene).LandChannel.UpdateLandObject(parcel.landData.LocalID, parcel.landData);
} }
} }
@ -684,7 +680,7 @@ namespace OpenSim.ApplicationPlugins.RemoteController
response.Value = responseData; response.Value = responseData;
} }
m_log.Info("[RADMIN]: CreateRegion: request complete"); m_log.Info("[RADMIN]: CreateRegion: request complete");
return response; return response;
} }
@ -756,7 +752,7 @@ namespace OpenSim.ApplicationPlugins.RemoteController
return response; return response;
} }
} }
/// <summary> /// <summary>
/// Close a region. /// Close a region.
/// <summary> /// <summary>
@ -798,7 +794,7 @@ namespace OpenSim.ApplicationPlugins.RemoteController
{ {
Hashtable requestData = (Hashtable) request.Params[0]; Hashtable requestData = (Hashtable) request.Params[0];
checkStringParameters(request, new string[] {"password"}); checkStringParameters(request, new string[] {"password"});
if (requestData.ContainsKey("region_id") && if (requestData.ContainsKey("region_id") &&
!String.IsNullOrEmpty((string) requestData["region_id"])) !String.IsNullOrEmpty((string) requestData["region_id"]))
{ {
@ -899,8 +895,8 @@ namespace OpenSim.ApplicationPlugins.RemoteController
if (!m_app.SceneManager.TryGetScene(regionName, out scene)) if (!m_app.SceneManager.TryGetScene(regionName, out scene))
throw new Exception(String.Format("region \"{0}\" does not exist", regionName)); throw new Exception(String.Format("region \"{0}\" does not exist", regionName));
// Modify access // Modify access
scene.RegionInfo.EstateSettings.PublicAccess = scene.RegionInfo.EstateSettings.PublicAccess =
getBoolean(requestData,"public", scene.RegionInfo.EstateSettings.PublicAccess); getBoolean(requestData,"public", scene.RegionInfo.EstateSettings.PublicAccess);
if (scene.RegionInfo.Persistent) if (scene.RegionInfo.Persistent)
scene.RegionInfo.EstateSettings.Save(); scene.RegionInfo.EstateSettings.Save();
@ -988,8 +984,7 @@ namespace OpenSim.ApplicationPlugins.RemoteController
public XmlRpcResponse XmlRpcCreateUserMethod(XmlRpcRequest request, IPEndPoint remoteClient) public XmlRpcResponse XmlRpcCreateUserMethod(XmlRpcRequest request, IPEndPoint remoteClient)
{ {
m_log.Info("[RADMIN]: CreateUser: new request"); m_log.Info("[RADMIN]: CreateUser: new request");
//AnakinLohner 0.6.5-post-fixes
FailIfRemoteAdminDisabled("CreateUser"); FailIfRemoteAdminDisabled("CreateUser");
XmlRpcResponse response = new XmlRpcResponse(); XmlRpcResponse response = new XmlRpcResponse();
@ -1024,13 +1019,13 @@ namespace OpenSim.ApplicationPlugins.RemoteController
if (requestData.Contains("user_email")) if (requestData.Contains("user_email"))
email = (string)requestData["user_email"]; email = (string)requestData["user_email"];
CachedUserInfo userInfo = CachedUserInfo userInfo =
m_app.CommunicationsManager.UserProfileCacheService.GetUserDetails(firstname, lastname); m_app.CommunicationsManager.UserProfileCacheService.GetUserDetails(firstname, lastname);
if (null != userInfo) if (null != userInfo)
throw new Exception(String.Format("Avatar {0} {1} already exists", firstname, lastname)); throw new Exception(String.Format("Avatar {0} {1} already exists", firstname, lastname));
UUID userID = UUID userID =
m_app.CommunicationsManager.UserAdminService.AddUser(firstname, lastname, m_app.CommunicationsManager.UserAdminService.AddUser(firstname, lastname,
passwd, email, regX, regY); passwd, email, regX, regY);
@ -1101,7 +1096,6 @@ namespace OpenSim.ApplicationPlugins.RemoteController
{ {
m_log.Info("[RADMIN]: UserExists: new request"); m_log.Info("[RADMIN]: UserExists: new request");
//AnakinLohner 0.6.5-post-fixes
FailIfRemoteAdminDisabled("UserExists"); FailIfRemoteAdminDisabled("UserExists");
XmlRpcResponse response = new XmlRpcResponse(); XmlRpcResponse response = new XmlRpcResponse();
@ -1117,8 +1111,8 @@ namespace OpenSim.ApplicationPlugins.RemoteController
string firstname = (string) requestData["user_firstname"]; string firstname = (string) requestData["user_firstname"];
string lastname = (string) requestData["user_lastname"]; string lastname = (string) requestData["user_lastname"];
CachedUserInfo userInfo CachedUserInfo userInfo
= m_app.CommunicationsManager.UserProfileCacheService.GetUserDetails(firstname, lastname); = m_app.CommunicationsManager.UserProfileCacheService.GetUserDetails(firstname, lastname);
responseData["user_firstname"] = firstname; responseData["user_firstname"] = firstname;
responseData["user_lastname"] = lastname; responseData["user_lastname"] = lastname;
@ -1131,10 +1125,9 @@ namespace OpenSim.ApplicationPlugins.RemoteController
else else
{ {
responseData["success"] = true; responseData["success"] = true;
responseData["lastlogin"] = userInfo.UserProfile.LastLogin; responseData["lastlogin"] = userInfo.UserProfile.LastLogin;
} }
response.Value = responseData; response.Value = responseData;
} }
catch (Exception e) catch (Exception e)
@ -1252,7 +1245,7 @@ namespace OpenSim.ApplicationPlugins.RemoteController
if (requestData.ContainsKey("about_virtual_world")) if (requestData.ContainsKey("about_virtual_world"))
aboutAvatar = (string)requestData["about_virtual_world"]; aboutAvatar = (string)requestData["about_virtual_world"];
UserProfileData userProfile UserProfileData userProfile
= m_app.CommunicationsManager.UserService.GetUserProfile(firstname, lastname); = m_app.CommunicationsManager.UserService.GetUserProfile(firstname, lastname);
if (null == userProfile) if (null == userProfile)
@ -1308,20 +1301,18 @@ namespace OpenSim.ApplicationPlugins.RemoteController
m_log.Info("[RADMIN]: UpdateUserAccount: request complete"); m_log.Info("[RADMIN]: UpdateUserAccount: request complete");
return response; return response;
} }
/// <summary> /// <summary>
/// This method is called by the user-create and user-modify methods to establish /// This method is called by the user-create and user-modify methods to establish
/// or change, the user's appearance. Default avatar names can be specified via /// or change, the user's appearance. Default avatar names can be specified via
/// the config file, but must correspond to avatars in the default appearance /// the config file, but must correspond to avatars in the default appearance
/// file, or pre-existing in the user database. /// file, or pre-existing in the user database.
/// This should probably get moved into somewhere more core eventually. /// This should probably get moved into somewhere more core eventually.
/// </summary> /// </summary>
private void updateUserAppearance(Hashtable responseData, Hashtable requestData, UUID userid) private void updateUserAppearance(Hashtable responseData, Hashtable requestData, UUID userid)
{ {
m_log.DebugFormat("[RADMIN] updateUserAppearance"); m_log.DebugFormat("[RADMIN] updateUserAppearance");
string dmale = m_config.GetString("default_male", "Default Male"); string dmale = m_config.GetString("default_male", "Default Male");
@ -1347,7 +1338,7 @@ namespace OpenSim.ApplicationPlugins.RemoteController
break; break;
} }
} }
// Has an explicit model been specified? // Has an explicit model been specified?
if (requestData.Contains("model")) if (requestData.Contains("model"))
@ -1384,7 +1375,7 @@ namespace OpenSim.ApplicationPlugins.RemoteController
return; return;
} }
// Set current user's appearance. This bit is easy. The appearance structure is populated with // Set current user's appearance. This bit is easy. The appearance structure is populated with
// actual asset ids, however to complete the magic we need to populate the inventory with the // actual asset ids, however to complete the magic we need to populate the inventory with the
// assets in question. // assets in question.
@ -1393,7 +1384,7 @@ namespace OpenSim.ApplicationPlugins.RemoteController
m_log.DebugFormat("[RADMIN] Finished setting appearance for avatar {0}, using model {1}", m_log.DebugFormat("[RADMIN] Finished setting appearance for avatar {0}, using model {1}",
userid, model); userid, model);
} }
/// <summary> /// <summary>
/// This method is called by updateAvatarAppearance once any specified model has been /// This method is called by updateAvatarAppearance once any specified model has been
/// ratified, or an appropriate default value has been adopted. The intended prototype /// ratified, or an appropriate default value has been adopted. The intended prototype
@ -1402,19 +1393,18 @@ namespace OpenSim.ApplicationPlugins.RemoteController
private void establishAppearance(UUID dest, UUID srca) private void establishAppearance(UUID dest, UUID srca)
{ {
m_log.DebugFormat("[RADMIN] Initializing inventory for {0} from {1}", dest, srca); m_log.DebugFormat("[RADMIN] Initializing inventory for {0} from {1}", dest, srca);
AvatarAppearance ava = m_app.CommunicationsManager.AvatarService.GetUserAppearance(srca); AvatarAppearance ava = m_app.CommunicationsManager.AvatarService.GetUserAppearance(srca);
// If the model has no associated appearance we're done. // If the model has no associated appearance we're done.
// if (ava == null) // if (ava == null)
// { // {
// return new AvatarAppearance(); // return new AvatarAppearance();
// } // }
if (ava == null) if (ava == null)
return; return;
UICallback sic = new UICallback(); UICallback sic = new UICallback();
@ -1423,7 +1413,6 @@ namespace OpenSim.ApplicationPlugins.RemoteController
try try
{ {
Dictionary<UUID,UUID> imap = new Dictionary<UUID,UUID>(); Dictionary<UUID,UUID> imap = new Dictionary<UUID,UUID>();
iserv.GetUserInventory(dest, dic.callback); iserv.GetUserInventory(dest, dic.callback);
@ -1434,7 +1423,6 @@ namespace OpenSim.ApplicationPlugins.RemoteController
if (sic.OK && dic.OK) if (sic.OK && dic.OK)
{ {
InventoryFolderImpl efolder; InventoryFolderImpl efolder;
InventoryFolderImpl srcf = sic.root.FindFolderForType(5); InventoryFolderImpl srcf = sic.root.FindFolderForType(5);
InventoryFolderImpl dstf = dic.root.FindFolderForType(5); InventoryFolderImpl dstf = dic.root.FindFolderForType(5);
@ -1460,7 +1448,7 @@ namespace OpenSim.ApplicationPlugins.RemoteController
if (item.Folder == folder.ID) if (item.Folder == folder.ID)
{ {
InventoryItemBase dsti = new InventoryItemBase(); InventoryItemBase dsti = new InventoryItemBase();
dsti.ID = UUID.Random(); dsti.ID = UUID.Random();
dsti.Name = item.Name; dsti.Name = item.Name;
dsti.Description = item.Description; dsti.Description = item.Description;
dsti.InvType = item.InvType; dsti.InvType = item.InvType;
@ -1494,7 +1482,6 @@ namespace OpenSim.ApplicationPlugins.RemoteController
ava.SetWearable(i, dw); ava.SetWearable(i, dw);
} }
} }
} }
else else
{ {
@ -1502,7 +1489,6 @@ namespace OpenSim.ApplicationPlugins.RemoteController
} }
m_app.CommunicationsManager.AvatarService.UpdateUserAppearance(dest, ava); m_app.CommunicationsManager.AvatarService.UpdateUserAppearance(dest, ava);
} }
catch (Exception e) catch (Exception e)
{ {
@ -1510,16 +1496,15 @@ namespace OpenSim.ApplicationPlugins.RemoteController
dest, e.Message); dest, e.Message);
return; return;
} }
return;
return;
} }
///<summary> ///<summary>
/// This method is called if a given model avatar name can not be found. If the external /// This method is called if a given model avatar name can not be found. If the external
/// file has already been loaded once, then control returns immediately. If not, then it /// file has already been loaded once, then control returns immediately. If not, then it
/// looks for a default appearance file. This file contains XML definitions of zero or more named /// looks for a default appearance file. This file contains XML definitions of zero or more named
/// avatars, each avatar can specify zero or more "outfits". Each outfit is a collection /// avatars, each avatar can specify zero or more "outfits". Each outfit is a collection
/// of items that together, define a particular ensemble for the avatar. Each avatar should /// of items that together, define a particular ensemble for the avatar. Each avatar should
/// indicate which outfit is the default, and this outfit will be automatically worn. The /// indicate which outfit is the default, and this outfit will be automatically worn. The
/// other outfits are provided to allow "real" avatars a way to easily change their outfits. /// other outfits are provided to allow "real" avatars a way to easily change their outfits.
@ -1527,7 +1512,6 @@ namespace OpenSim.ApplicationPlugins.RemoteController
private bool createDefaultAvatars() private bool createDefaultAvatars()
{ {
// Only load once // Only load once
if (daload) if (daload)
@ -1543,10 +1527,8 @@ namespace OpenSim.ApplicationPlugins.RemoteController
try try
{ {
string dafn = null; string dafn = null;
//AnakinLohner 0.6.5-post-fixes
//m_config may be null if RemoteAdmin configuration secition is missing or disabled in OpenSim.ini //m_config may be null if RemoteAdmin configuration secition is missing or disabled in OpenSim.ini
if (m_config != null) if (m_config != null)
{ {
@ -1555,7 +1537,6 @@ namespace OpenSim.ApplicationPlugins.RemoteController
if (File.Exists(dafn)) if (File.Exists(dafn))
{ {
XmlDocument doc = new XmlDocument(); XmlDocument doc = new XmlDocument();
string name = "*unknown*"; string name = "*unknown*";
string email = "anon@anon"; string email = "anon@anon";
@ -1630,12 +1611,12 @@ namespace OpenSim.ApplicationPlugins.RemoteController
} }
m_log.DebugFormat("[RADMIN] User {0}[{1}] created or retrieved", name, ID); m_log.DebugFormat("[RADMIN] User {0}[{1}] created or retrieved", name, ID);
include = true; include = true;
} }
catch (Exception e) catch (Exception e)
{ {
m_log.DebugFormat("[RADMIN] Error creating user {0} : {1}", name, e.Message); m_log.DebugFormat("[RADMIN] Error creating user {0} : {1}", name, e.Message);
include = false; include = false;
} }
// OK, User has been created OK, now we can install the inventory. // OK, User has been created OK, now we can install the inventory.
@ -1654,7 +1635,7 @@ namespace OpenSim.ApplicationPlugins.RemoteController
{ {
mava = new AvatarAppearance(); mava = new AvatarAppearance();
} }
{ {
AvatarWearable[] wearables = mava.Wearables; AvatarWearable[] wearables = mava.Wearables;
for (int i=0; i<wearables.Length; i++) for (int i=0; i<wearables.Length; i++)
@ -1670,8 +1651,7 @@ namespace OpenSim.ApplicationPlugins.RemoteController
if (uic.OK) if (uic.OK)
try try
{ {
m_log.DebugFormat("[RADMIN] {0} folders, {1} items in inventory",
m_log.DebugFormat("[RADMIN] {0} folders, {1} items in inventory",
uic.folders.Count, uic.items.Count); uic.folders.Count, uic.items.Count);
InventoryFolderImpl cfolder = uic.root.FindFolderForType(5); InventoryFolderImpl cfolder = uic.root.FindFolderForType(5);
@ -1699,7 +1679,6 @@ namespace OpenSim.ApplicationPlugins.RemoteController
foreach (XmlElement outfit in outfits) foreach (XmlElement outfit in outfits)
{ {
m_log.DebugFormat("[RADMIN] Loading outfit {0} for {1}", m_log.DebugFormat("[RADMIN] Loading outfit {0} for {1}",
GetStringAttribute(outfit,"name","?"), GetStringAttribute(avatar,"name","?")); GetStringAttribute(outfit,"name","?"), GetStringAttribute(avatar,"name","?"));
@ -1707,7 +1686,7 @@ namespace OpenSim.ApplicationPlugins.RemoteController
select = (GetStringAttribute(outfit,"default","no") == "yes"); select = (GetStringAttribute(outfit,"default","no") == "yes");
efolder = null; efolder = null;
// If the folder already exists, re-use it. The defaults may // If the folder already exists, re-use it. The defaults may
// change over time. Augment only. // change over time. Augment only.
foreach (InventoryFolderImpl folder in uic.folders) foreach (InventoryFolderImpl folder in uic.folders)
{ {
@ -1756,10 +1735,10 @@ namespace OpenSim.ApplicationPlugins.RemoteController
InventoryItemBase iitem = null; InventoryItemBase iitem = null;
if ((iitem = efolder.FindAsset(assetid)) == null) if ((iitem = efolder.FindAsset(assetid)) == null)
{ {
iitem = new InventoryItemBase(); iitem = new InventoryItemBase();
iitem.ID = UUID.Random(); iitem.ID = UUID.Random();
iitem.Name = GetStringAttribute(item,"name",""); iitem.Name = GetStringAttribute(item,"name","");
iitem.Description = GetStringAttribute(item,"desc",""); iitem.Description = GetStringAttribute(item,"desc","");
iitem.InvType = GetIntegerAttribute(item,"invtype",-1); iitem.InvType = GetIntegerAttribute(item,"invtype",-1);
@ -1820,9 +1799,8 @@ namespace OpenSim.ApplicationPlugins.RemoteController
} }
return true; return true;
} }
/// <summary> /// <summary>
/// Load an OAR file into a region.. /// Load an OAR file into a region..
/// <summary> /// <summary>
@ -1859,9 +1837,8 @@ namespace OpenSim.ApplicationPlugins.RemoteController
{ {
m_log.Info("[RADMIN]: Received Load OAR Administrator Request"); m_log.Info("[RADMIN]: Received Load OAR Administrator Request");
//AnakinLohner 0.6.5-post-fixes
FailIfRemoteAdminDisabled("Load OAR"); FailIfRemoteAdminDisabled("Load OAR");
XmlRpcResponse response = new XmlRpcResponse(); XmlRpcResponse response = new XmlRpcResponse();
Hashtable responseData = new Hashtable(); Hashtable responseData = new Hashtable();
@ -1962,9 +1939,8 @@ namespace OpenSim.ApplicationPlugins.RemoteController
{ {
m_log.Info("[RADMIN]: Received Save OAR Administrator Request"); m_log.Info("[RADMIN]: Received Save OAR Administrator Request");
//AnakinLohner 0.6.5-post-fixes
FailIfRemoteAdminDisabled("Save OAR"); FailIfRemoteAdminDisabled("Save OAR");
XmlRpcResponse response = new XmlRpcResponse(); XmlRpcResponse response = new XmlRpcResponse();
Hashtable responseData = new Hashtable(); Hashtable responseData = new Hashtable();
@ -2003,7 +1979,6 @@ namespace OpenSim.ApplicationPlugins.RemoteController
IRegionArchiverModule archiver = scene.RequestModuleInterface<IRegionArchiverModule>(); IRegionArchiverModule archiver = scene.RequestModuleInterface<IRegionArchiverModule>();
if (archiver != null) if (archiver != null)
{ {
scene.EventManager.OnOarFileSaved += RemoteAdminOarSaveCompleted; scene.EventManager.OnOarFileSaved += RemoteAdminOarSaveCompleted;
@ -2014,11 +1989,9 @@ namespace OpenSim.ApplicationPlugins.RemoteController
else else
throw new Exception("Archiver module not present for scene"); throw new Exception("Archiver module not present for scene");
responseData["saved"] = true; responseData["saved"] = true;
response.Value = responseData; response.Value = responseData;
} }
catch (Exception e) catch (Exception e)
{ {
@ -2045,7 +2018,6 @@ namespace OpenSim.ApplicationPlugins.RemoteController
{ {
m_log.Info("[RADMIN]: Received Load XML Administrator Request"); m_log.Info("[RADMIN]: Received Load XML Administrator Request");
//AnakinLohner 0.6.5-post-fixes
FailIfRemoteAdminDisabled("Load XML"); FailIfRemoteAdminDisabled("Load XML");
XmlRpcResponse response = new XmlRpcResponse(); XmlRpcResponse response = new XmlRpcResponse();
@ -2129,12 +2101,10 @@ namespace OpenSim.ApplicationPlugins.RemoteController
} }
} }
public XmlRpcResponse XmlRpcSaveXMLMethod(XmlRpcRequest request, IPEndPoint remoteClient) public XmlRpcResponse XmlRpcSaveXMLMethod(XmlRpcRequest request, IPEndPoint remoteClient)
{ {
m_log.Info("[RADMIN]: Received Save XML Administrator Request"); m_log.Info("[RADMIN]: Received Save XML Administrator Request");
//AnakinLohner 0.6.5-post-fixes
FailIfRemoteAdminDisabled("Save XML"); FailIfRemoteAdminDisabled("Save XML");
XmlRpcResponse response = new XmlRpcResponse(); XmlRpcResponse response = new XmlRpcResponse();
@ -2220,7 +2190,6 @@ namespace OpenSim.ApplicationPlugins.RemoteController
{ {
m_log.Info("[RADMIN]: Received Query XML Administrator Request"); m_log.Info("[RADMIN]: Received Query XML Administrator Request");
//AnakinLohner 0.6.5-post-fixes
FailIfRemoteAdminDisabled("Query XML"); FailIfRemoteAdminDisabled("Query XML");
XmlRpcResponse response = new XmlRpcResponse(); XmlRpcResponse response = new XmlRpcResponse();
@ -2255,9 +2224,7 @@ namespace OpenSim.ApplicationPlugins.RemoteController
else throw new Exception("neither region_name nor region_uuid given"); else throw new Exception("neither region_name nor region_uuid given");
Scene s = m_app.SceneManager.CurrentScene; Scene s = m_app.SceneManager.CurrentScene;
int health = s.GetHealth(); int health = s.GetHealth();
responseData["health"] = health; responseData["health"] = health;
response.Value = responseData; response.Value = responseData;
@ -2280,7 +2247,6 @@ namespace OpenSim.ApplicationPlugins.RemoteController
{ {
m_log.Info("[RADMIN]: Received Command XML Administrator Request"); m_log.Info("[RADMIN]: Received Command XML Administrator Request");
//AnakinLohner 0.6.5-post-fixes
FailIfRemoteAdminDisabled("Command XML"); FailIfRemoteAdminDisabled("Command XML");
XmlRpcResponse response = new XmlRpcResponse(); XmlRpcResponse response = new XmlRpcResponse();
@ -2320,12 +2286,10 @@ namespace OpenSim.ApplicationPlugins.RemoteController
public XmlRpcResponse XmlRpcAccessListClear(XmlRpcRequest request, IPEndPoint remoteClient) public XmlRpcResponse XmlRpcAccessListClear(XmlRpcRequest request, IPEndPoint remoteClient)
{ {
m_log.Info("[RADMIN]: Received Access List Clear Request"); m_log.Info("[RADMIN]: Received Access List Clear Request");
//AnakinLohner 0.6.5-post-fixes
FailIfRemoteAdminDisabled("Access List Clear"); FailIfRemoteAdminDisabled("Access List Clear");
XmlRpcResponse response = new XmlRpcResponse(); XmlRpcResponse response = new XmlRpcResponse();
Hashtable responseData = new Hashtable(); Hashtable responseData = new Hashtable();
@ -2360,7 +2324,6 @@ namespace OpenSim.ApplicationPlugins.RemoteController
s.RegionInfo.EstateSettings.EstateAccess = new UUID[]{}; s.RegionInfo.EstateSettings.EstateAccess = new UUID[]{};
if (s.RegionInfo.Persistent) if (s.RegionInfo.Persistent)
s.RegionInfo.EstateSettings.Save(); s.RegionInfo.EstateSettings.Save();
} }
catch (Exception e) catch (Exception e)
{ {
@ -2368,7 +2331,6 @@ namespace OpenSim.ApplicationPlugins.RemoteController
responseData["success"] = false; responseData["success"] = false;
responseData["error"] = e.Message; responseData["error"] = e.Message;
} }
finally finally
{ {
@ -2381,12 +2343,10 @@ namespace OpenSim.ApplicationPlugins.RemoteController
public XmlRpcResponse XmlRpcAccessListAdd(XmlRpcRequest request, IPEndPoint remoteClient) public XmlRpcResponse XmlRpcAccessListAdd(XmlRpcRequest request, IPEndPoint remoteClient)
{ {
m_log.Info("[RADMIN]: Received Access List Add Request"); m_log.Info("[RADMIN]: Received Access List Add Request");
//AnakinLohner 0.6.5-post-fixes
FailIfRemoteAdminDisabled("Access List Add"); FailIfRemoteAdminDisabled("Access List Add");
XmlRpcResponse response = new XmlRpcResponse(); XmlRpcResponse response = new XmlRpcResponse();
Hashtable responseData = new Hashtable(); Hashtable responseData = new Hashtable();
@ -2419,7 +2379,7 @@ namespace OpenSim.ApplicationPlugins.RemoteController
int addk = 0; int addk = 0;
if (requestData.Contains("users")) if (requestData.Contains("users"))
{ {
UserProfileCacheService ups = m_app.CommunicationsManager.UserProfileCacheService; UserProfileCacheService ups = m_app.CommunicationsManager.UserProfileCacheService;
Scene s = m_app.SceneManager.CurrentScene; Scene s = m_app.SceneManager.CurrentScene;
@ -2450,7 +2410,6 @@ namespace OpenSim.ApplicationPlugins.RemoteController
} }
responseData["added"] = addk; responseData["added"] = addk;
} }
catch (Exception e) catch (Exception e)
{ {
@ -2458,7 +2417,6 @@ namespace OpenSim.ApplicationPlugins.RemoteController
responseData["success"] = false; responseData["success"] = false;
responseData["error"] = e.Message; responseData["error"] = e.Message;
} }
finally finally
{ {
@ -2471,12 +2429,10 @@ namespace OpenSim.ApplicationPlugins.RemoteController
public XmlRpcResponse XmlRpcAccessListRemove(XmlRpcRequest request, IPEndPoint remoteClient) public XmlRpcResponse XmlRpcAccessListRemove(XmlRpcRequest request, IPEndPoint remoteClient)
{ {
m_log.Info("[RADMIN]: Received Access List Remove Request"); m_log.Info("[RADMIN]: Received Access List Remove Request");
//AnakinLohner 0.6.5-post-fixes
FailIfRemoteAdminDisabled("Access List Remove"); FailIfRemoteAdminDisabled("Access List Remove");
XmlRpcResponse response = new XmlRpcResponse(); XmlRpcResponse response = new XmlRpcResponse();
Hashtable responseData = new Hashtable(); Hashtable responseData = new Hashtable();
@ -2509,7 +2465,7 @@ namespace OpenSim.ApplicationPlugins.RemoteController
int remk = 0; int remk = 0;
if (requestData.Contains("users")) if (requestData.Contains("users"))
{ {
UserProfileCacheService ups = m_app.CommunicationsManager.UserProfileCacheService; UserProfileCacheService ups = m_app.CommunicationsManager.UserProfileCacheService;
Scene s = m_app.SceneManager.CurrentScene; Scene s = m_app.SceneManager.CurrentScene;
@ -2539,7 +2495,6 @@ namespace OpenSim.ApplicationPlugins.RemoteController
} }
responseData["removed"] = remk; responseData["removed"] = remk;
} }
catch (Exception e) catch (Exception e)
{ {
@ -2547,7 +2502,6 @@ namespace OpenSim.ApplicationPlugins.RemoteController
responseData["success"] = false; responseData["success"] = false;
responseData["error"] = e.Message; responseData["error"] = e.Message;
} }
finally finally
{ {
@ -2560,12 +2514,10 @@ namespace OpenSim.ApplicationPlugins.RemoteController
public XmlRpcResponse XmlRpcAccessListList(XmlRpcRequest request, IPEndPoint remoteClient) public XmlRpcResponse XmlRpcAccessListList(XmlRpcRequest request, IPEndPoint remoteClient)
{ {
m_log.Info("[RADMIN]: Received Access List List Request"); m_log.Info("[RADMIN]: Received Access List List Request");
//AnakinLohner 0.6.5-post-fixes
FailIfRemoteAdminDisabled("Access List List"); FailIfRemoteAdminDisabled("Access List List");
XmlRpcResponse response = new XmlRpcResponse(); XmlRpcResponse response = new XmlRpcResponse();
Hashtable responseData = new Hashtable(); Hashtable responseData = new Hashtable();
@ -2608,9 +2560,8 @@ namespace OpenSim.ApplicationPlugins.RemoteController
users[user.ToString()] = udata.UserProfile.Name; users[user.ToString()] = udata.UserProfile.Name;
} }
} }
responseData["users"] = users;
responseData["users"] = users;
} }
catch (Exception e) catch (Exception e)
{ {
@ -2618,7 +2569,6 @@ namespace OpenSim.ApplicationPlugins.RemoteController
responseData["success"] = false; responseData["success"] = false;
responseData["error"] = e.Message; responseData["error"] = e.Message;
} }
finally finally
{ {
@ -2695,12 +2645,10 @@ namespace OpenSim.ApplicationPlugins.RemoteController
public void Dispose() public void Dispose()
{ {
} }
} }
class UICallback class UICallback
{ {
private Object uilock = new Object(); private Object uilock = new Object();
internal InventoryFolderImpl root = null; internal InventoryFolderImpl root = null;
internal List<InventoryFolderImpl> folders; internal List<InventoryFolderImpl> folders;
@ -2720,7 +2668,6 @@ namespace OpenSim.ApplicationPlugins.RemoteController
public void GetInventory() public void GetInventory()
{ {
Dictionary<UUID, InventoryFolderImpl> fmap = new Dictionary<UUID, InventoryFolderImpl>(); Dictionary<UUID, InventoryFolderImpl> fmap = new Dictionary<UUID, InventoryFolderImpl>();
if (OK == false) if (OK == false)
@ -2729,7 +2676,7 @@ namespace OpenSim.ApplicationPlugins.RemoteController
{ {
if (OK == false) if (OK == false)
System.Threading.Monitor.Wait(uilock); System.Threading.Monitor.Wait(uilock);
} }
} }
// Got the inventory OK. So now merge the content of the default appearance // Got the inventory OK. So now merge the content of the default appearance
@ -2774,8 +2721,6 @@ namespace OpenSim.ApplicationPlugins.RemoteController
{ {
fmap[item.Folder].Items.Add(item.ID, item); fmap[item.Folder].Items.Add(item.ID, item);
} }
} }
} }
} }

View File

@ -207,7 +207,7 @@ namespace OpenSim.ApplicationPlugins.Rest.Inventory
// This plugin will only be enabled if the broader // This plugin will only be enabled if the broader
// REST plugin mechanism is enabled. // REST plugin mechanism is enabled.
Rest.Log.InfoFormat("{0} Plugin is initializing", MsgId); //Rest.Log.InfoFormat("{0} Plugin is initializing", MsgId);
base.Initialise(openSim); base.Initialise(openSim);
@ -216,7 +216,7 @@ namespace OpenSim.ApplicationPlugins.Rest.Inventory
if (!IsEnabled) if (!IsEnabled)
{ {
Rest.Log.WarnFormat("{0} Plugins are disabled", MsgId); //Rest.Log.WarnFormat("{0} Plugins are disabled", MsgId);
return; return;
} }

View File

@ -218,7 +218,7 @@ namespace OpenSim.ApplicationPlugins.Rest.Regions
httpResponse.ContentType = "text/xml"; httpResponse.ContentType = "text/xml";
IRegionSerialiserModule serialiser = scene.RequestModuleInterface<IRegionSerialiserModule>(); IRegionSerialiserModule serialiser = scene.RequestModuleInterface<IRegionSerialiserModule>();
if (serialiser != null) if (serialiser != null)
serialiser.SavePrimsToXml2(scene, new StreamWriter(httpResponse.OutputStream), min, max); serialiser.SavePrimsToXml2(scene, new StreamWriter(httpResponse.OutputStream), min, max);
return ""; return "";

View File

@ -68,9 +68,10 @@ namespace OpenSim.ApplicationPlugins.Rest.Regions
base.Initialise(openSim); base.Initialise(openSim);
if (!IsEnabled) if (!IsEnabled)
{ {
m_log.WarnFormat("{0} Rest Plugins are disabled", MsgID); //m_log.WarnFormat("{0} Rest Plugins are disabled", MsgID);
return; return;
} }
m_log.InfoFormat("{0} REST region plugin enabled", MsgID); m_log.InfoFormat("{0} REST region plugin enabled", MsgID);
// add REST method handlers // add REST method handlers

View File

@ -216,7 +216,7 @@ namespace OpenSim.ApplicationPlugins.Rest
if (!_config.GetBoolean("enabled", false)) if (!_config.GetBoolean("enabled", false))
{ {
m_log.WarnFormat("{0} Rest Plugins are disabled", MsgID); //m_log.WarnFormat("{0} Rest Plugins are disabled", MsgID);
return; return;
} }

View File

@ -58,7 +58,7 @@ namespace OpenSim.Client.Linden
{ {
if (m_firstScene != null) if (m_firstScene != null)
{ {
return m_firstScene.CommsManager.GridService.RegionLoginsEnabled; return m_firstScene.SceneGridService.RegionLoginsEnabled;
} }
else else
{ {

View File

@ -62,7 +62,7 @@ namespace OpenSim.Client.Linden
{ {
if (m_firstScene != null) if (m_firstScene != null)
{ {
return m_firstScene.CommsManager.GridService.RegionLoginsEnabled; return m_firstScene.SceneGridService.RegionLoginsEnabled;
} }
else else
{ {

View File

@ -304,7 +304,7 @@ namespace OpenSim.Client.MXP.ClientStack
String typeName = ToOmType(primShape.PCode); String typeName = ToOmType(primShape.PCode);
m_log.Info("[MXP ClientStack] Transmitting Primitive" + typeName); m_log.Info("[MXP ClientStack] Transmitting Primitive" + typeName);
PerceptionEventMessage pe = new PerceptionEventMessage(); PerceptionEventMessage pe = new PerceptionEventMessage();
pe.ObjectFragment.ObjectId = objectID.Guid; pe.ObjectFragment.ObjectId = objectID.Guid;
pe.ObjectFragment.ParentObjectId = Guid.Empty; pe.ObjectFragment.ParentObjectId = Guid.Empty;

View File

@ -39,13 +39,15 @@ namespace OpenSim.Data
public string RegionName; public string RegionName;
public int posX; public int posX;
public int posY; public int posY;
public int sizeX;
public int sizeY;
public Dictionary<string, object> Data; public Dictionary<string, object> Data;
} }
/// <summary> /// <summary>
/// An interface for connecting to the authentication datastore /// An interface for connecting to the authentication datastore
/// </summary> /// </summary>
public interface IRegionData public interface IRegionData
{ {
RegionData Get(UUID regionID, UUID ScopeID); RegionData Get(UUID regionID, UUID ScopeID);
List<RegionData> Get(string regionName, UUID ScopeID); List<RegionData> Get(string regionName, UUID ScopeID);
@ -57,5 +59,6 @@ namespace OpenSim.Data
bool SetDataItem(UUID principalID, string item, string value); bool SetDataItem(UUID principalID, string item, string value);
bool Delete(UUID regionID); bool Delete(UUID regionID);
} }
} }

View File

@ -54,7 +54,7 @@ namespace OpenSim.Data
/// <summary> /// <summary>
/// Get a user from a given uri. /// Get a user from a given uri.
/// </summary> /// </summary>
/// <param name="uri"></param> /// <param name="uri"></param>
/// <returns>The user data profile. Null if no user is found.</returns> /// <returns>The user data profile. Null if no user is found.</returns>
UserProfileData GetUserByUri(Uri uri); UserProfileData GetUserByUri(Uri uri);

View File

@ -175,7 +175,7 @@ namespace OpenSim.Data.MSSQL
(@id, @name, @description, @assetType, @local, (@id, @name, @description, @assetType, @local,
@temporary, @create_time, @access_time, @data)"; @temporary, @create_time, @access_time, @data)";
string assetName = asset.Name; string assetName = asset.Name;
if (asset.Name.Length > 64) if (asset.Name.Length > 64)
{ {
assetName = asset.Name.Substring(0, 64); assetName = asset.Name.Substring(0, 64);
@ -223,7 +223,7 @@ namespace OpenSim.Data.MSSQL
local = @local, temporary = @temporary, data = @data local = @local, temporary = @temporary, data = @data
WHERE id = @keyId;"; WHERE id = @keyId;";
string assetName = asset.Name; string assetName = asset.Name;
if (asset.Name.Length > 64) if (asset.Name.Length > 64)
{ {
assetName = asset.Name.Substring(0, 64); assetName = asset.Name.Substring(0, 64);

View File

@ -135,7 +135,7 @@ namespace OpenSim.Data.MSSQL
insertBuilder.AppendFormat("insert into '{0}' ('UUID', '", m_Realm); insertBuilder.AppendFormat("insert into '{0}' ('UUID', '", m_Realm);
insertBuilder.Append(String.Join("', '", fields)); insertBuilder.Append(String.Join("', '", fields));
insertBuilder.Append("') values ( @principalID, @"); insertBuilder.Append("') values (@principalID, @");
insertBuilder.Append(String.Join(", @", fields)); insertBuilder.Append(String.Join(", @", fields));
insertBuilder.Append(")"); insertBuilder.Append(")");

View File

@ -428,7 +428,7 @@ namespace OpenSim.Data.MSSQL
@inventoryBasePermissions, @inventoryEveryOnePermissions, @inventoryGroupPermissions, @salePrice, @saleType, @inventoryBasePermissions, @inventoryEveryOnePermissions, @inventoryGroupPermissions, @salePrice, @saleType,
@creationDate, @groupID, @groupOwned, @flags)"; @creationDate, @groupID, @groupOwned, @flags)";
string itemName = item.Name; string itemName = item.Name;
if (item.Name.Length > 64) if (item.Name.Length > 64)
{ {
itemName = item.Name.Substring(0, 64); itemName = item.Name.Substring(0, 64);
@ -529,7 +529,7 @@ namespace OpenSim.Data.MSSQL
{ {
itemDesc = item.Description.Substring(0, 128); itemDesc = item.Description.Substring(0, 128);
m_log.Warn("[INVENTORY DB]: Description field truncated from " + item.Description.Length.ToString() + " to " + itemDesc.Length.ToString() + " characters on update"); m_log.Warn("[INVENTORY DB]: Description field truncated from " + item.Description.Length.ToString() + " to " + itemDesc.Length.ToString() + " characters on update");
} }
using (AutoClosingSqlCommand command = database.Query(sql)) using (AutoClosingSqlCommand command = database.Query(sql))
{ {

View File

@ -146,7 +146,7 @@ namespace OpenSim.Data.MSSQL
sceneObjectPart.Name, sceneObjectPart.UUID, sceneObjectPart.GroupPosition, groupID); sceneObjectPart.Name, sceneObjectPart.UUID, sceneObjectPart.GroupPosition, groupID);
sceneObjectPart.UUID = groupID; sceneObjectPart.UUID = groupID;
} }
grp = new SceneObjectGroup(sceneObjectPart); grp = new SceneObjectGroup(sceneObjectPart);
} }

View File

@ -52,7 +52,7 @@ namespace OpenSim.Data.MSSQL
conn.Open(); conn.Open();
Migration m = new Migration(conn, GetType().Assembly, "UserStore"); Migration m = new Migration(conn, GetType().Assembly, "UserStore");
m.Update(); m.Update();
} }
} }
public List<UserAccountData> Query(UUID principalID, UUID scopeID, string query) public List<UserAccountData> Query(UUID principalID, UUID scopeID, string query)
@ -152,7 +152,7 @@ namespace OpenSim.Data.MSSQL
StringBuilder insertBuilder = new StringBuilder(); StringBuilder insertBuilder = new StringBuilder();
insertBuilder.AppendFormat("insert into '{0}' ('UUID', 'ScopeID', '", m_Realm); insertBuilder.AppendFormat("insert into '{0}' ('UUID', 'ScopeID', '", m_Realm);
insertBuilder.Append(String.Join("', '", fields)); insertBuilder.Append(String.Join("', '", fields));
insertBuilder.Append("') values ( @principalID, @scopeID, @"); insertBuilder.Append("') values (@principalID, @scopeID, @");
insertBuilder.Append(String.Join(", @", fields)); insertBuilder.Append(String.Join(", @", fields));
insertBuilder.Append(")"); insertBuilder.Append(")");

View File

@ -1146,7 +1146,7 @@ ELSE
if (reader.IsDBNull(reader.GetOrdinal("homeRegionID"))) if (reader.IsDBNull(reader.GetOrdinal("homeRegionID")))
retval.HomeRegionID = UUID.Zero; retval.HomeRegionID = UUID.Zero;
else else
retval.HomeRegionID = new UUID((Guid)reader["homeRegionID"]); retval.HomeRegionID = new UUID((Guid)reader["homeRegionID"]);
retval.Created = Convert.ToInt32(reader["created"].ToString()); retval.Created = Convert.ToInt32(reader["created"].ToString());
retval.LastLogin = Convert.ToInt32(reader["lastLogin"].ToString()); retval.LastLogin = Convert.ToInt32(reader["lastLogin"].ToString());
@ -1200,7 +1200,7 @@ ELSE
if (reader.IsDBNull(reader.GetOrdinal("partner"))) if (reader.IsDBNull(reader.GetOrdinal("partner")))
retval.Partner = UUID.Zero; retval.Partner = UUID.Zero;
else else
retval.Partner = new UUID((Guid)reader["partner"]); retval.Partner = new UUID((Guid)reader["partner"]);
} }
else else
{ {

View File

@ -204,7 +204,7 @@ namespace OpenSim.Data.MySQL
"VALUES(?id, ?name, ?description, ?assetType, ?local, ?temporary, ?create_time, ?access_time, ?data)", "VALUES(?id, ?name, ?description, ?assetType, ?local, ?temporary, ?create_time, ?access_time, ?data)",
_dbConnection.Connection); _dbConnection.Connection);
string assetName = asset.Name; string assetName = asset.Name;
if (asset.Name.Length > 64) if (asset.Name.Length > 64)
{ {
assetName = asset.Name.Substring(0, 64); assetName = asset.Name.Substring(0, 64);

View File

@ -127,7 +127,7 @@ namespace OpenSim.Data.MySQL
{ {
string insert = "insert into `" + m_Realm + "` (`UUID`, `" + string insert = "insert into `" + m_Realm + "` (`UUID`, `" +
String.Join("`, `", fields) + String.Join("`, `", fields) +
"`) values ( ?principalID, ?" + String.Join(", ?", fields) + ")"; "`) values (?principalID, ?" + String.Join(", ?", fields) + ")";
cmd.CommandText = insert; cmd.CommandText = insert;

View File

@ -325,10 +325,10 @@ namespace OpenSim.Data.MySQL
UUID GroupID = UUID.Zero; UUID GroupID = UUID.Zero;
UUID.TryParse((string)reader["avatarID"], out Owner); UUID.TryParse((string)reader["avatarID"], out Owner);
UUID.TryParse((string)reader["groupID"], out GroupID); UUID.TryParse((string)reader["groupID"], out GroupID);
item.Owner = Owner; item.Owner = Owner;
item.GroupID = GroupID; item.GroupID = GroupID;
// Rest of the parsing. If these UUID's fail, we're dead anyway // Rest of the parsing. If these UUID's fail, we're dead anyway
item.ID = new UUID((string) reader["inventoryID"]); item.ID = new UUID((string) reader["inventoryID"]);
item.AssetID = new UUID((string) reader["assetID"]); item.AssetID = new UUID((string) reader["assetID"]);
item.AssetType = (int) reader["assetType"]; item.AssetType = (int) reader["assetType"];
@ -472,7 +472,7 @@ namespace OpenSim.Data.MySQL
+ ", ?inventoryBasePermissions, ?inventoryEveryOnePermissions, ?inventoryGroupPermissions, ?salePrice, ?saleType, ?creationDate" + ", ?inventoryBasePermissions, ?inventoryEveryOnePermissions, ?inventoryGroupPermissions, ?salePrice, ?saleType, ?creationDate"
+ ", ?groupID, ?groupOwned, ?flags)"; + ", ?groupID, ?groupOwned, ?flags)";
string itemName = item.Name; string itemName = item.Name;
if (item.Name.Length > 64) if (item.Name.Length > 64)
{ {
itemName = item.Name.Substring(0, 64); itemName = item.Name.Substring(0, 64);
@ -484,7 +484,7 @@ namespace OpenSim.Data.MySQL
{ {
itemDesc = item.Description.Substring(0, 128); itemDesc = item.Description.Substring(0, 128);
m_log.Warn("[INVENTORY DB]: Description field truncated from " + item.Description.Length + " to " + itemDesc.Length + " characters on add item"); m_log.Warn("[INVENTORY DB]: Description field truncated from " + item.Description.Length + " to " + itemDesc.Length + " characters on add item");
} }
try try
{ {
@ -590,12 +590,12 @@ namespace OpenSim.Data.MySQL
"REPLACE INTO inventoryfolders (folderID, agentID, parentFolderID, folderName, type, version) VALUES "; "REPLACE INTO inventoryfolders (folderID, agentID, parentFolderID, folderName, type, version) VALUES ";
sql += "(?folderID, ?agentID, ?parentFolderID, ?folderName, ?type, ?version)"; sql += "(?folderID, ?agentID, ?parentFolderID, ?folderName, ?type, ?version)";
string folderName = folder.Name; string folderName = folder.Name;
if (folderName.Length > 64) if (folderName.Length > 64)
{ {
folderName = folderName.Substring(0, 64); folderName = folderName.Substring(0, 64);
m_log.Warn("[INVENTORY DB]: Name field truncated from " + folder.Name.Length + " to " + folderName.Length + " characters on add folder"); m_log.Warn("[INVENTORY DB]: Name field truncated from " + folder.Name.Length + " to " + folderName.Length + " characters on add folder");
} }
database.CheckConnection(); database.CheckConnection();

View File

@ -464,7 +464,7 @@ namespace OpenSim.Data.MySQL
prim.Name, prim.UUID, prim.GroupPosition, groupID); prim.Name, prim.UUID, prim.GroupPosition, groupID);
prim.UUID = groupID; prim.UUID = groupID;
} }
grp = new SceneObjectGroup(prim); grp = new SceneObjectGroup(prim);
} }
@ -533,7 +533,7 @@ namespace OpenSim.Data.MySQL
/// <summary> /// <summary>
/// Load in a prim's persisted inventory. /// Load in a prim's persisted inventory.
/// </summary> /// </summary>
/// <param name="prim">The prim</param> /// <param name="prim">The prim</param>
private void LoadItems(SceneObjectPart prim) private void LoadItems(SceneObjectPart prim)
{ {
lock (m_Connection) lock (m_Connection)
@ -773,7 +773,7 @@ namespace OpenSim.Data.MySQL
"use_estate_sun, fixed_sun, sun_position, " + "use_estate_sun, fixed_sun, sun_position, " +
"covenant, Sandbox, sunvectorx, sunvectory, " + "covenant, Sandbox, sunvectorx, sunvectory, " +
"sunvectorz, loaded_creation_datetime, " + "sunvectorz, loaded_creation_datetime, " +
"loaded_creation_id) values ( ?RegionUUID, ?BlockTerraform, " + "loaded_creation_id) values (?RegionUUID, ?BlockTerraform, " +
"?BlockFly, ?AllowDamage, ?RestrictPushing, " + "?BlockFly, ?AllowDamage, ?RestrictPushing, " +
"?AllowLandResell, ?AllowLandJoinDivide, " + "?AllowLandResell, ?AllowLandJoinDivide, " +
"?BlockShowInSearch, ?AgentLimit, ?ObjectBonus, " + "?BlockShowInSearch, ?AgentLimit, ?ObjectBonus, " +

View File

@ -39,7 +39,7 @@ namespace OpenSim.Data.MySQL
{ {
private string m_Realm; private string m_Realm;
private List<string> m_ColumnNames = null; private List<string> m_ColumnNames = null;
private int m_LastExpire = 0; // private int m_LastExpire = 0;
public MySqlRegionData(string connectionString, string realm) public MySqlRegionData(string connectionString, string realm)
: base(connectionString) : base(connectionString)
@ -77,7 +77,7 @@ namespace OpenSim.Data.MySQL
cmd.Parameters.AddWithValue("?scopeID", scopeID.ToString()); cmd.Parameters.AddWithValue("?scopeID", scopeID.ToString());
List<RegionData> ret = RunCommand(cmd); List<RegionData> ret = RunCommand(cmd);
if (ret == null) if (ret.Count == 0)
return null; return null;
return ret[0]; return ret[0];
@ -95,7 +95,7 @@ namespace OpenSim.Data.MySQL
cmd.Parameters.AddWithValue("?scopeID", scopeID.ToString()); cmd.Parameters.AddWithValue("?scopeID", scopeID.ToString());
List<RegionData> ret = RunCommand(cmd); List<RegionData> ret = RunCommand(cmd);
if (ret == null) if (ret.Count == 0)
return null; return null;
return ret[0]; return ret[0];
@ -138,6 +138,8 @@ namespace OpenSim.Data.MySQL
ret.RegionName = result["regionName"].ToString(); ret.RegionName = result["regionName"].ToString();
ret.posX = Convert.ToInt32(result["locX"]); ret.posX = Convert.ToInt32(result["locX"]);
ret.posY = Convert.ToInt32(result["locY"]); ret.posY = Convert.ToInt32(result["locY"]);
ret.sizeX = Convert.ToInt32(result["sizeX"]);
ret.sizeY = Convert.ToInt32(result["sizeY"]);
if (m_ColumnNames == null) if (m_ColumnNames == null)
{ {
@ -170,10 +172,7 @@ namespace OpenSim.Data.MySQL
result.Close(); result.Close();
CloseReaderCommand(cmd); CloseReaderCommand(cmd);
if (retList.Count > 0) return retList;
return retList;
return null;
} }
public bool Store(RegionData data) public bool Store(RegionData data)
@ -188,21 +187,25 @@ namespace OpenSim.Data.MySQL
data.Data.Remove("posX"); data.Data.Remove("posX");
if (data.Data.ContainsKey("posY")) if (data.Data.ContainsKey("posY"))
data.Data.Remove("posY"); data.Data.Remove("posY");
if (data.Data.ContainsKey("sizeX"))
data.Data.Remove("sizeX");
if (data.Data.ContainsKey("sizeY"))
data.Data.Remove("sizeY");
if (data.Data.ContainsKey("locX"))
data.Data.Remove("locX");
if (data.Data.ContainsKey("locY"))
data.Data.Remove("locY");
string[] fields = new List<string>(data.Data.Keys).ToArray(); string[] fields = new List<string>(data.Data.Keys).ToArray();
MySqlCommand cmd = new MySqlCommand(); MySqlCommand cmd = new MySqlCommand();
string update = "update `"+m_Realm+"` set "; string update = "update `"+m_Realm+"` set locX=?posX, locY=?posY, sizeX=?sizeX, sizeY=?sizeY";
bool first = true;
foreach (string field in fields) foreach (string field in fields)
{ {
if (!first) update += ", ";
update += ", ";
update += "`" + field + "` = ?"+field; update += "`" + field + "` = ?"+field;
first = false;
cmd.Parameters.AddWithValue("?"+field, data.Data[field]); cmd.Parameters.AddWithValue("?"+field, data.Data[field]);
} }
@ -213,13 +216,18 @@ namespace OpenSim.Data.MySQL
cmd.CommandText = update; cmd.CommandText = update;
cmd.Parameters.AddWithValue("?regionID", data.RegionID.ToString()); cmd.Parameters.AddWithValue("?regionID", data.RegionID.ToString());
cmd.Parameters.AddWithValue("?regionName", data.RegionName);
cmd.Parameters.AddWithValue("?scopeID", data.ScopeID.ToString()); cmd.Parameters.AddWithValue("?scopeID", data.ScopeID.ToString());
cmd.Parameters.AddWithValue("?posX", data.posX.ToString());
cmd.Parameters.AddWithValue("?posY", data.posY.ToString());
cmd.Parameters.AddWithValue("?sizeX", data.sizeX.ToString());
cmd.Parameters.AddWithValue("?sizeY", data.sizeY.ToString());
if (ExecuteNonQuery(cmd) < 1) if (ExecuteNonQuery(cmd) < 1)
{ {
string insert = "insert into `" + m_Realm + "` (`uuid`, `ScopeID`, `" + string insert = "insert into `" + m_Realm + "` (`uuid`, `ScopeID`, `locX`, `locY`, `sizeX`, `sizeY`, `regionName`, `" +
String.Join("`, `", fields) + String.Join("`, `", fields) +
"`) values ( ?regionID, ?scopeID, ?" + String.Join(", ?", fields) + ")"; "`) values ( ?regionID, ?scopeID, ?posX, ?posY, ?sizeX, ?sizeY, ?regionName, ?" + String.Join(", ?", fields) + ")";
cmd.CommandText = insert; cmd.CommandText = insert;

View File

@ -39,7 +39,7 @@ namespace OpenSim.Data.MySQL
{ {
private string m_Realm; private string m_Realm;
private List<string> m_ColumnNames = null; private List<string> m_ColumnNames = null;
private int m_LastExpire = 0; // private int m_LastExpire = 0;
public MySqlUserAccountData(string connectionString, string realm) public MySqlUserAccountData(string connectionString, string realm)
: base(connectionString) : base(connectionString)
@ -146,7 +146,7 @@ namespace OpenSim.Data.MySQL
{ {
string insert = "insert into `" + m_Realm + "` (`UUID`, `ScopeID`, `" + string insert = "insert into `" + m_Realm + "` (`UUID`, `ScopeID`, `" +
String.Join("`, `", fields) + String.Join("`, `", fields) +
"`) values ( ?principalID, ?scopeID, ?" + String.Join(", ?", fields) + ")"; "`) values (?principalID, ?scopeID, ?" + String.Join(", ?", fields) + ")";
cmd.CommandText = insert; cmd.CommandText = insert;

View File

@ -632,7 +632,7 @@ namespace OpenSim.Data.MySQL
UUID zero = UUID.Zero; UUID zero = UUID.Zero;
if (user.ID == zero) if (user.ID == zero)
{ {
return; return;
} }
MySQLSuperManager dbm = GetLockedConnection("AddNewUserProfile"); MySQLSuperManager dbm = GetLockedConnection("AddNewUserProfile");
@ -666,7 +666,7 @@ namespace OpenSim.Data.MySQL
{ {
UUID zero = UUID.Zero; UUID zero = UUID.Zero;
if (agent.ProfileID == zero || agent.SessionID == zero) if (agent.ProfileID == zero || agent.SessionID == zero)
return; return;
MySQLSuperManager dbm = GetLockedConnection("AddNewUserAgent"); MySQLSuperManager dbm = GetLockedConnection("AddNewUserAgent");
try try

View File

@ -0,0 +1,6 @@
BEGIN;
ALTER TABLE regions add column sizeX integer not null default 0;
ALTER TABLE regions add column sizeY integer not null default 0;
COMMIT;

View File

@ -155,7 +155,7 @@ namespace OpenSim.Data.NHibernate
m_log.ErrorFormat("[NHIBERNATE] {0} of id {1} loading threw exception: " + e.ToString(), type.Name, id); m_log.ErrorFormat("[NHIBERNATE] {0} of id {1} loading threw exception: " + e.ToString(), type.Name, id);
} }
return obj; return obj;
} }
} }
/// <summary> /// <summary>

View File

@ -86,7 +86,7 @@ namespace OpenSim.Data.NHibernate
m_log.InfoFormat("[NHIBERNATE] GetUserByUUID: {0} ", uuid); m_log.InfoFormat("[NHIBERNATE] GetUserByUUID: {0} ", uuid);
user = (UserProfileData)manager.Get(typeof(UserProfileData), uuid); user = (UserProfileData)manager.Get(typeof(UserProfileData), uuid);
if (user != null) if (user != null)
{ {
UserAgentData agent = GetAgentByUUID(uuid); UserAgentData agent = GetAgentByUUID(uuid);
if (agent != null) if (agent != null)
@ -245,7 +245,7 @@ namespace OpenSim.Data.NHibernate
UserProfileData user=GetUserByUUID(agentID); UserProfileData user=GetUserByUUID(agentID);
user.WebLoginKey = webLoginKey; user.WebLoginKey = webLoginKey;
UpdateUserProfile(user); UpdateUserProfile(user);
return; return;
} }
public override void AddNewUserFriend(UUID ownerId, UUID friendId, uint perms) public override void AddNewUserFriend(UUID ownerId, UUID friendId, uint perms)
@ -258,7 +258,7 @@ namespace OpenSim.Data.NHibernate
{ {
manager.Insert(new UserFriend(UUID.Random(), friendId, ownerId, perms)); manager.Insert(new UserFriend(UUID.Random(), friendId, ownerId, perms));
} }
return; return;
} }
private bool FriendRelationExists(UUID ownerId, UUID friendId) private bool FriendRelationExists(UUID ownerId, UUID friendId)

View File

@ -40,13 +40,14 @@ namespace OpenSim.Data.Null
public NullRegionData(string connectionString, string realm) public NullRegionData(string connectionString, string realm)
{ {
//Console.WriteLine("[XXX] NullRegionData constructor");
} }
public List<RegionData> Get(string regionName, UUID scopeID) public List<RegionData> Get(string regionName, UUID scopeID)
{ {
List<RegionData> ret = new List<RegionData>(); List<RegionData> ret = new List<RegionData>();
foreach(RegionData r in m_regionData.Values) foreach (RegionData r in m_regionData.Values)
{ {
if (regionName.Contains("%")) if (regionName.Contains("%"))
{ {
@ -70,7 +71,7 @@ namespace OpenSim.Data.Null
{ {
List<RegionData> ret = new List<RegionData>(); List<RegionData> ret = new List<RegionData>();
foreach(RegionData r in m_regionData.Values) foreach (RegionData r in m_regionData.Values)
{ {
if (r.posX == posX && r.posY == posY) if (r.posX == posX && r.posY == posY)
ret.Add(r); ret.Add(r);
@ -94,16 +95,13 @@ namespace OpenSim.Data.Null
{ {
List<RegionData> ret = new List<RegionData>(); List<RegionData> ret = new List<RegionData>();
foreach(RegionData r in m_regionData.Values) foreach (RegionData r in m_regionData.Values)
{ {
if (r.posX >= startX && r.posX <= endX && r.posY >= startY && r.posY <= endY) if (r.posX >= startX && r.posX <= endX && r.posY >= startY && r.posY <= endY)
ret.Add(r); ret.Add(r);
} }
if (ret.Count > 0) return ret;
return ret;
return null;
} }
public bool Store(RegionData data) public bool Store(RegionData data)

View File

@ -137,7 +137,7 @@ namespace OpenSim.Data
public uint maturity; public uint maturity;
//Data Wrappers //Data Wrappers
public string RegionName public string RegionName
{ {
get { return regionName; } get { return regionName; }

View File

@ -124,7 +124,7 @@ namespace OpenSim.Data.SQLite
//m_log.Info("[ASSET DB]: Creating Asset " + asset.FullID.ToString()); //m_log.Info("[ASSET DB]: Creating Asset " + asset.FullID.ToString());
if (ExistsAsset(asset.FullID)) if (ExistsAsset(asset.FullID))
{ {
LogAssetLoad(asset); //LogAssetLoad(asset);
lock (this) lock (this)
{ {
@ -173,7 +173,7 @@ namespace OpenSim.Data.SQLite
int assetLength = (asset.Data != null) ? asset.Data.Length : 0; int assetLength = (asset.Data != null) ? asset.Data.Length : 0;
m_log.Info("[ASSET DB]: " + m_log.Debug("[ASSET DB]: " +
string.Format("Loaded {5} {4} Asset: [{0}][{3}] \"{1}\":{2} ({6} bytes)", string.Format("Loaded {5} {4} Asset: [{0}][{3}] \"{1}\":{2} ({6} bytes)",
asset.FullID, asset.Name, asset.Description, asset.Type, asset.FullID, asset.Name, asset.Description, asset.Type,
temporary, local, assetLength)); temporary, local, assetLength));

View File

@ -496,7 +496,7 @@ namespace OpenSim.Data.SQLite
{ {
//m_log.DebugFormat("[DATASTORE]: Loading inventory for {0}, {1}", prim.Name, prim.UUID); //m_log.DebugFormat("[DATASTORE]: Loading inventory for {0}, {1}", prim.Name, prim.UUID);
DataTable dbItems = ds.Tables["primitems"]; DataTable dbItems = ds.Tables["primitems"];
String sql = String.Format("primID = '{0}'", prim.UUID.ToString()); String sql = String.Format("primID = '{0}'", prim.UUID.ToString());
DataRow[] dbItemRows = dbItems.Select(sql); DataRow[] dbItemRows = dbItems.Select(sql);
IList<TaskInventoryItem> inventory = new List<TaskInventoryItem>(); IList<TaskInventoryItem> inventory = new List<TaskInventoryItem>();

View File

@ -60,7 +60,7 @@ namespace OpenSim.Data.Tests
public UUID item2; public UUID item2;
public UUID item3; public UUID item3;
public static Random random; public static Random random;
public string itemname1 = "item1"; public string itemname1 = "item1";
@ -173,7 +173,7 @@ namespace OpenSim.Data.Tests
UUID tmp0 = UUID.Random(); UUID tmp0 = UUID.Random();
UUID tmp1 = UUID.Random(); UUID tmp1 = UUID.Random();
UUID tmp2 = UUID.Random(); UUID tmp2 = UUID.Random();
UUID tmp3 = UUID.Random(); UUID tmp3 = UUID.Random();
UUID newregion = UUID.Random(); UUID newregion = UUID.Random();
SceneObjectPart p1 = NewSOP("SoP 1",tmp1); SceneObjectPart p1 = NewSOP("SoP 1",tmp1);
SceneObjectPart p2 = NewSOP("SoP 2",tmp2); SceneObjectPart p2 = NewSOP("SoP 2",tmp2);
@ -224,7 +224,7 @@ namespace OpenSim.Data.Tests
random.NextBytes(partsys); random.NextBytes(partsys);
DateTime expires = new DateTime(2008, 12, 20); DateTime expires = new DateTime(2008, 12, 20);
DateTime rezzed = new DateTime(2009, 07, 15); DateTime rezzed = new DateTime(2009, 07, 15);
Vector3 groupos = new Vector3(random.Next(),random.Next(),random.Next()); Vector3 groupos = new Vector3(random.Next(),random.Next(),random.Next());
Vector3 offset = new Vector3(random.Next(),random.Next(),random.Next()); Vector3 offset = new Vector3(random.Next(),random.Next(),random.Next());
Quaternion rotoff = new Quaternion(random.Next(),random.Next(),random.Next(),random.Next()); Quaternion rotoff = new Quaternion(random.Next(),random.Next(),random.Next(),random.Next());
Vector3 velocity = new Vector3(random.Next(),random.Next(),random.Next()); Vector3 velocity = new Vector3(random.Next(),random.Next(),random.Next());
@ -261,7 +261,7 @@ namespace OpenSim.Data.Tests
sop.Shape = pbshap; sop.Shape = pbshap;
sop.GroupPosition = groupos; sop.GroupPosition = groupos;
sop.RotationOffset = rotoff; sop.RotationOffset = rotoff;
sop.CreatorID = creator; sop.CreatorID = creator;
sop.InventorySerial = iserial; sop.InventorySerial = iserial;
sop.TaskInventory = dic; sop.TaskInventory = dic;
sop.ObjectFlags = objf; sop.ObjectFlags = objf;
@ -306,7 +306,7 @@ namespace OpenSim.Data.Tests
Assert.That(expires,Is.EqualTo(sop.Expires), "Assert.That(expires,Is.EqualTo(sop.Expires))"); Assert.That(expires,Is.EqualTo(sop.Expires), "Assert.That(expires,Is.EqualTo(sop.Expires))");
Assert.That(rezzed,Is.EqualTo(sop.Rezzed), "Assert.That(rezzed,Is.EqualTo(sop.Rezzed))"); Assert.That(rezzed,Is.EqualTo(sop.Rezzed), "Assert.That(rezzed,Is.EqualTo(sop.Rezzed))");
Assert.That(offset,Is.EqualTo(sop.OffsetPosition), "Assert.That(offset,Is.EqualTo(sop.OffsetPosition))"); Assert.That(offset,Is.EqualTo(sop.OffsetPosition), "Assert.That(offset,Is.EqualTo(sop.OffsetPosition))");
Assert.That(velocity,Is.EqualTo(sop.Velocity), "Assert.That(velocity,Is.EqualTo(sop.Velocity))"); Assert.That(velocity,Is.EqualTo(sop.Velocity), "Assert.That(velocity,Is.EqualTo(sop.Velocity))");
Assert.That(angvelo,Is.EqualTo(sop.AngularVelocity), "Assert.That(angvelo,Is.EqualTo(sop.AngularVelocity))"); Assert.That(angvelo,Is.EqualTo(sop.AngularVelocity), "Assert.That(angvelo,Is.EqualTo(sop.AngularVelocity))");
Assert.That(accel,Is.EqualTo(sop.Acceleration), "Assert.That(accel,Is.EqualTo(sop.Acceleration))"); Assert.That(accel,Is.EqualTo(sop.Acceleration), "Assert.That(accel,Is.EqualTo(sop.Acceleration))");
Assert.That(description,Is.EqualTo(sop.Description), "Assert.That(description,Is.EqualTo(sop.Description))"); Assert.That(description,Is.EqualTo(sop.Description), "Assert.That(description,Is.EqualTo(sop.Description))");
@ -319,7 +319,7 @@ namespace OpenSim.Data.Tests
Assert.That(scale,Is.EqualTo(sop.Scale), "Assert.That(scale,Is.EqualTo(sop.Scale))"); Assert.That(scale,Is.EqualTo(sop.Scale), "Assert.That(scale,Is.EqualTo(sop.Scale))");
Assert.That(updatef,Is.EqualTo(sop.UpdateFlag), "Assert.That(updatef,Is.EqualTo(sop.UpdateFlag))"); Assert.That(updatef,Is.EqualTo(sop.UpdateFlag), "Assert.That(updatef,Is.EqualTo(sop.UpdateFlag))");
// This is necessary or object will not be inserted in DB // This is necessary or object will not be inserted in DB
sop.ObjectFlags = 0; sop.ObjectFlags = 0;
SceneObjectGroup sog = new SceneObjectGroup(sop); SceneObjectGroup sog = new SceneObjectGroup(sop);
@ -332,11 +332,11 @@ namespace OpenSim.Data.Tests
// Makes sure there are no double insertions: // Makes sure there are no double insertions:
db.StoreObject(sog,region3); db.StoreObject(sog,region3);
sogs = db.LoadObjects(region3); sogs = db.LoadObjects(region3);
Assert.That(sogs.Count, Is.EqualTo(1), "Assert.That(sogs.Count, Is.EqualTo(1))"); Assert.That(sogs.Count, Is.EqualTo(1), "Assert.That(sogs.Count, Is.EqualTo(1))");
// Tests if the parameters were inserted correctly // Tests if the parameters were inserted correctly
SceneObjectPart p = sogs[0].RootPart; SceneObjectPart p = sogs[0].RootPart;
Assert.That(regionh,Is.EqualTo(p.RegionHandle), "Assert.That(regionh,Is.EqualTo(p.RegionHandle))"); Assert.That(regionh,Is.EqualTo(p.RegionHandle), "Assert.That(regionh,Is.EqualTo(p.RegionHandle))");
//Assert.That(localid,Is.EqualTo(p.LocalId), "Assert.That(localid,Is.EqualTo(p.LocalId))"); //Assert.That(localid,Is.EqualTo(p.LocalId), "Assert.That(localid,Is.EqualTo(p.LocalId))");
Assert.That(groupos,Is.EqualTo(p.GroupPosition), "Assert.That(groupos,Is.EqualTo(p.GroupPosition))"); Assert.That(groupos,Is.EqualTo(p.GroupPosition), "Assert.That(groupos,Is.EqualTo(p.GroupPosition))");
@ -402,7 +402,7 @@ namespace OpenSim.Data.Tests
random.NextBytes(partsys); random.NextBytes(partsys);
DateTime expires = new DateTime(2010, 12, 20); DateTime expires = new DateTime(2010, 12, 20);
DateTime rezzed = new DateTime(2005, 07, 15); DateTime rezzed = new DateTime(2005, 07, 15);
Vector3 groupos = new Vector3(random.Next(),random.Next(),random.Next()); Vector3 groupos = new Vector3(random.Next(),random.Next(),random.Next());
Vector3 offset = new Vector3(random.Next(),random.Next(),random.Next()); Vector3 offset = new Vector3(random.Next(),random.Next(),random.Next());
Quaternion rotoff = new Quaternion(random.Next(),random.Next(),random.Next(),random.Next()); Quaternion rotoff = new Quaternion(random.Next(),random.Next(),random.Next(),random.Next());
Vector3 velocity = new Vector3(random.Next(),random.Next(),random.Next()); Vector3 velocity = new Vector3(random.Next(),random.Next(),random.Next());
@ -418,7 +418,7 @@ namespace OpenSim.Data.Tests
PrimitiveBaseShape pbshap = new PrimitiveBaseShape(); PrimitiveBaseShape pbshap = new PrimitiveBaseShape();
pbshap = PrimitiveBaseShape.Default; pbshap = PrimitiveBaseShape.Default;
Vector3 scale = new Vector3(random.Next(),random.Next(),random.Next()); Vector3 scale = new Vector3(random.Next(),random.Next(),random.Next());
byte updatef = (byte) random.Next(127); byte updatef = (byte) random.Next(127);
// Updates the region with new values // Updates the region with new values
SceneObjectGroup sog2 = FindSOG("Adam West", region3); SceneObjectGroup sog2 = FindSOG("Adam West", region3);
@ -427,7 +427,7 @@ namespace OpenSim.Data.Tests
sog2.RootPart.Shape = pbshap; sog2.RootPart.Shape = pbshap;
sog2.RootPart.GroupPosition = groupos; sog2.RootPart.GroupPosition = groupos;
sog2.RootPart.RotationOffset = rotoff; sog2.RootPart.RotationOffset = rotoff;
sog2.RootPart.CreatorID = creator; sog2.RootPart.CreatorID = creator;
sog2.RootPart.TaskInventory = dic; sog2.RootPart.TaskInventory = dic;
sog2.RootPart.Name = name; sog2.RootPart.Name = name;
sog2.RootPart.Material = material; sog2.RootPart.Material = material;
@ -492,12 +492,12 @@ namespace OpenSim.Data.Tests
{ {
UUID tmp = UUID.Random(); UUID tmp = UUID.Random();
SceneObjectPart sop = NewSOP(("Test SOP " + i.ToString()),tmp); SceneObjectPart sop = NewSOP(("Test SOP " + i.ToString()),tmp);
Vector3 groupos = new Vector3(random.Next(),random.Next(),random.Next()); Vector3 groupos = new Vector3(random.Next(),random.Next(),random.Next());
Vector3 offset = new Vector3(random.Next(),random.Next(),random.Next()); Vector3 offset = new Vector3(random.Next(),random.Next(),random.Next());
Quaternion rotoff = new Quaternion(random.Next(),random.Next(),random.Next(),random.Next()); Quaternion rotoff = new Quaternion(random.Next(),random.Next(),random.Next(),random.Next());
Vector3 velocity = new Vector3(random.Next(),random.Next(),random.Next()); Vector3 velocity = new Vector3(random.Next(),random.Next(),random.Next());
Vector3 angvelo = new Vector3(random.Next(),random.Next(),random.Next()); Vector3 angvelo = new Vector3(random.Next(),random.Next(),random.Next());
Vector3 accel = new Vector3(random.Next(),random.Next(),random.Next()); Vector3 accel = new Vector3(random.Next(),random.Next(),random.Next());
sop.GroupPosition = groupos; sop.GroupPosition = groupos;
sop.RotationOffset = rotoff; sop.RotationOffset = rotoff;
@ -648,7 +648,7 @@ namespace OpenSim.Data.Tests
{ {
InventoryItemBase i = new InventoryItemBase(); InventoryItemBase i = new InventoryItemBase();
UUID id = UUID.Random(); UUID id = UUID.Random();
i.ID = id; i.ID = id;
UUID folder = UUID.Random(); UUID folder = UUID.Random();
i.Folder = folder; i.Folder = folder;
UUID owner = UUID.Random(); UUID owner = UUID.Random();
@ -666,13 +666,13 @@ namespace OpenSim.Data.Tests
i.NextPermissions = nextperm; i.NextPermissions = nextperm;
uint curperm = (uint) random.Next(); uint curperm = (uint) random.Next();
i.CurrentPermissions = curperm; i.CurrentPermissions = curperm;
uint baseperm = (uint) random.Next(); uint baseperm = (uint) random.Next();
i.BasePermissions = baseperm; i.BasePermissions = baseperm;
uint eoperm = (uint) random.Next(); uint eoperm = (uint) random.Next();
i.EveryOnePermissions = eoperm; i.EveryOnePermissions = eoperm;
int assettype = random.Next(); int assettype = random.Next();
i.AssetType = assettype; i.AssetType = assettype;
UUID groupid = UUID.Random(); UUID groupid = UUID.Random();
i.GroupID = groupid; i.GroupID = groupid;
bool groupown = true; bool groupown = true;
i.GroupOwned = groupown; i.GroupOwned = groupown;
@ -1010,7 +1010,7 @@ namespace OpenSim.Data.Tests
private SceneObjectPart NewSOP(string name, UUID uuid) private SceneObjectPart NewSOP(string name, UUID uuid)
{ {
SceneObjectPart sop = new SceneObjectPart(); SceneObjectPart sop = new SceneObjectPart();
sop.Name = name; sop.Name = name;
sop.Description = name; sop.Description = name;
sop.Text = RandomName(); sop.Text = RandomName();
@ -1042,12 +1042,12 @@ namespace OpenSim.Data.Tests
int size = random.Next(5,12); int size = random.Next(5,12);
char ch ; char ch ;
for (int i=0; i<size; i++) for (int i=0; i<size; i++)
{ {
ch = Convert.ToChar(Convert.ToInt32(Math.Floor(26 * random.NextDouble() + 65))) ; ch = Convert.ToChar(Convert.ToInt32(Math.Floor(26 * random.NextDouble() + 65))) ;
name.Append(ch); name.Append(ch);
} }
return name.ToString(); return name.ToString();
} }
// private InventoryFolderBase NewFolder(UUID id, UUID parent, UUID owner, string name) // private InventoryFolderBase NewFolder(UUID id, UUID parent, UUID owner, string name)
// { // {
// InventoryFolderBase f = new InventoryFolderBase(); // InventoryFolderBase f = new InventoryFolderBase();

View File

@ -152,7 +152,7 @@ namespace OpenSim.Data.Tests
u1.FirstName = "Ugly"; u1.FirstName = "Ugly";
db.UpdateUserProfile(u1); db.UpdateUserProfile(u1);
Assert.That("Ugly",Is.EqualTo(u1.FirstName), "Assert.That(\"Ugly\",Is.EqualTo(u1.FirstName))"); Assert.That("Ugly",Is.EqualTo(u1.FirstName), "Assert.That(\"Ugly\",Is.EqualTo(u1.FirstName))");
} }
[Test] [Test]
@ -174,7 +174,7 @@ namespace OpenSim.Data.Tests
db.AddNewUserProfile(u4); db.AddNewUserProfile(u4);
Assert.That(db.GetUserByUUID(zero),Is.Null); Assert.That(db.GetUserByUUID(zero),Is.Null);
Assert.That(db.GetUserByUUID(user4),Is.Null); Assert.That(db.GetUserByUUID(user4),Is.Null);
} }
[Test] [Test]
public void T015_UserPersistency() public void T015_UserPersistency()
@ -218,7 +218,7 @@ namespace OpenSim.Data.Tests
//HomeRegionX and HomeRegionY must only use 24 bits //HomeRegionX and HomeRegionY must only use 24 bits
homeregx = ((homeregx << 8) >> 8); homeregx = ((homeregx << 8) >> 8);
homeregy = ((homeregy << 8) >> 8); homeregy = ((homeregy << 8) >> 8);
u.ID = id; u.ID = id;
u.WebLoginKey = webloginkey; u.WebLoginKey = webloginkey;
@ -299,7 +299,7 @@ namespace OpenSim.Data.Tests
uint homeregx = (uint) random.Next(); uint homeregx = (uint) random.Next();
uint homeregy = (uint) random.Next(); uint homeregy = (uint) random.Next();
Vector3 homeloc = new Vector3((float)Math.Round(random.NextDouble(),5),(float)Math.Round(random.NextDouble(),5),(float)Math.Round(random.NextDouble(),5)); Vector3 homeloc = new Vector3((float)Math.Round(random.NextDouble(),5),(float)Math.Round(random.NextDouble(),5),(float)Math.Round(random.NextDouble(),5));
Vector3 homelookat = new Vector3((float)Math.Round(random.NextDouble(),5),(float)Math.Round(random.NextDouble(),5),(float)Math.Round(random.NextDouble(),5)); Vector3 homelookat = new Vector3((float)Math.Round(random.NextDouble(),5),(float)Math.Round(random.NextDouble(),5),(float)Math.Round(random.NextDouble(),5));
int created = random.Next(); int created = random.Next();
int lastlogin = random.Next(); int lastlogin = random.Next();
string userinvuri = RandomName(); string userinvuri = RandomName();
@ -359,7 +359,7 @@ namespace OpenSim.Data.Tests
Assert.That(email,Is.EqualTo(u1a.Email), "Assert.That(email,Is.EqualTo(u1a.Email))"); Assert.That(email,Is.EqualTo(u1a.Email), "Assert.That(email,Is.EqualTo(u1a.Email))");
Assert.That(passhash,Is.EqualTo(u1a.PasswordHash), "Assert.That(passhash,Is.EqualTo(u1a.PasswordHash))"); Assert.That(passhash,Is.EqualTo(u1a.PasswordHash), "Assert.That(passhash,Is.EqualTo(u1a.PasswordHash))");
Assert.That(passsalt,Is.EqualTo(u1a.PasswordSalt), "Assert.That(passsalt,Is.EqualTo(u1a.PasswordSalt))"); Assert.That(passsalt,Is.EqualTo(u1a.PasswordSalt), "Assert.That(passsalt,Is.EqualTo(u1a.PasswordSalt))");
Assert.That(homereg,Is.EqualTo(u1a.HomeRegion), "Assert.That(homereg,Is.EqualTo(u1a.HomeRegion))"); Assert.That(homereg,Is.EqualTo(u1a.HomeRegion), "Assert.That(homereg,Is.EqualTo(u1a.HomeRegion))");
Assert.That(homeregx,Is.EqualTo(u1a.HomeRegionX), "Assert.That(homeregx,Is.EqualTo(u1a.HomeRegionX))"); Assert.That(homeregx,Is.EqualTo(u1a.HomeRegionX), "Assert.That(homeregx,Is.EqualTo(u1a.HomeRegionX))");
Assert.That(homeregy,Is.EqualTo(u1a.HomeRegionY), "Assert.That(homeregy,Is.EqualTo(u1a.HomeRegionY))"); Assert.That(homeregy,Is.EqualTo(u1a.HomeRegionY), "Assert.That(homeregy,Is.EqualTo(u1a.HomeRegionY))");
Assert.That(homereg,Is.EqualTo(u1a.HomeRegion), "Assert.That(homereg,Is.EqualTo(u1a.HomeRegion))"); Assert.That(homereg,Is.EqualTo(u1a.HomeRegion), "Assert.That(homereg,Is.EqualTo(u1a.HomeRegion))");
@ -426,7 +426,7 @@ namespace OpenSim.Data.Tests
UserAgentData a2 = db.GetAgentByName(fname2,lname2); UserAgentData a2 = db.GetAgentByName(fname2,lname2);
UserAgentData a3 = db.GetAgentByName(name3); UserAgentData a3 = db.GetAgentByName(name3);
Assert.That(user2,Is.EqualTo(a2.ProfileID), "Assert.That(user2,Is.EqualTo(a2.ProfileID))"); Assert.That(user2,Is.EqualTo(a2.ProfileID), "Assert.That(user2,Is.EqualTo(a2.ProfileID))");
Assert.That(user3,Is.EqualTo(a3.ProfileID), "Assert.That(user3,Is.EqualTo(a3.ProfileID))"); Assert.That(user3,Is.EqualTo(a3.ProfileID), "Assert.That(user3,Is.EqualTo(a3.ProfileID))");
} }
[Test] [Test]
@ -501,11 +501,11 @@ namespace OpenSim.Data.Tests
db.AddNewUserFriend(user1,user3, 2); db.AddNewUserFriend(user1,user3, 2);
db.AddNewUserFriend(user1,user2, 4); db.AddNewUserFriend(user1,user2, 4);
List<FriendListItem> fl1 = db.GetUserFriendList(user1); List<FriendListItem> fl1 = db.GetUserFriendList(user1);
Assert.That(fl1.Count,Is.EqualTo(2), "Assert.That(fl1.Count,Is.EqualTo(2))"); Assert.That(fl1.Count,Is.EqualTo(2), "Assert.That(fl1.Count,Is.EqualTo(2))");
perms.Add(user2,1); perms.Add(user2,1);
perms.Add(user3,2); perms.Add(user3,2);
for (int i = 0; i < fl1.Count; i++) for (int i = 0; i < fl1.Count; i++)
{ {
Assert.That(user1,Is.EqualTo(fl1[i].FriendListOwner), "Assert.That(user1,Is.EqualTo(fl1[i].FriendListOwner))"); Assert.That(user1,Is.EqualTo(fl1[i].FriendListOwner), "Assert.That(user1,Is.EqualTo(fl1[i].FriendListOwner))");
friends.Add(fl1[i].Friend,1); friends.Add(fl1[i].Friend,1);
temp = perms[fl1[i].Friend]; temp = perms[fl1[i].Friend];
@ -544,7 +544,7 @@ namespace OpenSim.Data.Tests
db.UpdateUserFriendPerms(user1, user3, 4); db.UpdateUserFriendPerms(user1, user3, 4);
fl1 = db.GetUserFriendList(user1); fl1 = db.GetUserFriendList(user1);
Assert.That(fl1[0].FriendPerms,Is.EqualTo(4), "Assert.That(fl1[0].FriendPerms,Is.EqualTo(4))"); Assert.That(fl1[0].FriendPerms,Is.EqualTo(4), "Assert.That(fl1[0].FriendPerms,Is.EqualTo(4))");
} }
[Test] [Test]
@ -560,7 +560,7 @@ namespace OpenSim.Data.Tests
[Test] [Test]
public void T041_UserAppearancePersistency() public void T041_UserAppearancePersistency()
{ {
AvatarAppearance appear = new AvatarAppearance(); AvatarAppearance appear = new AvatarAppearance();
UUID owner = UUID.Random(); UUID owner = UUID.Random();
int serial = random.Next(); int serial = random.Next();
byte[] visualp = new byte[218]; byte[] visualp = new byte[218];
@ -698,7 +698,7 @@ namespace OpenSim.Data.Tests
int size = random.Next(5,12); int size = random.Next(5,12);
char ch ; char ch ;
for (int i=0; i<size; i++) for (int i=0; i<size; i++)
{ {
ch = Convert.ToChar(Convert.ToInt32(Math.Floor(26 * random.NextDouble() + 65))) ; ch = Convert.ToChar(Convert.ToInt32(Math.Floor(26 * random.NextDouble() + 65))) ;
name.Append(ch); name.Append(ch);
} }

View File

@ -43,7 +43,7 @@ namespace OpenSim.Data
public abstract UserAgentData GetAgentByUUID(UUID user); public abstract UserAgentData GetAgentByUUID(UUID user);
public abstract UserAgentData GetAgentByName(string name); public abstract UserAgentData GetAgentByName(string name);
public abstract UserAgentData GetAgentByName(string fname, string lname); public abstract UserAgentData GetAgentByName(string fname, string lname);
public UserProfileData GetUserByUri(Uri uri) { return null; } public UserProfileData GetUserByUri(Uri uri) { return null; }
public abstract void StoreWebLoginKey(UUID agentID, UUID webLoginKey); public abstract void StoreWebLoginKey(UUID agentID, UUID webLoginKey);
public abstract void AddNewUserProfile(UserProfileData user); public abstract void AddNewUserProfile(UserProfileData user);

View File

@ -59,7 +59,7 @@ namespace OpenSim.Framework
// Body // Body
defaultWearables[0].ItemID = new UUID("66c41e39-38f9-f75a-024e-585989bfaba9"); defaultWearables[0].ItemID = new UUID("66c41e39-38f9-f75a-024e-585989bfaba9");
defaultWearables[0].AssetID = new UUID("66c41e39-38f9-f75a-024e-585989bfab73"); defaultWearables[0].AssetID = new UUID("66c41e39-38f9-f75a-024e-585989bfab73");
// Skin // Skin
defaultWearables[1].ItemID = new UUID("77c41e39-38f9-f75a-024e-585989bfabc9"); defaultWearables[1].ItemID = new UUID("77c41e39-38f9-f75a-024e-585989bfabc9");

View File

@ -28,7 +28,7 @@
using OpenMetaverse; using OpenMetaverse;
namespace OpenSim.Framework.Capabilities namespace OpenSim.Framework.Capabilities
{ {
/// <summary> /// <summary>
/// Capabilities utility methods /// Capabilities utility methods
/// </summary> /// </summary>

View File

@ -57,7 +57,7 @@ namespace OpenSim.Framework.Client
// Porting Guide from old IM // Porting Guide from old IM
// SendIM(...) // SendIM(...)
// Loses FromAgentSession - this should be added by implementers manually. // Loses FromAgentSession - this should be added by implementers manually.
// //
public interface IClientIM public interface IClientIM
{ {

View File

@ -177,9 +177,9 @@ namespace OpenSim.Framework
} }
public void ViewerEffectHandler(IClientAPI sender, List<ViewerEffectEventHandlerArg> args) public void ViewerEffectHandler(IClientAPI sender, List<ViewerEffectEventHandlerArg> args)
{ {
// TODO: don't create new blocks if recycling an old packet // TODO: don't create new blocks if recycling an old packet
List<ViewerEffectPacket.EffectBlock> effectBlock = new List<ViewerEffectPacket.EffectBlock>(); List<ViewerEffectPacket.EffectBlock> effectBlock = new List<ViewerEffectPacket.EffectBlock>();
for (int i = 0; i < args.Count; i++) for (int i = 0; i < args.Count; i++)
{ {
ViewerEffectPacket.EffectBlock effect = new ViewerEffectPacket.EffectBlock(); ViewerEffectPacket.EffectBlock effect = new ViewerEffectPacket.EffectBlock();

View File

@ -70,7 +70,7 @@ namespace OpenSim.Framework
/// <summary> /// <summary>
/// How many operations between time checks. /// How many operations between time checks.
/// </summary> /// </summary>
private const int DefaultOperationsBetweenTimeChecks = 40; private const int DefaultOperationsBetweenTimeChecks = 40;
/// <summary> /// <summary>
@ -168,7 +168,7 @@ namespace OpenSim.Framework
private int m_version; private int m_version;
/// <summary> /// <summary>
/// Initializes a new instance of the <see cref="CnmMemoryCache{TKey,TValue}"/> class. /// Initializes a new instance of the <see cref="CnmMemoryCache{TKey,TValue}"/> class.
/// </summary> /// </summary>
public CnmMemoryCache() public CnmMemoryCache()
: this(DefaultMaxSize) : this(DefaultMaxSize)
@ -277,7 +277,7 @@ namespace OpenSim.Framework
/// </param> /// </param>
protected virtual void AddToNewGeneration(int bucketIndex, TKey key, TValue value, long size) protected virtual void AddToNewGeneration(int bucketIndex, TKey key, TValue value, long size)
{ {
// Add to newest generation // Add to newest generation
if (!m_newGeneration.Set(bucketIndex, key, value, size)) if (!m_newGeneration.Set(bucketIndex, key, value, size))
{ {
// Failed to add new generation // Failed to add new generation
@ -311,7 +311,7 @@ namespace OpenSim.Framework
/// Bucket index is remainder when element key's hash value is divided by bucket count. /// Bucket index is remainder when element key's hash value is divided by bucket count.
/// </para> /// </para>
/// <para> /// <para>
/// For example: key's hash is 72, bucket count is 5, element's bucket index is 72 % 5 = 2. /// For example: key's hash is 72, bucket count is 5, element's bucket index is 72 % 5 = 2.
/// </para> /// </para>
/// </remarks> /// </remarks>
protected virtual int GetBucketIndex(TKey key) protected virtual int GetBucketIndex(TKey key)
@ -367,7 +367,7 @@ namespace OpenSim.Framework
/// </summary> /// </summary>
private void RecycleGenerations() private void RecycleGenerations()
{ {
// Rotate old generation to new generation, new generation to old generation // Rotate old generation to new generation, new generation to old generation
IGeneration temp = m_newGeneration; IGeneration temp = m_newGeneration;
m_newGeneration = m_oldGeneration; m_newGeneration = m_oldGeneration;
m_newGeneration.Clear(); m_newGeneration.Clear();
@ -522,7 +522,7 @@ namespace OpenSim.Framework
/// <summary> /// <summary>
/// Index of first element's in element chain. /// Index of first element's in element chain.
/// </summary> /// </summary>
/// <value> /// <value>
/// -1 if there is no element in bucket; otherwise first element's index in the element chain. /// -1 if there is no element in bucket; otherwise first element's index in the element chain.
/// </value> /// </value>
/// <remarks> /// <remarks>
@ -692,7 +692,7 @@ namespace OpenSim.Framework
/// </summary> /// </summary>
/// <value> /// <value>
/// 0 if element is free; otherwise larger than 0. /// 0 if element is free; otherwise larger than 0.
/// </value> /// </value>
public long Size; public long Size;
/// <summary> /// <summary>
@ -771,7 +771,7 @@ namespace OpenSim.Framework
/// </returns> /// </returns>
/// <exception cref="InvalidOperationException"> /// <exception cref="InvalidOperationException">
/// The enumerator has reach end of collection or <see cref="MoveNext"/> is not called. /// The enumerator has reach end of collection or <see cref="MoveNext"/> is not called.
/// </exception> /// </exception>
public KeyValuePair<TKey, TValue> Current public KeyValuePair<TKey, TValue> Current
{ {
get get
@ -1405,10 +1405,10 @@ namespace OpenSim.Framework
/// When adding an new element to <see cref="ICnmCache{TKey,TValue}"/> that is limiting total size of elements, /// When adding an new element to <see cref="ICnmCache{TKey,TValue}"/> that is limiting total size of elements,
/// <see cref="ICnmCache{TKey,TValue}"/> will remove less recently used elements until it can fit an new element. /// <see cref="ICnmCache{TKey,TValue}"/> will remove less recently used elements until it can fit an new element.
/// </para> /// </para>
/// </remarks> /// </remarks>
/// <seealso cref="ICnmCache{TKey,TValue}.MaxElementSize"/> /// <seealso cref="ICnmCache{TKey,TValue}.MaxElementSize"/>
/// <seealso cref="ICnmCache{TKey,TValue}.Size"/> /// <seealso cref="ICnmCache{TKey,TValue}.Size"/>
/// <seealso cref="ICnmCache{TKey,TValue}.MaxSize"/> /// <seealso cref="ICnmCache{TKey,TValue}.MaxSize"/>
/// <seealso cref="ICnmCache{TKey,TValue}.IsCountLimited"/> /// <seealso cref="ICnmCache{TKey,TValue}.IsCountLimited"/>
/// <seealso cref="ICnmCache{TKey,TValue}.IsTimeLimited"/> /// <seealso cref="ICnmCache{TKey,TValue}.IsTimeLimited"/>
public bool IsSizeLimited public bool IsSizeLimited
@ -1438,7 +1438,7 @@ namespace OpenSim.Framework
} }
/// <summary> /// <summary>
/// Gets a value indicating whether elements stored to <see cref="ICnmCache{TKey,TValue}"/> have limited inactivity time. /// Gets a value indicating whether elements stored to <see cref="ICnmCache{TKey,TValue}"/> have limited inactivity time.
/// </summary> /// </summary>
/// <value> /// <value>
/// <see langword="true"/> if the <see cref="ICnmCache{TKey,TValue}"/> has a fixed total size of elements; /// <see langword="true"/> if the <see cref="ICnmCache{TKey,TValue}"/> has a fixed total size of elements;
@ -1449,7 +1449,7 @@ namespace OpenSim.Framework
/// or <see cref="ICnmCache{TKey,TValue}.TryGetValue"/> methods in <see cref="ICnmCache{TKey,TValue}.ExpirationTime"/> , then element is automatically removed from /// or <see cref="ICnmCache{TKey,TValue}.TryGetValue"/> methods in <see cref="ICnmCache{TKey,TValue}.ExpirationTime"/> , then element is automatically removed from
/// the cache. Depending on implementation of the <see cref="ICnmCache{TKey,TValue}"/>, some of the elements may /// the cache. Depending on implementation of the <see cref="ICnmCache{TKey,TValue}"/>, some of the elements may
/// stay longer in cache. /// stay longer in cache.
/// </remarks> /// </remarks>
/// <seealso cref="ICnmCache{TKey,TValue}.ExpirationTime"/> /// <seealso cref="ICnmCache{TKey,TValue}.ExpirationTime"/>
/// <seealso cref="ICnmCache{TKey,TValue}.PurgeExpired"/> /// <seealso cref="ICnmCache{TKey,TValue}.PurgeExpired"/>
/// <seealso cref="ICnmCache{TKey,TValue}.IsCountLimited"/> /// <seealso cref="ICnmCache{TKey,TValue}.IsCountLimited"/>
@ -1503,7 +1503,7 @@ namespace OpenSim.Framework
/// <seealso cref="ICnmCache{TKey,TValue}.Set"/> /// <seealso cref="ICnmCache{TKey,TValue}.Set"/>
/// <seealso cref="ICnmCache{TKey,TValue}.IsSizeLimited"/> /// <seealso cref="ICnmCache{TKey,TValue}.IsSizeLimited"/>
/// <seealso cref="ICnmCache{TKey,TValue}.Size"/> /// <seealso cref="ICnmCache{TKey,TValue}.Size"/>
/// <seealso cref="ICnmCache{TKey,TValue}.MaxSize"/> /// <seealso cref="ICnmCache{TKey,TValue}.MaxSize"/>
public long MaxElementSize public long MaxElementSize
{ {
get { return m_maxElementSize; } get { return m_maxElementSize; }
@ -1517,7 +1517,7 @@ namespace OpenSim.Framework
/// <value> /// <value>
/// Maximal allowed total size for elements stored to <see cref="ICnmCache{TKey,TValue}"/>. /// Maximal allowed total size for elements stored to <see cref="ICnmCache{TKey,TValue}"/>.
/// </value> /// </value>
/// <remarks> /// <remarks>
/// <para> /// <para>
/// Normally size is total bytes used by elements in the cache. But it can be any other suitable unit of measure. /// Normally size is total bytes used by elements in the cache. But it can be any other suitable unit of measure.
/// </para> /// </para>
@ -1562,10 +1562,10 @@ namespace OpenSim.Framework
/// When adding an new element to <see cref="ICnmCache{TKey,TValue}"/> that is limiting total size of elements, /// When adding an new element to <see cref="ICnmCache{TKey,TValue}"/> that is limiting total size of elements,
/// <see cref="ICnmCache{TKey,TValue}"/> will remove less recently used elements until it can fit an new element. /// <see cref="ICnmCache{TKey,TValue}"/> will remove less recently used elements until it can fit an new element.
/// </para> /// </para>
/// </remarks> /// </remarks>
/// <seealso cref="ICnmCache{TKey,TValue}.MaxElementSize"/> /// <seealso cref="ICnmCache{TKey,TValue}.MaxElementSize"/>
/// <seealso cref="ICnmCache{TKey,TValue}.IsSizeLimited"/> /// <seealso cref="ICnmCache{TKey,TValue}.IsSizeLimited"/>
/// <seealso cref="ICnmCache{TKey,TValue}.MaxSize"/> /// <seealso cref="ICnmCache{TKey,TValue}.MaxSize"/>
/// <seealso cref="ICnmCache{TKey,TValue}.IsCountLimited"/> /// <seealso cref="ICnmCache{TKey,TValue}.IsCountLimited"/>
/// <seealso cref="ICnmCache{TKey,TValue}.ExpirationTime"/> /// <seealso cref="ICnmCache{TKey,TValue}.ExpirationTime"/>
public long Size public long Size
@ -1576,9 +1576,9 @@ namespace OpenSim.Framework
/// <summary> /// <summary>
/// Gets an object that can be used to synchronize access to the <see cref="ICnmCache{TKey,TValue}"/>. /// Gets an object that can be used to synchronize access to the <see cref="ICnmCache{TKey,TValue}"/>.
/// </summary> /// </summary>
/// <value> /// <value>
/// An object that can be used to synchronize access to the <see cref="ICnmCache{TKey,TValue}"/>. /// An object that can be used to synchronize access to the <see cref="ICnmCache{TKey,TValue}"/>.
/// </value> /// </value>
/// <remarks> /// <remarks>
/// <para> /// <para>
/// To get synchronized (thread safe) access to <see cref="ICnmCache{TKey,TValue}"/>, use <see cref="CnmSynchronizedCache{TKey,TValue}"/> /// To get synchronized (thread safe) access to <see cref="ICnmCache{TKey,TValue}"/>, use <see cref="CnmSynchronizedCache{TKey,TValue}"/>
@ -1630,7 +1630,7 @@ namespace OpenSim.Framework
/// </para> /// </para>
/// <para> /// <para>
/// Depending on <see cref="ICnmCache{TKey,TValue}"/> implementation, some of expired elements /// Depending on <see cref="ICnmCache{TKey,TValue}"/> implementation, some of expired elements
/// may stay longer than <see cref="ICnmCache{TKey,TValue}.ExpirationTime"/> in the cache. /// may stay longer than <see cref="ICnmCache{TKey,TValue}.ExpirationTime"/> in the cache.
/// </para> /// </para>
/// </remarks> /// </remarks>
/// <seealso cref="ICnmCache{TKey,TValue}.IsTimeLimited"/> /// <seealso cref="ICnmCache{TKey,TValue}.IsTimeLimited"/>
@ -1810,7 +1810,7 @@ namespace OpenSim.Framework
/// </summary> /// </summary>
/// <returns> /// <returns>
/// <see langword="true"/>if the <see cref="ICnmCache{TKey,TValue}"/> contains an element with /// <see langword="true"/>if the <see cref="ICnmCache{TKey,TValue}"/> contains an element with
/// the specified key; otherwise, <see langword="false"/>. /// the specified key; otherwise, <see langword="false"/>.
/// </returns> /// </returns>
/// <param name="key"> /// <param name="key">
/// The key whose <paramref name="value"/> to get. /// The key whose <paramref name="value"/> to get.

View File

@ -142,7 +142,7 @@ namespace OpenSim.Framework
/// </returns> /// </returns>
/// <exception cref="InvalidOperationException"> /// <exception cref="InvalidOperationException">
/// The enumerator has reach end of collection or <see cref="MoveNext"/> is not called. /// The enumerator has reach end of collection or <see cref="MoveNext"/> is not called.
/// </exception> /// </exception>
public KeyValuePair<TKey, TValue> Current public KeyValuePair<TKey, TValue> Current
{ {
get { return m_enumerator.Current; } get { return m_enumerator.Current; }
@ -327,10 +327,10 @@ namespace OpenSim.Framework
/// When adding an new element to <see cref="ICnmCache{TKey,TValue}"/> that is limiting total size of elements, /// When adding an new element to <see cref="ICnmCache{TKey,TValue}"/> that is limiting total size of elements,
/// <see cref="ICnmCache{TKey,TValue}"/> will remove less recently used elements until it can fit an new element. /// <see cref="ICnmCache{TKey,TValue}"/> will remove less recently used elements until it can fit an new element.
/// </para> /// </para>
/// </remarks> /// </remarks>
/// <seealso cref="ICnmCache{TKey,TValue}.MaxElementSize"/> /// <seealso cref="ICnmCache{TKey,TValue}.MaxElementSize"/>
/// <seealso cref="ICnmCache{TKey,TValue}.Size"/> /// <seealso cref="ICnmCache{TKey,TValue}.Size"/>
/// <seealso cref="ICnmCache{TKey,TValue}.MaxSize"/> /// <seealso cref="ICnmCache{TKey,TValue}.MaxSize"/>
/// <seealso cref="ICnmCache{TKey,TValue}.IsCountLimited"/> /// <seealso cref="ICnmCache{TKey,TValue}.IsCountLimited"/>
/// <seealso cref="ICnmCache{TKey,TValue}.IsTimeLimited"/> /// <seealso cref="ICnmCache{TKey,TValue}.IsTimeLimited"/>
public bool IsSizeLimited public bool IsSizeLimited
@ -366,7 +366,7 @@ namespace OpenSim.Framework
} }
/// <summary> /// <summary>
/// Gets a value indicating whether elements stored to <see cref="ICnmCache{TKey,TValue}"/> have limited inactivity time. /// Gets a value indicating whether elements stored to <see cref="ICnmCache{TKey,TValue}"/> have limited inactivity time.
/// </summary> /// </summary>
/// <value> /// <value>
/// <see langword="true"/> if the <see cref="ICnmCache{TKey,TValue}"/> has a fixed total size of elements; /// <see langword="true"/> if the <see cref="ICnmCache{TKey,TValue}"/> has a fixed total size of elements;
@ -377,7 +377,7 @@ namespace OpenSim.Framework
/// or <see cref="ICnmCache{TKey,TValue}.TryGetValue"/> methods in <see cref="ICnmCache{TKey,TValue}.ExpirationTime"/> , then element is automatically removed from /// or <see cref="ICnmCache{TKey,TValue}.TryGetValue"/> methods in <see cref="ICnmCache{TKey,TValue}.ExpirationTime"/> , then element is automatically removed from
/// the cache. Depending on implementation of the <see cref="ICnmCache{TKey,TValue}"/>, some of the elements may /// the cache. Depending on implementation of the <see cref="ICnmCache{TKey,TValue}"/>, some of the elements may
/// stay longer in cache. /// stay longer in cache.
/// </remarks> /// </remarks>
/// <seealso cref="ICnmCache{TKey,TValue}.ExpirationTime"/> /// <seealso cref="ICnmCache{TKey,TValue}.ExpirationTime"/>
/// <seealso cref="ICnmCache{TKey,TValue}.PurgeExpired"/> /// <seealso cref="ICnmCache{TKey,TValue}.PurgeExpired"/>
/// <seealso cref="ICnmCache{TKey,TValue}.IsCountLimited"/> /// <seealso cref="ICnmCache{TKey,TValue}.IsCountLimited"/>
@ -440,7 +440,7 @@ namespace OpenSim.Framework
/// <seealso cref="ICnmCache{TKey,TValue}.Set"/> /// <seealso cref="ICnmCache{TKey,TValue}.Set"/>
/// <seealso cref="ICnmCache{TKey,TValue}.IsSizeLimited"/> /// <seealso cref="ICnmCache{TKey,TValue}.IsSizeLimited"/>
/// <seealso cref="ICnmCache{TKey,TValue}.Size"/> /// <seealso cref="ICnmCache{TKey,TValue}.Size"/>
/// <seealso cref="ICnmCache{TKey,TValue}.MaxSize"/> /// <seealso cref="ICnmCache{TKey,TValue}.MaxSize"/>
public long MaxElementSize public long MaxElementSize
{ {
get get
@ -458,7 +458,7 @@ namespace OpenSim.Framework
/// <value> /// <value>
/// Maximal allowed total size for elements stored to <see cref="ICnmCache{TKey,TValue}"/>. /// Maximal allowed total size for elements stored to <see cref="ICnmCache{TKey,TValue}"/>.
/// </value> /// </value>
/// <remarks> /// <remarks>
/// <para> /// <para>
/// Normally size is total bytes used by elements in the cache. But it can be any other suitable unit of measure. /// Normally size is total bytes used by elements in the cache. But it can be any other suitable unit of measure.
/// </para> /// </para>
@ -507,10 +507,10 @@ namespace OpenSim.Framework
/// When adding an new element to <see cref="ICnmCache{TKey,TValue}"/> that is limiting total size of elements, /// When adding an new element to <see cref="ICnmCache{TKey,TValue}"/> that is limiting total size of elements,
/// <see cref="ICnmCache{TKey,TValue}"/> will remove less recently used elements until it can fit an new element. /// <see cref="ICnmCache{TKey,TValue}"/> will remove less recently used elements until it can fit an new element.
/// </para> /// </para>
/// </remarks> /// </remarks>
/// <seealso cref="ICnmCache{TKey,TValue}.MaxElementSize"/> /// <seealso cref="ICnmCache{TKey,TValue}.MaxElementSize"/>
/// <seealso cref="ICnmCache{TKey,TValue}.IsSizeLimited"/> /// <seealso cref="ICnmCache{TKey,TValue}.IsSizeLimited"/>
/// <seealso cref="ICnmCache{TKey,TValue}.MaxSize"/> /// <seealso cref="ICnmCache{TKey,TValue}.MaxSize"/>
/// <seealso cref="ICnmCache{TKey,TValue}.IsCountLimited"/> /// <seealso cref="ICnmCache{TKey,TValue}.IsCountLimited"/>
/// <seealso cref="ICnmCache{TKey,TValue}.ExpirationTime"/> /// <seealso cref="ICnmCache{TKey,TValue}.ExpirationTime"/>
public long Size public long Size
@ -527,9 +527,9 @@ namespace OpenSim.Framework
/// <summary> /// <summary>
/// Gets an object that can be used to synchronize access to the <see cref="ICnmCache{TKey,TValue}"/>. /// Gets an object that can be used to synchronize access to the <see cref="ICnmCache{TKey,TValue}"/>.
/// </summary> /// </summary>
/// <value> /// <value>
/// An object that can be used to synchronize access to the <see cref="ICnmCache{TKey,TValue}"/>. /// An object that can be used to synchronize access to the <see cref="ICnmCache{TKey,TValue}"/>.
/// </value> /// </value>
/// <remarks> /// <remarks>
/// <para> /// <para>
/// To get synchronized (thread safe) access to <see cref="ICnmCache{TKey,TValue}"/>, use <see cref="CnmSynchronizedCache{TKey,TValue}"/> /// To get synchronized (thread safe) access to <see cref="ICnmCache{TKey,TValue}"/>, use <see cref="CnmSynchronizedCache{TKey,TValue}"/>
@ -584,7 +584,7 @@ namespace OpenSim.Framework
/// </para> /// </para>
/// <para> /// <para>
/// Depending on <see cref="ICnmCache{TKey,TValue}"/> implementation, some of expired elements /// Depending on <see cref="ICnmCache{TKey,TValue}"/> implementation, some of expired elements
/// may stay longer than <see cref="ICnmCache{TKey,TValue}.ExpirationTime"/> in the cache. /// may stay longer than <see cref="ICnmCache{TKey,TValue}.ExpirationTime"/> in the cache.
/// </para> /// </para>
/// </remarks> /// </remarks>
/// <seealso cref="ICnmCache{TKey,TValue}.IsTimeLimited"/> /// <seealso cref="ICnmCache{TKey,TValue}.IsTimeLimited"/>
@ -704,7 +704,7 @@ namespace OpenSim.Framework
/// </summary> /// </summary>
/// <returns> /// <returns>
/// <see langword="true"/>if the <see cref="ICnmCache{TKey,TValue}"/> contains an element with /// <see langword="true"/>if the <see cref="ICnmCache{TKey,TValue}"/> contains an element with
/// the specified key; otherwise, <see langword="false"/>. /// the specified key; otherwise, <see langword="false"/>.
/// </returns> /// </returns>
/// <param name="key"> /// <param name="key">
/// The key whose <paramref name="value"/> to get. /// The key whose <paramref name="value"/> to get.

View File

@ -55,7 +55,7 @@ namespace OpenSim.Framework.Communications.Cache
/// Stores user profile and inventory data received from backend services for a particular user. /// Stores user profile and inventory data received from backend services for a particular user.
/// </summary> /// </summary>
public class CachedUserInfo public class CachedUserInfo
{ {
private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
//// <value> //// <value>
@ -190,7 +190,7 @@ namespace OpenSim.Framework.Communications.Cache
resolvedFolders.Add(folder); resolvedFolders.Add(folder);
resolvedFolderDictionary[folder.ID] = folder; resolvedFolderDictionary[folder.ID] = folder;
parentFolder.AddChildFolder(folder); parentFolder.AddChildFolder(folder);
} }
} }
} // foreach (folder in pendingCategorizationFolders[parentFolder.ID]) } // foreach (folder in pendingCategorizationFolders[parentFolder.ID])
@ -219,7 +219,7 @@ namespace OpenSim.Framework.Communications.Cache
/// <summary> /// <summary>
/// Fetch inventory for this user. /// Fetch inventory for this user.
/// </summary> /// </summary>
/// This has to be executed as a separate step once user information is retreived. /// This has to be executed as a separate step once user information is retreived.
/// This will occur synchronously if the inventory service is in the same process as this class, and /// This will occur synchronously if the inventory service is in the same process as this class, and
/// asynchronously otherwise. /// asynchronously otherwise.
public void FetchInventory() public void FetchInventory()
@ -422,7 +422,7 @@ namespace OpenSim.Framework.Communications.Cache
/// ///
/// FIXME: We call add new inventory folder because in the data layer, we happen to use an SQL REPLACE /// FIXME: We call add new inventory folder because in the data layer, we happen to use an SQL REPLACE
/// so this will work to rename an existing folder. Needless to say, to rely on this is very confusing, /// so this will work to rename an existing folder. Needless to say, to rely on this is very confusing,
/// and needs to be changed. /// and needs to be changed.
/// ///
/// <param name="folderID"></param> /// <param name="folderID"></param>
/// <param name="type"></param> /// <param name="type"></param>
@ -500,7 +500,7 @@ namespace OpenSim.Framework.Communications.Cache
InventoryFolderImpl oldParentFolder = RootFolder.FindFolder(folder.ParentID); InventoryFolderImpl oldParentFolder = RootFolder.FindFolder(folder.ParentID);
if (oldParentFolder != null) if (oldParentFolder != null)
{ {
oldParentFolder.RemoveChildFolder(folderID); oldParentFolder.RemoveChildFolder(folderID);
parentFolder.AddChildFolder(folder); parentFolder.AddChildFolder(folder);
} }

View File

@ -60,7 +60,7 @@ namespace OpenSim.Framework.Communications.Cache
/// User profiles indexed by name /// User profiles indexed by name
/// </summary> /// </summary>
private readonly Dictionary<string, CachedUserInfo> m_userProfilesByName private readonly Dictionary<string, CachedUserInfo> m_userProfilesByName
= new Dictionary<string, CachedUserInfo>(); = new Dictionary<string, CachedUserInfo>();
/// <summary> /// <summary>
/// The root library folder. /// The root library folder.
@ -123,35 +123,35 @@ namespace OpenSim.Framework.Communications.Cache
/// <summary> /// <summary>
/// Get details of the given user. /// Get details of the given user.
/// </summary> /// </summary>
/// If the user isn't in cache then the user is requested from the profile service. /// If the user isn't in cache then the user is requested from the profile service.
/// <param name="userID"></param> /// <param name="userID"></param>
/// <returns>null if no user details are found</returns> /// <returns>null if no user details are found</returns>
public CachedUserInfo GetUserDetails(string fname, string lname) public CachedUserInfo GetUserDetails(string fname, string lname)
{ {
lock (m_userProfilesByName) lock (m_userProfilesByName)
{ {
CachedUserInfo userInfo; CachedUserInfo userInfo;
if (m_userProfilesByName.TryGetValue(string.Format(NAME_FORMAT, fname, lname), out userInfo)) if (m_userProfilesByName.TryGetValue(string.Format(NAME_FORMAT, fname, lname), out userInfo))
{ {
return userInfo; return userInfo;
} }
else else
{ {
UserProfileData userProfile = m_commsManager.UserService.GetUserProfile(fname, lname); UserProfileData userProfile = m_commsManager.UserService.GetUserProfile(fname, lname);
if (userProfile != null) if (userProfile != null)
return AddToCaches(userProfile); return AddToCaches(userProfile);
else else
return null; return null;
} }
} }
} }
/// <summary> /// <summary>
/// Get details of the given user. /// Get details of the given user.
/// </summary> /// </summary>
/// If the user isn't in cache then the user is requested from the profile service. /// If the user isn't in cache then the user is requested from the profile service.
/// <param name="userID"></param> /// <param name="userID"></param>
/// <returns>null if no user details are found</returns> /// <returns>null if no user details are found</returns>
public CachedUserInfo GetUserDetails(UUID userID) public CachedUserInfo GetUserDetails(UUID userID)
@ -185,20 +185,20 @@ namespace OpenSim.Framework.Communications.Cache
// probably by making sure that the update doesn't use the UserCacheInfo.UserProfile directly (possibly via // probably by making sure that the update doesn't use the UserCacheInfo.UserProfile directly (possibly via
// returning a read only class from the cache). // returning a read only class from the cache).
// public bool StoreProfile(UserProfileData userProfile) // public bool StoreProfile(UserProfileData userProfile)
// { // {
// lock (m_userProfilesById) // lock (m_userProfilesById)
// { // {
// CachedUserInfo userInfo = GetUserDetails(userProfile.ID); // CachedUserInfo userInfo = GetUserDetails(userProfile.ID);
// //
// if (userInfo != null) // if (userInfo != null)
// { // {
// userInfo.m_userProfile = userProfile; // userInfo.m_userProfile = userProfile;
// m_commsManager.UserService.UpdateUserProfile(userProfile); // m_commsManager.UserService.UpdateUserProfile(userProfile);
// //
// return true; // return true;
// } // }
// } // }
// //
// return false; // return false;
// } // }
@ -220,7 +220,7 @@ namespace OpenSim.Framework.Communications.Cache
} }
} }
return createdUserInfo; return createdUserInfo;
} }
/// <summary> /// <summary>
@ -234,7 +234,7 @@ namespace OpenSim.Framework.Communications.Cache
{ {
if (m_userProfilesById.ContainsKey(userId)) if (m_userProfilesById.ContainsKey(userId))
{ {
CachedUserInfo userInfo = m_userProfilesById[userId]; CachedUserInfo userInfo = m_userProfilesById[userId];
m_userProfilesById.Remove(userId); m_userProfilesById.Remove(userId);
lock (m_userProfilesByName) lock (m_userProfilesByName)
@ -244,7 +244,7 @@ namespace OpenSim.Framework.Communications.Cache
return true; return true;
} }
} }
return false; return false;
} }

View File

@ -35,6 +35,8 @@ using System.Text;
using OpenMetaverse; using OpenMetaverse;
using OpenMetaverse.StructuredData; using OpenMetaverse.StructuredData;
using GridRegion = OpenSim.Services.Interfaces.GridRegion;
using log4net; using log4net;
namespace OpenSim.Framework.Communications.Clients namespace OpenSim.Framework.Communications.Clients
@ -43,7 +45,7 @@ namespace OpenSim.Framework.Communications.Clients
{ {
private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
public bool DoCreateChildAgentCall(RegionInfo region, AgentCircuitData aCircuit, string authKey, out string reason) public bool DoCreateChildAgentCall(GridRegion region, AgentCircuitData aCircuit, string authKey, out string reason)
{ {
reason = String.Empty; reason = String.Empty;
@ -166,7 +168,7 @@ namespace OpenSim.Framework.Communications.Clients
} }
public bool DoChildAgentUpdateCall(RegionInfo region, IAgentData cAgentData) public bool DoChildAgentUpdateCall(GridRegion region, IAgentData cAgentData)
{ {
// Eventually, we want to use a caps url instead of the agentID // Eventually, we want to use a caps url instead of the agentID
string uri = string.Empty; string uri = string.Empty;
@ -260,7 +262,7 @@ namespace OpenSim.Framework.Communications.Clients
return true; return true;
} }
public bool DoRetrieveRootAgentCall(RegionInfo region, UUID id, out IAgentData agent) public bool DoRetrieveRootAgentCall(GridRegion region, UUID id, out IAgentData agent)
{ {
agent = null; agent = null;
// Eventually, we want to use a caps url instead of the agentID // Eventually, we want to use a caps url instead of the agentID
@ -348,7 +350,7 @@ namespace OpenSim.Framework.Communications.Clients
} }
public bool DoCloseAgentCall(RegionInfo region, UUID id) public bool DoCloseAgentCall(GridRegion region, UUID id)
{ {
string uri = string.Empty; string uri = string.Empty;
try try
@ -391,7 +393,7 @@ namespace OpenSim.Framework.Communications.Clients
return true; return true;
} }
public bool DoCreateObjectCall(RegionInfo region, ISceneObject sog, string sogXml2, bool allowScriptCrossing) public bool DoCreateObjectCall(GridRegion region, ISceneObject sog, string sogXml2, bool allowScriptCrossing)
{ {
ulong regionHandle = GetRegionHandle(region.RegionHandle); ulong regionHandle = GetRegionHandle(region.RegionHandle);
string uri string uri
@ -474,7 +476,7 @@ namespace OpenSim.Framework.Communications.Clients
} }
public bool DoCreateObjectCall(RegionInfo region, UUID userID, UUID itemID) public bool DoCreateObjectCall(GridRegion region, UUID userID, UUID itemID)
{ {
ulong regionHandle = GetRegionHandle(region.RegionHandle); ulong regionHandle = GetRegionHandle(region.RegionHandle);
string uri = "http://" + region.ExternalEndPoint.Address + ":" + region.HttpPort + "/object/" + UUID.Zero + "/" + regionHandle.ToString() + "/"; string uri = "http://" + region.ExternalEndPoint.Address + ":" + region.HttpPort + "/object/" + UUID.Zero + "/" + regionHandle.ToString() + "/";
@ -646,7 +648,7 @@ namespace OpenSim.Framework.Communications.Clients
return false; return false;
} }
public virtual void SendUserInformation(RegionInfo regInfo, AgentCircuitData aCircuit) public virtual void SendUserInformation(GridRegion regInfo, AgentCircuitData aCircuit)
{ {
} }

View File

@ -59,11 +59,6 @@ namespace OpenSim.Framework.Communications
} }
protected IMessagingService m_messageService; protected IMessagingService m_messageService;
public IGridServices GridService
{
get { return m_gridService; }
}
protected IGridServices m_gridService;
public UserProfileCacheService UserProfileCacheService public UserProfileCacheService UserProfileCacheService
{ {
@ -95,8 +90,8 @@ namespace OpenSim.Framework.Communications
public IUserAdminService UserAdminService public IUserAdminService UserAdminService
{ {
get { return m_userAdminService; } get { return m_userAdminService; }
} }
protected IUserAdminService m_userAdminService; protected IUserAdminService m_userAdminService;
/// <summary> /// <summary>
/// Constructor /// Constructor

View File

@ -42,7 +42,7 @@ namespace OpenSim.Framework.Communications
/// Update avatar appearance information /// Update avatar appearance information
/// </summary> /// </summary>
/// <param name="user"></param> /// <param name="user"></param>
/// <param name="appearance"></param> /// <param name="appearance"></param>
void UpdateUserAppearance(UUID user, AvatarAppearance appearance); void UpdateUserAppearance(UUID user, AvatarAppearance appearance);
} }
} }

View File

@ -1,92 +0,0 @@
/*
* Copyright (c) Contributors, http://opensimulator.org/
* See CONTRIBUTORS.TXT for a full list of copyright holders.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
* * Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* * Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
* * Neither the name of the OpenSimulator Project nor the
* names of its contributors may be used to endorse or promote products
* derived from this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
using System.Collections.Generic;
using OpenMetaverse;
namespace OpenSim.Framework.Communications
{
public interface IGridServices
{
string gdebugRegionName { get; set; }
/// <summary>
/// If true, then regions will accept logins from the user service. If false, then they will not.
/// </summary>
bool RegionLoginsEnabled { get; set; }
/// <summary>
/// Register a region with the grid service.
/// </summary>
/// <param name="regionInfos"> </param>
/// <returns></returns>
/// <exception cref="System.Exception">Thrown if region registration failed</exception>
RegionCommsListener RegisterRegion(RegionInfo regionInfos);
/// <summary>
/// Deregister a region with the grid service.
/// </summary>
/// <param name="regionInfo"></param>
/// <returns></returns>
/// <exception cref="System.Exception">Thrown if region deregistration failed</exception>
bool DeregisterRegion(RegionInfo regionInfo);
/// <summary>
/// Get information about the regions neighbouring the given co-ordinates.
/// </summary>
/// <param name="x"></param>
/// <param name="y"></param>
/// <returns></returns>
List<SimpleRegionInfo> RequestNeighbours(uint x, uint y);
RegionInfo RequestNeighbourInfo(ulong regionHandle);
RegionInfo RequestNeighbourInfo(UUID regionID);
RegionInfo RequestNeighbourInfo(string name);
RegionInfo RequestNeighbourInfo(string host, uint port);
RegionInfo RequestClosestRegion(string regionName);
Dictionary<string, string> GetGridSettings();
List<MapBlockData> RequestNeighbourMapBlocks(int minX, int minY, int maxX, int maxY);
// not complete yet, only contains the fields needed for ParcelInfoReqeust
LandData RequestLandData(ulong regionHandle, uint x, uint y);
/// <summary>
/// Get information about regions starting with the provided name.
/// </summary>
/// <param name="name">
/// The name to match against.
/// </param>
/// <param name="maxNumber">
/// The maximum number of results to return.
/// </param>
/// <returns>
/// A list of <see cref="RegionInfo"/>s of regions with matching name. If the
/// grid-server couldn't be contacted or returned an error, return null.
/// </returns>
List<RegionInfo> RequestNamedRegions(string name, int maxNumber);
}
}

View File

@ -66,6 +66,6 @@ namespace OpenSim.Framework.Communications
/// <param name="lastName"></param> /// <param name="lastName"></param>
/// <param name="newPassword"></param> /// <param name="newPassword"></param>
/// <returns>true if the update was successful, false otherwise</returns> /// <returns>true if the update was successful, false otherwise</returns>
bool ResetUserPassword(string firstName, string lastName, string newPassword); bool ResetUserPassword(string firstName, string lastName, string newPassword);
} }
} }

View File

@ -128,18 +128,30 @@ namespace OpenSim.Framework.Communications
/// ///
/// <param name="friendlistowner">The agent for whom we're retreiving the friends Data.</param> /// <param name="friendlistowner">The agent for whom we're retreiving the friends Data.</param>
/// <returns> /// <returns>
/// A List of FriendListItems that contains info about the user's friends. /// A List of FriendListItems that contains info about the user's friends.
/// Always returns a list even if the user has no friends /// Always returns a list even if the user has no friends
/// </returns> /// </returns>
List<FriendListItem> GetUserFriendList(UUID friendlistowner); List<FriendListItem> GetUserFriendList(UUID friendlistowner);
// This probably shouldn't be here, it belongs to IAuthentication // This probably shouldn't be here, it belongs to IAuthentication
// But since Scenes only have IUserService references, I'm placing it here for now. // But since Scenes only have IUserService references, I'm placing it here for now.
bool VerifySession(UUID userID, UUID sessionID); bool VerifySession(UUID userID, UUID sessionID);
/// <summary>
/// Authenticate a user by their password.
/// </summary>
///
/// This is used by callers outside the login process that want to
/// verify a user who has given their password.
///
/// This should probably also be in IAuthentication but is here for the same reasons as VerifySession() is
///
/// <param name="userID"></param>
/// <param name="password"></param>
/// <returns></returns>
bool AuthenticateUserByPassword(UUID userID, string password);
// Temporary Hack until we move everything to the new service model // Temporary Hack until we move everything to the new service model
void SetInventoryService(IInventoryService invService); void SetInventoryService(IInventoryService invService);
} }
} }

View File

@ -47,7 +47,7 @@ namespace OpenSim.Framework.Communications.Osp
public string Name { get { return "OspInventoryWrapperPlugin"; } } public string Name { get { return "OspInventoryWrapperPlugin"; } }
public string Version { get { return "0.1"; } } public string Version { get { return "0.1"; } }
public void Initialise() {} public void Initialise() {}
public void Initialise(string connect) {} public void Initialise(string connect) {}
public void Dispose() {} public void Dispose() {}
@ -80,9 +80,9 @@ namespace OpenSim.Framework.Communications.Osp
} }
protected InventoryItemBase PostProcessItem(InventoryItemBase item) protected InventoryItemBase PostProcessItem(InventoryItemBase item)
{ {
item.CreatorIdAsUuid = OspResolver.ResolveOspa(item.CreatorId, m_commsManager); item.CreatorIdAsUuid = OspResolver.ResolveOspa(item.CreatorId, m_commsManager);
return item; return item;
} }
public List<InventoryFolderBase> getFolderHierarchy(UUID parentID) { return m_wrappedPlugin.getFolderHierarchy(parentID); } public List<InventoryFolderBase> getFolderHierarchy(UUID parentID) { return m_wrappedPlugin.getFolderHierarchy(parentID); }

View File

@ -33,13 +33,13 @@ using OpenSim.Framework;
using OpenSim.Framework.Communications.Cache; using OpenSim.Framework.Communications.Cache;
namespace OpenSim.Framework.Communications.Osp namespace OpenSim.Framework.Communications.Osp
{ {
/// <summary> /// <summary>
/// Resolves OpenSim Profile Anchors (OSPA). An OSPA is a string used to provide information for /// Resolves OpenSim Profile Anchors (OSPA). An OSPA is a string used to provide information for
/// identifying user profiles or supplying a simple name if no profile is available. /// identifying user profiles or supplying a simple name if no profile is available.
/// </summary> /// </summary>
public class OspResolver public class OspResolver
{ {
private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
public const string OSPA_PREFIX = "ospa:"; public const string OSPA_PREFIX = "ospa:";
@ -73,7 +73,7 @@ namespace OpenSim.Framework.Communications.Osp
{ {
return return
OSPA_PREFIX + OSPA_NAME_KEY + OSPA_PAIR_SEPARATOR + firstName + OSPA_NAME_VALUE_SEPARATOR + lastName; OSPA_PREFIX + OSPA_NAME_KEY + OSPA_PAIR_SEPARATOR + firstName + OSPA_NAME_VALUE_SEPARATOR + lastName;
} }
/// <summary> /// <summary>
/// Resolve an osp string into the most suitable internal OpenSim identifier. /// Resolve an osp string into the most suitable internal OpenSim identifier.
@ -89,13 +89,13 @@ namespace OpenSim.Framework.Communications.Osp
/// is returned. /// is returned.
/// </returns> /// </returns>
public static UUID ResolveOspa(string ospa, CommunicationsManager commsManager) public static UUID ResolveOspa(string ospa, CommunicationsManager commsManager)
{ {
if (!ospa.StartsWith(OSPA_PREFIX)) if (!ospa.StartsWith(OSPA_PREFIX))
return UUID.Zero; return UUID.Zero;
m_log.DebugFormat("[OSP RESOLVER]: Resolving {0}", ospa); m_log.DebugFormat("[OSP RESOLVER]: Resolving {0}", ospa);
string ospaMeat = ospa.Substring(OSPA_PREFIX.Length); string ospaMeat = ospa.Substring(OSPA_PREFIX.Length);
string[] ospaTuples = ospaMeat.Split(OSPA_TUPLE_SEPARATOR_ARRAY); string[] ospaTuples = ospaMeat.Split(OSPA_TUPLE_SEPARATOR_ARRAY);
foreach (string tuple in ospaTuples) foreach (string tuple in ospaTuples)
@ -162,7 +162,7 @@ namespace OpenSim.Framework.Communications.Osp
tempUserProfile.ID = HashName(tempUserProfile.Name); tempUserProfile.ID = HashName(tempUserProfile.Name);
m_log.DebugFormat( m_log.DebugFormat(
"[OSP RESOLVER]: Adding temporary user profile for {0} {1}", tempUserProfile.Name, tempUserProfile.ID); "[OSP RESOLVER]: Adding temporary user profile for {0} {1}", tempUserProfile.Name, tempUserProfile.ID);
commsManager.UserService.AddTemporaryUserProfile(tempUserProfile); commsManager.UserService.AddTemporaryUserProfile(tempUserProfile);
return tempUserProfile.ID; return tempUserProfile.ID;

View File

@ -1072,7 +1072,7 @@ namespace OpenSim.Framework.Communications.Services
/// <param name="user"></param> /// <param name="user"></param>
/// <param name="response"></param> /// <param name="response"></param>
/// <param name="remoteClient"></param> /// <param name="remoteClient"></param>
/// <returns>true if the region was successfully contacted, false otherwise</returns> /// <returns>true if the region was successfully contacted, false otherwise</returns>
protected abstract bool PrepareLoginToRegion( protected abstract bool PrepareLoginToRegion(
RegionInfo regionInfo, UserProfileData user, LoginResponse response, IPEndPoint client); RegionInfo regionInfo, UserProfileData user, LoginResponse response, IPEndPoint client);
@ -1221,11 +1221,13 @@ namespace OpenSim.Framework.Communications.Services
{ {
return Util.CreateUnknownUserErrorResponse(); return Util.CreateUnknownUserErrorResponse();
} }
UUID.TryParse((string)requestData["session_id"], out guess_sid); UUID.TryParse((string)requestData["session_id"], out guess_sid);
if (guess_sid == UUID.Zero) if (guess_sid == UUID.Zero)
{ {
return Util.CreateUnknownUserErrorResponse(); return Util.CreateUnknownUserErrorResponse();
} }
if (m_userManager.VerifySession(guess_aid, guess_sid)) if (m_userManager.VerifySession(guess_aid, guess_sid))
{ {
authed = "TRUE"; authed = "TRUE";
@ -1243,6 +1245,5 @@ namespace OpenSim.Framework.Communications.Services
response.Value = responseData; response.Value = responseData;
return response; return response;
} }
} }
} }

View File

@ -33,9 +33,9 @@ using OpenMetaverse;
using OpenSim.Data; using OpenSim.Data;
namespace OpenSim.Framework.Communications namespace OpenSim.Framework.Communications
{ {
/// <summary> /// <summary>
/// Plugin for managing temporary user profiles. /// Plugin for managing temporary user profiles.
/// </summary> /// </summary>
public class TemporaryUserProfilePlugin : IUserDataPlugin public class TemporaryUserProfilePlugin : IUserDataPlugin
{ {
@ -45,7 +45,7 @@ namespace OpenSim.Framework.Communications
public string Name { get { return "TemporaryUserProfilePlugin"; } } public string Name { get { return "TemporaryUserProfilePlugin"; } }
public string Version { get { return "0.1"; } } public string Version { get { return "0.1"; } }
public void Initialise() {} public void Initialise() {}
public void Initialise(string connect) {} public void Initialise(string connect) {}
public void Dispose() {} public void Dispose() {}

View File

@ -149,6 +149,11 @@ namespace OpenSim.Framework.Communications.Tests
{ {
throw new NotImplementedException(); throw new NotImplementedException();
} }
public virtual bool AuthenticateUserByPassword(UUID userID, string password)
{
throw new NotImplementedException();
}
} }
} }
} }

View File

@ -133,7 +133,7 @@ namespace OpenSim.Framework.Communications.Tests
timedOut = true; timedOut = true;
lock (this) lock (this)
{ {
UserProfileTestUtils.CreateUserWithInventory(myScene.CommsManager, InventoryReceived); UserProfileTestUtils.CreateUserWithInventory(myScene.CommsManager, InventoryReceived);
Monitor.Wait(this, 60000); Monitor.Wait(this, 60000);
} }
@ -150,7 +150,7 @@ namespace OpenSim.Framework.Communications.Tests
CachedUserInfo userInfo; CachedUserInfo userInfo;
lock (this) lock (this)
{ {
userInfo = UserProfileTestUtils.CreateUserWithInventory(myScene.CommsManager, InventoryReceived); userInfo = UserProfileTestUtils.CreateUserWithInventory(myScene.CommsManager, InventoryReceived);
Monitor.Wait(this, 60000); Monitor.Wait(this, 60000);
} }
@ -171,7 +171,7 @@ namespace OpenSim.Framework.Communications.Tests
CachedUserInfo userInfo; CachedUserInfo userInfo;
lock (this) lock (this)
{ {
userInfo = UserProfileTestUtils.CreateUserWithInventory(myScene.CommsManager, InventoryReceived); userInfo = UserProfileTestUtils.CreateUserWithInventory(myScene.CommsManager, InventoryReceived);
Monitor.Wait(this, 60000); Monitor.Wait(this, 60000);
} }
@ -206,7 +206,7 @@ namespace OpenSim.Framework.Communications.Tests
CachedUserInfo userInfo; CachedUserInfo userInfo;
lock (this) lock (this)
{ {
userInfo = UserProfileTestUtils.CreateUserWithInventory(myScene.CommsManager, InventoryReceived); userInfo = UserProfileTestUtils.CreateUserWithInventory(myScene.CommsManager, InventoryReceived);
Monitor.Wait(this, 60000); Monitor.Wait(this, 60000);
} }
@ -271,7 +271,7 @@ namespace OpenSim.Framework.Communications.Tests
CachedUserInfo userInfo; CachedUserInfo userInfo;
lock (this) lock (this)
{ {
userInfo = UserProfileTestUtils.CreateUserWithInventory(myScene.CommsManager, InventoryReceived); userInfo = UserProfileTestUtils.CreateUserWithInventory(myScene.CommsManager, InventoryReceived);
Monitor.Wait(this, 60000); Monitor.Wait(this, 60000);
} }
@ -311,7 +311,7 @@ namespace OpenSim.Framework.Communications.Tests
CachedUserInfo userInfo; CachedUserInfo userInfo;
lock (this) lock (this)
{ {
userInfo = UserProfileTestUtils.CreateUserWithInventory(myScene.CommsManager, InventoryReceived); userInfo = UserProfileTestUtils.CreateUserWithInventory(myScene.CommsManager, InventoryReceived);
Monitor.Wait(this, 60000); Monitor.Wait(this, 60000);
} }

View File

@ -318,7 +318,7 @@ namespace OpenSim.Framework.Communications.Tests
{ {
TestHelper.InMethod(); TestHelper.InMethod();
//Console.WriteLine("Starting T023_TestAuthenticatedLoginAlreadyLoggedIn()"); //Console.WriteLine("Starting T023_TestAuthenticatedLoginAlreadyLoggedIn()");
//log4net.Config.XmlConfigurator.Configure(); //log4net.Config.XmlConfigurator.Configure();
string error_already_logged = "You appear to be already logged in. " + string error_already_logged = "You appear to be already logged in. " +

View File

@ -44,7 +44,8 @@ namespace OpenSim.Framework.Communications
/// <summary> /// <summary>
/// Base class for user management (create, read, etc) /// Base class for user management (create, read, etc)
/// </summary> /// </summary>
public abstract class UserManagerBase : IUserService, IUserAdminService, IAvatarService, IMessagingService, IAuthentication public abstract class UserManagerBase
: IUserService, IUserAdminService, IAvatarService, IMessagingService, IAuthentication
{ {
private static readonly ILog m_log private static readonly ILog m_log
= LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
@ -649,15 +650,17 @@ namespace OpenSim.Framework.Communications
public virtual UUID AddUser( public virtual UUID AddUser(
string firstName, string lastName, string password, string email, uint regX, uint regY, UUID SetUUID) string firstName, string lastName, string password, string email, uint regX, uint regY, UUID SetUUID)
{ {
string md5PasswdHash = Util.Md5Hash(Util.Md5Hash(password) + ":" + String.Empty);
UserProfileData user = new UserProfileData(); UserProfileData user = new UserProfileData();
user.PasswordSalt = Util.Md5Hash(UUID.Random().ToString());
string md5PasswdHash = Util.Md5Hash(Util.Md5Hash(password) + ":" + user.PasswordSalt);
user.HomeLocation = new Vector3(128, 128, 100); user.HomeLocation = new Vector3(128, 128, 100);
user.ID = SetUUID; user.ID = SetUUID;
user.FirstName = firstName; user.FirstName = firstName;
user.SurName = lastName; user.SurName = lastName;
user.PasswordHash = md5PasswdHash; user.PasswordHash = md5PasswdHash;
user.PasswordSalt = String.Empty;
user.Created = Util.UnixTimeSinceEpoch(); user.Created = Util.UnixTimeSinceEpoch();
user.HomeLookAt = new Vector3(100, 100, 100); user.HomeLookAt = new Vector3(100, 100, 100);
user.HomeRegionX = regX; user.HomeRegionX = regX;
@ -891,7 +894,10 @@ namespace OpenSim.Framework.Communications
if (userProfile != null && userProfile.CurrentAgent != null) if (userProfile != null && userProfile.CurrentAgent != null)
{ {
m_log.DebugFormat("[USER AUTH]: Verifying session {0} for {1}; current session {2}", sessionID, userID, userProfile.CurrentAgent.SessionID); m_log.DebugFormat(
"[USER AUTH]: Verifying session {0} for {1}; current session {2}",
sessionID, userID, userProfile.CurrentAgent.SessionID);
if (userProfile.CurrentAgent.SessionID == sessionID) if (userProfile.CurrentAgent.SessionID == sessionID)
{ {
return true; return true;
@ -901,6 +907,26 @@ namespace OpenSim.Framework.Communications
return false; return false;
} }
public virtual bool AuthenticateUserByPassword(UUID userID, string password)
{
// m_log.DebugFormat("[USER AUTH]: Authenticating user {0} given password {1}", userID, password);
UserProfileData userProfile = GetUserProfile(userID);
if (null == userProfile)
return false;
string md5PasswordHash = Util.Md5Hash(Util.Md5Hash(password) + ":" + userProfile.PasswordSalt);
// m_log.DebugFormat(
// "[USER AUTH]: Submitted hash {0}, stored hash {1}", md5PasswordHash, userProfile.PasswordHash);
if (md5PasswordHash == userProfile.PasswordHash)
return true;
else
return false;
}
#endregion #endregion
} }
} }

View File

@ -88,7 +88,7 @@ namespace OpenSim.Framework.Console
/// <param name="helpParts">Parsed parts of the help string. If empty then general help is returned.</param> /// <param name="helpParts">Parsed parts of the help string. If empty then general help is returned.</param>
/// <returns></returns> /// <returns></returns>
public List<string> GetHelp(string[] cmd) public List<string> GetHelp(string[] cmd)
{ {
List<string> help = new List<string>(); List<string> help = new List<string>();
List<string> helpParts = new List<string>(cmd); List<string> helpParts = new List<string>(cmd);
@ -115,7 +115,7 @@ namespace OpenSim.Framework.Console
/// <param name="helpParts"></param> /// <param name="helpParts"></param>
/// <returns></returns> /// <returns></returns>
private List<string> CollectHelp(List<string> helpParts) private List<string> CollectHelp(List<string> helpParts)
{ {
string originalHelpRequest = string.Join(" ", helpParts.ToArray()); string originalHelpRequest = string.Join(" ", helpParts.ToArray());
List<string> help = new List<string>(); List<string> help = new List<string>();
@ -132,7 +132,7 @@ namespace OpenSim.Framework.Console
if (dict[helpPart] is Dictionary<string, Object>) if (dict[helpPart] is Dictionary<string, Object>)
dict = (Dictionary<string, object>)dict[helpPart]; dict = (Dictionary<string, object>)dict[helpPart];
helpParts.RemoveAt(0); helpParts.RemoveAt(0);
} }
// There was a command for the given help string // There was a command for the given help string
@ -149,7 +149,7 @@ namespace OpenSim.Framework.Console
} }
return help; return help;
} }
private List<string> CollectHelp(Dictionary<string, object> dict) private List<string> CollectHelp(Dictionary<string, object> dict)
{ {
@ -180,7 +180,7 @@ namespace OpenSim.Framework.Console
/// <param name="longhelp"></param> /// <param name="longhelp"></param>
/// <param name="fn"></param> /// <param name="fn"></param>
public void AddCommand(string module, bool shared, string command, public void AddCommand(string module, bool shared, string command,
string help, string longhelp, CommandDelegate fn) string help, string longhelp, CommandDelegate fn)
{ {
AddCommand(module, shared, command, help, longhelp, AddCommand(module, shared, command, help, longhelp,
String.Empty, fn); String.Empty, fn);

View File

@ -197,8 +197,8 @@ namespace OpenSim.Framework.Console
string uri = "/ReadResponses/" + sessionID.ToString() + "/"; string uri = "/ReadResponses/" + sessionID.ToString() + "/";
m_Server.AddPollServiceHTTPHandler(uri, HandleHttpCloseSession, m_Server.AddPollServiceHTTPHandler(uri, HandleHttpPoll,
new PollServiceEventArgs(HasEvents, GetEvents, NoEvents, new PollServiceEventArgs(null, HasEvents, GetEvents, NoEvents,
sessionID)); sessionID));
XmlDocument xmldoc = new XmlDocument(); XmlDocument xmldoc = new XmlDocument();
@ -230,6 +230,11 @@ namespace OpenSim.Framework.Console
return reply; return reply;
} }
private Hashtable HandleHttpPoll(Hashtable request)
{
return new Hashtable();
}
private Hashtable HandleHttpCloseSession(Hashtable request) private Hashtable HandleHttpCloseSession(Hashtable request)
{ {
DoExpire(); DoExpire();
@ -365,7 +370,7 @@ namespace OpenSim.Framework.Console
} }
} }
private bool HasEvents(UUID sessionID) private bool HasEvents(UUID RequestID, UUID sessionID)
{ {
ConsoleConnection c = null; ConsoleConnection c = null;
@ -381,19 +386,19 @@ namespace OpenSim.Framework.Console
return false; return false;
} }
private Hashtable GetEvents(UUID sessionID, string request) private Hashtable GetEvents(UUID RequestID, UUID sessionID, string request)
{ {
ConsoleConnection c = null; ConsoleConnection c = null;
lock (m_Connections) lock (m_Connections)
{ {
if (!m_Connections.ContainsKey(sessionID)) if (!m_Connections.ContainsKey(sessionID))
return NoEvents(); return NoEvents(RequestID, UUID.Zero);
c = m_Connections[sessionID]; c = m_Connections[sessionID];
} }
c.last = System.Environment.TickCount; c.last = System.Environment.TickCount;
if (c.lastLineSeen >= m_LineNumber) if (c.lastLineSeen >= m_LineNumber)
return NoEvents(); return NoEvents(RequestID, UUID.Zero);
Hashtable result = new Hashtable(); Hashtable result = new Hashtable();
@ -435,7 +440,7 @@ namespace OpenSim.Framework.Console
return result; return result;
} }
private Hashtable NoEvents() private Hashtable NoEvents(UUID RequestID, UUID id)
{ {
Hashtable result = new Hashtable(); Hashtable result = new Hashtable();

View File

@ -90,13 +90,13 @@ namespace OpenSim.Framework
m_configMember.addConfigurationOption("allow_forceful_banlines", m_configMember.addConfigurationOption("allow_forceful_banlines",
ConfigurationOption.ConfigurationTypes.TYPE_STRING, ConfigurationOption.ConfigurationTypes.TYPE_STRING,
"Allow Forceful Banlines", "TRUE", true); "Allow Forceful Banlines", "TRUE", true);
m_configMember.addConfigurationOption("allow_region_registration", m_configMember.addConfigurationOption("allow_region_registration",
ConfigurationOption.ConfigurationTypes.TYPE_BOOLEAN, ConfigurationOption.ConfigurationTypes.TYPE_BOOLEAN,
"Allow regions to register immediately upon grid server startup? true/false", "Allow regions to register immediately upon grid server startup? true/false",
"True", "True",
false); false);
m_configMember.addConfigurationOption("console_user", ConfigurationOption.ConfigurationTypes.TYPE_STRING, m_configMember.addConfigurationOption("console_user", ConfigurationOption.ConfigurationTypes.TYPE_STRING,
"Remote console access user name [Default: disabled]", "", false); "Remote console access user name [Default: disabled]", "", false);
@ -147,7 +147,7 @@ namespace OpenSim.Framework
break; break;
case "allow_region_registration": case "allow_region_registration":
AllowRegionRegistration = (bool)configuration_result; AllowRegionRegistration = (bool)configuration_result;
break; break;
case "console_user": case "console_user":
ConsoleUser = (string)configuration_result; ConsoleUser = (string)configuration_result;
break; break;

View File

@ -34,23 +34,23 @@ namespace OpenSim.Framework
/// <summary> /// <summary>
/// Interface to the local asset cache. This is the mechanism through which assets can be added and requested. /// Interface to the local asset cache. This is the mechanism through which assets can be added and requested.
/// </summary> /// </summary>
public interface IAssetCache : IPlugin public interface IAssetCache : IPlugin
{ {
/// <value> /// <value>
/// The 'server' from which assets can be requested and to which assets are persisted. /// The 'server' from which assets can be requested and to which assets are persisted.
/// </value> /// </value>
void Initialise(ConfigSettings cs); void Initialise(ConfigSettings cs);
/// <summary> /// <summary>
/// Report statistical data to the log. /// Report statistical data to the log.
/// </summary> /// </summary>
void ShowState(); void ShowState();
/// <summary> /// <summary>
/// Clear the asset cache. /// Clear the asset cache.
/// </summary> /// </summary>
void Clear(); void Clear();
/// <summary> /// <summary>
@ -58,7 +58,7 @@ namespace OpenSim.Framework
/// </summary> /// </summary>
/// <param name="assetId"></param> /// <param name="assetId"></param>
/// <param name="asset"></param> /// <param name="asset"></param>
/// <returns>true if the asset was in the cache, false if it was not</returns> /// <returns>true if the asset was in the cache, false if it was not</returns>
bool TryGetCachedAsset(UUID assetID, out AssetBase asset); bool TryGetCachedAsset(UUID assetID, out AssetBase asset);
/// <summary> /// <summary>
@ -69,7 +69,7 @@ namespace OpenSim.Framework
/// <param name="isTexture"></param> /// <param name="isTexture"></param>
/// A callback invoked when the asset has either been found or not found. /// A callback invoked when the asset has either been found or not found.
/// If the asset was found this is called with the asset UUID and the asset data /// If the asset was found this is called with the asset UUID and the asset data
/// If the asset was not found this is still called with the asset UUID but with a null asset data reference</param> /// If the asset was not found this is still called with the asset UUID but with a null asset data reference</param>
void GetAsset(UUID assetID, AssetRequestCallback callback, bool isTexture); void GetAsset(UUID assetID, AssetRequestCallback callback, bool isTexture);
/// <summary> /// <summary>
@ -84,13 +84,13 @@ namespace OpenSim.Framework
/// ///
/// <param name="assetID"></param> /// <param name="assetID"></param>
/// <param name="isTexture"></param> /// <param name="isTexture"></param>
/// <returns>null if the asset could not be retrieved</returns> /// <returns>null if the asset could not be retrieved</returns>
AssetBase GetAsset(UUID assetID, bool isTexture); AssetBase GetAsset(UUID assetID, bool isTexture);
/// <summary> /// <summary>
/// Add an asset to both the persistent store and the cache. /// Add an asset to both the persistent store and the cache.
/// </summary> /// </summary>
/// <param name="asset"></param> /// <param name="asset"></param>
void AddAsset(AssetBase asset); void AddAsset(AssetBase asset);
/// <summary> /// <summary>
@ -100,14 +100,14 @@ namespace OpenSim.Framework
/// of the asset cache. This is needed because the osdynamic /// of the asset cache. This is needed because the osdynamic
/// texture code grows the asset cache without bounds. The /// texture code grows the asset cache without bounds. The
/// real solution here is a much better cache archicture, but /// real solution here is a much better cache archicture, but
/// this is a stop gap measure until we have such a thing. /// this is a stop gap measure until we have such a thing.
void ExpireAsset(UUID assetID); void ExpireAsset(UUID assetID);
/// <summary> /// <summary>
/// Handle an asset request from the client. The result will be sent back asynchronously. /// Handle an asset request from the client. The result will be sent back asynchronously.
/// </summary> /// </summary>
/// <param name="userInfo"></param> /// <param name="userInfo"></param>
/// <param name="transferRequest"></param> /// <param name="transferRequest"></param>
void AddAssetRequest(IClientAPI userInfo, TransferRequestPacket transferRequest); void AddAssetRequest(IClientAPI userInfo, TransferRequestPacket transferRequest);
} }

View File

@ -810,7 +810,7 @@ namespace OpenSim.Framework
/// </summary> /// </summary>
void Start(); void Start();
void Stop(); void Stop();
// void ActivateGesture(UUID assetId, UUID gestureId); // void ActivateGesture(UUID assetId, UUID gestureId);
@ -824,7 +824,7 @@ namespace OpenSim.Framework
/// </summary> /// </summary>
/// <param name="agentID">The id of the agent associated with the appearance</param> /// <param name="agentID">The id of the agent associated with the appearance</param>
/// <param name="visualParams"></param> /// <param name="visualParams"></param>
/// <param name="textureEntry"></param> /// <param name="textureEntry"></param>
void SendAppearance(UUID agentID, byte[] visualParams, byte[] textureEntry); void SendAppearance(UUID agentID, byte[] visualParams, byte[] textureEntry);
void SendStartPingCheck(byte seq); void SendStartPingCheck(byte seq);
@ -833,7 +833,7 @@ namespace OpenSim.Framework
/// Tell the client that an object has been deleted /// Tell the client that an object has been deleted
/// </summary> /// </summary>
/// <param name="regionHandle"></param> /// <param name="regionHandle"></param>
/// <param name="localID"></param> /// <param name="localID"></param>
void SendKillObject(ulong regionHandle, uint localID); void SendKillObject(ulong regionHandle, uint localID);
void SendAnimations(UUID[] animID, int[] seqs, UUID sourceAgentId, UUID[] objectIDs); void SendAnimations(UUID[] animID, int[] seqs, UUID sourceAgentId, UUID[] objectIDs);

View File

@ -180,16 +180,16 @@ namespace OpenSim.Framework
/// When adding an new element to <see cref="ICnmCache{TKey,TValue}"/> that is limiting total size of elements, /// When adding an new element to <see cref="ICnmCache{TKey,TValue}"/> that is limiting total size of elements,
/// <see cref="ICnmCache{TKey,TValue}"/> will remove less recently used elements until it can fit an new element. /// <see cref="ICnmCache{TKey,TValue}"/> will remove less recently used elements until it can fit an new element.
/// </para> /// </para>
/// </remarks> /// </remarks>
/// <seealso cref="MaxElementSize"/> /// <seealso cref="MaxElementSize"/>
/// <seealso cref="Size"/> /// <seealso cref="Size"/>
/// <seealso cref="MaxSize"/> /// <seealso cref="MaxSize"/>
/// <seealso cref="IsCountLimited"/> /// <seealso cref="IsCountLimited"/>
/// <seealso cref="IsTimeLimited"/> /// <seealso cref="IsTimeLimited"/>
bool IsSizeLimited { get; } bool IsSizeLimited { get; }
/// <summary> /// <summary>
/// Gets a value indicating whether elements stored to <see cref="ICnmCache{TKey,TValue}"/> have limited inactivity time. /// Gets a value indicating whether elements stored to <see cref="ICnmCache{TKey,TValue}"/> have limited inactivity time.
/// </summary> /// </summary>
/// <value> /// <value>
/// <see langword="true"/> if the <see cref="ICnmCache{TKey,TValue}"/> has a fixed total size of elements; /// <see langword="true"/> if the <see cref="ICnmCache{TKey,TValue}"/> has a fixed total size of elements;
@ -200,7 +200,7 @@ namespace OpenSim.Framework
/// or <see cref="TryGetValue"/> methods in <see cref="ExpirationTime"/> , then element is automatically removed from /// or <see cref="TryGetValue"/> methods in <see cref="ExpirationTime"/> , then element is automatically removed from
/// the cache. Depending on implementation of the <see cref="ICnmCache{TKey,TValue}"/>, some of the elements may /// the cache. Depending on implementation of the <see cref="ICnmCache{TKey,TValue}"/>, some of the elements may
/// stay longer in cache. /// stay longer in cache.
/// </remarks> /// </remarks>
/// <seealso cref="ExpirationTime"/> /// <seealso cref="ExpirationTime"/>
/// <seealso cref="PurgeExpired"/> /// <seealso cref="PurgeExpired"/>
/// <seealso cref="IsCountLimited"/> /// <seealso cref="IsCountLimited"/>
@ -237,7 +237,7 @@ namespace OpenSim.Framework
/// <seealso cref="Set"/> /// <seealso cref="Set"/>
/// <seealso cref="IsSizeLimited"/> /// <seealso cref="IsSizeLimited"/>
/// <seealso cref="Size"/> /// <seealso cref="Size"/>
/// <seealso cref="MaxSize"/> /// <seealso cref="MaxSize"/>
long MaxElementSize { get; } long MaxElementSize { get; }
/// <summary> /// <summary>
@ -246,7 +246,7 @@ namespace OpenSim.Framework
/// <value> /// <value>
/// Maximal allowed total size for elements stored to <see cref="ICnmCache{TKey,TValue}"/>. /// Maximal allowed total size for elements stored to <see cref="ICnmCache{TKey,TValue}"/>.
/// </value> /// </value>
/// <remarks> /// <remarks>
/// <para> /// <para>
/// Normally size is total bytes used by elements in the cache. But it can be any other suitable unit of measure. /// Normally size is total bytes used by elements in the cache. But it can be any other suitable unit of measure.
/// </para> /// </para>
@ -278,10 +278,10 @@ namespace OpenSim.Framework
/// When adding an new element to <see cref="ICnmCache{TKey,TValue}"/> that is limiting total size of elements, /// When adding an new element to <see cref="ICnmCache{TKey,TValue}"/> that is limiting total size of elements,
/// <see cref="ICnmCache{TKey,TValue}"/> will remove less recently used elements until it can fit an new element. /// <see cref="ICnmCache{TKey,TValue}"/> will remove less recently used elements until it can fit an new element.
/// </para> /// </para>
/// </remarks> /// </remarks>
/// <seealso cref="MaxElementSize"/> /// <seealso cref="MaxElementSize"/>
/// <seealso cref="IsSizeLimited"/> /// <seealso cref="IsSizeLimited"/>
/// <seealso cref="MaxSize"/> /// <seealso cref="MaxSize"/>
/// <seealso cref="IsCountLimited"/> /// <seealso cref="IsCountLimited"/>
/// <seealso cref="ExpirationTime"/> /// <seealso cref="ExpirationTime"/>
long Size { get; } long Size { get; }
@ -289,9 +289,9 @@ namespace OpenSim.Framework
/// <summary> /// <summary>
/// Gets an object that can be used to synchronize access to the <see cref="ICnmCache{TKey,TValue}"/>. /// Gets an object that can be used to synchronize access to the <see cref="ICnmCache{TKey,TValue}"/>.
/// </summary> /// </summary>
/// <value> /// <value>
/// An object that can be used to synchronize access to the <see cref="ICnmCache{TKey,TValue}"/>. /// An object that can be used to synchronize access to the <see cref="ICnmCache{TKey,TValue}"/>.
/// </value> /// </value>
/// <remarks> /// <remarks>
/// <para> /// <para>
/// To get synchronized (thread safe) access to <see cref="ICnmCache{TKey,TValue}"/>, use <see cref="CnmSynchronizedCache{TKey,TValue}"/> /// To get synchronized (thread safe) access to <see cref="ICnmCache{TKey,TValue}"/>, use <see cref="CnmSynchronizedCache{TKey,TValue}"/>
@ -322,7 +322,7 @@ namespace OpenSim.Framework
/// </para> /// </para>
/// <para> /// <para>
/// Depending on <see cref="ICnmCache{TKey,TValue}"/> implementation, some of expired elements /// Depending on <see cref="ICnmCache{TKey,TValue}"/> implementation, some of expired elements
/// may stay longer than <see cref="ExpirationTime"/> in the cache. /// may stay longer than <see cref="ExpirationTime"/> in the cache.
/// </para> /// </para>
/// </remarks> /// </remarks>
/// <seealso cref="IsTimeLimited"/> /// <seealso cref="IsTimeLimited"/>
@ -418,7 +418,7 @@ namespace OpenSim.Framework
/// </summary> /// </summary>
/// <returns> /// <returns>
/// <see langword="true"/>if the <see cref="ICnmCache{TKey,TValue}"/> contains an element with /// <see langword="true"/>if the <see cref="ICnmCache{TKey,TValue}"/> contains an element with
/// the specified key; otherwise, <see langword="false"/>. /// the specified key; otherwise, <see langword="false"/>.
/// </returns> /// </returns>
/// <param name="key"> /// <param name="key">
/// The key whose <paramref name="value"/> to get. /// The key whose <paramref name="value"/> to get.

View File

@ -46,8 +46,6 @@ namespace OpenSim.Framework
public delegate bool CloseAgentConnection(UUID agentID); public delegate bool CloseAgentConnection(UUID agentID);
public delegate bool RegionUp(RegionInfo region);
public delegate bool ChildAgentUpdate(ChildAgentDataUpdate cAgentData); public delegate bool ChildAgentUpdate(ChildAgentDataUpdate cAgentData);
public delegate void LogOffUser(UUID agentID, UUID regionSecret, string message); public delegate void LogOffUser(UUID agentID, UUID regionSecret, string message);
@ -65,7 +63,6 @@ namespace OpenSim.Framework
event AcknowledgePrimCross OnAcknowledgePrimCrossed; event AcknowledgePrimCross OnAcknowledgePrimCrossed;
event UpdateNeighbours OnNeighboursUpdate; event UpdateNeighbours OnNeighboursUpdate;
event CloseAgentConnection OnCloseAgentConnection; event CloseAgentConnection OnCloseAgentConnection;
event RegionUp OnRegionUp;
event ChildAgentUpdate OnChildAgentUpdate; event ChildAgentUpdate OnChildAgentUpdate;
event LogOffUser OnLogOffUser; event LogOffUser OnLogOffUser;
event GetLandData OnGetLandData; event GetLandData OnGetLandData;

View File

@ -55,7 +55,7 @@ namespace OpenSim.Framework
GodTakeCopy = 5, GodTakeCopy = 5,
Delete = 6, Delete = 6,
Return = 9 Return = 9
}; };
public interface IScene public interface IScene
{ {
@ -74,7 +74,7 @@ namespace OpenSim.Framework
void CloseAllAgents(uint circuitcode); void CloseAllAgents(uint circuitcode);
void Restart(int seconds); void Restart(int seconds);
bool OtherRegionUp(RegionInfo thisRegion); //RegionInfo OtherRegionUp(RegionInfo thisRegion);
string GetSimulatorVersion(); string GetSimulatorVersion();

View File

@ -32,7 +32,7 @@ namespace OpenSim.Framework
{ {
public interface ISceneObject public interface ISceneObject
{ {
UUID UUID { get; } UUID UUID { get; }
ISceneObject CloneForNewScene(); ISceneObject CloneForNewScene();
string ToXml2(); string ToXml2();
string ExtraToXmlString(); string ExtraToXmlString();

View File

@ -89,7 +89,7 @@ namespace OpenSim.Framework
ID = id; ID = id;
Name = name; Name = name;
Owner = owner; Owner = owner;
ParentID = parent; ParentID = parent;
} }
public InventoryFolderBase(UUID id, string name, UUID owner, short type, UUID parent, ushort version) public InventoryFolderBase(UUID id, string name, UUID owner, short type, UUID parent, ushort version)

View File

@ -304,7 +304,7 @@ namespace OpenSim.Framework
/// <summary> /// <summary>
/// Find a folder given a PATH_DELIMITER delimited path starting from this folder /// Find a folder given a PATH_DELIMITER delimited path starting from this folder
/// </summary> /// </summary>
/// ///
/// This method does not handle paths that contain multiple delimitors /// This method does not handle paths that contain multiple delimitors
/// ///
@ -314,7 +314,7 @@ namespace OpenSim.Framework
/// FIXME: Delimitors which occur in names themselves are not currently escapable. /// FIXME: Delimitors which occur in names themselves are not currently escapable.
/// ///
/// <param name="path"> /// <param name="path">
/// The path to the required folder. /// The path to the required folder.
/// It this is empty or consists only of the PATH_DELIMTER then this folder itself is returned. /// It this is empty or consists only of the PATH_DELIMTER then this folder itself is returned.
/// </param> /// </param>
/// <returns>null if the folder is not found</returns> /// <returns>null if the folder is not found</returns>

View File

@ -34,10 +34,10 @@ namespace OpenSim.Framework
/// Inventory Item - contains all the properties associated with an individual inventory piece. /// Inventory Item - contains all the properties associated with an individual inventory piece.
/// </summary> /// </summary>
public class InventoryItemBase : InventoryNodeBase, ICloneable public class InventoryItemBase : InventoryNodeBase, ICloneable
{ {
/// <value> /// <value>
/// The inventory type of the item. This is slightly different from the asset type in some situations. /// The inventory type of the item. This is slightly different from the asset type in some situations.
/// </value> /// </value>
public int InvType public int InvType
{ {
get get
@ -54,7 +54,7 @@ namespace OpenSim.Framework
/// <value> /// <value>
/// The folder this item is contained in /// The folder this item is contained in
/// </value> /// </value>
public UUID Folder public UUID Folder
{ {
get get
@ -71,7 +71,7 @@ namespace OpenSim.Framework
/// <value> /// <value>
/// The creator of this item /// The creator of this item
/// </value> /// </value>
public string CreatorId public string CreatorId
{ {
get get
@ -114,7 +114,7 @@ namespace OpenSim.Framework
{ {
m_creatorIdAsUuid = value; m_creatorIdAsUuid = value;
} }
} }
protected UUID m_creatorIdAsUuid = UUID.Zero; protected UUID m_creatorIdAsUuid = UUID.Zero;
/// <value> /// <value>
@ -130,13 +130,13 @@ namespace OpenSim.Framework
set set
{ {
m_description = value; m_description = value;
} }
} }
protected string m_description = String.Empty; protected string m_description = String.Empty;
/// <value> /// <value>
/// ///
/// </value> /// </value>
public uint NextPermissions public uint NextPermissions
{ {
get get
@ -153,7 +153,7 @@ namespace OpenSim.Framework
/// <value> /// <value>
/// A mask containing permissions for the current owner (cannot be enforced) /// A mask containing permissions for the current owner (cannot be enforced)
/// </value> /// </value>
public uint CurrentPermissions public uint CurrentPermissions
{ {
get get
@ -170,7 +170,7 @@ namespace OpenSim.Framework
/// <value> /// <value>
/// ///
/// </value> /// </value>
public uint BasePermissions public uint BasePermissions
{ {
get get
@ -187,7 +187,7 @@ namespace OpenSim.Framework
/// <value> /// <value>
/// ///
/// </value> /// </value>
public uint EveryOnePermissions public uint EveryOnePermissions
{ {
get get
@ -204,7 +204,7 @@ namespace OpenSim.Framework
/// <value> /// <value>
/// ///
/// </value> /// </value>
public uint GroupPermissions public uint GroupPermissions
{ {
get get
@ -221,7 +221,7 @@ namespace OpenSim.Framework
/// <value> /// <value>
/// This is an enumerated value determining the type of asset (eg Notecard, Sound, Object, etc) /// This is an enumerated value determining the type of asset (eg Notecard, Sound, Object, etc)
/// </value> /// </value>
public int AssetType public int AssetType
{ {
get get
@ -238,7 +238,7 @@ namespace OpenSim.Framework
/// <value> /// <value>
/// The UUID of the associated asset on the asset server /// The UUID of the associated asset on the asset server
/// </value> /// </value>
public UUID AssetID public UUID AssetID
{ {
get get
@ -255,7 +255,7 @@ namespace OpenSim.Framework
/// <value> /// <value>
/// ///
/// </value> /// </value>
public UUID GroupID public UUID GroupID
{ {
get get
@ -272,13 +272,13 @@ namespace OpenSim.Framework
/// <value> /// <value>
/// ///
/// </value> /// </value>
public bool GroupOwned public bool GroupOwned
{ {
get get
{ {
return m_groupOwned; return m_groupOwned;
} }
set set
{ {
@ -289,7 +289,7 @@ namespace OpenSim.Framework
/// <value> /// <value>
/// ///
/// </value> /// </value>
public int SalePrice public int SalePrice
{ {
get get
@ -306,7 +306,7 @@ namespace OpenSim.Framework
/// <value> /// <value>
/// ///
/// </value> /// </value>
public byte SaleType public byte SaleType
{ {
get get
@ -323,7 +323,7 @@ namespace OpenSim.Framework
/// <value> /// <value>
/// ///
/// </value> /// </value>
public uint Flags public uint Flags
{ {
get get
@ -340,7 +340,7 @@ namespace OpenSim.Framework
/// <value> /// <value>
/// ///
/// </value> /// </value>
public int CreationDate public int CreationDate
{ {
get get

View File

@ -31,12 +31,12 @@ namespace OpenSim.Framework
{ {
/// <summary> /// <summary>
/// Common base class for inventory nodes of different types (files, folders, etc.) /// Common base class for inventory nodes of different types (files, folders, etc.)
/// </summary> /// </summary>
public class InventoryNodeBase public class InventoryNodeBase
{ {
/// <summary> /// <summary>
/// The name of the node (64 characters or less) /// The name of the node (64 characters or less)
/// </summary> /// </summary>
public virtual string Name public virtual string Name
{ {
get { return m_name; } get { return m_name; }
@ -51,17 +51,17 @@ namespace OpenSim.Framework
{ {
get { return m_id; } get { return m_id; }
set { m_id = value; } set { m_id = value; }
} }
private UUID m_id; private UUID m_id;
/// <summary> /// <summary>
/// The agent who's inventory this is contained by /// The agent who's inventory this is contained by
/// </summary> /// </summary>
public virtual UUID Owner public virtual UUID Owner
{ {
get { return m_owner; } get { return m_owner; }
set { m_owner = value; } set { m_owner = value; }
} }
private UUID m_owner; private UUID m_owner;
} }
} }

View File

@ -32,7 +32,7 @@ namespace OpenSim.Framework
{ {
public class NetworkServersInfo public class NetworkServersInfo
{ {
public string AssetSendKey = String.Empty; public string AssetSendKey = String.Empty;
public string AssetURL = "http://127.0.0.1:" + ConfigSettings.DefaultAssetServerHttpPort.ToString() + "/"; public string AssetURL = "http://127.0.0.1:" + ConfigSettings.DefaultAssetServerHttpPort.ToString() + "/";
public string GridRecvKey = String.Empty; public string GridRecvKey = String.Empty;
@ -102,8 +102,7 @@ namespace OpenSim.Framework
ConfigSettings.DefaultInventoryServerHttpPort.ToString()); ConfigSettings.DefaultInventoryServerHttpPort.ToString());
secureInventoryServer = config.Configs["Network"].GetBoolean("secure_inventory_server", true); secureInventoryServer = config.Configs["Network"].GetBoolean("secure_inventory_server", true);
MessagingURL = config.Configs["Network"].GetString("messaging_server_url", MessagingURL = config.Configs["Network"].GetString("messaging_server_url", string.Empty);
"http://127.0.0.1:" + ConfigSettings.DefaultMessageServerHttpPort);
} }
} }
} }

View File

@ -47,7 +47,6 @@ namespace OpenSim.Framework
private ExpectUserDelegate handlerExpectUser = null; // OnExpectUser private ExpectUserDelegate handlerExpectUser = null; // OnExpectUser
private UpdateNeighbours handlerNeighboursUpdate = null; // OnNeighboursUpdate; private UpdateNeighbours handlerNeighboursUpdate = null; // OnNeighboursUpdate;
private PrimCrossing handlerPrimCrossingIntoRegion = null; // OnPrimCrossingIntoRegion; private PrimCrossing handlerPrimCrossingIntoRegion = null; // OnPrimCrossingIntoRegion;
private RegionUp handlerRegionUp = null; // OnRegionUp;
private LogOffUser handlerLogOffUser = null; private LogOffUser handlerLogOffUser = null;
private GetLandData handlerGetLandData = null; private GetLandData handlerGetLandData = null;
@ -62,7 +61,6 @@ namespace OpenSim.Framework
public event AcknowledgeAgentCross OnAcknowledgeAgentCrossed; public event AcknowledgeAgentCross OnAcknowledgeAgentCrossed;
public event AcknowledgePrimCross OnAcknowledgePrimCrossed; public event AcknowledgePrimCross OnAcknowledgePrimCrossed;
public event CloseAgentConnection OnCloseAgentConnection; public event CloseAgentConnection OnCloseAgentConnection;
public event RegionUp OnRegionUp;
public event ChildAgentUpdate OnChildAgentUpdate; public event ChildAgentUpdate OnChildAgentUpdate;
public event LogOffUser OnLogOffUser; public event LogOffUser OnLogOffUser;
public event GetLandData OnGetLandData; public event GetLandData OnGetLandData;
@ -108,17 +106,6 @@ namespace OpenSim.Framework
return false; return false;
} }
public virtual bool TriggerRegionUp(RegionInfo region)
{
handlerRegionUp = OnRegionUp;
if (handlerRegionUp != null)
{
handlerRegionUp(region);
return true;
}
return false;
}
public virtual bool TriggerChildAgentUpdate(ChildAgentDataUpdate cAgentData) public virtual bool TriggerChildAgentUpdate(ChildAgentDataUpdate cAgentData)
{ {
handlerChildAgentUpdate = OnChildAgentUpdate; handlerChildAgentUpdate = OnChildAgentUpdate;

View File

@ -26,6 +26,7 @@
*/ */
using System; using System;
using System.Collections.Generic;
using System.Net; using System.Net;
using System.Net.Sockets; using System.Net.Sockets;
using System.Xml; using System.Xml;
@ -63,6 +64,13 @@ namespace OpenSim.Framework
} }
protected string m_serverURI; protected string m_serverURI;
public string RegionName
{
get { return m_regionName; }
set { m_regionName = value; }
}
protected string m_regionName = String.Empty;
protected bool Allow_Alternate_Ports; protected bool Allow_Alternate_Ports;
public bool m_allow_alternate_ports; public bool m_allow_alternate_ports;
protected string m_externalHostName; protected string m_externalHostName;
@ -100,6 +108,7 @@ namespace OpenSim.Framework
public SimpleRegionInfo(RegionInfo ConvertFrom) public SimpleRegionInfo(RegionInfo ConvertFrom)
{ {
m_regionName = ConvertFrom.RegionName;
m_regionLocX = ConvertFrom.RegionLocX; m_regionLocX = ConvertFrom.RegionLocX;
m_regionLocY = ConvertFrom.RegionLocY; m_regionLocY = ConvertFrom.RegionLocY;
m_internalEndPoint = ConvertFrom.InternalEndPoint; m_internalEndPoint = ConvertFrom.InternalEndPoint;
@ -197,6 +206,67 @@ namespace OpenSim.Framework
{ {
return m_internalEndPoint.Port; return m_internalEndPoint.Port;
} }
public Dictionary<string, object> ToKeyValuePairs()
{
Dictionary<string, object> kvp = new Dictionary<string, object>();
kvp["uuid"] = RegionID.ToString();
kvp["locX"] = RegionLocX.ToString();
kvp["locY"] = RegionLocY.ToString();
kvp["external_ip_address"] = ExternalEndPoint.Address.ToString();
kvp["external_port"] = ExternalEndPoint.Port.ToString();
kvp["external_host_name"] = ExternalHostName;
kvp["http_port"] = HttpPort.ToString();
kvp["internal_ip_address"] = InternalEndPoint.Address.ToString();
kvp["internal_port"] = InternalEndPoint.Port.ToString();
kvp["alternate_ports"] = m_allow_alternate_ports.ToString();
kvp["server_uri"] = ServerURI;
return kvp;
}
public SimpleRegionInfo(Dictionary<string, object> kvp)
{
if ((kvp["external_ip_address"] != null) && (kvp["external_port"] != null))
{
int port = 0;
Int32.TryParse((string)kvp["external_port"], out port);
IPEndPoint ep = new IPEndPoint(IPAddress.Parse((string)kvp["external_ip_address"]), port);
ExternalEndPoint = ep;
}
else
ExternalEndPoint = new IPEndPoint(IPAddress.Parse("0.0.0.0"), 0);
if (kvp["external_host_name"] != null)
ExternalHostName = (string)kvp["external_host_name"];
if (kvp["http_port"] != null)
{
UInt32 port = 0;
UInt32.TryParse((string)kvp["http_port"], out port);
HttpPort = port;
}
if ((kvp["internal_ip_address"] != null) && (kvp["internal_port"] != null))
{
int port = 0;
Int32.TryParse((string)kvp["internal_port"], out port);
IPEndPoint ep = new IPEndPoint(IPAddress.Parse((string)kvp["internal_ip_address"]), port);
InternalEndPoint = ep;
}
else
InternalEndPoint = new IPEndPoint(IPAddress.Parse("0.0.0.0"), 0);
if (kvp["alternate_ports"] != null)
{
bool alts = false;
Boolean.TryParse((string)kvp["alternate_ports"], out alts);
m_allow_alternate_ports = alts;
}
if (kvp["server_uri"] != null)
ServerURI = (string)kvp["server_uri"];
}
} }
public class RegionInfo : SimpleRegionInfo public class RegionInfo : SimpleRegionInfo
@ -222,7 +292,6 @@ namespace OpenSim.Framework
public UUID originRegionID = UUID.Zero; public UUID originRegionID = UUID.Zero;
public string proxyUrl = ""; public string proxyUrl = "";
public int ProxyOffset = 0; public int ProxyOffset = 0;
public string RegionName = String.Empty;
public string regionSecret = UUID.Random().ToString(); public string regionSecret = UUID.Random().ToString();
public string osSecret; public string osSecret;
@ -971,7 +1040,7 @@ namespace OpenSim.Framework
public static RegionInfo Create(UUID regionID, string regionName, uint regX, uint regY, string externalHostName, uint httpPort, uint simPort, uint remotingPort, string serverURI) public static RegionInfo Create(UUID regionID, string regionName, uint regX, uint regY, string externalHostName, uint httpPort, uint simPort, uint remotingPort, string serverURI)
{ {
RegionInfo regionInfo; RegionInfo regionInfo;
IPEndPoint neighbourInternalEndPoint = new IPEndPoint(Util.GetHostFromDNS(externalHostName), (int)simPort); IPEndPoint neighbourInternalEndPoint = new IPEndPoint(Util.GetHostFromDNS(externalHostName), (int)simPort);
regionInfo = new RegionInfo(regX, regY, neighbourInternalEndPoint, externalHostName); regionInfo = new RegionInfo(regX, regY, neighbourInternalEndPoint, externalHostName);
regionInfo.RemotingPort = remotingPort; regionInfo.RemotingPort = remotingPort;
regionInfo.RemotingAddress = externalHostName; regionInfo.RemotingAddress = externalHostName;

View File

@ -0,0 +1,191 @@
/*
* Copyright (c) Contributors, http://opensimulator.org/
* See CONTRIBUTORS.TXT for a full list of copyright holders.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
* * Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* * Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
* * Neither the name of the OpenSimulator Project nor the
* names of its contributors may be used to endorse or promote products
* derived from this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
using System;
using System.Collections.Generic;
using System.IO;
using System.Text;
using System.Xml;
using OpenMetaverse;
using OpenSim.Framework;
namespace OpenSim.Framework.Serialization.External
{
/// <summary>
/// Serialize and deserialize LandData as an external format.
/// </summary>
public class LandDataSerializer
{
protected static UTF8Encoding m_utf8Encoding = new UTF8Encoding();
/// <summary>
/// Reify/deserialize landData
/// </summary>
/// <param name="serializedLandData"></param>
/// <returns></returns>
/// <exception cref="System.Xml.XmlException"></exception>
public static LandData Deserialize(byte[] serializedLandData)
{
return Deserialize(m_utf8Encoding.GetString(serializedLandData, 0, serializedLandData.Length));
}
/// <summary>
/// Reify/deserialize landData
/// </summary>
/// <param name="serializedLandData"></param>
/// <returns></returns>
/// <exception cref="System.Xml.XmlException"></exception>
public static LandData Deserialize(string serializedLandData)
{
LandData landData = new LandData();
StringReader sr = new StringReader(serializedLandData);
XmlTextReader xtr = new XmlTextReader(sr);
xtr.ReadStartElement("LandData");
landData.Area = Convert.ToInt32( xtr.ReadElementString("Area"));
landData.AuctionID = Convert.ToUInt32( xtr.ReadElementString("AuctionID"));
landData.AuthBuyerID = UUID.Parse( xtr.ReadElementString("AuthBuyerID"));
landData.Category = (ParcelCategory)Convert.ToSByte( xtr.ReadElementString("Category"));
landData.ClaimDate = Convert.ToInt32( xtr.ReadElementString("ClaimDate"));
landData.ClaimPrice = Convert.ToInt32( xtr.ReadElementString("ClaimPrice"));
landData.GlobalID = UUID.Parse( xtr.ReadElementString("GlobalID"));
landData.GroupID = UUID.Parse( xtr.ReadElementString("GroupID"));
landData.IsGroupOwned = Convert.ToBoolean( xtr.ReadElementString("IsGroupOwned"));
landData.Bitmap = Convert.FromBase64String( xtr.ReadElementString("Bitmap"));
landData.Description = xtr.ReadElementString("Description");
landData.Flags = Convert.ToUInt32( xtr.ReadElementString("Flags"));
landData.LandingType = Convert.ToByte( xtr.ReadElementString("LandingType"));
landData.Name = xtr.ReadElementString("Name");
landData.Status = (ParcelStatus)Convert.ToSByte( xtr.ReadElementString("Status"));
landData.LocalID = Convert.ToInt32( xtr.ReadElementString("LocalID"));
landData.MediaAutoScale = Convert.ToByte( xtr.ReadElementString("MediaAutoScale"));
landData.MediaID = UUID.Parse( xtr.ReadElementString("MediaID"));
landData.MediaURL = xtr.ReadElementString("MediaURL");
landData.MusicURL = xtr.ReadElementString("MusicURL");
landData.OwnerID = UUID.Parse( xtr.ReadElementString("OwnerID"));
landData.ParcelAccessList = new List<ParcelManager.ParcelAccessEntry>();
xtr.Read();
if (xtr.Name != "ParcelAccessList")
throw new XmlException(String.Format("Expected \"ParcelAccessList\" element but got \"{0}\"", xtr.Name));
if (!xtr.IsEmptyElement)
{
while (xtr.Read() && xtr.NodeType != XmlNodeType.EndElement)
{
ParcelManager.ParcelAccessEntry pae = new ParcelManager.ParcelAccessEntry();
xtr.ReadStartElement("ParcelAccessEntry");
pae.AgentID = UUID.Parse( xtr.ReadElementString("AgentID"));
pae.Time = Convert.ToDateTime( xtr.ReadElementString("Time"));
pae.Flags = (AccessList)Convert.ToUInt32( xtr.ReadElementString("AccessList"));
xtr.ReadEndElement();
landData.ParcelAccessList.Add(pae);
}
}
xtr.Read();
landData.PassHours = Convert.ToSingle( xtr.ReadElementString("PassHours"));
landData.PassPrice = Convert.ToInt32( xtr.ReadElementString("PassPrice"));
landData.SalePrice = Convert.ToInt32( xtr.ReadElementString("SalePrice"));
landData.SnapshotID = UUID.Parse( xtr.ReadElementString("SnapshotID"));
landData.UserLocation = Vector3.Parse( xtr.ReadElementString("UserLocation"));
landData.UserLookAt = Vector3.Parse( xtr.ReadElementString("UserLookAt"));
landData.Dwell = Convert.ToInt32( xtr.ReadElementString("Dwell"));
landData.OtherCleanTime = Convert.ToInt32( xtr.ReadElementString("OtherCleanTime"));
xtr.ReadEndElement();
xtr.Close();
sr.Close();
return landData;
}
public static string Serialize(LandData landData)
{
StringWriter sw = new StringWriter();
XmlTextWriter xtw = new XmlTextWriter(sw);
xtw.Formatting = Formatting.Indented;
xtw.WriteStartDocument();
xtw.WriteStartElement("LandData");
xtw.WriteElementString("Area", Convert.ToString(landData.Area));
xtw.WriteElementString("AuctionID", Convert.ToString(landData.AuctionID));
xtw.WriteElementString("AuthBuyerID", landData.AuthBuyerID.ToString());
xtw.WriteElementString("Category", Convert.ToString((sbyte)landData.Category));
xtw.WriteElementString("ClaimDate", Convert.ToString(landData.ClaimDate));
xtw.WriteElementString("ClaimPrice", Convert.ToString(landData.ClaimPrice));
xtw.WriteElementString("GlobalID", landData.GlobalID.ToString());
xtw.WriteElementString("GroupID", landData.GroupID.ToString());
xtw.WriteElementString("IsGroupOwned", Convert.ToString(landData.IsGroupOwned));
xtw.WriteElementString("Bitmap", Convert.ToBase64String(landData.Bitmap));
xtw.WriteElementString("Description", landData.Description);
xtw.WriteElementString("Flags", Convert.ToString((uint)landData.Flags));
xtw.WriteElementString("LandingType", Convert.ToString((byte)landData.LandingType));
xtw.WriteElementString("Name", landData.Name);
xtw.WriteElementString("Status", Convert.ToString((sbyte)landData.Status));
xtw.WriteElementString("LocalID", landData.LocalID.ToString());
xtw.WriteElementString("MediaAutoScale", Convert.ToString(landData.MediaAutoScale));
xtw.WriteElementString("MediaID", landData.MediaID.ToString());
xtw.WriteElementString("MediaURL", landData.MediaURL);
xtw.WriteElementString("MusicURL", landData.MusicURL);
xtw.WriteElementString("OwnerID", landData.OwnerID.ToString());
xtw.WriteStartElement("ParcelAccessList");
foreach (ParcelManager.ParcelAccessEntry pal in landData.ParcelAccessList)
{
xtw.WriteStartElement("ParcelAccessEntry");
xtw.WriteElementString("AgentID", pal.AgentID.ToString());
xtw.WriteElementString("Time", pal.Time.ToString("s"));
xtw.WriteElementString("AccessList", Convert.ToString((uint)pal.Flags));
xtw.WriteEndElement();
}
xtw.WriteEndElement();
xtw.WriteElementString("PassHours", Convert.ToString(landData.PassHours));
xtw.WriteElementString("PassPrice", Convert.ToString(landData.PassPrice));
xtw.WriteElementString("SalePrice", Convert.ToString(landData.SalePrice));
xtw.WriteElementString("SnapshotID", landData.SnapshotID.ToString());
xtw.WriteElementString("UserLocation", landData.UserLocation.ToString());
xtw.WriteElementString("UserLookAt", landData.UserLookAt.ToString());
xtw.WriteElementString("Dwell", Convert.ToString(landData.Dwell));
xtw.WriteElementString("OtherCleanTime", Convert.ToString(landData.OtherCleanTime));
xtw.WriteEndElement();
xtw.Close();
sw.Close();
return sw.ToString();
}
}
}

View File

@ -158,7 +158,7 @@ namespace OpenSim.Framework.Serialization.External
settings.Elevation2NE = double.Parse(xtr.ReadElementContentAsString()); settings.Elevation2NE = double.Parse(xtr.ReadElementContentAsString());
break; break;
} }
} }
xtr.ReadEndElement(); xtr.ReadEndElement();
xtr.ReadStartElement("Terrain"); xtr.ReadStartElement("Terrain");
@ -200,8 +200,8 @@ namespace OpenSim.Framework.Serialization.External
xtw.WriteStartElement("RegionSettings"); xtw.WriteStartElement("RegionSettings");
xtw.WriteStartElement("General"); xtw.WriteStartElement("General");
xtw.WriteElementString("AllowDamage", settings.AllowDamage.ToString()); xtw.WriteElementString("AllowDamage", settings.AllowDamage.ToString());
xtw.WriteElementString("AllowLandResell", settings.AllowLandResell.ToString()); xtw.WriteElementString("AllowLandResell", settings.AllowLandResell.ToString());
xtw.WriteElementString("AllowLandJoinDivide", settings.AllowLandJoinDivide.ToString()); xtw.WriteElementString("AllowLandJoinDivide", settings.AllowLandJoinDivide.ToString());
xtw.WriteElementString("BlockFly", settings.BlockFly.ToString()); xtw.WriteElementString("BlockFly", settings.BlockFly.ToString());

View File

@ -36,7 +36,7 @@ namespace OpenSim.Framework.Serialization.External
/// Serialize and deserialize region settings as an external format. /// Serialize and deserialize region settings as an external format.
/// </summary> /// </summary>
public class UserProfileSerializer public class UserProfileSerializer
{ {
public const int MAJOR_VERSION = 0; public const int MAJOR_VERSION = 0;
public const int MINOR_VERSION = 1; public const int MINOR_VERSION = 1;
@ -65,6 +65,6 @@ namespace OpenSim.Framework.Serialization.External
sw.Close(); sw.Close();
return sw.ToString(); return sw.ToString();
} }
} }
} }

View File

@ -0,0 +1,131 @@
/*
* Copyright (c) Contributors, http://opensimulator.org/
* See CONTRIBUTORS.TXT for a full list of copyright holders.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
* * Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* * Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
* * Neither the name of the OpenSimulator Project nor the
* names of its contributors may be used to endorse or promote products
* derived from this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
using System;
using System.Collections.Generic;
using OpenSim.Framework;
using OpenSim.Framework.Serialization.External;
using OpenMetaverse;
using OpenMetaverse.StructuredData;
using NUnit.Framework;
namespace OpenSim.Framework.Serialization.Tests
{
[TestFixture]
public class LandDataSerializerTest
{
private LandData land;
private LandData landWithParcelAccessList;
private static string preSerialized = "<?xml version=\"1.0\" encoding=\"utf-16\"?>\n<LandData>\n <Area>128</Area>\n <AuctionID>0</AuctionID>\n <AuthBuyerID>00000000-0000-0000-0000-000000000000</AuthBuyerID>\n <Category>10</Category>\n <ClaimDate>0</ClaimDate>\n <ClaimPrice>0</ClaimPrice>\n <GlobalID>54ff9641-dd40-4a2c-b1f1-47dd3af24e50</GlobalID>\n <GroupID>d740204e-bbbf-44aa-949d-02c7d739f6a5</GroupID>\n <IsGroupOwned>False</IsGroupOwned>\n <Bitmap>AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=</Bitmap>\n <Description>land data to test LandDataSerializer</Description>\n <Flags>536870944</Flags>\n <LandingType>2</LandingType>\n <Name>LandDataSerializerTest Land</Name>\n <Status>0</Status>\n <LocalID>0</LocalID>\n <MediaAutoScale>1</MediaAutoScale>\n <MediaID>d4452578-2f25-4b97-a81b-819af559cfd7</MediaID>\n <MediaURL>http://videos.opensimulator.org/bumblebee.mp4</MediaURL>\n <MusicURL />\n <OwnerID>1b8eedf9-6d15-448b-8015-24286f1756bf</OwnerID>\n <ParcelAccessList />\n <PassHours>0</PassHours>\n <PassPrice>0</PassPrice>\n <SalePrice>0</SalePrice>\n <SnapshotID>00000000-0000-0000-0000-000000000000</SnapshotID>\n <UserLocation>&lt;0, 0, 0&gt;</UserLocation>\n <UserLookAt>&lt;0, 0, 0&gt;</UserLookAt>\n <Dwell>0</Dwell>\n <OtherCleanTime>0</OtherCleanTime>\n</LandData>";
private static string preSerializedWithParcelAccessList = "<?xml version=\"1.0\" encoding=\"utf-16\"?>\n<LandData>\n <Area>128</Area>\n <AuctionID>0</AuctionID>\n <AuthBuyerID>00000000-0000-0000-0000-000000000000</AuthBuyerID>\n <Category>10</Category>\n <ClaimDate>0</ClaimDate>\n <ClaimPrice>0</ClaimPrice>\n <GlobalID>54ff9641-dd40-4a2c-b1f1-47dd3af24e50</GlobalID>\n <GroupID>d740204e-bbbf-44aa-949d-02c7d739f6a5</GroupID>\n <IsGroupOwned>False</IsGroupOwned>\n <Bitmap>AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=</Bitmap>\n <Description>land data to test LandDataSerializer</Description>\n <Flags>536870944</Flags>\n <LandingType>2</LandingType>\n <Name>LandDataSerializerTest Land</Name>\n <Status>0</Status>\n <LocalID>0</LocalID>\n <MediaAutoScale>1</MediaAutoScale>\n <MediaID>d4452578-2f25-4b97-a81b-819af559cfd7</MediaID>\n <MediaURL>http://videos.opensimulator.org/bumblebee.mp4</MediaURL>\n <MusicURL />\n <OwnerID>1b8eedf9-6d15-448b-8015-24286f1756bf</OwnerID>\n <ParcelAccessList>\n <ParcelAccessEntry>\n <AgentID>62d65d45-c91a-4f77-862c-46557d978b6c</AgentID>\n <Time>2009-10-01T00:00:00</Time>\n <AccessList>2</AccessList>\n </ParcelAccessEntry>\n <ParcelAccessEntry>\n <AgentID>ec2a8d18-2378-4fe0-8b68-2a31b57c481e</AgentID>\n <Time>2010-10-20T00:00:00</Time>\n <AccessList>1</AccessList>\n </ParcelAccessEntry>\n </ParcelAccessList>\n <PassHours>0</PassHours>\n <PassPrice>0</PassPrice>\n <SalePrice>0</SalePrice>\n <SnapshotID>00000000-0000-0000-0000-000000000000</SnapshotID>\n <UserLocation>&lt;0, 0, 0&gt;</UserLocation>\n <UserLookAt>&lt;0, 0, 0&gt;</UserLookAt>\n <Dwell>0</Dwell>\n <OtherCleanTime>0</OtherCleanTime>\n</LandData>";
[SetUp]
public void setup()
{
// setup LandData object
this.land = new LandData();
this.land.AABBMax = new Vector3(0, 0, 0);
this.land.AABBMin = new Vector3(128, 128, 128);
this.land.Area = 128;
this.land.AuctionID = 0;
this.land.AuthBuyerID = new UUID();
this.land.Category = ParcelCategory.Residential;
this.land.ClaimDate = 0;
this.land.ClaimPrice = 0;
this.land.GlobalID = new UUID("54ff9641-dd40-4a2c-b1f1-47dd3af24e50");
this.land.GroupID = new UUID("d740204e-bbbf-44aa-949d-02c7d739f6a5");
this.land.GroupPrims = 0;
this.land.Description = "land data to test LandDataSerializer";
this.land.Flags = (uint)(ParcelFlags.AllowDamage | ParcelFlags.AllowVoiceChat);
this.land.LandingType = (byte)LandingType.Direct;
this.land.Name = "LandDataSerializerTest Land";
this.land.Status = ParcelStatus.Leased;
this.land.LocalID = 0;
this.land.MediaAutoScale = (byte)0x01;
this.land.MediaID = new UUID("d4452578-2f25-4b97-a81b-819af559cfd7");
this.land.MediaURL = "http://videos.opensimulator.org/bumblebee.mp4";
this.land.OwnerID = new UUID("1b8eedf9-6d15-448b-8015-24286f1756bf");
this.landWithParcelAccessList = this.land.Copy();
this.landWithParcelAccessList.ParcelAccessList.Clear();
ParcelManager.ParcelAccessEntry pae0 = new ParcelManager.ParcelAccessEntry();
pae0.AgentID = new UUID("62d65d45-c91a-4f77-862c-46557d978b6c");
pae0.Flags = AccessList.Ban;
pae0.Time = new DateTime(2009, 10, 01);
this.landWithParcelAccessList.ParcelAccessList.Add(pae0);
ParcelManager.ParcelAccessEntry pae1 = new ParcelManager.ParcelAccessEntry();
pae1.AgentID = new UUID("ec2a8d18-2378-4fe0-8b68-2a31b57c481e");
pae1.Flags = AccessList.Access;
pae1.Time = new DateTime(2010, 10, 20);
this.landWithParcelAccessList.ParcelAccessList.Add(pae1);
}
/// <summary>
/// Test the LandDataSerializer.Serialize() method
/// </summary>
[Test]
public void LandDataSerializerSerializeTest()
{
string serialized = LandDataSerializer.Serialize(this.land);
Assert.That(serialized.Length > 0, "Serialize(LandData) returned empty string");
Assert.That(serialized == LandDataSerializerTest.preSerialized,
"result of Serialize(LandData) does not match expected result");
string serializedWithParcelAccessList = LandDataSerializer.Serialize(this.landWithParcelAccessList);
Assert.That(serializedWithParcelAccessList.Length > 0,
"Serialize(LandData) returned empty string for LandData object with ParcelAccessList");
Assert.That(serializedWithParcelAccessList == LandDataSerializerTest.preSerializedWithParcelAccessList,
"result of Serialize(LandData) does not match expected result (pre-serialized with parcel access list");
}
/// <summary>
/// Test the LandDataSerializer.Deserialize() method
/// </summary>
[Test]
public void TestLandDataSerializerDeserializeFromStringTest()
{
LandData reifiedLandData = LandDataSerializer.Deserialize(LandDataSerializerTest.preSerialized);
Assert.That(reifiedLandData != null, "Deserialize(string) returned null");
Assert.That(reifiedLandData.GlobalID == this.land.GlobalID, "Reified LandData.GlobalID != original LandData.GlobalID");
Assert.That(reifiedLandData.Name == this.land.Name, "Reified LandData.Name != original LandData.Name");
LandData reifiedLandDataWithParcelAccessList = LandDataSerializer.Deserialize(LandDataSerializerTest.preSerializedWithParcelAccessList);
Assert.That(reifiedLandDataWithParcelAccessList != null,
"Deserialize(string) returned null (pre-serialized with parcel access list)");
Assert.That(reifiedLandDataWithParcelAccessList.GlobalID == this.landWithParcelAccessList.GlobalID,
"Reified LandData.GlobalID != original LandData.GlobalID (pre-serialized with parcel access list)");
Assert.That(reifiedLandDataWithParcelAccessList.Name == this.landWithParcelAccessList.Name,
"Reified LandData.Name != original LandData.Name (pre-serialized with parcel access list)");
}
}
}

View File

@ -158,7 +158,7 @@ namespace OpenSim.Framework.Servers
m_consoleAppender.Threshold = Level.All; m_consoleAppender.Threshold = Level.All;
Notice(String.Format("Console log level is {0}", m_consoleAppender.Threshold)); Notice(String.Format("Console log level is {0}", m_consoleAppender.Threshold));
} }
m_console.Commands.AddCommand("base", false, "quit", m_console.Commands.AddCommand("base", false, "quit",
"quit", "quit",
@ -196,7 +196,7 @@ namespace OpenSim.Framework.Servers
/// <summary> /// <summary>
/// Should be overriden and referenced by descendents if they need to perform extra shutdown processing /// Should be overriden and referenced by descendents if they need to perform extra shutdown processing
/// </summary> /// </summary>
public virtual void ShutdownSpecific() {} public virtual void ShutdownSpecific() {}
/// <summary> /// <summary>
@ -286,7 +286,7 @@ namespace OpenSim.Framework.Servers
/// </summary> /// </summary>
public virtual void Startup() public virtual void Startup()
{ {
m_log.Info("[STARTUP]: Beginning startup processing"); m_log.Info("[STARTUP]: Beginning startup processing");
EnhanceVersionInformation(); EnhanceVersionInformation();
@ -301,7 +301,7 @@ namespace OpenSim.Framework.Servers
/// <summary> /// <summary>
/// Should be overriden and referenced by descendents if they need to perform extra shutdown processing /// Should be overriden and referenced by descendents if they need to perform extra shutdown processing
/// </summary> /// </summary>
public virtual void Shutdown() public virtual void Shutdown()
{ {
ShutdownSpecific(); ShutdownSpecific();
@ -367,7 +367,7 @@ namespace OpenSim.Framework.Servers
} }
public virtual void HandleShow(string module, string[] cmd) public virtual void HandleShow(string module, string[] cmd)
{ {
List<string> args = new List<string>(cmd); List<string> args = new List<string>(cmd);
args.RemoveAt(0); args.RemoveAt(0);
@ -375,7 +375,7 @@ namespace OpenSim.Framework.Servers
string[] showParams = args.ToArray(); string[] showParams = args.ToArray();
switch (showParams[0]) switch (showParams[0])
{ {
case "info": case "info":
Notice("Version: " + m_version); Notice("Version: " + m_version);
Notice("Startup directory: " + m_startupDirectory); Notice("Startup directory: " + m_startupDirectory);

View File

@ -168,7 +168,7 @@ namespace OpenSim.Framework.Servers.HttpServer
"[ASYNC REQUEST]: Request {0} {1} callback failed with exception {2}", verb, requestUrl, e); "[ASYNC REQUEST]: Request {0} {1} callback failed with exception {2}", verb, requestUrl, e);
} }
}, null); }, null);
} }
} }
} }

View File

@ -110,7 +110,7 @@ namespace OpenSim.Framework.Servers.HttpServer
public BaseHttpServer(uint port, bool ssl) : this (port) public BaseHttpServer(uint port, bool ssl) : this (port)
{ {
m_ssl = ssl; m_ssl = ssl;
} }
public BaseHttpServer(uint port, bool ssl, uint sslport, string CN) : this (port, ssl) public BaseHttpServer(uint port, bool ssl, uint sslport, string CN) : this (port, ssl)
@ -156,7 +156,7 @@ namespace OpenSim.Framework.Servers.HttpServer
lock (m_rpcHandlers) lock (m_rpcHandlers)
{ {
m_rpcHandlers[method] = handler; m_rpcHandlers[method] = handler;
m_rpcHandlersKeepAlive[method] = keepAlive; // default m_rpcHandlersKeepAlive[method] = keepAlive; // default
} }
return true; return true;
@ -256,13 +256,51 @@ namespace OpenSim.Framework.Servers.HttpServer
IHttpClientContext context = (IHttpClientContext)source; IHttpClientContext context = (IHttpClientContext)source;
IHttpRequest request = args.Request; IHttpRequest request = args.Request;
PollServiceEventArgs psEvArgs; PollServiceEventArgs psEvArgs;
if (TryGetPollServiceHTTPHandler(request.UriPath.ToString(), out psEvArgs)) if (TryGetPollServiceHTTPHandler(request.UriPath.ToString(), out psEvArgs))
{ {
PollServiceHttpRequest psreq = new PollServiceHttpRequest(psEvArgs, context, request);
m_PollServiceManager.Enqueue(new PollServiceHttpRequest(psEvArgs, context, request));
//DoHTTPGruntWork(psEvArgs.NoEvents(),new OSHttpResponse(new HttpResponse(context, request))); if (psEvArgs.Request != null)
{
OSHttpRequest req = new OSHttpRequest(context, request);
Stream requestStream = req.InputStream;
Encoding encoding = Encoding.UTF8;
StreamReader reader = new StreamReader(requestStream, encoding);
string requestBody = reader.ReadToEnd();
Hashtable keysvals = new Hashtable();
Hashtable headervals = new Hashtable();
string[] querystringkeys = req.QueryString.AllKeys;
string[] rHeaders = req.Headers.AllKeys;
keysvals.Add("body", requestBody);
keysvals.Add("uri", req.RawUrl);
keysvals.Add("content-type", req.ContentType);
keysvals.Add("http-method", req.HttpMethod);
foreach (string queryname in querystringkeys)
{
keysvals.Add(queryname, req.QueryString[queryname]);
}
foreach (string headername in rHeaders)
{
headervals[headername] = req.Headers[headername];
}
keysvals.Add("headers",headervals);
keysvals.Add("querystringkeys", querystringkeys);
psEvArgs.Request(psreq.RequestID, keysvals);
}
m_PollServiceManager.Enqueue(psreq);
} }
else else
{ {
@ -275,49 +313,17 @@ namespace OpenSim.Framework.Servers.HttpServer
{ {
OSHttpRequest req = new OSHttpRequest(context, request); OSHttpRequest req = new OSHttpRequest(context, request);
OSHttpResponse resp = new OSHttpResponse(new HttpResponse(context, request),context); OSHttpResponse resp = new OSHttpResponse(new HttpResponse(context, request),context);
//resp.KeepAlive = req.KeepAlive;
//m_log.Info("[Debug BASE HTTP SERVER]: Got Request");
//HttpServerContextObj objstate= new HttpServerContextObj(req,resp);
//ThreadPool.QueueUserWorkItem(new WaitCallback(ConvertIHttpClientContextToOSHttp), (object)objstate);
HandleRequest(req, resp); HandleRequest(req, resp);
} }
public void ConvertIHttpClientContextToOSHttp(object stateinfo) public void ConvertIHttpClientContextToOSHttp(object stateinfo)
{ {
HttpServerContextObj objstate = (HttpServerContextObj)stateinfo; HttpServerContextObj objstate = (HttpServerContextObj)stateinfo;
//OSHttpRequest request = new OSHttpRequest(objstate.context,objstate.req);
//OSHttpResponse resp = new OSHttpResponse(new HttpServer.HttpResponse(objstate.context, objstate.req));
OSHttpRequest request = objstate.oreq; OSHttpRequest request = objstate.oreq;
OSHttpResponse resp = objstate.oresp; OSHttpResponse resp = objstate.oresp;
//OSHttpResponse resp = new OSHttpResponse(new HttpServer.HttpResponse(objstate.context, objstate.req));
/* HandleRequest(request,resp);
request.AcceptTypes = objstate.req.AcceptTypes;
request.ContentLength = (long)objstate.req.ContentLength;
request.Headers = objstate.req.Headers;
request.HttpMethod = objstate.req.Method;
request.InputStream = objstate.req.Body;
foreach (string str in request.Headers)
{
if (str.ToLower().Contains("content-type: "))
{
request.ContentType = str.Substring(13, str.Length - 13);
break;
}
}
//request.KeepAlive = objstate.req.
foreach (HttpServer.HttpInput httpinput in objstate.req.QueryString)
{
request.QueryString.Add(httpinput.Name, httpinput[httpinput.Name]);
}
//request.Query = objstate.req.//objstate.req.QueryString;
//foreach (
//request.QueryString = objstate.req.QueryString;
*/
HandleRequest(request,resp);
} }
public virtual void HandleRequest(OSHttpRequest request, OSHttpResponse response) public virtual void HandleRequest(OSHttpRequest request, OSHttpResponse response)
@ -332,6 +338,7 @@ namespace OpenSim.Framework.Servers.HttpServer
// probability event; if a request is matched it is normally expected to be // probability event; if a request is matched it is normally expected to be
// handled // handled
//m_log.Debug("[BASE HTTP SERVER]: Handling Request" + request.RawUrl); //m_log.Debug("[BASE HTTP SERVER]: Handling Request" + request.RawUrl);
IHttpAgentHandler agentHandler; IHttpAgentHandler agentHandler;
if (TryGetAgentHandler(request, response, out agentHandler)) if (TryGetAgentHandler(request, response, out agentHandler))
@ -342,10 +349,11 @@ namespace OpenSim.Framework.Servers.HttpServer
} }
} }
IRequestHandler requestHandler;
//response.KeepAlive = true; //response.KeepAlive = true;
response.SendChunked = false; response.SendChunked = false;
IRequestHandler requestHandler;
string path = request.RawUrl; string path = request.RawUrl;
string handlerKey = GetHandlerKey(request.HttpMethod, path); string handlerKey = GetHandlerKey(request.HttpMethod, path);
@ -359,6 +367,7 @@ namespace OpenSim.Framework.Servers.HttpServer
response.ContentType = requestHandler.ContentType; // Lets do this defaulting before in case handler has varying content type. response.ContentType = requestHandler.ContentType; // Lets do this defaulting before in case handler has varying content type.
if (requestHandler is IStreamedRequestHandler) if (requestHandler is IStreamedRequestHandler)
{ {
IStreamedRequestHandler streamedRequestHandler = requestHandler as IStreamedRequestHandler; IStreamedRequestHandler streamedRequestHandler = requestHandler as IStreamedRequestHandler;
@ -404,6 +413,7 @@ namespace OpenSim.Framework.Servers.HttpServer
// } // }
keysvals.Add("requestbody", requestBody); keysvals.Add("requestbody", requestBody);
keysvals.Add("headers",headervals);
if (keysvals.Contains("method")) if (keysvals.Contains("method"))
{ {
//m_log.Warn("[HTTP]: Contains Method"); //m_log.Warn("[HTTP]: Contains Method");
@ -702,7 +712,7 @@ namespace OpenSim.Framework.Servers.HttpServer
lock (m_rpcHandlers) lock (m_rpcHandlers)
{ {
methodWasFound = m_rpcHandlers.TryGetValue(methodName, out method); methodWasFound = m_rpcHandlers.TryGetValue(methodName, out method);
} }
if (methodWasFound) if (methodWasFound)
{ {
@ -726,8 +736,11 @@ namespace OpenSim.Framework.Servers.HttpServer
else else
{ {
xmlRpcResponse = new XmlRpcResponse(); xmlRpcResponse = new XmlRpcResponse();
// Code set in accordance with http://xmlrpc-epi.sourceforge.net/specs/rfc.fault_codes.php // Code set in accordance with http://xmlrpc-epi.sourceforge.net/specs/rfc.fault_codes.php
xmlRpcResponse.SetFault(-32601, String.Format("Requested method [{0}] not found", methodName)); xmlRpcResponse.SetFault(
XmlRpcErrorCodes.SERVER_ERROR_METHOD,
String.Format("Requested method [{0}] not found", methodName));
} }
responseString = XmlRpcResponseSerializer.Singleton.Serialize(xmlRpcResponse); responseString = XmlRpcResponseSerializer.Singleton.Serialize(xmlRpcResponse);
@ -747,6 +760,7 @@ namespace OpenSim.Framework.Servers.HttpServer
response.SendChunked = false; response.SendChunked = false;
response.ContentLength64 = buf.Length; response.ContentLength64 = buf.Length;
response.ContentEncoding = Encoding.UTF8; response.ContentEncoding = Encoding.UTF8;
try try
{ {
response.OutputStream.Write(buf, 0, buf.Length); response.OutputStream.Write(buf, 0, buf.Length);
@ -917,7 +931,7 @@ namespace OpenSim.Framework.Servers.HttpServer
} }
catch (IOException e) catch (IOException e)
{ {
m_log.DebugFormat("[BASE HTTP SERVER] LLSD IOException {0}.", e); m_log.DebugFormat("[BASE HTTP SERVER] LLSD IOException {0}.", e);
} }
catch (SocketException e) catch (SocketException e)
{ {
@ -1354,7 +1368,7 @@ namespace OpenSim.Framework.Servers.HttpServer
bestMatch = pattern; bestMatch = pattern;
} }
} }
} }
if (String.IsNullOrEmpty(bestMatch)) if (String.IsNullOrEmpty(bestMatch))
{ {
@ -1466,7 +1480,7 @@ namespace OpenSim.Framework.Servers.HttpServer
{ {
m_log.Warn("[BASE HTTP SERVER] XmlRpcRequest issue: " + e.Message); m_log.Warn("[BASE HTTP SERVER] XmlRpcRequest issue: " + e.Message);
} }
} }
} }
public void SendHTML404(OSHttpResponse response, string host) public void SendHTML404(OSHttpResponse response, string host)
@ -1575,7 +1589,7 @@ namespace OpenSim.Framework.Servers.HttpServer
// if you want more detailed trace information from the HttpServer // if you want more detailed trace information from the HttpServer
//m_httpListener2.UseTraceLogs = true; //m_httpListener2.UseTraceLogs = true;
//m_httpListener2.DisconnectHandler = httpServerDisconnectMonitor; //m_httpListener2.DisconnectHandler = httpServerDisconnectMonitor;
} }
else else
{ {
@ -1610,7 +1624,7 @@ namespace OpenSim.Framework.Servers.HttpServer
} }
public void httpServerDisconnectMonitor(IHttpClientContext source, SocketError err) public void httpServerDisconnectMonitor(IHttpClientContext source, SocketError err)
{ {
switch (err) switch (err)
{ {
case SocketError.NotSocket: case SocketError.NotSocket:
@ -1621,7 +1635,7 @@ namespace OpenSim.Framework.Servers.HttpServer
} }
public void httpServerException(object source, Exception exception) public void httpServerException(object source, Exception exception)
{ {
m_log.ErrorFormat("[HTTPSERVER]: {0} had an exception {1}", source.ToString(), exception.ToString()); m_log.ErrorFormat("[HTTPSERVER]: {0} had an exception {1}", source.ToString(), exception.ToString());
/* /*
if (HTTPDRunning)// && NotSocketErrors > 5) if (HTTPDRunning)// && NotSocketErrors > 5)
@ -1648,7 +1662,7 @@ namespace OpenSim.Framework.Servers.HttpServer
} }
catch (NullReferenceException) catch (NullReferenceException)
{ {
m_log.Warn("[BASEHTTPSERVER]: Null Reference when stopping HttpServer."); m_log.Warn("[BASEHTTPSERVER]: Null Reference when stopping HttpServer.");
} }
} }

View File

@ -128,6 +128,6 @@ namespace OpenSim.Framework.Servers.HttpServer
string GetHTTP404(string host); string GetHTTP404(string host);
string GetHTTP500(); string GetHTTP500();
} }
} }

View File

@ -30,20 +30,23 @@ using System.Collections;
using OpenMetaverse; using OpenMetaverse;
namespace OpenSim.Framework.Servers.HttpServer namespace OpenSim.Framework.Servers.HttpServer
{ {
public delegate bool HasEventsMethod(UUID pId); public delegate void RequestMethod(UUID requestID, Hashtable request);
public delegate bool HasEventsMethod(UUID requestID, UUID pId);
public delegate Hashtable GetEventsMethod(UUID pId, string request); public delegate Hashtable GetEventsMethod(UUID requestID, UUID pId, string request);
public delegate Hashtable NoEventsMethod(); public delegate Hashtable NoEventsMethod(UUID requestID, UUID pId);
public class PollServiceEventArgs : EventArgs public class PollServiceEventArgs : EventArgs
{ {
public HasEventsMethod HasEvents; public HasEventsMethod HasEvents;
public GetEventsMethod GetEvents; public GetEventsMethod GetEvents;
public NoEventsMethod NoEvents; public NoEventsMethod NoEvents;
public RequestMethod Request;
public UUID Id; public UUID Id;
public PollServiceEventArgs(HasEventsMethod pHasEvents, GetEventsMethod pGetEvents, NoEventsMethod pNoEvents,UUID pId) public PollServiceEventArgs(RequestMethod pRequest, HasEventsMethod pHasEvents, GetEventsMethod pGetEvents, NoEventsMethod pNoEvents,UUID pId)
{ {
Request = pRequest;
HasEvents = pHasEvents; HasEvents = pHasEvents;
GetEvents = pGetEvents; GetEvents = pGetEvents;
NoEvents = pNoEvents; NoEvents = pNoEvents;

View File

@ -27,6 +27,7 @@
using System; using System;
using HttpServer; using HttpServer;
using OpenMetaverse;
namespace OpenSim.Framework.Servers.HttpServer namespace OpenSim.Framework.Servers.HttpServer
{ {
@ -37,12 +38,14 @@ namespace OpenSim.Framework.Servers.HttpServer
public readonly IHttpClientContext HttpContext; public readonly IHttpClientContext HttpContext;
public readonly IHttpRequest Request; public readonly IHttpRequest Request;
public readonly int RequestTime; public readonly int RequestTime;
public readonly UUID RequestID;
public PollServiceHttpRequest(PollServiceEventArgs pPollServiceArgs, IHttpClientContext pHttpContext, IHttpRequest pRequest) public PollServiceHttpRequest(PollServiceEventArgs pPollServiceArgs, IHttpClientContext pHttpContext, IHttpRequest pRequest)
{ {
PollServiceArgs = pPollServiceArgs; PollServiceArgs = pPollServiceArgs;
HttpContext = pHttpContext; HttpContext = pHttpContext;
Request = pRequest; Request = pRequest;
RequestTime = System.Environment.TickCount; RequestTime = System.Environment.TickCount;
RequestID = UUID.Random();
} }
} }
} }

View File

@ -130,7 +130,7 @@ namespace OpenSim.Framework.Servers.HttpServer
foreach (object o in m_requests) foreach (object o in m_requests)
{ {
PollServiceHttpRequest req = (PollServiceHttpRequest) o; PollServiceHttpRequest req = (PollServiceHttpRequest) o;
m_server.DoHTTPGruntWork(req.PollServiceArgs.NoEvents(), new OSHttpResponse(new HttpResponse(req.HttpContext, req.Request), req.HttpContext)); m_server.DoHTTPGruntWork(req.PollServiceArgs.NoEvents(req.RequestID, req.PollServiceArgs.Id), new OSHttpResponse(new HttpResponse(req.HttpContext, req.Request), req.HttpContext));
} }
m_requests.Clear(); m_requests.Clear();

View File

@ -100,11 +100,11 @@ namespace OpenSim.Framework.Servers.HttpServer
PollServiceHttpRequest req = m_request.Dequeue(); PollServiceHttpRequest req = m_request.Dequeue();
try try
{ {
if (req.PollServiceArgs.HasEvents(req.PollServiceArgs.Id)) if (req.PollServiceArgs.HasEvents(req.RequestID, req.PollServiceArgs.Id))
{ {
StreamReader str = new StreamReader(req.Request.Body); StreamReader str = new StreamReader(req.Request.Body);
Hashtable responsedata = req.PollServiceArgs.GetEvents(req.PollServiceArgs.Id, str.ReadToEnd()); Hashtable responsedata = req.PollServiceArgs.GetEvents(req.RequestID, req.PollServiceArgs.Id, str.ReadToEnd());
m_server.DoHTTPGruntWork(responsedata, m_server.DoHTTPGruntWork(responsedata,
new OSHttpResponse(new HttpResponse(req.HttpContext, req.Request),req.HttpContext)); new OSHttpResponse(new HttpResponse(req.HttpContext, req.Request),req.HttpContext));
} }
@ -112,7 +112,7 @@ namespace OpenSim.Framework.Servers.HttpServer
{ {
if ((Environment.TickCount - req.RequestTime) > m_timeout) if ((Environment.TickCount - req.RequestTime) > m_timeout)
{ {
m_server.DoHTTPGruntWork(req.PollServiceArgs.NoEvents(), m_server.DoHTTPGruntWork(req.PollServiceArgs.NoEvents(req.RequestID, req.PollServiceArgs.Id),
new OSHttpResponse(new HttpResponse(req.HttpContext, req.Request),req.HttpContext)); new OSHttpResponse(new HttpResponse(req.HttpContext, req.Request),req.HttpContext));
} }
else else

View File

@ -0,0 +1,95 @@
/*
* Copyright (c) Contributors, http://opensimulator.org/
* See CONTRIBUTORS.TXT for a full list of copyright holders.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
* * Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* * Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
* * Neither the name of the OpenSimulator Project nor the
* names of its contributors may be used to endorse or promote products
* derived from this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
using System;
using System.IO;
using System.Net;
using System.Text;
using System.Xml;
using System.Xml.Serialization;
namespace OpenSim.Framework.Servers.HttpServer
{
public class SynchronousRestFormsRequester
{
/// <summary>
/// Perform a synchronous REST request.
/// </summary>
/// <param name="verb"></param>
/// <param name="requestUrl"></param>
/// <param name="obj"> </param>
/// <returns></returns>
///
/// <exception cref="System.Net.WebException">Thrown if we encounter a network issue while posting
/// the request. You'll want to make sure you deal with this as they're not uncommon</exception>
public static string MakeRequest(string verb, string requestUrl, string obj)
{
WebRequest request = WebRequest.Create(requestUrl);
request.Method = verb;
if ((verb == "POST") || (verb == "PUT"))
{
request.ContentType = "text/www-form-urlencoded";
MemoryStream buffer = new MemoryStream();
int length = 0;
using (StreamWriter writer = new StreamWriter(buffer))
{
writer.Write(obj);
writer.Flush();
}
length = (int)obj.Length;
request.ContentLength = length;
Stream requestStream = request.GetRequestStream();
requestStream.Write(buffer.ToArray(), 0, length);
}
string respstring = String.Empty;
try
{
using (WebResponse resp = request.GetResponse())
{
if (resp.ContentLength > 0)
{
using (StreamReader reader = new StreamReader(resp.GetResponseStream()))
{
respstring = reader.ReadToEnd();
}
}
}
}
catch (System.InvalidOperationException)
{
// This is what happens when there is invalid XML
}
return respstring;
}
}
}

View File

@ -29,7 +29,7 @@ namespace OpenSim
{ {
public class VersionInfo public class VersionInfo
{ {
private const string VERSION_NUMBER = "0.6.6"; private const string VERSION_NUMBER = "0.6.8";
private const Flavour VERSION_FLAVOUR = Flavour.Dev; private const Flavour VERSION_FLAVOUR = Flavour.Dev;
public enum Flavour public enum Flavour
@ -56,7 +56,7 @@ namespace OpenSim
public const int VERSIONINFO_VERSION_LENGTH = 27; public const int VERSIONINFO_VERSION_LENGTH = 27;
/// <value> /// <value>
/// This is the external interface version. It is separate from the OpenSimulator project version. /// This is the external interface version. It is separate from the OpenSimulator project version.
/// ///
/// This version number should be /// This version number should be
/// increased by 1 every time a code change makes the previous OpenSimulator revision incompatible /// increased by 1 every time a code change makes the previous OpenSimulator revision incompatible
@ -67,7 +67,7 @@ namespace OpenSim
/// ///
/// Having this version number allows the grid service to reject connections from regions running a version /// Having this version number allows the grid service to reject connections from regions running a version
/// of the code that is too old. /// of the code that is too old.
/// ///
/// </value> /// </value>
public readonly static int MajorInterfaceVersion = 6; public readonly static int MajorInterfaceVersion = 6;
} }

View File

@ -35,9 +35,9 @@ namespace OpenSim.Framework
/// ///
/// TODO: This looks very much like the OpenMetaverse SimStatsPacket. It should be much more generic stats /// TODO: This looks very much like the OpenMetaverse SimStatsPacket. It should be much more generic stats
/// storage. /// storage.
/// </summary> /// </summary>
public class SimStats public class SimStats
{ {
public uint RegionX public uint RegionX
{ {
get { return m_regionX; } get { return m_regionX; }
@ -47,25 +47,25 @@ namespace OpenSim.Framework
public uint RegionY public uint RegionY
{ {
get { return m_regionY; } get { return m_regionY; }
} }
private uint m_regionY; private uint m_regionY;
public SimStatsPacket.RegionBlock RegionBlock public SimStatsPacket.RegionBlock RegionBlock
{ {
get { return m_regionBlock; } get { return m_regionBlock; }
} }
private SimStatsPacket.RegionBlock m_regionBlock; private SimStatsPacket.RegionBlock m_regionBlock;
public SimStatsPacket.StatBlock[] StatsBlock public SimStatsPacket.StatBlock[] StatsBlock
{ {
get { return m_statsBlock; } get { return m_statsBlock; }
} }
private SimStatsPacket.StatBlock[] m_statsBlock; private SimStatsPacket.StatBlock[] m_statsBlock;
public uint RegionFlags public uint RegionFlags
{ {
get { return m_regionFlags; } get { return m_regionFlags; }
} }
private uint m_regionFlags; private uint m_regionFlags;
public uint ObjectCapacity public uint ObjectCapacity
@ -76,7 +76,7 @@ namespace OpenSim.Framework
public UUID RegionUUID public UUID RegionUUID
{ {
get { return regionUUID;} get { return regionUUID; }
} }
private UUID regionUUID; private UUID regionUUID;

View File

@ -38,7 +38,7 @@ namespace OpenSim.Framework
/// A dictionary for task inventory. /// A dictionary for task inventory.
/// </summary> /// </summary>
/// This class is not thread safe. Callers must synchronize on Dictionary methods or Clone() this object before /// This class is not thread safe. Callers must synchronize on Dictionary methods or Clone() this object before
/// iterating over it. /// iterating over it.
public class TaskInventoryDictionary : Dictionary<UUID, TaskInventoryItem>, public class TaskInventoryDictionary : Dictionary<UUID, TaskInventoryItem>,
ICloneable, IXmlSerializable ICloneable, IXmlSerializable
{ {

View File

@ -57,7 +57,7 @@ namespace OpenSim.Framework
} }
private static void ThreadTrackerThreadLoop() private static void ThreadTrackerThreadLoop()
{ {
try try
{ {
while (true) while (true)
@ -70,8 +70,8 @@ namespace OpenSim.Framework
{ {
m_log.ErrorFormat( m_log.ErrorFormat(
"[THREAD TRACKER]: Thread tracker cleanup thread terminating with exception. Please report this error. Exception is {0}", "[THREAD TRACKER]: Thread tracker cleanup thread terminating with exception. Please report this error. Exception is {0}",
e); e);
} }
} }
public static void Add(Thread thread) public static void Add(Thread thread)

View File

@ -133,7 +133,7 @@ namespace OpenSim.Framework
m_configMember.addConfigurationOption("library_location", m_configMember.addConfigurationOption("library_location",
ConfigurationOption.ConfigurationTypes.TYPE_STRING_NOT_EMPTY, ConfigurationOption.ConfigurationTypes.TYPE_STRING_NOT_EMPTY,
"Path to library control file", "Path to library control file",
string.Format(".{0}inventory{0}Libraries.xml", Path.DirectorySeparatorChar), false); string.Format(".{0}inventory{0}Libraries.xml", Path.DirectorySeparatorChar), false);
m_configMember.addConfigurationOption("database_provider", ConfigurationOption.ConfigurationTypes.TYPE_STRING, m_configMember.addConfigurationOption("database_provider", ConfigurationOption.ConfigurationTypes.TYPE_STRING,
"DLL for database provider", "OpenSim.Data.MySQL.dll", false); "DLL for database provider", "OpenSim.Data.MySQL.dll", false);

View File

@ -217,7 +217,7 @@ namespace OpenSim.Framework
public string Name public string Name
{ {
get { return String.Format("{0} {1}", m_firstname, m_surname); } get { return String.Format("{0} {1}", m_firstname, m_surname); }
} }
public string Email public string Email
{ {

View File

@ -54,7 +54,7 @@ namespace OpenSim.Framework
/// </summary> /// </summary>
public class Util public class Util
{ {
private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
private static uint nextXferID = 5000; private static uint nextXferID = 5000;
private static Random randomClass = new Random(); private static Random randomClass = new Random();
@ -70,6 +70,39 @@ namespace OpenSim.Framework
public static readonly Regex UUIDPattern public static readonly Regex UUIDPattern
= new Regex("^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$"); = new Regex("^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$");
/// <summary>
/// Linear interpolates B<->C using percent A
/// </summary>
/// <param name="a"></param>
/// <param name="b"></param>
/// <param name="c"></param>
/// <returns></returns>
public static double lerp(double a, double b, double c)
{
return (b*a) + (c*(1 - a));
}
/// <summary>
/// Bilinear Interpolate, see Lerp but for 2D using 'percents' X & Y.
/// Layout:
/// A B
/// C D
/// A<->C = Y
/// C<->D = X
/// </summary>
/// <param name="x"></param>
/// <param name="y"></param>
/// <param name="a"></param>
/// <param name="b"></param>
/// <param name="c"></param>
/// <param name="d"></param>
/// <returns></returns>
public static double lerp2D(double x, double y, double a, double b, double c, double d)
{
return lerp(y, lerp(x, a, b), lerp(x, c, d));
}
/// <value> /// <value>
/// Well known UUID for the blank texture used in the Linden SL viewer version 1.20 (and hopefully onwards) /// Well known UUID for the blank texture used in the Linden SL viewer version 1.20 (and hopefully onwards)
/// </value> /// </value>
@ -103,7 +136,7 @@ namespace OpenSim.Framework
float dx = a.X - b.X; float dx = a.X - b.X;
float dy = a.Y - b.Y; float dy = a.Y - b.Y;
float dz = a.Z - b.Z; float dz = a.Z - b.Z;
return (dx*dx + dy*dy + dz*dz) < (amount*amount); return (dx*dx + dy*dy + dz*dz) < (amount*amount);
} }
/// <summary> /// <summary>
@ -942,7 +975,7 @@ namespace OpenSim.Framework
else else
{ {
os = ReadEtcIssue(); os = ReadEtcIssue();
} }
if (os.Length > 45) if (os.Length > 45)
{ {
@ -1170,6 +1203,32 @@ namespace OpenSim.Framework
return found.ToArray(); return found.ToArray();
} }
public static string ServerURI(string uri)
{
if (uri == string.Empty)
return string.Empty;
// Get rid of eventual slashes at the end
uri = uri.TrimEnd('/');
IPAddress ipaddr1 = null;
string port1 = "";
try
{
ipaddr1 = Util.GetHostFromURL(uri);
}
catch { }
try
{
port1 = uri.Split(new char[] { ':' })[2];
}
catch { }
// We tried our best to convert the domain names to IP addresses
return (ipaddr1 != null) ? "http://" + ipaddr1.ToString() + ":" + port1 : uri;
}
#region FireAndForget Threading Pattern #region FireAndForget Threading Pattern
public static void FireAndForget(System.Threading.WaitCallback callback) public static void FireAndForget(System.Threading.WaitCallback callback)

View File

@ -324,44 +324,53 @@ namespace OpenSim.Grid.MessagingServer.Modules
/// <returns></returns> /// <returns></returns>
public XmlRpcResponse UserLoggedOn(XmlRpcRequest request, IPEndPoint remoteClient) public XmlRpcResponse UserLoggedOn(XmlRpcRequest request, IPEndPoint remoteClient)
{ {
Hashtable requestData = (Hashtable)request.Params[0]; try
AgentCircuitData agentData = new AgentCircuitData();
agentData.SessionID = new UUID((string)requestData["sessionid"]);
agentData.SecureSessionID = new UUID((string)requestData["secure_session_id"]);
agentData.firstname = (string)requestData["firstname"];
agentData.lastname = (string)requestData["lastname"];
agentData.AgentID = new UUID((string)requestData["agentid"]);
agentData.circuitcode = Convert.ToUInt32(requestData["circuit_code"]);
agentData.CapsPath = (string)requestData["caps_path"];
if (requestData.ContainsKey("child_agent") && requestData["child_agent"].Equals("1"))
{ {
agentData.child = true; Hashtable requestData = (Hashtable)request.Params[0];
AgentCircuitData agentData = new AgentCircuitData();
agentData.SessionID = new UUID((string)requestData["sessionid"]);
agentData.SecureSessionID = new UUID((string)requestData["secure_session_id"]);
agentData.firstname = (string)requestData["firstname"];
agentData.lastname = (string)requestData["lastname"];
agentData.AgentID = new UUID((string)requestData["agentid"]);
agentData.circuitcode = Convert.ToUInt32(requestData["circuit_code"]);
agentData.CapsPath = (string)requestData["caps_path"];
if (requestData.ContainsKey("child_agent") && requestData["child_agent"].Equals("1"))
{
agentData.child = true;
}
else
{
agentData.startpos =
new Vector3(Convert.ToSingle(requestData["positionx"]),
Convert.ToSingle(requestData["positiony"]),
Convert.ToSingle(requestData["positionz"]));
agentData.child = false;
}
ulong regionHandle = Convert.ToUInt64((string)requestData["regionhandle"]);
m_log.InfoFormat("[LOGON]: User {0} {1} logged into region {2} as {3} agent, building indexes for user",
agentData.firstname, agentData.lastname, regionHandle, agentData.child ? "child" : "root");
UserPresenceData up = new UserPresenceData();
up.agentData = agentData;
up.friendData = GetUserFriendList(agentData.AgentID);
up.regionData = m_regionModule.GetRegionInfo(regionHandle);
up.OnlineYN = true;
up.lookupUserRegionYN = false;
ProcessFriendListSubscriptions(up);
} }
else catch (Exception e)
{ {
agentData.startpos = m_log.WarnFormat("[LOGIN]: Exception on UserLoggedOn: {0}", e);
new Vector3(Convert.ToSingle(requestData["positionx"]),
Convert.ToSingle(requestData["positiony"]),
Convert.ToSingle(requestData["positionz"]));
agentData.child = false;
} }
ulong regionHandle = Convert.ToUInt64((string)requestData["regionhandle"]);
m_log.InfoFormat("[LOGON]: User {0} {1} logged into region {2} as {3} agent, building indexes for user",
agentData.firstname, agentData.lastname, regionHandle, agentData.child ? "child" : "root");
UserPresenceData up = new UserPresenceData();
up.agentData = agentData;
up.friendData = GetUserFriendList(agentData.AgentID);
up.regionData = m_regionModule.GetRegionInfo(regionHandle);
up.OnlineYN = true;
up.lookupUserRegionYN = false;
ProcessFriendListSubscriptions(up);
return new XmlRpcResponse(); return new XmlRpcResponse();
} }
/// <summary> /// <summary>
@ -372,11 +381,18 @@ namespace OpenSim.Grid.MessagingServer.Modules
/// <returns></returns> /// <returns></returns>
public XmlRpcResponse UserLoggedOff(XmlRpcRequest request, IPEndPoint remoteClient) public XmlRpcResponse UserLoggedOff(XmlRpcRequest request, IPEndPoint remoteClient)
{ {
m_log.Info("[USERLOGOFF]: User logged off called"); try
Hashtable requestData = (Hashtable)request.Params[0]; {
m_log.Info("[USERLOGOFF]: User logged off called");
Hashtable requestData = (Hashtable)request.Params[0];
UUID AgentID = new UUID((string)requestData["agentid"]); UUID AgentID = new UUID((string)requestData["agentid"]);
ProcessLogOff(AgentID); ProcessLogOff(AgentID);
}
catch (Exception e)
{
m_log.WarnFormat("[USERLOGOFF]: Exception on UserLoggedOff: {0}", e);
}
return new XmlRpcResponse(); return new XmlRpcResponse();
} }

View File

@ -70,6 +70,6 @@ namespace OpenSim.Grid.MessagingServer.Modules
{ {
//throw new Exception("The method or operation is not implemented."); //throw new Exception("The method or operation is not implemented.");
return null; return null;
} }
} }
} }

View File

@ -47,7 +47,7 @@ namespace OpenSim.Grid.UserServer.Modules
/// <summary> /// <summary>
/// Hypergrid login service used in grid mode. /// Hypergrid login service used in grid mode.
/// </summary> /// </summary>
public class UserLoginAuthService : HGLoginAuthService public class UserLoginAuthService : HGLoginAuthService
{ {
private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);

View File

@ -34,6 +34,7 @@ using System.Text.RegularExpressions;
using log4net; using log4net;
using Nwc.XmlRpc; using Nwc.XmlRpc;
using OpenMetaverse; using OpenMetaverse;
using Nini.Config;
using OpenSim.Data; using OpenSim.Data;
using OpenSim.Framework; using OpenSim.Framework;
using OpenSim.Framework.Communications; using OpenSim.Framework.Communications;
@ -42,6 +43,9 @@ using OpenSim.Framework.Communications.Cache;
using OpenSim.Framework.Capabilities; using OpenSim.Framework.Capabilities;
using OpenSim.Framework.Servers; using OpenSim.Framework.Servers;
using OpenSim.Framework.Servers.HttpServer; using OpenSim.Framework.Servers.HttpServer;
using OpenSim.Services.Interfaces;
using OpenSim.Services.Connectors;
using GridRegion = OpenSim.Services.Interfaces.GridRegion;
namespace OpenSim.Grid.UserServer.Modules namespace OpenSim.Grid.UserServer.Modules
{ {
@ -51,7 +55,7 @@ namespace OpenSim.Grid.UserServer.Modules
/// <summary> /// <summary>
/// Login service used in grid mode. /// Login service used in grid mode.
/// </summary> /// </summary>
public class UserLoginService : LoginService public class UserLoginService : LoginService
{ {
private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
@ -63,6 +67,8 @@ namespace OpenSim.Grid.UserServer.Modules
public UserConfig m_config; public UserConfig m_config;
private readonly IRegionProfileRouter m_regionProfileService; private readonly IRegionProfileRouter m_regionProfileService;
private IGridService m_GridService;
protected BaseHttpServer m_httpServer; protected BaseHttpServer m_httpServer;
public UserLoginService( public UserLoginService(
@ -76,6 +82,8 @@ namespace OpenSim.Grid.UserServer.Modules
m_defaultHomeY = m_config.DefaultY; m_defaultHomeY = m_config.DefaultY;
m_interInventoryService = inventoryService; m_interInventoryService = inventoryService;
m_regionProfileService = regionProfileService; m_regionProfileService = regionProfileService;
m_GridService = new GridServicesConnector(config.GridServerURL.ToString());
} }
public void RegisterHandlers(BaseHttpServer httpServer, bool registerLLSDHandler, bool registerOpenIDHandlers) public void RegisterHandlers(BaseHttpServer httpServer, bool registerLLSDHandler, bool registerOpenIDHandlers)
@ -203,47 +211,38 @@ namespace OpenSim.Grid.UserServer.Modules
protected override RegionInfo RequestClosestRegion(string region) protected override RegionInfo RequestClosestRegion(string region)
{ {
RegionProfileData profileData = m_regionProfileService.RequestSimProfileData(region, return GridRegionToRegionInfo(m_GridService.GetRegionByName(UUID.Zero, region));
m_config.GridServerURL, m_config.GridSendKey, m_config.GridRecvKey);
if (profileData != null)
{
return profileData.ToRegionInfo();
}
else
{
return null;
}
} }
protected override RegionInfo GetRegionInfo(ulong homeRegionHandle) protected override RegionInfo GetRegionInfo(ulong homeRegionHandle)
{ {
RegionProfileData profileData = m_regionProfileService.RequestSimProfileData(homeRegionHandle, uint x = 0, y = 0;
m_config.GridServerURL, m_config.GridSendKey, Utils.LongToUInts(homeRegionHandle, out x, out y);
m_config.GridRecvKey); return GridRegionToRegionInfo(m_GridService.GetRegionByPosition(UUID.Zero, (int)x, (int)y));
if (profileData != null)
{
return profileData.ToRegionInfo();
}
else
{
return null;
}
} }
protected override RegionInfo GetRegionInfo(UUID homeRegionId) protected override RegionInfo GetRegionInfo(UUID homeRegionId)
{ {
RegionProfileData profileData = m_regionProfileService.RequestSimProfileData(homeRegionId, return GridRegionToRegionInfo(m_GridService.GetRegionByUUID(UUID.Zero, homeRegionId));
m_config.GridServerURL, m_config.GridSendKey, }
m_config.GridRecvKey);
if (profileData != null) private RegionInfo GridRegionToRegionInfo(GridRegion gregion)
{ {
return profileData.ToRegionInfo(); if (gregion == null)
}
else
{
return null; return null;
}
RegionInfo rinfo = new RegionInfo();
rinfo.ExternalHostName = gregion.ExternalHostName;
rinfo.HttpPort = gregion.HttpPort;
rinfo.InternalEndPoint = gregion.InternalEndPoint;
rinfo.RegionID = gregion.RegionID;
rinfo.RegionLocX = (uint)(gregion.RegionLocX / Constants.RegionSize);
rinfo.RegionLocY = (uint)(gregion.RegionLocY / Constants.RegionSize);
rinfo.RegionName = gregion.RegionName;
rinfo.ScopeID = gregion.ScopeID;
rinfo.ServerURI = gregion.ServerURI;
return rinfo;
} }
protected override bool PrepareLoginToRegion(RegionInfo regionInfo, UserProfileData user, LoginResponse response, IPEndPoint remoteClient) protected override bool PrepareLoginToRegion(RegionInfo regionInfo, UserProfileData user, LoginResponse response, IPEndPoint remoteClient)
@ -280,9 +279,8 @@ namespace OpenSim.Grid.UserServer.Modules
//response.SeedCapability = serverURI + CapsUtil.GetCapsSeedPath(capsPath); //response.SeedCapability = serverURI + CapsUtil.GetCapsSeedPath(capsPath);
// Take off trailing / so that the caps path isn't //CAPS/someUUID // Take off trailing / so that the caps path isn't //CAPS/someUUID
if (regionInfo.httpServerURI.EndsWith("/")) string uri = regionInfo.httpServerURI.Trim(new char[] { '/' });
regionInfo.httpServerURI = regionInfo.httpServerURI.Substring(0, regionInfo.httpServerURI.Length - 1); response.SeedCapability = uri + CapsUtil.GetCapsSeedPath(capsPath);
response.SeedCapability = regionInfo.httpServerURI + CapsUtil.GetCapsSeedPath(capsPath);
// Notify the target of an incoming user // Notify the target of an incoming user

View File

@ -108,6 +108,9 @@ namespace OpenSim.Grid.UserServer.Modules
m_httpServer.AddXmlRPCHandler("get_user_by_uuid", XmlRPCGetUserMethodUUID); m_httpServer.AddXmlRPCHandler("get_user_by_uuid", XmlRPCGetUserMethodUUID);
m_httpServer.AddXmlRPCHandler("get_avatar_picker_avatar", XmlRPCGetAvatarPickerAvatar); m_httpServer.AddXmlRPCHandler("get_avatar_picker_avatar", XmlRPCGetAvatarPickerAvatar);
// Used by IAR module to do password checks
m_httpServer.AddXmlRPCHandler("authenticate_user_by_password", XmlRPCAuthenticateUserMethodPassword);
m_httpServer.AddXmlRPCHandler("update_user_current_region", XmlRPCAtRegion); m_httpServer.AddXmlRPCHandler("update_user_current_region", XmlRPCAtRegion);
m_httpServer.AddXmlRPCHandler("logout_of_simulator", XmlRPCLogOffUserMethodUUID); m_httpServer.AddXmlRPCHandler("logout_of_simulator", XmlRPCLogOffUserMethodUUID);
m_httpServer.AddXmlRPCHandler("get_agent_by_uuid", XmlRPCGetAgentMethodUUID); m_httpServer.AddXmlRPCHandler("get_agent_by_uuid", XmlRPCGetAgentMethodUUID);
@ -203,6 +206,57 @@ namespace OpenSim.Grid.UserServer.Modules
#region XMLRPC User Methods #region XMLRPC User Methods
/// <summary>
/// Authenticate a user using their password
/// </summary>
/// <param name="request">Must contain values for "user_uuid" and "password" keys</param>
/// <param name="remoteClient"></param>
/// <returns></returns>
public XmlRpcResponse XmlRPCAuthenticateUserMethodPassword(XmlRpcRequest request, IPEndPoint remoteClient)
{
// m_log.DebugFormat("[USER MANAGER]: Received authenticated user by password request from {0}", remoteClient);
Hashtable requestData = (Hashtable)request.Params[0];
string userUuidRaw = (string)requestData["user_uuid"];
string password = (string)requestData["password"];
if (null == userUuidRaw)
return Util.CreateUnknownUserErrorResponse();
UUID userUuid;
if (!UUID.TryParse(userUuidRaw, out userUuid))
return Util.CreateUnknownUserErrorResponse();
UserProfileData userProfile = m_userDataBaseService.GetUserProfile(userUuid);
if (null == userProfile)
return Util.CreateUnknownUserErrorResponse();
string authed;
if (null == password)
{
authed = "FALSE";
}
else
{
if (m_userDataBaseService.AuthenticateUserByPassword(userUuid, password))
authed = "TRUE";
else
authed = "FALSE";
}
// m_log.DebugFormat(
// "[USER MANAGER]: Authentication by password result from {0} for {1} is {2}",
// remoteClient, userUuid, authed);
XmlRpcResponse response = new XmlRpcResponse();
Hashtable responseData = new Hashtable();
responseData["auth_user"] = authed;
response.Value = responseData;
return response;
}
public XmlRpcResponse XmlRPCGetAvatarPickerAvatar(XmlRpcRequest request, IPEndPoint remoteClient) public XmlRpcResponse XmlRPCGetAvatarPickerAvatar(XmlRpcRequest request, IPEndPoint remoteClient)
{ {
// XmlRpcResponse response = new XmlRpcResponse(); // XmlRpcResponse response = new XmlRpcResponse();
@ -246,10 +300,10 @@ namespace OpenSim.Grid.UserServer.Modules
m_userDataBaseService.CommitAgent(ref userProfile); m_userDataBaseService.CommitAgent(ref userProfile);
//setUserProfile(userProfile); //setUserProfile(userProfile);
returnstring = "TRUE"; returnstring = "TRUE";
} }
} }
responseData.Add("returnString", returnstring); responseData.Add("returnString", returnstring);
response.Value = responseData; response.Value = responseData;
return response; return response;

View File

@ -187,13 +187,13 @@ namespace OpenSim.Grid.UserServer
/// <param name="inventoryService"></param> /// <param name="inventoryService"></param>
protected virtual void StartupUserServerModules() protected virtual void StartupUserServerModules()
{ {
m_log.Info("[STARTUP]: Establishing data connection"); m_log.Info("[STARTUP]: Establishing data connection");
//we only need core components so we can request them from here //we only need core components so we can request them from here
IInterServiceInventoryServices inventoryService; IInterServiceInventoryServices inventoryService;
TryGet<IInterServiceInventoryServices>(out inventoryService); TryGet<IInterServiceInventoryServices>(out inventoryService);
CommunicationsManager commsManager = new UserServerCommsManager(inventoryService); CommunicationsManager commsManager = new UserServerCommsManager(inventoryService);
//setup database access service, for now this has to be created before the other modules. //setup database access service, for now this has to be created before the other modules.
m_userDataBaseService = new UserDataBaseService(commsManager); m_userDataBaseService = new UserDataBaseService(commsManager);
@ -260,8 +260,6 @@ namespace OpenSim.Grid.UserServer
m_userManager.PostInitialise(); m_userManager.PostInitialise();
m_avatarAppearanceModule.PostInitialise(); m_avatarAppearanceModule.PostInitialise();
m_friendsModule.PostInitialise(); m_friendsModule.PostInitialise();
m_avatarAppearanceModule.PostInitialise();
} }
protected virtual void RegisterHttpHandlers() protected virtual void RegisterHttpHandlers()
@ -276,8 +274,6 @@ namespace OpenSim.Grid.UserServer
m_avatarAppearanceModule.RegisterHandlers(m_httpServer); m_avatarAppearanceModule.RegisterHandlers(m_httpServer);
m_messagesService.RegisterHandlers(m_httpServer); m_messagesService.RegisterHandlers(m_httpServer);
m_gridInfoService.RegisterHandlers(m_httpServer); m_gridInfoService.RegisterHandlers(m_httpServer);
m_avatarAppearanceModule.RegisterHandlers(m_httpServer);
} }
public override void ShutdownSpecific() public override void ShutdownSpecific()

View File

@ -28,9 +28,9 @@
using OpenSim.Framework.Communications; using OpenSim.Framework.Communications;
namespace OpenSim.Grid.UserServer namespace OpenSim.Grid.UserServer
{ {
public class UserServerCommsManager : CommunicationsManager public class UserServerCommsManager : CommunicationsManager
{ {
public UserServerCommsManager(IInterServiceInventoryServices interServiceInventoryService) public UserServerCommsManager(IInterServiceInventoryServices interServiceInventoryService)
: base(null, null) : base(null, null)
{ {

Some files were not shown because too many files have changed in this diff Show More