adding in working functionality for the remote connector
parent
16940097be
commit
953ef780c5
|
@ -76,7 +76,7 @@ namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.Authorization
|
|||
|
||||
base.Initialise(source);
|
||||
|
||||
m_log.Info("[AUTHORIZATION CONNECTOR]: Remote assets enabled");
|
||||
m_log.Info("[AUTHORIZATION CONNECTOR]: Remote authorization enabled");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -55,16 +55,41 @@ namespace OpenSim.Server.Handlers.Authorization
|
|||
public override byte[] Handle(string path, Stream request,
|
||||
OSHttpRequest httpRequest, OSHttpResponse httpResponse)
|
||||
{
|
||||
byte[] result = new byte[0];
|
||||
// always return success for now, this is just stub functionality
|
||||
return SuccessResult();
|
||||
}
|
||||
|
||||
string[] p = SplitParams(path);
|
||||
private byte[] SuccessResult()
|
||||
{
|
||||
XmlDocument doc = new XmlDocument();
|
||||
|
||||
if (p.Length == 0)
|
||||
return result;
|
||||
XmlNode xmlnode = doc.CreateNode(XmlNodeType.XmlDeclaration,
|
||||
"", "");
|
||||
|
||||
// Process web request
|
||||
doc.AppendChild(xmlnode);
|
||||
|
||||
return result;
|
||||
XmlElement rootElement = doc.CreateElement("", "Authorization",
|
||||
"");
|
||||
|
||||
doc.AppendChild(rootElement);
|
||||
|
||||
XmlElement result = doc.CreateElement("", "Result", "");
|
||||
result.AppendChild(doc.CreateTextNode("success"));
|
||||
|
||||
rootElement.AppendChild(result);
|
||||
|
||||
return DocToBytes(doc);
|
||||
}
|
||||
|
||||
private byte[] DocToBytes(XmlDocument doc)
|
||||
{
|
||||
MemoryStream ms = new MemoryStream();
|
||||
XmlTextWriter xw = new XmlTextWriter(ms, null);
|
||||
xw.Formatting = Formatting.Indented;
|
||||
doc.WriteTo(xw);
|
||||
xw.Flush();
|
||||
|
||||
return ms.GetBuffer();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -46,6 +46,7 @@ namespace OpenSim.Services.Connectors
|
|||
MethodBase.GetCurrentMethod().DeclaringType);
|
||||
|
||||
private string m_ServerURI = String.Empty;
|
||||
private bool m_ResponseOnFailure = true;
|
||||
|
||||
public AuthorizationServicesConnector()
|
||||
{
|
||||
|
@ -66,7 +67,7 @@ namespace OpenSim.Services.Connectors
|
|||
IConfig authorizationConfig = source.Configs["AuthorizationService"];
|
||||
if (authorizationConfig == null)
|
||||
{
|
||||
m_log.Error("[AUTHORIZATION CONNECTOR]: AuthorizationService missing from OpanSim.ini");
|
||||
m_log.Error("[AUTHORIZATION CONNECTOR]: AuthorizationService missing from OpenSim.ini");
|
||||
throw new Exception("Authorization connector init error");
|
||||
}
|
||||
|
||||
|
@ -75,16 +76,43 @@ namespace OpenSim.Services.Connectors
|
|||
|
||||
if (serviceURI == String.Empty)
|
||||
{
|
||||
m_log.Error("[AUTHORIZATION CONNECTOR]: No Server URI named in section AssetService");
|
||||
m_log.Error("[AUTHORIZATION CONNECTOR]: No Server URI named in section AuthorizationService");
|
||||
throw new Exception("Authorization connector init error");
|
||||
}
|
||||
m_ServerURI = serviceURI;
|
||||
|
||||
// this dictates what happens if the remote service fails, if the service fails and the value is true
|
||||
// the user is authorized for the region.
|
||||
bool responseOnFailure = authorizationConfig.GetBoolean("ResponseOnFailure",true);
|
||||
|
||||
m_ResponseOnFailure = responseOnFailure;
|
||||
}
|
||||
|
||||
public bool isAuthorizedForRegion(UserProfileData user, RegionInfo region)
|
||||
{
|
||||
// call remote service
|
||||
return true;
|
||||
// this should be a remote call to the authorization server specified in the AuthorizationServerURI
|
||||
m_log.Info("[AUTHORIZATION CONNECTOR]: isAuthorizedForRegion is not yet implemented. Returning true, the user is authorized ");
|
||||
|
||||
string uri = m_ServerURI + "?uuid="+user.ID + "&firstname="+user.FirstName+"&lastname="+user.SurName+"®ion="+region.RegionName+"®ionid="+region.RegionID+"&email="+user.Email;
|
||||
|
||||
string result = string.Empty;
|
||||
|
||||
try
|
||||
{
|
||||
result = SynchronousRestObjectRequester.
|
||||
MakeRequest<UserProfileData, string>("POST", uri, user);
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
m_log.WarnFormat("[AUTHORIZATION CONNECTOR]: Unable to send authorize {0} {1} for region {2} error thrown during comms with remote server. Reason: {3}", user.FirstName,user.SurName,region.RegionName, e.Message);
|
||||
return m_ResponseOnFailure;
|
||||
}
|
||||
|
||||
m_log.DebugFormat("[AUTHORIZATION CONNECTOR] response from remote service was {0}",result);
|
||||
if(result.Contains("success"))
|
||||
return true;
|
||||
else
|
||||
return false;
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -10,6 +10,7 @@
|
|||
[Modules]
|
||||
AssetServices = "RemoteAssetServicesConnector"
|
||||
InventoryServices = "RemoteInventoryServicesConnector"
|
||||
AuthorizationServices = "RemoteAuthorizationServicesConnector"
|
||||
NeighbourServices = "RemoteNeighbourServicesConnector"
|
||||
NeighbourServiceInConnector = true
|
||||
LandServiceInConnector = true
|
||||
|
|
Loading…
Reference in New Issue