2009-11-10 3 views
2

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

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

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

спасибо.

ответ

5

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

Переменные:

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

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

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

gconftool-2 -R /system/http_proxy 

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

+0

Они действительны только для инструментов командной строки, IMHO. – 2009-11-10 16:18:21

+0

@ Допустим, что вы имеете в виду? – wonderer

+0

@wonderer: переменные http_proxy & ftp_proxy, которые были единственным содержимым в исходном ответе. – 2009-11-10 16:24:50

1

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

DE -> Desktop Environment

+0

Спасибо. Это одно из первых мест, которые я проверил (стандартная база Linux). Нет информации ... – wonderer

1
char* proxy = getenv("all_proxy"); 

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

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

Смежные вопросы