[Author Prev][Author Next][Thread Prev][Thread Next][Author Index][Thread Index]
[vidalia-svn] r1972: o Widgets are now sorted alphabetical o Bug fixing (group ma (in branches/hidden-services: . src/config src/entity src/gui/config src/gui/help/content/de src/gui/help/content/en src/lang)
Author: klimachristian
Date: 2007-10-09 12:04:01 -0400 (Tue, 09 Oct 2007)
New Revision: 1972
Modified:
branches/hidden-services/CHANGELOG
branches/hidden-services/src/config/hiddenservicesettings.cpp
branches/hidden-services/src/config/hiddenservicesettings.h
branches/hidden-services/src/entity/service.cpp
branches/hidden-services/src/entity/service.h
branches/hidden-services/src/gui/config/adduserdialog.ui
branches/hidden-services/src/gui/config/configdialog.ui
branches/hidden-services/src/gui/config/groupdialog.ui
branches/hidden-services/src/gui/config/hiddenservicepage.cpp
branches/hidden-services/src/gui/config/hiddenservicepage.h
branches/hidden-services/src/gui/config/hiddenservicepage.ui
branches/hidden-services/src/gui/config/userdialog.ui
branches/hidden-services/src/gui/help/content/de/config.html
branches/hidden-services/src/gui/help/content/en/config.html
branches/hidden-services/src/lang/vidalia_de.ts
Log:
o Widgets are now sorted alphabetical
o Bug fixing (group management)
o Completion of language independence
Modified: branches/hidden-services/CHANGELOG
===================================================================
--- branches/hidden-services/CHANGELOG 2007-10-05 16:01:58 UTC (rev 1971)
+++ branches/hidden-services/CHANGELOG 2007-10-09 16:04:01 UTC (rev 1972)
@@ -1,3 +1,8 @@
+0.0.17 09-Oct-2007
+ o Widgets are now sorted alphabetical
+ o Bug fixing (group management)
+ o Completion of language independence
+
0.0.16 05-Oct-2007
o Logic for group management
o Language independence (german, english)
Modified: branches/hidden-services/src/config/hiddenservicesettings.cpp
===================================================================
--- branches/hidden-services/src/config/hiddenservicesettings.cpp 2007-10-05 16:01:58 UTC (rev 1971)
+++ branches/hidden-services/src/config/hiddenservicesettings.cpp 2007-10-09 16:04:01 UTC (rev 1972)
@@ -31,7 +31,7 @@
#define SERVER_HIDDENSERVICE_DIR "HiddenServiceDir"
-//HiddenService Settings
+/*HiddenService Settings */
#define SETTING_SERVICE_LOCAL_PORT "HiddenService/LocalPort"
#define SETTING_SERVICE_ADDRESS "HiddenService/ServiceAddress"
#define SETTING_TOR_SERVICES "HiddenService/Services"
@@ -40,7 +40,7 @@
/** Constructor.
- * \param torControl a TorControl object used to read and apply the server
+ * \param torControl a TorControl object used to read and apply the hiddenService
* configuration settings.
*/
HiddenServiceSettings::HiddenServiceSettings(TorControl *torControl)
@@ -100,7 +100,7 @@
setValue(SETTING_SERVICE_ADDRESS, addr.toString());
}
-/* Set HiddenServiceDir and send it to the Tor Controller */
+/** Set HiddenServiceDir and send it to the Tor Controller */
void
HiddenServiceSettings::apply(QString value, QString *errmsg)
{
@@ -108,7 +108,7 @@
_torControl->saveConf(errmsg);
}
-/* Get Tor Version */
+/** Get Tor Version */
QString
HiddenServiceSettings::getTorVersion()
{
@@ -118,11 +118,12 @@
}
-/* Unpublish all HiddenServices */
+/** Unpublish all HiddenServices */
void
HiddenServiceSettings::unpublishAllServices(QString *errmsg)
{
- _torControl->resetConf(SERVER_HIDDENSERVICE_DIR, errmsg);
+ _torControl->resetConf(SERVER_HIDDENSERVICE_DIR, errmsg);
+ _torControl->saveConf(errmsg);
}
Modified: branches/hidden-services/src/config/hiddenservicesettings.h
===================================================================
--- branches/hidden-services/src/config/hiddenservicesettings.h 2007-10-05 16:01:58 UTC (rev 1971)
+++ branches/hidden-services/src/config/hiddenservicesettings.h 2007-10-09 16:04:01 UTC (rev 1972)
@@ -54,19 +54,19 @@
/** Set ServiceList to serialise it */
void setServices(ServiceList services);
- /* Set HiddenServiceHir and send it to the Tor Controller */
+ /** Set HiddenServiceHir and send it to the Tor Controller */
void apply(QString value, QString *errmsg = 0);
- /* Get HiddenServiceDir Directorys */
+ /** Get HiddenServiceDir Directorys */
QString getHiddenServiceDirectorys();
- /* Unpublish all HiddenServices */
+ /** Unpublish all HiddenServices */
void unpublishAllServices(QString *errmsg);
- /* Get the DataDir from the Tor Controller */
+ /** Get the DataDir from the Tor Controller */
QString getDataDirectory();
- /* Get Tor Version */
+ /** Get Tor Version */
QString getTorVersion();
private:
Modified: branches/hidden-services/src/entity/service.cpp
===================================================================
--- branches/hidden-services/src/entity/service.cpp 2007-10-05 16:01:58 UTC (rev 1971)
+++ branches/hidden-services/src/entity/service.cpp 2007-10-09 16:04:01 UTC (rev 1972)
@@ -80,7 +80,6 @@
switch (version) {
case V0: return "V0";
case V2: return "V2";
- case V0V2: return "V0V2";
default: break;
}
return "V0";
@@ -94,9 +93,7 @@
if (authenticationVersion == toString(Service::V0))
version = Service::V0;
else if (authenticationVersion == toString(Service::V2))
- version = Service::V2;
- else
- version = Service::V0V2;
+ version = Service::V2;
return version;
}
Modified: branches/hidden-services/src/entity/service.h
===================================================================
--- branches/hidden-services/src/entity/service.h 2007-10-05 16:01:58 UTC (rev 1971)
+++ branches/hidden-services/src/entity/service.h 2007-10-09 16:04:01 UTC (rev 1972)
@@ -35,8 +35,7 @@
/** Available Tor authentication methods. */
enum AuthenticationVersion {
V0,
- V2,
- V0V2
+ V2
};
/** Default constructor. */
Service();
@@ -63,7 +62,7 @@
QList<Group> groups() const { return _groups; }
/** Returns the deployed status of a service */
- bool deployed() const { return _deployed; }
+ bool isDeployed() const { return _deployed; }
/** Sets the name of a service */
void setServiceName(QString serviceName);
Modified: branches/hidden-services/src/gui/config/adduserdialog.ui
===================================================================
--- branches/hidden-services/src/gui/config/adduserdialog.ui 2007-10-05 16:01:58 UTC (rev 1971)
+++ branches/hidden-services/src/gui/config/adduserdialog.ui 2007-10-09 16:04:01 UTC (rev 1972)
@@ -9,6 +9,18 @@
<height>300</height>
</rect>
</property>
+ <property name="minimumSize" >
+ <size>
+ <width>400</width>
+ <height>300</height>
+ </size>
+ </property>
+ <property name="maximumSize" >
+ <size>
+ <width>400</width>
+ <height>300</height>
+ </size>
+ </property>
<property name="palette" >
<palette>
<active>
@@ -746,19 +758,6 @@
<property name="title" >
<string>All Users</string>
</property>
- <widget class="QListWidget" name="addUserWidget" >
- <property name="geometry" >
- <rect>
- <x>20</x>
- <y>30</y>
- <width>211</width>
- <height>231</height>
- </rect>
- </property>
- <property name="alternatingRowColors" >
- <bool>true</bool>
- </property>
- </widget>
<widget class="QWidget" name="layoutWidget" >
<property name="geometry" >
<rect>
@@ -1513,8 +1512,32 @@
</item>
</layout>
</widget>
+ <widget class="QListWidget" name="addUserWidget" >
+ <property name="geometry" >
+ <rect>
+ <x>20</x>
+ <y>30</y>
+ <width>211</width>
+ <height>231</height>
+ </rect>
+ </property>
+ <property name="toolTip" >
+ <string><html><head><meta name="qrichtext" content="1" /><style type="text/css">
+p, li { white-space: pre-wrap; }
+</style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;">
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">List of users, which are applied in other services</p></body></html></string>
+ </property>
+ <property name="alternatingRowColors" >
+ <bool>true</bool>
+ </property>
+ </widget>
</widget>
</widget>
+ <tabstops>
+ <tabstop>addUserWidget</tabstop>
+ <tabstop>okButton</tabstop>
+ <tabstop>cancelButton</tabstop>
+ </tabstops>
<resources/>
<connections>
<connection>
Modified: branches/hidden-services/src/gui/config/configdialog.ui
===================================================================
--- branches/hidden-services/src/gui/config/configdialog.ui 2007-10-05 16:01:58 UTC (rev 1971)
+++ branches/hidden-services/src/gui/config/configdialog.ui 2007-10-09 16:04:01 UTC (rev 1972)
@@ -8,8 +8,8 @@
<rect>
<x>0</x>
<y>0</y>
- <width>519</width>
- <height>400</height>
+ <width>700</width>
+ <height>690</height>
</rect>
</property>
<property name="font" >
Modified: branches/hidden-services/src/gui/config/groupdialog.ui
===================================================================
--- branches/hidden-services/src/gui/config/groupdialog.ui 2007-10-05 16:01:58 UTC (rev 1971)
+++ branches/hidden-services/src/gui/config/groupdialog.ui 2007-10-09 16:04:01 UTC (rev 1972)
@@ -12,6 +12,18 @@
<height>212</height>
</rect>
</property>
+ <property name="minimumSize" >
+ <size>
+ <width>295</width>
+ <height>212</height>
+ </size>
+ </property>
+ <property name="maximumSize" >
+ <size>
+ <width>295</width>
+ <height>212</height>
+ </size>
+ </property>
<property name="palette" >
<palette>
<active>
@@ -403,6 +415,12 @@
</property>
<item row="2" column="1" >
<widget class="QLineEdit" name="confirmationline" >
+ <property name="toolTip" >
+ <string><html><head><meta name="qrichtext" content="1" /><style type="text/css">
+p, li { white-space: pre-wrap; }
+</style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;">
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Confirmation of the cookie key</p></body></html></string>
+ </property>
<property name="text" >
<string/>
</property>
@@ -417,7 +435,7 @@
<item row="0" column="0" >
<widget class="QLabel" name="label" >
<property name="text" >
- <string>Groupname:</string>
+ <string>Group Name:</string>
</property>
</widget>
</item>
@@ -430,6 +448,12 @@
</item>
<item row="1" column="1" >
<widget class="QLineEdit" name="cookiekeyline" >
+ <property name="toolTip" >
+ <string><html><head><meta name="qrichtext" content="1" /><style type="text/css">
+p, li { white-space: pre-wrap; }
+</style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;">
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Cookie key of the group</p></body></html></string>
+ </property>
<property name="text" >
<string/>
</property>
@@ -444,12 +468,18 @@
<item row="1" column="0" >
<widget class="QLabel" name="label_2" >
<property name="text" >
- <string>CookieKey:</string>
+ <string>Cookie Key:</string>
</property>
</widget>
</item>
<item row="0" column="1" >
<widget class="QLineEdit" name="groupnameline" >
+ <property name="toolTip" >
+ <string><html><head><meta name="qrichtext" content="1" /><style type="text/css">
+p, li { white-space: pre-wrap; }
+</style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;">
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Name of the group</p></body></html></string>
+ </property>
<property name="text" >
<string/>
</property>
@@ -467,7 +497,7 @@
<property name="geometry" >
<rect>
<x>30</x>
- <y>130</y>
+ <y>140</y>
<width>77</width>
<height>26</height>
</rect>
@@ -479,8 +509,8 @@
<widget class="QPushButton" name="cancelButton" >
<property name="geometry" >
<rect>
- <x>154</x>
- <y>130</y>
+ <x>150</x>
+ <y>140</y>
<width>77</width>
<height>26</height>
</rect>
Modified: branches/hidden-services/src/gui/config/hiddenservicepage.cpp
===================================================================
--- branches/hidden-services/src/gui/config/hiddenservicepage.cpp 2007-10-05 16:01:58 UTC (rev 1971)
+++ branches/hidden-services/src/gui/config/hiddenservicepage.cpp 2007-10-09 16:04:01 UTC (rev 1972)
@@ -32,6 +32,7 @@
#include "groupdialog.h"
#include "userdialog.h"
#include "adduserdialog.h"
+#include <qclipboard.h>
using namespace std;
@@ -41,7 +42,12 @@
/* Keep a pointer to the TorControl object used to talk to Tor */
_torControl = Vidalia::torControl();
/* Create ServerSettings object */
- _settings = new ServerSettings(_torControl);
+ _settings = new ServerSettings(_torControl);
+ /** temporary user object used to temporary store the entered values */
+ _tempUser = new User();
+ /** temporary group object used to temporary store the entered values */
+ _tempGroup = new Group();
+ /** the parent widget */
_parent = parent;
/* Invoke the Qt Designer generated object setup routine */
ui.setupUi(this);
@@ -76,6 +82,8 @@
SLOT(groupSelectionChanged()));
connect(ui.userManagementView, SIGNAL(itemClicked(QListWidgetItem*)), this,
SLOT(userSelectionChanged(QListWidgetItem*)));
+ connect(ui.modifyServiceButton, SIGNAL(clicked()), this, SLOT(modifyService()));
+ connect(ui.copyToClipboardButton, SIGNAL(clicked()), this, SLOT(copyToClipboard()));
/* A QTableWidget object representing the table of services in Vidalia*/
_serviceWidget = ui.serviceListView;
/* A QTableWidget object representing the table of groups in Vidalia */
@@ -116,7 +124,6 @@
_selectedService.clear();
_selectedGroup.clear();
_selectedUser.clear();
- _services->clear();
return true;
}
@@ -124,7 +131,7 @@
void HiddenservicePage::addHiddenService() {
/* read the data fields */
QHostAddress serviceAddress(ui.serviceAdressLine->text());
- QString serviceName(ui.serviceNameLine->text());
+ QString serviceName(ui.serviceNameLine->text().trimmed());
QString localPort(ui.localPortLine->text());
QString listenPort(ui.listeningPortLine->text());
// only if all values are set
@@ -145,41 +152,46 @@
ui.serviceListView->setItem(rows, 0, cboxitem);
//Saved checkbox states
Service::AuthenticationVersion version = Service::V0;
- if (ui.rbV2->isChecked() == true)
- {
+ if (ui.rbV2->isChecked() == true) {
version = Service::V2;
- }
- else if (ui.rbV0V2->isChecked() == true)
- {
- version = Service::V0V2;
- }
+ }
Service newService(serviceName, serviceAddress.toString(), localPort,
listenPort, version);
_services->insert(serviceName, newService);
initDataStructures();
+ showServices();
} else {
VMessageBox::warning(this,tr("Error"),
tr("Service name already in use, select a different one."), VMessageBox::Ok);
- }
+ }
}
}
/** Deletes selected hidden services */
-void HiddenservicePage::deleteHiddenService() {
- while(_groupWidget->currentRow() >= 0) {
- _groupWidget->removeRow(0);
- }
- ui.serviceNameLine->clear();
- ui.listeningPortLine->clear();
- _selectedGroup.clear();
- _userWidget->clear();
- _serviceWidget->removeRow(_serviceWidget->currentRow());
- _services->remove(_selectedService);
- _selectedService.clear();
- initDataStructures();
- showServices();
- showGroups();
+void HiddenservicePage::deleteHiddenService() {
+ if(_selectedService.isEmpty() == false) {
+ while(_groupWidget->rowCount() > 0) {
+ _groupWidget->removeRow(0);
+ }
+ Service s = _services->take(_selectedService);
+ if(s.isDeployed()) {
+ VMessageBox::warning(this,tr("Error"),
+ tr("Please note that deleting this service will cause its undeployment."),
+ VMessageBox::Ok);
+ }
+ ui.serviceNameLine->clear();
+ ui.listeningPortLine->clear();
+ _selectedGroup.clear();
+ _userWidget->clear();
+ _serviceWidget->removeRow(_serviceWidget->currentRow());
+ _selectedService.clear();
+ _services->remove(_selectedService);
+ initDataStructures();
+ showServices();
+ showGroups();
+ publishButtonClicked();
+ }
}
/** Loads previously saved settings */
@@ -188,6 +200,7 @@
toString());
ui.localPortLine->setText(QString::number(
_hiddenServiceSettings->getLocalServicePort()));
+ _services->clear();
ServiceList serviceList = _hiddenServiceSettings->getServices();
QList<Service> services = serviceList.services();
QListIterator<Service> i(services);
@@ -203,28 +216,34 @@
/** this method is called whenever the publish/unpublish button is clicked */
void HiddenservicePage::publishButtonClicked() {
/* only publish if services are available */
- if (_serviceWidget->rowCount() != 0) {
+ if (_serviceWidget->rowCount() != 0 && _selectedService.isEmpty() == false) {
/* set Service objects and GUI checkboxes */
int f = _serviceWidget->currentRow();
QTableWidgetItem* widgetName = _serviceWidget->item(f,1);
QTableWidgetItem* widgetChecked = _serviceWidget->item(f,0);
QString serviceName = widgetName->text();
Service service;
- service = _services->take(serviceName);
- if (service.deployed() == false){
+ service = _services->take(serviceName);
+ if((service.authenticationVersion() == Service::V2) && _v2Support == false) {
+ VMessageBox::information(this, tr("Old Tor Version"),
+ tr("Your Version of Tor does not support V2."),
+ VMessageBox::Ok);
+ }
+ else { if (service.isDeployed() == false){
service.setDeployed(true);
widgetChecked->setCheckState(Qt::Checked);
- }
- else{
+ }
+ else {
service.setDeployed(false);
widgetChecked->setCheckState(Qt::Unchecked);
- }
+ }
+ }
_services->insert(serviceName, service);
/* get QList of checked services only */
QList<Service> allServices = _services->values();
QList<Service> checkedServices;
foreach (Service service, allServices) {
- if(service.deployed() == true){
+ if(service.isDeployed() == true){
checkedServices.append(service);
}
}
@@ -238,14 +257,7 @@
/* communicate with Tor controller to publish checked services */
QString hiddenServiceConf;
QList<Service>::iterator i;
- for (i = checkedServices.begin(); i != checkedServices.end(); ++i) {
- if((i->authenticationVersion() == Service::V0V2 ||
- i->authenticationVersion() == Service::V2) && _v2Support == false)
- {
- VMessageBox::information(this, tr("Old Tor Version"),
- tr("Your Version of Tor does not support V2 and V0V2 support."),
- VMessageBox::Ok);
- }
+ for (i = checkedServices.begin(); i != checkedServices.end(); ++i) {
if (i != checkedServices.begin()){
hiddenServiceConf.append("HiddenServiceDir=\" ");
}
@@ -268,16 +280,15 @@
}
if (i+1 != checkedServices.end()){
hiddenServiceConf.append("\" ");
- }
+ }
hiddenServiceConf.replace(QString("\\"), QString("/"));
-
- }
- VMessageBox::warning(this, tr("Error"),hiddenServiceConf ,
- VMessageBox::Ok);
- QString errmsg1 = tr("Error while trying to publish hidden service.");
- QString &errmsg = errmsg1;
- _hiddenServiceSettings->apply(hiddenServiceConf, &errmsg);
- createUserFile();
+ }
+ QString errmsg1 = tr("Error while trying to publish hidden service.");
+ QString &errmsg = errmsg1;
+ _hiddenServiceSettings->apply(hiddenServiceConf, &errmsg);
+ createUserFile();
+ errmsg = tr("Problems while trying to store data.");
+ save(errmsg);
}
}
@@ -300,7 +311,7 @@
/* get checked services only */
QList<Service> checkedServices;
foreach (Service service, servicelist) {
- if(service.deployed() == true) {
+ if(service.isDeployed() == true) {
checkedServices.append(service);
}
}
@@ -389,12 +400,10 @@
service.serviceName(),
service);
}
-
}
}
}
}
-
}
/** craete the data structures needed during runtime */
@@ -431,31 +440,71 @@
}
}
+void HiddenservicePage::modifyService() {
+ QString newServiceName(ui.serviceNameLine->text().trimmed());
+ QString newListPort(ui.listeningPortLine->text());
+ QString newLocalPort(ui.localPortLine->text());
+ QHostAddress newServiceAddress(ui.serviceAdressLine->text());
+ if (newServiceAddress.isNull() || newServiceName.isEmpty() ||
+ newLocalPort.isEmpty() || newListPort.isEmpty() ) {
+ VMessageBox::warning(this, tr("Error"), tr("Please set all fields."),
+ VMessageBox::Ok);
+ } else if(_services->keys().contains(newServiceName) == false ||
+ (_services->keys().contains(newServiceName) == true &
+ newServiceName.compare(_selectedService) == 0)) {
+ Service s = _services->take(_selectedService);
+ s.setServiceName(newServiceName);
+ s.setServiceAdress(newServiceAddress.toString());
+ s.setLocalServicePort(newLocalPort);
+ s.setListeningServicePort(newListPort);
+ if (ui.rbV0->isChecked()) {
+ s.setAuthenticationVersion(Service::V0);
+ } else if (ui.rbV2->isChecked()) {
+ s.setAuthenticationVersion(Service::V2);
+ }
+ _services->insert(s.serviceName(), s);
+ initDataStructures();
+ showServices();
+ _selectedService.clear();
+ _selectedGroup.clear();
+ while(_groupWidget->rowCount() > 0) {
+ _groupWidget->removeRow(0);
+ }
+ } else {
+ VMessageBox::warning(this, tr("Error"),
+ tr("Service name already in use, please select a different one."),
+ VMessageBox::Ok);
+ }
+}
+
+
/** display all services in the service widget */
void HiddenservicePage::showServices() {
QList<QString> keys;
QList<Service> serviceList = _services->values();
- QListIterator<Service> i(serviceList);
+ QListIterator<Service> i(serviceList);
+ while(_serviceWidget->rowCount() > 0) {
+ _serviceWidget->removeRow(0);
+ }
int currentRow = 0;
while (i.hasNext()) {
- Service service = i.next();
- if(currentRow >= _serviceWidget->rowCount()) {
- _serviceWidget->insertRow(currentRow);
- }
- QTableWidgetItem *cubesHeaderItem = new
- QTableWidgetItem(service.serviceName());
- _serviceWidget->setItem(currentRow, 1, cubesHeaderItem);
- QTableWidgetItem *cboxitem = new QTableWidgetItem();
- cboxitem->setFlags(Qt::ItemIsSelectable);
- /* default value */
- cboxitem->setCheckState(Qt::Unchecked);
- if(service.deployed() == true) {
- cboxitem->setCheckState(Qt::Checked);
- }
- cboxitem->setTextAlignment(Qt::AlignCenter);
- _serviceWidget->setItem(currentRow, 0, cboxitem);
- currentRow++;
- }
+ Service service = i.next();
+ _serviceWidget->insertRow(currentRow);
+ QTableWidgetItem *cubesHeaderItem = new
+ QTableWidgetItem(service.serviceName());
+ _serviceWidget->setItem(currentRow, 1, cubesHeaderItem);
+ QTableWidgetItem *cboxitem = new QTableWidgetItem();
+ cboxitem->setFlags(Qt::ItemIsSelectable);
+ /* default value */
+ cboxitem->setCheckState(Qt::Unchecked);
+ if(service.isDeployed() == true) {
+ cboxitem->setCheckState(Qt::Checked);
+ }
+ cboxitem->setTextAlignment(Qt::AlignCenter);
+ _serviceWidget->setItem(currentRow, 0, cboxitem);
+ currentRow++;
+ }
+ _serviceWidget->sortItems(1, Qt::AscendingOrder);
}
/** this method is called when the user selects a different service */
@@ -464,6 +513,11 @@
QTableWidgetItem* widget = _serviceWidget->item(currentRow, 1);
_selectedService = widget->text();
showGroups();
+ QTableWidgetItem* groupWidgetItem = _groupWidget->item(0,1);
+ _groupWidget->setCurrentItem(groupWidgetItem);
+ if(groupWidgetItem != NULL)
+ _selectedGroup = groupWidgetItem->text();
+ showUsers();
}
/** this method is called when the user selects a different group */
@@ -504,9 +558,9 @@
/** display all groups in the group widget */
void HiddenservicePage::showGroups() {
- while(_groupWidget->rowCount() >= 1) {
+ while(_groupWidget->rowCount() > 0) {
_groupWidget->removeRow(0);
- }
+ }
_selectedGroup.clear();
_userWidget->clear();
if(_services->count() != 0) {
@@ -519,30 +573,31 @@
/* update checkbox view */
if (s.authenticationVersion() == Service::V0) {
ui.rbV0->setChecked(true);
+ ui.settingsWidget->setTabEnabled(1, false);
} else if (s.authenticationVersion() == Service::V2) {
ui.rbV2->setChecked(true);
- } else if (s.authenticationVersion() == Service::V0V2) {
- ui.rbV0V2->setChecked(true);
- }
- QList<Group> groups = s.groups();
- QListIterator<Group> i(groups);
- while (i.hasNext()) {
- Group tempGroup = i.next();
- int rows = _groupWidget->rowCount();
- _groupWidget->insertRow(rows);
- QTableWidgetItem *cubesHeaderItem = new
- QTableWidgetItem(tempGroup.groupName());
- _groupWidget->setItem(rows, 1, cubesHeaderItem);
- QTableWidgetItem *cboxitem = new QTableWidgetItem( tr(""));
- if(tempGroup.isDeployed() == false) {
- cboxitem->setCheckState(Qt::Unchecked);
- } else {
- cboxitem->setCheckState(Qt::Checked);
- }
- cboxitem->setTextAlignment(Qt::AlignCenter);
- _groupWidget->setItem(rows, 0, cboxitem);
- }
- }
+ ui.settingsWidget->setTabEnabled(1, true);
+ }
+ QList<Group> groups = s.groups();
+ QListIterator<Group> i(groups);
+ while (i.hasNext()) {
+ Group tempGroup = i.next();
+ int rows = _groupWidget->rowCount();
+ _groupWidget->insertRow(rows);
+ QTableWidgetItem *cubesHeaderItem = new
+ QTableWidgetItem(tempGroup.groupName());
+ _groupWidget->setItem(rows, 1, cubesHeaderItem);
+ QTableWidgetItem *cboxitem = new QTableWidgetItem( tr(""));
+ if(tempGroup.isDeployed() == false) {
+ cboxitem->setCheckState(Qt::Unchecked);
+ } else {
+ cboxitem->setCheckState(Qt::Checked);
+ }
+ cboxitem->setTextAlignment(Qt::AlignCenter);
+ _groupWidget->setItem(rows, 0, cboxitem);
+ }
+ }
+ _groupWidget->sortItems(1, Qt::AscendingOrder);
}
/** display all users in the user widget */
@@ -570,6 +625,7 @@
}
}
}
+ _userWidget->sortItems(Qt::AscendingOrder);
}
/** Adds a already known user to the selected Group */
@@ -633,6 +689,8 @@
if ((_selectedService.isEmpty() == false &&
_selectedGroup.isEmpty()== false)) {
Userdialog *userdialog = new Userdialog(this);
+ userdialog->setUserName(_tempUser->userName());
+ userdialog->setPublicKey(_tempUser->publicKey());
userdialog->show();
QString enteredName;
QString enteredIntroPassword;
@@ -641,66 +699,82 @@
QString enteredAuthConfirmation;
QString enteredPublicKey;
if (userdialog->exec() == QDialog::Accepted) {
- enteredName = userdialog->userName();
- enteredIntroPassword = userdialog->introductionPassword();
- enteredAuthPassword = userdialog->authenticationPassword();
- enteredPublicKey = userdialog->publicKey();
- enteredIntroConfirmation = userdialog->introductionConfirmation();
- enteredAuthConfirmation = userdialog->authenticationConfirmation();
- if (enteredIntroPassword.isEmpty() || enteredName.isEmpty() ||
- enteredAuthPassword.isEmpty() || enteredPublicKey.isEmpty() ) {
+ enteredName = userdialog->userName().trimmed();
+ enteredIntroPassword = userdialog->introductionPassword().trimmed();
+ enteredAuthPassword = userdialog->authenticationPassword().trimmed();
+ enteredPublicKey = userdialog->publicKey().trimmed();
+ enteredIntroConfirmation = userdialog->introductionConfirmation().trimmed();
+ enteredAuthConfirmation = userdialog->authenticationConfirmation().trimmed();
+ _tempUser->setUserName(enteredName);
+ _tempUser->setPublicKey(enteredPublicKey);
+ if(enteredName.isEmpty()) {
VMessageBox::warning(this, tr("Error"),
- tr("Please fill out all fields."), VMessageBox::Ok);
- delete userdialog;
+ tr("The username has to be set."), VMessageBox::Ok);
createUser();
return;
- } else if(enteredIntroPassword != enteredIntroConfirmation ||
- enteredAuthPassword != enteredAuthConfirmation) {
- VMessageBox::warning(this, tr("Error"),
- tr("No match for passwords and confirmation fields."),
- VMessageBox::Ok);
- delete userdialog;
- createUser();
- return;
- }
- delete userdialog;
- bool alreadyExists;
- QList<QString> userNames;
- userNames = _users->keys();
- alreadyExists = userNames.contains(enteredName);
- if (alreadyExists == false) {
- User newUser;
- newUser.setUserName(enteredName);
- newUser.setIntroductionPassword(enteredIntroPassword);
- newUser.setAuthenticationPassword(enteredAuthPassword);
- newUser.setPublicKey(enteredPublicKey);
- _userWidget->addItem(new QListWidgetItem(enteredName,
- _userWidget, 0));
- Service s = _services->value(_selectedService);
- QList<Group> groups = s.groups();
- QListIterator<Group> i(groups);
- int index = 0;
- while (i.hasNext()) {
- i.next();
- Group tempGroup = groups.takeAt(index);
- QString tempString = tempGroup.groupName();
- int comp = tempString.compare(_selectedGroup);
- if (comp == 0) {
- tempGroup.addUser(newUser);
- }
- groups.append(tempGroup);
- }
- s.setGroups(groups);
- _services->insert(_selectedService, s);
- initDataStructures();
- } else {
- VMessageBox::warning(this, tr("Error"),
- tr("The entered user name already exists. Please select a different one."),
- VMessageBox::Ok);
- createUser();
- return;
- }
- }
+ }
+ if(enteredIntroPassword.isEmpty() && enteredAuthPassword.isEmpty()) {
+ if(enteredPublicKey.isEmpty()) {
+ VMessageBox::warning(this, tr("Error"),
+ tr("Please fill out the public key field."), VMessageBox::Ok);
+ createUser();
+ return;
+ }
+ } else if(enteredIntroPassword.isEmpty() || enteredAuthPassword.isEmpty()) {
+ VMessageBox::warning(this, tr("Error"),
+ tr("Please fill out the neccesary fields."), VMessageBox::Ok);
+ createUser();
+ return;
+ }
+ delete userdialog;
+ bool alreadyExists = _users->keys().contains(enteredName);
+ if(alreadyExists) {
+ VMessageBox::warning(this, tr("Error"),
+ tr("The entered user name already exists. Please select a "
+ "different one."), VMessageBox::Ok);
+ createUser();
+ return;
+ } else if(enteredIntroPassword != enteredIntroConfirmation) {
+ VMessageBox::warning(this, tr("Error"),
+ tr("No matching for introduction password and confirmation."),
+ VMessageBox::Ok);
+ createUser();
+ return;
+ } else if(enteredAuthPassword != enteredAuthConfirmation) {
+ VMessageBox::warning(this, tr("Error"),
+ tr("No matching for authentication password and confirmation."),
+ VMessageBox::Ok);
+ createUser();
+ return;
+ }
+ User newUser;
+ newUser.setUserName(enteredName);
+ newUser.setIntroductionPassword(enteredIntroPassword);
+ newUser.setAuthenticationPassword(enteredAuthPassword);
+ newUser.setPublicKey(enteredPublicKey);
+ _userWidget->addItem(new QListWidgetItem(enteredName,
+ _userWidget, 0));
+ Service s = _services->value(_selectedService);
+ QList<Group> groups = s.groups();
+ QListIterator<Group> i(groups);
+ int index = 0;
+ while (i.hasNext()) {
+ i.next();
+ Group tempGroup = groups.takeAt(index);
+ QString tempString = tempGroup.groupName();
+ int comp = tempString.compare(_selectedGroup);
+ if (comp == 0) {
+ tempGroup.addUser(newUser);
+ }
+ groups.append(tempGroup);
+ }
+ _tempUser = new User();
+ s.setGroups(groups);
+ _services->insert(_selectedService, s);
+ initDataStructures();
+ showUsers();
+ }
+ _tempUser = new User();
} else {
VMessageBox::warning(this, tr("Error"),
tr("Please select a service and a group."), VMessageBox::Ok);
@@ -756,14 +830,16 @@
void HiddenservicePage::createGroup() {
if(_selectedService.isEmpty() == false) {
Groupdialog *groupdialog = new Groupdialog(this);
+ groupdialog->setGroupName(_tempGroup->groupName());
groupdialog->show();
QString groupName;
QString secretCookie;
QString secretCookieConfirmation;
if (groupdialog->exec() == QDialog::Accepted) {
- groupName = groupdialog->groupName();
- secretCookie = groupdialog->secretCookie();
- secretCookieConfirmation = groupdialog->secretCookieConfirmation();
+ groupName = groupdialog->groupName().trimmed();
+ secretCookie = groupdialog->secretCookie().trimmed();
+ secretCookieConfirmation = groupdialog->secretCookieConfirmation().trimmed();
+ _tempGroup->setGroupName(groupName);
if (groupName.isEmpty() || secretCookie.isEmpty()) {
VMessageBox::warning(this, tr("Error"),
tr("Please fill out all fields."), VMessageBox::Ok);
@@ -798,8 +874,10 @@
QList<Group> gruppen = s.groups();
gruppen.append(g);
s.setGroups(gruppen);
+ _tempGroup = new Group();
_services->insert(_selectedService, s);
initDataStructures();
+ showGroups();
} else {
VMessageBox::warning(this, tr("Error"),
tr("Group name already in use, please select a different one."),
@@ -831,9 +909,12 @@
index++;
}
s.setGroups(groups);
- _groupWidget->removeRow(_groupWidget->currentRow());
- /* _services->insert(_selectedService, s); */
+ _services->insert(_selectedService, s);
+ while(_groupWidget->rowCount() > 0) {
+ _groupWidget->removeRow(0);
+ }
initDataStructures();
+ showGroups();
} else {
VMessageBox::warning(this, tr("Error"),
tr("Please select service and group."),
@@ -854,9 +935,15 @@
QString newsecretCookie;
QString confirmation;
if (groupdialog->exec() == QDialog::Accepted) {
- newGroupName = groupdialog->groupName();
- newsecretCookie = groupdialog->secretCookie();
- confirmation = groupdialog->secretCookieConfirmation();
+ newGroupName = groupdialog->groupName().trimmed();
+ newsecretCookie = groupdialog->secretCookie().trimmed();
+ confirmation = groupdialog->secretCookieConfirmation().trimmed();
+ if(newGroupName.isEmpty()) {
+ VMessageBox::warning(this, tr("Error"),
+ tr("The groupname has to be set."), VMessageBox::Ok);
+ modifyGroup();
+ return;
+ }
if(newsecretCookie != confirmation) {
VMessageBox::warning(this, tr("Error"),
tr("No match for cookieKey and confirmation field."), VMessageBox::Ok);
@@ -900,6 +987,7 @@
VMessageBox::warning(this, tr("Error"),
tr("Please select a different group name."),
VMessageBox::Ok);
+ modifyGroup();
}
} else {
VMessageBox::warning(this, tr("Error"),
@@ -940,28 +1028,46 @@
QString enteredIntroConfirmation;
QString enteredAuthConfirmation;
if (userdialog->exec() == QDialog::Accepted) {
- enteredName = userdialog->userName();
- enteredIntroPassword = userdialog->introductionPassword();
- enteredAuthPassword = userdialog->authenticationPassword();
- enteredPublicKey = userdialog->publicKey();
- enteredIntroConfirmation = userdialog->introductionConfirmation();
- enteredAuthConfirmation = userdialog->authenticationConfirmation();
- if (enteredIntroPassword.isEmpty() || enteredName.isEmpty() ||
- enteredAuthPassword.isEmpty() || enteredPublicKey.isEmpty() ) {
+ enteredName = userdialog->userName().trimmed();
+ enteredIntroPassword = userdialog->introductionPassword().trimmed();
+ enteredAuthPassword = userdialog->authenticationPassword().trimmed();
+ enteredPublicKey = userdialog->publicKey().trimmed();
+ enteredIntroConfirmation = userdialog->introductionConfirmation().trimmed();
+ enteredAuthConfirmation = userdialog->authenticationConfirmation().trimmed();
+ if(enteredName.isEmpty()) {
VMessageBox::warning(this, tr("Error"),
- tr("Please fill out all fields."), VMessageBox::Ok);
- delete userdialog;
+ tr("The username has to be set."), VMessageBox::Ok);
modifyUser();
return;
- } else if(enteredIntroPassword != enteredIntroConfirmation ||
- enteredAuthPassword != enteredAuthConfirmation) {
+ }
+ if(enteredIntroPassword.isEmpty() && enteredAuthPassword.isEmpty()) {
+ if(enteredPublicKey.isEmpty()) {
+ VMessageBox::warning(this, tr("Error"),
+ tr("Please fill out the public key field."), VMessageBox::Ok);
+ modifyUser();
+ return;
+ }
+ } else if(enteredIntroPassword.isEmpty() || enteredAuthPassword.isEmpty()) {
+ VMessageBox::warning(this, tr("Error"),
+ tr("Please fill out the neccesary fields."), VMessageBox::Ok);
+ modifyUser();
+ return;
+ }
+ delete userdialog;
+ if(enteredIntroPassword != enteredIntroConfirmation) {
VMessageBox::warning(this, tr("Error"),
- tr("No match for passwords and confirmation fields, please check."),
- VMessageBox::Ok);
- delete userdialog;
+ tr("No matching for introduction password and confirmation."),
+ VMessageBox::Ok);
modifyUser();
return;
- } else if(_users->keys().contains(enteredName) == false ||
+ } else if(enteredAuthPassword != enteredAuthConfirmation) {
+ VMessageBox::warning(this, tr("Error"),
+ tr("No matching for authentication password and confirmation."),
+ VMessageBox::Ok);
+ modifyUser();
+ return;
+ }
+ if(_users->keys().contains(enteredName) == false ||
(_users->keys().contains(enteredName)
== true && enteredName.compare(_selectedUser) == 0)) {
QList<Service> services = _services->values();
@@ -1002,3 +1108,62 @@
}
}
+/** copy userdata to Clipboard */
+void HiddenservicePage::copyToClipboard(){
+ if (_selectedUser.isEmpty()){
+ VMessageBox::warning(this, tr("Error"),
+ "Please select a User.", VMessageBox::Ok);
+ return;
+ }
+ Service tempService = _services->value(_selectedService);
+ QClipboard *clipboard = QApplication::clipboard();
+ QString clipboardText;
+ QString dataDirectory;
+ dataDirectory = Vidalia::dataDirectory();
+ dataDirectory.append("/");
+ dataDirectory.append(tempService.serviceName());
+ dataDirectory.append("/");
+ QString hostnamePath = dataDirectory;
+ hostnamePath.append("hostname");
+
+ /* read HiddenServiceID from hostname file */
+ QString processline;
+ QFile file(hostnamePath);
+ if (!file.open(QIODevice::ReadOnly | QIODevice::Text)){
+ VMessageBox::warning(this, tr("Error"),
+ "Hostname file of selected service not found, please redeploy.", VMessageBox::Ok);
+ return;
+ }
+ QTextStream in(&file);
+ while (!in.atEnd()) {
+ processline = in.readLine();
+ }
+ clipboardText.append("HiddenServiceID " +processline +"\n");
+ QList<Group> groupList= tempService.groups();
+ foreach(Group group, groupList){
+ if(group.groupName() == _selectedGroup){
+ clipboardText.append("SecretCookieKey ");
+ clipboardText.append(group.cookieKey() + "\n");
+ QList<User> userList= group.groupMembers();
+ foreach(User user, userList){
+ if (user.userName() == _selectedUser){
+ if(!user.introductionPassword().isEmpty()){
+ clipboardText.append("IntroductionPointAuthentication " );
+ clipboardText.append(user.introductionPassword() + "\n");
+ }
+ if(!user.authenticationPassword().isEmpty()){
+ clipboardText.append("HiddenServiceAuthentication " );
+ clipboardText.append(user.authenticationPassword() + "\n");
+ }
+ }
+ }
+ }
+ }
+ /* write content to clipboard */
+ clipboard->setText(clipboardText);
+ VMessageBox::information(this, tr("Clipboard"),
+ "Data copied to clipboard.", VMessageBox::Ok);
+}
+
+
+
Modified: branches/hidden-services/src/gui/config/hiddenservicepage.h
===================================================================
--- branches/hidden-services/src/gui/config/hiddenservicepage.h 2007-10-05 16:01:58 UTC (rev 1971)
+++ branches/hidden-services/src/gui/config/hiddenservicepage.h 2007-10-09 16:04:01 UTC (rev 1972)
@@ -74,6 +74,10 @@
void groupSelectionChanged();
/** this method is called whenever the publish/unpublish button is clicked */
void publishButtonClicked();
+ /** modify the values of the selected service */
+ void modifyService();
+ /** this method copies the user data to the clipboard */
+ void copyToClipboard();
private:
@@ -123,8 +127,12 @@
QString _selectedGroup;
/** represending the name of the currently selected service */
QString _selectedService;
- /*a boolean that shows whether the installed Tor version supports V2 or not*/
+ /** a boolean that shows whether the installed Tor version supports V2 or not*/
bool _v2Support;
+ /** temporary user object used to temporary store the entered values */
+ User *_tempUser;
+ /** temporary group object used to temporary store the entered values */
+ Group *_tempGroup;
};
Modified: branches/hidden-services/src/gui/config/hiddenservicepage.ui
===================================================================
--- branches/hidden-services/src/gui/config/hiddenservicepage.ui 2007-10-05 16:01:58 UTC (rev 1971)
+++ branches/hidden-services/src/gui/config/hiddenservicepage.ui 2007-10-09 16:04:01 UTC (rev 1972)
@@ -18,566 +18,582 @@
<property name="windowTitle" >
<string>Form</string>
</property>
- <layout class="QHBoxLayout" >
- <property name="margin" >
- <number>9</number>
+ <widget class="QGroupBox" name="groupBox" >
+ <property name="geometry" >
+ <rect>
+ <x>9</x>
+ <y>9</y>
+ <width>656</width>
+ <height>567</height>
+ </rect>
</property>
- <property name="spacing" >
- <number>6</number>
+ <property name="minimumSize" >
+ <size>
+ <width>656</width>
+ <height>567</height>
+ </size>
</property>
- <item>
- <widget class="QGroupBox" name="groupBox" >
- <property name="minimumSize" >
- <size>
- <width>656</width>
- <height>567</height>
- </size>
+ <property name="palette" >
+ <palette>
+ <active>
+ <colorrole role="Base" >
+ <brush brushstyle="SolidPattern" >
+ <color alpha="255" >
+ <red>255</red>
+ <green>255</green>
+ <blue>255</blue>
+ </color>
+ </brush>
+ </colorrole>
+ <colorrole role="Window" >
+ <brush brushstyle="SolidPattern" >
+ <color alpha="255" >
+ <red>239</red>
+ <green>235</green>
+ <blue>231</blue>
+ </color>
+ </brush>
+ </colorrole>
+ </active>
+ <inactive>
+ <colorrole role="Base" >
+ <brush brushstyle="SolidPattern" >
+ <color alpha="255" >
+ <red>255</red>
+ <green>255</green>
+ <blue>255</blue>
+ </color>
+ </brush>
+ </colorrole>
+ <colorrole role="Window" >
+ <brush brushstyle="SolidPattern" >
+ <color alpha="255" >
+ <red>239</red>
+ <green>235</green>
+ <blue>231</blue>
+ </color>
+ </brush>
+ </colorrole>
+ </inactive>
+ <disabled>
+ <colorrole role="Base" >
+ <brush brushstyle="SolidPattern" >
+ <color alpha="255" >
+ <red>239</red>
+ <green>235</green>
+ <blue>231</blue>
+ </color>
+ </brush>
+ </colorrole>
+ <colorrole role="Window" >
+ <brush brushstyle="SolidPattern" >
+ <color alpha="255" >
+ <red>239</red>
+ <green>235</green>
+ <blue>231</blue>
+ </color>
+ </brush>
+ </colorrole>
+ </disabled>
+ </palette>
+ </property>
+ <property name="title" >
+ <string>Service Management</string>
+ </property>
+ <widget class="QTableWidget" name="serviceListView" >
+ <property name="enabled" >
+ <bool>true</bool>
+ </property>
+ <property name="geometry" >
+ <rect>
+ <x>10</x>
+ <y>30</y>
+ <width>321</width>
+ <height>151</height>
+ </rect>
+ </property>
+ <property name="minimumSize" >
+ <size>
+ <width>200</width>
+ <height>0</height>
+ </size>
+ </property>
+ <property name="maximumSize" >
+ <size>
+ <width>16777215</width>
+ <height>16777215</height>
+ </size>
+ </property>
+ <property name="layoutDirection" >
+ <enum>Qt::RightToLeft</enum>
+ </property>
+ <property name="autoFillBackground" >
+ <bool>true</bool>
+ </property>
+ <property name="autoScroll" >
+ <bool>false</bool>
+ </property>
+ <property name="editTriggers" >
+ <set>QAbstractItemView::NoEditTriggers</set>
+ </property>
+ <property name="dragEnabled" >
+ <bool>false</bool>
+ </property>
+ <property name="dragDropOverwriteMode" >
+ <bool>true</bool>
+ </property>
+ <property name="alternatingRowColors" >
+ <bool>true</bool>
+ </property>
+ <property name="selectionMode" >
+ <enum>QAbstractItemView::SingleSelection</enum>
+ </property>
+ <property name="selectionBehavior" >
+ <enum>QAbstractItemView::SelectRows</enum>
+ </property>
+ <property name="verticalScrollMode" >
+ <enum>QAbstractItemView::ScrollPerItem</enum>
+ </property>
+ <property name="gridStyle" >
+ <enum>Qt::SolidLine</enum>
+ </property>
+ <column>
+ <property name="text" >
+ <string>Active</string>
</property>
- <property name="palette" >
- <palette>
- <active>
- <colorrole role="Base" >
- <brush brushstyle="SolidPattern" >
- <color alpha="255" >
- <red>255</red>
- <green>255</green>
- <blue>255</blue>
- </color>
- </brush>
- </colorrole>
- <colorrole role="Window" >
- <brush brushstyle="SolidPattern" >
- <color alpha="255" >
- <red>239</red>
- <green>235</green>
- <blue>231</blue>
- </color>
- </brush>
- </colorrole>
- </active>
- <inactive>
- <colorrole role="Base" >
- <brush brushstyle="SolidPattern" >
- <color alpha="255" >
- <red>255</red>
- <green>255</green>
- <blue>255</blue>
- </color>
- </brush>
- </colorrole>
- <colorrole role="Window" >
- <brush brushstyle="SolidPattern" >
- <color alpha="255" >
- <red>239</red>
- <green>235</green>
- <blue>231</blue>
- </color>
- </brush>
- </colorrole>
- </inactive>
- <disabled>
- <colorrole role="Base" >
- <brush brushstyle="SolidPattern" >
- <color alpha="255" >
- <red>239</red>
- <green>235</green>
- <blue>231</blue>
- </color>
- </brush>
- </colorrole>
- <colorrole role="Window" >
- <brush brushstyle="SolidPattern" >
- <color alpha="255" >
- <red>239</red>
- <green>235</green>
- <blue>231</blue>
- </color>
- </brush>
- </colorrole>
- </disabled>
- </palette>
+ </column>
+ <column>
+ <property name="text" >
+ <string>Service Name</string>
</property>
- <property name="title" >
- <string>Service Management</string>
- </property>
- <widget class="QPushButton" name="publishServiceButton" >
+ </column>
+ </widget>
+ <widget class="QPushButton" name="publishServiceButton" >
+ <property name="geometry" >
+ <rect>
+ <x>391</x>
+ <y>69</y>
+ <width>201</width>
+ <height>27</height>
+ </rect>
+ </property>
+ <property name="toolTip" >
+ <string>Publish/Unpublish the selected Services</string>
+ </property>
+ <property name="text" >
+ <string>Publish/Unpublish Service</string>
+ </property>
+ </widget>
+ <widget class="QPushButton" name="deleteServiceButton" >
+ <property name="geometry" >
+ <rect>
+ <x>391</x>
+ <y>105</y>
+ <width>201</width>
+ <height>27</height>
+ </rect>
+ </property>
+ <property name="toolTip" >
+ <string>Delete the selected service</string>
+ </property>
+ <property name="text" >
+ <string>Delete Service</string>
+ </property>
+ </widget>
+ <widget class="QTabWidget" name="settingsWidget" >
+ <property name="geometry" >
+ <rect>
+ <x>10</x>
+ <y>210</y>
+ <width>611</width>
+ <height>331</height>
+ </rect>
+ </property>
+ <property name="palette" >
+ <palette>
+ <active>
+ <colorrole role="Base" >
+ <brush brushstyle="SolidPattern" >
+ <color alpha="255" >
+ <red>255</red>
+ <green>255</green>
+ <blue>255</blue>
+ </color>
+ </brush>
+ </colorrole>
+ <colorrole role="Window" >
+ <brush brushstyle="SolidPattern" >
+ <color alpha="255" >
+ <red>239</red>
+ <green>235</green>
+ <blue>231</blue>
+ </color>
+ </brush>
+ </colorrole>
+ </active>
+ <inactive>
+ <colorrole role="Base" >
+ <brush brushstyle="SolidPattern" >
+ <color alpha="255" >
+ <red>255</red>
+ <green>255</green>
+ <blue>255</blue>
+ </color>
+ </brush>
+ </colorrole>
+ <colorrole role="Window" >
+ <brush brushstyle="SolidPattern" >
+ <color alpha="255" >
+ <red>239</red>
+ <green>235</green>
+ <blue>231</blue>
+ </color>
+ </brush>
+ </colorrole>
+ </inactive>
+ <disabled>
+ <colorrole role="Base" >
+ <brush brushstyle="SolidPattern" >
+ <color alpha="255" >
+ <red>239</red>
+ <green>235</green>
+ <blue>231</blue>
+ </color>
+ </brush>
+ </colorrole>
+ <colorrole role="Window" >
+ <brush brushstyle="SolidPattern" >
+ <color alpha="255" >
+ <red>239</red>
+ <green>235</green>
+ <blue>231</blue>
+ </color>
+ </brush>
+ </colorrole>
+ </disabled>
+ </palette>
+ </property>
+ <property name="toolTip" >
+ <string/>
+ </property>
+ <property name="currentIndex" >
+ <number>0</number>
+ </property>
+ <widget class="QWidget" name="generalSettingsTab" >
+ <attribute name="title" >
+ <string>General Settings</string>
+ </attribute>
+ <widget class="QGroupBox" name="grpboxcreateservice" >
<property name="geometry" >
<rect>
- <x>391</x>
- <y>69</y>
- <width>201</width>
- <height>27</height>
+ <x>20</x>
+ <y>30</y>
+ <width>571</width>
+ <height>181</height>
</rect>
</property>
+ <property name="title" >
+ <string>Create new Service</string>
+ </property>
+ <widget class="QLabel" name="lblserviceadress" >
+ <property name="geometry" >
+ <rect>
+ <x>11</x>
+ <y>71</y>
+ <width>237</width>
+ <height>16</height>
+ </rect>
+ </property>
+ <property name="text" >
+ <string>Service adress:</string>
+ </property>
+ </widget>
+ <widget class="QWidget" name="layoutWidget" >
+ <property name="geometry" >
+ <rect>
+ <x>410</x>
+ <y>40</y>
+ <width>114</width>
+ <height>83</height>
+ </rect>
+ </property>
+ <layout class="QVBoxLayout" >
+ <property name="margin" >
+ <number>0</number>
+ </property>
+ <property name="spacing" >
+ <number>6</number>
+ </property>
+ <item>
+ <widget class="QRadioButton" name="rbV0" >
+ <property name="toolTip" >
+ <string>Publish as normal V0 service, group and user settings will be ignored</string>
+ </property>
+ <property name="text" >
+ <string>Start as V0</string>
+ </property>
+ <property name="checked" >
+ <bool>true</bool>
+ </property>
+ <property name="autoExclusive" >
+ <bool>true</bool>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QRadioButton" name="rbV2" >
+ <property name="toolTip" >
+ <string>Publish as V2 service, group and user settings are active</string>
+ </property>
+ <property name="text" >
+ <string>Start as V2</string>
+ </property>
+ </widget>
+ </item>
+ </layout>
+ </widget>
+ <widget class="QLabel" name="lbllisteningport" >
+ <property name="geometry" >
+ <rect>
+ <x>260</x>
+ <y>25</y>
+ <width>111</width>
+ <height>17</height>
+ </rect>
+ </property>
+ <property name="text" >
+ <string>Listn. Port:</string>
+ </property>
+ </widget>
+ <widget class="QLabel" name="lbllocalport" >
+ <property name="geometry" >
+ <rect>
+ <x>260</x>
+ <y>70</y>
+ <width>111</width>
+ <height>17</height>
+ </rect>
+ </property>
+ <property name="text" >
+ <string>Local Port:</string>
+ </property>
+ </widget>
+ <widget class="QLabel" name="lblservicename" >
+ <property name="geometry" >
+ <rect>
+ <x>11</x>
+ <y>25</y>
+ <width>237</width>
+ <height>16</height>
+ </rect>
+ </property>
+ <property name="text" >
+ <string>Service name:</string>
+ </property>
+ </widget>
+ <widget class="QLineEdit" name="localPortLine" >
+ <property name="geometry" >
+ <rect>
+ <x>260</x>
+ <y>90</y>
+ <width>61</width>
+ <height>20</height>
+ </rect>
+ </property>
+ <property name="toolTip" >
+ <string>Local Port of the service e.g. your fileserver</string>
+ </property>
+ </widget>
+ <widget class="QLineEdit" name="serviceAdressLine" >
+ <property name="geometry" >
+ <rect>
+ <x>11</x>
+ <y>91</y>
+ <width>237</width>
+ <height>20</height>
+ </rect>
+ </property>
+ <property name="toolTip" >
+ <string>IP Adress of the service e.g. your fileserver</string>
+ </property>
+ </widget>
+ <widget class="QLineEdit" name="listeningPortLine" >
+ <property name="geometry" >
+ <rect>
+ <x>260</x>
+ <y>45</y>
+ <width>61</width>
+ <height>20</height>
+ </rect>
+ </property>
+ <property name="toolTip" >
+ <string>Port to connect to the service</string>
+ </property>
+ </widget>
+ <widget class="QPushButton" name="addServiceButton" >
+ <property name="enabled" >
+ <bool>true</bool>
+ </property>
+ <property name="geometry" >
+ <rect>
+ <x>169</x>
+ <y>121</y>
+ <width>151</width>
+ <height>27</height>
+ </rect>
+ </property>
+ <property name="toolTip" >
+ <string>Add a new service to Vidalia</string>
+ </property>
+ <property name="text" >
+ <string>Add Service</string>
+ </property>
+ </widget>
+ <widget class="QPushButton" name="modifyServiceButton" >
+ <property name="enabled" >
+ <bool>true</bool>
+ </property>
+ <property name="geometry" >
+ <rect>
+ <x>11</x>
+ <y>121</y>
+ <width>152</width>
+ <height>27</height>
+ </rect>
+ </property>
+ <property name="toolTip" >
+ <string>Modify an alredy existing service</string>
+ </property>
+ <property name="text" >
+ <string>Modify Service</string>
+ </property>
+ </widget>
+ <widget class="QLineEdit" name="serviceNameLine" >
+ <property name="geometry" >
+ <rect>
+ <x>11</x>
+ <y>45</y>
+ <width>237</width>
+ <height>20</height>
+ </rect>
+ </property>
+ <property name="toolTip" >
+ <string>Name of the service in Vidalia</string>
+ </property>
+ </widget>
+ </widget>
+ </widget>
+ <widget class="QWidget" name="advancedSettingsTab" >
+ <attribute name="title" >
+ <string>Advanced Settings</string>
+ </attribute>
+ <widget class="QLabel" name="label_2" >
+ <property name="geometry" >
+ <rect>
+ <x>11</x>
+ <y>11</y>
+ <width>256</width>
+ <height>17</height>
+ </rect>
+ </property>
<property name="text" >
- <string>Publish/Unpublish Service</string>
+ <string>Groups:</string>
</property>
</widget>
- <widget class="QPushButton" name="deleteServiceButton" >
+ <widget class="QLabel" name="label_4" >
<property name="geometry" >
<rect>
- <x>391</x>
- <y>105</y>
- <width>201</width>
- <height>27</height>
+ <x>340</x>
+ <y>10</y>
+ <width>256</width>
+ <height>17</height>
</rect>
</property>
<property name="text" >
- <string>Delete Service</string>
+ <string>Users:</string>
</property>
</widget>
- <widget class="QTabWidget" name="settingsWidget" >
+ <widget class="QPushButton" name="createGroupButton" >
<property name="geometry" >
<rect>
- <x>10</x>
- <y>210</y>
- <width>611</width>
- <height>331</height>
+ <x>11</x>
+ <y>241</y>
+ <width>91</width>
+ <height>24</height>
</rect>
</property>
- <property name="palette" >
- <palette>
- <active>
- <colorrole role="Base" >
- <brush brushstyle="SolidPattern" >
- <color alpha="255" >
- <red>255</red>
- <green>255</green>
- <blue>255</blue>
- </color>
- </brush>
- </colorrole>
- <colorrole role="Window" >
- <brush brushstyle="SolidPattern" >
- <color alpha="255" >
- <red>239</red>
- <green>235</green>
- <blue>231</blue>
- </color>
- </brush>
- </colorrole>
- </active>
- <inactive>
- <colorrole role="Base" >
- <brush brushstyle="SolidPattern" >
- <color alpha="255" >
- <red>255</red>
- <green>255</green>
- <blue>255</blue>
- </color>
- </brush>
- </colorrole>
- <colorrole role="Window" >
- <brush brushstyle="SolidPattern" >
- <color alpha="255" >
- <red>239</red>
- <green>235</green>
- <blue>231</blue>
- </color>
- </brush>
- </colorrole>
- </inactive>
- <disabled>
- <colorrole role="Base" >
- <brush brushstyle="SolidPattern" >
- <color alpha="255" >
- <red>239</red>
- <green>235</green>
- <blue>231</blue>
- </color>
- </brush>
- </colorrole>
- <colorrole role="Window" >
- <brush brushstyle="SolidPattern" >
- <color alpha="255" >
- <red>239</red>
- <green>235</green>
- <blue>231</blue>
- </color>
- </brush>
- </colorrole>
- </disabled>
- </palette>
+ <property name="toolTip" >
+ <string>Create a new group</string>
</property>
- <property name="currentIndex" >
- <number>0</number>
+ <property name="text" >
+ <string>Create Group</string>
</property>
- <widget class="QWidget" name="generalSettingsTab" >
- <attribute name="title" >
- <string>General Settings</string>
- </attribute>
- <widget class="QGroupBox" name="grpboxcreateservice" >
- <property name="geometry" >
- <rect>
- <x>20</x>
- <y>30</y>
- <width>571</width>
- <height>181</height>
- </rect>
- </property>
- <property name="title" >
- <string>Create new Service</string>
- </property>
- <widget class="QPushButton" name="addServiceButton" >
- <property name="enabled" >
- <bool>true</bool>
- </property>
- <property name="geometry" >
- <rect>
- <x>13</x>
- <y>117</y>
- <width>301</width>
- <height>24</height>
- </rect>
- </property>
- <property name="text" >
- <string>Add Service</string>
- </property>
- </widget>
- <widget class="QLineEdit" name="serviceAdressLine" >
- <property name="geometry" >
- <rect>
- <x>11</x>
- <y>91</y>
- <width>237</width>
- <height>20</height>
- </rect>
- </property>
- </widget>
- <widget class="QLabel" name="lblserviceadress" >
- <property name="geometry" >
- <rect>
- <x>11</x>
- <y>71</y>
- <width>237</width>
- <height>16</height>
- </rect>
- </property>
- <property name="text" >
- <string>Service adress:</string>
- </property>
- </widget>
- <widget class="QLineEdit" name="listeningPortLine" >
- <property name="geometry" >
- <rect>
- <x>260</x>
- <y>45</y>
- <width>61</width>
- <height>20</height>
- </rect>
- </property>
- </widget>
- <widget class="QLineEdit" name="localPortLine" >
- <property name="geometry" >
- <rect>
- <x>260</x>
- <y>90</y>
- <width>61</width>
- <height>20</height>
- </rect>
- </property>
- </widget>
- <widget class="QWidget" name="layoutWidget" >
- <property name="geometry" >
- <rect>
- <x>410</x>
- <y>40</y>
- <width>114</width>
- <height>83</height>
- </rect>
- </property>
- <layout class="QVBoxLayout" >
- <property name="margin" >
- <number>0</number>
- </property>
- <property name="spacing" >
- <number>6</number>
- </property>
- <item>
- <widget class="QRadioButton" name="rbV0" >
- <property name="text" >
- <string>Start as V0</string>
- </property>
- <property name="checked" >
- <bool>true</bool>
- </property>
- <property name="autoExclusive" >
- <bool>true</bool>
- </property>
- </widget>
- </item>
- <item>
- <widget class="QRadioButton" name="rbV2" >
- <property name="text" >
- <string>Start as V2</string>
- </property>
- </widget>
- </item>
- <item>
- <widget class="QRadioButton" name="rbV0V2" >
- <property name="text" >
- <string>Start as V0/V2</string>
- </property>
- </widget>
- </item>
- </layout>
- </widget>
- <widget class="QLabel" name="lbllisteningport" >
- <property name="geometry" >
- <rect>
- <x>260</x>
- <y>25</y>
- <width>111</width>
- <height>17</height>
- </rect>
- </property>
- <property name="text" >
- <string>Listn. Port:</string>
- </property>
- </widget>
- <widget class="QLabel" name="lbllocalport" >
- <property name="geometry" >
- <rect>
- <x>260</x>
- <y>70</y>
- <width>111</width>
- <height>17</height>
- </rect>
- </property>
- <property name="text" >
- <string>Local Port:</string>
- </property>
- </widget>
- <widget class="QLabel" name="lblservicename" >
- <property name="geometry" >
- <rect>
- <x>11</x>
- <y>25</y>
- <width>237</width>
- <height>16</height>
- </rect>
- </property>
- <property name="text" >
- <string>Service name:</string>
- </property>
- </widget>
- <widget class="QLineEdit" name="serviceNameLine" >
- <property name="geometry" >
- <rect>
- <x>11</x>
- <y>45</y>
- <width>237</width>
- <height>20</height>
- </rect>
- </property>
- </widget>
- </widget>
- </widget>
- <widget class="QWidget" name="advancedSettingsTab" >
- <attribute name="title" >
- <string>Advanced Settings</string>
- </attribute>
- <widget class="QLabel" name="label_2" >
- <property name="geometry" >
- <rect>
- <x>11</x>
- <y>11</y>
- <width>256</width>
- <height>17</height>
- </rect>
- </property>
- <property name="text" >
- <string>Groups:</string>
- </property>
- </widget>
- <widget class="QPushButton" name="createGroupButton" >
- <property name="geometry" >
- <rect>
- <x>11</x>
- <y>241</y>
- <width>91</width>
- <height>24</height>
- </rect>
- </property>
- <property name="text" >
- <string>Create Group</string>
- </property>
- </widget>
- <widget class="QPushButton" name="deleteGroupButton" >
- <property name="geometry" >
- <rect>
- <x>110</x>
- <y>240</y>
- <width>91</width>
- <height>24</height>
- </rect>
- </property>
- <property name="text" >
- <string>Delete Group</string>
- </property>
- </widget>
- <widget class="QPushButton" name="modifyGroupButton" >
- <property name="geometry" >
- <rect>
- <x>210</x>
- <y>240</y>
- <width>91</width>
- <height>24</height>
- </rect>
- </property>
- <property name="text" >
- <string>Modify Group</string>
- </property>
- </widget>
- <widget class="QLabel" name="label_4" >
- <property name="geometry" >
- <rect>
- <x>340</x>
- <y>10</y>
- <width>256</width>
- <height>17</height>
- </rect>
- </property>
- <property name="text" >
- <string>Users:</string>
- </property>
- </widget>
- <widget class="QPushButton" name="createUserButton" >
- <property name="geometry" >
- <rect>
- <x>330</x>
- <y>240</y>
- <width>81</width>
- <height>24</height>
- </rect>
- </property>
- <property name="text" >
- <string>Create User</string>
- </property>
- </widget>
- <widget class="QPushButton" name="deleteUserButton" >
- <property name="geometry" >
- <rect>
- <x>420</x>
- <y>240</y>
- <width>81</width>
- <height>24</height>
- </rect>
- </property>
- <property name="text" >
- <string>Delete User</string>
- </property>
- </widget>
- <widget class="QPushButton" name="modifyUserButton" >
- <property name="geometry" >
- <rect>
- <x>510</x>
- <y>240</y>
- <width>81</width>
- <height>24</height>
- </rect>
- </property>
- <property name="text" >
- <string>Modify User</string>
- </property>
- </widget>
- <widget class="QPushButton" name="addUserButton" >
- <property name="geometry" >
- <rect>
- <x>330</x>
- <y>270</y>
- <width>261</width>
- <height>24</height>
- </rect>
- </property>
- <property name="text" >
- <string>Add User</string>
- </property>
- </widget>
- <widget class="QListWidget" name="userManagementView" >
- <property name="geometry" >
- <rect>
- <x>330</x>
- <y>30</y>
- <width>261</width>
- <height>189</height>
- </rect>
- </property>
- <property name="alternatingRowColors" >
- <bool>true</bool>
- </property>
- </widget>
- <widget class="QTableWidget" name="groupListView" >
- <property name="enabled" >
- <bool>true</bool>
- </property>
- <property name="geometry" >
- <rect>
- <x>10</x>
- <y>30</y>
- <width>311</width>
- <height>191</height>
- </rect>
- </property>
- <property name="minimumSize" >
- <size>
- <width>200</width>
- <height>0</height>
- </size>
- </property>
- <property name="maximumSize" >
- <size>
- <width>16777215</width>
- <height>16777215</height>
- </size>
- </property>
- <property name="layoutDirection" >
- <enum>Qt::RightToLeft</enum>
- </property>
- <property name="autoFillBackground" >
- <bool>true</bool>
- </property>
- <property name="autoScroll" >
- <bool>false</bool>
- </property>
- <property name="editTriggers" >
- <set>QAbstractItemView::NoEditTriggers</set>
- </property>
- <property name="dragEnabled" >
- <bool>false</bool>
- </property>
- <property name="dragDropOverwriteMode" >
- <bool>true</bool>
- </property>
- <property name="alternatingRowColors" >
- <bool>true</bool>
- </property>
- <property name="selectionMode" >
- <enum>QAbstractItemView::SingleSelection</enum>
- </property>
- <property name="selectionBehavior" >
- <enum>QAbstractItemView::SelectRows</enum>
- </property>
- <property name="verticalScrollMode" >
- <enum>QAbstractItemView::ScrollPerItem</enum>
- </property>
- <property name="gridStyle" >
- <enum>Qt::SolidLine</enum>
- </property>
- <column>
- <property name="text" >
- <string>Active</string>
- </property>
- </column>
- <column>
- <property name="text" >
- <string>Group Name</string>
- </property>
- </column>
- </widget>
- </widget>
</widget>
- <widget class="QTableWidget" name="serviceListView" >
+ <widget class="QPushButton" name="deleteGroupButton" >
+ <property name="geometry" >
+ <rect>
+ <x>110</x>
+ <y>240</y>
+ <width>91</width>
+ <height>24</height>
+ </rect>
+ </property>
+ <property name="toolTip" >
+ <string>Delete the selected group vom the groups table</string>
+ </property>
+ <property name="text" >
+ <string>Delete Group</string>
+ </property>
+ </widget>
+ <widget class="QPushButton" name="modifyGroupButton" >
+ <property name="geometry" >
+ <rect>
+ <x>210</x>
+ <y>240</y>
+ <width>91</width>
+ <height>24</height>
+ </rect>
+ </property>
+ <property name="toolTip" >
+ <string>Modify an already existing group</string>
+ </property>
+ <property name="text" >
+ <string>Modify Group</string>
+ </property>
+ </widget>
+ <widget class="QPushButton" name="deleteUserButton" >
+ <property name="geometry" >
+ <rect>
+ <x>420</x>
+ <y>240</y>
+ <width>81</width>
+ <height>24</height>
+ </rect>
+ </property>
+ <property name="toolTip" >
+ <string>Delete the selected user from the userlist</string>
+ </property>
+ <property name="text" >
+ <string>Delete User</string>
+ </property>
+ </widget>
+ <widget class="QPushButton" name="createUserButton" >
+ <property name="geometry" >
+ <rect>
+ <x>330</x>
+ <y>240</y>
+ <width>81</width>
+ <height>24</height>
+ </rect>
+ </property>
+ <property name="toolTip" >
+ <string>Create a new User which is not known to vidalia</string>
+ </property>
+ <property name="text" >
+ <string>Create User</string>
+ </property>
+ </widget>
+ <widget class="QTableWidget" name="groupListView" >
<property name="enabled" >
<bool>true</bool>
</property>
@@ -585,8 +601,8 @@
<rect>
<x>10</x>
<y>30</y>
- <width>321</width>
- <height>151</height>
+ <width>311</width>
+ <height>191</height>
</rect>
</property>
<property name="minimumSize" >
@@ -601,6 +617,9 @@
<height>16777215</height>
</size>
</property>
+ <property name="toolTip" >
+ <string>All Groups which are known to the selected Service</string>
+ </property>
<property name="layoutDirection" >
<enum>Qt::RightToLeft</enum>
</property>
@@ -641,20 +660,83 @@
</column>
<column>
<property name="text" >
- <string>Service Name</string>
+ <string>Group Name</string>
</property>
</column>
</widget>
+ <widget class="QPushButton" name="modifyUserButton" >
+ <property name="geometry" >
+ <rect>
+ <x>510</x>
+ <y>240</y>
+ <width>81</width>
+ <height>24</height>
+ </rect>
+ </property>
+ <property name="toolTip" >
+ <string>Modify an already existing user</string>
+ </property>
+ <property name="text" >
+ <string>Modify User</string>
+ </property>
+ </widget>
+ <widget class="QPushButton" name="addUserButton" >
+ <property name="geometry" >
+ <rect>
+ <x>330</x>
+ <y>270</y>
+ <width>111</width>
+ <height>24</height>
+ </rect>
+ </property>
+ <property name="toolTip" >
+ <string>Add a User which alredy exists in another service</string>
+ </property>
+ <property name="text" >
+ <string>Add User</string>
+ </property>
+ </widget>
+ <widget class="QPushButton" name="copyToClipboardButton" >
+ <property name="geometry" >
+ <rect>
+ <x>450</x>
+ <y>270</y>
+ <width>141</width>
+ <height>24</height>
+ </rect>
+ </property>
+ <property name="toolTip" >
+ <string>Copy user data to clipboard. You need to send the user this data by e.g by mail</string>
+ </property>
+ <property name="text" >
+ <string>Copy to Clipboard</string>
+ </property>
+ </widget>
+ <widget class="QListWidget" name="userManagementView" >
+ <property name="geometry" >
+ <rect>
+ <x>330</x>
+ <y>30</y>
+ <width>261</width>
+ <height>189</height>
+ </rect>
+ </property>
+ <property name="toolTip" >
+ <string>All Users which are known to the selected Group</string>
+ </property>
+ <property name="alternatingRowColors" >
+ <bool>true</bool>
+ </property>
+ </widget>
</widget>
- </item>
- </layout>
+ </widget>
+ </widget>
</widget>
<tabstops>
<tabstop>serviceNameLine</tabstop>
<tabstop>listeningPortLine</tabstop>
<tabstop>rbV0</tabstop>
<tabstop>rbV2</tabstop>
- <tabstop>rbV0V2</tabstop>
<tabstop>serviceAdressLine</tabstop>
<tabstop>localPortLine</tabstop>
<tabstop>addServiceButton</tabstop>
Modified: branches/hidden-services/src/gui/config/userdialog.ui
===================================================================
--- branches/hidden-services/src/gui/config/userdialog.ui 2007-10-05 16:01:58 UTC (rev 1971)
+++ branches/hidden-services/src/gui/config/userdialog.ui 2007-10-09 16:04:01 UTC (rev 1972)
@@ -9,9 +9,21 @@
<x>0</x>
<y>0</y>
<width>374</width>
- <height>377</height>
+ <height>443</height>
</rect>
</property>
+ <property name="minimumSize" >
+ <size>
+ <width>374</width>
+ <height>443</height>
+ </size>
+ </property>
+ <property name="maximumSize" >
+ <size>
+ <width>374</width>
+ <height>443</height>
+ </size>
+ </property>
<property name="palette" >
<palette>
<active>
@@ -386,7 +398,7 @@
<property name="geometry" >
<rect>
<x>110</x>
- <y>330</y>
+ <y>410</y>
<width>77</width>
<height>26</height>
</rect>
@@ -399,7 +411,7 @@
<property name="geometry" >
<rect>
<x>210</x>
- <y>330</y>
+ <y>410</y>
<width>77</width>
<height>26</height>
</rect>
@@ -408,139 +420,182 @@
<string>Cancel</string>
</property>
</widget>
- <widget class="QLineEdit" name="userline" >
+ <widget class="QLabel" name="label" >
<property name="geometry" >
<rect>
- <x>181</x>
- <y>33</y>
- <width>179</width>
+ <x>30</x>
+ <y>20</y>
+ <width>321</width>
+ <height>81</height>
+ </rect>
+ </property>
+ <property name="text" >
+ <string>In order to create a new User you can choose to
+either type in a introduction and authentication
+password, a public key, or both.</string>
+ </property>
+ </widget>
+ <widget class="QLabel" name="lblUserName" >
+ <property name="geometry" >
+ <rect>
+ <x>21</x>
+ <y>96</y>
+ <width>159</width>
<height>29</height>
</rect>
</property>
+ <property name="text" >
+ <string>Username:</string>
+ </property>
</widget>
- <widget class="QLineEdit" name="introductionpwline" >
+ <widget class="QLabel" name="lblIntroductionPassword" >
<property name="geometry" >
<rect>
- <x>181</x>
- <y>70</y>
- <width>179</width>
+ <x>21</x>
+ <y>136</y>
+ <width>159</width>
<height>29</height>
</rect>
</property>
- <property name="echoMode" >
- <enum>QLineEdit::Password</enum>
+ <property name="text" >
+ <string>Introduction Password:</string>
</property>
</widget>
- <widget class="QLineEdit" name="introductionconfirmationline" >
+ <widget class="QLabel" name="lblIntroductionConfirmation" >
<property name="geometry" >
<rect>
- <x>181</x>
- <y>107</y>
- <width>179</width>
+ <x>21</x>
+ <y>176</y>
+ <width>159</width>
<height>29</height>
</rect>
</property>
- <property name="echoMode" >
- <enum>QLineEdit::Password</enum>
+ <property name="text" >
+ <string>Confirmation:</string>
</property>
</widget>
- <widget class="QLineEdit" name="authenticationpwline" >
+ <widget class="QLabel" name="lblAuthenticationConfirmation" >
<property name="geometry" >
<rect>
- <x>181</x>
- <y>144</y>
- <width>179</width>
+ <x>21</x>
+ <y>256</y>
+ <width>159</width>
<height>29</height>
</rect>
</property>
+ <property name="text" >
+ <string>Confirmation:</string>
+ </property>
+ </widget>
+ <widget class="QLineEdit" name="introductionconfirmationline" >
+ <property name="geometry" >
+ <rect>
+ <x>186</x>
+ <y>176</y>
+ <width>184</width>
+ <height>29</height>
+ </rect>
+ </property>
+ <property name="toolTip" >
+ <string>Confirmation of the introduction password</string>
+ </property>
<property name="echoMode" >
<enum>QLineEdit::Password</enum>
</property>
</widget>
- <widget class="QLineEdit" name="authenticationconfirmationline" >
+ <widget class="QLineEdit" name="introductionpwline" >
<property name="geometry" >
<rect>
- <x>181</x>
- <y>181</y>
- <width>179</width>
+ <x>186</x>
+ <y>136</y>
+ <width>184</width>
<height>29</height>
</rect>
</property>
+ <property name="toolTip" >
+ <string>Introduction password of the user</string>
+ </property>
<property name="echoMode" >
<enum>QLineEdit::Password</enum>
</property>
</widget>
- <widget class="QLabel" name="lblUserName" >
+ <widget class="QLineEdit" name="userline" >
<property name="geometry" >
<rect>
- <x>11</x>
- <y>31</y>
- <width>166</width>
- <height>32</height>
+ <x>186</x>
+ <y>96</y>
+ <width>184</width>
+ <height>29</height>
</rect>
</property>
- <property name="text" >
- <string>Username:</string>
+ <property name="toolTip" >
+ <string>Name of the user</string>
</property>
</widget>
- <widget class="QLabel" name="lblIntroductionPassword" >
+ <widget class="QLabel" name="lblAuthenticationPassword" >
<property name="geometry" >
<rect>
- <x>11</x>
- <y>69</y>
- <width>166</width>
- <height>31</height>
+ <x>21</x>
+ <y>216</y>
+ <width>159</width>
+ <height>29</height>
</rect>
</property>
<property name="text" >
- <string>Introduction Password:</string>
+ <string>Authentication Password:</string>
</property>
</widget>
- <widget class="QLabel" name="lblIntroductionConfirmation" >
+ <widget class="QLineEdit" name="authenticationpwline" >
<property name="geometry" >
<rect>
- <x>11</x>
- <y>106</y>
- <width>166</width>
- <height>32</height>
+ <x>186</x>
+ <y>216</y>
+ <width>184</width>
+ <height>29</height>
</rect>
</property>
- <property name="text" >
- <string>Confirmation:</string>
+ <property name="toolTip" >
+ <string>Authentication password of the user</string>
</property>
+ <property name="echoMode" >
+ <enum>QLineEdit::Password</enum>
+ </property>
</widget>
- <widget class="QLabel" name="lblAuthenticationPassword" >
+ <widget class="QLineEdit" name="authenticationconfirmationline" >
<property name="geometry" >
<rect>
- <x>11</x>
- <y>144</y>
- <width>166</width>
- <height>31</height>
+ <x>186</x>
+ <y>256</y>
+ <width>184</width>
+ <height>29</height>
</rect>
</property>
- <property name="text" >
- <string>Authentication Password:</string>
+ <property name="toolTip" >
+ <string>Confirmation of the authentication password</string>
</property>
+ <property name="echoMode" >
+ <enum>QLineEdit::Password</enum>
+ </property>
</widget>
- <widget class="QLabel" name="lblAuthenticationConfirmation" >
+ <widget class="QTextEdit" name="publickeytextedit" >
<property name="geometry" >
<rect>
- <x>11</x>
- <y>181</y>
- <width>166</width>
- <height>32</height>
+ <x>160</x>
+ <y>300</y>
+ <width>211</width>
+ <height>101</height>
</rect>
</property>
- <property name="text" >
- <string>Confirmation:</string>
+ <property name="toolTip" >
+ <string>Public key of the user</string>
</property>
</widget>
<widget class="QLabel" name="lblPublicKey" >
<property name="geometry" >
<rect>
<x>10</x>
- <y>250</y>
- <width>166</width>
+ <y>330</y>
+ <width>141</width>
<height>31</height>
</rect>
</property>
@@ -548,17 +603,17 @@
<string>Public Key:</string>
</property>
</widget>
- <widget class="QTextEdit" name="publickeytextedit" >
- <property name="geometry" >
- <rect>
- <x>180</x>
- <y>220</y>
- <width>181</width>
- <height>101</height>
- </rect>
- </property>
- </widget>
</widget>
+ <tabstops>
+ <tabstop>userline</tabstop>
+ <tabstop>introductionpwline</tabstop>
+ <tabstop>introductionconfirmationline</tabstop>
+ <tabstop>authenticationpwline</tabstop>
+ <tabstop>authenticationconfirmationline</tabstop>
+ <tabstop>publickeytextedit</tabstop>
+ <tabstop>createButton</tabstop>
+ <tabstop>cancelButton</tabstop>
+ </tabstops>
<resources/>
<connections>
<connection>
Modified: branches/hidden-services/src/gui/help/content/de/config.html
===================================================================
--- branches/hidden-services/src/gui/help/content/de/config.html 2007-10-05 16:01:58 UTC (rev 1971)
+++ branches/hidden-services/src/gui/help/content/de/config.html 2007-10-09 16:04:01 UTC (rev 1972)
@@ -103,36 +103,33 @@
Hierbei handelt es sich um Einstellungen, die grundsätzlich für jeden Service gesetzt werden müssen.
</ul>
<ul>
- <li><b>Service Name</b>:
+ <p><li><b>Service Name:</b>
Der Name des Services. Dieser gilt nur innerhalb von Vidalia zur
</li>
</ul>
<ul>
- <li><b>Lokaler Port</b>:
+ <p><li><b>Lokaler Port:</b>
Hier muss der Port eingestellt werden, auf dem auch der HiddenService läuft.</li>
- <li><b>Service Adresse: </b>IP Adresse unter der der Service erreichbar ist (z.B. IP Adresse ihres File Servers)</li>
- <li><b>Listening Port</b>:
- Port auf dem HiddenService Anfragen eingehen.</li>
+ <p><li><b>Service Adresse: </b>IP Adresse unter der der Service erreichbar ist (z.B. IP Adresse ihres File Servers)</li>
+ <p><li><b>Listening Port:</b>
+ Port auf dem HiddenService Anfragen eingehen.</li><br>
</ul>
- <p>
<ul>
<li><b><u>Fortgeschrittene Einstellungen:</u></b></li>
- Diese Einstellungen werden nur aktiv, wenn es sich um einen v2 Service handelt.
+ Diese Einstellungen werden nur aktiv, wenn es sich um einen v2 Service handelt.
</ul>
<ul>
- <li><b>Gruppen:</b>
+ <p><li><b>Gruppen:</b>
Hier können Sie Vidalia veranlassen, für einen Service Gruppen anzulegen.
Jede Gruppe steht dabei für einen Secret Cookie. Die Bedienelemente für das Gruppenmanagement
befinden sich direkt unter dem Groups Fenster.
</li>
- </ul>
- <ul>
- <li>
- <b>Benutzer:</b> Hier können Sie Vidalia veranlassen, zu einer Gruppe Benutzer anzulegen.
+ </ul>
+ <ul>
+ <p><li><b>Benutzer:</b> Hier können Sie Vidalia veranlassen, zu einer Gruppe Benutzer anzulegen.
Jeder Benutzer wird mit steht dabei für einen Secret Cookie. Die Bedienelemente für das Gruppenmanagement
befinden sich direkt unter dem BenutzerFenster.
</li>
- </ul>
</ul>
</body>
</html>
Modified: branches/hidden-services/src/gui/help/content/en/config.html
===================================================================
--- branches/hidden-services/src/gui/help/content/en/config.html 2007-10-05 16:01:58 UTC (rev 1971)
+++ branches/hidden-services/src/gui/help/content/en/config.html 2007-10-09 16:04:01 UTC (rev 1972)
@@ -103,25 +103,24 @@
These are settings which have to be configured for every service.
</ul>
<ul>
- <li><b>Service Name</b>:
+ <p><li><b>Service Name</b>:
The name of the service. This name is used only within vidalia to represent a service by a given name.
</li>
</ul>
<ul>
- <li><b>Local Port</b>:
+ <p><li><b>Local Port</b>:
The Port of the services which will be published</li>
- <li><b>Service Adress: </b>The IP Adress of the service (e.g the file server you want to publish)</li>
- <li><b>Listening Port</b>:
- The Port which is requested by users of the hidden service.</li>
+ <p><li><b>Service Adress: </b>The IP Adress of the service (e.g the file server you want to publish)</li>
+ <p><li><b>Listening Port</b>:
+ The Port which is requested by users of the hidden service.</li><br>
</ul>
- <p>
<ul>
<li><b><u>Advanced Settings:</u></b></li>
These settings will only be active, if the service is published as a v2 service.
</ul>
<ul>
- <li><b>Groups:</b>
+ <p><li><b>Groups:</b>
Here you can publish groups with vidalia.
Every groups represents a secret cookie. The control elements for the groupmanagement are
located below the groupmanagement window.
@@ -129,8 +128,7 @@
</ul>
<ul>
- <li>
- <b>User:</b> Here you can publish users with vidalia which belong to groups.
+ <p><li><b>User:</b> Here you can publish users with vidalia which belong to groups.
Every user represents an introduction point authentifcation. The control elements for the usermanagement are
located below the usermanagement window.
Modified: branches/hidden-services/src/lang/vidalia_de.ts
===================================================================
--- branches/hidden-services/src/lang/vidalia_de.ts 2007-10-05 16:01:58 UTC (rev 1971)
+++ branches/hidden-services/src/lang/vidalia_de.ts 2007-10-09 16:04:01 UTC (rev 1972)
@@ -779,6 +779,16 @@
<translation>Service löschen</translation>
</message>
<message>
+ <location filename="../gui/config/hiddenservicepage.ui" line="181"/>
+ <source>Publish/Unpublish the selected Services</source>
+ <translation>Veröffentlichen/Deaktivieren des Services</translation>
+ </message>
+ <message>
+ <location filename="../gui/config/hiddenservicepage.ui" line="197"/>
+ <source>Delete the selected service</source>
+ <translation>Service löschen</translation>
+ </message>
+ <message>
<location filename="../gui/config/hiddenservicepage.ui" line="207"/>
<source>Create new Service</source>
<translation>Neuen Service anlegen</translation>
@@ -814,11 +824,21 @@
<translation>Listn. Port:</translation>
</message>
<message>
+ <location filename="../gui/config/hiddenservicepage.ui" line="330"/>
+ <source>Publish as normal V0 service, group and user settings will be ignored</source>
+ <translation>Als V0 service veröffentlichen, Gruppen- und Nutzereinstellungen werden ignoriert</translation>
+ </message>
+ <message>
<location filename="../gui/config/hiddenservicepage.ui" line="336"/>
<source>Start as V0</source>
<translation>V0 Service</translation>
</message>
<message>
+ <location filename="../gui/config/hiddenservicepage.ui" line="346"/>
+ <source>Publish as V2 service, group and user settings are active</source>
+ <translation>Als V2 service veröffentlichen, Gruppen- und Nutzereinstellungen sind aktiv</translation>
+ </message>
+ <message>
<location filename="../gui/config/hiddenservicepage.ui" line="349"/>
<source>Start as V2</source>
<translation>V2 Service</translation>
@@ -848,32 +868,92 @@
<source>Users:</source>
<translation>Benutzer:</translation>
</message>
+ <message>
+ <location filename="../gui/config/hiddenservicepage.ui" line="414"/>
+ <source>Local Port of the service e.g. your fileserver</source>
+ <translation>lokaler Port des Services</translation>
+ </message>
<message>
<location filename="../gui/config/hiddenservicepage.ui" line="417"/>
<source>Delete Group</source>
<translation>Löschen</translation>
</message>
<message>
+ <location filename="../gui/config/hiddenservicepage.ui" line="427"/>
+ <source>IP Adress of the service e.g. your fileserver</source>
+ <translation>IP-Adresse des Services</translation>
+ </message>
+ <message>
<location filename="../gui/config/hiddenservicepage.ui" line="430"/>
<source>Modify Group</source>
<translation>Ändern </translation>
</message>
<message>
+ <location filename="../gui/config/hiddenservicepage.ui" line="437"/>
+ <source>Port to connect to the service</source>
+ <translation>Port unter dem der Service erreichbar ist</translation>
+ </message>
+ <message>
+ <location filename="../gui/config/hiddenservicepage.ui" line="447"/>
+ <source>Add a new service to Vidalia</source>
+ <translation>Füge einen neuen Service hinzu</translation>
+ </message>
+ <message>
<location filename="../gui/config/hiddenservicepage.ui" line="456"/>
<source>Modify User</source>
<translation>Ändern</translation>
</message>
<message>
+ <location filename="../gui/config/hiddenservicepage.ui" line="457"/>
+ <source>Modify an alredy existing service</source>
+ <translation>Modifizieren eines bestehenden Services</translation>
+ </message>
+ <message>
+ <location filename="../gui/config/hiddenservicepage.ui" line="467"/>
+ <source>Name of the service in Vidalia</source>
+ <translation>Name eines Services</translation>
+ </message>
+ <message>
<location filename="../gui/config/hiddenservicepage.ui" line="469"/>
<source>Delete User</source>
<translation>Löschen</translation>
</message>
<message>
+ <location filename="../gui/config/hiddenservicepage.ui" line="474"/>
+ <source>Service Name</source>
+ <translation>Service Name</translation>
+ </message>
+ <message>
+ <location filename="../gui/config/hiddenservicepage.ui" line="477"/>
+ <source>Create a new group</source>
+ <translation>Name eines Services</translation>
+ </message>
+ <message>
<location filename="../gui/config/hiddenservicepage.ui" line="482"/>
<source>Add User</source>
<translation>Hinzufügen</translation>
</message>
<message>
+ <location filename="../gui/config/hiddenservicepage.ui" line="508"/>
+ <source>Modify Service</source>
+ <translation>Service modifizieren</translation>
+ </message>
+ <message>
+ <location filename="../gui/config/hiddenservicepage.ui" line="508"/>
+ <source>Create User</source>
+ <translation>Anlegen</translation>
+ </message>
+ <message>
+ <location filename="../gui/config/hiddenservicepage.ui" line="551"/>
+ <source>Delete the selected group vom the groups table</source>
+ <translation>Löschen einer Gruppe aus Vidalia</translation>
+ </message>
+ <message>
+ <location filename="../gui/config/hiddenservicepage.ui" line="561"/>
+ <source>Modify an already existing group</source>
+ <translation>Bestehende Gruppe modifizieren</translation>
+ </message>
+ <message>
<location filename="../gui/config/hiddenservicepage.ui" line="562"/>
<source>Group Name</source>
<translation>Gruppenname</translation>
@@ -884,10 +964,45 @@
<translation>Aktiv</translation>
</message>
<message>
- <location filename="../gui/config/hiddenservicepage.ui" line="474"/>
- <source>Service Name</source>
- <translation>Service Name</translation>
- </message>
+ <location filename="../gui/config/hiddenservicepage.ui" line="571"/>
+ <source>Delete the selected user from the userlist</source>
+ <translation>Einen Nutzer aus der Gruppe löschen</translation>
+ </message>
+ <message>
+ <location filename="../gui/config/hiddenservicepage.ui" line="600"/>
+ <source>Create a new User which is not known to vidalia</source>
+ <translation>Neuen Nutzer erstellen</translation>
+ </message>
+ <message>
+ <location filename="../gui/config/hiddenservicepage.ui" line="631"/>
+ <source>All Groups which are known to the selected Service</source>
+ <translation>Alle zu einem Service gehörenden Gruppen</translation>
+ </message>
+ <message>
+ <location filename="../gui/config/hiddenservicepage.ui" line="687"/>
+ <source>All Users which are known to the selected Group</source>
+ <translation>Alle zu einer Gruppe gehörenden Nutzer</translation>
+ </message>
+ <message>
+ <location filename="../gui/config/hiddenservicepage.ui" line="703"/>
+ <source>Modify an already existing user</source>
+ <translation>Bestehenden Nutzer modifizieren</translation>
+ </message>
+ <message>
+ <location filename="../gui/config/hiddenservicepage.ui" line="719"/>
+ <source>Add a User which alredy exists in another service</source>
+ <translation>Füge einen bestehenden Nutzer der selektierten Gruppe hinzu </translation>
+ </message>
+ <message>
+ <location filename="../gui/config/hiddenservicepage.ui" line="735"/>
+ <source>Copy user data to clipboard. You need to send the user this data by e.g by mail</source>
+ <translation>Kopiere Nutzerdaten in die Zwischenablage</translation>
+ </message>
+ <message>
+ <location filename="../gui/config/hiddenservicepage.ui" line="801"/>
+ <source>Copy to Clipboard</source>
+ <translation>In Zwischenablage..</translation>
+ </message>
</context>
<context>
<name>Adduserdialog</name>
@@ -938,11 +1053,21 @@
<translation>Userdaten</translation>
</message>
<message>
+ <location filename="../gui/config/userdialog.ui" line="420"/>
+ <source>Authentication password of the user</source>
+ <translation>Passwort für Authentifikation</translation>
+ </message>
+ <message>
<location filename="../gui/config/userdialog.ui" line="482"/>
<source>Username:</source>
<translation>Benutzername:</translation>
</message>
<message>
+ <location filename="../gui/config/userdialog.ui" line="488"/>
+ <source>Public key of the user</source>
+ <translation>Public key des Benutzers</translation>
+ </message>
+ <message>
<location filename="../gui/config/userpdialog.ui" line="489"/>
<source>Introduction Password:</source>
<translation>Introduction Passwort:</translation>
@@ -953,11 +1078,16 @@
<translation>Bestätigung:</translation>
</message>
<message>
- <location filename="../gui/config/userdialog.ui" line="496"/>
+ <location filename="../gui/config/userdialog.ui" line="501"/>
<source>Authentication Password:</source>
<translation>Authentication Passwort:</translation>
</message>
<message>
+ <location filename="../gui/config/userdialog.ui" line="496"/>
+ <source>Confirmation of the introduction password</source>
+ <translation>Bestätigung des Introduction Passwortes</translation>
+ </message>
+ <message>
<location filename="../gui/config/userdialog.ui" line="510"/>
<source>Confirmation:</source>
<translation>Bestätigung:</translation>
@@ -966,7 +1096,32 @@
<location filename="../gui/config/userdialog.ui" line="517"/>
<source>Public Key:</source>
<translation>Public Key:</translation>
- </message>
+ </message>
+ <message>
+ <location filename="../gui/config/userdialog.ui" line="517"/>
+ <source>Confirmation of the authentication password </source>
+ <translation>Bestätigung des Athentifizierungs Passwortes</translation>
+ </message>
+ <message>
+ <location filename="../gui/config/userdialog.ui" line="533"/>
+ <source>Introduction password of the user</source>
+ <translation>Introduction Passwort</translation>
+ </message>
+ <message>
+ <location filename="../gui/config/userdialog.ui" line="549"/>
+ <source>Name of the user</source>
+ <translation>Benutzername</translation>
+ </message>
+ <message>
+ <location filename="../gui/config/userdialog.ui" line="601"/>
+ <source>In order to create a new User you can choose to
+either type in a introduction and authentication
+password, a public key, or both.</source>
+ <translation>Um einen neuen Benutzer anzulegen haben Sie die
+Möglichkeit, entweder ein Introduction- und
+Authentifizierungs-Passwort, einen Public Key
+oder beides anulegen.</translation>
+ </message>
</context>
<context>
<name>HiddenservicePage</name>
@@ -976,235 +1131,165 @@
<translation>Fehler</translation>
</message>
<message>
- <location filename="../gui/config/hiddenservicepage.cpp" line="135"/>
+ <location filename="../gui/config/hiddenservicepage.cpp" line="141"/>
<source>Please set all fields.</source>
<translation>Bitte alle Felder ausfüllen</translation>
</message>
- <message>
- <location filename="../gui/config/hiddenservicepage.cpp" line="163"/>
- <source>Error</source>
- <translation>Fehler</translation>
- </message>
<message>
<location filename="../gui/config/hiddenservicepage.cpp" line="163"/>
<source>Service name already in use, select a different one.</source>
<translation>Service name ist bereits vergeben. Bitte wählen Sie einen anderen.</translation>
</message>
<message>
- <location filename="../gui/config/hiddenservicepage.cpp" line="243"/>
+ <location filename="../gui/config/hiddenservicepage.cpp" line="182"/>
+ <source>Please note that deleting this service will cause its undeployment.</source>
+ <translation>Das Löschen dieses Services erzwingt das Entfernen des Dienstes aus Tor.</translation>
+ </message>
+ <message>
+ <location filename="../gui/config/hiddenservicepage.cpp" line="230"/>
<source>Old Tor Version</source>
<translation>Alte Tor Version</translation>
</message>
<message>
- <location filename="../gui/config/hiddenservicepage.cpp" line="243"/>
- <source>Your Version of Tor does not support V2 and V0V2 support.</source>
- <translation>Ihre Tor Version unterstützt kein V2 bzw. V0V2</translation>
+ <location filename="../gui/config/hiddenservicepage.cpp" line="231"/>
+ <source>Your Version of Tor does not support V2.</source>
+ <translation>Ihre Tor Version unterstützt keine V2 Descriptoren.</translation>
</message>
<message>
- <location filename="../gui/config/hiddenservicepage.cpp" line="622"/>
- <source>Error</source>
- <translation>Fehler</translation>
+ <location filename="../gui/config/hiddenservicepage.cpp" line="254"/>
+ <source>Error while trying to unpublish hidden service.</source>
+ <translation>Fehler beim Entfernen eines Dienstes.</translation>
</message>
<message>
- <location filename="../gui/config/hiddenservicepage.cpp" line="622"/>
- <source>Please select service and group.</source>
- <translation>Bitte wählen sie einen Service und eine Gruppe aus</translation>
+ <location filename="../gui/config/hiddenservicepage.cpp" line="289"/>
+ <source>Error while trying to publish hidden service.</source>
+ <translation>Fehler beim Veröffentlichen eines Dienstes.</translation>
</message>
<message>
- <location filename="../gui/config/hiddenservicepage.cpp" line="646"/>
- <source>Error</source>
- <translation>Fehler</translation>
+ <location filename="../gui/config/hiddenservicepage.cpp" line="293"/>
+ <source>Problems while trying to store data.</source>
+ <translation>Fehler beim Speichern der Daten.</translation>
</message>
<message>
- <location filename="../gui/config/hiddenservicepage.cpp" line="646"/>
- <source>Please fill out all fields.</source>
- <translation>Bitte füllen sie alle Felder aus.</translation>
+ <location filename="../gui/config/hiddenservicepage.cpp" line="453"/>
+ <source>Please set all fields.</source>
+ <translation>Bitte alle benötigten Felder ausfüllen.</translation>
</message>
<message>
- <location filename="../gui/config/hiddenservicepage.cpp" line="652"/>
- <source>Error</source>
- <translation>Fehler</translation>
+ <location filename="../gui/config/hiddenservicepage.cpp" line="475"/>
+ <source>Service name already in use, please select a different one.</source>
+ <translation>Name bereits vergeben, bitte wählen Sie einen anderen.</translation>
</message>
<message>
- <location filename="../gui/config/hiddenservicepage.cpp" line="652"/>
- <source>No match for passwords and confirmation fields.</source>
- <translation>Passwort und Bestätigungsfelder stimmen nicht überein.</translation>
+ <location filename="../gui/config/hiddenservicepage.cpp" line="677"/>
+ <source>Please select service and group.</source>
+ <translation>Bitte wählen sie einen Service und eine Gruppe aus</translation>
</message>
<message>
- <location filename="../gui/config/hiddenservicepage.cpp" line="688"/>
- <source>Error</source>
- <translation>Fehler</translation>
+ <location filename="../gui/config/hiddenservicepage.cpp" line="703"/>
+ <source>The username has to be set.</source>
+ <translation>Bitte Benutzernamen eingeben.</translation>
</message>
<message>
- <location filename="../gui/config/hiddenservicepage.cpp" line="689"/>
- <source>The entered user name already exists. Please select a different one.</source>
- <translation>Der eingegebene Benutzername existiert bereits. Bitte wähle einen anderen.</translation>
+ <location filename="../gui/config/hiddenservicepage.cpp" line="707"/>
+ <source>Please fill out the public key field.</source>
+ <translation>Bitte public key eingeben.</translation>
</message>
<message>
- <location filename="../gui/config/hiddenservicepage.cpp" line="696"/>
- <source>Error</source>
- <translation>Fehler</translation>
+ <location filename="../gui/config/hiddenservicepage.cpp" line="713"/>
+ <source>Please fill out the neccesary fields.</source>
+ <translation>Bitte alle benötigten Daten eingeben.</translation>
</message>
<message>
- <location filename="../gui/config/hiddenservicepage.cpp" line="697"/>
- <source>Please select a service and a group.</source>
- <translation>Bitte wählen sie einen Service und eine Gruppe</translation>
+ <location filename="../gui/config/hiddenservicepage.cpp" line="721"/>
+ <source>The entered user name already exists. Please select a </source>
+ <translation>Name bereits vergeben, bitte wählen Sie einen neuen aus.</translation>
</message>
<message>
- <location filename="../gui/config/hiddenservicepage.cpp" line="697"/>
- <source>Ok</source>
- <translation>OK</translation>
+ <location filename="../gui/config/hiddenservicepage.cpp" line="727"/>
+ <source>No matching for introduction password and confirmation.</source>
+ <translation>Keine Übereinstimmung beim Passwort für Introduction.</translation>
</message>
<message>
- <location filename="../gui/config/hiddenservicepage.cpp" line="740"/>
- <source>Error</source>
- <translation>Fehler</translation>
+ <location filename="../gui/config/hiddenservicepage.cpp" line="733"/>
+ <source>No matching for authentication password and confirmation.</source>
+ <translation>Keine Übereinstimmung beim Passwort für Authentifikation.</translation>
</message>
<message>
- <location filename="../gui/config/hiddenservicepage.cpp" line="740"/>
+ <location filename="../gui/config/hiddenservicepage.cpp" line="767"/>
+ <source>Please select a service and a group.</source>
+ <translation>Bitte wählen sie einen Service und eine Gruppe</translation>
+ </message>
+ <message>
+ <location filename="../gui/config/hiddenservicepage.cpp" line="812"/>
<source>Please select the user you want to delete.</source>
<translation>Bitte selektieren Sie den zu löschenden Benutzer.</translation>
</message>
<message>
- <location filename="../gui/config/hiddenservicepage.cpp" line="757"/>
- <source>Error</source>
- <translation>Fehler</translation>
- </message>
- <message>
- <location filename="../gui/config/hiddenservicepage.cpp" line="758"/>
+ <location filename="../gui/config/hiddenservicepage.cpp" line="832"/>
<source>Please fill out all fields.</source>
- <translation>Bitte füllen Sie alle Felder aus.</translation>
+ <translation>Bitte füllen sie alle Felder aus.</translation>
</message>
<message>
- <location filename="../gui/config/hiddenservicepage.cpp" line="764"/>
- <source>Error</source>
- <translation>Fehler</translation>
- </message>
- <message>
- <location filename="../gui/config/hiddenservicepage.cpp" line="764"/>
+ <location filename="../gui/config/hiddenservicepage.cpp" line="839"/>
<source>No match for cookieKey and confirmation field.</source>
<translation>CookieKey und Bestätigungsfeld stimmen nicht überein.</translation>
</message>
<message>
- <location filename="../gui/config/hiddenservicepage.cpp" line="793"/>
- <source>Error</source>
- <translation>Fehler</translation>
- </message>
- <message>
- <location filename="../gui/config/hiddenservicepage.cpp" line="793"/>
+ <location filename="../gui/config/hiddenservicepage.cpp" line="869"/>
<source>Group name already in use, please select a different one.</source>
<translation>Gruppenname ist bereits vergeben. Bitte wählen Sie einen anderen.</translation>
</message>
<message>
- <location filename="../gui/config/hiddenservicepage.cpp" line="793"/>
- <source>Group name already in use, please select a different one.</source>
- <translation>Gruppenname ist bereits vergeben. Bitte wählen Sie einen anderen.</translation>
- </message>
- <message>
- <location filename="../gui/config/hiddenservicepage.cpp" line="799"/>
- <source>Error</source>
- <translation>Fehler</translation>
- </message>
- <message>
- <location filename="../gui/config/hiddenservicepage.cpp" line="799"/>
+ <location filename="../gui/config/hiddenservicepage.cpp" line="876"/>
<source>Please select a service associated with the new group.</source>
<translation>Bitte wähle einen Service für die neue Gruppe aus</translation>
</message>
<message>
- <location filename="../gui/config/hiddenservicepage.cpp" line="724"/>
- <source>Error</source>
- <translation>Fehler</translation>
- </message>
- <message>
- <location filename="../gui/config/hiddenservicepage.cpp" line="724"/>
+ <location filename="../gui/config/hiddenservicepage.cpp" line="906"/>
<source>Please select service and group.</source>
<translation>Bitte selektiere einen Service und eine Gruppe</translation>
</message>
<message>
- <location filename="../gui/config/hiddenservicepage.cpp" line="849"/>
- <source>Error</source>
- <translation>Fehler</translation>
+ <location filename="../gui/config/hiddenservicepage.cpp" line="933"/>
+ <source>The groupname has to be set.</source>
+ <translation>Bitte einen Gruppennamen angeben.</translation>
</message>
<message>
- <location filename="../gui/config/hiddenservicepage.cpp" line="850"/>
- <source>No match for cookieKey and confirmation field.</source>
- <translation>Cookie Key und Bestätigungsfeld stimmen nicht überein.</translation>
- </message>
- <message>
- <location filename="../gui/config/hiddenservicepage.cpp" line="887"/>
- <source>Error</source>
- <translation>Fehler</translation>
- </message>
- <message>
- <location filename="../gui/config/hiddenservicepage.cpp" line="887"/>
+ <location filename="../gui/config/hiddenservicepage.cpp" line="968"/>
<source>Please select a different group name.</source>
<translation>Bitte wähle einen anderen Gruppennamen.</translation>
</message>
<message>
- <location filename="../gui/config/hiddenservicepage.cpp" line="887"/>
- <source>Error</source>
- <translation>Fehler</translation>
- </message>
- <message>
- <location filename="../gui/config/hiddenservicepage.cpp" line="887"/>
+ <location filename="../gui/config/hiddenservicepage.cpp" line="973"/>
<source>Group name has to be entered.</source>
<translation>Gruppenname muss eingegeben werden.</translation>
</message>
<message>
- <location filename="../gui/config/hiddenservicepage.cpp" line="898"/>
- <source>Error</source>
- <translation>Fehler</translation>
- </message>
+ <location filename="../gui/config/hiddenservicepage.cpp" line="1070"/>
+ <source>Name already in use please try another one.</source>
+ <translation>Bitte wähle einen service, eine Gruppe und einen Benutzer aus.</translation>
+ </message>
<message>
- <location filename="../gui/config/hiddenservicepage.cpp" line="898"/>
- <source>Please select service and group.</source>
- <translation>Bitte wähle einen Service und eine Gruppe aus.</translation>
- </message>
+ <location filename="../gui/config/hiddenservicepage.cpp" line="1076"/>
+ <source>Please select service, group and user.</source>
+ <translation>Bitte wähle einen service, eine Gruppe und einen Benutzer aus.</translation>
+ </message>
<message>
- <location filename="../gui/config/hiddenservicepage.cpp" line="909"/>
- <source>Modify Users Data</source>
- <translation>Benutzerdaten modifizieren</translation>
+ <location filename="../gui/config/hiddenservicepage.cpp" line="1084"/>
+ <source>Please select a User.</source>
+ <translation>Bitte wähles Sie einen Benutzer aus.</translation>
</message>
<message>
- <location filename="../gui/config/hiddenservicepage.cpp" line="931"/>
- <source>Error</source>
- <translation>Fehler</translation>
+ <location filename="../gui/config/hiddenservicepage.cpp" line="1103"/>
+ <source>Hostname file of selected service not found, please redeploy.</source>
+ <translation>Datei für selektierten Service nicht gefunden, bitte erneut veröffentlichen.</translation>
</message>
<message>
- <location filename="../gui/config/hiddenservicepage.cpp" line="932"/>
- <source>Please fill out all fields.</source>
- <translation>Bitte fülle alle Felder aus.</translation>
+ <location filename="../gui/config/hiddenservicepage.cpp" line="1134"/>
+ <source>Data copied to clipboard.</source>
+ <translation>Daten erfolgreich in die Zwischenablage kopiert.</translation>
</message>
- <message>
- <location filename="../gui/config/hiddenservicepage.cpp" line="937"/>
- <source>Error</source>
- <translation>Fehler</translation>
- </message>
- <message>
- <location filename="../gui/config/hiddenservicepage.cpp" line="938"/>
- <source>No match for passwords and confirmation fields, please check.</source>
- <translation>Keine Übereinstimmung zwischen Passwörtern und Bestätigungsfeldern.</translation>
- </message>
- <message>
- <location filename="../gui/config/hiddenservicepage.cpp" line="971"/>
- <source>Error</source>
- <translation>Fehler</translation>
- </message>
- <message>
- <location filename="../gui/config/hiddenservicepage.cpp" line="971"/>
- <source>Name already in use please try another one.</source>
- <translation>Der Name ist bereits vergeben, bitte wählen Sie einen anderen.</translation>
- </message>
- <message>
- <location filename="../gui/config/hiddenservicepage.cpp" line="976"/>
- <source>Error</source>
- <translation>Fehler</translation>
- </message>
- <message>
- <location filename="../gui/config/hiddenservicepage.cpp" line="976"/>
- <source>Please select service, group and user.</source>
- <translation>Bitte wähle einen service, eine Gruppe und einen Benutzer aus.</translation>
- </message>
</context>
<context>
<name>LogEvent</name>