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

@ -1,100 +1,70 @@
/*
Copyright 2010 MCLawl Team - Written by Valek (Modified for use with MCGalaxy)
Copyright 2010 MCLawl Team - Written by Valek (Modified for use with MCGalaxy)
Dual-licensed under the Educational Community License, Version 2.0 and
the GNU General Public License, Version 3 (the "Licenses"); you may
not use this file except in compliance with the Licenses. You may
obtain a copy of the Licenses at
http://www.opensource.org/licenses/ecl2.php
http://www.gnu.org/licenses/gpl-3.0.html
Unless required by applicable law or agreed to in writing,
software distributed under the Licenses are distributed on an "AS IS"
BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express
or implied. See the Licenses for the specific language governing
permissions and limitations under the Licenses.
*/
namespace MCGalaxy.Commands
{
public sealed class CmdWhitelist : Command
{
Dual-licensed under the Educational Community License, Version 2.0 and
the GNU General Public License, Version 3 (the "Licenses"); you may
not use this file except in compliance with the Licenses. You may
obtain a copy of the Licenses at
http://www.opensource.org/licenses/ecl2.php
http://www.gnu.org/licenses/gpl-3.0.html
Unless required by applicable law or agreed to in writing,
software distributed under the Licenses are distributed on an "AS IS"
BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express
or implied. See the Licenses for the specific language governing
permissions and limitations under the Licenses.
*/
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; } }
public override string type { get { return CommandTypes.Moderation; } }
public override bool museumUsable { get { return true; } }
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);
switch (action)
{
case "add":
if (Server.whiteList.Contains(player))
{
Player.Message(p, "&f" + player + " %Sis already on the whitelist!");
break;
}
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;
}
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:
Help(p);
return;
}
int sep = message.IndexOf(' ');
string action = sep >= 0 ? message.Substring(0, sep) : message;
string player = sep >= 0 ? message.Substring(sep + 1) : "";
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;
}
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);
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;
}
else
{
Help(p);
Server.whiteList.Add(player);
Chat.GlobalMessageOps(p.ColoredName + " %Sadded &f" + player + " %Sto the whitelist.");
Server.whiteList.Save();
Server.s.Log("WHITELIST: Added " + player);
} 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);
} 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.