Skip to content

Commit

Permalink
Properly deal with SOCKS proxies
Browse files Browse the repository at this point in the history
Fixes #10
  • Loading branch information
Daniel Molkentin committed May 29, 2013
1 parent ed8cdf6 commit 7d1bd9d
Show file tree
Hide file tree
Showing 4 changed files with 133 additions and 117 deletions.
11 changes: 8 additions & 3 deletions src/mirall/application.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -555,9 +555,14 @@ void Application::setupProxy()
}

case QNetworkProxy::Socks5Proxy: {
proxy = QNetworkProxy::HttpProxy;
cfg.setProxyType(proxy);
// fall through
QNetworkProxy proxy;
proxy.setType(QNetworkProxy::Socks5Proxy);
proxy.setHostName(cfg.proxyHostName());
proxy.setPort(cfg.proxyPort());
proxy.setUser(cfg.proxyUser());
proxy.setPassword(cfg.proxyPassword());
QNetworkProxy::setApplicationProxy(proxy);
break;
}
case QNetworkProxy::HttpProxy:{
QNetworkProxy proxy;
Expand Down
3 changes: 2 additions & 1 deletion src/mirall/mirallconfigfile.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -525,7 +525,8 @@ void MirallConfigFile::setProxyType(int proxyType,

settings.setValue(QLatin1String("type"), proxyType);

if (proxyType == QNetworkProxy::HttpProxy) {
if (proxyType == QNetworkProxy::HttpProxy ||
proxyType == QNetworkProxy::Socks5Proxy) {
settings.setValue(QLatin1String("host"), host);
settings.setValue(QLatin1String("port"), port);
settings.setValue(QLatin1String("user"), user);
Expand Down
35 changes: 20 additions & 15 deletions src/mirall/proxydialog.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -35,12 +35,23 @@ Mirall::ProxyDialog::ProxyDialog( QWidget* parent )

// load current proxy settings
Mirall::MirallConfigFile cfgFile;
if (cfgFile.proxyType() == QNetworkProxy::NoProxy)
switch (cfgFile.proxyType()) {
case QNetworkProxy::NoProxy:
noProxyRadioButton->setChecked(true);
else if (cfgFile.proxyType() == QNetworkProxy::DefaultProxy)
break;
case QNetworkProxy::DefaultProxy:
systemProxyRadioButton->setChecked(true);
else if (cfgFile.proxyType() == QNetworkProxy::HttpProxy)
break;
case QNetworkProxy::Socks5Proxy:
cbSocks->setChecked(true);
// fall through
case QNetworkProxy::HttpProxy:
case QNetworkProxy::HttpCachingProxy:
manualProxyRadioButton->setChecked(true);
break;
default:
break;
}

hostLineEdit->setText(cfgFile.proxyHostName());
portSpinBox->setValue(cfgFile.proxyPort());
Expand All @@ -66,18 +77,12 @@ void Mirall::ProxyDialog::saveSettings()
}
if (manualProxyRadioButton->isChecked())
{
if (authRequiredcheckBox->isChecked())
{
QString user = userLineEdit->text();
QString pass = passwordLineEdit->text();
cfgFile.setProxyType(QNetworkProxy::HttpProxy, hostLineEdit->text(),
portSpinBox->value(), user, pass);
}
else
{
cfgFile.setProxyType(QNetworkProxy::HttpProxy, hostLineEdit->text(),
portSpinBox->value(), QString::null, QString::null);
}
int proxyType = cbSocks->isChecked() ? QNetworkProxy::Socks5Proxy
: QNetworkProxy::HttpProxy;
QString user = userLineEdit->text();
QString pass = passwordLineEdit->text();
cfgFile.setProxyType(proxyType, hostLineEdit->text(),
portSpinBox->value(), user, pass);
}

}
Expand Down
201 changes: 103 additions & 98 deletions src/mirall/proxydialog.ui
Original file line number Diff line number Diff line change
Expand Up @@ -6,38 +6,15 @@
<rect>
<x>0</x>
<y>0</y>
<width>465</width>
<height>291</height>
<width>405</width>
<height>319</height>
</rect>
</property>
<property name="windowTitle">
<string>Proxy Settings</string>
</property>
<layout class="QGridLayout" name="gridLayout">
<item row="1" column="0">
<spacer name="verticalSpacer">
<property name="orientation">
<enum>Qt::Vertical</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>20</width>
<height>40</height>
</size>
</property>
</spacer>
</item>
<item row="2" column="0">
<widget class="QDialogButtonBox" name="buttonBox">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="standardButtons">
<set>QDialogButtonBox::Cancel|QDialogButtonBox::Ok</set>
</property>
</widget>
</item>
<item row="0" column="0">
<layout class="QVBoxLayout" name="verticalLayout_3">
<item>
<layout class="QVBoxLayout" name="verticalLayout_2">
<item>
<layout class="QVBoxLayout" name="verticalLayout">
Expand Down Expand Up @@ -76,18 +53,82 @@
<bool>true</bool>
</property>
<layout class="QFormLayout" name="formLayout">
<property name="fieldGrowthPolicy">
<enum>QFormLayout::AllNonFixedFieldsGrow</enum>
</property>
<property name="verticalSpacing">
<number>6</number>
</property>
<property name="leftMargin">
<number>40</number>
</property>
<property name="topMargin">
<number>0</number>
</property>
<item row="0" column="0">
<widget class="QLabel" name="hostLabel">
<property name="text">
<string>Host</string>
</property>
</widget>
</item>
<item row="0" column="1">
<widget class="QLineEdit" name="hostLineEdit">
<property name="maximumSize">
<size>
<width>300</width>
<height>16777215</height>
</size>
</property>
<property name="text">
<string/>
</property>
</widget>
</item>
<item row="1" column="0">
<widget class="QLabel" name="portLabel">
<property name="text">
<string>Port</string>
</property>
</widget>
</item>
<item row="1" column="1">
<layout class="QHBoxLayout" name="horizontalLayout">
<item>
<widget class="QSpinBox" name="portSpinBox">
<property name="enabled">
<bool>true</bool>
</property>
<property name="sizePolicy">
<sizepolicy hsizetype="Maximum" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="minimum">
<number>1</number>
</property>
<property name="maximum">
<number>65535</number>
</property>
<property name="value">
<number>8080</number>
</property>
</widget>
</item>
<item>
<widget class="QCheckBox" name="cbSocks">
<property name="sizePolicy">
<sizepolicy hsizetype="Minimum" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="text">
<string>Use as SOCKSv5 proxy</string>
</property>
</widget>
</item>
</layout>
</item>
<item row="2" column="1">
<widget class="QCheckBox" name="authRequiredcheckBox">
<property name="enabled">
<bool>true</bool>
</property>
<property name="text">
<string>Proxy server requires password</string>
</property>
</widget>
</item>
<item row="3" column="0">
<widget class="QLabel" name="proxyUserLabel">
<property name="enabled">
Expand Down Expand Up @@ -143,70 +184,34 @@
</property>
</widget>
</item>
<item row="1" column="0">
<widget class="QLabel" name="portLabel">
<property name="text">
<string>Port</string>
</property>
</widget>
</item>
<item row="0" column="0">
<widget class="QLabel" name="hostLabel">
<property name="text">
<string>Host</string>
</property>
</widget>
</item>
<item row="0" column="1">
<widget class="QLineEdit" name="hostLineEdit">
<property name="maximumSize">
<size>
<width>300</width>
<height>16777215</height>
</size>
</property>
<property name="text">
<string/>
</property>
</widget>
</item>
<item row="2" column="1">
<widget class="QCheckBox" name="authRequiredcheckBox">
<property name="enabled">
<bool>true</bool>
</property>
<property name="text">
<string>Proxy server requires password</string>
</property>
</widget>
</item>
<item row="1" column="1">
<widget class="QSpinBox" name="portSpinBox">
<property name="enabled">
<bool>true</bool>
</property>
<property name="sizePolicy">
<sizepolicy hsizetype="Maximum" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="minimum">
<number>1</number>
</property>
<property name="maximum">
<number>65535</number>
</property>
<property name="value">
<number>8080</number>
</property>
</widget>
</item>
</layout>
</widget>
</item>
</layout>
</item>
<item>
<spacer name="verticalSpacer">
<property name="orientation">
<enum>Qt::Vertical</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>20</width>
<height>40</height>
</size>
</property>
</spacer>
</item>
<item>
<widget class="QDialogButtonBox" name="buttonBox">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="standardButtons">
<set>QDialogButtonBox::Cancel|QDialogButtonBox::Ok</set>
</property>
</widget>
</item>
</layout>
</widget>
<resources/>
Expand Down

0 comments on commit 7d1bd9d

Please sign in to comment.