diff --git a/qt/i2pd_qt/TunnelConfig.cpp b/qt/i2pd_qt/TunnelConfig.cpp
index 04fa6132..a2cdf92b 100644
--- a/qt/i2pd_qt/TunnelConfig.cpp
+++ b/qt/i2pd_qt/TunnelConfig.cpp
@@ -24,6 +24,18 @@ void TunnelConfig::saveI2CPParametersToStringStream(std::stringstream& out) {
if (!i2cpParameters.getExplicitPeers().isEmpty()) //todo #947
out << i2p::client::I2CP_PARAM_EXPLICIT_PEERS << "="
<< i2cpParameters.getExplicitPeers().toStdString() << "\n";
+ out << i2p::client::I2CP_PARAM_LEASESET_AUTH_TYPE << "="
+ << i2cpParameters.get_i2cp_leaseSetAuthType().toStdString() << "\n";
+ out << i2p::client::I2CP_PARAM_LEASESET_ENCRYPTION_TYPE << "="
+ << i2cpParameters.get_i2cp_leaseSetEncType().toStdString() << "\n";
+ out << i2p::client::I2CP_PARAM_LEASESET_PRIV_KEY << "="
+ << i2cpParameters.get_i2cp_leaseSetPrivKey().toStdString() << "\n";
+ out << i2p::client::I2CP_PARAM_LEASESET_TYPE << "="
+ << i2cpParameters.get_i2cp_leaseSetType().toStdString() << "\n";
+ out << i2p::client::I2CP_PARAM_STREAMING_ANSWER_PINGS << "="
+ << (i2cpParameters.get_i2p_streaming_answerPings() ? "true" : "false") << "\n";
+ out << i2p::client::I2CP_PARAM_STREAMING_INITIAL_ACK_DELAY << "="
+ << i2cpParameters.get_i2p_streaming_initialAckDelay().toStdString() << "\n";
out << "\n";
}
diff --git a/qt/i2pd_qt/TunnelConfig.h b/qt/i2pd_qt/TunnelConfig.h
index 7f262215..530a525c 100644
--- a/qt/i2pd_qt/TunnelConfig.h
+++ b/qt/i2pd_qt/TunnelConfig.h
@@ -16,25 +16,49 @@ class I2CPParameters{
QString outbound_quantity; //number of outbound tunnels. 5 by default
QString crypto_tagsToSend; //number of ElGamal/AES tags to send. 40 by default; too low value may cause problems with tunnel building
QString explicitPeers; //list of comma-separated b64 addresses of peers to use, default: unset
+ QString i2p_streaming_initialAckDelay; //i2p.streaming.initialAckDelay -- milliseconds to wait before sending Ack. 200 by default
+ bool i2p_streaming_answerPings; //i2p.streaming.answerPings -- enable sending pongs. true by default
+ QString i2cp_leaseSetType; //i2cp.leaseSetType -- type of LeaseSet to be sent. 1, 3 or 5. 1 by default
+ QString i2cp_leaseSetEncType; //i2cp.leaseSetEncType -- comma separated encryption types to be used in LeaseSet type 3 or 5. Identity's type by default
+ QString i2cp_leaseSetPrivKey; //i2cp.leaseSetPrivKey -- decryption key for encrypted LeaseSet in base64. PSK or private DH
+ QString i2cp_leaseSetAuthType; //i2cp.leaseSetAuthType -- authentication type for encrypted LeaseSet. 0 - no authentication(default), 1 - DH, 2 - PSK
public:
I2CPParameters(): inbound_length(),
outbound_length(),
inbound_quantity(),
outbound_quantity(),
crypto_tagsToSend(),
- explicitPeers() {}
+ explicitPeers(),
+ i2p_streaming_initialAckDelay(),
+ i2p_streaming_answerPings(true),
+ i2cp_leaseSetType(),
+ i2cp_leaseSetEncType(),
+ i2cp_leaseSetPrivKey(),
+ i2cp_leaseSetAuthType() {}
const QString& getInbound_length(){return inbound_length;}
const QString& getOutbound_length(){return outbound_length;}
const QString& getInbound_quantity(){return inbound_quantity;}
const QString& getOutbound_quantity(){return outbound_quantity;}
const QString& getCrypto_tagsToSend(){return crypto_tagsToSend;}
const QString& getExplicitPeers(){return explicitPeers;}
+ const QString& get_i2p_streaming_initialAckDelay(){return i2p_streaming_initialAckDelay;}
+ bool get_i2p_streaming_answerPings(){return i2p_streaming_answerPings;}
+ const QString& get_i2cp_leaseSetType(){return i2cp_leaseSetType;}
+ const QString& get_i2cp_leaseSetEncType(){return i2cp_leaseSetEncType;}
+ const QString& get_i2cp_leaseSetPrivKey(){return i2cp_leaseSetPrivKey;}
+ const QString& get_i2cp_leaseSetAuthType(){return i2cp_leaseSetAuthType;}
void setInbound_length(QString inbound_length_){inbound_length=inbound_length_;}
void setOutbound_length(QString outbound_length_){outbound_length=outbound_length_;}
void setInbound_quantity(QString inbound_quantity_){inbound_quantity=inbound_quantity_;}
void setOutbound_quantity(QString outbound_quantity_){outbound_quantity=outbound_quantity_;}
void setCrypto_tagsToSend(QString crypto_tagsToSend_){crypto_tagsToSend=crypto_tagsToSend_;}
void setExplicitPeers(QString explicitPeers_){explicitPeers=explicitPeers_;}
+ void set_i2p_streaming_initialAckDelay(QString i2p_streaming_initialAckDelay_){i2p_streaming_initialAckDelay=i2p_streaming_initialAckDelay_;}
+ void set_i2p_streaming_answerPings(bool i2p_streaming_answerPings_){i2p_streaming_answerPings=i2p_streaming_answerPings_;}
+ void set_i2cp_leaseSetType(QString i2cp_leaseSetType_){i2cp_leaseSetType=i2cp_leaseSetType_;}
+ void set_i2cp_leaseSetEncType(QString i2cp_leaseSetEncType_){i2cp_leaseSetEncType=i2cp_leaseSetEncType_;}
+ void set_i2cp_leaseSetPrivKey(QString i2cp_leaseSetPrivKey_){i2cp_leaseSetPrivKey=i2cp_leaseSetPrivKey_;}
+ void set_i2cp_leaseSetAuthType(QString i2cp_leaseSetAuthType_){i2cp_leaseSetAuthType=i2cp_leaseSetAuthType_;}
};
diff --git a/qt/i2pd_qt/TunnelPane.cpp b/qt/i2pd_qt/TunnelPane.cpp
index 60b0b6d5..ffacfd61 100644
--- a/qt/i2pd_qt/TunnelPane.cpp
+++ b/qt/i2pd_qt/TunnelPane.cpp
@@ -187,30 +187,149 @@ void TunnelPane::appendControlsForI2CPParameters(I2CPParameters& i2cpParameters,
{
//explicitPeers -- list of comma-separated b64 addresses of peers to use, default: unset
+ const QString& value=i2cpParameters.getExplicitPeers();
+ QHBoxLayout *horizontalLayout_2 = new QHBoxLayout();
+ horizontalLayout_2->setObjectName(QStringLiteral("horizontalLayout_2"));
+ QLabel *_Label;
+ explicitPeersLabel = _Label = new QLabel(gridLayoutWidget_2);
+ _Label->setObjectName(QStringLiteral("_Label"));
+ horizontalLayout_2->addWidget(_Label);
+ QLineEdit *_LineEdit;
+ explicitPeersLineEdit = _LineEdit = new QLineEdit(gridLayoutWidget_2);
+ _LineEdit->setObjectName(QStringLiteral("_LineEdit"));
+ _LineEdit->setText(value);
+ _LineEdit->setMaximumWidth(80);
+ QObject::connect(_LineEdit, SIGNAL(textChanged(const QString &)),
+ this, SLOT(updated()));
+ horizontalLayout_2->addWidget(_LineEdit);
+ QSpacerItem * horizontalSpacer = new QSpacerItem(40, 20, QSizePolicy::Expanding, QSizePolicy::Minimum);
+ horizontalLayout_2->addItem(horizontalSpacer);
+ tunnelGridLayout->addLayout(horizontalLayout_2);
}
{
//i2p.streaming.initialAckDelay -- milliseconds to wait before sending Ack. 200 by default
+ const QString& value=i2cpParameters.get_i2p_streaming_initialAckDelay();
+ QHBoxLayout *horizontalLayout_2 = new QHBoxLayout();
+ horizontalLayout_2->setObjectName(QStringLiteral("horizontalLayout_2"));
+ QLabel *_Label;
+ i2p_streaming_initialAckDelayLabel = _Label = new QLabel(gridLayoutWidget_2);
+ _Label->setObjectName(QStringLiteral("_Label"));
+ horizontalLayout_2->addWidget(_Label);
+ QLineEdit *_LineEdit;
+ i2p_streaming_initialAckDelayLineEdit = _LineEdit = new QLineEdit(gridLayoutWidget_2);
+ _LineEdit->setObjectName(QStringLiteral("_LineEdit"));
+ _LineEdit->setText(value);
+ _LineEdit->setMaximumWidth(80);
+ QObject::connect(_LineEdit, SIGNAL(textChanged(const QString &)),
+ this, SLOT(updated()));
+ horizontalLayout_2->addWidget(_LineEdit);
+ QSpacerItem * horizontalSpacer = new QSpacerItem(40, 20, QSizePolicy::Expanding, QSizePolicy::Minimum);
+ horizontalLayout_2->addItem(horizontalSpacer);
+ tunnelGridLayout->addLayout(horizontalLayout_2);
}
{
//i2p.streaming.answerPings -- enable sending pongs. true by default
+ const bool value=i2cpParameters.get_i2p_streaming_answerPings();
+ QHBoxLayout *horizontalLayout_2 = new QHBoxLayout();
+ horizontalLayout_2->setObjectName(QStringLiteral("horizontalLayout_2"));
+ QCheckBox *_CheckBox;
+ i2p_streaming_answerPingsCheckBox = _CheckBox = new QCheckBox(gridLayoutWidget_2);
+ _CheckBox->setObjectName(QStringLiteral("_CheckBox"));
+ horizontalLayout_2->addWidget(_CheckBox);
+ _CheckBox->setChecked(value);
+ QObject::connect(_CheckBox, SIGNAL(toggled(bool)),
+ this, SLOT(updated()));
+ tunnelGridLayout->addLayout(horizontalLayout_2);
}
{
//i2cp.leaseSetType -- type of LeaseSet to be sent. 1, 3 or 5. 1 by default
+ const QString& value=i2cpParameters.get_i2cp_leaseSetType();
+ QHBoxLayout *horizontalLayout_2 = new QHBoxLayout();
+ horizontalLayout_2->setObjectName(QStringLiteral("horizontalLayout_2"));
+ QLabel *_Label;
+ i2cp_leaseSetTypeLabel = _Label = new QLabel(gridLayoutWidget_2);
+ _Label->setObjectName(QStringLiteral("_Label"));
+ horizontalLayout_2->addWidget(_Label);
+ QLineEdit *_LineEdit;
+ i2cp_leaseSetTypeLineEdit = _LineEdit = new QLineEdit(gridLayoutWidget_2);
+ _LineEdit->setObjectName(QStringLiteral("_LineEdit"));
+ _LineEdit->setText(value);
+ _LineEdit->setMaximumWidth(80);
+ QObject::connect(_LineEdit, SIGNAL(textChanged(const QString &)),
+ this, SLOT(updated()));
+ horizontalLayout_2->addWidget(_LineEdit);
+ QSpacerItem * horizontalSpacer = new QSpacerItem(40, 20, QSizePolicy::Expanding, QSizePolicy::Minimum);
+ horizontalLayout_2->addItem(horizontalSpacer);
+ tunnelGridLayout->addLayout(horizontalLayout_2);
}
{
//i2cp.leaseSetEncType -- comma separated encryption types to be used in LeaseSet type 3 or 5. Identity's type by default
+ const QString& value=i2cpParameters.get_i2cp_leaseSetEncType();
+ QHBoxLayout *horizontalLayout_2 = new QHBoxLayout();
+ horizontalLayout_2->setObjectName(QStringLiteral("horizontalLayout_2"));
+ QLabel *_Label;
+ i2cp_leaseSetEncTypeLabel = _Label = new QLabel(gridLayoutWidget_2);
+ _Label->setObjectName(QStringLiteral("_Label"));
+ horizontalLayout_2->addWidget(_Label);
+ QLineEdit *_LineEdit;
+ i2cp_leaseSetEncTypeLineEdit = _LineEdit = new QLineEdit(gridLayoutWidget_2);
+ _LineEdit->setObjectName(QStringLiteral("_LineEdit"));
+ _LineEdit->setText(value);
+ _LineEdit->setMaximumWidth(80);
+ QObject::connect(_LineEdit, SIGNAL(textChanged(const QString &)),
+ this, SLOT(updated()));
+ horizontalLayout_2->addWidget(_LineEdit);
+ QSpacerItem * horizontalSpacer = new QSpacerItem(40, 20, QSizePolicy::Expanding, QSizePolicy::Minimum);
+ horizontalLayout_2->addItem(horizontalSpacer);
+ tunnelGridLayout->addLayout(horizontalLayout_2);
}
{
//i2cp.leaseSetPrivKey -- decryption key for encrypted LeaseSet in base64. PSK or private DH
+ const QString& value=i2cpParameters.get_i2cp_leaseSetPrivKey();
+ QHBoxLayout *horizontalLayout_2 = new QHBoxLayout();
+ horizontalLayout_2->setObjectName(QStringLiteral("horizontalLayout_2"));
+ QLabel *_Label;
+ i2cp_leaseSetPrivKeyLabel = _Label = new QLabel(gridLayoutWidget_2);
+ _Label->setObjectName(QStringLiteral("_Label"));
+ horizontalLayout_2->addWidget(_Label);
+ QLineEdit *_LineEdit;
+ i2cp_leaseSetPrivKeyLineEdit = _LineEdit = new QLineEdit(gridLayoutWidget_2);
+ _LineEdit->setObjectName(QStringLiteral("_LineEdit"));
+ _LineEdit->setText(value);
+ _LineEdit->setMaximumWidth(80);
+ QObject::connect(_LineEdit, SIGNAL(textChanged(const QString &)),
+ this, SLOT(updated()));
+ horizontalLayout_2->addWidget(_LineEdit);
+ QSpacerItem * horizontalSpacer = new QSpacerItem(40, 20, QSizePolicy::Expanding, QSizePolicy::Minimum);
+ horizontalLayout_2->addItem(horizontalSpacer);
+ tunnelGridLayout->addLayout(horizontalLayout_2);
}
{
//i2cp.leaseSetAuthType -- authentication type for encrypted LeaseSet. 0 - no authentication(default), 1 - DH, 2 - PSK
+ const QString& value=i2cpParameters.get_i2cp_leaseSetAuthType();
+ QHBoxLayout *horizontalLayout_2 = new QHBoxLayout();
+ horizontalLayout_2->setObjectName(QStringLiteral("horizontalLayout_2"));
+ QLabel *_Label;
+ i2cp_leaseSetAuthTypeLabel = _Label = new QLabel(gridLayoutWidget_2);
+ _Label->setObjectName(QStringLiteral("_Label"));
+ horizontalLayout_2->addWidget(_Label);
+ QLineEdit *_LineEdit;
+ i2cp_leaseSetAuthTypeLineEdit = _LineEdit = new QLineEdit(gridLayoutWidget_2);
+ _LineEdit->setObjectName(QStringLiteral("_LineEdit"));
+ _LineEdit->setText(value);
+ _LineEdit->setMaximumWidth(80);
+ QObject::connect(_LineEdit, SIGNAL(textChanged(const QString &)),
+ this, SLOT(updated()));
+ horizontalLayout_2->addWidget(_LineEdit);
+ QSpacerItem * horizontalSpacer = new QSpacerItem(40, 20, QSizePolicy::Expanding, QSizePolicy::Minimum);
+ horizontalLayout_2->addItem(horizontalSpacer);
+ tunnelGridLayout->addLayout(horizontalLayout_2);
}
retranslateI2CPParameters();
diff --git a/qt/i2pd_qt/TunnelPane.h b/qt/i2pd_qt/TunnelPane.h
index 6a13b7a0..61071059 100644
--- a/qt/i2pd_qt/TunnelPane.h
+++ b/qt/i2pd_qt/TunnelPane.h
@@ -11,6 +11,7 @@
#include "QLineEdit"
#include "QGroupBox"
#include "QVBoxLayout"
+#include "QCheckBox"
#include "TunnelConfig.h"
@@ -89,6 +90,27 @@ protected:
QLabel * crypto_tagsToSendLabel;
QLineEdit * crypto_tagsToSendLineEdit;
+ QLabel * explicitPeersLabel;
+ QLineEdit * explicitPeersLineEdit;
+
+ QLabel * i2p_streaming_initialAckDelayLabel;
+ QLineEdit * i2p_streaming_initialAckDelayLineEdit;
+
+ QCheckBox * i2p_streaming_answerPingsCheckBox;
+
+ QLabel * i2cp_leaseSetTypeLabel;
+ QLineEdit * i2cp_leaseSetTypeLineEdit;
+
+ QLabel * i2cp_leaseSetEncTypeLabel;
+ QLineEdit * i2cp_leaseSetEncTypeLineEdit;
+
+ QLabel * i2cp_leaseSetPrivKeyLabel;
+ QLineEdit * i2cp_leaseSetPrivKeyLineEdit;
+
+ QLabel * i2cp_leaseSetAuthTypeLabel;
+ QLineEdit * i2cp_leaseSetAuthTypeLineEdit;
+
+
QString readTunnelTypeComboboxData();
//should be created by factory
@@ -105,6 +127,12 @@ public:
i2cpParams.setOutbound_length(outbound_lengthLineEdit->text());
i2cpParams.setOutbound_quantity(outbound_quantityLineEdit->text());
i2cpParams.setCrypto_tagsToSend(crypto_tagsToSendLineEdit->text());
+ i2cpParams.set_i2cp_leaseSetAuthType(i2cp_leaseSetAuthTypeLineEdit->text());
+ i2cpParams.set_i2cp_leaseSetEncType(i2cp_leaseSetEncTypeLineEdit->text());
+ i2cpParams.set_i2cp_leaseSetPrivKey(i2cp_leaseSetPrivKeyLineEdit->text());
+ i2cpParams.set_i2cp_leaseSetType(i2cp_leaseSetTypeLineEdit->text());
+ i2cpParams.set_i2p_streaming_answerPings(i2p_streaming_answerPingsCheckBox->isChecked());
+ i2cpParams.set_i2p_streaming_initialAckDelay(i2p_streaming_initialAckDelayLineEdit->text());
return true;
}
protected:
@@ -133,34 +161,13 @@ private:
inbound_quantityLabel->setText(QApplication::translate("tunForm", "Number of inbound tunnels:", 0));;
outbound_quantityLabel->setText(QApplication::translate("tunForm", "Number of outbound tunnels:", 0));;
crypto_tagsToSendLabel->setText(QApplication::translate("tunForm", "Number of ElGamal/AES tags to send:", 0));;
-
- {
- //explicitPeers -- list of comma-separated b64 addresses of peers to use, default: unset
- }
-
- {
- //i2p.streaming.initialAckDelay -- milliseconds to wait before sending Ack. 200 by default
- }
-
- {
- //i2p.streaming.answerPings -- enable sending pongs. true by default
- }
-
- {
- //i2cp.leaseSetType -- type of LeaseSet to be sent. 1, 3 or 5. 1 by default
- }
-
- {
- //i2cp.leaseSetEncType -- comma separated encryption types to be used in LeaseSet type 3 or 5. Identity's type by default
- }
-
- {
- //i2cp.leaseSetPrivKey -- decryption key for encrypted LeaseSet in base64. PSK or private DH
- }
-
- {
- //i2cp.leaseSetAuthType -- authentication type for encrypted LeaseSet. 0 - no authentication(default), 1 - DH, 2 - PSK
- }
+ explicitPeersLabel->setText(QApplication::translate("tunForm", "List of comma-separated b64 addresses of peers to use:", 0));;
+ i2p_streaming_initialAckDelayLabel->setText(QApplication::translate("tunForm", "Milliseconds to wait before sending Ack:", 0));
+ i2p_streaming_answerPingsCheckBox->setText(QApplication::translate("tunForm", "Enable sending pongs", 0));
+ i2cp_leaseSetTypeLabel->setText(QApplication::translate("tunForm", "Type of LeaseSet to be sent. 1, 3 or 5:", 0));
+ i2cp_leaseSetEncTypeLabel->setText(QApplication::translate("tunForm", "Comma-separated encryption types to be used in LeaseSet type 3 or 5:", 0));
+ i2cp_leaseSetPrivKeyLabel->setText(QApplication::translate("tunForm", "Decryption key for encrypted LeaseSet in base64. PSK or private DH:", 0));
+ i2cp_leaseSetAuthTypeLabel->setText(QApplication::translate("tunForm", "Authentication type for encrypted LeaseSet. 0 - no authentication (default), 1 - DH, 2 - PSK:", 0));
}
};
diff --git a/qt/i2pd_qt/generalsettingswidget.ui b/qt/i2pd_qt/generalsettingswidget.ui
index e64f9e35..1c71de22 100644
--- a/qt/i2pd_qt/generalsettingswidget.ui
+++ b/qt/i2pd_qt/generalsettingswidget.ui
@@ -25,7 +25,7 @@
0
0
679
- 4151
+ 4178
@@ -464,13 +464,13 @@
0
- 390
+ 417
16777215
- 390
+ 417
@@ -482,7 +482,7 @@
0
20
661
- 368
+ 397
@@ -528,6 +528,13 @@
+ -
+
+
+ Check remote RI for being in blacklist of reserved IP ranges
+
+
+
-
-
diff --git a/qt/i2pd_qt/i2pd_qt.pro b/qt/i2pd_qt/i2pd_qt.pro
index 468d2d00..2f44b814 100644
--- a/qt/i2pd_qt/i2pd_qt.pro
+++ b/qt/i2pd_qt/i2pd_qt.pro
@@ -4,7 +4,8 @@ greaterThan(QT_MAJOR_VERSION, 4): QT += widgets
TARGET = i2pd_qt
TEMPLATE = app
-QMAKE_CXXFLAGS *= -std=c++11 -Wno-unused-parameter -Wno-maybe-uninitialized
+QMAKE_CXXFLAGS *= -Wno-unused-parameter -Wno-maybe-uninitialized
+CONFIG += strict_c++ c++11
DEFINES += USE_UPNP
diff --git a/qt/i2pd_qt/mainwindow.cpp b/qt/i2pd_qt/mainwindow.cpp
index d4d34109..feb1b4a9 100644
--- a/qt/i2pd_qt/mainwindow.cpp
+++ b/qt/i2pd_qt/mainwindow.cpp
@@ -190,6 +190,7 @@ MainWindow::MainWindow(std::shared_ptr logStream_, QWidget *paren
initStringBox( OPTION("","family",[]{return "";}), uiSettings->familyLineEdit);
initIntegerBox( OPTION("","netid",[]{return "2";}), uiSettings->netIdLineEdit, tr("NetID"));
initCheckBox( OPTION("","ssu",[]{return "true";}), uiSettings->ssuCheckBox);//Enable SSU transport protocol (use UDP). true by default
+ initCheckBox( OPTION("","reservedrange",[]{return "true";}), uiSettings->reservedrange_checkbox);
#ifdef Q_OS_WIN
initNonGUIOption( OPTION("","svcctl",[]{return "";}));
@@ -205,22 +206,22 @@ MainWindow::MainWindow(std::shared_ptr logStream_, QWidget *paren
initCheckBox( OPTION("http","auth",[]{return "";}), uiSettings->webconsoleBasicAuthCheckBox);
initStringBox( OPTION("http","user",[]{return "i2pd";}), uiSettings->webconsoleUserNameLineEditBasicAuth);
initStringBox( OPTION("http","pass",[]{return "";}), uiSettings->webconsolePasswordLineEditBasicAuth);
- initCheckBox( OPTION("http","strictheaders",[]{return "true";}), uiSettings->httpStrictHeadersCheckBox);//TODO add option Enable strict host checking on WebUI. true by default
- initStringBox( OPTION("http","hostname",[]{return "localhost";}), uiSettings->httpHostnameLineEdit);//TODO add option Expected hostname for WebUI (default: localhost)
+ initCheckBox( OPTION("http","strictheaders",[]{return "true";}), uiSettings->httpStrictHeadersCheckBox);//Enable strict host checking on WebUI. true by default
+ initStringBox( OPTION("http","hostname",[]{return "localhost";}), uiSettings->httpHostnameLineEdit);//Expected hostname for WebUI (default: localhost)
initCheckBox( OPTION("httpproxy","enabled",[]{return "";}), uiSettings->httpProxyEnabledCheckBox);
initIPAddressBox( OPTION("httpproxy","address",[]{return "";}), uiSettings->httpProxyAddressLineEdit, tr("HTTP proxy -> IP address"));
initTCPPortBox( OPTION("httpproxy","port",[]{return "4444";}), uiSettings->httpProxyPortLineEdit, tr("HTTP proxy -> Port"));
- initCheckBox( OPTION("httpproxy","addresshelper",[]{return "true";}), uiSettings->httpProxyAddressHelperCheckBox);//TODO add option Enable address helper (jump). true by default
+ initCheckBox( OPTION("httpproxy","addresshelper",[]{return "true";}), uiSettings->httpProxyAddressHelperCheckBox);//Enable address helper (jump). true by default
initFileChooser( OPTION("httpproxy","keys",[]{return "";}), uiSettings->httpProxyKeyFileLineEdit, uiSettings->httpProxyKeyFilePushButton);
initSignatureTypeCombobox(OPTION("httpproxy","signaturetype",[]{return "7";}), uiSettings->comboBox_httpPorxySignatureType);
initStringBox( OPTION("httpproxy","inbound.length",[]{return "3";}), uiSettings->httpProxyInboundTunnelsLenLineEdit);
initStringBox( OPTION("httpproxy","inbound.quantity",[]{return "5";}), uiSettings->httpProxyInboundTunnQuantityLineEdit);
initStringBox( OPTION("httpproxy","outbound.length",[]{return "3";}), uiSettings->httpProxyOutBoundTunnLenLineEdit);
initStringBox( OPTION("httpproxy","outbound.quantity",[]{return "5";}), uiSettings->httpProxyOutboundTunnQuantityLineEdit);
- initStringBox( OPTION("httpproxy","outproxy",[]{return "";}), uiSettings->httpProxyOutproxyLineEdit);//TODO add option HTTP proxy upstream out proxy url (like http://false.i2p)
- initStringBox( OPTION("httpproxy","i2cp.leaseSetType",[]{return "1";}), uiSettings->httpProxyI2cpLeaseSetTypeLineEdit);//TODO add option Type of LeaseSet to be sent. 1, 3 or 5. 1 by default
- initStringBox( OPTION("httpproxy","i2cp.leaseSetEncType",[]{return "";}), uiSettings->httpProxyI2cpLeaseSetEncTypeLineEdit);//TODO add option Comma separated encryption types to be used in LeaseSet type 3 or 5
+ initStringBox( OPTION("httpproxy","outproxy",[]{return "";}), uiSettings->httpProxyOutproxyLineEdit);//HTTP proxy upstream out proxy url (like http://false.i2p)
+ initStringBox( OPTION("httpproxy","i2cp.leaseSetType",[]{return "1";}), uiSettings->httpProxyI2cpLeaseSetTypeLineEdit);//Type of LeaseSet to be sent. 1, 3 or 5. 1 by default
+ initStringBox( OPTION("httpproxy","i2cp.leaseSetEncType",[]{return "";}), uiSettings->httpProxyI2cpLeaseSetEncTypeLineEdit);//Comma separated encryption types to be used in LeaseSet type 3 or 5
initCheckBox( OPTION("socksproxy","enabled",[]{return "";}), uiSettings->socksProxyEnabledCheckBox);
initIPAddressBox( OPTION("socksproxy","address",[]{return "";}), uiSettings->socksProxyAddressLineEdit, tr("Socks proxy -> IP address"));
@@ -233,8 +234,8 @@ MainWindow::MainWindow(std::shared_ptr logStream_, QWidget *paren
initStringBox( OPTION("socksproxy","outbound.quantity",[]{return "";}), uiSettings->socksProxyOutboundTunnQuantityLineEdit);
initIPAddressBox( OPTION("socksproxy","outproxy",[]{return "";}), uiSettings->outproxyAddressLineEdit, tr("Socks proxy -> Outproxy address"));
initTCPPortBox( OPTION("socksproxy","outproxyport",[]{return "";}), uiSettings->outproxyPortLineEdit, tr("Socks proxy -> Outproxy port"));
- initStringBox( OPTION("socksproxy","i2cp.leaseSetType",[]{return "1";}), uiSettings->socksProxyI2cpLeaseSetTypeLineEdit);//TODO add option Type of LeaseSet to be sent. 1, 3 or 5. 1 by default
- initStringBox( OPTION("socksproxy","i2cp.leaseSetEncType",[]{return "";}), uiSettings->socksProxyI2cpLeaseSetEncTypeLineEdit);//TODO add option Comma separated encryption types to be used in LeaseSet type 3 or 5
+ initStringBox( OPTION("socksproxy","i2cp.leaseSetType",[]{return "1";}), uiSettings->socksProxyI2cpLeaseSetTypeLineEdit);//Type of LeaseSet to be sent. 1, 3 or 5. 1 by default
+ initStringBox( OPTION("socksproxy","i2cp.leaseSetEncType",[]{return "";}), uiSettings->socksProxyI2cpLeaseSetEncTypeLineEdit);//Comma separated encryption types to be used in LeaseSet type 3 or 5
initCheckBox( OPTION("sam","enabled",[]{return "false";}), uiSettings->samEnabledCheckBox);
initIPAddressBox( OPTION("sam","address",[]{return "";}), uiSettings->samAddressLineEdit, tr("SAM -> IP address"));
diff --git a/qt/i2pd_qt/mainwindow.h b/qt/i2pd_qt/mainwindow.h
index b4f57f8f..77c8826b 100644
--- a/qt/i2pd_qt/mainwindow.h
+++ b/qt/i2pd_qt/mainwindow.h
@@ -545,6 +545,18 @@ private:
void deleteTunnelForms();
void deleteTunnelFromUI(std::string tunnelName, TunnelConfig* cnf);
+ template
+ std::string GetI2CPOption (const Section& section, const std::string& name, const std::string& value) const
+ {
+ return section.second.get (boost::property_tree::ptree::path_type (name, '/'), value);
+ }
+
+ template
+ std::string GetI2CPOption (const Section& section, const std::string& name, const char* value) const
+ {
+ return section.second.get (boost::property_tree::ptree::path_type (name, '/'), std::string (value));
+ }
+
template
std::string GetI2CPOption (const Section& section, const std::string& name, const Type& value) const
{
@@ -565,6 +577,19 @@ private:
param.setOutbound_quantity(QString(_OUTBOUND_TUNNELS_QUANTITY.c_str()));
std::string _TAGS_TO_SEND = options[I2CP_PARAM_TAGS_TO_SEND] = GetI2CPOption (section, I2CP_PARAM_TAGS_TO_SEND, DEFAULT_TAGS_TO_SEND);
param.setCrypto_tagsToSend(QString(_TAGS_TO_SEND.c_str()));
+ std::string _i2cp_leaseSetAuthType = options[I2CP_PARAM_LEASESET_AUTH_TYPE] = GetI2CPOption (section, I2CP_PARAM_LEASESET_AUTH_TYPE, 0);
+ param.set_i2cp_leaseSetAuthType(QString(_i2cp_leaseSetAuthType.c_str()));
+ const char DEFAULT_LEASESET_ENCRYPTION_TYPE[] = "";
+ std::string _i2cp_leaseSetEncType = options[I2CP_PARAM_LEASESET_ENCRYPTION_TYPE] = GetI2CPOption (section, I2CP_PARAM_LEASESET_ENCRYPTION_TYPE, DEFAULT_LEASESET_ENCRYPTION_TYPE);//todo Identity's type by default
+ param.set_i2cp_leaseSetEncType(QString(_i2cp_leaseSetEncType.c_str()));
+ std::string _i2cp_leaseSetPrivKey = options[I2CP_PARAM_LEASESET_PRIV_KEY] = GetI2CPOption (section, I2CP_PARAM_LEASESET_PRIV_KEY, "");
+ param.set_i2cp_leaseSetPrivKey(QString(_i2cp_leaseSetPrivKey.c_str()));
+ std::string _i2cp_leaseSetType = options[I2CP_PARAM_LEASESET_TYPE] = GetI2CPOption (section, I2CP_PARAM_LEASESET_TYPE, DEFAULT_LEASESET_TYPE);
+ param.set_i2cp_leaseSetType(QString(_i2cp_leaseSetType.c_str()));
+ std::string _i2p_streaming_answerPings= options[I2CP_PARAM_STREAMING_ANSWER_PINGS] = GetI2CPOption (section, I2CP_PARAM_STREAMING_ANSWER_PINGS, DEFAULT_ANSWER_PINGS);
+ param.set_i2p_streaming_answerPings((_i2p_streaming_answerPings.compare("true")==0)||(_i2p_streaming_answerPings.compare("yes")==0));
+ std::string _i2p_streaming_initialAckDelay = options[I2CP_PARAM_STREAMING_INITIAL_ACK_DELAY] = GetI2CPOption (section, I2CP_PARAM_STREAMING_INITIAL_ACK_DELAY, DEFAULT_INITIAL_ACK_DELAY);
+ param.set_i2p_streaming_initialAckDelay(QString(_i2p_streaming_initialAckDelay.c_str()));
options[I2CP_PARAM_MIN_TUNNEL_LATENCY] = GetI2CPOption(section, I2CP_PARAM_MIN_TUNNEL_LATENCY, DEFAULT_MIN_TUNNEL_LATENCY);//TODO include into param
options[I2CP_PARAM_MAX_TUNNEL_LATENCY] = GetI2CPOption(section, I2CP_PARAM_MAX_TUNNEL_LATENCY, DEFAULT_MAX_TUNNEL_LATENCY);//TODO include into param
}
@@ -582,6 +607,17 @@ private:
param.setOutbound_quantity(QString::number(_OUTBOUND_TUNNELS_QUANTITY));
const int _TAGS_TO_SEND = DEFAULT_TAGS_TO_SEND;
param.setCrypto_tagsToSend(QString::number(_TAGS_TO_SEND));
+ const int _i2cp_leaseSetAuthType = 0;
+ param.set_i2cp_leaseSetAuthType(QString::number(_i2cp_leaseSetAuthType));
+ const QString _i2cp_leaseSetEncType = "0,4"; //todo Identity's type by default
+ param.set_i2cp_leaseSetEncType(_i2cp_leaseSetEncType);
+ param.set_i2cp_leaseSetPrivKey("");
+ const int _i2cp_leaseSetType = DEFAULT_LEASESET_TYPE;
+ param.set_i2cp_leaseSetType(QString::number(_i2cp_leaseSetType));
+ bool _i2p_streaming_answerPings= DEFAULT_ANSWER_PINGS;
+ param.set_i2p_streaming_answerPings(_i2p_streaming_answerPings);
+ const int _i2p_streaming_initialAckDelay = DEFAULT_INITIAL_ACK_DELAY;
+ param.set_i2p_streaming_initialAckDelay(QString::number(_i2p_streaming_initialAckDelay));
}