[Author Prev][Author Next][Thread Prev][Thread Next][Author Index][Thread Index]
[tor-commits] [vidalia/alpha] Adds a non-exit option to the sharing tab
commit 552ea29ed456c9275f075863b15166135ddb3967
Author: Tomas Touceda <chiiph@xxxxxxxxxx>
Date: Sat Apr 30 18:18:18 2011 -0300
Adds a non-exit option to the sharing tab
Set middleman as the default exitpolicy for everything, the user has to
explicitly check boxes to allow exit traffic.
---
src/vidalia/config/ServerPage.cpp | 94 ++++++++++++++++++++-------------
src/vidalia/config/ServerPage.ui | 9 +++-
src/vidalia/config/ServerSettings.cpp | 18 ++++++-
src/vidalia/config/ServerSettings.h | 6 ++
4 files changed, 89 insertions(+), 38 deletions(-)
diff --git a/src/vidalia/config/ServerPage.cpp b/src/vidalia/config/ServerPage.cpp
index d42fb70..16e244a 100644
--- a/src/vidalia/config/ServerPage.cpp
+++ b/src/vidalia/config/ServerPage.cpp
@@ -89,6 +89,8 @@ ServerPage::ServerPage(QWidget *parent)
this, SLOT(customRateChanged()));
connect(ui.rdoClientMode, SIGNAL(toggled(bool)),
this, SLOT(serverModeChanged(bool)));
+ connect(ui.rdoNonExitMode, SIGNAL(toggled(bool)),
+ this, SLOT(serverModeChanged(bool)));
connect(ui.rdoServerMode, SIGNAL(toggled(bool)),
this, SLOT(serverModeChanged(bool)));
connect(ui.rdoBridgeMode, SIGNAL(toggled(bool)),
@@ -217,10 +219,12 @@ ServerPage::serverModeChanged(bool enabled)
{
Q_UNUSED(enabled);
bool bridgeEnabled = ui.rdoBridgeMode->isChecked();
+ bool relayEnabled = ui.rdoServerMode->isChecked() ||
+ ui.rdoNonExitMode->isChecked();
/* Show the tab menu only if the user is running a normal relay or a bridge
* relay. */
- ui.tabsMenu->setVisible(ui.rdoServerMode->isChecked() || bridgeEnabled);
+ ui.tabsMenu->setVisible(relayEnabled || bridgeEnabled);
/* Disable the Exit Policies tab when bridge relay mode is selected */
ui.tabsMenu->setTabEnabled(2, !bridgeEnabled);
@@ -236,6 +240,13 @@ ServerPage::serverModeChanged(bool enabled)
ui.lineDirPort->setEnabled(!bridgeEnabled);
ui.chkMirrorDirectory->setEnabled(!bridgeEnabled);
+
+ ui.chkWebsites->setEnabled(!ui.rdoNonExitMode->isChecked());
+ ui.chkSecWebsites->setEnabled(!ui.rdoNonExitMode->isChecked());
+ ui.chkMail->setEnabled(!ui.rdoNonExitMode->isChecked());
+ ui.chkIRC->setEnabled(!ui.rdoNonExitMode->isChecked());
+ ui.chkIM->setEnabled(!ui.rdoNonExitMode->isChecked());
+ ui.chkMisc->setEnabled(!ui.rdoNonExitMode->isChecked());
}
/** Returns true if the user has changed their server settings since the
@@ -270,7 +281,9 @@ ServerPage::save(QString &errmsg)
/* Force the bandwidth rate limits to validate */
customRateChanged();
- if (ui.rdoServerMode->isChecked() || ui.rdoBridgeMode->isChecked()) {
+ if (ui.rdoServerMode->isChecked() ||
+ ui.rdoNonExitMode->isChecked() ||
+ ui.rdoBridgeMode->isChecked()) {
/* A server must have an ORPort and a nickname */
if (ui.lineServerPort->text().isEmpty() ||
ui.lineServerNickname->text().isEmpty()) {
@@ -289,7 +302,9 @@ ServerPage::save(QString &errmsg)
/* "Server" is enabled whether we're a bridge or normal relay. "Bridge" is
* only enabled if we're a bridge (obviously). */
_settings->setServerEnabled(ui.rdoServerMode->isChecked()
+ || ui.rdoNonExitMode->isChecked()
|| ui.rdoBridgeMode->isChecked());
+ _settings->setNonExitEnabled(ui.rdoNonExitMode->isChecked());
_settings->setBridgeEnabled(ui.rdoBridgeMode->isChecked());
if (ui.rdoBridgeMode->isChecked())
_settings->setPublishServerDescriptor(ui.chkPublishBridgeAddress->isChecked());
@@ -320,6 +335,8 @@ ServerPage::load()
{
if (_settings->isBridgeEnabled())
ui.rdoBridgeMode->setChecked(true);
+ else if (_settings->isNonExitEnabled())
+ ui.rdoNonExitMode->setChecked(true);
else if (_settings->isServerEnabled())
ui.rdoServerMode->setChecked(true);
else
@@ -460,41 +477,46 @@ ServerPage::loadExitPolicies()
void
ServerPage::saveExitPolicies()
{
- ExitPolicy exitPolicy;
- bool rejectUnchecked = ui.chkMisc->isChecked();
-
- /* If misc is checked, then reject unchecked items and leave the default exit
- * policy alone. Else, accept only checked items and end with reject *:*,
- * replacing the default exit policy. */
- if (ui.chkWebsites->isChecked() && !rejectUnchecked) {
- exitPolicy.addAcceptedPorts(PORTS_HTTP);
- } else if (!ui.chkWebsites->isChecked() && rejectUnchecked) {
- exitPolicy.addRejectedPorts(PORTS_HTTP);
- }
- if (ui.chkSecWebsites->isChecked() && !rejectUnchecked) {
- exitPolicy.addAcceptedPorts(PORTS_HTTPS);
- } else if (!ui.chkSecWebsites->isChecked() && rejectUnchecked) {
- exitPolicy.addRejectedPorts(PORTS_HTTPS);
- }
- if (ui.chkMail->isChecked() && !rejectUnchecked) {
- exitPolicy.addAcceptedPorts(PORTS_MAIL);
- } else if (!ui.chkMail->isChecked() && rejectUnchecked) {
- exitPolicy.addRejectedPorts(PORTS_MAIL);
- }
- if (ui.chkIRC->isChecked() && !rejectUnchecked) {
- exitPolicy.addAcceptedPorts(PORTS_IRC);
- } else if (!ui.chkIRC->isChecked() && rejectUnchecked) {
- exitPolicy.addRejectedPorts(PORTS_IRC);
- }
- if (ui.chkIM->isChecked() && !rejectUnchecked) {
- exitPolicy.addAcceptedPorts(PORTS_IM);
- } else if (!ui.chkIM->isChecked() && rejectUnchecked) {
- exitPolicy.addRejectedPorts(PORTS_IM);
- }
- if (!ui.chkMisc->isChecked()) {
- exitPolicy.addPolicy(Policy(Policy::RejectAll));
+ ExitPolicy *exitPolicy;
+ if(ui.rdoNonExitMode->isChecked()) {
+ exitPolicy = new ExitPolicy(ExitPolicy::Middleman);
+ } else {
+ exitPolicy = new ExitPolicy();
+ bool rejectUnchecked = ui.chkMisc->isChecked();
+
+ /* If misc is checked, then reject unchecked items and leave the default exit
+ * policy alone. Else, accept only checked items and end with reject *:*,
+ * replacing the default exit policy. */
+ if (ui.chkWebsites->isChecked() && !rejectUnchecked) {
+ exitPolicy->addAcceptedPorts(PORTS_HTTP);
+ } else if (!ui.chkWebsites->isChecked() && rejectUnchecked) {
+ exitPolicy->addRejectedPorts(PORTS_HTTP);
+ }
+ if (ui.chkSecWebsites->isChecked() && !rejectUnchecked) {
+ exitPolicy->addAcceptedPorts(PORTS_HTTPS);
+ } else if (!ui.chkSecWebsites->isChecked() && rejectUnchecked) {
+ exitPolicy->addRejectedPorts(PORTS_HTTPS);
+ }
+ if (ui.chkMail->isChecked() && !rejectUnchecked) {
+ exitPolicy->addAcceptedPorts(PORTS_MAIL);
+ } else if (!ui.chkMail->isChecked() && rejectUnchecked) {
+ exitPolicy->addRejectedPorts(PORTS_MAIL);
+ }
+ if (ui.chkIRC->isChecked() && !rejectUnchecked) {
+ exitPolicy->addAcceptedPorts(PORTS_IRC);
+ } else if (!ui.chkIRC->isChecked() && rejectUnchecked) {
+ exitPolicy->addRejectedPorts(PORTS_IRC);
+ }
+ if (ui.chkIM->isChecked() && !rejectUnchecked) {
+ exitPolicy->addAcceptedPorts(PORTS_IM);
+ } else if (!ui.chkIM->isChecked() && rejectUnchecked) {
+ exitPolicy->addRejectedPorts(PORTS_IM);
+ }
+ if (!ui.chkMisc->isChecked()) {
+ exitPolicy->addPolicy(Policy(Policy::RejectAll));
+ }
}
- _settings->setExitPolicy(exitPolicy);
+ _settings->setExitPolicy(*exitPolicy);
}
/** Called when the user selects a new value from the rate combo box. */
diff --git a/src/vidalia/config/ServerPage.ui b/src/vidalia/config/ServerPage.ui
index 6584058..c922710 100644
--- a/src/vidalia/config/ServerPage.ui
+++ b/src/vidalia/config/ServerPage.ui
@@ -22,9 +22,16 @@
</widget>
</item>
<item>
+ <widget class="QRadioButton" name="rdoNonExitMode">
+ <property name="text">
+ <string>Relay traffic inside the Tor network (non-exit relay)</string>
+ </property>
+ </widget>
+ </item>
+ <item>
<widget class="QRadioButton" name="rdoServerMode">
<property name="text">
- <string>Relay traffic for the Tor network</string>
+ <string>Relay traffic for the Tor network (exit relay)</string>
</property>
</widget>
</item>
diff --git a/src/vidalia/config/ServerSettings.cpp b/src/vidalia/config/ServerSettings.cpp
index 22de6d6..2fde4f3 100644
--- a/src/vidalia/config/ServerSettings.cpp
+++ b/src/vidalia/config/ServerSettings.cpp
@@ -43,6 +43,7 @@
#define SETTING_BANDWIDTH_RATE "BandwidthRate"
#define SETTING_BANDWIDTH_BURST "BandwidthBurst"
#define SETTING_BRIDGE_RELAY "BridgeRelay"
+#define SETTING_NONEXIT_RELAY "NonExitRelay"
#define SETTING_ENABLE_UPNP "EnableUPnP"
#define SETTING_RELAY_BANDWIDTH_RATE "RelayBandwidthRate"
#define SETTING_RELAY_BANDWIDTH_BURST "RelayBandwidthBurst"
@@ -71,7 +72,7 @@ ServerSettings::ServerSettings(TorControl *torControl)
setDefault(SETTING_BANDWIDTH_BURST, 10485760);
setDefault(SETTING_RELAY_BANDWIDTH_BURST, 10485760);
setDefault(SETTING_EXITPOLICY,
- ExitPolicy(ExitPolicy::Default).toString());
+ ExitPolicy(ExitPolicy::Middleman).toString());
setDefault(SETTING_ENABLE_UPNP, false);
setDefault(SETTING_BRIDGE_RELAY, false);
setDefault(SETTING_PUBLISH_SERVER_DESCRIPTOR, "1");
@@ -258,6 +259,21 @@ ServerSettings::isBridgeEnabled()
return value(SETTING_BRIDGE_RELAY).toBool() && isServerEnabled();
}
+/** Sets to <b>enabled</b> whether Tor should be a non-exit node when acting as
+ * a server. */
+void
+ServerSettings::setNonExitEnabled(bool enabled)
+{
+ setValue(SETTING_NONEXIT_RELAY, enabled);
+}
+
+/** Returns true if Tor is configured to act as a non-exit node. */
+bool
+ServerSettings::isNonExitEnabled()
+{
+ return value(SETTING_NONEXIT_RELAY).toBool() && isServerEnabled();
+}
+
/** Sets the server's ORPort. */
void
ServerSettings::setORPort(quint16 orPort)
diff --git a/src/vidalia/config/ServerSettings.h b/src/vidalia/config/ServerSettings.h
index 79a5db9..f5d5b9a 100644
--- a/src/vidalia/config/ServerSettings.h
+++ b/src/vidalia/config/ServerSettings.h
@@ -42,6 +42,12 @@ public:
/** Returns true if Tor is configured to act as a bridge node. */
bool isBridgeEnabled();
+ /** Sets to <b>enabled</b> whether Tor should be a non-exit node when acting
+ * as a server. */
+ void setNonExitEnabled(bool enable);
+ /** Returns true if Tor is configured to act as a non-exit node. */
+ bool isNonExitEnabled();
+
/** Sets the server's ORPort value. */
void setORPort(quint16 orPort);
/** Gets the server's ORPort value. */
_______________________________________________
tor-commits mailing list
tor-commits@xxxxxxxxxxxxxxxxxxxx
https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-commits