mirror of
https://github.com/AtlasMediaGroup/TotalFreedomMod.git
synced 2024-11-27 01:05:38 +00:00
Adding additional login checks.
Added /saconfig info
This commit is contained in:
parent
d066c1b754
commit
b8b755c0c7
@ -48,6 +48,39 @@ public class Command_saconfig extends TFM_Command
|
|||||||
}
|
}
|
||||||
else if (args.length == 2)
|
else if (args.length == 2)
|
||||||
{
|
{
|
||||||
|
if (args[0].equalsIgnoreCase("info"))
|
||||||
|
{
|
||||||
|
if (!TFM_SuperadminList.isUserSuperadmin(sender))
|
||||||
|
{
|
||||||
|
sender.sendMessage(TotalFreedomMod.MSG_NO_PERMS);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
TFM_Superadmin superadmin = TFM_SuperadminList.getAdminEntry(args[1].toLowerCase());
|
||||||
|
|
||||||
|
if (superadmin == null)
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
superadmin = TFM_SuperadminList.getAdminEntry(getPlayer(args[1]).getName().toLowerCase());
|
||||||
|
}
|
||||||
|
catch (CantFindPlayerException ex)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (superadmin == null)
|
||||||
|
{
|
||||||
|
sender.sendMessage("Superadmin not found: " + args[1]);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
sender.sendMessage(ChatColor.stripColor(ChatColor.translateAlternateColorCodes('&', superadmin.toString())));
|
||||||
|
}
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
if (!senderIsConsole)
|
if (!senderIsConsole)
|
||||||
{
|
{
|
||||||
sender.sendMessage(ChatColor.GRAY + "This command may only be used from the console.");
|
sender.sendMessage(ChatColor.GRAY + "This command may only be used from the console.");
|
||||||
|
@ -3,6 +3,7 @@ package me.StevenLawson.TotalFreedomMod.Commands;
|
|||||||
import java.util.List;
|
import java.util.List;
|
||||||
import me.StevenLawson.TotalFreedomMod.TFM_Log;
|
import me.StevenLawson.TotalFreedomMod.TFM_Log;
|
||||||
import me.StevenLawson.TotalFreedomMod.TFM_SuperadminList;
|
import me.StevenLawson.TotalFreedomMod.TFM_SuperadminList;
|
||||||
|
import me.StevenLawson.TotalFreedomMod.TFM_UserInfo;
|
||||||
import me.StevenLawson.TotalFreedomMod.TFM_Util;
|
import me.StevenLawson.TotalFreedomMod.TFM_Util;
|
||||||
import me.StevenLawson.TotalFreedomMod.TotalFreedomMod;
|
import me.StevenLawson.TotalFreedomMod.TotalFreedomMod;
|
||||||
import org.bukkit.ChatColor;
|
import org.bukkit.ChatColor;
|
||||||
@ -53,9 +54,7 @@ public class TFM_Command
|
|||||||
|
|
||||||
ADMIN_LEVEL level = permissions.level();
|
ADMIN_LEVEL level = permissions.level();
|
||||||
SOURCE_TYPE_ALLOWED source = permissions.source();
|
SOURCE_TYPE_ALLOWED source = permissions.source();
|
||||||
boolean block_web_console = permissions.block_host_console();
|
boolean block_host_console = permissions.block_host_console();
|
||||||
|
|
||||||
//TFM_Log.info("Level: " + level + ", Source: " + source + ", BWC: " + block_host_console);
|
|
||||||
|
|
||||||
Player sender_p = null;
|
Player sender_p = null;
|
||||||
if (sender instanceof Player)
|
if (sender instanceof Player)
|
||||||
@ -73,7 +72,7 @@ public class TFM_Command
|
|||||||
{
|
{
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
else if (block_web_console && TFM_Util.isFromHostConsole(sender.getName()))
|
else if (block_host_console && TFM_Util.isFromHostConsole(sender.getName()))
|
||||||
{
|
{
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
@ -84,9 +83,25 @@ public class TFM_Command
|
|||||||
{
|
{
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
else if (level == ADMIN_LEVEL.SENIOR && !is_senior)
|
else if (level == ADMIN_LEVEL.SENIOR)
|
||||||
{
|
{
|
||||||
return false;
|
if (is_senior)
|
||||||
|
{
|
||||||
|
TFM_UserInfo playerdata = TFM_UserInfo.getPlayerData(sender_p);
|
||||||
|
Boolean superadminIdVerified = playerdata.isSuperadminIdVerified();
|
||||||
|
|
||||||
|
if (superadminIdVerified != null)
|
||||||
|
{
|
||||||
|
if (!superadminIdVerified.booleanValue())
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
else if (level == ADMIN_LEVEL.SUPER && !is_super)
|
else if (level == ADMIN_LEVEL.SUPER && !is_super)
|
||||||
{
|
{
|
||||||
|
@ -641,6 +641,8 @@ public class TFM_PlayerListener implements Listener
|
|||||||
try
|
try
|
||||||
{
|
{
|
||||||
final Player p = event.getPlayer();
|
final Player p = event.getPlayer();
|
||||||
|
final TFM_UserInfo playerdata = TFM_UserInfo.getPlayerData(p);
|
||||||
|
playerdata.setSuperadminIdVerified(null);
|
||||||
|
|
||||||
TFM_UserList.getInstance(TotalFreedomMod.plugin).addUser(p);
|
TFM_UserList.getInstance(TotalFreedomMod.plugin).addUser(p);
|
||||||
|
|
||||||
@ -659,9 +661,20 @@ public class TFM_PlayerListener implements Listener
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
p.setOp(true);
|
if (TFM_SuperadminList.verifyIdentity(p.getName(), p.getAddress().getAddress().getHostAddress()))
|
||||||
|
{
|
||||||
|
playerdata.setSuperadminIdVerified(Boolean.TRUE);
|
||||||
|
|
||||||
TFM_SuperadminList.updateLastLogin(p);
|
TFM_SuperadminList.updateLastLogin(p);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
playerdata.setSuperadminIdVerified(Boolean.FALSE);
|
||||||
|
|
||||||
|
TFM_Util.bcastMsg("Warning: " + p.getName() + " is an admin, but is using a username not registered to one of their IPs.", ChatColor.RED);
|
||||||
|
}
|
||||||
|
|
||||||
|
p.setOp(true);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -154,7 +154,7 @@ public class TFM_ServerInterface
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
is_superadmin = TFM_SuperadminList.checkPartialSuperadminIP(player_ip);
|
is_superadmin = TFM_SuperadminList.checkPartialSuperadminIP(player_ip, player_name.toLowerCase());
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!is_superadmin)
|
if (!is_superadmin)
|
||||||
|
@ -265,7 +265,7 @@ public class TFM_SuperadminList
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static boolean checkPartialSuperadminIP(String user_ip)
|
public static boolean checkPartialSuperadminIP(String user_ip, String user_name)
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
@ -293,10 +293,13 @@ public class TFM_SuperadminList
|
|||||||
|
|
||||||
if (admin_entry != null)
|
if (admin_entry != null)
|
||||||
{
|
{
|
||||||
List<String> ips = admin_entry.getIps();
|
if (admin_entry.getName().equalsIgnoreCase(user_name))
|
||||||
ips.add(user_ip);
|
{
|
||||||
admin_entry.setIps(ips);
|
List<String> ips = admin_entry.getIps();
|
||||||
saveSuperadminList();
|
ips.add(user_ip);
|
||||||
|
admin_entry.setIps(ips);
|
||||||
|
saveSuperadminList();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
@ -430,4 +433,22 @@ public class TFM_SuperadminList
|
|||||||
TFM_Log.severe(ex);
|
TFM_Log.severe(ex);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static boolean verifyIdentity(String admin_name, String ip) throws Exception
|
||||||
|
{
|
||||||
|
if (Bukkit.getOnlineMode())
|
||||||
|
{
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
TFM_Superadmin admin_entry = getAdminEntry(admin_name);
|
||||||
|
if (admin_entry != null)
|
||||||
|
{
|
||||||
|
return admin_entry.getIps().contains(ip);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
throw new Exception();
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -47,6 +47,7 @@ public class TFM_UserInfo
|
|||||||
private String last_message = "";
|
private String last_message = "";
|
||||||
private boolean in_adminchat = false;
|
private boolean in_adminchat = false;
|
||||||
private boolean all_commands_blocked = false;
|
private boolean all_commands_blocked = false;
|
||||||
|
private Boolean superadmin_id_verified = null;
|
||||||
|
|
||||||
public TFM_UserInfo(Player player)
|
public TFM_UserInfo(Player player)
|
||||||
{
|
{
|
||||||
@ -438,4 +439,18 @@ public class TFM_UserInfo
|
|||||||
{
|
{
|
||||||
this.all_commands_blocked = commands_blocked;
|
this.all_commands_blocked = commands_blocked;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//If someone logs in to telnet or minecraft, and they are an admin, make sure that they are using a username that is associated with their IP.
|
||||||
|
//After the check for this is done in TFM_PlayerListener, never change it elsewhere.
|
||||||
|
public Boolean isSuperadminIdVerified()
|
||||||
|
{
|
||||||
|
return superadmin_id_verified;
|
||||||
|
}
|
||||||
|
|
||||||
|
//If someone logs in to telnet or minecraft, and they are an admin, make sure that they are using a username that is associated with their IP.
|
||||||
|
//After the check for this is done in TFM_PlayerListener, never change it elsewhere.
|
||||||
|
public void setSuperadminIdVerified(Boolean superadmin_id_verified)
|
||||||
|
{
|
||||||
|
this.superadmin_id_verified = superadmin_id_verified;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -245,12 +245,6 @@ public class TFM_Util
|
|||||||
return TFM_SuperadminList.isUserSuperadmin(user);
|
return TFM_SuperadminList.isUserSuperadmin(user);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Deprecated
|
|
||||||
public static boolean checkPartialSuperadminIP(String user_ip)
|
|
||||||
{
|
|
||||||
return TFM_SuperadminList.checkPartialSuperadminIP(user_ip);
|
|
||||||
}
|
|
||||||
|
|
||||||
public static int wipeEntities(boolean wipe_explosives, boolean wipe_vehicles)
|
public static int wipeEntities(boolean wipe_explosives, boolean wipe_vehicles)
|
||||||
{
|
{
|
||||||
int removed = 0;
|
int removed = 0;
|
||||||
|
Loading…
Reference in New Issue
Block a user