LINUX.ORG.RU

Заблокировать запуск браузера

 codecollaborator,


1

1

Всем привет.

Есть одна консольная утилитка, написанная на java. После завершения выполнения своей задачи она очень любит открыть в браузере страничку с результатами своей деятельности.

Использование самой этой утилитки я обложил скриптами для автоматизации процесса. Осталость только отучить ее открывать браузер - и все будет ок.

Собственно вопрос к знатокам десктопной джавы и линуксов: как отучить эту утилитку от плохого? Я могу запускать ее в специальном окружении, где /usr/bin/browser указывает на /usr/bin/do_nothing, но пока что не понимаю, что именно ей необходимо подменить.

★★★★★

Если утилитка реально мелкая, то можно её декомпилировать (или в крайнем случае байткод посмотреть), чтобы понять, как именно она браузер запускает.

CARS ★★★★
()

А браузер то она какой запускает? firefox? chrome? konqueror?

Если временно удалить этот исполнимый файл /usr/bin/firefox (лучше переместить куда-нибудь в /root, чтобы потом вернуть на место) - запустится?

Могу порекомендовать вот эту штуку - http://jd.benow.ca/

BattleCoder ★★★★★
()

Если подозрение, что оно делает через xdg-open.

Можешь попробовать так:

_BROWSER=$(xdg-settings get default-web-browser)
# вот тут есть две проблемы
# 1. default-web-browser перезаписывается для юзера, т.е. другие программы тоже могут увидеть /bin/true
# 2. /bin/true не подойдёт, так как нужен .desktop файл
xdg-settings set default-web-browser /bin/true

$JAVA_UTIL

xdg-settings set default-web-browser "$_BROWSER"

Если подход проконает, можно поискать возможность изменить поведение xdg-open с помощью переменных окружения.

KennyMinigun ★★★★★
()
Последнее исправление: KennyMinigun (всего исправлений: 2)

Возможно у вас вызов делается так:

http://stackoverflow.com/questions/5226212/how-to-open-the-default-webbrowser...

Тогда ищем вот это: http://jdk-source-code.googlecode.com/svn/trunk/jdk6u21_src/deploy/src/javaws...

Видим:

String cmd [] = new String[3];
cmd[0] = Config.getJavawsCommand();
cmd[1] = "-Xnosplash";
cmd[2] = url.toString();
Runtime.getRuntime().exec(cmd);

Находим: http://jdk-source-code.googlecode.com/svn/trunk/jdk6u21_src/deploy/src/common...

    public static String getJavawsCommand() {
        String path = getJavaHome();

        if (!path.endsWith(File.separator)) {
            path = path + File.separator;
        }
        path = path + "bin" + File.separator + "javaws" +
            Config.getInstance().getPlatformExtension();
        return path;
    }

Смотрите в сторону JAVA_HOME/bin/javaws, видимо он виновник. Если не поможет, то возможно в этой софтине напрямую запускают браузер через getRuntime().exec(), тогда тут нужно дисассмеблер байт-кода включать и смотреть, чего оно там делает.

foror ★★★★★
()

И да, этот пример для 1.6, но думаю в 7 и 8 тоже самое.

Кстати, по первой ссылке еще кучу примеров приводят, как можно открыть. Например:

runtime.exec("xdg-open " + url);
foror ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.