21#if defined(Q_OS_WIN32)
30#define SETTING_TOR_EXECUTABLE "TorExecutable"
31#define SETTING_TORRC "Torrc"
32#define SETTING_CONTROL_ADDR "ControlAddr"
33#define SETTING_CONTROL_PORT "ControlPort"
34#define SETTING_SOCKET_PATH "ControlSocket"
35#define SETTING_CONTROL_METHOD "ControlMethod"
36#define SETTING_AUTH_TOKEN "AuthToken"
37#define SETTING_TOR_USER "User"
38#define SETTING_TOR_GROUP "Group"
39#define SETTING_DATA_DIRECTORY "DataDirectory"
40#define SETTING_AUTH_METHOD "AuthenticationMethod"
41#define SETTING_CONTROL_PASSWORD "ControlPassword"
42#define SETTING_USE_RANDOM_PASSWORD "UseRandomPassword"
43#define SETTING_WARN_PLAINTEXT_PORTS "WarnPlaintextPorts"
44#define SETTING_REJECT_PLAINTEXT_PORTS "RejectPlaintextPorts"
45#define SETTING_BOOTSTRAP "Bootstrap"
46#define SETTING_BOOTSTRAP_FROM "BootstrapFrom"
47#define SETTING_AUTOCONTROL "AutoControl"
50#define DEFAULT_AUTH_METHOD PasswordAuth
52#define DEFAULT_CONTROL_METHOD "ControlPort"
54#define DEFAULT_SOCKET_PATH ""
57#define TOR_ARG_CONTROL_PORT "ControlPort"
58#define TOR_ARG_TORRC "-f"
59#define TOR_ARG_DATA_DIRECTORY "DataDirectory"
60#define TOR_ARG_HASHED_PASSWORD "HashedControlPassword"
61#define TOR_ARG_COOKIE_AUTH "CookieAuthentication"
62#define TOR_ARG_SOCKSPORT "SocksPort"
65#define PASSWORD_LEN 16
72#if defined(Q_OS_WIN32)
74 if (QFileInfo(programFiles +
"\\Vidalia Bundle\\Tor\\tor.exe").exists())
76 programFiles +
"\\Vidalia Bundle\\Tor\\tor.exe");
104 QHash<QString, QString> conf;
105 QString hashedPassword;
117 switch (authMethod) {
126 if (hashedPassword.isEmpty()) {
128 *errmsg = tr(
"Failed to hash the control password.");
169 return QDir::convertSeparators(tor);
185 if (
tc &&
tc->isConnected() &&
tc->getInfo(
"config-file", torrc))
186 return QDir::convertSeparators(torrc);
204 return QHostAddress(addr);
295 if (
tc &&
tc->isConnected()) {
296 QHash<QString,QString> conf;
299 if (
tc->getConf(conf)) {
324 QList<QVariant> ports;
328 out << port.toUInt();
338 QList<QVariant> warnList;
339 foreach (quint16 port, ports) {
351 QList<QVariant> ports;
355 out << port.toUInt();
365 QList<QVariant> rejectList;
366 foreach (quint16 port, ports) {
392 QString str = authMethod.toLower();
418 while (salt.size() < 8) {
#define SETTING_USE_RANDOM_PASSWORD
#define SETTING_REJECT_PLAINTEXT_PORTS
#define TOR_ARG_HASHED_PASSWORD
#define DEFAULT_SOCKET_PATH
#define SETTING_WARN_PLAINTEXT_PORTS
#define SETTING_CONTROL_METHOD
#define SETTING_CONTROL_PASSWORD
#define SETTING_BOOTSTRAP
#define SETTING_CONTROL_PORT
#define TOR_ARG_COOKIE_AUTH
#define SETTING_TOR_EXECUTABLE
#define SETTING_CONTROL_ADDR
#define TOR_ARG_SOCKSPORT
#define DEFAULT_CONTROL_METHOD
#define SETTING_AUTOCONTROL
#define SETTING_AUTH_METHOD
#define SETTING_DATA_DIRECTORY
#define DEFAULT_AUTH_METHOD
#define SETTING_SOCKET_PATH
#define SETTING_BOOTSTRAP_FROM
virtual void setValue(const QString &key, const QVariant &value)
TorControl * torControl() const
virtual QVariant localValue(const QString &key) const
virtual QVariant value(const QString &key) const
static Method fromString(QString method)
static QString toString(ControlMethod::Method method)
bool setConf(QHash< QString, QString > map, QString *errmsg=0)
void setControlPassword(const QString &password)
void setBootstrap(bool enabled)
bool apply(QString *errmsg=0)
QString getExecutable() const
QList< quint16 > getWarnPlaintextPorts() const
bool useRandomPassword() const
void setUseRandomPassword(bool useRandomPassword)
static QString randomPassword()
QString getControlPassword() const
void setControlAddress(const QHostAddress &addr)
QString toString(AuthenticationMethod type) const
quint16 getControlPort() const
TorSettings(TorControl *torControl=0)
AuthenticationMethod toAuthenticationMethod(const QString &authMethod) const
QHostAddress getControlAddress() const
QList< quint16 > getRejectPlaintextPorts() const
void setTorrc(const QString &torrc)
void setAuthenticationMethod(AuthenticationMethod method)
QString getDataDirectory() const
void setControlMethod(ControlMethod::Method method)
void setSocketPath(const QString &path)
void setDataDirectory(const QString &dataDir)
void setBootstrapFrom(const QString &from)
QString bootstrapFrom() const
void setControlPort(quint16 port)
QString getSocketPath() const
void setRejectPlaintextPorts(const QList< quint16 > &ports)
void setWarnPlaintextPorts(const QList< quint16 > &ports)
ControlMethod::Method getControlMethod() const
void setExecutable(const QString &torExecutable)
bool autoControlPort() const
void setAutoControlPort(const bool autoControl)
AuthenticationMethod getAuthenticationMethod() const
static QString hashPassword(const QString &password)
QVariant defaultValue(const QString &key) const
void setDefault(const QString &key, const QVariant &val)
static QString dataDirectory()
QByteArray crypto_secret_to_key(const QString &secret, const QByteArray &salt, quint8 c)
QString crypto_rand_string(int len)
QByteArray crypto_rand_bytes(int len)
QString base16_encode(const QByteArray &buf)
QString win32_program_files_folder()