mirror of
https://github.com/RetroShare/RetroShare.git
synced 2024-10-01 02:35:48 -04:00
improved Tor startup phase integration in TorControlDialog
This commit is contained in:
parent
475b6a4a62
commit
a591001cec
@ -29,6 +29,7 @@ TorControlDialog::TorControlDialog(Tor::TorManager *tm,QWidget *parent)
|
|||||||
mIncomingServer = new QTcpServer(this) ;
|
mIncomingServer = new QTcpServer(this) ;
|
||||||
mHiddenService = NULL ;
|
mHiddenService = NULL ;
|
||||||
mHiddenServiceStatus = HIDDEN_SERVICE_STATUS_UNKNOWN;
|
mHiddenServiceStatus = HIDDEN_SERVICE_STATUS_UNKNOWN;
|
||||||
|
//mBootstrapPhaseFinished = false ;
|
||||||
|
|
||||||
connect(mIncomingServer, SIGNAL(QTcpServer::newConnection()), this, SLOT(onIncomingConnection()));
|
connect(mIncomingServer, SIGNAL(QTcpServer::newConnection()), this, SLOT(onIncomingConnection()));
|
||||||
|
|
||||||
@ -51,19 +52,19 @@ void TorControlDialog::onIncomingConnection()
|
|||||||
|
|
||||||
void TorControlDialog::statusChanged()
|
void TorControlDialog::statusChanged()
|
||||||
{
|
{
|
||||||
int status = mTorManager->control()->status();
|
int tor_control_status = mTorManager->control()->status();
|
||||||
int torstatus = mTorManager->control()->torStatus();
|
int torstatus = mTorManager->control()->torStatus();
|
||||||
|
|
||||||
QString status_str,torstatus_str ;
|
QString tor_control_status_str,torstatus_str ;
|
||||||
|
|
||||||
switch(status)
|
switch(tor_control_status)
|
||||||
{
|
{
|
||||||
default:
|
default:
|
||||||
case Tor::TorControl::Error : status_str = "Error" ; break ;
|
case Tor::TorControl::Error : tor_control_status_str = "Error" ; break ;
|
||||||
case Tor::TorControl::NotConnected: status_str = "Not connected" ; break ;
|
case Tor::TorControl::NotConnected: tor_control_status_str = "Not connected" ; break ;
|
||||||
case Tor::TorControl::Connecting: status_str = "Connecting" ; break ;
|
case Tor::TorControl::Connecting: tor_control_status_str = "Connecting" ; break ;
|
||||||
case Tor::TorControl::Authenticating: status_str = "Authenticating" ; break ;
|
case Tor::TorControl::Authenticating: tor_control_status_str = "Authenticating" ; break ;
|
||||||
case Tor::TorControl::Connected: status_str = "Connected" ; break ;
|
case Tor::TorControl::Connected: tor_control_status_str = "Connected" ; break ;
|
||||||
}
|
}
|
||||||
|
|
||||||
switch(torstatus)
|
switch(torstatus)
|
||||||
@ -74,12 +75,15 @@ void TorControlDialog::statusChanged()
|
|||||||
case Tor::TorControl::TorReady: torstatus_str = "Tor ready" ; break ;
|
case Tor::TorControl::TorReady: torstatus_str = "Tor ready" ; break ;
|
||||||
}
|
}
|
||||||
|
|
||||||
//torStatus_LB->setText(torstatus_str + "(" + status_str + ")") ;
|
torStatus_LB->setText(torstatus_str) ;
|
||||||
torStatus_LB->setText(status_str) ;
|
//torStatus_LB->setText(tor_control_status_str) ;
|
||||||
|
|
||||||
QVariantMap qvm = mTorManager->control()->bootstrapStatus();
|
QVariantMap qvm = mTorManager->control()->bootstrapStatus();
|
||||||
QString bootstrapstatus_str ;
|
QString bootstrapstatus_str ;
|
||||||
|
|
||||||
|
std::cerr << "Tor control status: " << tor_control_status_str.toStdString() << std::endl;
|
||||||
|
std::cerr << "Tor status: " << torstatus_str.toStdString() << std::endl;
|
||||||
|
|
||||||
std::cerr << "Bootstrap status map: " << std::endl;
|
std::cerr << "Bootstrap status map: " << std::endl;
|
||||||
|
|
||||||
for(auto it(qvm.begin());it!=qvm.end();++it)
|
for(auto it(qvm.begin());it!=qvm.end();++it)
|
||||||
@ -142,11 +146,9 @@ void TorControlDialog::showLog()
|
|||||||
|
|
||||||
TorControlDialog::TorStatus TorControlDialog::checkForTor()
|
TorControlDialog::TorStatus TorControlDialog::checkForTor()
|
||||||
{
|
{
|
||||||
switch(mTorManager->control()->status())
|
switch(mTorManager->control()->torStatus())
|
||||||
{
|
{
|
||||||
case Tor::TorControl::Connected: usleep(1*1000*1000);return TOR_STATUS_OK ;
|
case Tor::TorControl::TorReady: usleep(1*1000*1000);return TOR_STATUS_OK ;
|
||||||
case Tor::TorControl::Error: return TOR_STATUS_FAIL ;
|
|
||||||
|
|
||||||
default:
|
default:
|
||||||
return TOR_STATUS_UNKNOWN ;
|
return TOR_STATUS_UNKNOWN ;
|
||||||
}
|
}
|
||||||
|
@ -59,7 +59,17 @@
|
|||||||
///
|
///
|
||||||
/// \brief hiddenServiceIncomingTab index of hidden serice incoming tab
|
/// \brief hiddenServiceIncomingTab index of hidden serice incoming tab
|
||||||
///
|
///
|
||||||
const static uint32_t hiddenServiceIncomingTab = 2;
|
///
|
||||||
|
|
||||||
|
#ifdef RETROTOR
|
||||||
|
const static uint32_t TAB_HIDDEN_SERVICE_INCOMING = 1;
|
||||||
|
const static uint32_t TAB_IP_FILTERS = 99; // This is a trick: these tabs do not exist, so enabling/disabling them has no effect
|
||||||
|
const static uint32_t TAB_RELAYS = 99;
|
||||||
|
#else
|
||||||
|
const static uint32_t TAB_IP_FILTERS = 1;
|
||||||
|
const static uint32_t TAB_HIDDEN_SERVICE_INCOMING = 2;
|
||||||
|
const static uint32_t TAB_RELAYS = 3;
|
||||||
|
#endif
|
||||||
|
|
||||||
//#define SERVER_DEBUG 1
|
//#define SERVER_DEBUG 1
|
||||||
|
|
||||||
@ -71,6 +81,24 @@ ServerPage::ServerPage(QWidget * parent, Qt::WindowFlags flags)
|
|||||||
|
|
||||||
manager = NULL ;
|
manager = NULL ;
|
||||||
|
|
||||||
|
#ifdef RETROTOR
|
||||||
|
ui.tabWidget->removeTab(3) ; // remove relays. Not useful in Tor mode.
|
||||||
|
ui.tabWidget->removeTab(1) ; // remove IP filters. Not useful in Tor mode.
|
||||||
|
|
||||||
|
ui.hiddenServiceTab->removeTab(1) ; // remove the Automatic I2P/BOB tab
|
||||||
|
ui.hiddenpage_proxyAddress_i2p->hide() ;
|
||||||
|
ui.hiddenpage_proxyLabel_i2p->hide() ;
|
||||||
|
ui.hiddenpage_proxyPort_i2p->hide() ;
|
||||||
|
ui.label_i2p_outgoing->hide() ;
|
||||||
|
ui.iconlabel_i2p_outgoing->hide() ;
|
||||||
|
ui.plainTextEdit->hide() ;
|
||||||
|
ui.hiddenpage_configuration->hide() ;
|
||||||
|
ui.l_hiddenpage_configuration->hide() ;
|
||||||
|
ui.hiddenpageInHelpPlainTextEdit->hide() ;
|
||||||
|
|
||||||
|
ui.hiddenpage_outHeader->setText(tr("Tor has been automatically configured by Retroshare. You shouldn't need to change anything here.")) ;
|
||||||
|
ui.hiddenpage_inHeader->setText(tr("Tor has been automatically configured by Retroshare. You shouldn't need to change anything here.")) ;
|
||||||
|
#endif
|
||||||
ui.filteredIpsTable->setHorizontalHeaderItem(COLUMN_RANGE,new QTableWidgetItem(tr("IP Range"))) ;
|
ui.filteredIpsTable->setHorizontalHeaderItem(COLUMN_RANGE,new QTableWidgetItem(tr("IP Range"))) ;
|
||||||
ui.filteredIpsTable->setHorizontalHeaderItem(COLUMN_STATUS,new QTableWidgetItem(tr("Status"))) ;
|
ui.filteredIpsTable->setHorizontalHeaderItem(COLUMN_STATUS,new QTableWidgetItem(tr("Status"))) ;
|
||||||
ui.filteredIpsTable->setHorizontalHeaderItem(COLUMN_ORIGIN,new QTableWidgetItem(tr("Origin"))) ;
|
ui.filteredIpsTable->setHorizontalHeaderItem(COLUMN_ORIGIN,new QTableWidgetItem(tr("Origin"))) ;
|
||||||
@ -98,7 +126,7 @@ ServerPage::ServerPage(QWidget * parent, Qt::WindowFlags flags)
|
|||||||
for(std::list<std::string>::const_iterator it(ip_servers.begin());it!=ip_servers.end();++it)
|
for(std::list<std::string>::const_iterator it(ip_servers.begin());it!=ip_servers.end();++it)
|
||||||
ui.IPServersLV->addItem(QString::fromStdString(*it)) ;
|
ui.IPServersLV->addItem(QString::fromStdString(*it)) ;
|
||||||
|
|
||||||
ui.hiddenServiceTab->setTabEnabled(hiddenServiceIncomingTab, false);
|
ui.hiddenServiceTab->setTabEnabled(TAB_HIDDEN_SERVICE_INCOMING, false);
|
||||||
ui.gbBob->setEnabled(false);
|
ui.gbBob->setEnabled(false);
|
||||||
ui.swBobAdvanced->setCurrentIndex(0);
|
ui.swBobAdvanced->setCurrentIndex(0);
|
||||||
|
|
||||||
@ -195,7 +223,6 @@ ServerPage::ServerPage(QWidget * parent, Qt::WindowFlags flags)
|
|||||||
|
|
||||||
QObject::connect(ui.enableCheckBox,SIGNAL(toggled(bool)),this,SLOT(updateRelayMode()));
|
QObject::connect(ui.enableCheckBox,SIGNAL(toggled(bool)),this,SLOT(updateRelayMode()));
|
||||||
QObject::connect(ui.serverCheckBox,SIGNAL(toggled(bool)),this,SLOT(updateRelayMode()));
|
QObject::connect(ui.serverCheckBox,SIGNAL(toggled(bool)),this,SLOT(updateRelayMode()));
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void ServerPage::saveAndTestInProxy()
|
void ServerPage::saveAndTestInProxy()
|
||||||
@ -299,8 +326,8 @@ void ServerPage::load()
|
|||||||
if (mIsHiddenNode)
|
if (mIsHiddenNode)
|
||||||
{
|
{
|
||||||
mHiddenType = detail.hiddenType;
|
mHiddenType = detail.hiddenType;
|
||||||
ui.tabWidget->setTabEnabled(1,false) ; // ip filter
|
ui.tabWidget->setTabEnabled(TAB_IP_FILTERS,false) ; // ip filter
|
||||||
ui.tabWidget->setTabEnabled(3,false) ; // relay
|
ui.tabWidget->setTabEnabled(TAB_RELAYS,false) ; // relay
|
||||||
loadHiddenNode();
|
loadHiddenNode();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@ -856,6 +883,8 @@ void ServerPage::toggleUPnP()
|
|||||||
settingChangeable = true;
|
settingChangeable = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Shouldn't we use readOnly instead of enabled??
|
||||||
|
|
||||||
if (settingChangeable)
|
if (settingChangeable)
|
||||||
{
|
{
|
||||||
ui.localAddress->setEnabled(false);
|
ui.localAddress->setEnabled(false);
|
||||||
@ -1048,7 +1077,7 @@ void ServerPage::loadHiddenNode()
|
|||||||
ui.label_dynDNS->setVisible(false);
|
ui.label_dynDNS->setVisible(false);
|
||||||
ui.dynDNS ->setVisible(false);
|
ui.dynDNS ->setVisible(false);
|
||||||
|
|
||||||
ui.hiddenServiceTab->setTabEnabled(hiddenServiceIncomingTab, true);
|
ui.hiddenServiceTab->setTabEnabled(TAB_HIDDEN_SERVICE_INCOMING, true);
|
||||||
|
|
||||||
/* Addresses must be set here - otherwise can't edit it */
|
/* Addresses must be set here - otherwise can't edit it */
|
||||||
/* set local address */
|
/* set local address */
|
||||||
|
@ -6,8 +6,8 @@
|
|||||||
<rect>
|
<rect>
|
||||||
<x>0</x>
|
<x>0</x>
|
||||||
<y>0</y>
|
<y>0</y>
|
||||||
<width>1220</width>
|
<width>1283</width>
|
||||||
<height>896</height>
|
<height>917</height>
|
||||||
</rect>
|
</rect>
|
||||||
</property>
|
</property>
|
||||||
<layout class="QVBoxLayout" name="ServerPageVLayout">
|
<layout class="QVBoxLayout" name="ServerPageVLayout">
|
||||||
@ -26,7 +26,7 @@
|
|||||||
<item>
|
<item>
|
||||||
<widget class="QTabWidget" name="tabWidget">
|
<widget class="QTabWidget" name="tabWidget">
|
||||||
<property name="currentIndex">
|
<property name="currentIndex">
|
||||||
<number>0</number>
|
<number>2</number>
|
||||||
</property>
|
</property>
|
||||||
<widget class="QWidget" name="tabNetConf">
|
<widget class="QWidget" name="tabNetConf">
|
||||||
<attribute name="title">
|
<attribute name="title">
|
||||||
@ -810,7 +810,7 @@ behind a firewall or a VPN.</string>
|
|||||||
</sizepolicy>
|
</sizepolicy>
|
||||||
</property>
|
</property>
|
||||||
<property name="currentIndex">
|
<property name="currentIndex">
|
||||||
<number>0</number>
|
<number>2</number>
|
||||||
</property>
|
</property>
|
||||||
<widget class="QWidget" name="hiddenServiceTabManual">
|
<widget class="QWidget" name="hiddenServiceTabManual">
|
||||||
<attribute name="title">
|
<attribute name="title">
|
||||||
|
@ -363,16 +363,16 @@ feenableexcept(FE_INVALID | FE_DIVBYZERO);
|
|||||||
TorControlDialog tcd(torManager) ;
|
TorControlDialog tcd(torManager) ;
|
||||||
tcd.show();
|
tcd.show();
|
||||||
|
|
||||||
while(tcd.checkForHiddenService() != TorControlDialog::HIDDEN_SERVICE_STATUS_OK) // runs until some status is reached: either tor works, or it fails.
|
while(tcd.checkForTor() != TorControlDialog::TOR_STATUS_OK || tcd.checkForHiddenService() != TorControlDialog::HIDDEN_SERVICE_STATUS_OK) // runs until some status is reached: either tor works, or it fails.
|
||||||
{
|
|
||||||
QCoreApplication::processEvents();
|
|
||||||
usleep(0.2*1000*1000) ;
|
|
||||||
}
|
|
||||||
for(uint32_t i=0;i<10;++i) // give some time (2 secs) to see what's going on
|
|
||||||
{
|
{
|
||||||
QCoreApplication::processEvents();
|
QCoreApplication::processEvents();
|
||||||
usleep(0.2*1000*1000) ;
|
usleep(0.2*1000*1000) ;
|
||||||
}
|
}
|
||||||
|
// for(uint32_t i=0;i<10;++i) // give some time (2 secs) to see what's going on
|
||||||
|
// {
|
||||||
|
// QCoreApplication::processEvents();
|
||||||
|
// usleep(0.2*1000*1000) ;
|
||||||
|
// }
|
||||||
|
|
||||||
tcd.hide();
|
tcd.hide();
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user