Можно ли использовать ubuntu-system-service для настройки общесистемного прокси-сервера?

Я использую Ubuntu-Studio 12.10 с использованием GNOME-3 и пытаюсь настроить bash-скрипт в /etc/network/if-up.d для автоматической настройки параметров прокси-сервера на основе SSID сеть, к которой я подключен. Я не могу заставить gsettings работать автоматически, используя любое из следующего:

gsettings set org.gnome.system.proxy mode "manual"
sudo -u blaine gsettings set org.gnome.system.proxy mode "manual"
su blaine -c 'gsettings set org.gnome.system.proxy mode "manual"'

Кроме того, я бы хотел, чтобы скрипт изменил переменные окружения http_proxy, https_proxy и так далее, чтобы такие вещи, как Wine, могли их распознавать без необходимости выходить из системы и входить в нее, а пять дней поиска в Google говорят, что это невозможно.

За исключением - я знаю, что это можно сделать. Кнопка «Применить общесистемную» в Unity делает все это без необходимости повторной регистрации. Некоторые дальнейшие исследования выявили эту статью , в которой предлагается доступ к кнопке com.ubuntu.systemservice.setProxy, который предположительно является частью пакета ubuntu-system-service.

Можно ли использовать ubuntu-system-service для установки общесистемного прокси через bash, терминал или подобное?

1
задан 28 March 2013 в 00:52

2 ответа

Если кто-то все еще ищет решение, вот что я нашел. Ubuntu предоставляет службу DBus через пакет ubuntu-system-service, но я не знаком с DBus.

Однако, проверяя исходный код (разве Open Source не подходит?), Действие setProxy делает 2 вещи:

  1. Изменение общесистемной среды
  2. Изменение прокси настройки, используемые APT

В первом случае файл в / etc / environment изменяется. Второй случай немного сложнее - файлы в /etc/apt/apt.conf.d сканируются на наличие строк, соответствующих Acquire :::: Proxy, где значения заменяются. Если совпадающих строк нет, то в каждый файл APT conf добавляется прокси-строка (как указано выше).

Соответствующие файлы находятся в UbuntuSystemService / backend.py (~ строка 209 @ версия 0.2.5).

Отвечая на ваш вопрос, вы можете либо внести те же изменения, что и ubuntu-system-service, либо попытаться выяснить это с помощью DBus:

dbus-send --system --print-reply --dest=com.ubuntu.SystemService --type=method_call / com.ubuntu.SystemService.set_proxy string:'http' string:'127.0.0.1:8080'

По какой-то причине я продолжаю получать Ложь как ответ на этот вопрос, но вы можете понять это.

0
ответ дан 28 March 2013 в 00:52

Возвращаемое значение true:

sudo dbus-send --system --print-reply --dest = com.ubuntu.SystemService --type = method_call / com.ubuntu.SystemService.set_proxy string: ' http 'string:' http://127.0.0.1:8081 '

, и я выясняю, что вам нужно добавить префикс к схеме: http из этого кода:

https://github.com/linuxmint/cinnamon-control-center/blob/master/debian/patches/50_ubuntu_systemwide_proxy.patch#L81

0
ответ дан 28 March 2013 в 00:52

Другие вопросы по тегам:

Похожие вопросы: