2016-03-02 19:28:01 +00:00
package me.totalfreedom.totalfreedommod.command ;
2015-10-19 17:43:46 +00:00
import java.util.ArrayList ;
import java.util.List ;
2015-11-15 23:32:04 +00:00
import me.totalfreedom.totalfreedommod.banning.Ban ;
2015-10-19 17:43:46 +00:00
import me.totalfreedom.totalfreedommod.player.PlayerData ;
2016-03-06 15:56:15 +00:00
import me.totalfreedom.totalfreedommod.rank.Rank ;
2015-10-19 17:43:46 +00:00
import me.totalfreedom.totalfreedommod.util.FUtil ;
import org.apache.commons.lang3.StringUtils ;
import org.bukkit.command.Command ;
import org.bukkit.command.CommandSender ;
import org.bukkit.entity.Player ;
2017-10-13 18:35:11 +00:00
2016-03-06 15:56:15 +00:00
@CommandPermissions ( level = Rank . SUPER_ADMIN , source = SourceType . BOTH , blockHostConsole = true )
2017-10-13 18:35:11 +00:00
@CommandParameters ( description = " Bans or unbans any player, even those who are not logged in anymore. " , usage = " /<command> <ban <username> [reason] | unban <username> | banip <ip> <reason> | unbanip <ip> | nameban <name> | unbanname <name>> " )
2015-10-19 17:43:46 +00:00
public class Command_glist extends FreedomCommand
{
2015-11-22 18:26:47 +00:00
2015-10-19 17:43:46 +00:00
@Override
2015-11-22 18:26:47 +00:00
public boolean run ( CommandSender sender , Player playerSender , Command cmd , String commandLabel , String [ ] args , boolean senderIsConsole )
2015-10-19 17:43:46 +00:00
{
if ( args . length < 1 )
{
return false ;
}
if ( args . length = = 1 )
{
2016-03-06 15:56:15 +00:00
if ( " purge " . equals ( args [ 0 ] ) )
2015-10-19 17:43:46 +00:00
{
2016-03-06 15:56:15 +00:00
checkRank ( Rank . SENIOR_ADMIN ) ;
plugin . pl . purgeAllData ( ) ;
msg ( " Purged playerbase. " ) ;
2015-10-19 17:43:46 +00:00
return true ;
}
2016-03-06 15:56:15 +00:00
return false ;
2015-10-19 17:43:46 +00:00
}
2016-03-06 15:56:15 +00:00
2017-10-13 18:35:11 +00:00
if ( args . length < 2 )
{
return false ;
}
2015-10-19 17:43:46 +00:00
2017-10-13 18:35:11 +00:00
String username = null ;
final List < String > ips = new ArrayList < > ( ) ;
boolean usingIp = false ;
String banIp = null ;
if ( args [ 1 ] . matches ( " ^([0-9]|[1-9][0-9]|1([0-9][0-9])|2([0-4][0-9]|5[0-5])) \\ .([0-9]|[1-9][0-9]|1([0-9][0-9])|2([0-4][0-9]|5[0-5])) \\ .([0-9]|[1-9][0-9]|1([0-9][0-9])|2([0-4][0-9]|5[0-5])) \\ .([0-9]|[1-9][0-9]|1([0-9][0-9])|2([0-4][0-9]|5[0-5]))$ " ) | | args [ 1 ] . matches ( " ^([0-9]|[1-9][0-9]|1([0-9][0-9])|2([0-4][0-9]|5[0-5])) \\ .([0-9]|[1-9][0-9]|1([0-9][0-9])|2([0-4][0-9]|5[0-5])) \\ .([*]) \\ .([*])$ " ) )
{
usingIp = true ;
banIp = args [ 1 ] ;
}
final Player player = getPlayer ( args [ 1 ] ) ;
if ( ! usingIp )
2015-10-19 17:43:46 +00:00
{
2017-10-13 18:35:11 +00:00
if ( player = = null )
{
final PlayerData entry = plugin . pl . getData ( args [ 1 ] ) ;
if ( entry = = null )
{
msg ( " Can't find that user. If target is not logged in, make sure that you spelled the name exactly. " ) ;
return true ;
}
username = entry . getUsername ( ) ;
ips . addAll ( entry . getIps ( ) ) ;
}
else
{
final PlayerData entry = plugin . pl . getData ( player ) ;
username = entry . getUsername ( ) ;
ips . addAll ( entry . getIps ( ) ) ;
}
2015-10-19 17:43:46 +00:00
}
2017-10-13 18:35:11 +00:00
switch ( args [ 0 ] )
2015-10-19 17:43:46 +00:00
{
2017-10-13 18:35:11 +00:00
case " ban " :
case " gtfo " :
if ( usingIp )
{
msg ( " Please specify a player, not an ip. " ) ;
return true ;
}
final String playerBanReason = args . length > 2 ? StringUtils . join ( args , " " , 2 , args . length ) : null ;
Ban playerBan = Ban . forPlayerName ( username , sender , null , playerBanReason ) ;
for ( String ip : ips )
{
playerBan . addIp ( ip ) ;
playerBan . addIp ( FUtil . getFuzzyIp ( ip ) ) ;
}
FUtil . adminAction ( sender . getName ( ) , " Banning " + username + " and IPs: " + StringUtils . join ( ips , " , " ) , true ) ;
plugin . bm . addBan ( playerBan ) ;
if ( player ! = null )
{
player . kickPlayer ( playerBan . bakeKickMessage ( ) ) ;
}
return true ;
case " unban " :
case " pardon " :
if ( usingIp )
{
msg ( " Please specify a player, not an ip. " ) ;
return true ;
}
FUtil . adminAction ( sender . getName ( ) , " Unbanning " + username + " and IPs: " + StringUtils . join ( ips , " , " ) , true ) ;
plugin . bm . removeBan ( plugin . bm . getByUsername ( username ) ) ;
for ( String ip : ips )
{
Ban playerUnban = plugin . bm . getByIp ( ip ) ;
if ( playerUnban ! = null )
{
plugin . bm . removeBan ( playerUnban ) ;
}
playerUnban = plugin . bm . getByIp ( FUtil . getFuzzyIp ( ip ) ) ;
if ( playerUnban ! = null )
{
plugin . bm . removeBan ( playerUnban ) ;
}
}
return true ;
case " nameban " :
case " banname " :
if ( usingIp )
{
msg ( " Please specify a name, not an ip. " ) ;
return true ;
}
final String nameBanReason = args . length > 2 ? StringUtils . join ( args , " " , 2 , args . length ) : null ;
Ban nameBan = Ban . forPlayerName ( username , sender , null , nameBanReason ) ;
FUtil . adminAction ( sender . getName ( ) , " Banning IGN: " + username , true ) ;
plugin . bm . addBan ( nameBan ) ;
if ( player ! = null )
{
player . kickPlayer ( nameBan . bakeKickMessage ( ) ) ;
}
return true ;
case " unbanname " :
case " nameunban " :
if ( usingIp )
{
msg ( " Please specify a name, not an ip. " ) ;
return true ;
}
FUtil . adminAction ( sender . getName ( ) , " Unbanning IGN: " + username , true ) ;
plugin . bm . removeBan ( plugin . bm . getByUsername ( username ) ) ;
return true ;
case " banip " :
case " ipban " :
if ( ! usingIp )
{
msg ( " Please specify an IP. " ) ;
return true ;
}
final String ipBanReason = args . length > 2 ? StringUtils . join ( args , " " , 2 , args . length ) : null ;
Ban ipBan = Ban . forPlayerIp ( banIp , sender , null , ipBanReason ) ;
plugin . bm . addBan ( ipBan ) ;
FUtil . adminAction ( sender . getName ( ) , " Banning IP: " + banIp , true ) ;
return true ;
case " unbanip " :
case " pardonip " :
if ( ! usingIp )
{
msg ( " Please specify an IP. " ) ;
return true ;
}
FUtil . adminAction ( sender . getName ( ) , " Unbanning IP: " + banIp , true ) ;
Ban ipUnban = plugin . bm . getByIp ( banIp ) ;
if ( ipUnban ! = null )
{
plugin . bm . removeBan ( ipUnban ) ;
plugin . bm . unbanIp ( banIp ) ;
}
ipUnban = plugin . bm . getByIp ( FUtil . getFuzzyIp ( banIp ) ) ;
if ( ipUnban ! = null )
{
plugin . bm . removeBan ( ipUnban ) ;
plugin . bm . unbanIp ( banIp ) ;
}
return true ;
default :
return false ;
2015-10-19 17:43:46 +00:00
}
}
}
2016-03-06 15:56:15 +00:00