From 2ce2214d5e43fb625c2f9cde22f791ee097643e1 Mon Sep 17 00:00:00 2001 From: Michael Date: Sat, 21 Jan 2017 21:27:25 -0500 Subject: Commands can now be locked out of remote sessions Try using sos.shutdown remotely... it won't work. :stuck_out_tongue_winking_eye: --- ShiftOS_TheReturn/Command.cs | 73 +++++++++++++++++++++++++++++++------------- 1 file changed, 52 insertions(+), 21 deletions(-) (limited to 'ShiftOS_TheReturn/Command.cs') diff --git a/ShiftOS_TheReturn/Command.cs b/ShiftOS_TheReturn/Command.cs index 1652a11..85da6ca 100644 --- a/ShiftOS_TheReturn/Command.cs +++ b/ShiftOS_TheReturn/Command.cs @@ -28,39 +28,51 @@ using System.Linq; using System.Text; using System.Threading.Tasks; -namespace ShiftOS.Engine { - public class Command : Attribute { +namespace ShiftOS.Engine +{ + public class Command : Attribute + { public string name; public string description = ""; public string usage = ""; public bool hide = false; - public Command(string name) { + public Command(string name) + { this.name = name; } - public Command(string name, bool hide) { + public Command(string name, bool hide) + { this.name = name; this.hide = hide; } - public Command(string name, string usage, string description) { + public Command(string name, string usage, string description) + { this.name = name; this.description = description; this.usage = usage; } } - public class RequiresUpgradeAttribute : Attribute { + public class RequiresUpgradeAttribute : Attribute + { public string Upgrade { get; set; } - public bool Installed { - get { - if (Upgrade.Contains(";")) { + public bool Installed + { + get + { + if (Upgrade.Contains(";")) + { string[] split = Upgrade.Split(';'); - foreach (var upg in split) { + foreach (var upg in split) + { if (!Shiftorium.UpgradeInstalled(upg)) return false; } return true; - } else { + } + else + { return Shiftorium.UpgradeInstalled(Upgrade); } } @@ -70,30 +82,36 @@ namespace ShiftOS.Engine { /// Marks this Form or Command as dependant on this upgrade. /// /// Upgrade ID - See 'shiftorium.json' in resources for all IDs and their metadata. - public RequiresUpgradeAttribute(string upg) { + public RequiresUpgradeAttribute(string upg) + { Upgrade = upg; } } - public class Namespace : Attribute { + public class Namespace : Attribute + { public string name; public bool hide; - public Namespace(string n) { + public Namespace(string n) + { name = n; } - public Namespace(string n, bool hide) { + public Namespace(string n, bool hide) + { name = n; this.hide = hide; } } [AttributeUsage(AttributeTargets.Method)] - public class CommandObsolete : Attribute { + public class CommandObsolete : Attribute + { public string reason; public string newcommand; public bool warn; - public CommandObsolete(string reason, string newcommand, bool warn) { + public CommandObsolete(string reason, string newcommand, bool warn) + { this.reason = reason; // %n for newcommand this.newcommand = newcommand; this.warn = warn; @@ -101,17 +119,30 @@ namespace ShiftOS.Engine { } [AttributeUsage(AttributeTargets.Method, AllowMultiple = true)] - public class RequiresArgument : Attribute { + public class RequiresArgument : Attribute + { public string argument; - public RequiresArgument(string argument) { + public RequiresArgument(string argument) + { this.argument = argument; } - public override object TypeId { - get { + public override object TypeId + { + get + { return this; } } } + + [AttributeUsage(AttributeTargets.Method, AllowMultiple = false)] + public class RemoteLockAttribute : Attribute + { + /// + /// When used on a terminal command, it will prevent that command from being invoked by a remote user (over MUD terminal forwarding). + /// + public RemoteLockAttribute() { } + } } -- cgit v1.2.3