/src/me/cain/cfauthentication/CFAuthentication.java

https://github.com/CainFoool/CFAuthentication · Java · 223 lines · 207 code · 16 blank · 0 comment · 27 complexity · ef2f3aae11fca95408799ce966642a1c MD5 · raw file

  1. package me.cain.cfauthentication;
  2. import java.io.File;
  3. import java.io.UnsupportedEncodingException;
  4. import java.security.MessageDigest;
  5. import java.security.NoSuchAlgorithmException;
  6. import java.util.logging.Logger;
  7. import org.bukkit.Bukkit;
  8. import org.bukkit.ChatColor;
  9. import org.bukkit.command.Command;
  10. import org.bukkit.command.CommandSender;
  11. import org.bukkit.entity.Player;
  12. import org.bukkit.event.Event.Priority;
  13. import org.bukkit.event.Event.Type;
  14. import org.bukkit.plugin.PluginManager;
  15. import org.bukkit.plugin.java.JavaPlugin;
  16. import org.bukkit.util.config.Configuration;
  17. public class CFAuthentication extends JavaPlugin {
  18. Logger log = Logger.getLogger("Minecraft");
  19. public static Configuration cfg;
  20. public void onEnable()
  21. {
  22. cfg = new Configuration(new File(this.getDataFolder(), "players.yml"));
  23. log.info("[CFAuthentication] Authentication has been enabled.");
  24. log.info("[CFAuthentication] " + this.getDescription().getVersion() + " is loaded on your server.");
  25. PluginManager pm = Bukkit.getServer().getPluginManager();
  26. pm.registerEvent(Type.PLAYER_MOVE, new PListener(), Priority.Normal, this);
  27. pm.registerEvent(Type.PLAYER_JOIN, new PListener(), Priority.Normal, this);
  28. pm.registerEvent(Type.PLAYER_QUIT, new PListener(), Priority.Normal, this);
  29. pm.registerEvent(Type.PLAYER_CHAT, new PListener(), Priority.Normal, this);
  30. pm.registerEvent(Type.ENTITY_DAMAGE, new EListener(), Priority.Normal, this);
  31. pm.registerEvent(Type.BLOCK_BREAK, new BListener(), Priority.Normal, this);
  32. pm.registerEvent(Type.BLOCK_PLACE, new BListener(), Priority.Normal, this);
  33. cfg.load();
  34. cfg.save();
  35. }
  36. public void onDisable()
  37. {
  38. log.info("[CFAuthentication] Authentication has been disabled.");
  39. }
  40. public static String hex(byte[] array) {
  41. StringBuffer sb = new StringBuffer();
  42. for (int i = 0; i < array.length; ++i) {
  43. sb.append(Integer.toHexString((array[i] & 0xFF) | 0x100).toUpperCase().substring(1,3));
  44. }
  45. return sb.toString();
  46. }
  47. public static String md5(String message) {
  48. try {
  49. MessageDigest md = MessageDigest.getInstance("MD5");
  50. return hex (md.digest(message.getBytes("CP1252")));
  51. } catch (NoSuchAlgorithmException e) { } catch (UnsupportedEncodingException e) { }
  52. return null;
  53. }
  54. public boolean onCommand(CommandSender s, Command c, String l, String [] args)
  55. {
  56. Player p = ((Player) s);
  57. if(l.equalsIgnoreCase("login"))
  58. {
  59. if(cfg.getProperty("player." + p.getName() + ".loggedin").equals(true))
  60. {
  61. p.sendMessage(ChatColor.RED + "Error: You are already logged in.");
  62. }
  63. else
  64. {
  65. if(args.length < 1)
  66. {
  67. p.sendMessage("/login password");
  68. }
  69. else
  70. {
  71. if(cfg.getProperty("player." + p.getName() + ".password") != null)
  72. {
  73. if(cfg.getProperty("player." + p.getName() + ".password").equals(md5(args[0])))
  74. {
  75. cfg.setProperty("player." + p.getName() + ".loggedin", true);
  76. p.sendMessage(ChatColor.GREEN + "Successfully logged in.");
  77. log.info("[CFAuthentication] " + p.getName() + " has logged in.");
  78. cfg.save();
  79. }
  80. else
  81. {
  82. p.sendMessage(ChatColor.RED + "Error: Incorrect password.");
  83. }
  84. }
  85. else
  86. {
  87. p.sendMessage(ChatColor.RED + "Error: You must register first.");
  88. }
  89. }
  90. }
  91. }
  92. if(l.equalsIgnoreCase("register"))
  93. {
  94. if(cfg.getProperty("player." + p.getName() + ".password") != null)
  95. {
  96. p.sendMessage(ChatColor.RED + "Error: You are already registered.");
  97. }
  98. else
  99. {
  100. if(args.length < 1)
  101. {
  102. p.sendMessage("/register [password]");
  103. }
  104. else
  105. {
  106. cfg.setProperty("player." + p.getName() + ".password", md5(args[0]));
  107. p.sendMessage(ChatColor.GREEN + "Successfully registered.");
  108. log.info("[CFAuthentication] " + p.getName() + " successfully registered.");
  109. cfg.setProperty("player." + p.getName() + ".loggedin", true);
  110. cfg.save();
  111. Bukkit.getServer().broadcastMessage(ChatColor.GREEN + p.getName() + " has registered!");
  112. }
  113. }
  114. }
  115. if(l.equalsIgnoreCase("unregister"))
  116. {
  117. if(p.isOp())
  118. {
  119. if(args.length < 1)
  120. {
  121. p.sendMessage("/unregister [name]");
  122. }
  123. else
  124. {
  125. if(cfg.getProperty("player." + args[0]) != null)
  126. {
  127. cfg.removeProperty("player." + args[0]);
  128. p.sendMessage(ChatColor.GREEN + args[0] + " has been unregistered!");
  129. log.info("[CFAuthentication] " + args[0] + " has been unregistered.");
  130. cfg.save();
  131. if(Bukkit.getServer().getPlayer(args[0]).isOnline())
  132. {
  133. Bukkit.getServer().getPlayer(args[0]).kickPlayer("You have been unregistered.");
  134. }
  135. else
  136. {
  137. return false;
  138. }
  139. }
  140. else
  141. {
  142. p.sendMessage(ChatColor.RED + "Error: This player never registered before.");
  143. }
  144. }
  145. }
  146. else
  147. {
  148. p.sendMessage(ChatColor.RED + "Error: You must be OP to unregister people.");
  149. }
  150. }
  151. if(l.equalsIgnoreCase("changepassword"))
  152. {
  153. if(args.length < 2)
  154. {
  155. p.sendMessage(ChatColor.RED + "/changepassword [old] [new]");
  156. }
  157. else
  158. {
  159. if(cfg.getProperty("player." + p.getName()) != null)
  160. {
  161. if(cfg.getProperty("player." + p.getName() + ".password").equals(md5(args[0])))
  162. {
  163. cfg.setProperty("player." + p.getName() + ".password", md5(args[1]));
  164. p.kickPlayer("Password changed! Login to re-authenticate.");
  165. cfg.save();
  166. }
  167. else
  168. {
  169. p.sendMessage(ChatColor.RED + "Error: Incorrect Password.");
  170. }
  171. }
  172. else
  173. {
  174. p.sendMessage(ChatColor.RED + "Error: Please register first.");
  175. }
  176. }
  177. }
  178. if(l.equalsIgnoreCase("forceregister"))
  179. {
  180. if(args.length < 2)
  181. {
  182. p.sendMessage(ChatColor.RED + "/forceregister [username] [password]");
  183. }
  184. else
  185. {
  186. if(p.isOp())
  187. {
  188. if(cfg.getProperty("player." + args[0]) != null)
  189. {
  190. p.sendMessage(ChatColor.RED + "Error: This account already exists.");
  191. }
  192. else
  193. {
  194. cfg.setProperty("player." + args[0] + ".password", md5(args[1]));
  195. p.sendMessage(ChatColor.GREEN + "Force-registered " + args[0] + "!");
  196. cfg.save();
  197. }
  198. }
  199. else
  200. {
  201. p.sendMessage(ChatColor.RED + "Error: You must be OP to use this.");
  202. }
  203. }
  204. }
  205. return false;
  206. }
  207. }