package launchserver.auth.limiter; import com.google.gson.Gson; import com.google.gson.GsonBuilder; import com.google.gson.JsonIOException; import com.google.gson.JsonSyntaxException; import com.google.gson.annotations.Expose; import launcher.helper.IOHelper; import launcher.helper.LogHelper; import java.io.*; import java.nio.file.Path; import java.util.ArrayList; import java.util.List; public class AuthLimiterIPConfig { public static Path 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(Path file) throws Exception { ipConfigFile = file; if (IOHelper.exists(ipConfigFile)) { LogHelper.subDebug("IP List file found! Loading..."); try { Instance = gson.fromJson(IOHelper.newReader(ipConfigFile), AuthLimiterIPConfig.class); return; } catch (JsonIOException | IOException error) { LogHelper.subWarning("Ip List not reading!"); if (LogHelper.isDebugEnabled()) LogHelper.error(error); } catch (JsonSyntaxException error) { LogHelper.subWarning("Invalid file syntax!"); if (LogHelper.isDebugEnabled()) LogHelper.error(error); } } LogHelper.subWarning("IP List file not found! Creating file..."); Instance = new AuthLimiterIPConfig(); Instance.saveIPConfig(); } public void saveIPConfig() throws Exception { gson.toJson(this, IOHelper.newWriter(ipConfigFile)); } 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; } }