Merge branch 'master' of ssh://melanie@opensimulator.org/var/git/opensim

remotes/origin/0.6.7-post-fixes
Melanie 2009-09-16 17:57:31 +01:00
commit 5068404505
10 changed files with 49 additions and 46 deletions

View File

@ -305,8 +305,8 @@ namespace OpenSim
config.Set("region_info_source", "filesystem"); config.Set("region_info_source", "filesystem");
config.Set("gridmode", false); config.Set("gridmode", false);
config.Set("physics", "basicphysics"); config.Set("physics", "OpenDynamicsEngine");
config.Set("meshing", "ZeroMesher"); config.Set("meshing", "Meshmerizer");
config.Set("physical_prim", true); config.Set("physical_prim", true);
config.Set("see_into_this_sim_from_neighbor", true); config.Set("see_into_this_sim_from_neighbor", true);
config.Set("serverside_object_permissions", false); config.Set("serverside_object_permissions", false);

View File

@ -125,10 +125,7 @@ namespace OpenSim.Region.CoreModules.Avatar.Inventory.Archiver
{ {
if (m_scenes.Count > 0) if (m_scenes.Count > 0)
{ {
CachedUserInfo userInfo = GetUserInfo(firstName, lastName); CachedUserInfo userInfo = GetUserInfo(firstName, lastName, pass);
string md5PasswdHash = Util.Md5Hash(Util.Md5Hash(pass) + ":" + userInfo.UserProfile.PasswordSalt);
if (userInfo.UserProfile.PasswordHash != md5PasswdHash)
return false;
if (userInfo != null) if (userInfo != null)
{ {
@ -153,11 +150,7 @@ namespace OpenSim.Region.CoreModules.Avatar.Inventory.Archiver
{ {
if (m_scenes.Count > 0) if (m_scenes.Count > 0)
{ {
CachedUserInfo userInfo = GetUserInfo(firstName, lastName); CachedUserInfo userInfo = GetUserInfo(firstName, lastName, pass);
string md5PasswdHash = Util.Md5Hash(Util.Md5Hash(pass) + ":" + userInfo.UserProfile.PasswordSalt);
if (userInfo.UserProfile.PasswordHash != md5PasswdHash)
return false;
if (userInfo != null) if (userInfo != null)
{ {
@ -182,11 +175,7 @@ namespace OpenSim.Region.CoreModules.Avatar.Inventory.Archiver
{ {
if (m_scenes.Count > 0) if (m_scenes.Count > 0)
{ {
CachedUserInfo userInfo = GetUserInfo(firstName, lastName); CachedUserInfo userInfo = GetUserInfo(firstName, lastName, pass);
string md5PasswdHash = Util.Md5Hash(Util.Md5Hash(pass) + ":" + userInfo.UserProfile.PasswordSalt);
if (userInfo.UserProfile.PasswordHash != md5PasswdHash)
return false;
if (userInfo != null) if (userInfo != null)
{ {
@ -214,11 +203,7 @@ namespace OpenSim.Region.CoreModules.Avatar.Inventory.Archiver
{ {
if (m_scenes.Count > 0) if (m_scenes.Count > 0)
{ {
CachedUserInfo userInfo = GetUserInfo(firstName, lastName); CachedUserInfo userInfo = GetUserInfo(firstName, lastName, pass);
string md5PasswdHash = Util.Md5Hash(Util.Md5Hash(pass) + ":" + userInfo.UserProfile.PasswordSalt);
if (userInfo.UserProfile.PasswordHash != md5PasswdHash)
return false;
if (userInfo != null) if (userInfo != null)
{ {
@ -251,7 +236,7 @@ namespace OpenSim.Region.CoreModules.Avatar.Inventory.Archiver
if (cmdparams.Length < 6) if (cmdparams.Length < 6)
{ {
m_log.Error( m_log.Error(
"[INVENTORY ARCHIVER]: usage is load iar <first name> <last name> <inventory path> <password> [<load file path>]"); "[INVENTORY ARCHIVER]: usage is load iar <first name> <last name> <inventory path> <user password> [<load file path>]");
return; return;
} }
@ -282,7 +267,7 @@ namespace OpenSim.Region.CoreModules.Avatar.Inventory.Archiver
if (cmdparams.Length < 5) if (cmdparams.Length < 5)
{ {
m_log.Error( m_log.Error(
"[INVENTORY ARCHIVER]: usage is save iar <first name> <last name> <inventory path> <password> [<save file path>]"); "[INVENTORY ARCHIVER]: usage is save iar <first name> <last name> <inventory path> <user password> [<save file path>]");
return; return;
} }
@ -334,8 +319,9 @@ namespace OpenSim.Region.CoreModules.Avatar.Inventory.Archiver
/// </summary> /// </summary>
/// <param name="firstName"></param> /// <param name="firstName"></param>
/// <param name="lastName"></param> /// <param name="lastName"></param>
/// <param name="pass">User password</param>
/// <returns></returns> /// <returns></returns>
protected CachedUserInfo GetUserInfo(string firstName, string lastName) protected CachedUserInfo GetUserInfo(string firstName, string lastName, string pass)
{ {
CachedUserInfo userInfo = m_aScene.CommsManager.UserProfileCacheService.GetUserDetails(firstName, lastName); CachedUserInfo userInfo = m_aScene.CommsManager.UserProfileCacheService.GetUserDetails(firstName, lastName);
if (null == userInfo) if (null == userInfo)
@ -345,6 +331,15 @@ namespace OpenSim.Region.CoreModules.Avatar.Inventory.Archiver
firstName, lastName); firstName, lastName);
return null; return null;
} }
string md5PasswdHash = Util.Md5Hash(Util.Md5Hash(pass) + ":" + userInfo.UserProfile.PasswordSalt);
if (userInfo.UserProfile.PasswordHash != md5PasswdHash)
{
m_log.ErrorFormat(
"[INVENTORY ARCHIVER]: Password for user {0} {1} incorrect. Please try again.",
firstName, lastName);
return null;
}
return userInfo; return userInfo;
} }

View File

@ -132,9 +132,9 @@ namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.Authorization
} }
public bool IsAuthorizedForRegion(string userID, string regionID) public bool IsAuthorizedForRegion(string userID, string regionID, out string message)
{ {
return m_AuthorizationService.IsAuthorizedForRegion(userID, regionID); return m_AuthorizationService.IsAuthorizedForRegion(userID, regionID, out message);
} }
} }

View File

@ -117,11 +117,12 @@ namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.Authorization
} }
public bool IsAuthorizedForRegion(string userID, string regionID) public bool IsAuthorizedForRegion(string userID, string regionID, out string message)
{ {
m_log.InfoFormat("[REMOTE AUTHORIZATION CONNECTOR]: IsAuthorizedForRegion checking {0} for region {1}", userID, regionID); m_log.InfoFormat("[REMOTE AUTHORIZATION CONNECTOR]: IsAuthorizedForRegion checking {0} for region {1}", userID, regionID);
bool isAuthorized = true; bool isAuthorized = true;
message = String.Empty;
// get the scene this call is being made for // get the scene this call is being made for
Scene scene = null; Scene scene = null;
@ -140,7 +141,7 @@ namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.Authorization
{ {
UserProfileData profile = scene.CommsManager.UserService.GetUserProfile(new UUID(userID)); UserProfileData profile = scene.CommsManager.UserService.GetUserProfile(new UUID(userID));
isAuthorized = IsAuthorizedForRegion(userID, profile.FirstName, profile.SurName, isAuthorized = IsAuthorizedForRegion(userID, profile.FirstName, profile.SurName,
profile.Email, scene.RegionInfo.RegionName, regionID); profile.Email, scene.RegionInfo.RegionName, regionID, out message);
} }
else else
{ {

View File

@ -994,9 +994,7 @@ namespace OpenSim.Region.Framework.Scenes
// Loop it // Loop it
if (m_frame == Int32.MaxValue) if (m_frame == Int32.MaxValue)
m_frame = 0; m_frame = 0;
otherMS = Environment.TickCount; otherMS = Environment.TickCount;
// run through all entities looking for updates (slow) // run through all entities looking for updates (slow)
@ -1017,7 +1015,6 @@ namespace OpenSim.Region.Framework.Scenes
m_sceneGraph.UpdateEntities(); m_sceneGraph.UpdateEntities();
} }
// run through entities that have scheduled themselves for // run through entities that have scheduled themselves for
// updates looking for updates(faster) // updates looking for updates(faster)
if (m_frame % m_update_entitiesquick == 0) if (m_frame % m_update_entitiesquick == 0)
@ -3253,10 +3250,11 @@ namespace OpenSim.Region.Framework.Scenes
if (AuthorizationService != null) if (AuthorizationService != null)
{ {
if (!AuthorizationService.IsAuthorizedForRegion(agent.AgentID.ToString(), RegionInfo.RegionID.ToString())) if (!AuthorizationService.IsAuthorizedForRegion(agent.AgentID.ToString(), RegionInfo.RegionID.ToString(),out reason))
{ {
m_log.WarnFormat("[CONNECTION BEGIN]: Denied access to: {0} ({1} {2}) at {3} because the user does not have access to the region", m_log.WarnFormat("[CONNECTION BEGIN]: Denied access to: {0} ({1} {2}) at {3} because the user does not have access to the region",
agent.AgentID, agent.firstname, agent.lastname, RegionInfo.RegionName); agent.AgentID, agent.firstname, agent.lastname, RegionInfo.RegionName);
//reason = String.Format("You are not currently on the access list for {0}",RegionInfo.RegionName);
return false; return false;
} }
} }

View File

@ -60,7 +60,8 @@ namespace OpenSim.Server.Handlers.Authorization
XmlSerializer xs = new XmlSerializer(typeof (AuthorizationRequest)); XmlSerializer xs = new XmlSerializer(typeof (AuthorizationRequest));
AuthorizationRequest Authorization = (AuthorizationRequest) xs.Deserialize(request); AuthorizationRequest Authorization = (AuthorizationRequest) xs.Deserialize(request);
bool authorized = m_AuthorizationService.IsAuthorizedForRegion(Authorization.ID, Authorization.RegionID); string message = String.Empty;
bool authorized = m_AuthorizationService.IsAuthorizedForRegion(Authorization.ID, Authorization.RegionID,out message);
AuthorizationResponse result = new AuthorizationResponse(authorized, Authorization.ID + " has been authorized"); AuthorizationResponse result = new AuthorizationResponse(authorized, Authorization.ID + " has been authorized");

View File

@ -48,8 +48,9 @@ namespace OpenSim.Services.AuthorizationService
m_log.Info("[AUTHORIZATION CONNECTOR]: Local Authorization service enabled"); m_log.Info("[AUTHORIZATION CONNECTOR]: Local Authorization service enabled");
} }
public bool IsAuthorizedForRegion(string userID, string regionID) public bool IsAuthorizedForRegion(string userID, string regionID, out string message)
{ {
message = "Authorized";
return true; return true;
} }
} }

View File

@ -88,7 +88,7 @@ namespace OpenSim.Services.Connectors
m_ResponseOnFailure = responseOnFailure; m_ResponseOnFailure = responseOnFailure;
} }
public bool IsAuthorizedForRegion(string userID, string firstname, string surname, string email, string regionName, string regionID) public bool IsAuthorizedForRegion(string userID, string firstname, string surname, string email, string regionName, string regionID, out string message)
{ {
// do a remote call to the authorization server specified in the AuthorizationServerURI // do a remote call to the authorization server specified in the AuthorizationServerURI
m_log.InfoFormat("[AUTHORIZATION CONNECTOR]: IsAuthorizedForRegion checking {0} at remote server {1}", userID, m_ServerURI); m_log.InfoFormat("[AUTHORIZATION CONNECTOR]: IsAuthorizedForRegion checking {0} at remote server {1}", userID, m_ServerURI);
@ -105,10 +105,12 @@ namespace OpenSim.Services.Connectors
catch (Exception e) catch (Exception e)
{ {
m_log.WarnFormat("[AUTHORIZATION CONNECTOR]: Unable to send authorize {0} for region {1} error thrown during comms with remote server. Reason: {2}", userID, regionID, e.Message); m_log.WarnFormat("[AUTHORIZATION CONNECTOR]: Unable to send authorize {0} for region {1} error thrown during comms with remote server. Reason: {2}", userID, regionID, e.Message);
message="";
return m_ResponseOnFailure; return m_ResponseOnFailure;
} }
m_log.DebugFormat("[AUTHORIZATION CONNECTOR] response from remote service was {0}", response.Message); m_log.DebugFormat("[AUTHORIZATION CONNECTOR] response from remote service was {0}", response.Message);
message = response.Message;
return response.IsAuthorized; return response.IsAuthorized;
} }

View File

@ -40,7 +40,7 @@ namespace OpenSim.Services.Interfaces
// This method returns a simple true false indicating // This method returns a simple true false indicating
// whether or not a user has access to the region // whether or not a user has access to the region
// //
bool IsAuthorizedForRegion(string userID, string regionID); bool IsAuthorizedForRegion(string userID, string regionID, out string message);
} }

View File

@ -134,19 +134,24 @@
; if you would like to allow prims to be physical and move by physics with the physical checkbox in the client set this to true. ; if you would like to allow prims to be physical and move by physics with the physical checkbox in the client set this to true.
physical_prim = true physical_prim = true
; Select a mesher here. ZeroMesher is safe and fast. ; Select a mesher here.
; ZeroMesher also means that the physics engine models the physics of prims
; sticking to the basic shapes the engine does support. Usually this is only a box.
; Meshmerizer gives a better handling of complex prims by using triangle meshes.
; Note that only ODE physics currently deals with meshed prims in a satisfactory way
; ;
meshing = ZeroMesher ; Meshmerizer properly handles complex prims by using triangle meshes.
;meshing = Meshmerizer ; Note that only the ODE physics engine currently deals with meshed prims in a satisfactory way
;
; ZeroMesher is faster but leaves the physics engine to model the mesh using the basic shapes that it supports
; Usually this is only a box
meshing = Meshmerizer
;meshing = ZeroMesher
; Choose one of the physics engines below ; Choose one of the physics engines below
physics = basicphysics ; OpenDynamicsEngine is by some distance the most developed physics engine
; basicphysics effectively does not model physics at all, making all objects phantom
physics = OpenDynamicsEngine
;physics = basicphysics
;physics = POS ;physics = POS
;physics = OpenDynamicsEngine
;physics = modified_BulletX ;physics = modified_BulletX
; ## ; ##