work on previus 2 patchs

0.9.1.1
UbitUmarov 2019-11-14 06:34:44 +00:00
parent 999a068172
commit 31aef4e82b
13 changed files with 66 additions and 119 deletions

View File

@ -71,8 +71,6 @@ namespace OpenSim.Data
{ {
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);
//BA MOD....
RegionData GetSpecific(string regionName, UUID ScopeID); RegionData GetSpecific(string regionName, UUID ScopeID);
RegionData Get(int x, int y, UUID ScopeID); RegionData Get(int x, int y, UUID ScopeID);

View File

@ -81,15 +81,12 @@ namespace OpenSim.Data.MySQL
} }
} }
//BA MOD....
public RegionData GetSpecific(string regionName, UUID scopeID) public RegionData GetSpecific(string regionName, UUID scopeID)
{ {
string command = "select * from `" + m_Realm + "` where regionName = ?regionName"; string command = "select * from `" + m_Realm + "` where regionName = ?regionName";
if (scopeID != UUID.Zero) if (scopeID != UUID.Zero)
command += " and ScopeID = ?scopeID"; command += " and ScopeID = ?scopeID";
//command += " order by regionName";
using (MySqlCommand cmd = new MySqlCommand(command)) using (MySqlCommand cmd = new MySqlCommand(command))
{ {
cmd.Parameters.AddWithValue("?regionName", regionName); cmd.Parameters.AddWithValue("?regionName", regionName);
@ -104,27 +101,8 @@ namespace OpenSim.Data.MySQL
} }
public RegionData Get(int posX, int posY, UUID scopeID) public RegionData Get(int posX, int posY, UUID scopeID)
{ {
/* fixed size regions
string command = "select * from `"+m_Realm+"` where locX = ?posX and locY = ?posY";
if (scopeID != UUID.Zero)
command += " and ScopeID = ?scopeID";
using (MySqlCommand cmd = new MySqlCommand(command))
{
cmd.Parameters.AddWithValue("?posX", posX.ToString());
cmd.Parameters.AddWithValue("?posY", posY.ToString());
cmd.Parameters.AddWithValue("?scopeID", scopeID.ToString());
List<RegionData> ret = RunCommand(cmd);
if (ret.Count == 0)
return null;
return ret[0];
}
*/
// extend database search for maximum region size area
string command = "select * from `" + m_Realm + "` where locX between ?startX and ?endX and locY between ?startY and ?endY"; string command = "select * from `" + m_Realm + "` where locX between ?startX and ?endX and locY between ?startY and ?endY";
if (scopeID != UUID.Zero) if (scopeID != UUID.Zero)
command += " and ScopeID = ?scopeID"; command += " and ScopeID = ?scopeID";

View File

@ -68,12 +68,34 @@ namespace OpenSim.Data.Null
private delegate bool Matcher(string value); private delegate bool Matcher(string value);
public RegionData GetSpecific(string regionName, UUID scopeID)
{
if (m_useStaticInstance && Instance != this)
return Instance.GetSpecific(regionName, scopeID);
string cleanName = regionName.ToLower();
Matcher queryMatch;
queryMatch = delegate (string s) { return s.Equals(cleanName); };
lock (m_regionData)
{
foreach (RegionData r in m_regionData.Values)
{
// m_log.DebugFormat("[NULL REGION DATA]: comparing {0} to {1}", cleanName, r.RegionName.ToLower());
if (queryMatch(r.RegionName.ToLower()))
return(r);
}
}
return null;
}
public List<RegionData> Get(string regionName, UUID scopeID) public List<RegionData> Get(string regionName, UUID scopeID)
{ {
if (m_useStaticInstance && Instance != this) if (m_useStaticInstance && Instance != this)
return Instance.Get(regionName, scopeID); return Instance.Get(regionName, scopeID);
// m_log.DebugFormat("[NULL REGION DATA]: Getting region {0}, scope {1}", regionName, scopeID); // m_log.DebugFormat("[NULL REGION DATA]: Getting region {0}, scope {1}", regionName, scopeID);
string cleanName = regionName.ToLower(); string cleanName = regionName.ToLower();
@ -166,13 +188,7 @@ namespace OpenSim.Data.Null
return null; return null;
} }
//BA MOD... public List<RegionData> Get(int startX, int startY, int endX, int endY, UUID scopeID)
public RegionData GetSpecific(string regionName, UUID ScopeID)
{
return null;
}
public List<RegionData> Get(int startX, int startY, int endX, int endY, UUID scopeID)
{ {
if (m_useStaticInstance && Instance != this) if (m_useStaticInstance && Instance != this)
return Instance.Get(startX, startY, endX, endY, scopeID); return Instance.Get(startX, startY, endX, endY, scopeID);

View File

@ -114,7 +114,6 @@ namespace OpenSim.Data.PGSQL
} }
} }
//BA MOD...
public RegionData GetSpecific(string regionName, UUID scopeID) public RegionData GetSpecific(string regionName, UUID scopeID)
{ {
string sql = "select * from " + m_Realm + " where lower(\"regionName\") = lower(:regionName) "; string sql = "select * from " + m_Realm + " where lower(\"regionName\") = lower(:regionName) ";

View File

@ -240,12 +240,6 @@ namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.Grid
return rinfo; return rinfo;
} }
public GridRegion GetRegionByNameSpecific(UUID scopeID, string regionName)
{
return null;
}
public GridRegion GetRegionByName(UUID scopeID, string regionName) public GridRegion GetRegionByName(UUID scopeID, string regionName)
{ {
bool inCache = false; bool inCache = false;

View File

@ -236,12 +236,6 @@ namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.Grid
return rinfo; return rinfo;
} }
public GridRegion GetRegionByNameSpecific(UUID scopeID, string regionName)
{
return null;
}
public GridRegion GetRegionByName(UUID scopeID, string name) public GridRegion GetRegionByName(UUID scopeID, string name)
{ {
GridRegion rinfo = m_LocalGridService.GetRegionByName(scopeID, name); GridRegion rinfo = m_LocalGridService.GetRegionByName(scopeID, name);

View File

@ -132,13 +132,8 @@ namespace OpenSim.Server.Handlers.Login
//m_log.InfoFormat("[LOGIN]: XMLRPC Login Requested for {0} {1}, starting in {2}, using {3}", first, last, startLocation, clientVersion); //m_log.InfoFormat("[LOGIN]: XMLRPC Login Requested for {0} {1}, starting in {2}, using {3}", first, last, startLocation, clientVersion);
bool LibOMVclient = false;
if (request.Params.Count > 4 && (string)request.Params[4] == "gridproxy")
LibOMVclient = true;
LoginResponse reply = null; LoginResponse reply = null;
reply = m_LocalService.Login(first, last, passwd, startLocation, scopeID, clientVersion, channel, mac, id0, remoteClient, LibOMVclient); reply = m_LocalService.Login(first, last, passwd, startLocation, scopeID, clientVersion, channel, mac, id0, remoteClient);
XmlRpcResponse response = new XmlRpcResponse(); XmlRpcResponse response = new XmlRpcResponse();
response.Value = reply.ToHashtable(); response.Value = reply.ToHashtable();
@ -221,7 +216,7 @@ namespace OpenSim.Server.Handlers.Login
LoginResponse reply = null; LoginResponse reply = null;
reply = m_LocalService.Login(map["first"].AsString(), map["last"].AsString(), map["passwd"].AsString(), startLocation, scopeID, reply = m_LocalService.Login(map["first"].AsString(), map["last"].AsString(), map["passwd"].AsString(), startLocation, scopeID,
map["version"].AsString(), map["channel"].AsString(), map["mac"].AsString(), map["id0"].AsString(), remoteClient,false); map["version"].AsString(), map["channel"].AsString(), map["mac"].AsString(), map["id0"].AsString(), remoteClient);
return reply.ToOSDMap(); return reply.ToOSDMap();
} }
@ -264,7 +259,7 @@ namespace OpenSim.Server.Handlers.Login
(sender as WebSocketHttpServerHandler).GetRemoteIPEndpoint(); (sender as WebSocketHttpServerHandler).GetRemoteIPEndpoint();
LoginResponse reply = null; LoginResponse reply = null;
reply = m_LocalService.Login(first, last, passwd, start, scope, version, reply = m_LocalService.Login(first, last, passwd, start, scope, version,
channel, mac, id0, endPoint,false); channel, mac, id0, endPoint);
sock.SendMessage(OSDParser.SerializeJsonString(reply.ToOSDMap())); sock.SendMessage(OSDParser.SerializeJsonString(reply.ToOSDMap()));
} }

View File

@ -330,12 +330,6 @@ namespace OpenSim.Services.Connectors
return rinfo; return rinfo;
} }
public GridRegion GetRegionByNameSpecific(UUID scopeID, string regionName)
{
return null;
}
public GridRegion GetRegionByName(UUID scopeID, string regionName) public GridRegion GetRegionByName(UUID scopeID, string regionName)
{ {
Dictionary<string, object> sendData = new Dictionary<string, object>(); Dictionary<string, object> sendData = new Dictionary<string, object>();

View File

@ -100,8 +100,6 @@ namespace OpenSim.Services.Connectors.SimianGrid
#region IGridService #region IGridService
public string RegisterRegion(UUID scopeID, GridRegion regionInfo) public string RegisterRegion(UUID scopeID, GridRegion regionInfo)
{ {
IPEndPoint ext = regionInfo.ExternalEndPoint; IPEndPoint ext = regionInfo.ExternalEndPoint;

View File

@ -476,9 +476,9 @@ namespace OpenSim.Services.GridService
public GridRegion GetRegionByName(UUID scopeID, string name) public GridRegion GetRegionByName(UUID scopeID, string name)
{ {
List<RegionData> rdatas = m_Database.Get(Util.EscapeForLike(name), scopeID); RegionData rdata = m_Database.GetSpecific(name, scopeID);
if ((rdatas != null) && (rdatas.Count > 0)) if (rdata != null)
return RegionData2RegionInfo(rdatas[0]); // get the first return RegionData2RegionInfo(rdata);
if (m_AllowHypergridMapSearch) if (m_AllowHypergridMapSearch)
{ {
@ -490,18 +490,7 @@ namespace OpenSim.Services.GridService
return null; return null;
} }
//BA MOD.... public List<GridRegion> GetRegionsByName(UUID scopeID, string name, int maxNumber)
public GridRegion GetRegionByNameSpecific(UUID scopeID, string name)
{
RegionData rdata = m_Database.GetSpecific(name, scopeID);
if (rdata != null)
{
return RegionData2RegionInfo(rdata);
}
return null;
}
public List<GridRegion> GetRegionsByName(UUID scopeID, string name, int maxNumber)
{ {
// m_log.DebugFormat("[GRID SERVICE]: GetRegionsByName {0}", name); // m_log.DebugFormat("[GRID SERVICE]: GetRegionsByName {0}", name);
@ -510,7 +499,7 @@ namespace OpenSim.Services.GridService
int count = 0; int count = 0;
List<GridRegion> rinfos = new List<GridRegion>(); List<GridRegion> rinfos = new List<GridRegion>();
if (count < maxNumber && m_AllowHypergridMapSearch && name.Contains(".")) if (m_AllowHypergridMapSearch && name.Contains("."))
{ {
string regionURI = ""; string regionURI = "";
string regionHost = ""; string regionHost = "";
@ -538,7 +527,7 @@ namespace OpenSim.Services.GridService
{ {
if (count++ < maxNumber) if (count++ < maxNumber)
rinfos.Add(RegionData2RegionInfo(rdata)); rinfos.Add(RegionData2RegionInfo(rdata));
if(rdata.RegionName == mapname) if(mapname.Equals(rdata.RegionName,StringComparison.InvariantCultureIgnoreCase))
{ {
haveMatch = true; haveMatch = true;
if(count == maxNumber) if(count == maxNumber)
@ -560,7 +549,7 @@ namespace OpenSim.Services.GridService
{ {
if (count++ < maxNumber) if (count++ < maxNumber)
rinfos.Add(RegionData2RegionInfo(rdata)); rinfos.Add(RegionData2RegionInfo(rdata));
if(rdata.RegionName == mapname) if (mapname.Equals(rdata.RegionName, StringComparison.InvariantCultureIgnoreCase))
{ {
haveMatch = true; haveMatch = true;
if(count == maxNumber) if(count == maxNumber)
@ -588,11 +577,20 @@ namespace OpenSim.Services.GridService
} }
else if (rdatas != null && (rdatas.Count > 0)) else if (rdatas != null && (rdatas.Count > 0))
{ {
// m_log.DebugFormat("[GRID SERVICE]: Found {0} regions", rdatas.Count); //m_log.DebugFormat("[GRID SERVICE]: Found {0} regions", rdatas.Count);
foreach (RegionData rdata in rdatas) foreach (RegionData rdata in rdatas)
{ {
if (count++ < maxNumber) if (count++ < maxNumber)
rinfos.Add(RegionData2RegionInfo(rdata)); rinfos.Add(RegionData2RegionInfo(rdata));
if (name.Equals(rdata.RegionName, StringComparison.InvariantCultureIgnoreCase))
{
if (count == maxNumber)
{
rinfos.RemoveAt(count - 1);
rinfos.Add(RegionData2RegionInfo(rdata));
break;
}
}
} }
} }

View File

@ -84,10 +84,6 @@ namespace OpenSim.Services.Interfaces
/// <returns>Returns the region information if the name matched. Null otherwise.</returns> /// <returns>Returns the region information if the name matched. Null otherwise.</returns>
GridRegion GetRegionByName(UUID scopeID, string regionName); GridRegion GetRegionByName(UUID scopeID, string regionName);
//BA MOD.....
GridRegion GetRegionByNameSpecific(UUID scopeID, string regionName);
/// <summary> /// <summary>
/// Get information about regions starting with the provided name. /// Get information about regions starting with the provided name.
/// </summary> /// </summary>

View File

@ -48,7 +48,7 @@ namespace OpenSim.Services.Interfaces
public interface ILoginService public interface ILoginService
{ {
LoginResponse Login(string firstName, string lastName, string passwd, string startLocation, UUID scopeID, LoginResponse Login(string firstName, string lastName, string passwd, string startLocation, UUID scopeID,
string clientVersion, string channel, string mac, string id0, IPEndPoint clientIP, bool LibOMVclient); string clientVersion, string channel, string mac, string id0, IPEndPoint clientIP);
Hashtable SetLevel(string firstName, string lastName, string passwd, int level, IPEndPoint clientIP); Hashtable SetLevel(string firstName, string lastName, string passwd, int level, IPEndPoint clientIP);
} }

View File

@ -285,18 +285,15 @@ namespace OpenSim.Services.LLLoginService
} }
public LoginResponse Login(string firstName, string lastName, string passwd, string startLocation, UUID scopeID, public LoginResponse Login(string firstName, string lastName, string passwd, string startLocation, UUID scopeID,
string clientVersion, string channel, string mac, string id0, IPEndPoint clientIP, bool LibOMVclient) string clientVersion, string channel, string mac, string id0, IPEndPoint clientIP)
{ {
bool success = false; bool success = false;
UUID session = UUID.Random(); UUID session = UUID.Random();
string processedMessage; string processedMessage;
if (clientVersion.Contains("Radegast"))
LibOMVclient = false;
m_log.InfoFormat("[LLOGIN SERVICE]: Login request for {0} {1} at {2} using viewer {3}, channel {4}, IP {5}, Mac {6}, Id0 {7}, Possible LibOMVGridProxy: {8} ", m_log.InfoFormat("[LLOGIN SERVICE]: Login request for {0} {1} at {2} using viewer {3}, channel {4}, IP {5}, Mac {6}, Id0 {7}, Possible LibOMVGridProxy: {8} ",
firstName, lastName, startLocation, clientVersion, channel, clientIP.Address.ToString(), mac, id0, LibOMVclient.ToString()); firstName, lastName, startLocation, clientVersion, channel, clientIP.Address.ToString(), mac, id0);
string curMac = mac.ToString(); string curMac = mac.ToString();
@ -699,7 +696,6 @@ namespace OpenSim.Services.LLLoginService
where = "safe"; where = "safe";
} }
} }
} }
else else
{ {
@ -735,41 +731,32 @@ namespace OpenSim.Services.LLLoginService
{ {
if (!regionName.Contains("@")) if (!regionName.Contains("@"))
{ {
List<GridRegion> regions = m_GridService.GetRegionsByName(scopeID, regionName, 1); region = m_GridService.GetRegionByName (scopeID, regionName);
if ((regions == null) || (regions != null && regions.Count == 0)) if(region != null)
return region;
m_log.InfoFormat("[LLLOGIN SERVICE]: Got Custom Login URI {0}, can't locate region {1}. Trying defaults.", startLocation, regionName);
List<GridRegion> regions = m_GridService.GetDefaultRegions(scopeID);
if (regions != null && regions.Count > 0)
{ {
m_log.InfoFormat("[LLLOGIN SERVICE]: Got Custom Login URI {0}, can't locate region {1}. Trying defaults.", startLocation, regionName); where = "safe";
regions = m_GridService.GetDefaultRegions(scopeID); return regions[0];
if (regions != null && regions.Count > 0) }
else
{
m_log.Info("[LLOGIN SERVICE]: Last Region Not Found Attempting to find random region");
region = FindAlternativeRegion(scopeID);
if (region != null)
{ {
where = "safe"; where = "safe";
return regions[0]; return region;
} }
else else
{ {
m_log.Info("[LLOGIN SERVICE]: Last Region Not Found Attempting to find random region"); m_log.InfoFormat("[LLLOGIN SERVICE]: Got Custom Login URI {0}, Grid does not provide default regions and no alternative found.", startLocation);
region = FindAlternativeRegion(scopeID); return null;
if (region != null)
{
where = "safe";
return region;
}
else
{
m_log.InfoFormat("[LLLOGIN SERVICE]: Got Custom Login URI {0}, Grid does not provide default regions and no alternative found.", startLocation);
return null;
}
} }
} }
//find a exact match
foreach(GridRegion r in regions)
{
if(string.Equals(regionName, r.RegionName, StringComparison.InvariantCultureIgnoreCase))
return r;
}
// else, whatever
return regions[0];
} }
else else
{ {