19 #define SETTING_FASCIST_FIREWALL "FascistFirewall"
20 #define SETTING_REACHABLE_ADDRESSES "ReachableAddresses"
23 #define SETTING_PROXY_TYPE "ProxyType"
24 #define SETTING_PROXY_ADDRESS "ProxyAddress"
25 #define SETTING_PROXY_USERNAME "ProxyUsername"
26 #define SETTING_PROXY_PASSWORD "ProxyPassword"
29 #define SETTING_HTTPS_PROXY "HttpsProxy"
30 #define SETTING_HTTPS_PROXY_AUTH "HttpsProxyAuthenticator"
31 #define SETTING_SOCKS4_PROXY "Socks4Proxy"
32 #define SETTING_SOCKS5_PROXY "Socks5Proxy"
33 #define SETTING_SOCKS5_USERNAME "Socks5ProxyUsername"
34 #define SETTING_SOCKS5_PASSWORD "Socks5ProxyPassword"
36 #define SETTING_USE_BRIDGES "UseBridges"
37 #define SETTING_BRIDGE_LIST "Bridge"
38 #define SETTING_UPDATE_BRIDGES "UpdateBridgesFromAuthority"
39 #define SETTING_TUNNEL_DIR_CONNS "TunnelDirConns"
40 #define SETTING_PREFER_TUNNELED_DIR_CONNS "PreferTunneledDirConns"
56 QStringList() <<
"*:80" <<
"*:443");
65 QMultiHash<QString, QString> conf;
72 QString socks4, socks5, http, https;
73 QString addr, user, pass, auth;
79 if (!user.isEmpty() || !pass.isEmpty())
80 auth = QString(
"%1:%2").arg(user).arg(pass);
97 if (torVersion >= 0x020201) {
113 }
else if (torVersion <= 0x020021) {
120 if (torVersion >= 0x020003) {
126 foreach (QString bridge, bridges) {
159 QList<quint16> reachablePorts;
160 QStringList lineList;
164 foreach (QString line, lineList) {
165 foreach (QString address, line.split(
",", QString::SkipEmptyParts)) {
166 QStringList parts = address.split(
":");
167 if (parts.size() >= 2) {
168 quint16 port = parts.at(1).toUInt(&ok);
170 reachablePorts << port;
174 return reachablePorts;
182 if (!reachablePorts.isEmpty()) {
183 QStringList portList;
184 foreach (quint16 port, reachablePorts) {
185 portList <<
"*:" + QString::number(port);
317 QString str = type.toLower();
323 if (str ==
"httphttps")