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);
List<RegionData> Get(string regionName, UUID ScopeID);
//BA MOD....
RegionData GetSpecific(string regionName, 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)
{
string command = "select * from `" + m_Realm + "` where regionName = ?regionName";
if (scopeID != UUID.Zero)
command += " and ScopeID = ?scopeID";
//command += " order by regionName";
using (MySqlCommand cmd = new MySqlCommand(command))
{
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";
if (scopeID != UUID.Zero)
command += " and ScopeID = ?scopeID";

View File

@ -68,12 +68,34 @@ namespace OpenSim.Data.Null
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)
{
if (m_useStaticInstance && Instance != this)
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();
@ -166,13 +188,7 @@ namespace OpenSim.Data.Null
return null;
}
//BA MOD...
public RegionData GetSpecific(string regionName, UUID ScopeID)
{
return null;
}
public List<RegionData> Get(int startX, int startY, int endX, int endY, UUID scopeID)
public List<RegionData> Get(int startX, int startY, int endX, int endY, UUID scopeID)
{
if (m_useStaticInstance && Instance != this)
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)
{
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;
}
public GridRegion GetRegionByNameSpecific(UUID scopeID, string regionName)
{
return null;
}
public GridRegion GetRegionByName(UUID scopeID, string regionName)
{
bool inCache = false;

View File

@ -236,12 +236,6 @@ namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.Grid
return rinfo;
}
public GridRegion GetRegionByNameSpecific(UUID scopeID, string regionName)
{
return null;
}
public GridRegion GetRegionByName(UUID scopeID, string 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);
bool LibOMVclient = false;
if (request.Params.Count > 4 && (string)request.Params[4] == "gridproxy")
LibOMVclient = true;
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();
response.Value = reply.ToHashtable();
@ -221,7 +216,7 @@ namespace OpenSim.Server.Handlers.Login
LoginResponse reply = null;
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();
}
@ -264,7 +259,7 @@ namespace OpenSim.Server.Handlers.Login
(sender as WebSocketHttpServerHandler).GetRemoteIPEndpoint();
LoginResponse reply = null;
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()));
}

View File

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

View File

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

View File

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

View File

@ -48,7 +48,7 @@ namespace OpenSim.Services.Interfaces
public interface ILoginService
{
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);
}

View File

@ -285,18 +285,15 @@ namespace OpenSim.Services.LLLoginService
}
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;
UUID session = UUID.Random();
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} ",
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();
@ -699,7 +696,6 @@ namespace OpenSim.Services.LLLoginService
where = "safe";
}
}
}
else
{
@ -735,41 +731,32 @@ namespace OpenSim.Services.LLLoginService
{
if (!regionName.Contains("@"))
{
List<GridRegion> regions = m_GridService.GetRegionsByName(scopeID, regionName, 1);
if ((regions == null) || (regions != null && regions.Count == 0))
region = m_GridService.GetRegionByName (scopeID, regionName);
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);
regions = m_GridService.GetDefaultRegions(scopeID);
if (regions != null && regions.Count > 0)
where = "safe";
return regions[0];
}
else
{
m_log.Info("[LLOGIN SERVICE]: Last Region Not Found Attempting to find random region");
region = FindAlternativeRegion(scopeID);
if (region != null)
{
where = "safe";
return regions[0];
return region;
}
else
{
m_log.Info("[LLOGIN SERVICE]: Last Region Not Found Attempting to find random region");
region = FindAlternativeRegion(scopeID);
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;
}
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
{