Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using System;
- using System.Collections;
- using System.Collections.Generic;
- using System.Reflection;
- using log4net;
- using Nini.Config;
- using Mono.Addins;
- using OpenMetaverse;
- using OpenMetaverse.StructuredData;
- using OpenSim.Framework;
- using OpenSim.Data;
- using OpenSim.Framework.Servers.HttpServer;
- using OpenSim.Region.Framework.Interfaces;
- using OpenSim.Region.Framework.Scenes;
- using Caps = OpenSim.Framework.Capabilities.Caps;
- namespace Quill.Framework
- {
- [Extension(Path = "/OpenSim/RegionModules", NodeName = "RegionModule")]
- public class AbuseReports : ISharedRegionModule
- {
- private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
- private bool m_enabled = true;
- private List<Scene> m_SceneList = new List<Scene>();
- public void Initialise(IConfigSource source)
- {
- IConfig cnf = source.Configs["AbuseReports"];
- if (cnf != null)
- m_enabled = cnf.GetBoolean("Enabled", true);
- }
- public void AddRegion(Scene scene)
- {
- if (!m_enabled)
- return;
- lock (m_SceneList)
- {
- if (!m_SceneList.Contains(scene))
- m_SceneList.Add(scene);
- }
- //scene.EventManager.OnMakeRootAgent += OnMakeRootAgent;
- //scene.EventManager.OnMakeChildAgent += OnMakeChildAgent;
- scene.EventManager.OnNewClient += OnNewClient;
- scene.EventManager.OnRegisterCaps += RegisterCaps;
- //scene.EventManager.OnClosingClient += OnClosingClient;
- }
- private void OnClosingClient(IClientAPI client)
- {
- client.OnUserReport -= UserReport;
- }
- public void RemoveRegion(Scene scene)
- {
- if (!m_enabled)
- return;
- lock (m_SceneList)
- {
- if (m_SceneList.Contains(scene))
- m_SceneList.Remove(scene);
- }
- scene.EventManager.OnNewClient -= OnNewClient;
- }
- public void RegionLoaded(Scene scene)
- {
- }
- public void PostInitialise()
- {
- }
- public Type ReplaceableInterface
- {
- get { return null; }
- }
- public string Name
- {
- get { return "AbuseReports"; }
- }
- public void Close()
- {
- }
- public bool IsSharedModule
- {
- get { return true; }
- }
- private void OnNewClient(IClientAPI client)
- {
- client.OnUserReport += UserReport;
- }
- private void UserReport(IClientAPI client, string regionName, UUID abuserID, byte catagory, byte checkflags, string details, UUID objectID, Vector3 position, byte reportType, UUID screenshotID, string summery, UUID reporter)
- {
- AbuseReport report = new AbuseReport();
- report.ObjectUUID = objectID;
- report.ObjectPosition = position.ToString();
- report.Active = true;
- report.Checked = false;
- report.Notes = "";
- report.AssignedTo = "No One";
- report.ScreenshotID = screenshotID;
- if (objectID != UUID.Zero)
- {
- SceneObjectPart Object = ((Scene)client.Scene).GetSceneObjectPart(objectID);
- report.ObjectName = Object.Name;
- }
- else
- report.ObjectName = "";
- string[] detailssplit = details.Split('\n');
- string AbuseDetails = detailssplit[detailssplit.Length - 1];
- report.AbuseDetails = AbuseDetails;
- report.ReporterName = client.Name;
- string[] findRegion = summery.Split('|');
- report.RegionName = findRegion[1];
- string[] findLocation = summery.Split('(');
- string[] findLocationend = findLocation[1].Split(')');
- report.AbuseLocation = findLocationend[0];
- string[] findCategory = summery.Split('[');
- string[] findCategoryend = findCategory[1].Split(']');
- report.Category = findCategoryend[0];
- string[] findAbuserName = summery.Split('{');
- string[] findAbuserNameend = findAbuserName[1].Split('}');
- report.AbuserName = findAbuserNameend[0];
- string[] findSummary = summery.Split('\"');
- string abuseSummary = findSummary[1];
- if (findSummary.Length != 0)
- {
- abuseSummary = findSummary[1];
- }
- report.Number = (-1);
- report.AbuseSummary = abuseSummary;
- m_log.Info(UUID.Zero +"qlittlefeather@gmail.com" + "Abuse Report" + "This abuse report was submitted by " +
- report.ReporterName + " against " + report.AbuserName + " at " + report.AbuseLocation + " in your region " + report.RegionName +
- ". Summary: " + report.AbuseSummary + ". Details: " + report.AbuseDetails + ".");
- EstateSettings ES = client.Scene.RegionInfo.EstateSettings;
- //If the abuse email is set up and the email module is available, send the email
- IEmailModule Email = m_SceneList[0].RequestModuleInterface<IEmailModule>();
- Email.SendEmail(UUID.Zero, "qlittlefeather@gmail.com", "Abuse Report", "This abuse report was submitted by " +
- report.ReporterName + " against " + report.AbuserName + " at " + report.AbuseLocation + " in your region " + report.RegionName +
- ". Summary: " + report.AbuseSummary + ". Details: " + report.AbuseDetails + ".");
- }
- private void RegisterCaps(UUID agentID, Caps caps)
- {
- UUID capuuid = UUID.Random();
- IRequestHandler SendUserReportWithScreenshot
- = new RestHTTPHandler(
- "POST", "/CAPS/" + capuuid + "/",
- delegate(Hashtable m_dhttpMethod)
- {
- return ProcessSendUserReportWithScreenshot(m_dhttpMethod, capuuid, agentID);
- });
- caps.RegisterHandler("SendUserReportWithScreenshot", SendUserReportWithScreenshot);
- }
- private Hashtable ProcessSendUserReportWithScreenshot(Hashtable m_dhttpMethod, UUID capuuid, UUID agentID)
- {
- ScenePresence SP = findScenePresence(agentID);
- string RegionName = (string)m_dhttpMethod["abuse-region-name"];
- UUID AbuserID = UUID.Parse((string)m_dhttpMethod["abuser-id"]);
- byte Category = byte.Parse((string)m_dhttpMethod["category"]);
- byte CheckFlags = byte.Parse((string)m_dhttpMethod["check-flags"]);
- string details = (string)m_dhttpMethod["details"];
- UUID objectID = UUID.Parse((string)m_dhttpMethod["object-id"]);
- Vector3 position = Vector3.Zero;
- byte ReportType = byte.Parse((string)m_dhttpMethod["report-type"]);
- UUID ScreenShotID = UUID.Parse((string)m_dhttpMethod["screenshot-id"]);
- string summary = (string)m_dhttpMethod["summary"];
- UserReport(SP.ControllingClient, RegionName, AbuserID, Category, CheckFlags,
- details, objectID, position, ReportType, ScreenShotID, summary, SP.UUID);
- return new Hashtable();
- }
- #region Helpers
- public ScenePresence findScenePresence(UUID agentID)
- {
- ScenePresence SP = null;
- foreach (Scene scene in m_SceneList)
- {
- SP = scene.GetScenePresence(agentID);
- if (SP != null)
- {
- return SP;
- }
- }
- return null;
- }
- #endregion
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement