예제 #1
0
 private void commandLogin(final CommandSender sender, final String[] args)
     throws CrazyCommandException {
   if (sender instanceof ConsoleCommandSender) throw new CrazyCommandExecutorException(false);
   if (args.length == 0) throw new CrazyCommandUsageException("/login <Passwort...>");
   final Player player = (Player) sender;
   final String password = ChatHelper.listingString(args);
   final LoginPlayerData data = datas.get(player.getName().toLowerCase());
   final CrazyLoginPreLoginEvent event = new CrazyLoginPreLoginEvent(this, player, data);
   getServer().getPluginManager().callEvent(event);
   if (event.isCancelled()) {
     getServer()
         .getPluginManager()
         .callEvent(new CrazyLoginLoginFailEvent(this, data, player, LoginFailReason.CANCELLED));
     sendLocaleMessage("LOGIN.FAILED", player);
     return;
   }
   if (data == null) {
     getServer()
         .getPluginManager()
         .callEvent(new CrazyLoginLoginFailEvent(this, data, player, LoginFailReason.NO_ACCOUNT));
     sendLocaleMessage("REGISTER.HEADER", player);
     sendLocaleMessage("REGISTER.MESSAGE", player);
     return;
   }
   if (!data.login(password)) {
     getServer()
         .getPluginManager()
         .callEvent(
             new CrazyLoginLoginFailEvent(this, data, player, LoginFailReason.WRONG_PASSWORD));
     broadcastLocaleMessage(
         true,
         "crazylogin.warnloginfailure",
         "LOGIN.FAILEDWARN",
         player.getName(),
         player.getAddress().getAddress().getHostAddress());
     Integer fails = loginFailures.get(player.getName().toLowerCase());
     if (fails == null) fails = 0;
     fails++;
     if (fails >= autoKickLoginFailer) {
       player.kickPlayer(locale.getLocaleMessage(player, "LOGIN.FAILED"));
       fails = 0;
     } else sendLocaleMessage("LOGIN.FAILED", player);
     loginFailures.put(player.getName().toLowerCase(), fails);
     return;
   }
   getServer().getPluginManager().callEvent(new CrazyLoginLoginEvent(this, data, player));
   sendLocaleMessage("LOGIN.SUCCESS", player);
   playerListener.notifyLogin(player);
   loginFailures.remove(player.getName().toLowerCase());
   data.addIP(player.getAddress().getAddress().getHostAddress());
   if (database != null) database.save(data);
 }
예제 #2
0
 private void commandMainPassword(final CommandSender sender, final String[] args)
     throws CrazyCommandException {
   if (sender instanceof ConsoleCommandSender) throw new CrazyCommandExecutorException(false);
   final Player player = (Player) sender;
   if (!isLoggedIn(player) && hasAccount(player)) throw new CrazyCommandPermissionException();
   if (args.length == 0) {
     if (alwaysNeedPassword)
       throw new CrazyCommandUsageException("/crazylogin password <Passwort...>");
     datas.remove(player.getName().toLowerCase());
     sendLocaleMessage("PASSWORDDELETE.SUCCESS", sender);
     if (database != null) database.delete(player.getName());
     return;
   }
   LoginPlayerData data = datas.get(player.getName().toLowerCase());
   if (data == null) {
     if (!sender.hasPermission("crazylogin.register")) throw new CrazyCommandPermissionException();
     final String ip = player.getAddress().getAddress().getHostAddress();
     final int registrations = getRegistrationsPerIP(ip).size();
     if (registrations >= maxRegistrationsPerIP)
       throw new CrazyCommandExceedingLimitsException(
           "Max Registrations per IP", maxRegistrationsPerIP);
     final CrazyLoginPreRegisterEvent event = new CrazyLoginPreRegisterEvent(this, player, data);
     getServer().getPluginManager().callEvent(event);
     if (event.isCancelled()) throw new CrazyCommandPermissionException();
     data = new LoginPlayerData(player);
     datas.put(player.getName().toLowerCase(), data);
   }
   final String password = ChatHelper.listingString(args);
   if (pluginCommunicationEnabled)
     getServer().getPluginManager().callEvent(new CrazyLoginPasswordEvent(this, player, password));
   data.setPassword(password);
   data.login(password);
   sendLocaleMessage("PASSWORDCHANGE.SUCCESS", player);
   playerListener.notifyLogin(player);
   if (database != null) database.save(data);
 }
예제 #3
0
 private void commandMainMode(final CommandSender sender, final String[] args)
     throws CrazyCommandException {
   if (!sender.hasPermission("crazylogin.mode")) throw new CrazyCommandPermissionException();
   switch (args.length) {
     case 2:
       if (args[0].equalsIgnoreCase("alwaysNeedPassword")) {
         boolean newValue = false;
         if (args[1].equalsIgnoreCase("1")
             || args[1].equalsIgnoreCase("true")
             || args[1].equalsIgnoreCase("on")
             || args[1].equalsIgnoreCase("yes")) newValue = true;
         alwaysNeedPassword = newValue;
         sendLocaleMessage(
             "MODE.CHANGE", sender, "alwaysNeedPassword", alwaysNeedPassword ? "True" : "False");
         saveConfiguration();
         return;
       } else if (args[0].equalsIgnoreCase("forceSingleSession")) {
         boolean newValue = false;
         if (args[1].equalsIgnoreCase("1")
             || args[1].equalsIgnoreCase("true")
             || args[1].equalsIgnoreCase("on")
             || args[1].equalsIgnoreCase("yes")) newValue = true;
         forceSingleSession = newValue;
         sendLocaleMessage(
             "MODE.CHANGE", sender, "forceSingleSession", forceSingleSession ? "True" : "False");
         saveConfiguration();
         return;
       } else if (args[0].equalsIgnoreCase("forceSingleSessionSameIPBypass")) {
         boolean newValue = false;
         if (args[1].equalsIgnoreCase("1")
             || args[1].equalsIgnoreCase("true")
             || args[1].equalsIgnoreCase("on")
             || args[1].equalsIgnoreCase("yes")) newValue = true;
         forceSingleSessionSameIPBypass = newValue;
         sendLocaleMessage(
             "MODE.CHANGE",
             sender,
             "forceSingleSessionSameIPBypass",
             forceSingleSessionSameIPBypass ? "True" : "False");
         saveConfiguration();
         return;
       } else if (args[0].equalsIgnoreCase("autoLogout")) {
         int newValue = autoLogout;
         try {
           newValue = Integer.parseInt(args[1]);
         } catch (final NumberFormatException e) {
           throw new CrazyCommandParameterException(
               1, "Integer", "-1 = disabled", "0 = instant", "1... time in seconds");
         }
         autoLogout = Math.max(newValue, -1);
         sendLocaleMessage(
             "MODE.CHANGE",
             sender,
             "autoLogout",
             autoLogout == -1 ? "disabled" : autoLogout + " seconds");
         saveConfiguration();
         return;
       } else if (args[0].equalsIgnoreCase("autoKick")) {
         int time = autoKick;
         try {
           time = Integer.parseInt(args[1]);
         } catch (final NumberFormatException e) {
           throw new CrazyCommandParameterException(
               1, "Integer", "-1 = disabled", "Time in Seconds > 60");
         }
         autoKick = time;
         sendLocaleMessage(
             "MODE.CHANGE",
             sender,
             "autoKick",
             autoKick == -1 ? "disabled" : autoKick + " seconds");
         saveConfiguration();
         return;
       } else if (args[0].equalsIgnoreCase("autoKickUnregistered")) {
         int time = autoKickUnregistered;
         try {
           time = Integer.parseInt(args[1]);
         } catch (final NumberFormatException e) {
           throw new CrazyCommandParameterException(
               1, "Integer", "-1 = disabled", "Time in Seconds");
         }
         autoKickUnregistered = Math.max(time, -1);
         sendLocaleMessage(
             "MODE.CHANGE",
             sender,
             "autoKickUnregistered",
             autoKickUnregistered == -1 ? "disabled" : autoKickUnregistered + " seconds");
         saveConfiguration();
         return;
       } else if (args[0].equalsIgnoreCase("autoKickLoginFailer")) {
         int tries = autoKickLoginFailer;
         try {
           tries = Integer.parseInt(args[1]);
         } catch (final NumberFormatException e) {
           throw new CrazyCommandParameterException(1, "Integer", "-1 = disabled", "tries");
         }
         autoKickLoginFailer = Math.max(tries, -1);
         sendLocaleMessage(
             "MODE.CHANGE",
             sender,
             "autoKickLoginFailer",
             autoKickLoginFailer == -1 ? "disabled" : autoKickUnregistered + " tries");
         saveConfiguration();
         return;
       } else if (args[0].equalsIgnoreCase("autoKickCommandUsers")) {
         boolean newValue = false;
         if (args[1].equalsIgnoreCase("1")
             || args[1].equalsIgnoreCase("true")
             || args[1].equalsIgnoreCase("on")
             || args[1].equalsIgnoreCase("yes")) newValue = true;
         autoKickCommandUsers = newValue;
         sendLocaleMessage(
             "MODE.CHANGE",
             sender,
             "autoKickCommandUsers",
             autoKickCommandUsers ? "True" : "False");
         saveConfiguration();
         return;
       } else if (args[0].equalsIgnoreCase("blockGuestCommands")) {
         boolean newValue = false;
         if (args[1].equalsIgnoreCase("1")
             || args[1].equalsIgnoreCase("true")
             || args[1].equalsIgnoreCase("on")
             || args[1].equalsIgnoreCase("yes")) newValue = true;
         blockGuestCommands = newValue;
         sendLocaleMessage(
             "MODE.CHANGE", sender, "blockGuestCommands", blockGuestCommands ? "True" : "False");
         saveConfiguration();
         return;
       } else if (args[0].equalsIgnoreCase("resetGuestLocations")) {
         boolean newValue = false;
         if (args[1].equalsIgnoreCase("1")
             || args[1].equalsIgnoreCase("true")
             || args[1].equalsIgnoreCase("on")
             || args[1].equalsIgnoreCase("yes")) newValue = true;
         resetGuestLocations = newValue;
         if (resetGuestLocations) playerListener.clearSaveLogin(true);
         sendLocaleMessage(
             "MODE.CHANGE", sender, "resetGuestLocations", resetGuestLocations ? "True" : "False");
         saveConfiguration();
         return;
       } else if (args[0].equalsIgnoreCase("saveType")) {
         final String saveType = args[1];
         DatabaseType type = null;
         try {
           type = DatabaseType.valueOf(saveType.toUpperCase());
         } catch (final Exception e) {
           type = null;
         }
         if (type == null) throw new CrazyCommandNoSuchException("SaveType", saveType);
         sendLocaleMessage("MODE.CHANGE", sender, "saveType", saveType);
         if (type == database.getType()) return;
         getConfig().set("database.saveType", type.toString());
         setupDatabase();
         save();
         return;
       } else if (args[0].equalsIgnoreCase("autoDelete")) {
         int time = autoDelete;
         try {
           time = Integer.parseInt(args[1]);
         } catch (final NumberFormatException e) {
           throw new CrazyCommandParameterException(1, "Integer", "-1 = disabled", "Time in Days");
         }
         autoDelete = Math.max(time, -1);
         sendLocaleMessage(
             "MODE.CHANGE",
             sender,
             "autoDelete",
             autoDelete == -1 ? "disabled" : autoKick + " days");
         saveConfiguration();
         if (autoDelete != -1)
           getServer()
               .getScheduler()
               .scheduleAsyncRepeatingTask(
                   this, new DropInactiveAccountsTask(this), 20 * 60 * 60, 20 * 60 * 60 * 6);
         return;
       } else if (args[0].equalsIgnoreCase("moveRange")) {
         int range = moveRange;
         try {
           range = Integer.parseInt(args[1]);
         } catch (final NumberFormatException e) {
           throw new CrazyCommandParameterException(1, "Integer");
         }
         moveRange = Math.max(range, 0);
         sendLocaleMessage("MODE.CHANGE", sender, "moveRange", moveRange + " blocks");
         saveConfiguration();
         return;
       } else if (args[0].equalsIgnoreCase("minNameLength")) {
         int length = minNameLength;
         try {
           length = Integer.parseInt(args[1]);
         } catch (final NumberFormatException e) {
           throw new CrazyCommandParameterException(1, "Integer");
         }
         minNameLength = Math.min(Math.max(length, 1), 16);
         sendLocaleMessage("MODE.CHANGE", sender, "minNameLength", minNameLength + " characters");
         saveConfiguration();
         return;
       } else if (args[0].equalsIgnoreCase("maxNameLength")) {
         int length = maxNameLength;
         try {
           length = Integer.parseInt(args[1]);
         } catch (final NumberFormatException e) {
           throw new CrazyCommandParameterException(1, "Integer");
         }
         maxNameLength = Math.min(Math.max(length, 1), 16);
         sendLocaleMessage("MODE.CHANGE", sender, "maxNameLength", maxNameLength + " characters");
         saveConfiguration();
         return;
       }
       throw new CrazyCommandNoSuchException("Mode", args[0]);
     case 1:
       if (args[0].equalsIgnoreCase("alwaysNeedPassword")) {
         sendLocaleMessage(
             "MODE.CHANGE", sender, "alwaysNeedPassword", alwaysNeedPassword ? "True" : "False");
         return;
       } else if (args[0].equalsIgnoreCase("forceSingleSession")) {
         sendLocaleMessage(
             "MODE.CHANGE", sender, "forceSingleSession", forceSingleSession ? "True" : "False");
         return;
       } else if (args[0].equalsIgnoreCase("forceSingleSessionSameIPBypass")) {
         sendLocaleMessage(
             "MODE.CHANGE",
             sender,
             "forceSingleSessionSameIPBypass",
             forceSingleSessionSameIPBypass ? "True" : "False");
         return;
       } else if (args[0].equalsIgnoreCase("autoLogout")) {
         sendLocaleMessage(
             "MODE.CHANGE",
             sender,
             "autoLogout",
             autoLogout == -1 ? "disabled" : autoLogout + " seconds");
         return;
       } else if (args[0].equalsIgnoreCase("autoKick")) {
         sendLocaleMessage(
             "MODE.CHANGE",
             sender,
             "autoKick",
             autoKick == -1 ? "disabled" : autoKick + " seconds");
         return;
       } else if (args[0].equalsIgnoreCase("autoKickUnregistered")) {
         sendLocaleMessage(
             "MODE.CHANGE",
             sender,
             "autoKickUnregistered",
             autoKickUnregistered == -1 ? "disabled" : autoKickUnregistered + " seconds");
         return;
       } else if (args[0].equalsIgnoreCase("autoKickLoginFailer")) {
         sendLocaleMessage(
             "MODE.CHANGE",
             sender,
             "autoKickLoginFailer",
             autoKickLoginFailer == -1 ? "disabled" : autoKickUnregistered + " tries");
         return;
       } else if (args[0].equalsIgnoreCase("autoKickCommandUsers")) {
         sendLocaleMessage(
             "MODE.CHANGE",
             sender,
             "autoKickCommandUsers",
             autoKickCommandUsers ? "True" : "False");
         return;
       } else if (args[0].equalsIgnoreCase("blockGuestCommands")) {
         sendLocaleMessage(
             "MODE.CHANGE", sender, "blockGuestCommands", blockGuestCommands ? "True" : "False");
         return;
       } else if (args[0].equalsIgnoreCase("resetGuestLocations")) {
         sendLocaleMessage(
             "MODE.CHANGE", sender, "resetGuestLocations", resetGuestLocations ? "True" : "False");
         return;
       } else if (args[0].equalsIgnoreCase("saveType")) {
         sendLocaleMessage("MODE.CHANGE", sender, "saveType", database.getType().toString());
         return;
       } else if (args[0].equalsIgnoreCase("autoDelete")) {
         sendLocaleMessage(
             "MODE.CHANGE",
             sender,
             "autoDelete",
             autoDelete == -1 ? "disabled" : autoKick + " days");
         return;
       } else if (args[0].equalsIgnoreCase("moveRange")) {
         sendLocaleMessage("MODE.CHANGE", sender, "moveRange", moveRange + " blocks");
         return;
       } else if (args[0].equalsIgnoreCase("minNameLength")) {
         sendLocaleMessage("MODE.CHANGE", sender, "minNameLength", minNameLength + " characters");
         return;
       } else if (args[0].equalsIgnoreCase("maxNameLength")) {
         sendLocaleMessage("MODE.CHANGE", sender, "maxNameLength", maxNameLength + " characters");
         return;
       } else if (args[0].equalsIgnoreCase("algorithm")) {
         sendLocaleMessage("MODE.CHANGE", sender, "algorithm", encryptor.getAlgorithm());
         return;
       }
       throw new CrazyCommandNoSuchException("Mode", args[0]);
     default:
       throw new CrazyCommandUsageException("/crazylogin mode <Mode> [Value]");
   }
 }