Revise the message handler system, and partially the command system
This commit is contained in:
parent
57dcc685df
commit
59c62e62e2
19 changed files with 350 additions and 209 deletions
|
@ -6,7 +6,7 @@ using System.Reflection;
|
|||
[assembly: AssemblyCompany("ZNI")]
|
||||
[assembly: AssemblyAlgorithmId(System.Configuration.Assemblies.AssemblyHashAlgorithm.MD5)]
|
||||
[assembly: AssemblyCopyright("© 2020 Tara Piccari")]
|
||||
[assembly: AssemblyFileVersion("5.2.112")]
|
||||
[assembly: AssemblyFileVersion("5.3.091")]
|
||||
[assembly: AssemblyDescription("Second Life Bot - BotCore5")]
|
||||
|
||||
|
||||
|
@ -15,7 +15,7 @@ namespace Bot.Assemble
|
|||
public class ASMInfo
|
||||
{
|
||||
public static string BotName = "ZBotCore";
|
||||
public static string BotVer = "5.2.112";
|
||||
public static string BotVer = "5.3.091";
|
||||
public static string GitPassword
|
||||
{
|
||||
get
|
||||
|
|
|
@ -35,8 +35,6 @@ namespace Bot
|
|||
|
||||
public GridClient grid { get; set; }
|
||||
public Logger Logger { get; set; }
|
||||
public MessageHandler.MessageHandleEvent MHE;
|
||||
public MessageHandler MH;
|
||||
|
||||
public MainConfiguration ConfigurationHandle {
|
||||
get {
|
||||
|
@ -47,5 +45,6 @@ namespace Bot
|
|||
|
||||
public DateTime LaunchTime { get; set; } = DateTime.Now;
|
||||
public bool WaitForFiveMinutes = false;
|
||||
public MessageService MSGSVC { get; set; } = new MessageService();
|
||||
}
|
||||
}
|
||||
|
|
|
@ -6,7 +6,7 @@ using System.Text;
|
|||
|
||||
namespace Bot
|
||||
{
|
||||
public sealed class ChatLogger
|
||||
public sealed class ChatLogger : BaseCommands
|
||||
{
|
||||
private static readonly object writelock = new object();
|
||||
private static ChatLogger inst = null;
|
||||
|
@ -42,8 +42,8 @@ namespace Bot
|
|||
/// <param name="registry"></param>
|
||||
/// <param name="agentKey"></param>
|
||||
/// <param name="agentName"></param>
|
||||
[CommandGroup("log_chat", 5, 0, "log_chat - Toggles chat and IM logging", MessageHandler.Destinations.DEST_AGENT | MessageHandler.Destinations.DEST_LOCAL | MessageHandler.Destinations.DEST_CONSOLE_INFO)]
|
||||
public void toggleChatLog(UUID client, int level, GridClient grid, string[] additionalArgs, MessageHandler.MessageHandleEvent MHE, MessageHandler.Destinations source, CommandRegistry registry, UUID agentKey, string agentName)
|
||||
[CommandGroup("log_chat", 5, 0, "log_chat - Toggles chat and IM logging", Destinations.DEST_AGENT | Destinations.DEST_LOCAL )]
|
||||
public void toggleChatLog(UUID client, int level, string[] additionalArgs, Destinations source, UUID agentKey, string agentName)
|
||||
{
|
||||
MHE(source, client, "Toggling");
|
||||
|
||||
|
|
20
CommandSystem/BaseCommands.cs
Normal file
20
CommandSystem/BaseCommands.cs
Normal file
|
@ -0,0 +1,20 @@
|
|||
using OpenMetaverse;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Text;
|
||||
|
||||
namespace Bot.CommandSystem
|
||||
{
|
||||
public class BaseCommands
|
||||
{
|
||||
|
||||
public void MHE(Destinations dest, UUID client, string msg)
|
||||
{
|
||||
MessageFactory.Post(dest, msg, client);
|
||||
}
|
||||
public static void MH(Destinations dest, UUID client, string msg)
|
||||
{
|
||||
MessageFactory.Post(dest, msg, client);
|
||||
}
|
||||
}
|
||||
}
|
|
@ -10,7 +10,7 @@ using System.Text;
|
|||
|
||||
namespace Bot.CommandSystem
|
||||
{
|
||||
class BaseHooks
|
||||
class BaseHooks : BaseCommands
|
||||
{
|
||||
|
||||
[WebhookAttribs("/help")]
|
||||
|
@ -94,28 +94,27 @@ namespace Bot.CommandSystem
|
|||
|
||||
|
||||
|
||||
[CommandGroup("show_level", 0, 0, "This command shows your current auth level if any.", MessageHandler.Destinations.DEST_AGENT | MessageHandler.Destinations.DEST_LOCAL | MessageHandler.Destinations.DEST_GROUP)]
|
||||
[CommandGroup("show_level", 0, 0, "This command shows your current auth level if any.", Destinations.DEST_AGENT | Destinations.DEST_LOCAL | Destinations.DEST_GROUP)]
|
||||
public void show_level(UUID client, int level, GridClient grid, string[] additionalArgs,
|
||||
MessageHandler.MessageHandleEvent MHE, MessageHandler.Destinations source,
|
||||
CommandRegistry registry, UUID agentKey, string agentName)
|
||||
Destinations source,
|
||||
UUID agentKey, string agentName)
|
||||
{
|
||||
MHE(source, client, "Hi secondlife:///app/agent/" + agentKey.ToString() + "/about !! Your authorization level is " + level.ToString());
|
||||
}
|
||||
|
||||
[CommandGroup("show_version", 0, 0, "Outputs the bot version", MessageHandler.Destinations.DEST_AGENT | MessageHandler.Destinations.DEST_LOCAL)]
|
||||
public void show_version(UUID client, int level, GridClient grid, string[] additionalArgs,
|
||||
MessageHandler.MessageHandleEvent MHE, MessageHandler.Destinations source,
|
||||
CommandRegistry registry, UUID agentKey, string agentName)
|
||||
[CommandGroup("show_version", 0, 0, "Outputs the bot version", Destinations.DEST_AGENT | Destinations.DEST_LOCAL)]
|
||||
public void show_version(UUID client, int level, string[] additionalArgs,
|
||||
Destinations source,
|
||||
UUID agentKey, string agentName)
|
||||
{
|
||||
MHE(source, client, "Version " + ASMInfo.BotVer.ToString());
|
||||
}
|
||||
|
||||
|
||||
|
||||
[CommandGroup("show_admins", 4, 0, "Outputs all admin users", MessageHandler.Destinations.DEST_AGENT | MessageHandler.Destinations.DEST_LOCAL)]
|
||||
public void show_admins(UUID client, int level, GridClient grid, string[] additionalArgs,
|
||||
MessageHandler.MessageHandleEvent MHE, MessageHandler.Destinations source,
|
||||
CommandRegistry registry, UUID agentKey, string agentName)
|
||||
[CommandGroup("show_admins", 4, 0, "Outputs all admin users", Destinations.DEST_AGENT | Destinations.DEST_LOCAL)]
|
||||
public void show_admins(UUID client, int level, string[] additionalArgs, Destinations source,
|
||||
UUID agentKey, string agentName)
|
||||
{
|
||||
|
||||
for (int i = 0; i < MainConfiguration.Instance.BotAdmins.Count; i++)
|
||||
|
@ -125,16 +124,16 @@ namespace Bot.CommandSystem
|
|||
}
|
||||
|
||||
|
||||
[CommandGroup("terminate_bot", 5, 0, "", MessageHandler.Destinations.DEST_LOCAL | MessageHandler.Destinations.DEST_AGENT | MessageHandler.Destinations.DEST_CONSOLE_INFO | MessageHandler.Destinations.DEST_DISCORD)]
|
||||
public void PerformExit(UUID client, int level, GridClient grid, string[] additionalArgs, MessageHandler.MessageHandleEvent MHE, MessageHandler.Destinations source, CommandRegistry registry, UUID agentKey, string agentName)
|
||||
[CommandGroup("terminate_bot", 5, 0, "", Destinations.DEST_LOCAL | Destinations.DEST_AGENT | Destinations.DEST_DISCORD)]
|
||||
public void PerformExit(UUID client, int level, string[] additionalArgs, Destinations source, UUID agentKey, string agentName)
|
||||
{
|
||||
MHE(source, client, "Bot exit initiated.");
|
||||
MHE(MessageHandler.Destinations.DEST_ACTION, UUID.Zero, "{'type':'exit'}");
|
||||
BotSession.Instance.LaunchTime = new DateTime(); // zero out date time to force a relog
|
||||
}
|
||||
// !!help
|
||||
[CommandGroup("!help", 1, 0, "Prints the entire help registry", MessageHandler.Destinations.DEST_AGENT | MessageHandler.Destinations.DEST_LOCAL | MessageHandler.Destinations.DEST_GROUP | MessageHandler.Destinations.DEST_CONSOLE_INFO)]
|
||||
[CommandGroup("bot.help", 1, 0, "Alias to !help", MessageHandler.Destinations.DEST_AGENT | MessageHandler.Destinations.DEST_LOCAL | MessageHandler.Destinations.DEST_GROUP)]
|
||||
public void PrintAllHelp(UUID client, int level, GridClient grid, string[] additionalArgs, MessageHandler.MessageHandleEvent MHE, MessageHandler.Destinations source, CommandRegistry registry, UUID agentKey, string agentName)
|
||||
[CommandGroup("!help", 1, 0, "Prints the entire help registry", Destinations.DEST_AGENT |Destinations.DEST_LOCAL | Destinations.DEST_GROUP)]
|
||||
[CommandGroup("bot.help", 1, 0, "Alias to !help", Destinations.DEST_AGENT | Destinations.DEST_LOCAL | Destinations.DEST_GROUP)]
|
||||
public void PrintAllHelp(UUID client, int level, string[] additionalArgs, Destinations source, UUID agentKey, string agentName)
|
||||
{
|
||||
if (MainConfiguration.Instance.UseSSL)
|
||||
MHE(source, client, $"All commands viewable at: https://{MainConfiguration.Instance.WebServerIP}:{MainConfiguration.Instance.WebServerPort}/help");
|
||||
|
@ -142,10 +141,10 @@ namespace Bot.CommandSystem
|
|||
MHE(source, client, $"All commands viewable at: http://{MainConfiguration.Instance.WebServerIP}:{MainConfiguration.Instance.WebServerPort}/help");
|
||||
}
|
||||
// !help "command"
|
||||
[CommandGroup("help", 0, 1, "Prints help for one command", MessageHandler.Destinations.DEST_AGENT | MessageHandler.Destinations.DEST_LOCAL | MessageHandler.Destinations.DEST_GROUP | MessageHandler.Destinations.DEST_CONSOLE_INFO)]
|
||||
public void PrintHelp(UUID client, int level, GridClient grid, string[] additionalArgs, MessageHandler.MessageHandleEvent MHE, MessageHandler.Destinations source, CommandRegistry registry, UUID agentKey, string agentName)
|
||||
[CommandGroup("help", 0, 1, "Prints help for one command", Destinations.DEST_AGENT | Destinations.DEST_LOCAL | Destinations.DEST_GROUP )]
|
||||
public void PrintHelp(UUID client, int level, string[] additionalArgs, Destinations source, UUID agentKey, string agentName)
|
||||
{
|
||||
registry.PrintHelp(source, additionalArgs[0], client);
|
||||
CommandRegistry.Instance.PrintHelp(source, additionalArgs[0], client);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -13,9 +13,9 @@ namespace Bot.CommandSystem
|
|||
public MethodInfo AssignedMethod;
|
||||
public int arguments = 0;
|
||||
public CommandHelp cmdUsage;
|
||||
public MessageHandler.Destinations CommandSource;
|
||||
public Destinations CommandSource;
|
||||
|
||||
public CommandGroup(string Command, int minLevel, int argCount, string HelpText, MessageHandler.Destinations SourceType)
|
||||
public CommandGroup(string Command, int minLevel, int argCount, string HelpText, Destinations SourceType)
|
||||
{
|
||||
this.Command = Command;
|
||||
this.minLevel = minLevel;
|
||||
|
|
|
@ -16,7 +16,7 @@ namespace Bot.CommandSystem
|
|||
|
||||
public bool hasGroupFlag()
|
||||
{
|
||||
if ((h.dests_allowed & MessageHandler.Destinations.DEST_GROUP) == MessageHandler.Destinations.DEST_GROUP) return true;
|
||||
if ((h.dests_allowed & Destinations.DEST_GROUP) == Destinations.DEST_GROUP) return true;
|
||||
else return false;
|
||||
}
|
||||
|
||||
|
@ -28,7 +28,7 @@ namespace Bot.CommandSystem
|
|||
public int args;
|
||||
public string Text;
|
||||
public string sources;
|
||||
public MessageHandler.Destinations dests_allowed;
|
||||
public Destinations dests_allowed;
|
||||
}
|
||||
public string GetUsage()
|
||||
{
|
||||
|
@ -39,14 +39,14 @@ namespace Bot.CommandSystem
|
|||
{
|
||||
return "Usage: " + h.Text;
|
||||
}
|
||||
public CommandHelp(string CmdName, int minLevel, int argCount, string HelpText, MessageHandler.Destinations DESTS)
|
||||
public CommandHelp(string CmdName, int minLevel, int argCount, string HelpText, Destinations DESTS)
|
||||
{
|
||||
h = new Help();
|
||||
string Applicable = "Command can be used in [";
|
||||
if ((DESTS & MessageHandler.Destinations.DEST_LOCAL) == MessageHandler.Destinations.DEST_LOCAL) Applicable += "Local, ";
|
||||
if ((DESTS & MessageHandler.Destinations.DEST_AGENT) == MessageHandler.Destinations.DEST_AGENT) Applicable += "IM, ";
|
||||
if ((DESTS & MessageHandler.Destinations.DEST_GROUP) == MessageHandler.Destinations.DEST_GROUP) Applicable += "Group, ";
|
||||
if ((DESTS & MessageHandler.Destinations.DEST_DISCORD) == MessageHandler.Destinations.DEST_DISCORD) Applicable += "Discord, ";
|
||||
if ((DESTS & Destinations.DEST_LOCAL) == Destinations.DEST_LOCAL) Applicable += "Local, ";
|
||||
if ((DESTS & Destinations.DEST_AGENT) == Destinations.DEST_AGENT) Applicable += "IM, ";
|
||||
if ((DESTS & Destinations.DEST_GROUP) == Destinations.DEST_GROUP) Applicable += "Group, ";
|
||||
if ((DESTS & Destinations.DEST_DISCORD) == Destinations.DEST_DISCORD) Applicable += "Discord, ";
|
||||
|
||||
if (Applicable.Substring(Applicable.Length - 1, 1) == " ") Applicable = Applicable.Substring(0, Applicable.Length - 2) + "]";
|
||||
|
||||
|
|
|
@ -22,9 +22,9 @@ namespace Bot.CommandSystem
|
|||
public GridClient cl;
|
||||
public Logger Log = BotSession.Instance.Logger;
|
||||
public string newReply;
|
||||
public unsafe bool RunChatCommand(string cmdData, GridClient client, MessageHandler.MessageHandleEvent MHE, CommandRegistry registry)
|
||||
public unsafe bool RunChatCommand(string cmdData)
|
||||
{
|
||||
register = registry;
|
||||
register = CommandRegistry.Instance;
|
||||
Dictionary<UUID, int> BotAdmins = MainConfiguration.Instance.BotAdmins;
|
||||
dynamic parameters = JsonConvert.DeserializeObject(cmdData);
|
||||
string request = parameters.request;
|
||||
|
@ -55,46 +55,41 @@ namespace Bot.CommandSystem
|
|||
}
|
||||
|
||||
|
||||
cl = client;
|
||||
cl = BotSession.Instance.grid;
|
||||
|
||||
MessageHandler.Destinations sourceLoc = new MessageHandler.Destinations();
|
||||
if (parameters.type == "chat") sourceLoc = MessageHandler.Destinations.DEST_LOCAL;
|
||||
else if (parameters.type == "group") sourceLoc = MessageHandler.Destinations.DEST_GROUP;
|
||||
else if (parameters.type == "im") sourceLoc = MessageHandler.Destinations.DEST_AGENT;
|
||||
else if (parameters.type == "console")
|
||||
{
|
||||
userLevel = 5000;
|
||||
sourceLoc = MessageHandler.Destinations.DEST_CONSOLE_INFO;
|
||||
}
|
||||
else sourceLoc = MessageHandler.Destinations.DEST_LOCAL;
|
||||
Destinations sourceLoc = new Destinations();
|
||||
if (parameters.type == "chat") sourceLoc = Destinations.DEST_LOCAL;
|
||||
else if (parameters.type == "group") sourceLoc = Destinations.DEST_GROUP;
|
||||
else if (parameters.type == "im") sourceLoc = Destinations.DEST_AGENT;
|
||||
else sourceLoc = Destinations.DEST_LOCAL;
|
||||
|
||||
string agentName = parameters.fromName;
|
||||
if(sourceLoc == MessageHandler.Destinations.DEST_LOCAL)
|
||||
if(sourceLoc == Destinations.DEST_LOCAL)
|
||||
{
|
||||
GroupLog.Instance.WriteLogEntry(true, false, agentName, agentKey, request);
|
||||
}else if (sourceLoc == MessageHandler.Destinations.DEST_AGENT)
|
||||
}else if (sourceLoc == Destinations.DEST_AGENT)
|
||||
{
|
||||
GroupLog.Instance.WriteLogEntry(false, true, agentName, agentKey, request);
|
||||
}
|
||||
|
||||
|
||||
if (sourceLoc == MessageHandler.Destinations.DEST_GROUP)
|
||||
if (sourceLoc == Destinations.DEST_GROUP)
|
||||
{
|
||||
agentKey = fromID;
|
||||
fromID = sessID;
|
||||
|
||||
// Initiate group log saver
|
||||
string GroupName = client.Groups.GroupName2KeyCache[fromID];
|
||||
string GroupName = cl.Groups.GroupName2KeyCache[fromID];
|
||||
|
||||
GroupLog.Instance.WriteLogEntry(GroupName, "secondlife:///app/agent/" + agentKey.ToString() + "/about (" + agentName + ") : " + request);
|
||||
|
||||
|
||||
if (agentKey == client.Self.AgentID) return false;
|
||||
if (agentKey == cl.Self.AgentID) return false;
|
||||
}
|
||||
else {
|
||||
agentKey = fromID;
|
||||
|
||||
if (agentKey == client.Self.AgentID) return false;
|
||||
if (agentKey == cl.Self.AgentID) return false;
|
||||
}
|
||||
|
||||
if (request.Substring(0, 1) != "!")
|
||||
|
@ -155,7 +150,7 @@ namespace Bot.CommandSystem
|
|||
try
|
||||
{
|
||||
|
||||
register.RunCommand(request, fromID, userLevel, MHE, sourceLoc, agentKey, agentName);
|
||||
register.RunCommand(request, fromID, userLevel, sourceLoc, agentKey, agentName);
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
|
@ -164,17 +159,17 @@ namespace Bot.CommandSystem
|
|||
int i;
|
||||
int* ptr = &i;
|
||||
IntPtr addr = (IntPtr)ptr;
|
||||
MHE(MessageHandler.Destinations.DEST_LOCAL, UUID.Zero, "Exception caught: [" + Msg + "]\n \n[STACK] " + e.StackTrace.Replace("ZNI", "")+"\nMemory Position: 0x"+addr.ToString("x")+"\nCommand: "+request+$"\nMisc Details: {fromID}, {userLevel}, {sourceLoc}, {agentKey}, {agentName}");
|
||||
MessageFactory.Post(Destinations.DEST_LOCAL, "Exception caught: [" + Msg + "]\n \n[STACK] " + e.StackTrace.Replace("ZNI", "") + "\nMemory Position: 0x" + addr.ToString("x") + "\nCommand: " + request + $"\nMisc Details: {fromID}, {userLevel}, {sourceLoc}, {agentKey}, {agentName}", UUID.Zero);
|
||||
|
||||
// do nothing here.
|
||||
}
|
||||
Log.info(log:"Leaving command parser");
|
||||
return false;
|
||||
}
|
||||
|
||||
public CommandManager(Logger _Log, GridClient cl, MessageHandler.MessageHandleEvent MHE)
|
||||
public CommandManager()
|
||||
{
|
||||
this.cl = cl;
|
||||
Log = _Log;
|
||||
Log = BotSession.Instance.Logger;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -37,7 +37,6 @@ namespace Bot.CommandSystem
|
|||
_instance.client = bs.grid;
|
||||
_instance.config = bs.ConfigurationHandle;
|
||||
_instance.Log = bs.Logger;
|
||||
_instance.MHEx = bs.MHE;
|
||||
_instance.LocateCommands();
|
||||
}
|
||||
return _instance;
|
||||
|
@ -59,7 +58,6 @@ namespace Bot.CommandSystem
|
|||
public GridClient client;
|
||||
public Logger Log;
|
||||
public IConfig config;
|
||||
public MessageHandler.MessageHandleEvent MHEx;
|
||||
public void LocateCommands()
|
||||
{
|
||||
try
|
||||
|
@ -127,16 +125,17 @@ namespace Bot.CommandSystem
|
|||
}
|
||||
catch (ReflectionTypeLoadException e)
|
||||
{
|
||||
MHEx(MessageHandler.Destinations.DEST_LOCAL, UUID.Zero, "FAILURE!!!\n \n[Assembly load failure]");
|
||||
MessageFactory.Post(Destinations.DEST_LOCAL, "FAILURE!!!\n\n[Assembly load failure]", UUID.Zero);
|
||||
foreach (Exception X in e.LoaderExceptions)
|
||||
{
|
||||
MHEx(MessageHandler.Destinations.DEST_LOCAL, UUID.Zero, X.Message + "\n \nSTACK: " + X.StackTrace);
|
||||
MessageFactory.Post(Destinations.DEST_LOCAL, X.Message + "\n \nSTACK: " + X.StackTrace, UUID.Zero);
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
public void PrintHelpAll(MessageHandler.Destinations dest, UUID uid)
|
||||
public void PrintHelpAll(Destinations dest, UUID uid)
|
||||
{
|
||||
|
||||
for (int i = 0; i < Cmds.Count; i++)
|
||||
|
@ -146,7 +145,7 @@ namespace Bot.CommandSystem
|
|||
KeyValuePair<string, CommandGroup> kvp = Cmds.ElementAt(i);
|
||||
|
||||
CommandHelp HE = kvp.Value.cmdUsage;
|
||||
if (dest == MessageHandler.Destinations.DEST_GROUP)
|
||||
if (dest == Destinations.DEST_GROUP)
|
||||
{
|
||||
if (!HE.hasGroupFlag())
|
||||
{
|
||||
|
@ -154,13 +153,14 @@ namespace Bot.CommandSystem
|
|||
}
|
||||
else
|
||||
{
|
||||
MHEx(dest, uid, HE.GetUsage());
|
||||
MessageFactory.Post(dest, HE.GetUsage(), uid);
|
||||
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
MessageFactory.Post(dest, HE.GetUsage(), uid);
|
||||
|
||||
MHEx(dest, uid, HE.GetUsage());
|
||||
}
|
||||
|
||||
// MHEx(dest, uid, kvp.Value.cmdUsage.GetUsage());
|
||||
|
@ -168,30 +168,31 @@ namespace Bot.CommandSystem
|
|||
}
|
||||
}
|
||||
|
||||
public void PrintHelp(MessageHandler.Destinations dest, string cmd, UUID uid)
|
||||
public void PrintHelp(Destinations dest, string cmd, UUID uid)
|
||||
{
|
||||
try
|
||||
{
|
||||
|
||||
CommandHelp HE = Cmds[cmd].cmdUsage;
|
||||
if (dest == MessageHandler.Destinations.DEST_GROUP)
|
||||
if (dest == Destinations.DEST_GROUP)
|
||||
{
|
||||
if (!HE.hasGroupFlag())
|
||||
{
|
||||
//return; // DO NOT SCHEDULE THIS HELP INFO FOR GROUP!!!
|
||||
}
|
||||
}
|
||||
MHEx(dest, uid, Cmds[cmd].cmdUsage.GetUsage());
|
||||
MessageFactory.Post(dest, Cmds[cmd].cmdUsage.GetUsage(), uid);
|
||||
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
MHEx(dest, uid, "Error: Unrecognized command");
|
||||
MessageFactory.Post(dest, "Error: Unknown command", uid);
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
public void RunCommand(string cmdString, UUID user, int level, MessageHandler.MessageHandleEvent MHE, MessageHandler.Destinations source, UUID agentKey, string agentName)
|
||||
public void RunCommand(string cmdString, UUID user, int level, Destinations source, UUID agentKey, string agentName)
|
||||
{
|
||||
MHEx = MHE;
|
||||
int pos = 0;
|
||||
string[] cmdStruct = cmdString.Split(' ');
|
||||
int IgnoreCount = 0;
|
||||
|
@ -213,11 +214,11 @@ namespace Bot.CommandSystem
|
|||
{
|
||||
// Check that the destination is allowed.
|
||||
// If not then skip this command entirely
|
||||
MessageHandler.Destinations dests = cgX.CommandSource;
|
||||
Destinations dests = cgX.CommandSource;
|
||||
bool Allowed = false;
|
||||
if ((dests & MessageHandler.Destinations.DEST_AGENT) == source) Allowed = true;
|
||||
if ((dests & MessageHandler.Destinations.DEST_GROUP) == source) Allowed = true;
|
||||
if ((dests & MessageHandler.Destinations.DEST_LOCAL) == source) Allowed = true;
|
||||
if ((dests & Destinations.DEST_AGENT) == source) Allowed = true;
|
||||
if ((dests & Destinations.DEST_GROUP) == source) Allowed = true;
|
||||
if ((dests & Destinations.DEST_LOCAL) == source) Allowed = true;
|
||||
|
||||
if (!Allowed)
|
||||
{
|
||||
|
@ -235,10 +236,10 @@ namespace Bot.CommandSystem
|
|||
additionalArgs[i - 1] = cmdStruct[pos + i];
|
||||
}
|
||||
pos++;
|
||||
//(UUID client, int level, GridClient grid, string[] additionalArgs,
|
||||
//MessageHandler.MessageHandleEvent MHE, MessageHandler.Destinations source,
|
||||
//CommandRegistry registry, UUID agentKey, string agentName)
|
||||
Thread CommandThread = new Thread(() => cgX.AssignedMethod.Invoke(ovj, new object[] { user, level, client, additionalArgs, MHE, source, this, agentKey, agentName }));
|
||||
//(UUID client, int level, string[] additionalArgs,
|
||||
//Destinations source,
|
||||
//UUID agentKey, string agentName)
|
||||
Thread CommandThread = new Thread(() => cgX.AssignedMethod.Invoke(ovj, new object[] { user, level, additionalArgs, source, agentKey, agentName }));
|
||||
CommandThread.Start();
|
||||
}
|
||||
}
|
||||
|
|
10
GroupLog.cs
10
GroupLog.cs
|
@ -9,7 +9,7 @@ using System.Collections.Specialized;
|
|||
|
||||
namespace Bot
|
||||
{
|
||||
public sealed class GroupLog
|
||||
public sealed class GroupLog : BaseCommands
|
||||
{
|
||||
|
||||
private static readonly object _lock = new object();
|
||||
|
@ -80,10 +80,10 @@ namespace Bot
|
|||
|
||||
private static readonly object _fileRead = new object();
|
||||
[CommandGroupMaster("Logging")]
|
||||
[CommandGroup("search_log", 5, 2, "search_log [groupName] [search_term] - Searches for the search term in all logs relating to the group name (Use a underscore to show where spaces are!). The search term may also include the pipe (|) delimiter to include more than 1 word.", Bot.MessageHandler.Destinations.DEST_AGENT | Bot.MessageHandler.Destinations.DEST_LOCAL | MessageHandler.Destinations.DEST_GROUP | MessageHandler.Destinations.DEST_DISCORD)]
|
||||
public void search_log(UUID client, int level, GridClient grid, string[] additionalArgs,
|
||||
MessageHandler.MessageHandleEvent MHE, MessageHandler.Destinations source,
|
||||
CommandRegistry registry, UUID agentKey, string agentName)
|
||||
[CommandGroup("search_log", 5, 2, "search_log [groupName] [search_term] - Searches for the search term in all logs relating to the group name (Use a underscore to show where spaces are!). The search term may also include the pipe (|) delimiter to include more than 1 word.", Destinations.DEST_AGENT | Destinations.DEST_LOCAL | Destinations.DEST_GROUP | Destinations.DEST_DISCORD)]
|
||||
public void search_log(UUID client, int level, string[] additionalArgs,
|
||||
Destinations source,
|
||||
UUID agentKey, string agentName)
|
||||
{
|
||||
string GrpName = additionalArgs[0].Replace('_', ' ');
|
||||
string[] search = additionalArgs[1].Split('|');
|
||||
|
|
|
@ -9,7 +9,7 @@ namespace Bot
|
|||
{
|
||||
public interface IProgram
|
||||
{
|
||||
void run(GridClient client, MessageHandler MH, CommandSystem.CommandRegistry registry); // Define the run command since a thread needs a entry point
|
||||
void run(); // Define the run command since a thread needs a entry point
|
||||
|
||||
string getTick(); // Run every second to check for queued data. If queue exists, then it will be returned as a JSON string.
|
||||
// getTick can reply with data for the serializer for instance.
|
||||
|
|
|
@ -13,13 +13,13 @@ using Bot.CommandSystem;
|
|||
|
||||
namespace Bot
|
||||
{
|
||||
class Auth
|
||||
class Auth : BaseCommands
|
||||
{
|
||||
|
||||
[CommandGroup("auth_user", 5, 2, "Authorizes a user to have command access. Arguments are user (UUID), and Level (int)", MessageHandler.Destinations.DEST_AGENT | MessageHandler.Destinations.DEST_LOCAL)]
|
||||
public void set_auth(UUID client, int level, GridClient grid, string[] additionalArgs,
|
||||
MessageHandler.MessageHandleEvent MHE, MessageHandler.Destinations source,
|
||||
CommandRegistry registry, UUID agentKey, string agentName)
|
||||
[CommandGroup("auth_user", 5, 2, "Authorizes a user to have command access. Arguments are user (UUID), and Level (int)", Destinations.DEST_AGENT | Destinations.DEST_LOCAL)]
|
||||
public void set_auth(UUID client, int level, string[] additionalArgs,
|
||||
Destinations source,
|
||||
UUID agentKey, string agentName)
|
||||
{
|
||||
MainConfiguration mem = MainConfiguration.Instance;
|
||||
BotSession.Instance.Logger.info(log:"Existing Admins: " + mem.BotAdmins.Count.ToString());
|
||||
|
@ -36,8 +36,8 @@ namespace Bot
|
|||
if (NewLevel <= 0)
|
||||
{
|
||||
mem.BotAdmins.Remove(user);
|
||||
MHE(MessageHandler.Destinations.DEST_AGENT, user, "Your access to the main bot has been removed. You will still have access to any command that does not require a access level higher than 0");
|
||||
MHE(MessageHandler.Destinations.DEST_LOCAL, UUID.Zero, "Access Removed");
|
||||
MHE(Destinations.DEST_AGENT, user, "Your access to the main bot has been removed. You will still have access to any command that does not require a access level higher than 0");
|
||||
MHE(Destinations.DEST_LOCAL, UUID.Zero, "Access Removed");
|
||||
mem.Save();
|
||||
return;
|
||||
}
|
||||
|
@ -53,7 +53,7 @@ namespace Bot
|
|||
mem.BotAdmins.Add(user, NewLevel);
|
||||
else
|
||||
mem.BotAdmins[user] = NewLevel;
|
||||
MHE(MessageHandler.Destinations.DEST_AGENT, user, "You have been granted authorization level " + NewLevel.ToString());
|
||||
MHE(Destinations.DEST_AGENT, user, "You have been granted authorization level " + NewLevel.ToString());
|
||||
MHE(source, UUID.Zero, "Authorized");
|
||||
mem.Save();
|
||||
|
||||
|
|
|
@ -11,7 +11,178 @@ using System.Threading;
|
|||
|
||||
namespace Bot
|
||||
{
|
||||
public class MessageHandler
|
||||
/// <summary>
|
||||
/// Message stuff!
|
||||
/// </summary>
|
||||
[Flags]
|
||||
public enum Destinations
|
||||
{
|
||||
DEST_AGENT = 1,
|
||||
DEST_GROUP = 2,
|
||||
DEST_LOCAL = 4,
|
||||
//DEST_CONSOLE_INFO = 8,
|
||||
//DEST_ACTION = 16, // DEPRECATED
|
||||
DEST_DISCORD = 32
|
||||
};
|
||||
/// <summary>
|
||||
/// Message stuffs
|
||||
/// </summary>
|
||||
public abstract class Message
|
||||
{
|
||||
public abstract Destinations GetMessageSource();
|
||||
public abstract string GetMessage();
|
||||
public abstract UUID GetSender();
|
||||
public abstract UUID GetTarget();
|
||||
public abstract string GetSenderName();
|
||||
public abstract int GetChannel();
|
||||
internal abstract void set(Destinations dest, string msg, UUID agentID,string senderName, int channel);
|
||||
}
|
||||
/// <summary>
|
||||
/// IM, local, whatever
|
||||
/// </summary>
|
||||
public class ChatMessage : Message
|
||||
{
|
||||
private string Msg;
|
||||
private Destinations dest;
|
||||
private UUID sender;
|
||||
private UUID target;
|
||||
private string senderName;
|
||||
private int Chn;
|
||||
|
||||
public override UUID GetTarget()
|
||||
{
|
||||
return target;
|
||||
}
|
||||
|
||||
public override int GetChannel()
|
||||
{
|
||||
return Chn;
|
||||
}
|
||||
|
||||
public override string GetMessage()
|
||||
{
|
||||
return Msg;
|
||||
}
|
||||
|
||||
public override Destinations GetMessageSource()
|
||||
{
|
||||
return dest;
|
||||
}
|
||||
|
||||
public override UUID GetSender()
|
||||
{
|
||||
return sender;
|
||||
}
|
||||
|
||||
public override string GetSenderName()
|
||||
{
|
||||
return senderName;
|
||||
}
|
||||
|
||||
internal override void set(Destinations dest, string msg, UUID agentID,string senderName, int channel)
|
||||
{
|
||||
this.dest = dest;
|
||||
Msg = msg;
|
||||
sender = agentID;
|
||||
this.senderName = senderName;
|
||||
Chn = channel;
|
||||
}
|
||||
|
||||
public ChatMessage(UUID targetID)
|
||||
{
|
||||
target = targetID;
|
||||
}
|
||||
}
|
||||
/// <summary>
|
||||
/// Includes methods specific to the Group
|
||||
/// </summary>
|
||||
public class GroupMessage : ChatMessage
|
||||
{
|
||||
private UUID GroupID;
|
||||
private string groupName;
|
||||
public UUID GetGroupID()
|
||||
{
|
||||
return GroupID;
|
||||
}
|
||||
public string GetGroupName()
|
||||
{
|
||||
return groupName;
|
||||
}
|
||||
public GroupMessage(UUID ID) : base(ID)
|
||||
{
|
||||
GroupID = ID;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
public class MessageFactory
|
||||
{
|
||||
|
||||
public static void Post(Destinations dest, string Msg, UUID destID, int chn = 0)
|
||||
{
|
||||
|
||||
Message m = null;
|
||||
|
||||
switch (dest)
|
||||
{
|
||||
case Destinations.DEST_GROUP:
|
||||
m = new GroupMessage(destID);
|
||||
break;
|
||||
case Destinations.DEST_DISCORD:
|
||||
m = new ChatMessage(UUID.Zero);
|
||||
break;
|
||||
default:
|
||||
m = new ChatMessage(destID);
|
||||
break;
|
||||
}
|
||||
|
||||
m.set(dest, Msg, BotSession.Instance.grid.Self.AgentID, BotSession.Instance.grid.Self.Name, chn);
|
||||
|
||||
MessageService.Dispatch(m);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// Basic messaging factory
|
||||
/// </summary>
|
||||
public class MessageService
|
||||
{
|
||||
public MessageService()
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
public static void Dispatch(Message M)
|
||||
{
|
||||
MessageEventArgs MEA = new MessageEventArgs();
|
||||
MEA.Timestamp = DateTime.Now;
|
||||
MEA.Msg = M;
|
||||
|
||||
BotSession.Instance.MSGSVC.OnMessageEvent(MEA);
|
||||
}
|
||||
|
||||
protected virtual void OnMessageEvent(MessageEventArgs e)
|
||||
{
|
||||
EventHandler<MessageEventArgs> handler = MessageEvent;
|
||||
if (handler != null)
|
||||
{
|
||||
handler(this, e);
|
||||
}
|
||||
}
|
||||
public event EventHandler<MessageEventArgs> MessageEvent;
|
||||
}
|
||||
|
||||
|
||||
public class MessageEventArgs : EventArgs
|
||||
{
|
||||
public DateTime Timestamp { get; set; }
|
||||
public Message Msg { get; set; }
|
||||
}
|
||||
|
||||
|
||||
|
||||
public class MessageHandler_old // keep the old structure for now
|
||||
{
|
||||
private List<MessageQueuePacket> MSGQueue = new List<MessageQueuePacket>();
|
||||
private List<ActionPacket> ActionQueue = new List<ActionPacket>();
|
||||
|
@ -20,17 +191,6 @@ namespace Bot
|
|||
private Logger Log = BotSession.Instance.Logger;
|
||||
|
||||
|
||||
[Flags]
|
||||
public enum Destinations
|
||||
{
|
||||
DEST_AGENT = 1,
|
||||
DEST_GROUP = 2,
|
||||
DEST_LOCAL = 4,
|
||||
DEST_CONSOLE_INFO = 8,
|
||||
DEST_ACTION = 16,
|
||||
DEST_DISCORD = 32
|
||||
};
|
||||
|
||||
public struct MessageQueuePacket
|
||||
{
|
||||
public Destinations Dest;
|
||||
|
@ -50,24 +210,11 @@ namespace Bot
|
|||
public string Action;
|
||||
}
|
||||
|
||||
public delegate void MessageHandleEvent(MessageHandler.Destinations DType, UUID AgentOrSession, string MSG, int channel = 0);
|
||||
public delegate void MessageHandleEvent(Destinations DType, UUID AgentOrSession, string MSG, int channel = 0);
|
||||
public volatile MessageHandleEvent callbacks;
|
||||
public void MessageHandle(Destinations DType, UUID AgentOrSession, string MSG, int channel = 0)
|
||||
{
|
||||
if (DType == Destinations.DEST_ACTION)
|
||||
{
|
||||
if (MSG == "RESET_QUEUE")
|
||||
{
|
||||
ClearQueues();
|
||||
return;
|
||||
}
|
||||
ActionPacket PKT = new ActionPacket();
|
||||
PKT.Dest = DType;
|
||||
PKT.ActionStr = MSG;
|
||||
ActionQueue.Add(PKT);
|
||||
return;
|
||||
}
|
||||
else if (DType == Destinations.DEST_DISCORD)
|
||||
if (DType == Destinations.DEST_DISCORD)
|
||||
{
|
||||
DiscordAction DA = new DiscordAction();
|
||||
DA.Action = MSG;
|
||||
|
@ -101,10 +248,6 @@ namespace Bot
|
|||
{
|
||||
client.Self.InstantMessage(pkt.DestID, "[" + MSGQueue.Count.ToString() + "] " + pkt.Msg);
|
||||
}
|
||||
else if (pkt.Dest == Destinations.DEST_CONSOLE_INFO)
|
||||
{
|
||||
Log.info(Restore:true, "[" + MSGQueue.Count.ToString() + "] " + pkt.Msg);
|
||||
}
|
||||
else if (pkt.Dest == Destinations.DEST_GROUP)
|
||||
{
|
||||
if (client.Self.GroupChatSessions.ContainsKey(pkt.DestID))
|
||||
|
|
|
@ -10,7 +10,7 @@ namespace Bot.NonCommands
|
|||
/// <summary>
|
||||
/// Defaults to all except action
|
||||
/// </summary>
|
||||
public MessageHandler.Destinations SourceType = MessageHandler.Destinations.DEST_AGENT | MessageHandler.Destinations.DEST_CONSOLE_INFO | MessageHandler.Destinations.DEST_DISCORD | MessageHandler.Destinations.DEST_GROUP | MessageHandler.Destinations.DEST_LOCAL;
|
||||
public Destinations SourceType = Destinations.DEST_AGENT | Destinations.DEST_DISCORD | Destinations.DEST_GROUP | Destinations.DEST_LOCAL;
|
||||
public NotCommand()
|
||||
{
|
||||
// Not Command, this just marks a class
|
||||
|
|
|
@ -9,6 +9,6 @@ namespace Bot.NonCommands
|
|||
{
|
||||
public interface nCMD
|
||||
{
|
||||
public void handle(string text, UUID User, string agentName, MessageHandler.Destinations src, UUID originator);
|
||||
public void handle(string text, UUID User, string agentName, Destinations src, UUID originator);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -10,7 +10,7 @@ namespace Bot.NonCommands
|
|||
{
|
||||
public class nRegistry
|
||||
{
|
||||
public static void Dispatch(string request, UUID agentKey, string agentName, MessageHandler.Destinations sourceLoc, UUID originator)
|
||||
public static void Dispatch(string request, UUID agentKey, string agentName, Destinations sourceLoc, UUID originator)
|
||||
{
|
||||
|
||||
foreach(Assembly a in AppDomain.CurrentDomain.GetAssemblies())
|
||||
|
|
124
Program.cs
124
Program.cs
|
@ -16,7 +16,7 @@ using System.Reflection;
|
|||
|
||||
namespace Bot
|
||||
{
|
||||
public class Program
|
||||
public class Program : BaseCommands
|
||||
{
|
||||
public static Logger Log;
|
||||
public static string BotVer = ASMInfo.BotVer;
|
||||
|
@ -25,7 +25,6 @@ namespace Bot
|
|||
public static SerialManager SM = new SerialManager();
|
||||
public static GridClient client = new GridClient();
|
||||
public static bool g_iIsRunning = true;
|
||||
public static MessageHandler MH;
|
||||
public static CommandRegistry registry;
|
||||
public static List<IProgram> g_ZPrograms = new List<IProgram>();
|
||||
public static CommandManager CM = null;
|
||||
|
@ -33,16 +32,16 @@ namespace Bot
|
|||
static readonly object _CacheLock = new object();
|
||||
//public static License LicenseKey; // Not to be used yet
|
||||
|
||||
public static void msg(MessageHandler.Destinations D, UUID x, string m)
|
||||
public static void msg(Destinations D, UUID x, string m)
|
||||
{
|
||||
MH.callbacks(D, x, m);
|
||||
MessageFactory.Post(D, m, x);
|
||||
}
|
||||
|
||||
|
||||
public static void passArguments(string data)
|
||||
{
|
||||
|
||||
CM.RunChatCommand(data, client, MH.callbacks, registry);
|
||||
CM.RunChatCommand(data);
|
||||
}
|
||||
|
||||
public static unsafe void Main(string[] args)
|
||||
|
@ -154,8 +153,9 @@ namespace Bot
|
|||
return;
|
||||
}
|
||||
*/
|
||||
MH = new MessageHandler();
|
||||
MH.callbacks += MH.MessageHandle;
|
||||
BotSession.Instance.MSGSVC.MessageEvent += MSGSVC_onChat;
|
||||
BotSession.Instance.MSGSVC.MessageEvent += MSGSVC_onIM;
|
||||
BotSession.Instance.MSGSVC.MessageEvent += MSGSVC_onGroupMessage;
|
||||
|
||||
|
||||
string fna = null;
|
||||
|
@ -250,23 +250,22 @@ namespace Bot
|
|||
if (File.Exists("XUP"))
|
||||
{
|
||||
File.Delete("XUP");
|
||||
MH.callbacks(MessageHandler.Destinations.DEST_LOCAL, UUID.Zero, "Updated to version " + BotStr + " - "+BotVer.ToString());
|
||||
|
||||
MessageFactory.Post(Destinations.DEST_LOCAL, $"Updated to version {BotStr} - {BotVer}", UUID.Zero);
|
||||
}
|
||||
|
||||
|
||||
// Setup BotSession Singleton!
|
||||
BotSession.Instance.grid = client;
|
||||
BotSession.Instance.Logger = Log;
|
||||
BotSession.Instance.MHE = MH.callbacks;
|
||||
BotSession.Instance.MH = MH;
|
||||
|
||||
Thread prompter = new Thread(() => {
|
||||
BotSession.Instance.Logger.DoPrompt();
|
||||
});
|
||||
|
||||
prompter.Start();
|
||||
CM = new CommandManager(BotSession.Instance.Logger, client, MH.callbacks);
|
||||
|
||||
CM = new CommandManager();
|
||||
|
||||
MainConfiguration.Instance.Save(); // Flush the config, to update the file format
|
||||
|
||||
g_ZPrograms = new List<IProgram>();
|
||||
|
@ -290,7 +289,7 @@ namespace Bot
|
|||
{
|
||||
|
||||
Console.WriteLine("Plugin [" + prog.ProgramName + "] found (" + fi.FullName + ") loaded and activated");
|
||||
prog.run(client, MH, CommandRegistry.Instance);
|
||||
prog.run();
|
||||
g_ZPrograms.Add(prog);
|
||||
}
|
||||
}
|
||||
|
@ -345,7 +344,8 @@ namespace Bot
|
|||
|
||||
if (conf.ConfigFor == "Main")
|
||||
{
|
||||
msg(MessageHandler.Destinations.DEST_LOCAL, UUID.Zero, "Alert: Main.json is not fully initialized. Setting default values");
|
||||
MessageFactory.Post(Destinations.DEST_LOCAL, "Alert: Main.json is not fully initialized. Setting default values", UUID.Zero);
|
||||
|
||||
conf.ConfigFor = "BOT";
|
||||
conf.ConfigVersion = 1.0f;
|
||||
// data contains nothing at the moment.
|
||||
|
@ -355,12 +355,11 @@ namespace Bot
|
|||
|
||||
if (conf.ConfigFor == "BOT")
|
||||
{
|
||||
msg(MessageHandler.Destinations.DEST_LOCAL, UUID.Zero, "Main.json has been created");
|
||||
msg(MessageHandler.Destinations.DEST_LOCAL, UUID.Zero, "Continuing with startup");
|
||||
MessageFactory.Post(Destinations.DEST_LOCAL, "Main.json has been created", UUID.Zero);
|
||||
}
|
||||
else
|
||||
{
|
||||
msg(MessageHandler.Destinations.DEST_LOCAL, UUID.Zero, "Main.json does not contain all memory. FAILURE.");
|
||||
MessageFactory.Post(Destinations.DEST_LOCAL, "Main.json is invalid. Cannot continue", UUID.Zero);
|
||||
g_iIsRunning = false;
|
||||
}
|
||||
}
|
||||
|
@ -400,7 +399,7 @@ namespace Bot
|
|||
int i;
|
||||
int* ptr = &i;
|
||||
IntPtr addr = (IntPtr)ptr;
|
||||
msg(MessageHandler.Destinations.DEST_LOCAL, UUID.Zero, "Generic Exception Caught: " + Msg + " [0x0A, 0x" + addr.ToString("x") + "]\nSTACK: " + STACK);
|
||||
MessageFactory.Post(Destinations.DEST_LOCAL, "Generic Exception Caught: " + Msg + " [0x0A, 0x" + addr.ToString("x") + "]\nSTACK: " + STACK, UUID.Zero);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -410,46 +409,7 @@ namespace Bot
|
|||
}
|
||||
|
||||
|
||||
|
||||
string jsonReply = MH.CheckActions();
|
||||
|
||||
|
||||
if (jsonReply == "NONE") jsonReply = "";
|
||||
|
||||
|
||||
if (jsonReply == "" || jsonReply == null)
|
||||
{
|
||||
//Log.debug("TICK NULL");
|
||||
|
||||
}
|
||||
else
|
||||
{
|
||||
dynamic jsonObj = JsonConvert.DeserializeObject(jsonReply);
|
||||
string tp = jsonObj.type;
|
||||
switch (tp)
|
||||
{
|
||||
case "exit":
|
||||
{
|
||||
|
||||
Log.info(false, "Logging off!");
|
||||
g_iIsRunning = false;
|
||||
break;
|
||||
}
|
||||
case "reload_groups":
|
||||
{
|
||||
ReloadGroupsCache();
|
||||
break;
|
||||
}
|
||||
default:
|
||||
{
|
||||
|
||||
Log.info(true, "Unknown response code");
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
MH.run(client);
|
||||
|
||||
//MasterObjectCaches.Save();
|
||||
if (startupSeq) startupSeq = false;
|
||||
|
||||
|
@ -491,11 +451,37 @@ namespace Bot
|
|||
//System.Console.WriteLine("PAUSING. PRESS ANY KEY TO EXIT");
|
||||
//System.Console.ReadKey();
|
||||
}
|
||||
private static ManualResetEvent GroupJoinWaiter = new ManualResetEvent(false);
|
||||
private static void MSGSVC_onGroupMessage(object sender, MessageEventArgs e)
|
||||
{
|
||||
throw new NotImplementedException();
|
||||
}
|
||||
|
||||
private static void MSGSVC_onIM(object sender, MessageEventArgs e)
|
||||
{
|
||||
throw new NotImplementedException();
|
||||
}
|
||||
|
||||
private static void MSGSVC_onChat(object sender, MessageEventArgs e)
|
||||
{
|
||||
switch (e.Msg.GetMessageSource())
|
||||
{
|
||||
case Destinations.DEST_AGENT:
|
||||
// send as IM
|
||||
BotSession.Instance.grid.Self.InstantMessage(e.Msg.GetTarget(), e.Msg.GetMessage());
|
||||
break;
|
||||
case Destinations.DEST_LOCAL:
|
||||
BotSession.Instance.grid.Self.Chat(e.Msg.GetMessage(), e.Msg.GetChannel(), ChatType.Normal);
|
||||
break;
|
||||
default:
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
private static void onJoinGroupChat(object sender, GroupChatJoinedEventArgs e)
|
||||
{
|
||||
if (e.Success)
|
||||
MH.GroupJoinWaiter.Set();
|
||||
GroupJoinWaiter.Set();
|
||||
}
|
||||
|
||||
private static AutoResetEvent ReqObjProperties = new AutoResetEvent(false);
|
||||
|
@ -574,8 +560,8 @@ namespace Bot
|
|||
|
||||
private ManualResetEvent profile_get = new ManualResetEvent(false);
|
||||
private Avatar.AvatarProperties Properties_AV;
|
||||
[CommandGroup("set_profile_text", 75, 1, "set_profile_text [text:Base64] - Sets the profile text", MessageHandler.Destinations.DEST_AGENT | MessageHandler.Destinations.DEST_LOCAL | MessageHandler.Destinations.DEST_CONSOLE_INFO)]
|
||||
public void setProfileText(UUID client, int level, GridClient grid, string[] additionalArgs, MessageHandler.MessageHandleEvent MHE, MessageHandler.Destinations source, CommandRegistry registry, UUID agentKey, string agentName)
|
||||
[CommandGroup("set_profile_text", 75, 1, "set_profile_text [text:Base64] - Sets the profile text", Destinations.DEST_AGENT | Destinations.DEST_LOCAL)]
|
||||
public void setProfileText(UUID client, int level, string[] additionalArgs, Destinations source, UUID agentKey, string agentName)
|
||||
{
|
||||
MHE(source, client, "Setting...");
|
||||
|
||||
|
@ -707,7 +693,7 @@ namespace Bot
|
|||
else
|
||||
{
|
||||
client.Self.GroupInviteRespond(e.IM.FromAgentID, e.IM.IMSessionID, false);
|
||||
MH.callbacks(MessageHandler.Destinations.DEST_AGENT, e.IM.FromAgentID, "You lack the proper permissions to perform this action");
|
||||
MH(Destinations.DEST_AGENT, e.IM.FromAgentID, "You lack the proper permissions to perform this action");
|
||||
}
|
||||
}
|
||||
else if (e.IM.Dialog == InstantMessageDialog.FriendshipOffered)
|
||||
|
@ -715,11 +701,11 @@ namespace Bot
|
|||
if (Level >= 4)
|
||||
{
|
||||
client.Friends.AcceptFriendship(e.IM.FromAgentID, e.IM.IMSessionID);
|
||||
MH.callbacks(MessageHandler.Destinations.DEST_AGENT, e.IM.FromAgentID, "Welcome to my friends list!");
|
||||
MH(Destinations.DEST_AGENT, e.IM.FromAgentID, "Welcome to my friends list!");
|
||||
}
|
||||
else
|
||||
{
|
||||
MH.callbacks(MessageHandler.Destinations.DEST_AGENT, e.IM.FromAgentID, "You lack proper permission");
|
||||
MH(Destinations.DEST_AGENT, e.IM.FromAgentID, "You lack proper permission");
|
||||
}
|
||||
}
|
||||
else if (e.IM.Dialog == InstantMessageDialog.RequestTeleport)
|
||||
|
@ -727,12 +713,12 @@ namespace Bot
|
|||
if (Level >= 3)
|
||||
{
|
||||
client.Self.TeleportLureRespond(e.IM.FromAgentID, e.IM.IMSessionID, true);
|
||||
MH.callbacks(MessageHandler.Destinations.DEST_AGENT, e.IM.FromAgentID, "Teleporting...");
|
||||
MH(Destinations.DEST_AGENT, e.IM.FromAgentID, "Teleporting...");
|
||||
}
|
||||
else
|
||||
{
|
||||
client.Self.TeleportLureRespond(e.IM.FromAgentID, e.IM.IMSessionID, false);
|
||||
MH.callbacks(MessageHandler.Destinations.DEST_AGENT, e.IM.FromAgentID, "You lack permission");
|
||||
MH(Destinations.DEST_AGENT, e.IM.FromAgentID, "You lack permission");
|
||||
}
|
||||
}
|
||||
else if (e.IM.Dialog == InstantMessageDialog.MessageFromObject)
|
||||
|
@ -842,14 +828,12 @@ namespace Bot
|
|||
|
||||
if(count >= 5)
|
||||
{
|
||||
MH.callbacks(MessageHandler.Destinations.DEST_LOCAL, UUID.Zero, "Aborting group refresh attempt. Too many errors - Resetting cache and retrying");
|
||||
MH(Destinations.DEST_LOCAL, UUID.Zero, "Aborting group refresh attempt. Too many errors - Resetting cache and retrying");
|
||||
GroupsEvent.Reset();
|
||||
GroupsCache = new Dictionary<UUID, Group>();
|
||||
client.Groups.CurrentGroups -= Groups_CurrentGroups;
|
||||
|
||||
Dictionary<string, string> act = new Dictionary<string, string>();
|
||||
act.Add("type", "reload_groups");
|
||||
MH.callbacks(MessageHandler.Destinations.DEST_ACTION, UUID.Zero, JsonConvert.SerializeObject(act));
|
||||
ReloadGroupsCache();
|
||||
|
||||
return;
|
||||
}
|
||||
|
|
|
@ -8,7 +8,7 @@ using System.Text;
|
|||
|
||||
namespace Bot.WebHookServer
|
||||
{
|
||||
class HookCmds
|
||||
class HookCmds : BaseCommands
|
||||
{
|
||||
|
||||
public HttpListener listener;
|
||||
|
@ -58,12 +58,13 @@ namespace Bot.WebHookServer
|
|||
}
|
||||
|
||||
|
||||
[CommandGroup("webhook_auth", 4, 2, "webhook_auth [github_name] [y/n]", MessageHandler.Destinations.DEST_AGENT | MessageHandler.Destinations.DEST_LOCAL | MessageHandler.Destinations.DEST_GROUP)]
|
||||
public void WebHookAuthMgr(UUID client, int level, GridClient grid, string[] additionalArgs, MessageHandler.MessageHandleEvent MHE, MessageHandler.Destinations source, CommandRegistry registry, UUID agentKey, string agentName)
|
||||
[CommandGroup("webhook_auth", 4, 2, "webhook_auth [github_name] [y/n]", Destinations.DEST_AGENT | Destinations.DEST_LOCAL | Destinations.DEST_GROUP)]
|
||||
public void WebHookAuthMgr(UUID client, int level, string[] additionalArgs, Destinations source, UUID agentKey, string agentName)
|
||||
{
|
||||
MainConfiguration cfg = MainConfiguration.Instance;
|
||||
|
||||
MHE(source, client, "Checking..");
|
||||
|
||||
|
||||
if (cfg.Authed(additionalArgs[0]))
|
||||
{
|
||||
|
|
|
@ -25,7 +25,6 @@ namespace Bot.WebHookServer
|
|||
class GitServer : IProgram
|
||||
{
|
||||
public HttpListener listener;
|
||||
public MessageHandler.MessageHandleEvent MHEx;
|
||||
public string ProgramName
|
||||
{
|
||||
get { return "GitServer"; }
|
||||
|
@ -33,7 +32,7 @@ namespace Bot.WebHookServer
|
|||
|
||||
public float ProgramVersion
|
||||
{
|
||||
get { return 1.6f; }
|
||||
get { return 1.7f; }
|
||||
}
|
||||
|
||||
public string getTick()
|
||||
|
@ -55,7 +54,7 @@ namespace Bot.WebHookServer
|
|||
public void onIMEvent(object sender, InstantMessageEventArgs e)
|
||||
{
|
||||
}
|
||||
public void run(GridClient client, MessageHandler MH, CommandRegistry registry)
|
||||
public void run()
|
||||
{
|
||||
if (listener != null) return;// Already had run triggered
|
||||
try
|
||||
|
@ -79,7 +78,6 @@ namespace Bot.WebHookServer
|
|||
listener.Prefixes.Add($"http://*:{MainConfiguration.Instance.WebServerPort}/");
|
||||
|
||||
|
||||
MHEx = MH.callbacks;
|
||||
|
||||
listener.Start();
|
||||
var hc = new HookCmds();
|
||||
|
@ -91,7 +89,8 @@ namespace Bot.WebHookServer
|
|||
|
||||
}catch(Exception e)
|
||||
{
|
||||
BotSession.Instance.MHE(MessageHandler.Destinations.DEST_LOCAL, UUID.Zero, "Error: Program could not escalate to Admin Privileges. WebHook engine not running\n\n"+e.Message+"\n"+e.StackTrace);
|
||||
MessageFactory.Post(Destinations.DEST_LOCAL, "Error: Program could not escalate to Admin Privileges. WebHook engine not running\n\n" + e.Message + "\n" + e.StackTrace, UUID.Zero);
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue