aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/OpenSim/Services
diff options
context:
space:
mode:
Diffstat (limited to 'OpenSim/Services')
-rw-r--r--OpenSim/Services/Interfaces/ILoginService.cs1
-rw-r--r--OpenSim/Services/LLLoginService/LLLoginService.cs53
2 files changed, 54 insertions, 0 deletions
diff --git a/OpenSim/Services/Interfaces/ILoginService.cs b/OpenSim/Services/Interfaces/ILoginService.cs
index 49efbe2..513ab4a 100644
--- a/OpenSim/Services/Interfaces/ILoginService.cs
+++ b/OpenSim/Services/Interfaces/ILoginService.cs
@@ -48,6 +48,7 @@ namespace OpenSim.Services.Interfaces
48 public interface ILoginService 48 public interface ILoginService
49 { 49 {
50 LoginResponse Login(string firstName, string lastName, string passwd, string startLocation, UUID scopeID, IPEndPoint clientIP); 50 LoginResponse Login(string firstName, string lastName, string passwd, string startLocation, UUID scopeID, IPEndPoint clientIP);
51 Hashtable SetLevel(string firstName, string lastName, string passwd, int level, IPEndPoint clientIP);
51 } 52 }
52 53
53 54
diff --git a/OpenSim/Services/LLLoginService/LLLoginService.cs b/OpenSim/Services/LLLoginService/LLLoginService.cs
index 4d7dfd1..95127d2 100644
--- a/OpenSim/Services/LLLoginService/LLLoginService.cs
+++ b/OpenSim/Services/LLLoginService/LLLoginService.cs
@@ -26,6 +26,7 @@
26 */ 26 */
27 27
28using System; 28using System;
29using System.Collections;
29using System.Collections.Generic; 30using System.Collections.Generic;
30using System.Net; 31using System.Net;
31using System.Reflection; 32using System.Reflection;
@@ -70,6 +71,7 @@ namespace OpenSim.Services.LLLoginService
70 private bool m_RequireInventory; 71 private bool m_RequireInventory;
71 protected int m_MinLoginLevel; 72 protected int m_MinLoginLevel;
72 private string m_GatekeeperURL; 73 private string m_GatekeeperURL;
74 private bool m_AllowRemoteSetLoginLevel;
73 75
74 IConfig m_LoginServerConfig; 76 IConfig m_LoginServerConfig;
75 77
@@ -93,6 +95,8 @@ namespace OpenSim.Services.LLLoginService
93 m_DefaultRegionName = m_LoginServerConfig.GetString("DefaultRegion", String.Empty); 95 m_DefaultRegionName = m_LoginServerConfig.GetString("DefaultRegion", String.Empty);
94 m_WelcomeMessage = m_LoginServerConfig.GetString("WelcomeMessage", "Welcome to OpenSim!"); 96 m_WelcomeMessage = m_LoginServerConfig.GetString("WelcomeMessage", "Welcome to OpenSim!");
95 m_RequireInventory = m_LoginServerConfig.GetBoolean("RequireInventory", true); 97 m_RequireInventory = m_LoginServerConfig.GetBoolean("RequireInventory", true);
98 m_AllowRemoteSetLoginLevel = m_LoginServerConfig.GetBoolean("AllowRemoteSetLoginLevel", false);
99 m_MinLoginLevel = m_LoginServerConfig.GetInt("MinLoginLevel", 0);
96 m_GatekeeperURL = m_LoginServerConfig.GetString("GatekeeperURI", string.Empty); 100 m_GatekeeperURL = m_LoginServerConfig.GetString("GatekeeperURI", string.Empty);
97 101
98 // These are required; the others aren't 102 // These are required; the others aren't
@@ -147,6 +151,55 @@ namespace OpenSim.Services.LLLoginService
147 { 151 {
148 } 152 }
149 153
154 public Hashtable SetLevel(string firstName, string lastName, string passwd, int level, IPEndPoint clientIP)
155 {
156 Hashtable response = new Hashtable();
157 response["success"] = "false";
158
159 if (!m_AllowRemoteSetLoginLevel)
160 return response;
161
162 try
163 {
164 UserAccount account = m_UserAccountService.GetUserAccount(UUID.Zero, firstName, lastName);
165 if (account == null)
166 {
167 m_log.InfoFormat("[LLOGIN SERVICE]: Set Level failed, user {0} {1} not found", firstName, lastName);
168 return response;
169 }
170
171 if (account.UserLevel < 200)
172 {
173 m_log.InfoFormat("[LLOGIN SERVICE]: Set Level failed, reason: user level too low");
174 return response;
175 }
176
177 //
178 // Authenticate this user
179 //
180 // We don't support clear passwords here
181 //
182 string token = m_AuthenticationService.Authenticate(account.PrincipalID, passwd, 30);
183 UUID secureSession = UUID.Zero;
184 if ((token == string.Empty) || (token != string.Empty && !UUID.TryParse(token, out secureSession)))
185 {
186 m_log.InfoFormat("[LLOGIN SERVICE]: SetLevel failed, reason: authentication failed");
187 return response;
188 }
189 }
190 catch (Exception e)
191 {
192 m_log.Error("[LLOGIN SERVICE]: SetLevel failed, exception " + e.ToString());
193 return response;
194 }
195
196 m_MinLoginLevel = level;
197 m_log.InfoFormat("[LLOGIN SERVICE]: Login level set to {0} by {1} {2}", level, firstName, lastName);
198
199 response["success"] = true;
200 return response;
201 }
202
150 public LoginResponse Login(string firstName, string lastName, string passwd, string startLocation, UUID scopeID, IPEndPoint clientIP) 203 public LoginResponse Login(string firstName, string lastName, string passwd, string startLocation, UUID scopeID, IPEndPoint clientIP)
151 { 204 {
152 bool success = false; 205 bool success = false;