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

@ -14,11 +14,9 @@
BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express
or implied. See the Licenses for the specific language governing or implied. See the Licenses for the specific language governing
permissions and limitations under the Licenses. permissions and limitations under the Licenses.
*/ */
namespace MCGalaxy.Commands namespace MCGalaxy.Commands {
{ public sealed class CmdWhitelist : Command {
public sealed class CmdWhitelist : Command
{
public override string name { get { return "whitelist"; } } public override string name { get { return "whitelist"; } }
public override string shortcut { get { return "w"; } } public override string shortcut { get { return "w"; } }
public override string type { get { return CommandTypes.Moderation; } } public override string type { get { return CommandTypes.Moderation; } }
@ -26,75 +24,47 @@ namespace MCGalaxy.Commands
public override LevelPermission defaultRank { get { return LevelPermission.Operator; } } public override LevelPermission defaultRank { get { return LevelPermission.Operator; } }
public CmdWhitelist() { } 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 (!Server.useWhitelist) { Player.Message(p, "Whitelist is not enabled."); return; }
if (message == "") { Help(p); return; } if (message == "") { Help(p); return; }
int pos = message.IndexOf(' '); int sep = message.IndexOf(' ');
if (pos != -1) string action = sep >= 0 ? message.Substring(0, sep) : message;
{ string player = sep >= 0 ? message.Substring(sep + 1) : "";
string action = message.Substring(0, pos);
string player = message.Substring(pos + 1);
switch (action) if (action.CaselessEq("list")) {
{ string output = "Whitelist: &f";
case "add": foreach (string name in Server.whiteList.All())
if (Server.whiteList.Contains(player)) output += name + ", ";
{ output = output.Substring(0, output.Length - 2);
Player.Message(p, "&f" + player + " %Sis already on the whitelist!"); Player.Message(p, output);
break; 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); Server.whiteList.Add(player);
Chat.GlobalMessageOps(p.ColoredName + " %Sadded &f" + player + " %Sto the whitelist."); Chat.GlobalMessageOps(p.ColoredName + " %Sadded &f" + player + " %Sto the whitelist.");
Server.whiteList.Save(); Server.whiteList.Save();
Server.s.Log("WHITELIST: Added " + player); Server.s.Log("WHITELIST: Added " + player);
break; } else if (action.CaselessEq("del")) {
case "del": if (!Server.whiteList.Contains(player)) {
if (!Server.whiteList.Contains(player)) Player.Message(p, "&f" + player + " %Sis not on the whitelist!"); return;
{
Player.Message(p, "&f" + player + " %Sis not on the whitelist!");
break;
} }
Server.whiteList.Remove(player); Server.whiteList.Remove(player);
Chat.GlobalMessageOps(p.ColoredName + " %Sremoved &f" + player + " %Sfrom the whitelist."); Chat.GlobalMessageOps(p.ColoredName + " %Sremoved &f" + player + " %Sfrom the whitelist.");
Server.whiteList.Save(); Server.whiteList.Save();
Server.s.Log("WHITELIST: Removed " + player); Server.s.Log("WHITELIST: Removed " + player);
break; } else {
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); 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."); 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 int MAX_COMMAND_SIZE = 512;
internal const char CtcpQuote = '\u0001'; internal const char CtcpQuote = '\u0001';
internal CommandBuilder(Connection connection ) internal CommandBuilder(Connection connection) {
{
this.connection = connection; this.connection = connection;
commandBuffer = new StringBuilder(MAX_COMMAND_SIZE); commandBuffer = new StringBuilder(MAX_COMMAND_SIZE);
} }
internal Connection Connection internal Connection Connection { get { return connection; } }
{ internal StringBuilder Buffer { get { return commandBuffer; } }
get
{
return connection;
}
}
internal StringBuilder Buffer
{
get
{
return commandBuffer;
}
}
/// <summary> /// <summary>
/// This methods actually sends the notice and privmsg commands. /// This methods actually sends the notice and privmsg commands.
/// It assumes that the message has already been broken up /// It assumes that the message has already been broken up
/// and has a valid target. /// and has a valid target.
/// </summary> /// </summary>
internal void SendMessage(string type, string target, string message) internal void SendMessage(string type, string target, string message) {
{
commandBuffer.Append(type); commandBuffer.Append(type);
commandBuffer.Append(SPACE); commandBuffer.Append(SPACE);
commandBuffer.Append(target); commandBuffer.Append(target);
@ -78,13 +64,14 @@ namespace Sharkbite.Irc
commandBuffer.Append(message); commandBuffer.Append(message);
connection.SendCommand( commandBuffer ); connection.SendCommand( commandBuffer );
} }
/// <summary> /// <summary>
/// Clear the contents of the string buffer. /// Clear the contents of the string buffer.
/// </summary> /// </summary>
internal void ClearBuffer() internal void ClearBuffer() {
{
commandBuffer.Remove(0, commandBuffer.Length ); commandBuffer.Remove(0, commandBuffer.Length );
} }
/// <summary> /// <summary>
/// Break up a large message into smaller peices that will fit within the IRC /// Break up a large message into smaller peices that will fit within the IRC
/// max message size. /// max message size.