package launchserver.auth.limiter; import com.google.gson.Gson; import com.google.gson.GsonBuilder; import com.google.gson.annotations.Expose; import com.google.gson.stream.JsonReader; import launcher.helper.LogHelper; import java.io.File; import java.io.FileNotFoundException; import java.io.FileReader; import java.io.FileWriter; import java.util.ArrayList; import java.util.List; public class AuthLimiterIPConfig { public static File ipConfigFile; public static Gson gson = new GsonBuilder().setPrettyPrinting().excludeFieldsWithoutExposeAnnotation().create(); public static AuthLimiterIPConfig Instance; @Expose List<String> allowIp = new ArrayList<>(); @Expose List<String> blockIp = new ArrayList<>(); public static void load(File file) throws Exception { ipConfigFile = file; if (file.exists()) { LogHelper.subDebug("IP List file found! Loading..."); if (file.length() > 2) { try { AuthLimiterIPConfig authLimiterIPConfig = gson.fromJson(new JsonReader(new FileReader(file)), AuthLimiterIPConfig.class); Instance = authLimiterIPConfig; return; } catch (FileNotFoundException error) { LogHelper.subWarning("Ip List not reading!"); if (LogHelper.isDebugEnabled()) LogHelper.error(error); } } } LogHelper.subWarning("IP List file not found! Creating file..."); AuthLimiterIPConfig IpConfig = new AuthLimiterIPConfig(); Instance = IpConfig; IpConfig.saveIPConfig(); } public void saveIPConfig() throws Exception { if (!ipConfigFile.exists()) ipConfigFile.createNewFile(); FileWriter fw = new FileWriter(ipConfigFile, false); fw.write(gson.toJson(this)); fw.close(); } public List<String> getAllowIp() { return allowIp; } public AuthLimiterIPConfig addAllowIp(String allowIp) { this.allowIp.add(allowIp); return this; } public AuthLimiterIPConfig delAllowIp(String allowIp) { this.allowIp.removeIf(e -> e.equals(allowIp)); return this; } public List<String> getBlockIp() { return blockIp; } public AuthLimiterIPConfig addBlockIp(String blockIp) { this.blockIp.add(blockIp); return this; } public AuthLimiterIPConfig delBlockIp(String blockIp) { this.blockIp.removeIf(e -> e.equals(blockIp)); return this; } }