2009-11-10 9 views
2

현재 libproxy를 사용하여 RedHat 및 Debian Linux에서 프록시 정보 (있는 경우)를 얻고 있습니다. 모든 기능이 제대로 작동하지는 않지만 코드에서 프록시 정보를 가져 오는 데 사용할 수있는 유일한 방법입니다. 대부분의 경우 프록시를 인식하지 못하므로 lib 사용을 중단해야합니다. 프록시 정보를 얻을 수있는 방법이 있습니까? 내 말은, 내가 읽을 수있는 파일 (또는 파일 그룹), 또는 정보를 얻기 위해 사용할 수있는 env 변수 또는 API 또는 시스템 호출이 있다는 것입니다. Gnome 기반 코드는 괜찮습니다. KDE도 도움이 될 수 있지만 좀 더 일반적인 것을 찾고 있습니다. 코드는 C입니다.프로그래밍 방식으로 리눅스에서 프록시 정보 얻기

이제 누가 묻기 전에 더 이상 libproxy를 사용하고 싶지 않습니다. 기간. 왜 작동하지 않는지 조사하기 시작하고 싶지 않습니다. 나는 그 lib의 새로운 버전이 있는지 정말로 알고 싶지 않다. 나는 그것이 효과가있을 것이라는 것을 안다, 나는 다만 그것을 사용하고 싶지 않는다. 나는 그것을 사용할 수 없다. 그러니 제발 저를 그렇게 지적하지 마십시오.

코드가 인정됩니다.

감사합니다.

답변

5

리눅스에서 "글로벌 프록시 설정"은 일반적으로 보통 /etc/profile에 설정된 환경 변수 일뿐입니다. 이러한 변수를 검사하여 어떤 프록시가 설정되어 있는지 확인할 수 있습니다.

변수는 다음과 같습니다

  • http_proxy-
  • ftp_proxy HTTP 연결에 대한 프록시 - FTP 연결

그놈이는 GConf에 정보를 저장 아래에있는 네트워크 프록시 환경 설정 도구를 사용하기위한 프록시 데이터 베이스. 키 경로는 /system/http_proxy/system/proxy입니다. 이 나무의 세부 사항을 this page에서 읽을 수 있습니다.

library API을 사용하여 GConf 데이터베이스에 액세스 할 수 있습니다. GConf는 GObject를 기반으로합니다. 명령 줄을 사용하여이 트리의 내용을 검사하려면 다음을 수행합니다

gconftool-2 -R /system/http_proxy 

이 응용 프로그램에서 사용할 수 있습니다 트리의 "이름 = 값"목록을 제공합니다. 이 경우 system() 호출이 필요하므로 배포 된 응용 프로그램에는 권장되지 않지만 시작하는 데 도움이 될 수 있습니다.

+0

이는 IMHO 명령 줄 도구에만 유효합니다. –

+0

@Amit, 무엇을 의미합니까? – wonderer

+0

@wonderer : 변수 http_proxy & ftp_proxy는 원래 답변의 유일한 콘텐츠였습니다. –

1

GNOME에는 프록시 설정을 저장할 자체의 위치가 있으며, KDE 또는 다른 DE에도 자체 위치가 있습니다. 프록시 설정이 Linux Standard Base에 저장되어야하는 위치에 대한 언급을 찾을 수 있습니다. 그것은 당신에게 Distro 또는 DE와 관계없이 그것을하는 표준을 암시 할 수 있습니다.

은 DE -> 데스크탑 환경

+0

감사. 그것이 제가 처음으로 확인한 곳입니다 (Linux Standard Base). 정보가 없습니다 ... – wonderer

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

이 문은 C 변수에 글로벌 프록시 시스템에 의해 사용되는 all_proxy라는 환경 변수의 값을 넣습니다.

bash에서 인쇄하려면 env | grep 'all_proxy' | cut -d= -f 2을 시도하십시오.

관련 문제