mirror of
https://github.com/EssentialsX/Essentials.git
synced 2024-11-17 16:15:21 +01:00
[Feature] Allow IP lookup in /seen command.
[Permission] essentials.seen.ipsearch - allows /seen <ip address>
This commit is contained in:
parent
3d5aa40965
commit
964bdc6d30
@ -692,7 +692,7 @@ public class Util
|
||||
}
|
||||
return message;
|
||||
}
|
||||
|
||||
|
||||
private static String blockURL(final String input)
|
||||
{
|
||||
if (input == null)
|
||||
@ -716,4 +716,11 @@ public class Util
|
||||
{
|
||||
return pattern.matcher(input).replaceAll("\u00a7$1");
|
||||
}
|
||||
private static final Pattern IPPATTERN = Pattern.compile(
|
||||
"^([01]?\\d\\d?|2[0-4]\\d|25[0-5])\\.([01]?\\d\\d?|2[0-4]\\d|25[0-5])\\." +
|
||||
"([01]?\\d\\d?|2[0-4]\\d|25[0-5])\\.([01]?\\d\\d?|2[0-4]\\d|25[0-5])$");
|
||||
|
||||
public static boolean validIP(String ipAddress) {
|
||||
return IPPATTERN.matcher(ipAddress).matches();
|
||||
}
|
||||
}
|
||||
|
@ -2,7 +2,10 @@ package com.earth2me.essentials.commands;
|
||||
|
||||
import static com.earth2me.essentials.I18n._;
|
||||
import com.earth2me.essentials.User;
|
||||
import com.earth2me.essentials.UserMap;
|
||||
import com.earth2me.essentials.Util;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import org.bukkit.Location;
|
||||
import org.bukkit.Server;
|
||||
import org.bukkit.command.CommandSender;
|
||||
@ -18,16 +21,16 @@ public class Commandseen extends EssentialsCommand
|
||||
@Override
|
||||
protected void run(final Server server, final CommandSender sender, final String commandLabel, final String[] args) throws Exception
|
||||
{
|
||||
seen(server, sender, args, true, true);
|
||||
seen(server, sender, args, true, true, true);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void run(final Server server, final User user, final String commandLabel, final String[] args) throws Exception
|
||||
{
|
||||
seen(server, user, args, user.isAuthorized("essentials.seen.banreason"), user.isAuthorized("essentials.seen.extra"));
|
||||
seen(server, user, args, user.isAuthorized("essentials.seen.banreason"), user.isAuthorized("essentials.seen.extra"), user.isAuthorized("essentials.seen.ipsearch"));
|
||||
}
|
||||
|
||||
protected void seen(final Server server, final CommandSender sender, final String[] args, final boolean showBan, final boolean extra) throws Exception
|
||||
protected void seen(final Server server, final CommandSender sender, final String[] args, final boolean showBan, final boolean extra, final boolean ipLookup) throws Exception
|
||||
{
|
||||
if (args.length < 1)
|
||||
{
|
||||
@ -36,60 +39,122 @@ public class Commandseen extends EssentialsCommand
|
||||
try
|
||||
{
|
||||
User user = getPlayer(server, args, 0);
|
||||
user.setDisplayNick();
|
||||
sender.sendMessage(_("seenOnline", user.getDisplayName(), Util.formatDateDiff(user.getLastLogin())));
|
||||
if (user.isAfk())
|
||||
{
|
||||
sender.sendMessage(_("whoisAFK", _("true")));
|
||||
}
|
||||
if (user.isJailed())
|
||||
{
|
||||
sender.sendMessage(_("whoisJail", (user.getJailTimeout() > 0
|
||||
? Util.formatDateDiff(user.getJailTimeout())
|
||||
: _("true"))));
|
||||
}
|
||||
if (user.isMuted())
|
||||
{
|
||||
sender.sendMessage(_("whoisMuted", (user.getMuteTimeout() > 0
|
||||
? Util.formatDateDiff(user.getMuteTimeout())
|
||||
: _("true"))));
|
||||
}
|
||||
if (extra)
|
||||
{
|
||||
sender.sendMessage(_("whoisIPAddress", user.getAddress().getAddress().toString()));
|
||||
}
|
||||
seenOnline(server, sender, user, showBan, extra);
|
||||
}
|
||||
catch (NoSuchFieldException e)
|
||||
{
|
||||
User player = ess.getOfflineUser(args[0]);
|
||||
if (player == null)
|
||||
{
|
||||
throw new Exception(_("playerNotFound"));
|
||||
}
|
||||
player.setDisplayNick();
|
||||
if (player.getLastLogout() > 0)
|
||||
{
|
||||
sender.sendMessage(_("seenOffline", player.getName(), Util.formatDateDiff(player.getLastLogout())));
|
||||
}
|
||||
else {
|
||||
sender.sendMessage(_("userUnknown", player.getName()));
|
||||
}
|
||||
if (player.isBanned())
|
||||
{
|
||||
sender.sendMessage(_("whoisBanned", showBan ? player.getBanReason() : _("true")));
|
||||
}
|
||||
if (extra)
|
||||
{
|
||||
if (!player.getLastLoginAddress().isEmpty())
|
||||
if (ipLookup && Util.validIP(args[0]))
|
||||
{
|
||||
sender.sendMessage(_("whoisIPAddress", player.getLastLoginAddress()));
|
||||
seenIP(server, sender, args[0]);
|
||||
return;
|
||||
}
|
||||
final Location loc = player.getLogoutLocation();
|
||||
if (loc != null)
|
||||
else
|
||||
{
|
||||
sender.sendMessage(_("whoisLocation", loc.getWorld().getName(), loc.getBlockX(), loc.getBlockY(), loc.getBlockZ()));
|
||||
throw new Exception(_("playerNotFound"));
|
||||
}
|
||||
}
|
||||
seenOffline(server, sender, player, showBan, extra);
|
||||
}
|
||||
}
|
||||
|
||||
private void seenOnline(final Server server, final CommandSender sender, final User user, final boolean showBan, final boolean extra) throws Exception
|
||||
{
|
||||
|
||||
user.setDisplayNick();
|
||||
sender.sendMessage(_("seenOnline", user.getDisplayName(), Util.formatDateDiff(user.getLastLogin())));
|
||||
if (user.isAfk())
|
||||
{
|
||||
sender.sendMessage(_("whoisAFK", _("true")));
|
||||
}
|
||||
if (user.isJailed())
|
||||
{
|
||||
sender.sendMessage(_("whoisJail", (user.getJailTimeout() > 0
|
||||
? Util.formatDateDiff(user.getJailTimeout())
|
||||
: _("true"))));
|
||||
}
|
||||
if (user.isMuted())
|
||||
{
|
||||
sender.sendMessage(_("whoisMuted", (user.getMuteTimeout() > 0
|
||||
? Util.formatDateDiff(user.getMuteTimeout())
|
||||
: _("true"))));
|
||||
}
|
||||
if (extra)
|
||||
{
|
||||
sender.sendMessage(_("whoisIPAddress", user.getAddress().getAddress().toString()));
|
||||
}
|
||||
}
|
||||
|
||||
private void seenOffline(final Server server, final CommandSender sender, User player, final boolean showBan, final boolean extra) throws Exception
|
||||
{
|
||||
player.setDisplayNick();
|
||||
if (player.getLastLogout() > 0)
|
||||
{
|
||||
sender.sendMessage(_("seenOffline", player.getName(), Util.formatDateDiff(player.getLastLogout())));
|
||||
}
|
||||
else
|
||||
{
|
||||
sender.sendMessage(_("userUnknown", player.getName()));
|
||||
}
|
||||
if (player.isBanned())
|
||||
{
|
||||
sender.sendMessage(_("whoisBanned", showBan ? player.getBanReason() : _("true")));
|
||||
}
|
||||
if (extra)
|
||||
{
|
||||
if (!player.getLastLoginAddress().isEmpty())
|
||||
{
|
||||
sender.sendMessage(_("whoisIPAddress", player.getLastLoginAddress()));
|
||||
}
|
||||
final Location loc = player.getLogoutLocation();
|
||||
if (loc != null)
|
||||
{
|
||||
sender.sendMessage(_("whoisLocation", loc.getWorld().getName(), loc.getBlockX(), loc.getBlockY(), loc.getBlockZ()));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void seenIP(final Server server, final CommandSender sender, final String ipAddress) throws Exception
|
||||
{
|
||||
final UserMap userMap = ess.getUserMap();
|
||||
sender.sendMessage(_("runningPlayerMatch", ipAddress));
|
||||
|
||||
ess.runTaskAsynchronously(new Runnable()
|
||||
{
|
||||
@Override
|
||||
public void run()
|
||||
{
|
||||
final List<String> matches = new ArrayList<String>();
|
||||
for (final String u : userMap.getAllUniqueUsers())
|
||||
{
|
||||
final User user = ess.getUserMap().getUser(u);
|
||||
if (user == null)
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
final String uIPAddress = user.getLastLoginAddress();
|
||||
|
||||
if (!uIPAddress.isEmpty() && uIPAddress.equalsIgnoreCase(ipAddress))
|
||||
{
|
||||
matches.add(user.getName());
|
||||
}
|
||||
}
|
||||
|
||||
if (matches.size() > 0)
|
||||
{
|
||||
sender.sendMessage(_("matchingIPAddress"));
|
||||
sender.sendMessage(Util.joinList(matches));
|
||||
}
|
||||
else
|
||||
{
|
||||
sender.sendMessage(_("noMatchingPlayers"));
|
||||
}
|
||||
|
||||
}
|
||||
});
|
||||
|
||||
}
|
||||
}
|
||||
|
@ -506,3 +506,6 @@ bedMissing=\u00a74Your bed is either unset, missing or blocked.
|
||||
bedSet=\u00a76Bed spawn set!
|
||||
kitGiveTo=\u00a76Giving kit\u00a7c {0}\u00a76 to {1}\u00a7.
|
||||
kitReceive=\u00a76Received kit\u00a7c {0}\u00a76.
|
||||
noMatchingPlayers=\u00a76No matching players found.
|
||||
matchingIPAddress=\u00a76The following players previously logged in from that IP address:
|
||||
runningPlayerMatch=\u00a76Running search for players matching ''\u00a7c{0}\u00a76'' (this could take a little while)
|
||||
|
@ -509,3 +509,6 @@ bedMissing=\u00a74Your bed is either unset, missing or blocked.
|
||||
bedSet=\u00a76Bed spawn set!
|
||||
kitGiveTo=\u00a76Giving kit\u00a7c {0}\u00a76 to {1}\u00a7.
|
||||
kitReceive=\u00a76Received kit\u00a7c {0}\u00a76.
|
||||
noMatchingPlayers=\u00a76No matching players found.
|
||||
matchingIPAddress=\u00a76The following players previously logged in from that IP address:
|
||||
runningPlayerMatch=\u00a76Running search for players matching ''\u00a7c{0}\u00a76'' (this could take a little while)
|
||||
|
@ -506,3 +506,6 @@ bedMissing=\u00a74Your bed is either unset, missing or blocked.
|
||||
bedSet=\u00a76Bed spawn set!
|
||||
kitGiveTo=\u00a76Giving kit\u00a7c {0}\u00a76 to {1}\u00a7.
|
||||
kitReceive=\u00a76Received kit\u00a7c {0}\u00a76.
|
||||
noMatchingPlayers=\u00a76No matching players found.
|
||||
matchingIPAddress=\u00a76The following players previously logged in from that IP address:
|
||||
runningPlayerMatch=\u00a76Running search for players matching ''\u00a7c{0}\u00a76'' (this could take a little while)
|
||||
|
@ -506,3 +506,6 @@ bedMissing=\u00a74Your bed is either unset, missing or blocked.
|
||||
bedSet=\u00a76Bed spawn set!
|
||||
kitGiveTo=\u00a76Giving kit\u00a7c {0}\u00a76 to {1}\u00a7.
|
||||
kitReceive=\u00a76Received kit\u00a7c {0}\u00a76.
|
||||
noMatchingPlayers=\u00a76No matching players found.
|
||||
matchingIPAddress=\u00a76The following players previously logged in from that IP address:
|
||||
runningPlayerMatch=\u00a76Running search for players matching ''\u00a7c{0}\u00a76'' (this could take a little while)
|
||||
|
@ -507,3 +507,6 @@ bedMissing=\u00a74Your bed is either unset, missing or blocked.
|
||||
bedSet=\u00a76Bed spawn set!
|
||||
kitGiveTo=\u00a76Giving kit\u00a7c {0}\u00a76 to {1}\u00a7.
|
||||
kitReceive=\u00a76Received kit\u00a7c {0}\u00a76.
|
||||
noMatchingPlayers=\u00a76No matching players found.
|
||||
matchingIPAddress=\u00a76The following players previously logged in from that IP address:
|
||||
runningPlayerMatch=\u00a76Running search for players matching ''\u00a7c{0}\u00a76'' (this could take a little while)
|
||||
|
@ -506,3 +506,6 @@ bedMissing=\u00a74Your bed is either unset, missing or blocked.
|
||||
bedSet=\u00a76Bed spawn set!
|
||||
kitGiveTo=\u00a76Giving kit\u00a7c {0}\u00a76 to {1}\u00a7.
|
||||
kitReceive=\u00a76Received kit\u00a7c {0}\u00a76.
|
||||
noMatchingPlayers=\u00a76No matching players found.
|
||||
matchingIPAddress=\u00a76The following players previously logged in from that IP address:
|
||||
runningPlayerMatch=\u00a76Running search for players matching ''\u00a7c{0}\u00a76'' (this could take a little while)
|
||||
|
@ -506,3 +506,6 @@ bedMissing=\u00a74Your bed is either unset, missing or blocked.
|
||||
bedSet=\u00a76Bed spawn set!
|
||||
kitGiveTo=\u00a76Giving kit\u00a7c {0}\u00a76 to {1}\u00a7.
|
||||
kitReceive=\u00a76Received kit\u00a7c {0}\u00a76.
|
||||
noMatchingPlayers=\u00a76No matching players found.
|
||||
matchingIPAddress=\u00a76The following players previously logged in from that IP address:
|
||||
runningPlayerMatch=\u00a76Running search for players matching ''\u00a7c{0}\u00a76'' (this could take a little while)
|
||||
|
@ -506,3 +506,6 @@ bedMissing=\u00a74Your bed is either unset, missing or blocked.
|
||||
bedSet=\u00a76Bed spawn set!
|
||||
kitGiveTo=\u00a76Giving kit\u00a7c {0}\u00a76 to {1}\u00a7.
|
||||
kitReceive=\u00a76Received kit\u00a7c {0}\u00a76.
|
||||
noMatchingPlayers=\u00a76No matching players found.
|
||||
matchingIPAddress=\u00a76The following players previously logged in from that IP address:
|
||||
runningPlayerMatch=\u00a76Running search for players matching ''\u00a7c{0}\u00a76'' (this could take a little while)
|
||||
|
@ -506,3 +506,6 @@ bedMissing=\u00a74Your bed is either unset, missing or blocked.
|
||||
bedSet=\u00a76Bed spawn set!
|
||||
kitGiveTo=\u00a76Giving kit\u00a7c {0}\u00a76 to {1}\u00a7.
|
||||
kitReceive=\u00a76Received kit\u00a7c {0}\u00a76.
|
||||
noMatchingPlayers=\u00a76No matching players found.
|
||||
matchingIPAddress=\u00a76The following players previously logged in from that IP address:
|
||||
runningPlayerMatch=\u00a76Running search for players matching ''\u00a7c{0}\u00a76'' (this could take a little while)
|
||||
|
@ -506,3 +506,6 @@ bedMissing=\u00a74Your bed is either unset, missing or blocked.
|
||||
bedSet=\u00a76Bed spawn set!
|
||||
kitGiveTo=\u00a76Giving kit\u00a7c {0}\u00a76 to {1}\u00a7.
|
||||
kitReceive=\u00a76Received kit\u00a7c {0}\u00a76.
|
||||
noMatchingPlayers=\u00a76No matching players found.
|
||||
matchingIPAddress=\u00a76The following players previously logged in from that IP address:
|
||||
runningPlayerMatch=\u00a76Running search for players matching ''\u00a7c{0}\u00a76'' (this could take a little while)
|
||||
|
@ -506,3 +506,6 @@ bedMissing=\u00a74Twoje lozko nie jest ustawione, lub jest zablokowane.
|
||||
bedSet=\u00a77Spawn w lozku ustawiony!
|
||||
kitGiveTo=\u00a74{1} \u00a77otrzymal zestaw\u00a7c {0}\u00a77.
|
||||
kitReceive=\u00a77Otrzymales zestaw\u00a7c {0}\u00a77.
|
||||
noMatchingPlayers=\u00a76No matching players found.
|
||||
matchingIPAddress=\u00a76The following players previously logged in from that IP address:
|
||||
runningPlayerMatch=\u00a76Running search for players matching ''\u00a7c{0}\u00a76'' (this could take a little while)
|
||||
|
@ -506,3 +506,6 @@ bedMissing=\u00a74Your bed is either unset, missing or blocked.
|
||||
bedSet=\u00a76Bed spawn set!
|
||||
kitGiveTo=\u00a76Giving kit\u00a7c {0}\u00a76 to {1}\u00a7.
|
||||
kitReceive=\u00a76Received kit\u00a7c {0}\u00a76.
|
||||
noMatchingPlayers=\u00a76No matching players found.
|
||||
matchingIPAddress=\u00a76The following players previously logged in from that IP address:
|
||||
runningPlayerMatch=\u00a76Running search for players matching ''\u00a7c{0}\u00a76'' (this could take a little while)
|
||||
|
@ -506,3 +506,6 @@ bedMissing=\u00a74Your bed is either unset, missing or blocked.
|
||||
bedSet=\u00a76Bed spawn set!
|
||||
kitGiveTo=\u00a76Giving kit\u00a7c {0}\u00a76 to {1}\u00a7.
|
||||
kitReceive=\u00a76Received kit\u00a7c {0}\u00a76.
|
||||
noMatchingPlayers=\u00a76No matching players found.
|
||||
matchingIPAddress=\u00a76The following players previously logged in from that IP address:
|
||||
runningPlayerMatch=\u00a76Running search for players matching ''\u00a7c{0}\u00a76'' (this could take a little while)
|
||||
|
Loading…
Reference in New Issue
Block a user