Получение информации о прокси в Linux программно - PullRequest
3 голосов
/ 10 ноября 2009

В настоящее время я использую libproxy для получения информации о прокси (если есть) в RedHat и Debian Linux. Это не очень хорошо работает, но я знаю, что это единственный способ использовать прокси-информацию из моего кода. Мне нужно прекратить использование библиотеки, так как в большинстве случаев она не распознает прокси. Есть ли способ получить информацию прокси? Я имею в виду, есть ли файл (или группа файлов), который я могу прочитать, или переменная env, или API или системный вызов, который я могу использовать для получения информации? Код на основе GNOME в порядке, KDE может также помочь, но я ищу что-то более общее. Код C.

Теперь, прежде чем кто-нибудь спросит, я больше не хочу использовать libproxy. Период. Я не хочу начинать расследование, почему это не работает. Я действительно не хочу знать, есть ли новая версия этой библиотеки. Я знаю, что это может сработать, но я просто не хочу этим пользоваться. я не могу использовать это (только потому, что). Поэтому, пожалуйста, не указывай на меня так.

Код приветствуется.

спасибо.

Ответы [ 3 ]

6 голосов
/ 10 ноября 2009

В linux «глобальные настройки прокси» обычно представляют собой просто переменные среды, которые обычно устанавливаются в /etc/profile. Вы можете проверить эти переменные, чтобы увидеть, какой прокси установлен.

Переменные:

  • http_proxy - прокси для HTTP-соединений
  • ftp_proxy - прокси для FTP-соединений

Использование инструмента «Настройки сетевого прокси» в Gnome сохраняет информацию в базе данных GConf. Путь к ключам /system/http_proxy и /system/proxy. Вы можете прочитать о деталях этих деревьев на этой странице .

Вы можете получить доступ к базе данных GConf с помощью библиотеки API . Обратите внимание, что GConf основан на GObject. Чтобы проверить содержимое этого дерева с помощью командной строки, попробуйте следующее:

gconftool-2 -R /system/http_proxy

Это предоставит список «name = value» дерева, который может быть использован в вашем приложении. Обратите внимание, что для этого требуется вызов system(), поэтому он не рекомендуется для развернутого приложения, но может помочь вам начать работу.

1 голос
/ 05 января 2015
char* proxy = getenv("all_proxy");

Этот оператор помещает значение переменной окружения с именем all_proxy, которая используется системой как глобальный прокси, в вашу переменную C.

Чтобы напечатать его в bash, попробуйте env | grep 'all_proxy' | cut -d= -f 2.

1 голос
/ 10 ноября 2009

В GNOME есть свое место для хранения настроек прокси, и я уверен, что в KDE или любом другом DE тоже есть свое место. Может быть, вы можете найти любое упоминание о том, где настройки прокси должны храниться в стандартной базе Linux. Это может намекнуть вам на стандарт, независимо от дистрибутива или DE.

DE -> Среда рабочего стола

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...