mirror of
https://github.com/plexusorg/Module-HTTPD.git
synced 2024-12-22 16:04:59 +00:00
Add UI to punishments page
This commit is contained in:
parent
52a4264192
commit
a229e8f470
3 changed files with 95 additions and 34 deletions
|
@ -35,6 +35,7 @@ public class HTTPDModule extends PlexModule
|
||||||
@Override
|
@Override
|
||||||
public void load()
|
public void load()
|
||||||
{
|
{
|
||||||
|
//moduleConfig = new ModuleConfig(this, this.getClass().getClassLoader().getResource("settings.yml").getFile());
|
||||||
moduleConfig = new ModuleConfig(this, "settings.yml");
|
moduleConfig = new ModuleConfig(this, "settings.yml");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -11,6 +11,9 @@ import dev.plex.request.GetMapping;
|
||||||
import dev.plex.util.PlexLog;
|
import dev.plex.util.PlexLog;
|
||||||
import dev.plex.util.adapter.LocalDateTimeSerializer;
|
import dev.plex.util.adapter.LocalDateTimeSerializer;
|
||||||
import jakarta.servlet.http.HttpServletRequest;
|
import jakarta.servlet.http.HttpServletRequest;
|
||||||
|
import java.io.BufferedReader;
|
||||||
|
import java.io.FileReader;
|
||||||
|
import java.io.IOException;
|
||||||
import org.bukkit.Bukkit;
|
import org.bukkit.Bukkit;
|
||||||
import org.bukkit.OfflinePlayer;
|
import org.bukkit.OfflinePlayer;
|
||||||
|
|
||||||
|
@ -29,46 +32,87 @@ public class PunishmentsEndpoint extends AbstractServlet
|
||||||
}
|
}
|
||||||
if (request.getPathInfo() == null)
|
if (request.getPathInfo() == null)
|
||||||
{
|
{
|
||||||
return "Please specify the UUID of the player you would like to check.\nExample: /api/punishments/<uuid>";
|
/*StringBuilder contentBuilder = new StringBuilder();
|
||||||
|
PlexLog.log(this.getClass().getClassLoader().getResource("punishments.html").getPath());
|
||||||
|
try
|
||||||
|
{
|
||||||
|
BufferedReader in = new BufferedReader(new FileReader(this.getClass().getClassLoader().getResource("punishments.html").getFile().replace("!", "")));
|
||||||
|
String str;
|
||||||
|
while ((str = in.readLine()) != null)
|
||||||
|
{
|
||||||
|
contentBuilder.append(str);
|
||||||
|
}
|
||||||
|
in.close();
|
||||||
|
}
|
||||||
|
catch (IOException ignored)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
return contentBuilder.toString();*/
|
||||||
|
return """
|
||||||
|
<!DOCTYPE html>
|
||||||
|
<body>
|
||||||
|
<div style="text-align: center;">
|
||||||
|
<h2 style="font-family:Helvetica">Enter the UUID or username of the player you want to check</h2>
|
||||||
|
<input id="test" type="text" autofocus>
|
||||||
|
<button type="button" onclick="redirect()">Submit</button>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
function redirect() {
|
||||||
|
var url = document.getElementById('test').value
|
||||||
|
window.location = "punishments/" + url
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
</div>
|
||||||
|
</body>
|
||||||
|
</html>""";
|
||||||
}
|
}
|
||||||
|
UUID pathUUID;
|
||||||
|
String pathPlexPlayer;
|
||||||
|
PlexPlayer punishedPlayer;
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
UUID uuid = UUID.fromString(request.getPathInfo().replace("/", ""));
|
pathUUID = UUID.fromString(request.getPathInfo().replace("/", ""));
|
||||||
final PlexPlayer punishedPlayer = DataUtils.getPlayer(uuid);
|
punishedPlayer = DataUtils.getPlayer(pathUUID);
|
||||||
final PlexPlayer player = DataUtils.getPlayerByIP(ipAddress);
|
|
||||||
if (punishedPlayer.getPunishments().isEmpty())
|
|
||||||
{
|
|
||||||
return "This player has been a good boy. They have no punishments! Or they've never been on the server before. Take your pick.";
|
|
||||||
}
|
|
||||||
if (player == null)
|
|
||||||
{
|
|
||||||
// If the player is null, give it to them without the IPs
|
|
||||||
return new GsonBuilder().registerTypeAdapter(LocalDateTime.class, new LocalDateTimeSerializer()).setPrettyPrinting().create().toJson(punishedPlayer.getPunishments().stream().peek(punishment -> punishment.setIp("")).toList());
|
|
||||||
}
|
|
||||||
if (Plex.get().getSystem().equalsIgnoreCase("ranks"))
|
|
||||||
{
|
|
||||||
PlexLog.debug("Plex-HTTPD using ranks check");
|
|
||||||
if (!player.getRankFromString().isAtLeast(Rank.ADMIN))
|
|
||||||
{
|
|
||||||
// Don't return IPs either if the person is not an Admin or above.
|
|
||||||
return new GsonBuilder().registerTypeAdapter(LocalDateTime.class, new LocalDateTimeSerializer()).setPrettyPrinting().create().toJson(punishedPlayer.getPunishments().stream().peek(punishment -> punishment.setIp("")).toList());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else if (Plex.get().getSystem().equalsIgnoreCase("permissions"))
|
|
||||||
{
|
|
||||||
PlexLog.debug("Plex-HTTPD using permissions check");
|
|
||||||
final OfflinePlayer offlinePlayer = Bukkit.getOfflinePlayer(player.getUuid());
|
|
||||||
if (!HTTPDModule.getPermissions().playerHas(null, offlinePlayer, "plex.httpd.punishments.access"))
|
|
||||||
{
|
|
||||||
// If the person doesn't have permission, don't return IPs
|
|
||||||
return new GsonBuilder().registerTypeAdapter(LocalDateTime.class, new LocalDateTimeSerializer()).setPrettyPrinting().create().toJson(punishedPlayer.getPunishments().stream().peek(punishment -> punishment.setIp("")).toList());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return new GsonBuilder().registerTypeAdapter(LocalDateTime.class, new LocalDateTimeSerializer()).setPrettyPrinting().create().toJson(punishedPlayer.getPunishments().stream().toList());
|
|
||||||
}
|
}
|
||||||
catch (java.lang.IllegalArgumentException ignored)
|
catch (java.lang.IllegalArgumentException ignored)
|
||||||
{
|
{
|
||||||
return "Invalid UUID";
|
pathPlexPlayer = request.getPathInfo().replace("/", "");
|
||||||
|
punishedPlayer = DataUtils.getPlayer(pathPlexPlayer);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
final PlexPlayer player = DataUtils.getPlayerByIP(ipAddress);
|
||||||
|
if (punishedPlayer == null)
|
||||||
|
{
|
||||||
|
return "This player has never joined the server before.";
|
||||||
|
}
|
||||||
|
if (punishedPlayer.getPunishments().isEmpty())
|
||||||
|
{
|
||||||
|
return "This player has been a good boy. They have no punishments!";
|
||||||
|
}
|
||||||
|
if (player == null)
|
||||||
|
{
|
||||||
|
// If the player is null, give it to them without the IPs
|
||||||
|
return new GsonBuilder().registerTypeAdapter(LocalDateTime.class, new LocalDateTimeSerializer()).setPrettyPrinting().create().toJson(punishedPlayer.getPunishments().stream().peek(punishment -> punishment.setIp("")).toList());
|
||||||
|
}
|
||||||
|
if (Plex.get().getSystem().equalsIgnoreCase("ranks"))
|
||||||
|
{
|
||||||
|
PlexLog.debug("Plex-HTTPD using ranks check");
|
||||||
|
if (!player.getRankFromString().isAtLeast(Rank.ADMIN))
|
||||||
|
{
|
||||||
|
// Don't return IPs either if the person is not an Admin or above.
|
||||||
|
return new GsonBuilder().registerTypeAdapter(LocalDateTime.class, new LocalDateTimeSerializer()).setPrettyPrinting().create().toJson(punishedPlayer.getPunishments().stream().peek(punishment -> punishment.setIp("")).toList());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else if (Plex.get().getSystem().equalsIgnoreCase("permissions"))
|
||||||
|
{
|
||||||
|
PlexLog.debug("Plex-HTTPD using permissions check");
|
||||||
|
final OfflinePlayer offlinePlayer = Bukkit.getOfflinePlayer(player.getUuid());
|
||||||
|
if (!HTTPDModule.getPermissions().playerHas(null, offlinePlayer, "plex.httpd.punishments.access"))
|
||||||
|
{
|
||||||
|
// If the person doesn't have permission, don't return IPs
|
||||||
|
return new GsonBuilder().registerTypeAdapter(LocalDateTime.class, new LocalDateTimeSerializer()).setPrettyPrinting().create().toJson(punishedPlayer.getPunishments().stream().peek(punishment -> punishment.setIp("")).toList());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return new GsonBuilder().registerTypeAdapter(LocalDateTime.class, new LocalDateTimeSerializer()).setPrettyPrinting().create().toJson(punishedPlayer.getPunishments().stream().toList());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
16
src/main/resources/punishments.html
Normal file
16
src/main/resources/punishments.html
Normal file
|
@ -0,0 +1,16 @@
|
||||||
|
<!DOCTYPE html>
|
||||||
|
<body>
|
||||||
|
<div style="text-align: center;">
|
||||||
|
<h2 style="font-family:Helvetica">Enter the UUID or username of the player you want to check</h2>
|
||||||
|
<input id="test" type="text" autofocus>
|
||||||
|
<button type="button" onclick="redirect()">Submit</button>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
function redirect() {
|
||||||
|
var url = document.getElementById('test').value
|
||||||
|
window.location = "punishments/" + url
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
</div>
|
||||||
|
</body>
|
||||||
|
</html>
|
Loading…
Reference in a new issue