Cleanup /whitelist.

This commit is contained in:
UnknownShadow200 2016-06-08 17:47:28 +10:00
parent 62276be0e5
commit 608bf5c7e5
2 changed files with 58 additions and 101 deletions

View File

@ -15,10 +15,8 @@
or implied. See the Licenses for the specific language governing
permissions and limitations under the Licenses.
*/
namespace MCGalaxy.Commands
{
public sealed class CmdWhitelist : Command
{
namespace MCGalaxy.Commands {
public sealed class CmdWhitelist : Command {
public override string name { get { return "whitelist"; } }
public override string shortcut { get { return "w"; } }
public override string type { get { return CommandTypes.Moderation; } }
@ -26,75 +24,47 @@ namespace MCGalaxy.Commands
public override LevelPermission defaultRank { get { return LevelPermission.Operator; } }
public CmdWhitelist() { }
public override void Use(Player p, string message)
{
public override void Use(Player p, string message) {
if (!Server.useWhitelist) { Player.Message(p, "Whitelist is not enabled."); return; }
if (message == "") { Help(p); return; }
int pos = message.IndexOf(' ');
if (pos != -1)
{
string action = message.Substring(0, pos);
string player = message.Substring(pos + 1);
int sep = message.IndexOf(' ');
string action = sep >= 0 ? message.Substring(0, sep) : message;
string player = sep >= 0 ? message.Substring(sep + 1) : "";
switch (action)
{
case "add":
if (Server.whiteList.Contains(player))
{
Player.Message(p, "&f" + player + " %Sis already on the whitelist!");
break;
if (action.CaselessEq("list")) {
string output = "Whitelist: &f";
foreach (string name in Server.whiteList.All())
output += name + ", ";
output = output.Substring(0, output.Length - 2);
Player.Message(p, output);
return;
}
if (player == "") { Help(p); return; }
if (action.CaselessEq("add")) {
if (Server.whiteList.Contains(player)) {
Player.Message(p, "&f" + player + " %Sis already on the whitelist!"); return;
}
Server.whiteList.Add(player);
Chat.GlobalMessageOps(p.ColoredName + " %Sadded &f" + player + " %Sto the whitelist.");
Server.whiteList.Save();
Server.s.Log("WHITELIST: Added " + player);
break;
case "del":
if (!Server.whiteList.Contains(player))
{
Player.Message(p, "&f" + player + " %Sis not on the whitelist!");
break;
} else if (action.CaselessEq("del")) {
if (!Server.whiteList.Contains(player)) {
Player.Message(p, "&f" + player + " %Sis not on the whitelist!"); return;
}
Server.whiteList.Remove(player);
Chat.GlobalMessageOps(p.ColoredName + " %Sremoved &f" + player + " %Sfrom the whitelist.");
Server.whiteList.Save();
Server.s.Log("WHITELIST: Removed " + player);
break;
case "list":
string output = "Whitelist:&f";
foreach (string wlName in Server.whiteList.All())
{
output += " " + wlName + ",";
}
output = output.Substring(0, output.Length - 1);
Player.Message(p, output);
break;
default:
} else {
Help(p);
return;
}
}
else
{
if (message == "list")
{
string output = "Whitelist:&f";
foreach (string wlName in Server.whiteList.All())
{
output += " " + wlName + ",";
}
output = output.Substring(0, output.Length - 1);
Player.Message(p, output);
}
else
{
Help(p);
}
}
}
public override void Help(Player p)
{
public override void Help(Player p) {
Player.Message(p, "/whitelist <add/del/list> [player] - Handles whitelist entry for [player], or lists all entries.");
}
}

View File

@ -43,34 +43,20 @@ namespace Sharkbite.Irc
internal const int MAX_COMMAND_SIZE = 512;
internal const char CtcpQuote = '\u0001';
internal CommandBuilder(Connection connection )
{
internal CommandBuilder(Connection connection) {
this.connection = connection;
commandBuffer = new StringBuilder(MAX_COMMAND_SIZE);
}
internal Connection Connection
{
get
{
return connection;
}
}
internal StringBuilder Buffer
{
get
{
return commandBuffer;
}
}
internal Connection Connection { get { return connection; } }
internal StringBuilder Buffer { get { return commandBuffer; } }
/// <summary>
/// This methods actually sends the notice and privmsg commands.
/// It assumes that the message has already been broken up
/// and has a valid target.
/// </summary>
internal void SendMessage(string type, string target, string message)
{
internal void SendMessage(string type, string target, string message) {
commandBuffer.Append(type);
commandBuffer.Append(SPACE);
commandBuffer.Append(target);
@ -78,13 +64,14 @@ namespace Sharkbite.Irc
commandBuffer.Append(message);
connection.SendCommand( commandBuffer );
}
/// <summary>
/// Clear the contents of the string buffer.
/// </summary>
internal void ClearBuffer()
{
internal void ClearBuffer() {
commandBuffer.Remove(0, commandBuffer.Length );
}
/// <summary>
/// Break up a large message into smaller peices that will fit within the IRC
/// max message size.