PageRenderTime 52ms CodeModel.GetById 23ms RepoModel.GetById 1ms app.codeStats 0ms

/src/com/james137137/LolnetIpProtect/LolnetIpProtect.java

https://bitbucket.org/james137137/lolnetipprotect
Java | 301 lines | 243 code | 48 blank | 10 comment | 58 complexity | 2f9fc6d899b44bbfb36dadba66e235ee MD5 | raw file
  1. /*
  2. * To change this template, choose Tools | Templates
  3. * and open the template in the editor.
  4. */
  5. package com.james137137.LolnetIpProtect;
  6. import java.io.File;
  7. import java.io.IOException;
  8. import java.net.InetAddress;
  9. import java.net.UnknownHostException;
  10. import java.util.List;
  11. import java.util.logging.Logger;
  12. import org.bukkit.ChatColor;
  13. import org.bukkit.command.Command;
  14. import org.bukkit.command.CommandSender;
  15. import org.bukkit.configuration.file.FileConfiguration;
  16. import org.bukkit.plugin.java.JavaPlugin;
  17. import org.mcstats.Metrics;
  18. /**
  19. *
  20. * @author James
  21. */
  22. public class LolnetIpProtect extends JavaPlugin {
  23. static final Logger log = Logger.getLogger("Minecraft");
  24. @Override
  25. public void onEnable() {
  26. getServer().getPluginManager().registerEvents(new LolnetIpProtectListener(this), this);
  27. log.info("LolnetIP: enabled");
  28. try {
  29. Metrics metrics = new Metrics(this);
  30. metrics.start();
  31. } catch (IOException e) {
  32. // Failed to submit the stats :-(
  33. System.out.println(e.toString());
  34. }
  35. //IpProtectedPlayerList = config.getStringList("Playerlist");
  36. }
  37. public void onDisable() {
  38. log.info("LolnetIpProtect: disabled");
  39. }
  40. public void removeConfigFile(CommandSender sender)
  41. {
  42. try{
  43. File file = new File("plugins/"+this.getName()+"/config.yml");
  44. if(file.delete()){
  45. sender.sendMessage(file.getName() + " is deleted!");
  46. }else{
  47. sender.sendMessage("Delete operation is failed.");
  48. }
  49. }catch(Exception e){
  50. e.printStackTrace();
  51. }
  52. }
  53. @Override
  54. public boolean onCommand(CommandSender sender, Command command, String commandLabel, String[] args) {
  55. String commandName = command.getName().toLowerCase();
  56. String[] trimmedArgs = args;
  57. if (commandName.equalsIgnoreCase("lolnetIP")) {
  58. if ((sender.isOp()) || (sender == getServer().getConsoleSender())) {
  59. if (args.length == 0) {
  60. sender.sendMessage(ChatColor.YELLOW + "[LolnetIpProtect]: " + ChatColor.RESET + "commands: ");
  61. sender.sendMessage("/lolnetIP [add,remove,list,mode,removeConfigFile]");
  62. } else if (args[0].equalsIgnoreCase("add")) {
  63. addPlayerIP(sender, args);
  64. } else if (args[0].equalsIgnoreCase("list")) {
  65. listPlayerIP(sender, args);
  66. } else if (args[0].equalsIgnoreCase("remove")) {
  67. RemovePlayerIP(sender, args);
  68. } else if (args[0].equalsIgnoreCase("Mode")) {
  69. ModePlayerIP(sender, args);
  70. } else if (args[0].equalsIgnoreCase("RemoveConfigFile")) {
  71. removeConfigFile(sender);
  72. } else {
  73. sender.sendMessage(ChatColor.YELLOW + "[LolnetIpProtect]: " + ChatColor.RESET + "commands: ");
  74. sender.sendMessage("/lolnetIP [add,remove,list,mode,removeConfigFile]");
  75. }
  76. } else {
  77. sender.sendMessage(ChatColor.RED + "I'm sorry, but you do not have permission to perform this command. Please contact the server administrators if you believe that this is in error.");
  78. }
  79. }
  80. return false;
  81. }
  82. public boolean isIpProtected(String playerName) {
  83. FileConfiguration config = getConfig();
  84. playerName = playerName.toLowerCase();
  85. List<String> IpProtectedPlayerList = config.getStringList("LolnetIP.Playerlist");
  86. for (int i = 0; i < IpProtectedPlayerList.size(); i++) {
  87. if (playerName.equalsIgnoreCase(IpProtectedPlayerList.get(i))) {
  88. return true;
  89. }
  90. }
  91. return false;
  92. }
  93. public boolean isCorrectIP(String playerName, String currentIP) throws UnknownHostException {
  94. FileConfiguration config = getConfig();
  95. playerName = playerName.toLowerCase();
  96. String IP;
  97. List<String> IpProtectedPlayerList = config.getStringList("LolnetIP." + playerName);
  98. for (int i = 0; i < IpProtectedPlayerList.size(); i++) {
  99. IP = IpProtectedPlayerList.get(i);
  100. if (Character.getNumericValue(IP.charAt(0)) > 9) {
  101. InetAddress dynAddress = java.net.InetAddress.getByName(IP);
  102. IP = dynAddress.getHostAddress();
  103. }
  104. if (IP.equalsIgnoreCase(currentIP)) {
  105. return true;
  106. }
  107. }
  108. return false;
  109. }
  110. public void addPlayerIP(CommandSender sender, String[] args) {
  111. if (args.length != 3) {
  112. sender.sendMessage("Error; must be /lolnetIP add username IP");
  113. return;
  114. }
  115. FileConfiguration config = getConfig();
  116. List<String> PlayerIPList;
  117. String playerName = args[1].toLowerCase();
  118. String IP = args[2];
  119. if (!isIpProtected(playerName)) {
  120. List<String> IpProtectedPlayerList = config.getStringList("LolnetIP.Playerlist");
  121. IpProtectedPlayerList.add(playerName);
  122. config.set("LolnetIP.Playerlist", IpProtectedPlayerList);
  123. }
  124. PlayerIPList = config.getStringList("LolnetIP." + playerName);
  125. PlayerIPList.add(IP);
  126. config.set("LolnetIP." + playerName, PlayerIPList);
  127. sender.sendMessage("IP: " + IP + " added for player: " + playerName);
  128. saveConfig();
  129. }
  130. public void RemovePlayerIP(CommandSender sender, String[] args) {
  131. if (args.length <= 1 && args.length > 3) {
  132. sender.sendMessage("Error; must be /lolnetIP remove username IP or /lolnetIP remove username");
  133. return;
  134. }
  135. FileConfiguration config = getConfig();
  136. List<String> PlayerIPList;
  137. String playerName = args[1].toLowerCase();
  138. if (!isIpProtected(playerName))
  139. {
  140. sender.sendMessage("player has not been added yet. please use /lolnetip add");
  141. return;
  142. }
  143. if (args.length == 2) {
  144. RemovePlayer(playerName);
  145. return;
  146. }
  147. String IP = args[2];
  148. if (isIpProtected(playerName)) {
  149. PlayerIPList = config.getStringList("LolnetIP." + playerName);
  150. for (int i = 0; i < PlayerIPList.size(); i++) {
  151. if (PlayerIPList.get(i).equalsIgnoreCase(IP)) {
  152. PlayerIPList.remove(i);
  153. sender.sendMessage("IP removed");
  154. }
  155. }
  156. if (IP.equalsIgnoreCase("all"))
  157. {
  158. PlayerIPList.clear();
  159. sender.sendMessage("All IPs removed from player: " + playerName);
  160. }
  161. if (PlayerIPList.isEmpty()) {
  162. RemovePlayer(playerName);
  163. }
  164. config.set("LolnetIP." + playerName, PlayerIPList);
  165. saveConfig();
  166. } else {
  167. sender.sendMessage("Player not found. Try /lolnetIP list for spelling");
  168. }
  169. }
  170. public void listPlayerIP(CommandSender sender, String[] args) {
  171. FileConfiguration config = getConfig();
  172. List<String> IpProtectedPlayerList = config.getStringList("LolnetIP.Playerlist");
  173. if (IpProtectedPlayerList.isEmpty()) {
  174. sender.sendMessage("Protected IP player List is empty");
  175. return;
  176. }
  177. if (args.length == 1) {
  178. if (IpProtectedPlayerList.isEmpty()) {
  179. sender.sendMessage("player is not IP Protected");
  180. return;
  181. }
  182. sender.sendMessage("Current Player list with IP protection:");
  183. String message = "";
  184. for (int i = 0; i < IpProtectedPlayerList.size(); i++) {
  185. message += IpProtectedPlayerList.get(i)+ ":" + GetPlayerMode(IpProtectedPlayerList.get(i)) + ", ";
  186. }
  187. sender.sendMessage(message);
  188. } else if (args.length == 2) {
  189. String playerName = args[1].toLowerCase();
  190. List<String> PlayerIPList = config.getStringList("LolnetIP." + playerName);
  191. sender.sendMessage(playerName + " has the following IPs");
  192. for (int i = 0; i < PlayerIPList.size(); i++) {
  193. sender.sendMessage("*" +PlayerIPList.get(i) + "*");
  194. }
  195. } else {
  196. sender.sendMessage(ChatColor.RED + "something is missing. Type /lolnetIP list or /lolnetIP list playername");
  197. }
  198. }
  199. private void RemovePlayer(String playerName) {
  200. FileConfiguration config = getConfig();
  201. List<String> IpProtectedPlayerList = config.getStringList("LolnetIP.Playerlist");
  202. for (int i = 0; i < IpProtectedPlayerList.size(); i++) {
  203. if (IpProtectedPlayerList.get(i).equalsIgnoreCase(playerName)) {
  204. IpProtectedPlayerList.remove(i);
  205. break;
  206. }
  207. }
  208. config.set("LolnetIP.Playerlist", IpProtectedPlayerList);
  209. saveConfig();
  210. }
  211. private void ModePlayerIP(CommandSender sender, String[] args) {
  212. if (args.length != 3) {
  213. sender.sendMessage("Error; must be /lolnetIP mode username [protect,warn]");
  214. return;
  215. }
  216. FileConfiguration config = getConfig();
  217. String playerName = args[1].toLowerCase();
  218. if (!isIpProtected(playerName))
  219. {
  220. sender.sendMessage("player has not been added yet. please use /lolnetip add");
  221. return;
  222. }
  223. String Mode = args[2];
  224. if (!Mode.equalsIgnoreCase("protect") && !Mode.equalsIgnoreCase("warn"))
  225. {
  226. sender.sendMessage("Error; must be /lolnetIP mode username [protect,warn]");
  227. return;
  228. }
  229. if (Mode.equalsIgnoreCase("protect"))
  230. {
  231. config.set("lolnetIP.ProtectionMode" +playerName,"Protect");
  232. saveConfig();
  233. }else if (Mode.equalsIgnoreCase("warn"))
  234. {
  235. config.set("lolnetIP.ProtectionMode" +playerName,"Warn");
  236. saveConfig();
  237. }
  238. sender.sendMessage("Mode Changed to: " + Mode+ " for player: " + playerName);
  239. }
  240. public String GetPlayerMode(String playerName)
  241. {
  242. String Mode;
  243. FileConfiguration config = getConfig();
  244. Mode = config.getString("lolnetIP.ProtectionMode" +playerName);
  245. if (Mode==null)
  246. {
  247. config.set("lolnetIP.ProtectionMode" +playerName,"Warn");
  248. Mode = "Warn";
  249. saveConfig();
  250. }
  251. return Mode;
  252. }
  253. }