Implements a Proxy detection (WPAD) interface for Linux, Mac OSX and Windows. Offers a GUI for manual proxy settings and automatic WPAD detection. The GUI is based on QT.
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
79 lines
1.9 KiB
79 lines
1.9 KiB
16 years ago
|
/*! @file
|
||
|
|
||
|
@id $Id$
|
||
|
*/
|
||
|
// 1 2 3 4 5 6 7 8
|
||
|
// 45678901234567890123456789012345678901234567890123456789012345678901234567890
|
||
|
|
||
|
#ifndef PROXYFACE_HXX
|
||
|
#define PROXYFACE_HXX
|
||
|
|
||
|
#include <list>
|
||
|
#include <string>
|
||
|
|
||
|
//! auto proxy configuration
|
||
|
namespace proxy {
|
||
|
|
||
|
//! exceptions
|
||
|
namespace exc {
|
||
|
|
||
|
//! unspecific error
|
||
|
class error: std::exception {
|
||
|
public:
|
||
|
virtual const char* what() const throw() {
|
||
|
return "Auto Proxy Detection Error";
|
||
|
}
|
||
|
};
|
||
|
|
||
|
}
|
||
|
|
||
|
//! Proxy types
|
||
|
enum Type {
|
||
|
DIRECT, //< direct connection, no proxy
|
||
|
DEFAULT, //< default proxy
|
||
|
HTTP, //< HTTP proxy host
|
||
|
SOCKS //<SOCKS5 proxy
|
||
|
};
|
||
|
|
||
|
//! List of proxies, type -> url and port
|
||
|
typedef std::list< std::pair<Type, std::pair<std::string, std::string> > >
|
||
|
List;
|
||
|
|
||
|
//! Unified Interface for accessing proxy::Face
|
||
|
/*! Abstract interface, impementation for Unix and Windoze differs.
|
||
|
|
||
|
Instanciate proxy::Face, which is a typedef to your
|
||
|
platform's implementation.
|
||
|
|
||
|
@code
|
||
|
proxy::Auto pf; // keep for program life time (because of caching)
|
||
|
proxy::List pf.proxies("http://swisssign.com");
|
||
|
[...] // set proxy, read from http://swisssign.com
|
||
|
@endcode */
|
||
|
class Interface {
|
||
|
public:
|
||
|
//! Keep your instance as long as possible, because of caching.
|
||
|
Interface() {}
|
||
|
virtual ~Interface() {}
|
||
|
//! Get list of proxies for a given URL.
|
||
|
/*! @throw a child of std::exception if anything fails */
|
||
|
virtual List proxies(const std::string& url) = 0;
|
||
|
};
|
||
|
}
|
||
|
|
||
|
#ifdef WIN32
|
||
|
// use windoze proprietary winhttp
|
||
|
#include <proxyface/windoze.hxx>
|
||
|
namespace proxy {
|
||
|
typedef Windoze Face;
|
||
|
}
|
||
|
#else
|
||
|
// normal operating systems: use http://code.google.com/p/libproxy
|
||
|
#include <proxyface/unix.hxx>
|
||
|
namespace proxy {
|
||
|
typedef Unix Face;
|
||
|
}
|
||
|
#endif
|
||
|
|
||
|
#endif
|