From d9184eceab5ff9087801b0f0d447dec2f5227a50 Mon Sep 17 00:00:00 2001 From: Justin Clark-Casey (justincc) Date: Wed, 19 Oct 2011 19:01:57 +0100 Subject: Add option to allow remote http calls to setpassword in the AuthenticationService. This is switched on by setting AllowSetPassword = true in the [AuthenticationService] section of Robust.ini or Robust.HG.ini Default is false as before. --- .../AuthenticationServerConnector.cs | 2 +- .../AuthenticationServerPostHandler.cs | 67 +++++++++++++++------- 2 files changed, 46 insertions(+), 23 deletions(-) (limited to 'OpenSim/Server/Handlers/Authentication') diff --git a/OpenSim/Server/Handlers/Authentication/AuthenticationServerConnector.cs b/OpenSim/Server/Handlers/Authentication/AuthenticationServerConnector.cs index adb1e5b..848a037 100644 --- a/OpenSim/Server/Handlers/Authentication/AuthenticationServerConnector.cs +++ b/OpenSim/Server/Handlers/Authentication/AuthenticationServerConnector.cs @@ -58,7 +58,7 @@ namespace OpenSim.Server.Handlers.Authentication Object[] args = new Object[] { config }; m_AuthenticationService = ServerUtils.LoadPlugin(authenticationService, args); - server.AddStreamHandler(new AuthenticationServerPostHandler(m_AuthenticationService)); + server.AddStreamHandler(new AuthenticationServerPostHandler(m_AuthenticationService, serverConfig)); } } } diff --git a/OpenSim/Server/Handlers/Authentication/AuthenticationServerPostHandler.cs b/OpenSim/Server/Handlers/Authentication/AuthenticationServerPostHandler.cs index 47bc860..ae71945 100644 --- a/OpenSim/Server/Handlers/Authentication/AuthenticationServerPostHandler.cs +++ b/OpenSim/Server/Handlers/Authentication/AuthenticationServerPostHandler.cs @@ -49,11 +49,20 @@ namespace OpenSim.Server.Handlers.Authentication // private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); private IAuthenticationService m_AuthenticationService; + private bool m_AllowSetPassword = false; public AuthenticationServerPostHandler(IAuthenticationService service) : + this(service, null) {} + + public AuthenticationServerPostHandler(IAuthenticationService service, IConfig config) : base("POST", "/auth") { m_AuthenticationService = service; + + if (config != null) + { + m_AllowSetPassword = config.GetBoolean("AllowSetPassword", m_AllowSetPassword); + } } public override byte[] Handle(string path, Stream request, @@ -113,31 +122,45 @@ namespace OpenSim.Server.Handlers.Authentication switch (method) { - case "authenticate": - if (!request.ContainsKey("PASSWORD")) + case "authenticate": + if (!request.ContainsKey("PASSWORD")) + return FailureResult(); + + token = m_AuthenticationService.Authenticate(principalID, request["PASSWORD"].ToString(), lifetime); + + if (token != String.Empty) + return SuccessResult(token); return FailureResult(); - - token = m_AuthenticationService.Authenticate(principalID, request["PASSWORD"].ToString(), lifetime); - - if (token != String.Empty) - return SuccessResult(token); - return FailureResult(); - case "verify": - if (!request.ContainsKey("TOKEN")) + + case "setpassword": + if (!m_AllowSetPassword) + return FailureResult(); + + if (!request.ContainsKey("PASSWORD")) + return FailureResult(); + + if (m_AuthenticationService.SetPassword(principalID, request["PASSWORD"].ToString())) + return SuccessResult(); + else + return FailureResult(); + + case "verify": + if (!request.ContainsKey("TOKEN")) + return FailureResult(); + + if (m_AuthenticationService.Verify(principalID, request["TOKEN"].ToString(), lifetime)) + return SuccessResult(); + return FailureResult(); - - if (m_AuthenticationService.Verify(principalID, request["TOKEN"].ToString(), lifetime)) - return SuccessResult(); - - return FailureResult(); - case "release": - if (!request.ContainsKey("TOKEN")) + + case "release": + if (!request.ContainsKey("TOKEN")) + return FailureResult(); + + if (m_AuthenticationService.Release(principalID, request["TOKEN"].ToString())) + return SuccessResult(); + return FailureResult(); - - if (m_AuthenticationService.Release(principalID, request["TOKEN"].ToString())) - return SuccessResult(); - - return FailureResult(); } return FailureResult(); -- cgit v1.1