mirror of
https://github.com/ClassiCube/MCGalaxy.git
synced 2025-09-27 07:11:04 -04:00
Cleanup /whitelist.
This commit is contained in:
parent
62276be0e5
commit
608bf5c7e5
@ -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.");
|
||||
}
|
||||
}
|
||||
|
@ -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.
|
||||
|
Loading…
x
Reference in New Issue
Block a user