1. Вы находитесь в сообществе Rubukkit. Мы - администраторы серверов Minecraft, разрабатываем собственные плагины и переводим на различные языки плагины наших коллег из других стран.
    Скрыть объявление
Скрыть объявление
В преддверии глобального обновления, мы проводим исследования, которые помогут нам сделать опыт пользования форумом ещё удобнее. Помогите нам, примите участие!

Решено Краш сервера через /sudo.

Тема в разделе "Помощь", создана пользователем Mr_Leordo95, 13 июн 2019.

Статус темы:
Закрыта.
  1. Автор темы
    Mr_Leordo95

    Mr_Leordo95 Активный участник Пользователь

    Баллы:
    61
    Имя в Minecraft:
    Mr_Leordo95
    Здравствуйте, нашёл баг в плагине OpsRegion и LimitedWorld. Что за баг? Первые игрок который имеет доступ к //set выделяет зону топориком, а второй игрок прописывает //sudo (ник первого) /set 0, и удаляются блоки в выделенной зоне. Таким образом обходя защиту OpsRegion и LimitedWorld. Помогите как пофиксить?
     
    Последнее редактирование: 13 июн 2019
  2. Sasha_@131

    Sasha_@131 Активный участник Пользователь

    Баллы:
    76
    Не давать права на команду set и sudo
     
  3. alexandrage

    alexandrage Старожил Пользователь

    Баллы:
    173
    Запретом sudo, мог бы и сам догадаться. Или переписать плагин ess.
     
  4. alexandrage

    alexandrage Старожил Пользователь

    Баллы:
    173
    Код:
    package com.earth2me.essentials.commands;
    
    import net.ess3.api.MaxMoneyException;
    import com.earth2me.essentials.ChargeException;
    import java.util.Locale;
    import org.bukkit.command.CommandSender;
    import com.earth2me.essentials.User;
    import com.earth2me.essentials.I18n;
    import com.earth2me.essentials.CommandSource;
    import org.bukkit.Server;
    
    public class Commandsudo extends EssentialsLoopCommand {
        public Commandsudo() {
            super("sudo");
        }
    
        public void run(final Server server, final CommandSource sender, final String commandLabel, final String[] args)
                throws Exception {
            if (args.length < 2) {
                throw new NotEnoughArgumentsException();
            }
            final String[] arguments = new String[args.length - 1];
            if (arguments.length > 0) {
                System.arraycopy(args, 1, arguments, 0, args.length - 1);
            }
            final String command = getFinalArg(arguments, 0);
            final boolean multiple = !sender.isPlayer()
                    || this.ess.getUser(sender.getPlayer()).isAuthorized("essentials.sudo.multiple");
            sender.sendMessage(I18n.tl("sudoRun", new Object[] { args[0], command, "" }));
            this.loopOnlinePlayers(server, sender, multiple, multiple, args[0], new String[] { command });
        }
    
        protected void updatePlayer(final Server server, final CommandSource sender, final User user, final String[] args)
                throws NotEnoughArgumentsException, PlayerExemptException, ChargeException, MaxMoneyException {
            if (user.getName().equals(sender.getSender().getName())) {
                return;
            }
            if (user.isAuthorized("essentials.sudo.exempt") && sender.isPlayer()) {
                sender.sendMessage(I18n.tl("sudoExempt", new Object[] { user.getName() }));
                return;
            }
            if (args[0].toLowerCase(Locale.ENGLISH).startsWith("c:")) {
                user.getBase().chat(getFinalArg(args, 0).substring(2));
                return;
            }
            final String command = getFinalArg(args, 0);
            if (command != null && command.length() > 0) {
                class SudoCommandTask implements Runnable {
                    @Override
                    public void run() {
                        try {
                            //TODO fix
                            user.getBase().performCommand(command);
                            //Commandsudo.this.ess.getServer().dispatchCommand((CommandSender) user.getBase(), command);
                            //TODO fix
                        } catch (Exception e) {
                            sender.sendMessage(I18n.tl("errorCallingCommand", new Object[] { command }));
                        }
                    }
                }
                this.ess.scheduleSyncDelayedTask((Runnable) new SudoCommandTask());
            }
        }
    }
     
  5. Автор темы
    Mr_Leordo95

    Mr_Leordo95 Активный участник Пользователь

    Баллы:
    61
    Имя в Minecraft:
    Mr_Leordo95
    Спасибо выручили)
     
Статус темы:
Закрыта.

Поделиться этой страницей