I2P -> .NET

This commit is contained in:
Михаил Подивилов 2019-05-11 18:25:50 +03:00
parent f176f1909b
commit fdb0ce6703
272 changed files with 5702 additions and 8931 deletions

View file

@ -1,9 +1,9 @@
i2pd_qt.pro.user*
dotnet_qt.pro.user*
moc_*
ui_*
qrc_*
i2pd_qt
dotnet_qt
Makefile*
*.stash
object_script.*
i2pd_qt_plugin_import.cpp
dotnet_qt_plugin_import.cpp

View file

@ -32,11 +32,11 @@ int ClientTunnelPane::appendClientTunnelForm(
QComboBox *tunnelTypeComboBox = new QComboBox(gridLayoutWidget_2);
tunnelTypeComboBox->setObjectName(QStringLiteral("tunnelTypeComboBox"));
tunnelTypeComboBox->addItem("Client", i2p::client::I2P_TUNNELS_SECTION_TYPE_CLIENT);
tunnelTypeComboBox->addItem("Socks", i2p::client::I2P_TUNNELS_SECTION_TYPE_SOCKS);
tunnelTypeComboBox->addItem("Websocks", i2p::client::I2P_TUNNELS_SECTION_TYPE_WEBSOCKS);
tunnelTypeComboBox->addItem("HTTP Proxy", i2p::client::I2P_TUNNELS_SECTION_TYPE_HTTPPROXY);
tunnelTypeComboBox->addItem("UDP Client", i2p::client::I2P_TUNNELS_SECTION_TYPE_UDPCLIENT);
tunnelTypeComboBox->addItem("Client", dotnet::client::DOTNET_TUNNELS_SECTION_TYPE_CLIENT);
tunnelTypeComboBox->addItem("Socks", dotnet::client::DOTNET_TUNNELS_SECTION_TYPE_SOCKS);
tunnelTypeComboBox->addItem("Websocks", dotnet::client::DOTNET_TUNNELS_SECTION_TYPE_WEBSOCKS);
tunnelTypeComboBox->addItem("HTTP Proxy", dotnet::client::DOTNET_TUNNELS_SECTION_TYPE_HTTPPROXY);
tunnelTypeComboBox->addItem("UDP Client", dotnet::client::DOTNET_TUNNELS_SECTION_TYPE_UDPCLIENT);
int h=(7+4)*60;
gridLayoutWidget_2->setGeometry(QRect(0, 0, 561, h));
@ -45,15 +45,15 @@ int ClientTunnelPane::appendClientTunnelForm(
{
const QString& type = tunnelConfig->getType();
int index=0;
if(type==i2p::client::I2P_TUNNELS_SECTION_TYPE_CLIENT)tunnelTypeComboBox->setCurrentIndex(index);
if(type==dotnet::client::DOTNET_TUNNELS_SECTION_TYPE_CLIENT)tunnelTypeComboBox->setCurrentIndex(index);
++index;
if(type==i2p::client::I2P_TUNNELS_SECTION_TYPE_SOCKS)tunnelTypeComboBox->setCurrentIndex(index);
if(type==dotnet::client::DOTNET_TUNNELS_SECTION_TYPE_SOCKS)tunnelTypeComboBox->setCurrentIndex(index);
++index;
if(type==i2p::client::I2P_TUNNELS_SECTION_TYPE_WEBSOCKS)tunnelTypeComboBox->setCurrentIndex(index);
if(type==dotnet::client::DOTNET_TUNNELS_SECTION_TYPE_WEBSOCKS)tunnelTypeComboBox->setCurrentIndex(index);
++index;
if(type==i2p::client::I2P_TUNNELS_SECTION_TYPE_HTTPPROXY)tunnelTypeComboBox->setCurrentIndex(index);
if(type==dotnet::client::DOTNET_TUNNELS_SECTION_TYPE_HTTPPROXY)tunnelTypeComboBox->setCurrentIndex(index);
++index;
if(type==i2p::client::I2P_TUNNELS_SECTION_TYPE_UDPCLIENT)tunnelTypeComboBox->setCurrentIndex(index);
if(type==dotnet::client::DOTNET_TUNNELS_SECTION_TYPE_UDPCLIENT)tunnelTypeComboBox->setCurrentIndex(index);
++index;
}
@ -148,7 +148,7 @@ int ClientTunnelPane::appendClientTunnelForm(
/*
int destinationPort;
i2p::data::SigningKeyType sigType;
dotnet::data::SigningKeyType sigType;
*/
{
int destinationPort = tunnelConfig->getdestinationPort();
@ -169,7 +169,7 @@ int ClientTunnelPane::appendClientTunnelForm(
tunnelGridLayout->addLayout(horizontalLayout_2);
}
{
i2p::data::SigningKeyType sigType = tunnelConfig->getsigType();
dotnet::data::SigningKeyType sigType = tunnelConfig->getsigType();
QHBoxLayout *horizontalLayout_2 = new QHBoxLayout();
horizontalLayout_2->setObjectName(QStringLiteral("horizontalLayout_2"));
ui.sigTypeLabel = new QLabel(gridLayoutWidget_2);
@ -188,8 +188,8 @@ int ClientTunnelPane::appendClientTunnelForm(
tunnelGridLayout->addLayout(horizontalLayout_2);
}
{
I2CPParameters& i2cpParameters = tunnelConfig->getI2cpParameters();
appendControlsForI2CPParameters(i2cpParameters, gridIndex);
DNCPParameters& dncpParameters = tunnelConfig->getI2cpParameters();
appendControlsForDNCPParameters(dncpParameters, gridIndex);
}
retranslateClientTunnelForm(ui);

View file

@ -11,7 +11,7 @@
#include <QMutexLocker>
#include <QThread>
namespace i2p
namespace dotnet
{
namespace qt
{
@ -167,8 +167,8 @@ namespace qt
w.show ();
{
i2p::qt::Controller daemonQtController(daemon);
w.setI2PController(&daemonQtController);
dotnet::qt::Controller daemonQtController(daemon);
w.setDotNetController(&daemonQtController);
LogPrint(eLogDebug, "Starting the daemon...");
emit daemonQtController.startDaemon();
//daemon.start ();

View file

@ -7,7 +7,7 @@
#include <QMutex>
#include <QMessageBox>
namespace i2p
namespace dotnet
{
namespace qt
{

View file

@ -22,10 +22,10 @@ int ServerTunnelPane::appendServerTunnelForm(
QComboBox *tunnelTypeComboBox = new QComboBox(gridLayoutWidget_2);
tunnelTypeComboBox->setObjectName(QStringLiteral("tunnelTypeComboBox"));
tunnelTypeComboBox->addItem("Server", i2p::client::I2P_TUNNELS_SECTION_TYPE_SERVER);
tunnelTypeComboBox->addItem("HTTP", i2p::client::I2P_TUNNELS_SECTION_TYPE_HTTP);
tunnelTypeComboBox->addItem("IRC", i2p::client::I2P_TUNNELS_SECTION_TYPE_IRC);
tunnelTypeComboBox->addItem("UDP Server", i2p::client::I2P_TUNNELS_SECTION_TYPE_UDPSERVER);
tunnelTypeComboBox->addItem("Server", dotnet::client::DOTNET_TUNNELS_SECTION_TYPE_SERVER);
tunnelTypeComboBox->addItem("HTTP", dotnet::client::DOTNET_TUNNELS_SECTION_TYPE_HTTP);
tunnelTypeComboBox->addItem("IRC", dotnet::client::DOTNET_TUNNELS_SECTION_TYPE_IRC);
tunnelTypeComboBox->addItem("UDP Server", dotnet::client::DOTNET_TUNNELS_SECTION_TYPE_UDPSERVER);
int h=19*60;
gridLayoutWidget_2->setGeometry(QRect(0, 0, 561, h));
@ -34,13 +34,13 @@ int ServerTunnelPane::appendServerTunnelForm(
{
const QString& type = tunnelConfig->getType();
int index=0;
if(type==i2p::client::I2P_TUNNELS_SECTION_TYPE_SERVER)tunnelTypeComboBox->setCurrentIndex(index);
if(type==dotnet::client::DOTNET_TUNNELS_SECTION_TYPE_SERVER)tunnelTypeComboBox->setCurrentIndex(index);
++index;
if(type==i2p::client::I2P_TUNNELS_SECTION_TYPE_HTTP)tunnelTypeComboBox->setCurrentIndex(index);
if(type==dotnet::client::DOTNET_TUNNELS_SECTION_TYPE_HTTP)tunnelTypeComboBox->setCurrentIndex(index);
++index;
if(type==i2p::client::I2P_TUNNELS_SECTION_TYPE_IRC)tunnelTypeComboBox->setCurrentIndex(index);
if(type==dotnet::client::DOTNET_TUNNELS_SECTION_TYPE_IRC)tunnelTypeComboBox->setCurrentIndex(index);
++index;
if(type==i2p::client::I2P_TUNNELS_SECTION_TYPE_UDPSERVER)tunnelTypeComboBox->setCurrentIndex(index);
if(type==dotnet::client::DOTNET_TUNNELS_SECTION_TYPE_UDPSERVER)tunnelTypeComboBox->setCurrentIndex(index);
++index;
}
@ -186,7 +186,7 @@ int ServerTunnelPane::appendServerTunnelForm(
tunnelGridLayout->addLayout(horizontalLayout_2);
}
{
i2p::data::SigningKeyType sigType = tunnelConfig->getsigType();
dotnet::data::SigningKeyType sigType = tunnelConfig->getsigType();
QHBoxLayout *horizontalLayout_2 = new QHBoxLayout();
horizontalLayout_2->setObjectName(QStringLiteral("horizontalLayout_2"));
ui.sigTypeLabel = new QLabel(gridLayoutWidget_2);
@ -236,8 +236,8 @@ int ServerTunnelPane::appendServerTunnelForm(
tunnelGridLayout->addLayout(horizontalLayout_2);
}
{
I2CPParameters& i2cpParameters = tunnelConfig->getI2cpParameters();
appendControlsForI2CPParameters(i2cpParameters, gridIndex);
DNCPParameters& dncpParameters = tunnelConfig->getI2cpParameters();
appendControlsForDNCPParameters(dncpParameters, gridIndex);
}
retranslateServerTunnelForm(ui);

View file

@ -24,7 +24,7 @@ public:
static void fillComboBox(QComboBox* signatureTypeCombobox, uint16_t selectedSigType) {
/*
<orignal> https://geti2p.net/spec/common-structures#certificate
<orignal> https://getdotnet.net/spec/common-structures#certificate
<orignal> все коды перечислены
<Hypnosis> это таблица "The defined Signing Public Key types are:" ?
<orignal> да
@ -34,7 +34,7 @@ public:
int index=0;
bool foundSelected=false;
using namespace i2p::data;
using namespace dotnet::data;
addItem(signatureTypeCombobox, QApplication::translate("signatureTypeCombobox", "DSA_SHA1", 0), SIGNING_KEY_TYPE_DSA_SHA1); //0
if(selectedSigType==SIGNING_KEY_TYPE_DSA_SHA1){signatureTypeCombobox->setCurrentIndex(index);foundSelected=true;}

View file

@ -5,25 +5,25 @@ void TunnelConfig::saveHeaderToStringStream(std::stringstream& out) {
<< "type=" << type.toStdString() << "\n";
}
void TunnelConfig::saveI2CPParametersToStringStream(std::stringstream& out) {
if (i2cpParameters.getInbound_length().toUShort() != i2p::client::DEFAULT_INBOUND_TUNNEL_LENGTH)
out << i2p::client::I2CP_PARAM_INBOUND_TUNNEL_LENGTH << "="
<< i2cpParameters.getInbound_length().toStdString() << "\n";
if (i2cpParameters.getOutbound_length().toUShort() != i2p::client::DEFAULT_OUTBOUND_TUNNEL_LENGTH)
out << i2p::client::I2CP_PARAM_OUTBOUND_TUNNEL_LENGTH << "="
<< i2cpParameters.getOutbound_length().toStdString() << "\n";
if (i2cpParameters.getInbound_quantity().toUShort() != i2p::client::DEFAULT_INBOUND_TUNNELS_QUANTITY)
out << i2p::client::I2CP_PARAM_INBOUND_TUNNELS_QUANTITY << "="
<< i2cpParameters.getInbound_quantity().toStdString() << "\n";
if (i2cpParameters.getOutbound_quantity().toUShort() != i2p::client::DEFAULT_OUTBOUND_TUNNELS_QUANTITY)
out << i2p::client::I2CP_PARAM_OUTBOUND_TUNNELS_QUANTITY << "="
<< i2cpParameters.getOutbound_quantity().toStdString() << "\n";
if (i2cpParameters.getCrypto_tagsToSend().toUShort() != i2p::client::DEFAULT_TAGS_TO_SEND)
out << i2p::client::I2CP_PARAM_TAGS_TO_SEND << "="
<< i2cpParameters.getCrypto_tagsToSend().toStdString() << "\n";
if (!i2cpParameters.getExplicitPeers().isEmpty()) //todo #947
out << i2p::client::I2CP_PARAM_EXPLICIT_PEERS << "="
<< i2cpParameters.getExplicitPeers().toStdString() << "\n";
void TunnelConfig::saveDNCPParametersToStringStream(std::stringstream& out) {
if (dncpParameters.getInbound_length().toUShort() != dotnet::client::DEFAULT_INBOUND_TUNNEL_LENGTH)
out << dotnet::client::DNCP_PARAM_INBOUND_TUNNEL_LENGTH << "="
<< dncpParameters.getInbound_length().toStdString() << "\n";
if (dncpParameters.getOutbound_length().toUShort() != dotnet::client::DEFAULT_OUTBOUND_TUNNEL_LENGTH)
out << dotnet::client::DNCP_PARAM_OUTBOUND_TUNNEL_LENGTH << "="
<< dncpParameters.getOutbound_length().toStdString() << "\n";
if (dncpParameters.getInbound_quantity().toUShort() != dotnet::client::DEFAULT_INBOUND_TUNNELS_QUANTITY)
out << dotnet::client::DNCP_PARAM_INBOUND_TUNNELS_QUANTITY << "="
<< dncpParameters.getInbound_quantity().toStdString() << "\n";
if (dncpParameters.getOutbound_quantity().toUShort() != dotnet::client::DEFAULT_OUTBOUND_TUNNELS_QUANTITY)
out << dotnet::client::DNCP_PARAM_OUTBOUND_TUNNELS_QUANTITY << "="
<< dncpParameters.getOutbound_quantity().toStdString() << "\n";
if (dncpParameters.getCrypto_tagsToSend().toUShort() != dotnet::client::DEFAULT_TAGS_TO_SEND)
out << dotnet::client::DNCP_PARAM_TAGS_TO_SEND << "="
<< dncpParameters.getCrypto_tagsToSend().toStdString() << "\n";
if (!dncpParameters.getExplicitPeers().isEmpty()) //todo #947
out << dotnet::client::DNCP_PARAM_EXPLICIT_PEERS << "="
<< dncpParameters.getExplicitPeers().toStdString() << "\n";
out << "\n";
}

View file

@ -4,12 +4,12 @@
#include "QString"
#include <string>
#include "../../libi2pd_client/ClientContext.h"
#include "../../libi2pd/Destination.h"
#include "../../libdotnet_client/ClientContext.h"
#include "../../libdotnet/Destination.h"
#include "TunnelsPageUpdateListener.h"
class I2CPParameters{
class DNCPParameters{
QString inbound_length;//number of hops of an inbound tunnel. 3 by default; lower value is faster but dangerous
QString outbound_length;//number of hops of an outbound tunnel. 3 by default; lower value is faster but dangerous
QString inbound_quantity; //number of inbound tunnels. 5 by default
@ -17,7 +17,7 @@ class I2CPParameters{
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
public:
I2CPParameters(): inbound_length(),
DNCPParameters(): inbound_length(),
outbound_length(),
inbound_quantity(),
outbound_quantity(),
@ -42,48 +42,48 @@ class ClientTunnelConfig;
class ServerTunnelConfig;
class TunnelConfig {
/*
const char I2P_TUNNELS_SECTION_TYPE_CLIENT[] = "client";
const char I2P_TUNNELS_SECTION_TYPE_SERVER[] = "server";
const char I2P_TUNNELS_SECTION_TYPE_HTTP[] = "http";
const char I2P_TUNNELS_SECTION_TYPE_IRC[] = "irc";
const char I2P_TUNNELS_SECTION_TYPE_UDPCLIENT[] = "udpclient";
const char I2P_TUNNELS_SECTION_TYPE_UDPSERVER[] = "udpserver";
const char I2P_TUNNELS_SECTION_TYPE_SOCKS[] = "socks";
const char I2P_TUNNELS_SECTION_TYPE_WEBSOCKS[] = "websocks";
const char I2P_TUNNELS_SECTION_TYPE_HTTPPROXY[] = "httpproxy";
const char DOTNET_TUNNELS_SECTION_TYPE_CLIENT[] = "client";
const char DOTNET_TUNNELS_SECTION_TYPE_SERVER[] = "server";
const char DOTNET_TUNNELS_SECTION_TYPE_HTTP[] = "http";
const char DOTNET_TUNNELS_SECTION_TYPE_IRC[] = "irc";
const char DOTNET_TUNNELS_SECTION_TYPE_UDPCLIENT[] = "udpclient";
const char DOTNET_TUNNELS_SECTION_TYPE_UDPSERVER[] = "udpserver";
const char DOTNET_TUNNELS_SECTION_TYPE_SOCKS[] = "socks";
const char DOTNET_TUNNELS_SECTION_TYPE_WEBSOCKS[] = "websocks";
const char DOTNET_TUNNELS_SECTION_TYPE_HTTPPROXY[] = "httpproxy";
*/
QString type;
std::string name;
public:
TunnelConfig(std::string name_, QString& type_, I2CPParameters& i2cpParameters_):
type(type_), name(name_), i2cpParameters(i2cpParameters_) {}
TunnelConfig(std::string name_, QString& type_, DNCPParameters& dncpParameters_):
type(type_), name(name_), dncpParameters(dncpParameters_) {}
virtual ~TunnelConfig(){}
const QString& getType(){return type;}
const std::string& getName(){return name;}
void setType(const QString& type_){type=type_;}
void setName(const std::string& name_){name=name_;}
I2CPParameters& getI2cpParameters(){return i2cpParameters;}
DNCPParameters& getI2cpParameters(){return dncpParameters;}
void saveHeaderToStringStream(std::stringstream& out);
void saveI2CPParametersToStringStream(std::stringstream& out);
void saveDNCPParametersToStringStream(std::stringstream& out);
virtual void saveToStringStream(std::stringstream& out)=0;
virtual ClientTunnelConfig* asClientTunnelConfig()=0;
virtual ServerTunnelConfig* asServerTunnelConfig()=0;
private:
I2CPParameters i2cpParameters;
DNCPParameters dncpParameters;
};
/*
# mandatory parameters:
std::string dest;
if (type == I2P_TUNNELS_SECTION_TYPE_CLIENT || type == I2P_TUNNELS_SECTION_TYPE_UDPCLIENT)
dest = section.second.get<std::string> (I2P_CLIENT_TUNNEL_DESTINATION);
int port = section.second.get<int> (I2P_CLIENT_TUNNEL_PORT);
if (type == DOTNET_TUNNELS_SECTION_TYPE_CLIENT || type == DOTNET_TUNNELS_SECTION_TYPE_UDPCLIENT)
dest = section.second.get<std::string> (DOTNET_CLIENT_TUNNEL_DESTINATION);
int port = section.second.get<int> (DOTNET_CLIENT_TUNNEL_PORT);
# optional parameters (may be omitted)
std::string keys = section.second.get (I2P_CLIENT_TUNNEL_KEYS, "");
std::string address = section.second.get (I2P_CLIENT_TUNNEL_ADDRESS, "127.0.0.1");
int destinationPort = section.second.get (I2P_CLIENT_TUNNEL_DESTINATION_PORT, 0);
i2p::data::SigningKeyType sigType = section.second.get (I2P_CLIENT_TUNNEL_SIGNATURE_TYPE, i2p::data::SIGNING_KEY_TYPE_ECDSA_SHA256_P256);
std::string keys = section.second.get (DOTNET_CLIENT_TUNNEL_KEYS, "");
std::string address = section.second.get (DOTNET_CLIENT_TUNNEL_ADDRESS, "127.0.0.1");
int destinationPort = section.second.get (DOTNET_CLIENT_TUNNEL_DESTINATION_PORT, 0);
dotnet::data::SigningKeyType sigType = section.second.get (DOTNET_CLIENT_TUNNEL_SIGNATURE_TYPE, dotnet::data::SIGNING_KEY_TYPE_ECDSA_SHA256_P256);
# * keys -- our identity, if unset, will be generated on every startup,
# if set and file missing, keys will be generated and placed to this file
# * address -- local interface to bind
@ -92,7 +92,7 @@ private:
type = client
address = 127.0.0.1
port = 6668
destination = irc.postman.i2p
destination = irc.postman.dotnet
keys = irc-keys.dat
*/
class ClientTunnelConfig : public TunnelConfig {
@ -101,15 +101,15 @@ class ClientTunnelConfig : public TunnelConfig {
std::string keys;
std::string address;
int destinationPort;
i2p::data::SigningKeyType sigType;
dotnet::data::SigningKeyType sigType;
public:
ClientTunnelConfig(std::string name_, QString type_, I2CPParameters& i2cpParameters_,
ClientTunnelConfig(std::string name_, QString type_, DNCPParameters& dncpParameters_,
std::string dest_,
int port_,
std::string keys_,
std::string address_,
int destinationPort_,
i2p::data::SigningKeyType sigType_): TunnelConfig(name_, type_, i2cpParameters_),
dotnet::data::SigningKeyType sigType_): TunnelConfig(name_, type_, dncpParameters_),
dest(dest_),
port(port_),
keys(keys_),
@ -121,13 +121,13 @@ public:
std::string & getkeys(){return keys;}
std::string & getaddress(){return address;}
int getdestinationPort(){return destinationPort;}
i2p::data::SigningKeyType getsigType(){return sigType;}
dotnet::data::SigningKeyType getsigType(){return sigType;}
void setdest(const std::string& dest_){dest=dest_;}
void setport(int port_){port=port_;}
void setkeys(const std::string & keys_){keys=keys_;}
void setaddress(const std::string & address_){address=address_;}
void setdestinationPort(int destinationPort_){destinationPort=destinationPort_;}
void setsigType(i2p::data::SigningKeyType sigType_){sigType=sigType_;}
void setsigType(dotnet::data::SigningKeyType sigType_){sigType=sigType_;}
virtual void saveToStringStream(std::stringstream& out);
virtual ClientTunnelConfig* asClientTunnelConfig(){return this;}
virtual ServerTunnelConfig* asServerTunnelConfig(){return nullptr;}
@ -137,22 +137,22 @@ public:
# mandatory parameters:
# * host -- ip address of our service
# * port -- port of our service
# * keys -- file with LeaseSet of address in i2p
std::string host = section.second.get<std::string> (I2P_SERVER_TUNNEL_HOST);
int port = section.second.get<int> (I2P_SERVER_TUNNEL_PORT);
std::string keys = section.second.get<std::string> (I2P_SERVER_TUNNEL_KEYS);
# * keys -- file with LeaseSet of address in dotnet
std::string host = section.second.get<std::string> (DOTNET_SERVER_TUNNEL_HOST);
int port = section.second.get<int> (DOTNET_SERVER_TUNNEL_PORT);
std::string keys = section.second.get<std::string> (DOTNET_SERVER_TUNNEL_KEYS);
# optional parameters (may be omitted)
int inPort = section.second.get (I2P_SERVER_TUNNEL_INPORT, 0);
std::string accessList = section.second.get (I2P_SERVER_TUNNEL_ACCESS_LIST, "");
std::string hostOverride = section.second.get (I2P_SERVER_TUNNEL_HOST_OVERRIDE, "");
std::string webircpass = section.second.get<std::string> (I2P_SERVER_TUNNEL_WEBIRC_PASSWORD, "");
bool gzip = section.second.get (I2P_SERVER_TUNNEL_GZIP, true);
i2p::data::SigningKeyType sigType = section.second.get (I2P_SERVER_TUNNEL_SIGNATURE_TYPE, i2p::data::SIGNING_KEY_TYPE_ECDSA_SHA256_P256);
std::string address = section.second.get<std::string> (I2P_SERVER_TUNNEL_ADDRESS, "127.0.0.1");
bool isUniqueLocal = section.second.get(I2P_SERVER_TUNNEL_ENABLE_UNIQUE_LOCAL, true);
# * inport -- optional, i2p service port, if unset - the same as 'port'
# * accesslist -- comma-separated list of i2p addresses, allowed to connect
# every address is b32 without '.b32.i2p' part
int inPort = section.second.get (DOTNET_SERVER_TUNNEL_INPORT, 0);
std::string accessList = section.second.get (DOTNET_SERVER_TUNNEL_ACCESS_LIST, "");
std::string hostOverride = section.second.get (DOTNET_SERVER_TUNNEL_HOST_OVERRIDE, "");
std::string webircpass = section.second.get<std::string> (DOTNET_SERVER_TUNNEL_WEBIRC_PASSWORD, "");
bool gzip = section.second.get (DOTNET_SERVER_TUNNEL_GZIP, true);
dotnet::data::SigningKeyType sigType = section.second.get (DOTNET_SERVER_TUNNEL_SIGNATURE_TYPE, dotnet::data::SIGNING_KEY_TYPE_ECDSA_SHA256_P256);
std::string address = section.second.get<std::string> (DOTNET_SERVER_TUNNEL_ADDRESS, "127.0.0.1");
bool isUniqueLocal = section.second.get(DOTNET_SERVER_TUNNEL_ENABLE_UNIQUE_LOCAL, true);
# * inport -- optional, dotnet service port, if unset - the same as 'port'
# * accesslist -- comma-separated list of dotnet addresses, allowed to connect
# every address is b32 without '.b32.dotnet' part
[somelabel]
type = server
host = 127.0.0.1
@ -168,11 +168,11 @@ class ServerTunnelConfig : public TunnelConfig {
std::string hostOverride;
std::string webircpass;
bool gzip;
i2p::data::SigningKeyType sigType;
dotnet::data::SigningKeyType sigType;
std::string address;
bool isUniqueLocal;
public:
ServerTunnelConfig(std::string name_, QString type_, I2CPParameters& i2cpParameters_,
ServerTunnelConfig(std::string name_, QString type_, DNCPParameters& dncpParameters_,
std::string host_,
int port_,
std::string keys_,
@ -181,9 +181,9 @@ public:
std::string hostOverride_,
std::string webircpass_,
bool gzip_,
i2p::data::SigningKeyType sigType_,
dotnet::data::SigningKeyType sigType_,
std::string address_,
bool isUniqueLocal_): TunnelConfig(name_, type_, i2cpParameters_),
bool isUniqueLocal_): TunnelConfig(name_, type_, dncpParameters_),
host(host_),
port(port_),
keys(keys_),
@ -203,7 +203,7 @@ public:
std::string& gethostOverride(){return hostOverride;}
std::string& getwebircpass(){return webircpass;}
bool getgzip(){return gzip;}
i2p::data::SigningKeyType getsigType(){return sigType;}
dotnet::data::SigningKeyType getsigType(){return sigType;}
std::string& getaddress(){return address;}
bool getisUniqueLocal(){return isUniqueLocal;}
void sethost(const std::string& host_){host=host_;}
@ -214,7 +214,7 @@ public:
void sethostOverride(const std::string& hostOverride_){hostOverride=hostOverride_;}
void setwebircpass(const std::string& webircpass_){webircpass=webircpass_;}
void setgzip(bool gzip_){gzip=gzip_;}
void setsigType(i2p::data::SigningKeyType sigType_){sigType=sigType_;}
void setsigType(dotnet::data::SigningKeyType sigType_){sigType=sigType_;}
void setaddress(const std::string& address_){address=address_;}
void setisUniqueLocal(bool isUniqueLocal_){isUniqueLocal=isUniqueLocal_;}
virtual void saveToStringStream(std::stringstream& out);

View file

@ -83,10 +83,10 @@ void TunnelPane::setupTunnelPane(
retranslateTunnelForm(*this);
}
void TunnelPane::appendControlsForI2CPParameters(I2CPParameters& i2cpParameters, int& gridIndex) {
void TunnelPane::appendControlsForDNCPParameters(DNCPParameters& dncpParameters, int& gridIndex) {
{
//number of hops of an inbound tunnel
const QString& inbound_length=i2cpParameters.getInbound_length();
const QString& inbound_length=dncpParameters.getInbound_length();
QHBoxLayout *horizontalLayout_2 = new QHBoxLayout();
horizontalLayout_2->setObjectName(QStringLiteral("horizontalLayout_2"));
inbound_lengthLabel = new QLabel(gridLayoutWidget_2);
@ -105,7 +105,7 @@ void TunnelPane::appendControlsForI2CPParameters(I2CPParameters& i2cpParameters,
}
{
//number of hops of an outbound tunnel
const QString& outbound_length=i2cpParameters.getOutbound_length();
const QString& outbound_length=dncpParameters.getOutbound_length();
QHBoxLayout *horizontalLayout_2 = new QHBoxLayout();
horizontalLayout_2->setObjectName(QStringLiteral("horizontalLayout_2"));
outbound_lengthLabel = new QLabel(gridLayoutWidget_2);
@ -124,7 +124,7 @@ void TunnelPane::appendControlsForI2CPParameters(I2CPParameters& i2cpParameters,
}
{
//number of inbound tunnels
const QString& inbound_quantity=i2cpParameters.getInbound_quantity();
const QString& inbound_quantity=dncpParameters.getInbound_quantity();
QHBoxLayout *horizontalLayout_2 = new QHBoxLayout();
horizontalLayout_2->setObjectName(QStringLiteral("horizontalLayout_2"));
inbound_quantityLabel = new QLabel(gridLayoutWidget_2);
@ -143,7 +143,7 @@ void TunnelPane::appendControlsForI2CPParameters(I2CPParameters& i2cpParameters,
}
{
//number of outbound tunnels
const QString& outbound_quantity=i2cpParameters.getOutbound_quantity();
const QString& outbound_quantity=dncpParameters.getOutbound_quantity();
QHBoxLayout *horizontalLayout_2 = new QHBoxLayout();
horizontalLayout_2->setObjectName(QStringLiteral("horizontalLayout_2"));
outbound_quantityLabel = new QLabel(gridLayoutWidget_2);
@ -162,7 +162,7 @@ void TunnelPane::appendControlsForI2CPParameters(I2CPParameters& i2cpParameters,
}
{
//number of ElGamal/AES tags to send
const QString& crypto_tagsToSend=i2cpParameters.getCrypto_tagsToSend();
const QString& crypto_tagsToSend=dncpParameters.getCrypto_tagsToSend();
QHBoxLayout *horizontalLayout_2 = new QHBoxLayout();
horizontalLayout_2->setObjectName(QStringLiteral("horizontalLayout_2"));
crypto_tagsToSendLabel = new QLabel(gridLayoutWidget_2);
@ -180,7 +180,7 @@ void TunnelPane::appendControlsForI2CPParameters(I2CPParameters& i2cpParameters,
tunnelGridLayout->addLayout(horizontalLayout_2);
}
retranslateI2CPParameters();
retranslateDNCPParameters();
}
void TunnelPane::updated() {
@ -210,22 +210,22 @@ void TunnelPane::deleteButtonReleased() {
}
/*
const char I2P_TUNNELS_SECTION_TYPE_CLIENT[] = "client";
const char I2P_TUNNELS_SECTION_TYPE_SERVER[] = "server";
const char I2P_TUNNELS_SECTION_TYPE_HTTP[] = "http";
const char I2P_TUNNELS_SECTION_TYPE_IRC[] = "irc";
const char I2P_TUNNELS_SECTION_TYPE_UDPCLIENT[] = "udpclient";
const char I2P_TUNNELS_SECTION_TYPE_UDPSERVER[] = "udpserver";
const char I2P_TUNNELS_SECTION_TYPE_SOCKS[] = "socks";
const char I2P_TUNNELS_SECTION_TYPE_WEBSOCKS[] = "websocks";
const char I2P_TUNNELS_SECTION_TYPE_HTTPPROXY[] = "httpproxy";
const char DOTNET_TUNNELS_SECTION_TYPE_CLIENT[] = "client";
const char DOTNET_TUNNELS_SECTION_TYPE_SERVER[] = "server";
const char DOTNET_TUNNELS_SECTION_TYPE_HTTP[] = "http";
const char DOTNET_TUNNELS_SECTION_TYPE_IRC[] = "irc";
const char DOTNET_TUNNELS_SECTION_TYPE_UDPCLIENT[] = "udpclient";
const char DOTNET_TUNNELS_SECTION_TYPE_UDPSERVER[] = "udpserver";
const char DOTNET_TUNNELS_SECTION_TYPE_SOCKS[] = "socks";
const char DOTNET_TUNNELS_SECTION_TYPE_WEBSOCKS[] = "websocks";
const char DOTNET_TUNNELS_SECTION_TYPE_HTTPPROXY[] = "httpproxy";
*/
QString TunnelPane::readTunnelTypeComboboxData() {
return tunnelTypeComboBox->currentData().toString();
}
i2p::data::SigningKeyType TunnelPane::readSigTypeComboboxUI(QComboBox* sigTypeComboBox) {
return (i2p::data::SigningKeyType) sigTypeComboBox->currentData().toInt();
dotnet::data::SigningKeyType TunnelPane::readSigTypeComboboxUI(QComboBox* sigTypeComboBox) {
return (dotnet::data::SigningKeyType) sigTypeComboBox->currentData().toInt();
}
void TunnelPane::deleteTunnelForm() {

View file

@ -21,7 +21,7 @@ class ServerTunnelPane;
class ClientTunnelPane;
class TunnelConfig;
class I2CPParameters;
class DNCPParameters;
class MainWindow;
@ -70,7 +70,7 @@ protected:
QComboBox *tunnelTypeComboBox;
QLabel *typeLabel;
//i2cp
//dncp
QLabel * inbound_lengthLabel;
QLineEdit * inbound_lengthLineEdit;
@ -90,19 +90,19 @@ protected:
QString readTunnelTypeComboboxData();
//should be created by factory
i2p::data::SigningKeyType readSigTypeComboboxUI(QComboBox* sigTypeComboBox);
dotnet::data::SigningKeyType readSigTypeComboboxUI(QComboBox* sigTypeComboBox);
public:
//returns false when invalid data at UI
virtual bool applyDataFromUIToTunnelConfig() {
tunnelConfig->setName(nameLineEdit->text().toStdString());
tunnelConfig->setType(readTunnelTypeComboboxData());
I2CPParameters& i2cpParams=tunnelConfig->getI2cpParameters();
i2cpParams.setInbound_length(inbound_lengthLineEdit->text());
i2cpParams.setInbound_quantity(inbound_quantityLineEdit->text());
i2cpParams.setOutbound_length(outbound_lengthLineEdit->text());
i2cpParams.setOutbound_quantity(outbound_quantityLineEdit->text());
i2cpParams.setCrypto_tagsToSend(crypto_tagsToSendLineEdit->text());
DNCPParameters& dncpParams=tunnelConfig->getI2cpParameters();
dncpParams.setInbound_length(inbound_lengthLineEdit->text());
dncpParams.setInbound_quantity(inbound_quantityLineEdit->text());
dncpParams.setOutbound_length(outbound_lengthLineEdit->text());
dncpParams.setOutbound_quantity(outbound_quantityLineEdit->text());
dncpParams.setCrypto_tagsToSend(crypto_tagsToSendLineEdit->text());
return true;
}
protected:
@ -111,7 +111,7 @@ protected:
QGroupBox *tunnelGroupBox,
QWidget* gridLayoutWidget_2, QComboBox * tunnelTypeComboBox,
QWidget *tunnelsFormGridLayoutWidget, int tunnelsRow, int height, int h);
void appendControlsForI2CPParameters(I2CPParameters& i2cpParameters, int& gridIndex);
void appendControlsForDNCPParameters(DNCPParameters& dncpParameters, int& gridIndex);
public:
int height() {
return gridLayoutWidget_2?gridLayoutWidget_2->height():0;
@ -125,7 +125,7 @@ private:
ui.nameLabel->setText(QApplication::translate("tunForm", "Tunnel name:", 0));
}
void retranslateI2CPParameters() {
void retranslateDNCPParameters() {
inbound_lengthLabel->setText(QApplication::translate("tunForm", "Number of hops of an inbound tunnel:", 0));;
outbound_lengthLabel->setText(QApplication::translate("tunForm", "Number of hops of an outbound tunnel:", 0));;
inbound_quantityLabel->setText(QApplication::translate("tunForm", "Number of inbound tunnels:", 0));;

View file

@ -1,18 +1,18 @@
<?xml version="1.0" encoding="UTF-8"?>
<!-- Copyright 2018 Viktor Villainov <supervillain@riseup.net> -->
<component type="desktop">
<id>website.i2pd.i2pd</id>
<launchable type="desktop-id">website.i2pd.i2pd.desktop</launchable>
<id>website.dotnet.dotnet</id>
<launchable type="desktop-id">website.dotnet.dotnet.desktop</launchable>
<metadata_license>CC0-1.0</metadata_license>
<project_license>BSD-3-Clause</project_license>
<name>i2pd</name>
<name>dotnet</name>
<summary>Invisible Internet</summary>
<description>
<p>i2pd (I2P Daemon) is a full-featured C++ implementation of I2P client.</p>
<p>I2P (Invisible Internet Protocol) is a universal anonymous network layer.
All communications over I2P are anonymous and end-to-end encrypted, participants
<p>dotnet (DOTNET Daemon) is a full-featured C++ implementation of DOTNET client.</p>
<p>DOTNET (Invisible Internet Protocol) is a universal anonymous network layer.
All communications over DOTNET are anonymous and end-to-end encrypted, participants
don't reveal their real IP addresses. </p>
<p>I2P allows people from all around the world to communicate and share information
<p>DOTNET allows people from all around the world to communicate and share information
without restrictions.</p>
<p>Features:</p>
<ul>
@ -24,12 +24,12 @@
</description>
<screenshots>
<screenshot type="default">
<image height="590" width="923">https://i2pd.website/images/i2pd_qt.png</image>
<image height="590" width="923">https://dotnet.website/images/dotnet_qt.png</image>
</screenshot>
</screenshots>
<url type="homepage">https://i2pd.website/</url>
<url type="bugtracker">https://github.com/PurpleI2P/i2pd/issues</url>
<url type="help">https://i2pd.readthedocs.io/en/latest/</url>
<url type="homepage">https://dotnet.website/</url>
<url type="bugtracker">https://github.com/PurpleI2P/dotnet/issues</url>
<url type="help">https://dotnet.readthedocs.io/en/latest/</url>
<update_contact>supervillain@riseup.net</update_contact>
<developer_name>PurpleI2P Team</developer_name>
<translation type="qt" />

View file

@ -1,11 +1,11 @@
[Desktop Entry]
Categories=Network;P2P;Qt;
Exec=i2pd_qt
Exec=dotnet_qt
GenericName=Invisible Internet
Comment=A universal anonymous network layer
Icon=website.i2pd.i2pd
Name=i2pd
Icon=website.dotnet.dotnet
Name=dotnet
Terminal=false
Type=Application
StartupNotify=false
Keywords=i2p;i2pd;vpn;p2p;
Keywords=dotnet;dotnet;vpn;p2p;

View file

@ -586,7 +586,7 @@
<item>
<widget class="QLabel" name="label_30">
<property name="text">
<string>Name i2pd appears in UPnP forwardings list:</string>
<string>Name dotnet appears in UPnP forwardings list:</string>
</property>
</widget>
</item>
@ -611,7 +611,7 @@
</widget>
</item>
<item row="16" column="0">
<widget class="QGroupBox" name="i2cpGroupBox">
<widget class="QGroupBox" name="dncpGroupBox">
<property name="minimumSize">
<size>
<width>0</width>
@ -625,9 +625,9 @@
</size>
</property>
<property name="title">
<string>I2CP interface</string>
<string>DNCP interface</string>
</property>
<widget class="QCheckBox" name="i2cpEnabledCheckBox">
<widget class="QCheckBox" name="dncpEnabledCheckBox">
<property name="geometry">
<rect>
<x>0</x>
@ -640,7 +640,7 @@
<string>Enabled</string>
</property>
</widget>
<widget class="QWidget" name="i2cp_horizontalLayoutWidget_8">
<widget class="QWidget" name="dncp_horizontalLayoutWidget_8">
<property name="geometry">
<rect>
<x>0</x>
@ -649,19 +649,19 @@
<height>31</height>
</rect>
</property>
<layout class="QHBoxLayout" name="i2cp_horizontalLayout_25">
<layout class="QHBoxLayout" name="dncp_horizontalLayout_25">
<item>
<widget class="QLabel" name="i2cp_label_24">
<widget class="QLabel" name="dncp_label_24">
<property name="text">
<string>IP address to listen on:</string>
</property>
</widget>
</item>
<item>
<widget class="QLineEdit" name="i2cpAddressLineEdit"/>
<widget class="QLineEdit" name="dncpAddressLineEdit"/>
</item>
<item>
<spacer name="i2cp_horizontalSpacer_19">
<spacer name="dncp_horizontalSpacer_19">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
@ -675,7 +675,7 @@
</item>
</layout>
</widget>
<widget class="QWidget" name="i2cp_horizontalLayoutWidget_9">
<widget class="QWidget" name="dncp_horizontalLayoutWidget_9">
<property name="geometry">
<rect>
<x>0</x>
@ -684,16 +684,16 @@
<height>31</height>
</rect>
</property>
<layout class="QHBoxLayout" name="i2cp_horizontalLayout_26">
<layout class="QHBoxLayout" name="dncp_horizontalLayout_26">
<item>
<widget class="QLabel" name="i2cp_label_25">
<widget class="QLabel" name="dncp_label_25">
<property name="text">
<string>Port to listen on:</string>
</property>
</widget>
</item>
<item>
<widget class="QLineEdit" name="i2cpPortLineEdit">
<widget class="QLineEdit" name="dncpPortLineEdit">
<property name="maximumSize">
<size>
<width>80</width>
@ -703,7 +703,7 @@
</widget>
</item>
<item>
<spacer name="i2cp_horizontalSpacer_20">
<spacer name="dncp_horizontalSpacer_20">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
@ -1412,7 +1412,7 @@
</size>
</property>
<property name="title">
<string>Data folder (for storage of i2pd data — RI, keys, peer profiles, …):</string>
<string>Data folder (for storage of dotnet data — RI, keys, peer profiles, …):</string>
</property>
<widget class="QWidget" name="horizontalLayoutWidget_7">
<property name="geometry">
@ -1564,7 +1564,7 @@
<item>
<widget class="QLabel" name="label_10">
<property name="text">
<string>NetID (network ID router belongs to. The main I2P ID is 2):</string>
<string>NetID (network ID router belongs to. The main DOTNET ID is 2):</string>
</property>
</widget>
</item>
@ -1847,7 +1847,7 @@
</rect>
</property>
<property name="text">
<string>Make direct I2P connections only to
<string>Make direct DOTNET connections only to
routers in specified Family:</string>
</property>
</widget>
@ -1861,7 +1861,7 @@ routers in specified Family:</string>
</rect>
</property>
<property name="text">
<string>Make direct I2P connections only to routers specified here.
<string>Make direct DOTNET connections only to routers specified here.
Comma separated list of base64 identities:</string>
</property>
</widget>
@ -1934,7 +1934,7 @@ Comma separated list of base64 identities:</string>
</widget>
</item>
<item row="17" column="0">
<widget class="QGroupBox" name="i2pControlGroupBox">
<widget class="QGroupBox" name="dotnetControlGroupBox">
<property name="minimumSize">
<size>
<width>0</width>
@ -1948,9 +1948,9 @@ Comma separated list of base64 identities:</string>
</size>
</property>
<property name="title">
<string>I2PControl interface</string>
<string>DotNetControl interface</string>
</property>
<widget class="QCheckBox" name="i2pControlEnabledCheckBox">
<widget class="QCheckBox" name="dotnetControlEnabledCheckBox">
<property name="geometry">
<rect>
<x>0</x>
@ -1963,7 +1963,7 @@ Comma separated list of base64 identities:</string>
<string>Enabled</string>
</property>
</widget>
<widget class="QWidget" name="i2pControl_horizontalLayoutWidget_8">
<widget class="QWidget" name="dotnetControl_horizontalLayoutWidget_8">
<property name="geometry">
<rect>
<x>0</x>
@ -1972,19 +1972,19 @@ Comma separated list of base64 identities:</string>
<height>31</height>
</rect>
</property>
<layout class="QHBoxLayout" name="i2pControl_horizontalLayout_25">
<layout class="QHBoxLayout" name="dotnetControl_horizontalLayout_25">
<item>
<widget class="QLabel" name="i2pControl_label_24">
<widget class="QLabel" name="dotnetControl_label_24">
<property name="text">
<string>IP address to listen on:</string>
</property>
</widget>
</item>
<item>
<widget class="QLineEdit" name="i2pControlAddressLineEdit"/>
<widget class="QLineEdit" name="dotnetControlAddressLineEdit"/>
</item>
<item>
<spacer name="i2pControl_horizontalSpacer_19">
<spacer name="dotnetControl_horizontalSpacer_19">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
@ -1998,7 +1998,7 @@ Comma separated list of base64 identities:</string>
</item>
</layout>
</widget>
<widget class="QWidget" name="i2pControl_horizontalLayoutWidget_9">
<widget class="QWidget" name="dotnetControl_horizontalLayoutWidget_9">
<property name="geometry">
<rect>
<x>0</x>
@ -2007,16 +2007,16 @@ Comma separated list of base64 identities:</string>
<height>31</height>
</rect>
</property>
<layout class="QHBoxLayout" name="i2pControl_horizontalLayout_26">
<layout class="QHBoxLayout" name="dotnetControl_horizontalLayout_26">
<item>
<widget class="QLabel" name="i2pControl_label_25">
<widget class="QLabel" name="dotnetControl_label_25">
<property name="text">
<string>Port to listen on:</string>
</property>
</widget>
</item>
<item>
<widget class="QLineEdit" name="i2pControlPortLineEdit">
<widget class="QLineEdit" name="dotnetControlPortLineEdit">
<property name="maximumSize">
<size>
<width>80</width>
@ -2026,7 +2026,7 @@ Comma separated list of base64 identities:</string>
</widget>
</item>
<item>
<spacer name="i2pControl_horizontalSpacer_20">
<spacer name="dotnetControl_horizontalSpacer_20">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
@ -2058,7 +2058,7 @@ Comma separated list of base64 identities:</string>
</widget>
</item>
<item>
<widget class="QLineEdit" name="i2pControlPasswordLineEdit"/>
<widget class="QLineEdit" name="dotnetControlPasswordLineEdit"/>
</item>
<item>
<spacer name="horizontalSpacer_21">
@ -2093,10 +2093,10 @@ Comma separated list of base64 identities:</string>
</widget>
</item>
<item>
<widget class="QLineEdit" name="i2pControlCertFileLineEdit"/>
<widget class="QLineEdit" name="dotnetControlCertFileLineEdit"/>
</item>
<item>
<widget class="QPushButton" name="i2pControlCertFileBrowsePushButton">
<widget class="QPushButton" name="dotnetControlCertFileBrowsePushButton">
<property name="text">
<string>Browse…</string>
</property>
@ -2122,10 +2122,10 @@ Comma separated list of base64 identities:</string>
</widget>
</item>
<item>
<widget class="QLineEdit" name="i2pControlKeyFileLineEdit"/>
<widget class="QLineEdit" name="dotnetControlKeyFileLineEdit"/>
</item>
<item>
<widget class="QPushButton" name="i2pControlKeyFileBrowsePushButton">
<widget class="QPushButton" name="dotnetControlKeyFileBrowsePushButton">
<property name="text">
<string>Browse…</string>
</property>

View file

@ -1,11 +1,11 @@
IDI_ICON1 ICON DISCARDABLE "resources/icons/mask.ico"
#include <windows.h> // needed for VERSIONINFO
#include "../../libi2pd/version.h"
#include "../../libdotnet/version.h"
VS_VERSION_INFO VERSIONINFO
FILEVERSION I2PD_VERSION_MAJOR,I2PD_VERSION_MINOR,I2PD_VERSION_MICRO,I2PD_VERSION_PATCH
PRODUCTVERSION I2P_VERSION_MAJOR,I2P_VERSION_MINOR,I2P_VERSION_MICRO,I2P_VERSION_PATCH
FILEVERSION DOTNET_VERSION_MAJOR,DOTNET_VERSION_MINOR,DOTNET_VERSION_MICRO,DOTNET_VERSION_PATCH
PRODUCTVERSION DOTNET_VERSION_MAJOR,DOTNET_VERSION_MINOR,DOTNET_VERSION_MICRO,DOTNET_VERSION_PATCH
FILEOS VOS_NT_WINDOWS32
FILETYPE VFT_APP
BEGIN
@ -14,14 +14,14 @@ BEGIN
BLOCK "040904E4" // U.S. English - multilingual (hex)
BEGIN
VALUE "CompanyName", "PurpleI2P"
VALUE "FileDescription", "I2Pd Qt"
VALUE "FileVersion", I2PD_VERSION
VALUE "InternalName", "i2pd-qt"
VALUE "FileDescription", "DOTNET Qt"
VALUE "FileVersion", DOTNET_VERSION
VALUE "InternalName", "dotnet-qt"
VALUE "LegalCopyright", "Copyright (C) 2013-2018, The PurpleI2P Project"
VALUE "LegalTrademarks1", "Distributed under the BSD 3-Clause software license, see the accompanying file COPYING or https://opensource.org/licenses/BSD-3-Clause."
VALUE "OriginalFilename", "i2pd_qt.exe"
VALUE "ProductName", "i2pd-qt"
VALUE "ProductVersion", I2P_VERSION
VALUE "OriginalFilename", "dotnet_qt.exe"
VALUE "ProductName", "dotnet-qt"
VALUE "ProductVersion", DOTNET_VERSION
END
END

View file

@ -2,68 +2,68 @@ QT += core gui
greaterThan(QT_MAJOR_VERSION, 4): QT += widgets
TARGET = i2pd_qt
TARGET = dotnet_qt
TEMPLATE = app
QMAKE_CXXFLAGS *= -std=c++11 -ggdb
DEFINES += USE_UPNP
SOURCES += DaemonQT.cpp mainwindow.cpp \
../../libi2pd/api.cpp \
../../libi2pd/Base.cpp \
../../libi2pd/BloomFilter.cpp \
../../libi2pd/Config.cpp \
../../libi2pd/CPU.cpp \
../../libi2pd/Crypto.cpp \
../../libi2pd/CryptoKey.cpp \
../../libi2pd/Datagram.cpp \
../../libi2pd/Destination.cpp \
../../libi2pd/Event.cpp \
../../libi2pd/Family.cpp \
../../libi2pd/FS.cpp \
../../libi2pd/Garlic.cpp \
../../libi2pd/Gost.cpp \
../../libi2pd/Gzip.cpp \
../../libi2pd/HTTP.cpp \
../../libi2pd/I2NPProtocol.cpp \
../../libi2pd/I2PEndian.cpp \
../../libi2pd/Identity.cpp \
../../libi2pd/LeaseSet.cpp \
../../libi2pd/Log.cpp \
../../libi2pd/NetDb.cpp \
../../libi2pd/NetDbRequests.cpp \
../../libi2pd/NTCPSession.cpp \
../../libi2pd/Profiling.cpp \
../../libi2pd/Reseed.cpp \
../../libi2pd/RouterContext.cpp \
../../libi2pd/RouterInfo.cpp \
../../libi2pd/Signature.cpp \
../../libi2pd/SSU.cpp \
../../libi2pd/SSUData.cpp \
../../libi2pd/SSUSession.cpp \
../../libi2pd/Streaming.cpp \
../../libi2pd/Timestamp.cpp \
../../libi2pd/TransitTunnel.cpp \
../../libi2pd/Transports.cpp \
../../libi2pd/Tunnel.cpp \
../../libi2pd/TunnelEndpoint.cpp \
../../libi2pd/TunnelGateway.cpp \
../../libi2pd/TunnelPool.cpp \
../../libi2pd/util.cpp \
../../libi2pd/Ed25519.cpp \
../../libi2pd/Chacha20.cpp \
../../libi2pd/Poly1305.cpp \
../../libi2pd_client/AddressBook.cpp \
../../libi2pd_client/BOB.cpp \
../../libi2pd_client/ClientContext.cpp \
../../libi2pd_client/HTTPProxy.cpp \
../../libi2pd_client/I2CP.cpp \
../../libi2pd_client/I2PService.cpp \
../../libi2pd_client/I2PTunnel.cpp \
../../libi2pd_client/MatchedDestination.cpp \
../../libi2pd_client/SAM.cpp \
../../libi2pd_client/SOCKS.cpp \
../../libi2pd_client/Websocket.cpp \
../../libi2pd_client/WebSocks.cpp \
../../libdotnet/api.cpp \
../../libdotnet/Base.cpp \
../../libdotnet/BloomFilter.cpp \
../../libdotnet/Config.cpp \
../../libdotnet/CPU.cpp \
../../libdotnet/Crypto.cpp \
../../libdotnet/CryptoKey.cpp \
../../libdotnet/Datagram.cpp \
../../libdotnet/Destination.cpp \
../../libdotnet/Event.cpp \
../../libdotnet/Family.cpp \
../../libdotnet/FS.cpp \
../../libdotnet/Garlic.cpp \
../../libdotnet/Gost.cpp \
../../libdotnet/Gzip.cpp \
../../libdotnet/HTTP.cpp \
../../libdotnet/DNNPProtocol.cpp \
../../libdotnet/DotNetEndian.cpp \
../../libdotnet/Identity.cpp \
../../libdotnet/LeaseSet.cpp \
../../libdotnet/Log.cpp \
../../libdotnet/NetDb.cpp \
../../libdotnet/NetDbRequests.cpp \
../../libdotnet/NTCPSession.cpp \
../../libdotnet/Profiling.cpp \
../../libdotnet/Reseed.cpp \
../../libdotnet/RouterContext.cpp \
../../libdotnet/RouterInfo.cpp \
../../libdotnet/Signature.cpp \
../../libdotnet/SSU.cpp \
../../libdotnet/SSUData.cpp \
../../libdotnet/SSUSession.cpp \
../../libdotnet/Streaming.cpp \
../../libdotnet/Timestamp.cpp \
../../libdotnet/TransitTunnel.cpp \
../../libdotnet/Transports.cpp \
../../libdotnet/Tunnel.cpp \
../../libdotnet/TunnelEndpoint.cpp \
../../libdotnet/TunnelGateway.cpp \
../../libdotnet/TunnelPool.cpp \
../../libdotnet/util.cpp \
../../libdotnet/Ed25519.cpp \
../../libdotnet/Chacha20.cpp \
../../libdotnet/Poly1305.cpp \
../../libdotnet_client/AddressBook.cpp \
../../libdotnet_client/BOB.cpp \
../../libdotnet_client/ClientContext.cpp \
../../libdotnet_client/HTTPProxy.cpp \
../../libdotnet_client/DNCP.cpp \
../../libdotnet_client/DotNetService.cpp \
../../libdotnet_client/DotNetTunnel.cpp \
../../libdotnet_client/MatchedDestination.cpp \
../../libdotnet_client/SAM.cpp \
../../libdotnet_client/SOCKS.cpp \
../../libdotnet_client/Websocket.cpp \
../../libdotnet_client/WebSocks.cpp \
ClientTunnelPane.cpp \
MainWindowItems.cpp \
ServerTunnelPane.cpp \
@ -72,8 +72,8 @@ SOURCES += DaemonQT.cpp mainwindow.cpp \
TunnelPane.cpp \
../../daemon/Daemon.cpp \
../../daemon/HTTPServer.cpp \
../../daemon/i2pd.cpp \
../../daemon/I2PControl.cpp \
../../daemon/dotnet.cpp \
../../daemon/DotNetControl.cpp \
../../daemon/UnixDaemon.cpp \
../../daemon/UPnP.cpp \
textbrowsertweaked1.cpp \
@ -81,76 +81,76 @@ SOURCES += DaemonQT.cpp mainwindow.cpp \
widgetlock.cpp \
widgetlockregistry.cpp \
logviewermanager.cpp \
../../libi2pd/NTCP2.cpp
../../libdotnet/NTCP2.cpp
#qt creator does not handle this well
#SOURCES += $$files(../../libi2pd/*.cpp)
#SOURCES += $$files(../../libi2pd_client/*.cpp)
#SOURCES += $$files(../../libdotnet/*.cpp)
#SOURCES += $$files(../../libdotnet_client/*.cpp)
#SOURCES += $$files(../../daemon/*.cpp)
#SOURCES += $$files(./*.cpp)
SOURCES -= ../../daemon/UnixDaemon.cpp
HEADERS += DaemonQT.h mainwindow.h \
../../libi2pd/api.h \
../../libi2pd/Base.h \
../../libi2pd/BloomFilter.h \
../../libi2pd/Config.h \
../../libi2pd/Crypto.h \
../../libi2pd/CryptoKey.h \
../../libi2pd/Datagram.h \
../../libi2pd/Destination.h \
../../libi2pd/Event.h \
../../libi2pd/Family.h \
../../libi2pd/FS.h \
../../libi2pd/Garlic.h \
../../libi2pd/Gost.h \
../../libi2pd/Gzip.h \
../../libi2pd/HTTP.h \
../../libi2pd/I2NPProtocol.h \
../../libi2pd/I2PEndian.h \
../../libi2pd/Identity.h \
../../libi2pd/LeaseSet.h \
../../libi2pd/LittleBigEndian.h \
../../libi2pd/Log.h \
../../libi2pd/NetDb.hpp \
../../libi2pd/NetDbRequests.h \
../../libi2pd/NTCPSession.h \
../../libi2pd/Profiling.h \
../../libi2pd/Queue.h \
../../libi2pd/Reseed.h \
../../libi2pd/RouterContext.h \
../../libi2pd/RouterInfo.h \
../../libi2pd/Signature.h \
../../libi2pd/SSU.h \
../../libi2pd/SSUData.h \
../../libi2pd/SSUSession.h \
../../libi2pd/Streaming.h \
../../libi2pd/Tag.h \
../../libi2pd/Timestamp.h \
../../libi2pd/TransitTunnel.h \
../../libi2pd/Transports.h \
../../libi2pd/TransportSession.h \
../../libi2pd/Tunnel.h \
../../libi2pd/TunnelBase.h \
../../libi2pd/TunnelConfig.h \
../../libi2pd/TunnelEndpoint.h \
../../libi2pd/TunnelGateway.h \
../../libi2pd/TunnelPool.h \
../../libi2pd/util.h \
../../libi2pd/version.h \
../../libi2pd_client/AddressBook.h \
../../libi2pd_client/BOB.h \
../../libi2pd_client/ClientContext.h \
../../libi2pd_client/HTTPProxy.h \
../../libi2pd_client/I2CP.h \
../../libi2pd_client/I2PService.h \
../../libi2pd_client/I2PTunnel.h \
../../libi2pd_client/MatchedDestination.h \
../../libi2pd_client/SAM.h \
../../libi2pd_client/SOCKS.h \
../../libi2pd_client/Websocket.h \
../../libi2pd_client/WebSocks.h \
../../libdotnet/api.h \
../../libdotnet/Base.h \
../../libdotnet/BloomFilter.h \
../../libdotnet/Config.h \
../../libdotnet/Crypto.h \
../../libdotnet/CryptoKey.h \
../../libdotnet/Datagram.h \
../../libdotnet/Destination.h \
../../libdotnet/Event.h \
../../libdotnet/Family.h \
../../libdotnet/FS.h \
../../libdotnet/Garlic.h \
../../libdotnet/Gost.h \
../../libdotnet/Gzip.h \
../../libdotnet/HTTP.h \
../../libdotnet/DNNPProtocol.h \
../../libdotnet/DotNetEndian.h \
../../libdotnet/Identity.h \
../../libdotnet/LeaseSet.h \
../../libdotnet/LittleBigEndian.h \
../../libdotnet/Log.h \
../../libdotnet/NetDb.hpp \
../../libdotnet/NetDbRequests.h \
../../libdotnet/NTCPSession.h \
../../libdotnet/Profiling.h \
../../libdotnet/Queue.h \
../../libdotnet/Reseed.h \
../../libdotnet/RouterContext.h \
../../libdotnet/RouterInfo.h \
../../libdotnet/Signature.h \
../../libdotnet/SSU.h \
../../libdotnet/SSUData.h \
../../libdotnet/SSUSession.h \
../../libdotnet/Streaming.h \
../../libdotnet/Tag.h \
../../libdotnet/Timestamp.h \
../../libdotnet/TransitTunnel.h \
../../libdotnet/Transports.h \
../../libdotnet/TransportSession.h \
../../libdotnet/Tunnel.h \
../../libdotnet/TunnelBase.h \
../../libdotnet/TunnelConfig.h \
../../libdotnet/TunnelEndpoint.h \
../../libdotnet/TunnelGateway.h \
../../libdotnet/TunnelPool.h \
../../libdotnet/util.h \
../../libdotnet/version.h \
../../libdotnet_client/AddressBook.h \
../../libdotnet_client/BOB.h \
../../libdotnet_client/ClientContext.h \
../../libdotnet_client/HTTPProxy.h \
../../libdotnet_client/DNCP.h \
../../libdotnet_client/DotNetService.h \
../../libdotnet_client/DotNetTunnel.h \
../../libdotnet_client/MatchedDestination.h \
../../libdotnet_client/SAM.h \
../../libdotnet_client/SOCKS.h \
../../libdotnet_client/Websocket.h \
../../libdotnet_client/WebSocks.h \
ClientTunnelPane.h \
MainWindowItems.h \
ServerTunnelPane.h \
@ -160,18 +160,18 @@ HEADERS += DaemonQT.h mainwindow.h \
TunnelsPageUpdateListener.h \
../../daemon/Daemon.h \
../../daemon/HTTPServer.h \
../../daemon/I2PControl.h \
../../daemon/DotNetControl.h \
../../daemon/UPnP.h \
textbrowsertweaked1.h \
pagewithbackbutton.h \
widgetlock.h \
widgetlockregistry.h \
i2pd.rc \
i2pd.rc \
dotnet.rc \
dotnet.rc \
logviewermanager.h
INCLUDEPATH += ../../libi2pd
INCLUDEPATH += ../../libi2pd_client
INCLUDEPATH += ../../libdotnet
INCLUDEPATH += ../../libdotnet_client
INCLUDEPATH += ../../daemon
INCLUDEPATH += .
@ -208,7 +208,7 @@ linux:!android {
windows {
message("Using Windows settings")
RC_FILE = i2pd.rc
RC_FILE = dotnet.rc
DEFINES += BOOST_USE_WINDOWS_H WINDOWS _WINDOWS WIN32_LEAN_AND_MEAN MINIUPNP_STATICLIB
DEFINES -= UNICODE _UNICODE
BOOST_SUFFIX = -mt
@ -237,8 +237,8 @@ windows {
!android:!symbian:!maemo5:!simulator {
message("Build with a system tray icon")
# see also http://doc.qt.io/qt-4.8/qt-desktop-systray-systray-pro.html for example on wince*
#sources.files = $$SOURCES $$HEADERS $$RESOURCES $$FORMS i2pd_qt.pro resources images
RESOURCES = i2pd.qrc
#sources.files = $$SOURCES $$HEADERS $$RESOURCES $$FORMS dotnet_qt.pro resources images
RESOURCES = dotnet.qrc
QT += xml
#INSTALLS += sources
}

View file

@ -9,10 +9,10 @@ LogViewerManager::LogViewerManager(std::shared_ptr<std::iostream> logStream_,
controllerForBgThread(nullptr)
{
assert(logTextEdit!=nullptr);
controllerForBgThread=new i2pd::qt::logviewer::Controller(*this);
controllerForBgThread=new dotnet::qt::logviewer::Controller(*this);
}
namespace i2pd {
namespace dotnet {
namespace qt {
namespace logviewer {

View file

@ -17,7 +17,7 @@
class LogViewerManager;
namespace i2pd {
namespace dotnet {
namespace qt {
namespace logviewer {
@ -73,7 +73,7 @@ class LogViewerManager : public QObject
private:
std::shared_ptr<std::iostream> logStream;
QPlainTextEdit* logTextEdit;
i2pd::qt::logviewer::Controller* controllerForBgThread;
dotnet::qt::logviewer::Controller* controllerForBgThread;
public:
//also starts a bg thread (QTimer) polling logStream->readsome(buf, n)
explicit LogViewerManager(std::shared_ptr<std::iostream> logStream_,
@ -81,7 +81,7 @@ public:
QObject *parent);
//also deallocs the bg thread (QTimer)
virtual ~LogViewerManager(){}
const i2pd::qt::logviewer::Controller& getControllerForBgThread() {
const dotnet::qt::logviewer::Controller& getControllerForBgThread() {
assert(controllerForBgThread!=nullptr);
return *controllerForBgThread;
}

View file

@ -46,7 +46,7 @@ MainWindow::MainWindow(std::shared_ptr<std::iostream> logStream_, QWidget *paren
,uiSettings(new Ui::GeneralSettingsContentsForm)
,routerCommandsParent(new QWidget(this))
,widgetlocks()
,i2pController(nullptr)
,dotnetController(nullptr)
,configItems()
,datadir()
,confpath()
@ -66,7 +66,7 @@ MainWindow::MainWindow(std::shared_ptr<std::iostream> logStream_, QWidget *paren
ui->verticalLayout->setGeometry(QRect(0,0,171,ui->verticalLayout->geometry().height()));
//ui->statusButtonsPane->adjustSize();
//ui->centralWidget->adjustSize();
setWindowTitle(QApplication::translate("AppTitle","I2PD"));
setWindowTitle(QApplication::translate("AppTitle","DOTNET"));
//TODO handle resizes and change the below into resize() call
setFixedHeight(550);
@ -126,7 +126,7 @@ MainWindow::MainWindow(std::shared_ptr<std::iostream> logStream_, QWidget *paren
QObject::connect(statusButtonsUI->tunnelsPushButton, SIGNAL(released()), this, SLOT(showStatus_tunnels_Page()));
QObject::connect(statusButtonsUI->transitTunnelsPushButton, SIGNAL(released()), this, SLOT(showStatus_transit_tunnels_Page()));
QObject::connect(statusButtonsUI->transportsPushButton, SIGNAL(released()), this, SLOT(showStatus_transports_Page()));
QObject::connect(statusButtonsUI->i2pTunnelsPushButton, SIGNAL(released()), this, SLOT(showStatus_i2p_tunnels_Page()));
QObject::connect(statusButtonsUI->dotnetTunnelsPushButton, SIGNAL(released()), this, SLOT(showStatus_dotnet_tunnels_Page()));
QObject::connect(statusButtonsUI->samSessionsPushButton, SIGNAL(released()), this, SLOT(showStatus_sam_sessions_Page()));
QObject::connect(textBrowser, SIGNAL(mouseReleased()), this, SLOT(statusHtmlPageMouseReleased()));
@ -147,7 +147,7 @@ MainWindow::MainWindow(std::shared_ptr<std::iostream> logStream_, QWidget *paren
QObject::connect(ui->fastQuitPushButton, SIGNAL(released()), this, SLOT(handleQuitButton()));
QObject::connect(ui->gracefulQuitPushButton, SIGNAL(released()), this, SLOT(handleGracefulQuitButton()));
QObject::connect(ui->doRestartI2PDPushButton, SIGNAL(released()), this, SLOT(handleDoRestartButton()));
QObject::connect(ui->doRestartDOTNETPushButton, SIGNAL(released()), this, SLOT(handleDoRestartButton()));
# define OPTION(section,option,defaultValueGetter) ConfigOption(QString(section),QString(option))
@ -192,7 +192,7 @@ MainWindow::MainWindow(std::shared_ptr<std::iostream> logStream_, QWidget *paren
initIPAddressBox( OPTION("http","address",[]{return "";}), uiSettings->webconsoleAddrLineEdit, tr("HTTP webconsole -> IP address"));
initTCPPortBox( OPTION("http","port",[]{return "7070";}), uiSettings->webconsolePortLineEdit, tr("HTTP webconsole -> Port"));
initCheckBox( OPTION("http","auth",[]{return "";}), uiSettings->webconsoleBasicAuthCheckBox);
initStringBox( OPTION("http","user",[]{return "i2pd";}), uiSettings->webconsoleUserNameLineEditBasicAuth);
initStringBox( OPTION("http","user",[]{return "dotnet";}), uiSettings->webconsoleUserNameLineEditBasicAuth);
initStringBox( OPTION("http","pass",[]{return "";}), uiSettings->webconsolePasswordLineEditBasicAuth);
initCheckBox( OPTION("httpproxy","enabled",[]{return "";}), uiSettings->httpProxyEnabledCheckBox);
@ -226,19 +226,19 @@ MainWindow::MainWindow(std::shared_ptr<std::iostream> logStream_, QWidget *paren
initIPAddressBox( OPTION("bob","address",[]{return "";}), uiSettings->bobAddressLineEdit, tr("BOB -> IP address"));
initTCPPortBox( OPTION("bob","port",[]{return "2827";}), uiSettings->bobPortLineEdit, tr("BOB -> Port"));
initCheckBox( OPTION("i2cp","enabled",[]{return "false";}), uiSettings->i2cpEnabledCheckBox);
initIPAddressBox( OPTION("i2cp","address",[]{return "";}), uiSettings->i2cpAddressLineEdit, tr("I2CP -> IP address"));
initTCPPortBox( OPTION("i2cp","port",[]{return "7654";}), uiSettings->i2cpPortLineEdit, tr("I2CP -> Port"));
initCheckBox( OPTION("dncp","enabled",[]{return "false";}), uiSettings->dncpEnabledCheckBox);
initIPAddressBox( OPTION("dncp","address",[]{return "";}), uiSettings->dncpAddressLineEdit, tr("DNCP -> IP address"));
initTCPPortBox( OPTION("dncp","port",[]{return "7654";}), uiSettings->dncpPortLineEdit, tr("DNCP -> Port"));
initCheckBox( OPTION("i2pcontrol","enabled",[]{return "false";}), uiSettings->i2pControlEnabledCheckBox);
initIPAddressBox( OPTION("i2pcontrol","address",[]{return "";}), uiSettings->i2pControlAddressLineEdit, tr("I2PControl -> IP address"));
initTCPPortBox( OPTION("i2pcontrol","port",[]{return "7650";}), uiSettings->i2pControlPortLineEdit, tr("I2PControl -> Port"));
initStringBox( OPTION("i2pcontrol","password",[]{return "";}), uiSettings->i2pControlPasswordLineEdit);
initFileChooser( OPTION("i2pcontrol","cert",[]{return "i2pcontrol.crt.pem";}), uiSettings->i2pControlCertFileLineEdit, uiSettings->i2pControlCertFileBrowsePushButton);
initFileChooser( OPTION("i2pcontrol","key",[]{return "i2pcontrol.key.pem";}), uiSettings->i2pControlKeyFileLineEdit, uiSettings->i2pControlKeyFileBrowsePushButton);
initCheckBox( OPTION("dotnetcontrol","enabled",[]{return "false";}), uiSettings->dotnetControlEnabledCheckBox);
initIPAddressBox( OPTION("dotnetcontrol","address",[]{return "";}), uiSettings->dotnetControlAddressLineEdit, tr("DotNetControl -> IP address"));
initTCPPortBox( OPTION("dotnetcontrol","port",[]{return "7650";}), uiSettings->dotnetControlPortLineEdit, tr("DotNetControl -> Port"));
initStringBox( OPTION("dotnetcontrol","password",[]{return "";}), uiSettings->dotnetControlPasswordLineEdit);
initFileChooser( OPTION("dotnetcontrol","cert",[]{return "dotnetcontrol.crt.pem";}), uiSettings->dotnetControlCertFileLineEdit, uiSettings->dotnetControlCertFileBrowsePushButton);
initFileChooser( OPTION("dotnetcontrol","key",[]{return "dotnetcontrol.key.pem";}), uiSettings->dotnetControlKeyFileLineEdit, uiSettings->dotnetControlKeyFileBrowsePushButton);
initCheckBox( OPTION("upnp","enabled",[]{return "true";}), uiSettings->enableUPnPCheckBox);
initStringBox( OPTION("upnp","name",[]{return "I2Pd";}), uiSettings->upnpNameLineEdit);
initStringBox( OPTION("upnp","name",[]{return "DOTNET";}), uiSettings->upnpNameLineEdit);
initCheckBox( OPTION("precomputation","elgamal",[]{return "false";}), uiSettings->useElGamalPrecomputedTablesCheckBox);
@ -319,7 +319,7 @@ void MainWindow::logDestinationComboBoxValueChanged(const QString & text) {
void MainWindow::updateRouterCommandsButtons() {
bool acceptsTunnels = i2p::context.AcceptsTunnels ();
bool acceptsTunnels = dotnet::context.AcceptsTunnels ();
routerCommandsUI->declineTransitTunnelsPushButton->setEnabled(acceptsTunnels);
routerCommandsUI->acceptTransitTunnelsPushButton->setEnabled(!acceptsTunnels);
}
@ -360,16 +360,16 @@ QString MainWindow::getStatusPageHtml(bool showHiddenInfo) {
switch (statusPage) {
case main_page:
i2p::http::ShowStatus(s, showHiddenInfo, i2p::http::OutputFormatEnum::forQtUi);
dotnet::http::ShowStatus(s, showHiddenInfo, dotnet::http::OutputFormatEnum::forQtUi);
break;
case commands: break;
case local_destinations: i2p::http::ShowLocalDestinations(s);break;
case leasesets: i2p::http::ShowLeasesSets(s); break;
case tunnels: i2p::http::ShowTunnels(s); break;
case transit_tunnels: i2p::http::ShowTransitTunnels(s); break;
case transports: i2p::http::ShowTransports(s); break;
case i2p_tunnels: i2p::http::ShowI2PTunnels(s); break;
case sam_sessions: i2p::http::ShowSAMSessions(s); break;
case local_destinations: dotnet::http::ShowLocalDestinations(s);break;
case leasesets: dotnet::http::ShowLeasesSets(s); break;
case tunnels: dotnet::http::ShowTunnels(s); break;
case transit_tunnels: dotnet::http::ShowTransitTunnels(s); break;
case transports: dotnet::http::ShowTransports(s); break;
case dotnet_tunnels: dotnet::http::ShowDotNetTunnels(s); break;
case sam_sessions: dotnet::http::ShowSAMSessions(s); break;
default: assert(false); break;
}
@ -384,7 +384,7 @@ void MainWindow::showStatus_leasesets_Page() { showStatusPage(StatusPage::leases
void MainWindow::showStatus_tunnels_Page() { showStatusPage(StatusPage::tunnels); }
void MainWindow::showStatus_transit_tunnels_Page() { showStatusPage(StatusPage::transit_tunnels); }
void MainWindow::showStatus_transports_Page() { showStatusPage(StatusPage::transports); }
void MainWindow::showStatus_i2p_tunnels_Page() { showStatusPage(StatusPage::i2p_tunnels); }
void MainWindow::showStatus_dotnet_tunnels_Page() { showStatusPage(StatusPage::dotnet_tunnels); }
void MainWindow::showStatus_sam_sessions_Page() { showStatusPage(StatusPage::sam_sessions); }
@ -465,7 +465,7 @@ void MainWindow::setIcon() {
trayIcon->setIcon(icon);
setWindowIcon(icon);
trayIcon->setToolTip(QApplication::translate("MainWindow", "i2pd", 0));
trayIcon->setToolTip(QApplication::translate("MainWindow", "dotnet", 0));
}
void MainWindow::iconActivated(QSystemTrayIcon::ActivationReason reason) {
@ -484,10 +484,10 @@ void MainWindow::iconActivated(QSystemTrayIcon::ActivationReason reason) {
void MainWindow::closeEvent(QCloseEvent *event) {
if(quitting){ QMainWindow::closeEvent(event); return; }
if (trayIcon->isVisible()) {
QMessageBox::information(this, tr("i2pd"),
QMessageBox::information(this, tr("dotnet"),
tr("The program will keep running in the "
"system tray. To gracefully terminate the program, "
"choose <b>Graceful Quit</b> at the main i2pd window."));
"choose <b>Graceful Quit</b> at the main dotnet window."));
hide();
event->ignore();
}
@ -509,14 +509,14 @@ void MainWindow::handleGracefulQuitButton() {
ui->gracefulQuitPushButton->setEnabled(false);
ui->gracefulQuitPushButton->adjustSize();
ui->quitPage->adjustSize();
i2p::context.SetAcceptsTunnels (false); // stop accpting tunnels
dotnet::context.SetAcceptsTunnels (false); // stop accpting tunnels
QTimer::singleShot(10*60*1000//millis
, this, SLOT(handleGracefulQuitTimerEvent()));
}
void MainWindow::handleDoRestartButton() {
qDebug()<<"Do Restart pressed.";
emit i2pController->restartDaemon();
emit dotnetController->restartDaemon();
}
@ -597,37 +597,37 @@ NonGUIOptionItem* MainWindow::initNonGUIOption(ConfigOption option) {
void MainWindow::loadAllConfigs(){
//BORROWED FROM ??? //TODO move this code into single location
std::string config; i2p::config::GetOption("conf", config);
std::string datadir; i2p::config::GetOption("datadir", datadir);
std::string config; dotnet::config::GetOption("conf", config);
std::string datadir; dotnet::config::GetOption("datadir", datadir);
bool service = false;
#ifndef _WIN32
i2p::config::GetOption("service", service);
dotnet::config::GetOption("service", service);
#endif
i2p::fs::DetectDataDir(datadir, service);
i2p::fs::Init();
dotnet::fs::DetectDataDir(datadir, service);
dotnet::fs::Init();
datadir = i2p::fs::GetDataDir();
datadir = dotnet::fs::GetDataDir();
// TODO: drop old name detection in v2.8.0
if (config == "")
{
config = i2p::fs::DataDirPath("i2p.conf");
if (i2p::fs::Exists (config)) {
LogPrint(eLogWarning, "Daemon: please rename i2p.conf to i2pd.conf here: ", config);
config = dotnet::fs::DataDirPath("dotnet.conf");
if (dotnet::fs::Exists (config)) {
LogPrint(eLogWarning, "Daemon: please rename dotnet.conf to dotnet.conf here: ", config);
} else {
config = i2p::fs::DataDirPath("i2pd.conf");
/*if (!i2p::fs::Exists (config)) {}*/
config = dotnet::fs::DataDirPath("dotnet.conf");
/*if (!dotnet::fs::Exists (config)) {}*/
}
}
//BORROWED FROM ClientContext.cpp //TODO move this code into single location
std::string tunConf; i2p::config::GetOption("tunconf", tunConf);
std::string tunConf; dotnet::config::GetOption("tunconf", tunConf);
if (tunConf == "") {
// TODO: cleanup this in 2.8.0
tunConf = i2p::fs::DataDirPath ("tunnels.cfg");
if (i2p::fs::Exists(tunConf)) {
tunConf = dotnet::fs::DataDirPath ("tunnels.cfg");
if (dotnet::fs::Exists(tunConf)) {
LogPrint(eLogWarning, "FS: please rename tunnels.cfg -> tunnels.conf here: ", tunConf);
} else {
tunConf = i2p::fs::DataDirPath ("tunnels.conf");
tunConf = dotnet::fs::DataDirPath ("tunnels.conf");
}
}
@ -803,7 +803,7 @@ void MainWindow::SaveTunnelsConfig() {
TunnelConfig* tunconf = it->second;
tunconf->saveHeaderToStringStream(out);
tunconf->saveToStringStream(out);
tunconf->saveI2CPParametersToStringStream(out);
tunconf->saveDNCPParametersToStringStream(out);
}
using namespace std;
@ -816,7 +816,7 @@ void MainWindow::SaveTunnelsConfig() {
outfile << out.str().c_str();
outfile.close();
i2p::client::context.ReloadConfig();
dotnet::client::context.ReloadConfig();
}
@ -842,21 +842,21 @@ void MainWindow::addClientTunnelPushButtonReleased() {
CreateDefaultClientTunnel();
}
void MainWindow::setI2PController(i2p::qt::Controller* controller_) {
this->i2pController = controller_;
void MainWindow::setDotNetController(dotnet::qt::Controller* controller_) {
this->dotnetController = controller_;
}
void MainWindow::runPeerTest() {
i2p::transport::transports.PeerTest();
dotnet::transport::transports.PeerTest();
}
void MainWindow::enableTransit() {
i2p::context.SetAcceptsTunnels(true);
dotnet::context.SetAcceptsTunnels(true);
updateRouterCommandsButtons();
}
void MainWindow::disableTransit() {
i2p::context.SetAcceptsTunnels(false);
dotnet::context.SetAcceptsTunnels(false);
updateRouterCommandsButtons();
}
@ -875,7 +875,7 @@ void MainWindow::anchorClickedHandler(const QUrl & link) {
pageWithBackButton->show();
textBrowser->hide();
std::stringstream s;
i2p::http::ShowLocalDestination(s,str.toStdString());
dotnet::http::ShowLocalDestination(s,str.toStdString());
childTextBrowser->setHtml(QString::fromStdString(s.str()));
}
}

View file

@ -111,7 +111,7 @@ public:
optName+=option.option.toStdString();
//qDebug() << "loadFromConfigOption[" << optName.c_str() << "]";
boost::any programOption;
i2p::config::GetOptionAsAny(optName, programOption);
dotnet::config::GetOptionAsAny(optName, programOption);
optionValue=programOption.empty()?boost::any(std::string(""))
:boost::any_cast<boost::program_options::variable_value>(programOption).value();
}
@ -365,11 +365,11 @@ namespace Ui {
class GeneralSettingsContentsForm;
}
using namespace i2p::client;
using namespace dotnet::client;
class TunnelPane;
using namespace i2p::qt;
using namespace dotnet::qt;
class Controller;
@ -381,7 +381,7 @@ public:
explicit MainWindow(std::shared_ptr<std::iostream> logStream_, QWidget *parent=nullptr);
~MainWindow();
void setI2PController(i2p::qt::Controller* controller_);
void setDotNetController(dotnet::qt::Controller* controller_);
void highlightWrongInput(QString warningText, QWidget* widgetToFocus);
@ -393,7 +393,7 @@ public:
private:
enum StatusPage {main_page, commands, local_destinations, leasesets, tunnels, transit_tunnels,
transports, i2p_tunnels, sam_sessions};
transports, dotnet_tunnels, sam_sessions};
private slots:
void updated();
@ -422,7 +422,7 @@ public slots:
void showStatus_tunnels_Page();
void showStatus_transit_tunnels_Page();
void showStatus_transports_Page();
void showStatus_i2p_tunnels_Page();
void showStatus_dotnet_tunnels_Page();
void showStatus_sam_sessions_Page();
void showLogViewerPage();
@ -465,7 +465,7 @@ private:
widgetlockregistry widgetlocks;
i2p::qt::Controller* i2pController;
dotnet::qt::Controller* dotnetController;
protected:
@ -532,30 +532,30 @@ private:
void deleteTunnelForms();
template<typename Section, typename Type>
std::string GetI2CPOption (const Section& section, const std::string& name, const Type& value) const
std::string GetDNCPOption (const Section& section, const std::string& name, const Type& value) const
{
return section.second.get (boost::property_tree::ptree::path_type (name, '/'), std::to_string (value));
}
template<typename Section>
void ReadI2CPOptions (const Section& section, std::map<std::string, std::string>& options, I2CPParameters& param
void ReadDNCPOptions (const Section& section, std::map<std::string, std::string>& options, DNCPParameters& param
/*TODO fill param*/) const
{
std::string _INBOUND_TUNNEL_LENGTH = options[I2CP_PARAM_INBOUND_TUNNEL_LENGTH] = GetI2CPOption (section, I2CP_PARAM_INBOUND_TUNNEL_LENGTH, DEFAULT_INBOUND_TUNNEL_LENGTH);
std::string _INBOUND_TUNNEL_LENGTH = options[DNCP_PARAM_INBOUND_TUNNEL_LENGTH] = GetDNCPOption (section, DNCP_PARAM_INBOUND_TUNNEL_LENGTH, DEFAULT_INBOUND_TUNNEL_LENGTH);
param.setInbound_length(QString(_INBOUND_TUNNEL_LENGTH.c_str()));
std::string _OUTBOUND_TUNNEL_LENGTH = options[I2CP_PARAM_OUTBOUND_TUNNEL_LENGTH] = GetI2CPOption (section, I2CP_PARAM_OUTBOUND_TUNNEL_LENGTH, DEFAULT_OUTBOUND_TUNNEL_LENGTH);
std::string _OUTBOUND_TUNNEL_LENGTH = options[DNCP_PARAM_OUTBOUND_TUNNEL_LENGTH] = GetDNCPOption (section, DNCP_PARAM_OUTBOUND_TUNNEL_LENGTH, DEFAULT_OUTBOUND_TUNNEL_LENGTH);
param.setOutbound_length(QString(_OUTBOUND_TUNNEL_LENGTH.c_str()));
std::string _INBOUND_TUNNELS_QUANTITY = options[I2CP_PARAM_INBOUND_TUNNELS_QUANTITY] = GetI2CPOption (section, I2CP_PARAM_INBOUND_TUNNELS_QUANTITY, DEFAULT_INBOUND_TUNNELS_QUANTITY);
std::string _INBOUND_TUNNELS_QUANTITY = options[DNCP_PARAM_INBOUND_TUNNELS_QUANTITY] = GetDNCPOption (section, DNCP_PARAM_INBOUND_TUNNELS_QUANTITY, DEFAULT_INBOUND_TUNNELS_QUANTITY);
param.setInbound_quantity( QString(_INBOUND_TUNNELS_QUANTITY.c_str()));
std::string _OUTBOUND_TUNNELS_QUANTITY = options[I2CP_PARAM_OUTBOUND_TUNNELS_QUANTITY] = GetI2CPOption (section, I2CP_PARAM_OUTBOUND_TUNNELS_QUANTITY, DEFAULT_OUTBOUND_TUNNELS_QUANTITY);
std::string _OUTBOUND_TUNNELS_QUANTITY = options[DNCP_PARAM_OUTBOUND_TUNNELS_QUANTITY] = GetDNCPOption (section, DNCP_PARAM_OUTBOUND_TUNNELS_QUANTITY, DEFAULT_OUTBOUND_TUNNELS_QUANTITY);
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);
std::string _TAGS_TO_SEND = options[DNCP_PARAM_TAGS_TO_SEND] = GetDNCPOption (section, DNCP_PARAM_TAGS_TO_SEND, DEFAULT_TAGS_TO_SEND);
param.setCrypto_tagsToSend(QString(_TAGS_TO_SEND.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
options[DNCP_PARAM_MIN_TUNNEL_LATENCY] = GetDNCPOption(section, DNCP_PARAM_MIN_TUNNEL_LATENCY, DEFAULT_MIN_TUNNEL_LATENCY);//TODO include into param
options[DNCP_PARAM_MAX_TUNNEL_LATENCY] = GetDNCPOption(section, DNCP_PARAM_MAX_TUNNEL_LATENCY, DEFAULT_MAX_TUNNEL_LATENCY);//TODO include into param
}
void CreateDefaultI2CPOptions (I2CPParameters& param
void CreateDefaultDNCPOptions (DNCPParameters& param
/*TODO fill param*/) const
{
const int _INBOUND_TUNNEL_LENGTH = DEFAULT_INBOUND_TUNNEL_LENGTH;
@ -595,18 +595,18 @@ private:
void CreateDefaultClientTunnel() {//TODO dedup default values with ReadTunnelsConfig() and with ClientContext.cpp::ReadTunnels ()
std::string name=GenerateNewTunnelName();
std::string type = I2P_TUNNELS_SECTION_TYPE_CLIENT;
std::string type = DOTNET_TUNNELS_SECTION_TYPE_CLIENT;
std::string dest = "127.0.0.1";
int port = 0;
std::string keys = "";
std::string address = "127.0.0.1";
int destinationPort = 0;
i2p::data::SigningKeyType sigType = i2p::data::SIGNING_KEY_TYPE_ECDSA_SHA256_P256;
// I2CP
I2CPParameters i2cpParameters;
CreateDefaultI2CPOptions (i2cpParameters);
dotnet::data::SigningKeyType sigType = dotnet::data::SIGNING_KEY_TYPE_ECDSA_SHA256_P256;
// DNCP
DNCPParameters dncpParameters;
CreateDefaultDNCPOptions (dncpParameters);
tunnelConfigs[name]=new ClientTunnelConfig(name, QString(type.c_str()), i2cpParameters,
tunnelConfigs[name]=new ClientTunnelConfig(name, QString(type.c_str()), dncpParameters,
dest,
port,
keys,
@ -620,7 +620,7 @@ private:
void CreateDefaultServerTunnel() {//TODO dedup default values with ReadTunnelsConfig() and with ClientContext.cpp::ReadTunnels ()
std::string name=GenerateNewTunnelName();
std::string type=I2P_TUNNELS_SECTION_TYPE_SERVER;
std::string type=DOTNET_TUNNELS_SECTION_TYPE_SERVER;
std::string host = "127.0.0.1";
int port = 0;
std::string keys = "";
@ -629,15 +629,15 @@ private:
std::string hostOverride = "";
std::string webircpass = "";
bool gzip = true;
i2p::data::SigningKeyType sigType = i2p::data::SIGNING_KEY_TYPE_ECDSA_SHA256_P256;
dotnet::data::SigningKeyType sigType = dotnet::data::SIGNING_KEY_TYPE_ECDSA_SHA256_P256;
std::string address = "127.0.0.1";
bool isUniqueLocal = true;
// I2CP
I2CPParameters i2cpParameters;
CreateDefaultI2CPOptions (i2cpParameters);
// DNCP
DNCPParameters dncpParameters;
CreateDefaultDNCPOptions (dncpParameters);
tunnelConfigs[name]=new ServerTunnelConfig(name, QString(type.c_str()), i2cpParameters,
tunnelConfigs[name]=new ServerTunnelConfig(name, QString(type.c_str()), dncpParameters,
host,
port,
keys,
@ -661,11 +661,11 @@ private:
std::string tunConf=tunconfpath.toStdString();
if (tunConf == "") {
// TODO: cleanup this in 2.8.0
tunConf = i2p::fs::DataDirPath ("tunnels.cfg");
if (i2p::fs::Exists(tunConf)) {
tunConf = dotnet::fs::DataDirPath ("tunnels.cfg");
if (dotnet::fs::Exists(tunConf)) {
LogPrint(eLogWarning, "FS: please rename tunnels.cfg -> tunnels.conf here: ", tunConf);
} else {
tunConf = i2p::fs::DataDirPath ("tunnels.conf");
tunConf = dotnet::fs::DataDirPath ("tunnels.conf");
}
}
LogPrint(eLogDebug, "tunnels config file: ", tunConf);
@ -684,33 +684,33 @@ private:
std::string name = section.first;
try
{
std::string type = section.second.get<std::string> (I2P_TUNNELS_SECTION_TYPE);
if (type == I2P_TUNNELS_SECTION_TYPE_CLIENT
|| type == I2P_TUNNELS_SECTION_TYPE_SOCKS
|| type == I2P_TUNNELS_SECTION_TYPE_WEBSOCKS
|| type == I2P_TUNNELS_SECTION_TYPE_HTTPPROXY
|| type == I2P_TUNNELS_SECTION_TYPE_UDPCLIENT)
std::string type = section.second.get<std::string> (DOTNET_TUNNELS_SECTION_TYPE);
if (type == DOTNET_TUNNELS_SECTION_TYPE_CLIENT
|| type == DOTNET_TUNNELS_SECTION_TYPE_SOCKS
|| type == DOTNET_TUNNELS_SECTION_TYPE_WEBSOCKS
|| type == DOTNET_TUNNELS_SECTION_TYPE_HTTPPROXY
|| type == DOTNET_TUNNELS_SECTION_TYPE_UDPCLIENT)
{
// mandatory params
std::string dest;
if (type == I2P_TUNNELS_SECTION_TYPE_CLIENT || type == I2P_TUNNELS_SECTION_TYPE_UDPCLIENT) {
dest = section.second.get<std::string> (I2P_CLIENT_TUNNEL_DESTINATION);
if (type == DOTNET_TUNNELS_SECTION_TYPE_CLIENT || type == DOTNET_TUNNELS_SECTION_TYPE_UDPCLIENT) {
dest = section.second.get<std::string> (DOTNET_CLIENT_TUNNEL_DESTINATION);
std::cout << "had read tunnel dest: " << dest << std::endl;
}
int port = section.second.get<int> (I2P_CLIENT_TUNNEL_PORT);
int port = section.second.get<int> (DOTNET_CLIENT_TUNNEL_PORT);
std::cout << "had read tunnel port: " << port << std::endl;
// optional params
std::string keys = section.second.get (I2P_CLIENT_TUNNEL_KEYS, "");
std::string address = section.second.get (I2P_CLIENT_TUNNEL_ADDRESS, "127.0.0.1");
int destinationPort = section.second.get<int>(I2P_CLIENT_TUNNEL_DESTINATION_PORT, 0);
std::string keys = section.second.get (DOTNET_CLIENT_TUNNEL_KEYS, "");
std::string address = section.second.get (DOTNET_CLIENT_TUNNEL_ADDRESS, "127.0.0.1");
int destinationPort = section.second.get<int>(DOTNET_CLIENT_TUNNEL_DESTINATION_PORT, 0);
std::cout << "had read tunnel destinationPort: " << destinationPort << std::endl;
i2p::data::SigningKeyType sigType = section.second.get (I2P_CLIENT_TUNNEL_SIGNATURE_TYPE, i2p::data::SIGNING_KEY_TYPE_ECDSA_SHA256_P256);
// I2CP
dotnet::data::SigningKeyType sigType = section.second.get (DOTNET_CLIENT_TUNNEL_SIGNATURE_TYPE, dotnet::data::SIGNING_KEY_TYPE_ECDSA_SHA256_P256);
// DNCP
std::map<std::string, std::string> options;
I2CPParameters i2cpParameters;
ReadI2CPOptions (section, options, i2cpParameters);
DNCPParameters dncpParameters;
ReadDNCPOptions (section, options, dncpParameters);
tunnelConfigs[name]=new ClientTunnelConfig(name, QString(type.c_str()), i2cpParameters,
tunnelConfigs[name]=new ClientTunnelConfig(name, QString(type.c_str()), dncpParameters,
dest,
port,
keys,
@ -718,39 +718,39 @@ private:
destinationPort,
sigType);
}
else if (type == I2P_TUNNELS_SECTION_TYPE_SERVER
|| type == I2P_TUNNELS_SECTION_TYPE_HTTP
|| type == I2P_TUNNELS_SECTION_TYPE_IRC
|| type == I2P_TUNNELS_SECTION_TYPE_UDPSERVER)
else if (type == DOTNET_TUNNELS_SECTION_TYPE_SERVER
|| type == DOTNET_TUNNELS_SECTION_TYPE_HTTP
|| type == DOTNET_TUNNELS_SECTION_TYPE_IRC
|| type == DOTNET_TUNNELS_SECTION_TYPE_UDPSERVER)
{
// mandatory params
std::string host = section.second.get<std::string> (I2P_SERVER_TUNNEL_HOST);
int port = section.second.get<int> (I2P_SERVER_TUNNEL_PORT);
std::string host = section.second.get<std::string> (DOTNET_SERVER_TUNNEL_HOST);
int port = section.second.get<int> (DOTNET_SERVER_TUNNEL_PORT);
// optional params
std::string keys = section.second.get<std::string> (I2P_SERVER_TUNNEL_KEYS, "");
int inPort = section.second.get (I2P_SERVER_TUNNEL_INPORT, 0);
std::string accessList = section.second.get (I2P_SERVER_TUNNEL_ACCESS_LIST, "");
std::string hostOverride = section.second.get (I2P_SERVER_TUNNEL_HOST_OVERRIDE, "");
std::string webircpass = section.second.get<std::string> (I2P_SERVER_TUNNEL_WEBIRC_PASSWORD, "");
bool gzip = section.second.get (I2P_SERVER_TUNNEL_GZIP, true);
i2p::data::SigningKeyType sigType = section.second.get (I2P_SERVER_TUNNEL_SIGNATURE_TYPE, i2p::data::SIGNING_KEY_TYPE_ECDSA_SHA256_P256);
std::string address = section.second.get<std::string> (I2P_SERVER_TUNNEL_ADDRESS, "127.0.0.1");
bool isUniqueLocal = section.second.get(I2P_SERVER_TUNNEL_ENABLE_UNIQUE_LOCAL, true);
std::string keys = section.second.get<std::string> (DOTNET_SERVER_TUNNEL_KEYS, "");
int inPort = section.second.get (DOTNET_SERVER_TUNNEL_INPORT, 0);
std::string accessList = section.second.get (DOTNET_SERVER_TUNNEL_ACCESS_LIST, "");
std::string hostOverride = section.second.get (DOTNET_SERVER_TUNNEL_HOST_OVERRIDE, "");
std::string webircpass = section.second.get<std::string> (DOTNET_SERVER_TUNNEL_WEBIRC_PASSWORD, "");
bool gzip = section.second.get (DOTNET_SERVER_TUNNEL_GZIP, true);
dotnet::data::SigningKeyType sigType = section.second.get (DOTNET_SERVER_TUNNEL_SIGNATURE_TYPE, dotnet::data::SIGNING_KEY_TYPE_ECDSA_SHA256_P256);
std::string address = section.second.get<std::string> (DOTNET_SERVER_TUNNEL_ADDRESS, "127.0.0.1");
bool isUniqueLocal = section.second.get(DOTNET_SERVER_TUNNEL_ENABLE_UNIQUE_LOCAL, true);
// I2CP
// DNCP
std::map<std::string, std::string> options;
I2CPParameters i2cpParameters;
ReadI2CPOptions (section, options, i2cpParameters);
DNCPParameters dncpParameters;
ReadDNCPOptions (section, options, dncpParameters);
/*
std::set<i2p::data::IdentHash> idents;
std::set<dotnet::data::IdentHash> idents;
if (accessList.length () > 0)
{
size_t pos = 0, comma;
do
{
comma = accessList.find (',', pos);
i2p::data::IdentHash ident;
dotnet::data::IdentHash ident;
ident.FromBase32 (accessList.substr (pos, comma != std::string::npos ? comma - pos : std::string::npos));
idents.insert (ident);
pos = comma + 1;
@ -758,7 +758,7 @@ private:
while (comma != std::string::npos);
}
*/
tunnelConfigs[name]=new ServerTunnelConfig(name, QString(type.c_str()), i2cpParameters,
tunnelConfigs[name]=new ServerTunnelConfig(name, QString(type.c_str()), dncpParameters,
host,
port,
keys,

View file

@ -924,9 +924,9 @@
</widget>
</item>
<item>
<widget class="QPushButton" name="doRestartI2PDPushButton">
<widget class="QPushButton" name="doRestartDOTNETPushButton">
<property name="text">
<string>Restart i2pd</string>
<string>Restart dotnet</string>
</property>
</widget>
</item>

View file

@ -130,7 +130,7 @@
</widget>
</item>
<item>
<widget class="QPushButton" name="i2pTunnelsPushButton">
<widget class="QPushButton" name="dotnetTunnelsPushButton">
<property name="maximumSize">
<size>
<width>150</width>
@ -138,7 +138,7 @@
</size>
</property>
<property name="text">
<string>I2P tunnels</string>
<string>DOTNET tunnels</string>
</property>
</widget>
</item>