mirror of
https://github.com/opensim/opensim.git
synced 2026-08-09 18:55:58 +08:00
ok.. another try on the HG uri
This commit is contained in:
@@ -196,123 +196,10 @@ namespace OpenSim.Services.GridService
|
||||
{
|
||||
return TryLinkRegionToCoords(scopeID, mapName, xloc, yloc, UUID.Zero, out reason);
|
||||
}
|
||||
|
||||
public bool buildHGRegionURI(string inputName, out string serverURI, out string regionName)
|
||||
|
||||
public bool IsLocalGrid(string serverURI)
|
||||
{
|
||||
serverURI = string.Empty;
|
||||
regionName = string.Empty;
|
||||
|
||||
inputName = inputName.Trim();
|
||||
|
||||
if (!inputName.StartsWith("http") && !inputName.StartsWith("https"))
|
||||
{
|
||||
// Formats: grid.example.com:8002:region name
|
||||
// grid.example.com:region name
|
||||
// grid.example.com:8002
|
||||
// grid.example.com
|
||||
|
||||
string host;
|
||||
uint port = 80;
|
||||
|
||||
string[] parts = inputName.Split(new char[] { ':' });
|
||||
int indx;
|
||||
if(parts.Length == 0)
|
||||
return false;
|
||||
if (parts.Length == 1)
|
||||
{
|
||||
indx = inputName.IndexOf('/');
|
||||
if (indx < 0)
|
||||
serverURI = "http://"+ inputName + "/";
|
||||
else
|
||||
{
|
||||
serverURI = "http://"+ inputName.Substring(0,indx + 1);
|
||||
if(indx + 2 < inputName.Length)
|
||||
regionName = inputName.Substring(indx + 1);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
host = parts[0];
|
||||
|
||||
if (parts.Length >= 2)
|
||||
{
|
||||
indx = parts[1].IndexOf('/');
|
||||
if(indx < 0)
|
||||
{
|
||||
// If it's a number then assume it's a port. Otherwise, it's a region name.
|
||||
if (!UInt32.TryParse(parts[1], out port))
|
||||
{
|
||||
port = 80;
|
||||
regionName = parts[1];
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
string portstr = parts[1].Substring(0, indx);
|
||||
if(indx + 2 < parts[1].Length)
|
||||
regionName = parts[1].Substring(indx + 1);
|
||||
if (!UInt32.TryParse(portstr, out port))
|
||||
port = 80;
|
||||
}
|
||||
}
|
||||
// always take the last one
|
||||
if (parts.Length >= 3)
|
||||
{
|
||||
regionName = parts[2];
|
||||
}
|
||||
|
||||
serverURI = "http://"+ host +":"+ port.ToString() + "/";
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
// Formats: http://grid.example.com region name
|
||||
// http://grid.example.com "region name"
|
||||
// http://grid.example.com
|
||||
|
||||
string[] parts = inputName.Split(new char[] { ' ' });
|
||||
|
||||
if (parts.Length == 0)
|
||||
return false;
|
||||
|
||||
serverURI = parts[0];
|
||||
|
||||
int indx = serverURI.LastIndexOf('/');
|
||||
if(indx > 10)
|
||||
{
|
||||
if(indx + 2 < inputName.Length)
|
||||
regionName = inputName.Substring(indx + 1);
|
||||
serverURI = inputName.Substring(0, indx + 1);
|
||||
}
|
||||
else if (parts.Length >= 2)
|
||||
{
|
||||
regionName = inputName.Substring(serverURI.Length);
|
||||
}
|
||||
}
|
||||
|
||||
// use better code for sanity check
|
||||
Uri uri;
|
||||
try
|
||||
{
|
||||
uri = new Uri(serverURI);
|
||||
}
|
||||
catch
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
if(!string.IsNullOrEmpty(regionName))
|
||||
regionName = regionName.Trim(new char[] { '"', ' ' });
|
||||
serverURI = uri.AbsoluteUri;
|
||||
if(uri.Port == 80)
|
||||
serverURI = serverURI.Trim(new char[] { '/', ' ' }) +":80/";
|
||||
else if(uri.Port == 443)
|
||||
serverURI = serverURI.Trim(new char[] { '/', ' ' }) +":443/";
|
||||
|
||||
if(serverURI == m_ThisGatekeeper)
|
||||
serverURI = ""; // local grid, look for region name only
|
||||
|
||||
return true;
|
||||
return serverURI == m_ThisGatekeeper;
|
||||
}
|
||||
|
||||
public GridRegion TryLinkRegionToCoords(UUID scopeID, string mapName, int xloc, int yloc, UUID ownerID, out string reason)
|
||||
@@ -323,7 +210,7 @@ namespace OpenSim.Services.GridService
|
||||
string serverURI = string.Empty;
|
||||
string regionName = string.Empty;
|
||||
|
||||
if(!buildHGRegionURI(mapName, out serverURI, out regionName))
|
||||
if(!Util.buildHGRegionURI(mapName, out serverURI, out regionName))
|
||||
{
|
||||
reason = "Wrong URI format for link-region";
|
||||
return null;
|
||||
|
||||
Reference in New Issue
Block a user