TOS module. WARNING: migration in GridUser table.
parent
495a3e7daf
commit
ae58cf4224
|
@ -17,3 +17,11 @@ CREATE TABLE `GridUser` (
|
||||||
) ENGINE=InnoDB;
|
) ENGINE=InnoDB;
|
||||||
|
|
||||||
COMMIT;
|
COMMIT;
|
||||||
|
|
||||||
|
:VERSION 2 # --------------------------
|
||||||
|
|
||||||
|
BEGIN;
|
||||||
|
|
||||||
|
ALTER TABLE `GridUser` ADD COLUMN TOS CHAR(36);
|
||||||
|
|
||||||
|
COMMIT;
|
||||||
|
|
|
@ -68,8 +68,11 @@ namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.GridUser
|
||||||
// m_log.DebugFormat("[ACTIVITY DETECTOR]: Detected root presence {0} in {1}", sp.UUID, sp.Scene.RegionInfo.RegionName);
|
// m_log.DebugFormat("[ACTIVITY DETECTOR]: Detected root presence {0} in {1}", sp.UUID, sp.Scene.RegionInfo.RegionName);
|
||||||
|
|
||||||
if (sp.PresenceType != PresenceType.Npc)
|
if (sp.PresenceType != PresenceType.Npc)
|
||||||
|
{
|
||||||
|
string userid = sp.Scene.UserManagementModule.GetUserUUI(sp.UUID);
|
||||||
m_GridUserService.SetLastPosition(
|
m_GridUserService.SetLastPosition(
|
||||||
sp.UUID.ToString(), UUID.Zero, sp.Scene.RegionInfo.RegionID, sp.AbsolutePosition, sp.Lookat);
|
userid, UUID.Zero, sp.Scene.RegionInfo.RegionID, sp.AbsolutePosition, sp.Lookat);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public void OnNewClient(IClientAPI client)
|
public void OnNewClient(IClientAPI client)
|
||||||
|
@ -83,8 +86,14 @@ namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.GridUser
|
||||||
return;
|
return;
|
||||||
|
|
||||||
// m_log.DebugFormat("[ACTIVITY DETECTOR]: Detected client logout {0} in {1}", client.AgentId, client.Scene.RegionInfo.RegionName);
|
// m_log.DebugFormat("[ACTIVITY DETECTOR]: Detected client logout {0} in {1}", client.AgentId, client.Scene.RegionInfo.RegionName);
|
||||||
|
string userId = client.AgentId.ToString();
|
||||||
|
if (client.Scene is Scene)
|
||||||
|
{
|
||||||
|
Scene s = (Scene)client.Scene;
|
||||||
|
userId = s.UserManagementModule.GetUserUUI(client.AgentId);
|
||||||
|
}
|
||||||
m_GridUserService.LoggedOut(
|
m_GridUserService.LoggedOut(
|
||||||
client.AgentId.ToString(), client.SessionId, client.Scene.RegionInfo.RegionID,
|
userId, client.SessionId, client.Scene.RegionInfo.RegionID,
|
||||||
client.SceneAgent.AbsolutePosition, client.SceneAgent.Lookat);
|
client.SceneAgent.AbsolutePosition, client.SceneAgent.Lookat);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -44,6 +44,9 @@ namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.GridUser
|
||||||
{
|
{
|
||||||
private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
|
private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
|
||||||
|
|
||||||
|
private const int KEEPTIME = 30; // 30 secs
|
||||||
|
private ExpiringCache<string, GridUserInfo> m_Infos = new ExpiringCache<string, GridUserInfo>();
|
||||||
|
|
||||||
#region ISharedRegionModule
|
#region ISharedRegionModule
|
||||||
|
|
||||||
private bool m_Enabled = false;
|
private bool m_Enabled = false;
|
||||||
|
@ -128,23 +131,60 @@ namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.GridUser
|
||||||
|
|
||||||
public bool LoggedOut(string userID, UUID sessionID, UUID region, Vector3 position, Vector3 lookat)
|
public bool LoggedOut(string userID, UUID sessionID, UUID region, Vector3 position, Vector3 lookat)
|
||||||
{
|
{
|
||||||
|
if (m_Infos.Contains(userID))
|
||||||
|
m_Infos.Remove(userID);
|
||||||
|
|
||||||
return m_RemoteConnector.LoggedOut(userID, sessionID, region, position, lookat);
|
return m_RemoteConnector.LoggedOut(userID, sessionID, region, position, lookat);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
public bool SetHome(string userID, UUID regionID, Vector3 position, Vector3 lookAt)
|
public bool SetHome(string userID, UUID regionID, Vector3 position, Vector3 lookAt)
|
||||||
{
|
{
|
||||||
return m_RemoteConnector.SetHome(userID, regionID, position, lookAt);
|
if (m_RemoteConnector.SetHome(userID, regionID, position, lookAt))
|
||||||
|
{
|
||||||
|
// Update the cache too
|
||||||
|
GridUserInfo info = null;
|
||||||
|
if (m_Infos.TryGetValue(userID, out info))
|
||||||
|
{
|
||||||
|
info.HomeRegionID = regionID;
|
||||||
|
info.HomePosition = position;
|
||||||
|
info.HomeLookAt = lookAt;
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
public bool SetLastPosition(string userID, UUID sessionID, UUID regionID, Vector3 position, Vector3 lookAt)
|
public bool SetLastPosition(string userID, UUID sessionID, UUID regionID, Vector3 position, Vector3 lookAt)
|
||||||
{
|
{
|
||||||
return m_RemoteConnector.SetLastPosition(userID, sessionID, regionID, position, lookAt);
|
if (m_RemoteConnector.SetLastPosition(userID, sessionID, regionID, position, lookAt))
|
||||||
|
{
|
||||||
|
// Update the cache too
|
||||||
|
GridUserInfo info = null;
|
||||||
|
if (m_Infos.TryGetValue(userID, out info))
|
||||||
|
{
|
||||||
|
info.LastRegionID = regionID;
|
||||||
|
info.LastPosition = position;
|
||||||
|
info.LastLookAt = lookAt;
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
public GridUserInfo GetGridUserInfo(string userID)
|
public GridUserInfo GetGridUserInfo(string userID)
|
||||||
{
|
{
|
||||||
return m_RemoteConnector.GetGridUserInfo(userID);
|
GridUserInfo info = null;
|
||||||
|
if (m_Infos.TryGetValue(userID, out info))
|
||||||
|
return info;
|
||||||
|
|
||||||
|
info = m_RemoteConnector.GetGridUserInfo(userID);
|
||||||
|
|
||||||
|
m_Infos.AddOrUpdate(userID, info, KEEPTIME);
|
||||||
|
|
||||||
|
return info;
|
||||||
}
|
}
|
||||||
|
|
||||||
public GridUserInfo[] GetGridUserInfo(string[] userID)
|
public GridUserInfo[] GetGridUserInfo(string[] userID)
|
||||||
|
|
|
@ -50,6 +50,8 @@ namespace OpenSim.Services.Interfaces
|
||||||
public DateTime Login;
|
public DateTime Login;
|
||||||
public DateTime Logout;
|
public DateTime Logout;
|
||||||
|
|
||||||
|
public string TOS = string.Empty;
|
||||||
|
|
||||||
public GridUserInfo() {}
|
public GridUserInfo() {}
|
||||||
|
|
||||||
public GridUserInfo(Dictionary<string, object> kvp)
|
public GridUserInfo(Dictionary<string, object> kvp)
|
||||||
|
@ -78,6 +80,11 @@ namespace OpenSim.Services.Interfaces
|
||||||
if (kvp.ContainsKey("Online"))
|
if (kvp.ContainsKey("Online"))
|
||||||
Boolean.TryParse(kvp["Online"].ToString(), out Online);
|
Boolean.TryParse(kvp["Online"].ToString(), out Online);
|
||||||
|
|
||||||
|
if (kvp.ContainsKey("TOS"))
|
||||||
|
TOS = kvp["TOS"].ToString();
|
||||||
|
else
|
||||||
|
TOS = string.Empty;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public Dictionary<string, object> ToKeyValuePairs()
|
public Dictionary<string, object> ToKeyValuePairs()
|
||||||
|
@ -97,6 +104,7 @@ namespace OpenSim.Services.Interfaces
|
||||||
result["Login"] = Login.ToString();
|
result["Login"] = Login.ToString();
|
||||||
result["Logout"] = Logout.ToString();
|
result["Logout"] = Logout.ToString();
|
||||||
|
|
||||||
|
result["TOS"] = TOS;
|
||||||
|
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
|
@ -70,6 +70,8 @@ namespace OpenSim.Services.UserAccountService
|
||||||
info.Login = Util.ToDateTime(Convert.ToInt32(d.Data["Login"]));
|
info.Login = Util.ToDateTime(Convert.ToInt32(d.Data["Login"]));
|
||||||
info.Logout = Util.ToDateTime(Convert.ToInt32(d.Data["Logout"]));
|
info.Logout = Util.ToDateTime(Convert.ToInt32(d.Data["Logout"]));
|
||||||
|
|
||||||
|
info.TOS = d.Data["TOS"];
|
||||||
|
|
||||||
return info;
|
return info;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -917,6 +917,34 @@
|
||||||
;# {InitialTerrain} {} {Initial terrain type} {pinhead-island flat} pinhead-island
|
;# {InitialTerrain} {} {Initial terrain type} {pinhead-island flat} pinhead-island
|
||||||
; InitialTerrain = "pinhead-island"
|
; InitialTerrain = "pinhead-island"
|
||||||
|
|
||||||
|
[TOSModule]
|
||||||
|
;; Terms of Service module. It requires an external web script. Unless you
|
||||||
|
;; have that in place, don't enable this module.
|
||||||
|
|
||||||
|
;# {Enabled} {} {Enable TOS facilities} {true false} false
|
||||||
|
; Enabled = false
|
||||||
|
|
||||||
|
;; Should local users be shown the TOS on first login?
|
||||||
|
;# {ShowToLocalUsers} {} {Show TOS to local users} {true false} false
|
||||||
|
; ShowToLocalUsers = false
|
||||||
|
;; Should foreign users be shown the TOS on first HG login?
|
||||||
|
;# {ShowToForeignUsers} {} {Show TOS to foreign users} {true false} true
|
||||||
|
; ShowToForeignUsers = true
|
||||||
|
|
||||||
|
;; Tell the users what this is about
|
||||||
|
; Message = "Please read and agree to the Terms of Service"
|
||||||
|
|
||||||
|
;; How much time do the users have to accept the TOS before they get kicked out?
|
||||||
|
;; (in minutes)
|
||||||
|
; Timeout = 5
|
||||||
|
|
||||||
|
;; This page should have Accept/Decline links somewhere
|
||||||
|
;; that affect the GridUsers table. If you don't have such
|
||||||
|
;; script in place, don't use the TOSModule
|
||||||
|
;# {TOS_URL} {} {The URL for the TOS page} {}
|
||||||
|
TOS_URL = "http://mygrid.com/tos"
|
||||||
|
|
||||||
|
|
||||||
[Architecture]
|
[Architecture]
|
||||||
;# {Include-Architecture} {} {Choose one of the following architectures} {config-include/Standalone.ini config-include/StandaloneHypergrid.ini config-include/Grid.ini config-include/GridHypergrid.ini config-include/SimianGrid.ini config-include/HyperSimianGrid.ini} config-include/Standalone.ini
|
;# {Include-Architecture} {} {Choose one of the following architectures} {config-include/Standalone.ini config-include/StandaloneHypergrid.ini config-include/Grid.ini config-include/GridHypergrid.ini config-include/SimianGrid.ini config-include/HyperSimianGrid.ini} config-include/Standalone.ini
|
||||||
;; Uncomment one of the following includes as required. For instance, to create a standalone OpenSim,
|
;; Uncomment one of the following includes as required. For instance, to create a standalone OpenSim,
|
||||||
|
|
|
@ -1624,6 +1624,10 @@
|
||||||
[Terrain]
|
[Terrain]
|
||||||
InitialTerrain = "pinhead-island"
|
InitialTerrain = "pinhead-island"
|
||||||
|
|
||||||
|
[TOSModule]
|
||||||
|
;; Enable TOS facilities
|
||||||
|
Enabled = false
|
||||||
|
|
||||||
;;
|
;;
|
||||||
;; If you are using a simian grid frontend you can enable
|
;; If you are using a simian grid frontend you can enable
|
||||||
;; this module to upload tile images for the mapping fn
|
;; this module to upload tile images for the mapping fn
|
||||||
|
|
Loading…
Reference in New Issue