diff --git a/qt/i2pd_qt/TunnelPane.cpp b/qt/i2pd_qt/TunnelPane.cpp
index c64b37ab..60b0b6d5 100644
--- a/qt/i2pd_qt/TunnelPane.cpp
+++ b/qt/i2pd_qt/TunnelPane.cpp
@@ -185,6 +185,34 @@ void TunnelPane::appendControlsForI2CPParameters(I2CPParameters& i2cpParameters,
tunnelGridLayout->addLayout(horizontalLayout_2);
}
+ {
+ //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
+ }
+
retranslateI2CPParameters();
}
diff --git a/qt/i2pd_qt/TunnelPane.h b/qt/i2pd_qt/TunnelPane.h
index 71331b4e..6a13b7a0 100644
--- a/qt/i2pd_qt/TunnelPane.h
+++ b/qt/i2pd_qt/TunnelPane.h
@@ -133,6 +133,34 @@ 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
+ }
}
};
diff --git a/qt/i2pd_qt/generalsettingswidget.ui b/qt/i2pd_qt/generalsettingswidget.ui
index 9e59132f..e64f9e35 100644
--- a/qt/i2pd_qt/generalsettingswidget.ui
+++ b/qt/i2pd_qt/generalsettingswidget.ui
@@ -7,7 +7,7 @@
0
0
679
- 3033
+ 4152
@@ -25,14 +25,38 @@
0
0
679
- 3052
+ 4151
-
+
- QLayout::SetMinAndMaxSize
+ QLayout::SetDefaultConstraint
- -
+
-
+
+
+
+ 0
+ 60
+
+
+
+
+ 16777215
+ 60
+
+
+
+
+ 13
+
+
+
+ General options
+
+
+
+ -
@@ -100,14 +124,8 @@
- -
-
-
-
- 0
- 0
-
-
+
-
+
0
@@ -121,44 +139,26 @@
- Tunnels configuration file:
+ Data folder (for storage of i2pd data — RI, keys, peer profiles, …):
-
+
0
- 18
+ 20
661
31
-
+
QLayout::SetMaximumSize
-
-
+
-
-
-
-
- 0
- 0
-
-
-
-
- 0
- 27
-
-
-
-
- 16777215
- 27
-
-
+
Browse…
@@ -168,7 +168,7 @@
- -
+
-
@@ -236,183 +236,86 @@
- -
-
+
-
+
+
+
+ 0
+ 0
+
+
0
- 98
+ 51
16777215
- 98
+ 51
- SAM interface
+ Tunnels configuration file:
-
+
0
- 20
- 97
- 22
-
-
-
- Enabled
-
-
-
-
-
- 0
- 40
+ 18
661
31
-
+
+
+ QLayout::SetMaximumSize
+
-
-
-
- IP address to listen on:
-
-
+
-
-
-
- -
-
-
- Qt::Horizontal
+
+
+
+ 0
+ 0
+
-
+
- 40
- 20
+ 0
+ 27
-
-
-
-
-
-
-
- 0
- 70
- 661
- 31
-
-
-
- -
-
-
- Port to listen on:
-
-
-
- -
-
- 80
- 16777215
+ 16777215
+ 27
+
+ Browse…
+
- -
-
-
- Qt::Horizontal
-
-
-
- 40
- 20
-
-
-
-
- -
-
-
-
- 0
- 60
-
-
-
-
- 16777215
- 60
-
-
-
-
- 13
-
-
-
- Windows-specific options
-
-
-
- -
-
-
-
- 0
- 44
-
-
-
-
- 16777215
- 44
-
-
-
- Cryptography
-
-
-
-
- 0
- 20
- 661
- 22
-
-
-
- Use ElGamal precomputed tables
-
-
-
-
- -
+
-
0
- 107
+ 112
16777215
- 107
+ 112
@@ -432,7 +335,7 @@
- QLayout::SetMinimumSize
+ QLayout::SetMinAndMaxSize
-
@@ -539,11 +442,715 @@
+ -
+
+
+ Write full CLF-formatted date and time to log
+
+
+
- -
+
-
+
+
+
+ 0
+ 0
+
+
+
+
+ 0
+ 390
+
+
+
+
+ 16777215
+ 390
+
+
+
+ Router options
+
+
+
+
+ 0
+ 20
+ 661
+ 368
+
+
+
+
-
+
+
+ Enable communication through ipv4
+
+
+
+ -
+
+
+ Enable communication through ipv6
+
+
+
+ -
+
+
+ Router will not accept transit tunnels at startup
+
+
+
+ -
+
+
+ Router will be floodfill
+
+
+
+ -
+
+
+ Enable SSU transport protocol (use UDP)
+
+
+
+ -
+
+
+ Assume we are behind NAT
+
+
+
+ -
+
+
-
+
+
+ Bandwidth limit (integer or a letter):
+
+
+
+ -
+
+
+ -
+
+
+ KBps
+
+
+
+ -
+
+
+ Qt::Horizontal
+
+
+
+ 40
+ 20
+
+
+
+
+
+
+ -
+
+
-
+
+
+ Family (name of a family router belongs to):
+
+
+
+ -
+
+
+ -
+
+
+ Qt::Horizontal
+
+
+
+ 40
+ 20
+
+
+
+
+
+
+ -
+
+
+ QLayout::SetMaximumSize
+
+
-
+
+
+ NetID (network ID router belongs to. The main I2P ID is 2):
+
+
+
+ -
+
+
+ -
+
+
+ Qt::Horizontal
+
+
+
+ 40
+ 20
+
+
+
+
+
+
+ -
+
+
-
+
+
+ Network interface to bind to for IPv4:
+
+
+
+ -
+
+
+
+
+ -
+
+
-
+
+
+ Network interface to bind to for IPv6:
+
+
+
+ -
+
+
+
+
+ -
+
+
-
+
+
+ Max % of bandwidth limit for transit. 0-100:
+
+
+
+ -
+
+
+ -
+
+
+ Qt::Horizontal
+
+
+
+ 40
+ 20
+
+
+
+
+
+
+
+
+
+
+ -
+
+
+
+ 0
+ 230
+
+
+
+
+ 16777215
+ 230
+
+
+
+ HTTP webconsole
+
+
+
+
+ 0
+ 20
+ 97
+ 22
+
+
+
+ Enabled
+
+
+
+
+
+ 0
+ 40
+ 661
+ 31
+
+
+
+
-
+
+
+ IP address to listen on:
+
+
+
+ -
+
+
+ -
+
+
+ Qt::Horizontal
+
+
+
+ 40
+ 20
+
+
+
+
+
+
+
+
+
+ 0
+ 70
+ 661
+ 31
+
+
+
+ -
+
+
+ Port to listen on:
+
+
+
+ -
+
+
+
+ 80
+ 16777215
+
+
+
+
+ -
+
+
+ Qt::Horizontal
+
+
+
+ 40
+ 20
+
+
+
+
+
+
+
+
+
+ 0
+ 100
+ 321
+ 22
+
+
+
+ Enable basic HTTP auth
+
+
+
+
+
+ 60
+ 120
+ 601
+ 31
+
+
+
+ -
+
+
+ Username:
+
+
+
+ -
+
+
+ -
+
+
+ Qt::Horizontal
+
+
+
+ 40
+ 20
+
+
+
+
+
+
+
+
+
+ 60
+ 150
+ 601
+ 31
+
+
+
+ -
+
+
+ Password:
+
+
+
+ -
+
+
+ -
+
+
+ Qt::Horizontal
+
+
+
+ 40
+ 20
+
+
+
+
+
+
+
+
+
+ 1
+ 182
+ 661
+ 21
+
+
+
+ Enable strict host checking on web UI
+
+
+
+
+
+ -1
+ 200
+ 661
+ 27
+
+
+
+ -
+
+
+ Expected hostname for web UI:
+
+
+
+ -
+
+
+ -
+
+
+ Qt::Horizontal
+
+
+
+ 40
+ 20
+
+
+
+
+
+
+
+
+ -
+
+
+
+ 0
+ 78
+
+
+
+
+ 16777215
+ 78
+
+
+
+ Addressbook settings
+
+
+
+
+ 0
+ 20
+ 661
+ 31
+
+
+
+
-
+
+
+ Addressbook default subscription URL for initial setup:
+
+
+
+ -
+
+
+
+
+
+
+
+ 0
+ 50
+ 661
+ 31
+
+
+
+ -
+
+
+ Addressbook subscriptions URLs, separated by comma:
+
+
+
+ -
+
+
+
+
+
+
+ -
+
+
+
+ 0
+ 190
+
+
+
+
+ 16777215
+ 190
+
+
+
+ Reseeding
+
+
+
+
+ 0
+ 20
+ 661
+ 22
+
+
+
+ Request SU3 signature verification
+
+
+
+
+
+ 0
+ 40
+ 661
+ 31
+
+
+
+
-
+
+
+ SU3 file to reseed from:
+
+
+
+ -
+
+
+ -
+
+
+ Browse…
+
+
+
+
+
+
+
+
+ 0
+ 100
+ 661
+ 31
+
+
+
+ -
+
+
+ Reseed URLs, separated by comma:
+
+
+
+ -
+
+
+
+
+
+
+
+ 0
+ 70
+ 661
+ 31
+
+
+
+ -
+
+
+ Path to local .zip file to reseed from:
+
+
+
+ -
+
+
+ -
+
+
+ Browse...
+
+
+
+
+
+
+
+
+ 0
+ 130
+ 661
+ 31
+
+
+
+ -
+
+
+ Minimum number of known routers before requesting reseed:
+
+
+
+ -
+
+
+ -
+
+
+ Qt::Horizontal
+
+
+
+ 50
+ 20
+
+
+
+
+
+
+
+
+
+ 0
+ 160
+ 661
+ 31
+
+
+
+ -
+
+
+ URL for https/socks reseed proxy:
+
+
+
+ -
+
+
+
+
+
+
+ -
@@ -610,116 +1217,7 @@
- -
-
-
-
- 0
- 98
-
-
-
-
- 16777215
- 98
-
-
-
- I2CP interface
-
-
-
-
- 0
- 20
- 97
- 22
-
-
-
- Enabled
-
-
-
-
-
- 0
- 40
- 661
- 31
-
-
-
-
-
-
-
- IP address to listen on:
-
-
-
- -
-
-
- -
-
-
- Qt::Horizontal
-
-
-
- 40
- 20
-
-
-
-
-
-
-
-
-
- 0
- 70
- 661
- 31
-
-
-
- -
-
-
- Port to listen on:
-
-
-
- -
-
-
-
- 80
- 16777215
-
-
-
-
- -
-
-
- Qt::Horizontal
-
-
-
- 40
- 20
-
-
-
-
-
-
-
-
- -
+
-
@@ -828,215 +1326,111 @@
- -
-
+
-
+
0
- 60
+ 170
16777215
- 60
-
-
-
-
- 13
-
-
-
- General options
-
-
-
- -
-
-
-
- 0
- 0
-
-
-
-
- 0
- 98
-
-
-
-
- 16777215
- 98
+ 170
- Router external address (for incoming connections)
+ Trust options
-
- Qt::AlignJustify|Qt::AlignTop
-
-
+
0
20
661
- 81
+ 21
-
-
- QLayout::SetMinAndMaxSize
-
-
-
-
-
- QLayout::SetMinAndMaxSize
-
-
-
-
-
- Host:
-
-
-
- -
-
-
- -
-
-
- Qt::Horizontal
-
-
-
- 40
- 20
-
-
-
-
-
-
- -
-
-
- QLayout::SetMinAndMaxSize
-
-
-
-
-
- Port (leave 0 to auto-assign):
-
-
-
- -
-
-
-
- 80
- 16777215
-
-
-
-
- -
-
-
- Qt::Horizontal
-
-
-
- 40
- 20
-
-
-
-
-
-
-
+
+ Enable explicit trust options
+
-
-
- -
-
-
-
- 0
- 78
-
-
-
-
- 16777215
- 78
-
-
-
- Addressbook settings
-
-
+
+
+
+ 390
+ 40
+ 271
+ 23
+
+
+
+
0
- 20
- 661
- 31
+ 40
+ 391
+ 42
-
-
-
-
-
- Addressbook default subscription URL for initial setup:
-
-
-
- -
-
-
-
+
+ Make direct I2P connections only to
+routers in specified Family:
+
-
+
0
- 50
+ 82
661
- 31
+ 42
-
- -
-
-
- Addressbook subscriptions URLs, separated by comma:
-
-
-
- -
-
-
-
+
+ Make direct I2P connections only to routers specified here.
+Comma separated list of base64 identities:
+
+
+
+
+
+ 0
+ 124
+ 661
+ 23
+
+
+
+
+
+
+ 0
+ 147
+ 661
+ 21
+
+
+
+ Should we hide our router from other routers?
+
- -
+
-
0
- 280
+ 400
16777215
- 280
+ 400
@@ -1371,78 +1765,225 @@
-
-
- -
-
-
-
- 0
- 60
-
-
-
-
- 16777215
- 60
-
-
-
-
- 13
-
-
-
- Various options
-
-
-
- -
-
-
-
- 0
- 51
-
-
-
-
- 16777215
- 51
-
-
-
- Data folder (for storage of i2pd data — RI, keys, peer profiles, …):
-
-
+
0
- 20
+ 280
661
- 31
+ 23
-
-
- QLayout::SetMaximumSize
-
+
+ Enable address helper (jump)
+
+
+
+
+
+ 0
+ 300
+ 661
+ 95
+
+
+
-
-
+
+
-
+
+
+ HTTP proxy upstream out proxy URL (like http://false.i2p):
+
+
+
+ -
+
+
+
-
-
-
- Browse…
-
-
+
+
-
+
+
+ Type of LeaseSet to be sent. 1, 3 or 5:
+
+
+
+ -
+
+
+ -
+
+
+ Qt::Horizontal
+
+
+
+ 40
+ 20
+
+
+
+
+
+
+ -
+
+
-
+
+
+ Comma-separated encryption types to be used in LeaseSet type 3 or 5:
+
+
+
+ -
+
+
+ -
+
+
+ Qt::Horizontal
+
+
+
+ 40
+ 20
+
+
+
+
+
- -
-
+
-
+
+
+
+ 0
+ 121
+
+
+
+
+ 16777215
+ 121
+
+
+
+ SAM interface
+
+
+
+
+ 0
+ 20
+ 97
+ 22
+
+
+
+ Enabled
+
+
+
+
+
+ 0
+ 40
+ 661
+ 31
+
+
+
+
-
+
+
+ IP address to listen on:
+
+
+
+ -
+
+
+ -
+
+
+ Qt::Horizontal
+
+
+
+ 40
+ 20
+
+
+
+
+
+
+
+
+
+ 0
+ 70
+ 661
+ 31
+
+
+
+ -
+
+
+ Port to listen on:
+
+
+
+ -
+
+
+
+ 80
+ 16777215
+
+
+
+
+ -
+
+
+ Qt::Horizontal
+
+
+
+ 40
+ 20
+
+
+
+
+
+
+
+
+
+ 0
+ 100
+ 621
+ 23
+
+
+
+ Single thread for all SAM sessions
+
+
+
+
+ -
+
0
@@ -1452,127 +1993,88 @@
0
- 215
+ 98
16777215
- 215
+ 98
- Router options
+ Router external address (for incoming connections)
-
+
+ Qt::AlignJustify|Qt::AlignTop
+
+
0
20
661
- 188
+ 81
-
+
+
+ QLayout::SetMinAndMaxSize
+
-
-
-
- Enable communication through ipv6
-
-
-
- -
-
-
- Router will not accept transit tunnels at startup
-
-
-
- -
-
-
- Router will be floodfill
-
-
-
- -
-
-
-
-
-
- Bandwidth limit (integer or a letter):
-
-
-
- -
-
-
- -
-
-
- KBps
-
-
-
- -
-
-
- Qt::Horizontal
-
-
-
- 40
- 20
-
-
-
-
-
-
- -
-
-
-
-
-
- Family (name of a family router belongs to):
-
-
-
- -
-
-
- -
-
-
- Qt::Horizontal
-
-
-
- 40
- 20
-
-
-
-
-
-
- -
-
+
- QLayout::SetMaximumSize
+ QLayout::SetMinAndMaxSize
-
-
+
- NetID (network ID router belongs to. The main I2P ID is 2):
+ Host:
-
-
+
-
-
+
+
+ Qt::Horizontal
+
+
+
+ 40
+ 20
+
+
+
+
+
+
+ -
+
+
+ QLayout::SetMinAndMaxSize
+
+
-
+
+
+ Port (leave 0 to auto-assign):
+
+
+
+ -
+
+
+
+ 80
+ 16777215
+
+
+
+
+ -
+
Qt::Horizontal
@@ -1590,8 +2092,8 @@
- -
-
+
-
+
0
@@ -1714,226 +2216,251 @@
- -
-
+
-
+
+
+
+ 0
+ 0
+
+
0
- 98
+ 128
16777215
- 98
+ 128
- Reseeding
+ Nettime options
-
+
0
20
- 661
- 22
+ 671
+ 101
-
- Request SU3 signature verification
-
-
-
-
-
- 0
- 40
- 661
- 31
-
-
-
+
+
+ QLayout::SetMinAndMaxSize
+
-
-
+
- SU3 file to reseed from:
+ Enable NTP sync
-
-
+
+
-
+
+
+ Comma-separated list of NTP servers:
+
+
+
+ -
+
+
+
-
-
-
- Browse…
-
-
-
-
-
-
-
-
- 0
- 70
- 661
- 31
-
-
-
- -
-
-
- Reseed URLs, separated by comma:
-
-
-
- -
-
+
+
-
+
+
+ NTP time sync interval in hours:
+
+
+
+ -
+
+
+
+ 0
+ 0
+
+
+
+
+ -
+
+
+ Qt::Horizontal
+
+
+
+ 40
+ 20
+
+
+
+
+
- -
-
+
-
+
+
+
+ 0
+ 0
+
+
0
- 170
+ 215
16777215
- 170
+ 215
- Trust options
+ NTCP2 options
-
+
- 0
- 20
- 661
- 21
+ -1
+ 19
+ 671
+ 191
-
- Enable explicit trust options
-
-
-
-
-
- 390
- 40
- 271
- 23
-
-
-
-
-
-
- 0
- 40
- 391
- 42
-
-
-
- Make direct I2P connections only to
-routers in specified Family:
-
-
-
-
-
- 0
- 82
- 661
- 42
-
-
-
- Make direct I2P connections only to routers specified here.
-Comma separated list of base64 identities:
-
-
-
-
-
- 0
- 124
- 661
- 23
-
-
-
-
-
-
- 0
- 147
- 661
- 21
-
-
-
- Should we hide our router from other routers?
-
+
+
+ QLayout::SetMinAndMaxSize
+
+
-
+
+
+ Enable NTCP2
+
+
+
+ -
+
+
+ Enable incoming NTCP2 connections
+
+
+
+ -
+
+
-
+
+
+ Port to listen for incoming NTCP2 connections:
+
+
+
+ -
+
+
+
+ 0
+ 0
+
+
+
+
+ -
+
+
+ Qt::Horizontal
+
+
+
+ 40
+ 20
+
+
+
+
+
+
+ -
+
+
-
+
+
+ External IPv6 address for incoming connections:
+
+
+
+ -
+
+
+ -
+
+
+ Qt::Horizontal
+
+
+
+ 40
+ 20
+
+
+
+
+
+
+ -
+
+
-
+
+
+ Specify proxy server for NTCP2:
+
+
+
+ -
+
+
+ -
+
+
+ Qt::Horizontal
+
+
+
+ 40
+ 20
+
+
+
+
+
+
+ -
+
+
+ Proxy server should be http://address:port or socks://address:port
+
+
+
+
- -
-
-
-
- 0
- 60
-
-
-
-
- 16777215
- 60
-
-
-
-
- 13
-
-
-
- Ports
-
-
-
- -
-
-
-
- 0
- 22
-
-
-
-
- 16777215
- 22
-
-
-
- Insomnia (prevent system from sleeping)
-
-
-
- -
+
-
@@ -2135,24 +2662,56 @@ Comma separated list of base64 identities:
- -
-
+
-
+
0
- 179
+ 44
16777215
- 179
+ 44
- HTTP webconsole
+ Cryptography
-
+
+
+
+ 0
+ 20
+ 661
+ 22
+
+
+
+ Use ElGamal precomputed tables
+
+
+
+
+ -
+
+
+
+ 0
+ 121
+
+
+
+
+ 16777215
+ 121
+
+
+
+ I2CP interface
+
+
0
@@ -2165,7 +2724,7 @@ Comma separated list of base64 identities:
Enabled
-
+
0
@@ -2174,19 +2733,19 @@ Comma separated list of base64 identities:
31
-
+
-
-
+
IP address to listen on:
-
-
+
-
-
+
Qt::Horizontal
@@ -2200,7 +2759,7 @@ Comma separated list of base64 identities:
-
+
0
@@ -2209,16 +2768,16 @@ Comma separated list of base64 identities:
31
-
+
-
-
+
Port to listen on:
-
-
+
80
@@ -2228,7 +2787,7 @@ Comma separated list of base64 identities:
-
-
+
Qt::Horizontal
@@ -2242,103 +2801,57 @@ Comma separated list of base64 identities:
-
+
0
100
- 321
- 22
+ 651
+ 23
- Enable basic HTTP auth
+ Single thread for all I2CP sessions
-
-
-
- 60
- 120
- 601
- 31
-
-
-
- -
-
-
- Username:
-
-
-
- -
-
-
- -
-
-
- Qt::Horizontal
-
-
-
- 40
- 20
-
-
-
-
-
-
-
-
-
- 60
- 150
- 601
- 31
-
-
-
- -
-
-
- Password:
-
-
-
- -
-
-
- -
-
-
- Qt::Horizontal
-
-
-
- 40
- 20
-
-
-
-
-
-
- -
-
+
-
+
0
- 335
+ 60
16777215
- 335
+ 60
+
+
+
+
+ 13
+
+
+
+ Ports
+
+
+
+ -
+
+
+
+ 0
+ 405
+
+
+
+
+ 16777215
+ 405
@@ -2750,6 +3263,479 @@ Comma separated list of base64 identities:
+
+
+
+ -1
+ 340
+ 661
+ 62
+
+
+
+ -
+
+
-
+
+
+ Type of LeaseSet to be sent. 1, 3 or 5:
+
+
+
+ -
+
+
+ -
+
+
+ Qt::Horizontal
+
+
+
+ 40
+ 20
+
+
+
+
+
+
+ -
+
+
-
+
+
+ Comma-separated encryption types to be used in LeaseSet type 3 or 5:
+
+
+
+ -
+
+
+ -
+
+
+ Qt::Horizontal
+
+
+
+ 40
+ 20
+
+
+
+
+
+
+
+
+
+
+ -
+
+
+
+ 0
+ 0
+
+
+
+
+ 0
+ 128
+
+
+
+
+ 16777215
+ 128
+
+
+
+ Websocket Server
+
+
+ Qt::AlignLeading|Qt::AlignLeft|Qt::AlignTop
+
+
+
+
+ -1
+ 19
+ 681
+ 101
+
+
+
+
+ QLayout::SetMinAndMaxSize
+
+
-
+
+
+ Enable websocket server
+
+
+
+ -
+
+
-
+
+
+ Address to bind websocket server on:
+
+
+
+ -
+
+
+ -
+
+
+ Qt::Horizontal
+
+
+
+ 40
+ 20
+
+
+
+
+
+
+ -
+
+
-
+
+
+ Port to bind websocket server on:
+
+
+
+ -
+
+
+
+ 0
+ 0
+
+
+
+
+ -
+
+
+ Qt::Horizontal
+
+
+
+ 40
+ 20
+
+
+
+
+
+
+
+
+
+
+ -
+
+
+
+ 0
+ 60
+
+
+
+
+ 16777215
+ 60
+
+
+
+
+ 13
+
+
+
+ Various options
+
+
+
+ -
+
+
+
+ 0
+ 0
+
+
+
+
+ 0
+ 160
+
+
+
+
+ 16777215
+ 160
+
+
+
+ Exploratory Tunnels
+
+
+
+
+ -1
+ 19
+ 671
+ 131
+
+
+
+
+ QLayout::SetMinAndMaxSize
+
+
-
+
+
-
+
+
+ Exploratory inbound tunnels length:
+
+
+
+ -
+
+
+
+ 0
+ 0
+
+
+
+
+ -
+
+
+ Qt::Horizontal
+
+
+
+ 40
+ 20
+
+
+
+
+
+
+ -
+
+
-
+
+
+ Exploratory inbound tunnels quantity:
+
+
+
+ -
+
+
+
+ 0
+ 0
+
+
+
+
+ -
+
+
+ Qt::Horizontal
+
+
+
+ 40
+ 20
+
+
+
+
+
+
+ -
+
+
-
+
+
+ Exploratory outbound tunnels length:
+
+
+
+ -
+
+
+
+ 0
+ 0
+
+
+
+
+ -
+
+
+ Qt::Horizontal
+
+
+
+ 40
+ 20
+
+
+
+
+
+
+ -
+
+
-
+
+
+ Exploratory outbound tunnels quantity:
+
+
+
+ -
+
+
+
+ 0
+ 0
+
+
+
+
+ -
+
+
+ Qt::Horizontal
+
+
+
+ 40
+ 20
+
+
+
+
+
+
+
+
+
+
+ -
+
+
+
+ 0
+ 0
+
+
+
+
+ 0
+ 56
+
+
+
+
+ 16777215
+ 56
+
+
+
+ Persist profiles
+
+
+
+
+ 0
+ 20
+ 681
+ 31
+
+
+
+
+ QLayout::SetMinAndMaxSize
+
+
-
+
+
+ Enable peer profile persisting to disk
+
+
+
+
+
+
+
+ -
+
+
+
+ 0
+ 60
+
+
+
+
+ 16777215
+ 60
+
+
+
+
+ 13
+
+
+
+ Windows-specific options
+
+
+
+ -
+
+
+
+ 0
+ 0
+
+
+
+
+ 0
+ 22
+
+
+
+
+ 16777215
+ 22
+
+
+
+ Insomnia (prevent system from sleeping)
+
diff --git a/qt/i2pd_qt/mainwindow.cpp b/qt/i2pd_qt/mainwindow.cpp
index 14a57f8a..d4d34109 100644
--- a/qt/i2pd_qt/mainwindow.cpp
+++ b/qt/i2pd_qt/mainwindow.cpp
@@ -81,10 +81,10 @@ MainWindow::MainWindow(std::shared_ptr logStream_, QWidget *paren
onResize();
ui->stackedWidget->setCurrentIndex(0);
- ui->settingsScrollArea->resize(uiSettings->settingsContentsGridLayout->sizeHint().width()+10,380);
+ ui->settingsScrollArea->resize(uiSettings->settingsContentsQVBoxLayout->sizeHint().width()+10,380);
//QScrollBar* const barSett = ui->settingsScrollArea->verticalScrollBar();
int w = 683;
- int h = 3060;
+ int h = 4000;
ui->settingsContents->setFixedSize(w, h);
ui->settingsContents->setGeometry(QRect(0,0,w,h));
@@ -172,24 +172,24 @@ MainWindow::MainWindow(std::shared_ptr logStream_, QWidget *paren
logFileNameOption=initFileChooser( OPTION("","logfile",[]{return "";}), uiSettings->logFileLineEdit, uiSettings->logFileBrowsePushButton);
initLogLevelCombobox(OPTION("","loglevel",[]{return "";}), uiSettings->logLevelComboBox);
- //TODO add option "logclftime" "Write full CLF-formatted date and time to log (default: write only time)"
+ initCheckBox( OPTION("","logclftime",[]{return "false";}), uiSettings->logclftimeCheckBox);//"Write full CLF-formatted date and time to log (default: write only time)"
initFolderChooser( OPTION("","datadir",[]{return "";}), uiSettings->dataFolderLineEdit, uiSettings->dataFolderBrowsePushButton);
initIPAddressBox( OPTION("","host",[]{return "";}), uiSettings->routerExternalHostLineEdit, tr("Router external address -> Host"));
initTCPPortBox( OPTION("","port",[]{return "";}), uiSettings->routerExternalPortLineEdit, tr("Router external address -> Port"));
daemonOption=initNonGUIOption( OPTION("","daemon",[]{return "";}));
serviceOption=initNonGUIOption( OPTION("","service",[]{return "";}));
- //TODO add option "ifname4" Network interface to bind to for IPv4
- //TODO add option "ifname6" Network interface to bind to for IPv6
- //TODO add option "nat" If true, assume we are behind NAT. true by default
- //TODO add option "ipv4" Enable communication through IPv4. true by default
+ initStringBox( OPTION("","ifname4",[]{return "";}), uiSettings->ifname4LineEdit);//Network interface to bind to for IPv4
+ initStringBox( OPTION("","ifname6",[]{return "";}), uiSettings->ifname6LineEdit);//Network interface to bind to for IPv6
+ initCheckBox( OPTION("","nat",[]{return "true";}), uiSettings->natCheckBox);//If true, assume we are behind NAT. true by default
+ initCheckBox( OPTION("","ipv4",[]{return "true";}), uiSettings->ipv4CheckBox);//Enable communication through IPv4. true by default
initCheckBox( OPTION("","ipv6",[]{return "false";}), uiSettings->ipv6CheckBox);
initCheckBox( OPTION("","notransit",[]{return "false";}), uiSettings->notransitCheckBox);
initCheckBox( OPTION("","floodfill",[]{return "false";}), uiSettings->floodfillCheckBox);
initStringBox( OPTION("","bandwidth",[]{return "";}), uiSettings->bandwidthLineEdit);
- //TODO add option "share" Max % of bandwidth limit for transit. 0-100. 100 by default
+ initIntegerBox( OPTION("","share",[]{return "100";}), uiSettings->shareLineEdit, tr("Share"));//Max % of bandwidth limit for transit. 0-100. 100 by default
initStringBox( OPTION("","family",[]{return "";}), uiSettings->familyLineEdit);
initIntegerBox( OPTION("","netid",[]{return "2";}), uiSettings->netIdLineEdit, tr("NetID"));
- //TODO add option "ssu" Enable SSU transport protocol (use UDP). true by default
+ initCheckBox( OPTION("","ssu",[]{return "true";}), uiSettings->ssuCheckBox);//Enable SSU transport protocol (use UDP). true by default
#ifdef Q_OS_WIN
initNonGUIOption( OPTION("","svcctl",[]{return "";}));
@@ -205,22 +205,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);
- //TODO add option "http.strictheaders Enable strict host checking on WebUI. true by default
- //TODO add option "http.hostname Expected hostname for WebUI (default: localhost)
+ 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("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"));
- //TODO add option "httpproxy.addresshelper Enable address helper (jump). true by default
+ initCheckBox( OPTION("httpproxy","addresshelper",[]{return "true";}), uiSettings->httpProxyAddressHelperCheckBox);//TODO add option 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);
- //TODO add option "httpproxy.outproxy HTTP proxy upstream out proxy url (like http://false.i2p)
- //TODO add option "httpproxy.i2cp.leaseSetType Type of LeaseSet to be sent. 1, 3 or 5. 1 by default
- //TODO add option "httpproxy.i2cp.leaseSetEncType Comma separated encryption types to be used in LeaseSet type 3 or 5
+ 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
initCheckBox( OPTION("socksproxy","enabled",[]{return "";}), uiSettings->socksProxyEnabledCheckBox);
initIPAddressBox( OPTION("socksproxy","address",[]{return "";}), uiSettings->socksProxyAddressLineEdit, tr("Socks proxy -> IP address"));
@@ -231,15 +231,15 @@ MainWindow::MainWindow(std::shared_ptr logStream_, QWidget *paren
initStringBox( OPTION("socksproxy","inbound.quantity",[]{return "";}), uiSettings->socksProxyInboundTunnQuantityLineEdit);
initStringBox( OPTION("socksproxy","outbound.length",[]{return "";}), uiSettings->socksProxyOutBoundTunnLenLineEdit);
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"));
- //TODO add option "socksproxy.i2cp.leaseSetType Type of LeaseSet to be sent. 1, 3 or 5. 1 by default
- //TODO add option "socksproxy.i2cp.leaseSetEncType Comma separated encryption types to be used in LeaseSet type 3 or 5
+ 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
initCheckBox( OPTION("sam","enabled",[]{return "false";}), uiSettings->samEnabledCheckBox);
initIPAddressBox( OPTION("sam","address",[]{return "";}), uiSettings->samAddressLineEdit, tr("SAM -> IP address"));
initTCPPortBox( OPTION("sam","port",[]{return "7656";}), uiSettings->samPortLineEdit, tr("SAM -> Port"));
- //TODO add option "sam.singlethread If false every SAM session runs in own thread. true by default
+ initCheckBox( OPTION("sam","singlethread",[]{return "true";}), uiSettings->samSingleThreadCheckBox);//If false every SAM session runs in own thread. true by default
initCheckBox( OPTION("bob","enabled",[]{return "false";}), uiSettings->bobEnabledCheckBox);
initIPAddressBox( OPTION("bob","address",[]{return "";}), uiSettings->bobAddressLineEdit, tr("BOB -> IP address"));
@@ -248,7 +248,7 @@ MainWindow::MainWindow(std::shared_ptr logStream_, QWidget *paren
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"));
- //TODO add option "i2cp.singlethread If false every I2CP session runs in own thread. true by default
+ //initCheckBox( OPTION("i2cp","singlethread",[]{return "true";}), uiSettings->i2cpSingleThreadCheckBox);//If false every I2CP session runs in own thread. true by default
initCheckBox( OPTION("i2pcontrol","enabled",[]{return "false";}), uiSettings->i2pControlEnabledCheckBox);
initIPAddressBox( OPTION("i2pcontrol","address",[]{return "";}), uiSettings->i2pControlAddressLineEdit, tr("I2PControl -> IP address"));
@@ -265,9 +265,9 @@ MainWindow::MainWindow(std::shared_ptr logStream_, QWidget *paren
initCheckBox( OPTION("reseed","verify",[]{return "";}), uiSettings->reseedVerifyCheckBox);
initFileChooser( OPTION("reseed","file",[]{return "";}), uiSettings->reseedFileLineEdit, uiSettings->reseedFileBrowsePushButton);
initStringBox( OPTION("reseed","urls",[]{return "";}), uiSettings->reseedURLsLineEdit);
- //TODO add option "reseed.zipfile Path to local .zip file to reseed from
- //TODO add option "reseed.threshold Minimum number of known routers before requesting reseed. 25 by default
- //TODO add option "reseed.proxy Url for https/socks reseed proxy
+ initFileChooser( OPTION("reseed","zipfile",[]{return "";}), uiSettings->reseedZipFileLineEdit, uiSettings->reseedZipFileBrowsePushButton); //Path to local .zip file to reseed from
+ initUInt16Box( OPTION("reseed","threshold",[]{return "25";}), uiSettings->reseedThresholdNumberLineEdit, tr("reseedThreshold")); //Minimum number of known routers before requesting reseed. 25 by default
+ initStringBox( OPTION("reseed","proxy",[]{return "";}), uiSettings->reseedProxyLineEdit);//URL for https/socks reseed proxy
initStringBox( OPTION("addressbook","defaulturl",[]{return "";}), uiSettings->addressbookDefaultURLLineEdit);
initStringBox( OPTION("addressbook","subscriptions",[]{return "";}), uiSettings->addressbookSubscriptionsURLslineEdit);
@@ -275,34 +275,32 @@ MainWindow::MainWindow(std::shared_ptr logStream_, QWidget *paren
initUInt16Box( OPTION("limits","transittunnels",[]{return "2500";}), uiSettings->maxNumOfTransitTunnelsLineEdit, tr("maxNumberOfTransitTunnels"));
initUInt16Box( OPTION("limits","openfiles",[]{return "0";}), uiSettings->maxNumOfOpenFilesLineEdit, tr("maxNumberOfOpenFiles"));
initUInt32Box( OPTION("limits","coresize",[]{return "0";}), uiSettings->coreFileMaxSizeNumberLineEdit, tr("coreFileMaxSize"));
- //TODO add option "limits.ntcpsoft Threshold to start probabalistic backoff with ntcp sessions (0 - use system limit)
- //TODO add option "limits.ntcphard Maximum number of ntcp sessions (0 - use system limit)
initCheckBox( OPTION("trust","enabled",[]{return "false";}), uiSettings->checkBoxTrustEnable);
initStringBox( OPTION("trust","family",[]{return "";}), uiSettings->lineEditTrustFamily);
initStringBox( OPTION("trust","routers",[]{return "";}), uiSettings->lineEditTrustRouters);
initCheckBox( OPTION("trust","hidden",[]{return "false";}), uiSettings->checkBoxTrustHidden);
- //TODO add option "websockets.enabled Enable websocket server. Disabled by default
- //TODO add option "websockets.address Address to bind websocket server on. 127.0.0.1 by default
- //TODO add option "websockets.port Port to bind websocket server on. 7666 by default
+ initCheckBox( OPTION("websockets","enabled",[]{return "false";}), uiSettings->checkBoxWebsocketsEnable); //Enable websocket server. Disabled by default
+ initIPAddressBox( OPTION("websockets","address",[]{return "127.0.0.1";}), uiSettings->websocketsAddressLineEdit, tr("Websockets -> IP address")); //Address to bind websocket server on. 127.0.0.1 by default
+ initTCPPortBox( OPTION("websockets","port",[]{return "7666";}), uiSettings->websocketsPortLineEdit, tr("Websockets -> Port")); //Port to bind websocket server on. 7666 by default
- //TODO add option "exploratory.inbound.length Exploratory inbound tunnels length. 2 by default
- //TODO add option "exploratory.inbound.quantity Exploratory inbound tunnels quantity. 3 by default
- //TODO add option "exploratory.outbound.length Exploratory outbound tunnels length. 2 by default
- //TODO add option "exploratory.outbound.quantity Exploratory outbound tunnels length. 3 by default
+ initIntegerBox( OPTION("exploratory","inbound.length",[]{return "2";}), uiSettings->exploratoryInboundTunnelsLengthNumberLineEdit, tr("exploratoryInboundTunnelsLength"));//Exploratory inbound tunnels length. 2 by default
+ initIntegerBox( OPTION("exploratory","inbound.quantity",[]{return "3";}), uiSettings->exploratoryInboundTunnelsQuantityNumberLineEdit, tr("exploratoryInboundTunnelsQuantity"));//Exploratory inbound tunnels quantity. 3 by default
+ initIntegerBox( OPTION("exploratory","outbound.length",[]{return "2";}), uiSettings->exploratoryOutboundTunnelsLengthNumberLineEdit, tr("exploratoryOutboundTunnelsLength"));//Exploratory outbound tunnels length. 2 by default
+ initIntegerBox( OPTION("exploratory","outbound.quantity",[]{return "3";}), uiSettings->exploratoryOutboundTunnelsQuantityNumberLineEdit, tr("exploratoryOutboundTunnelsQuantity"));//Exploratory outbound tunnels length. 3 by default
- //TODO add option "ntcp2.enabled Enable NTCP2. Enabled by default
- //TODO add option "ntcp2.published Enable incoming NTCP2 connections. Disabled by default
- //TODO add option "ntcp2.port Port to listen for incoming NTCP2 connections (default: auto)
- //TODO add option "ntcp2.addressv6 External IPv6 for incoming connections
- //TODO add option "ntcp2.proxy Specify proxy server for NTCP2. Should be http://address:port or socks://address:port
+ initCheckBox( OPTION("ntcp2","enabled",[]{return "true";}), uiSettings->checkBoxNtcp2Enable); //Enable NTCP2. Enabled by default
+ initCheckBox( OPTION("ntcp2","published",[]{return "false";}), uiSettings->checkBoxNtcp2Published); //Enable incoming NTCP2 connections. Disabled by default
+ initTCPPortBox( OPTION("ntcp2","port",[]{return "0";}), uiSettings->ntcp2PortLineEdit, tr("NTCP2 -> Port")); //Port to listen for incoming NTCP2 connections (default: auto)
+ initIPAddressBox( OPTION("ntcp2","addressv6",[]{return "::";}), uiSettings->ntcp2AddressV6LineEdit, tr("NTCP2 -> IPv6 address")); //External IPv6 for incoming connections
+ initStringBox( OPTION("ntcp2","proxy",[]{return "";}), uiSettings->lineEditNtcp2Proxy); //Specify proxy server for NTCP2. Should be http://address:port or socks://address:port
- //TODO add option "nettime.enabled Enable NTP sync. Disabled by default
- //TODO add option "nettime.ntpservers Comma-separated list of NTP server. pool.ntp.org by default
- //TODO add option "nettime.ntpsyncinterval NTP time sync interval in hours. 72 by default
+ initCheckBox( OPTION("nettime","enabled",[]{return "false";}), uiSettings->checkBoxNettimeEnable); //Enable NTP sync. Disabled by default
+ initStringBox( OPTION("nettime","ntpservers",[]{return "pool.ntp.org";}), uiSettings->lineEditNetTimeNtpServers); //Comma-separated list of NTP servers. pool.ntp.org by default
+ initIntegerBox( OPTION("nettime","ntpsyncinterval",[]{return "72";}), uiSettings->nettimeNtpSyncIntervalNumberLineEdit, tr("nettimeNtpSyncInterval")); //NTP time sync interval in hours. 72 by default
- //TODO add option "persist.profiles Enable peer profile persisting to disk. Enabled by default
+ initCheckBox( OPTION("persist","profiles",[]{return "true";}), uiSettings->checkBoxPersistProfiles);//Enable peer profile persisting to disk. Enabled by default
# undef OPTION
//widgetlocks.add(new widgetlock(widget,lockbtn));
diff --git a/qt/i2pd_qt/mainwindow.h b/qt/i2pd_qt/mainwindow.h
index 6e187b5b..b4f57f8f 100644
--- a/qt/i2pd_qt/mainwindow.h
+++ b/qt/i2pd_qt/mainwindow.h
@@ -116,7 +116,7 @@ public:
std::string optName="";
if(!option.section.isEmpty())optName=option.section.toStdString()+std::string(".");
optName+=option.option.toStdString();
- //qDebug() << "loadFromConfigOption[" << optName.c_str() << "]";
+ qDebug() << "loadFromConfigOption[" << optName.c_str() << "]";
boost::any programOption;
i2p::config::GetOptionAsAny(optName, programOption);
optionValue=programOption.empty()?boost::any(std::string(""))
@@ -281,6 +281,7 @@ public:
virtual void installListeners(MainWindow *mainWindow);
virtual void loadFromConfigOption(){
MainWindowItem::loadFromConfigOption();
+ qDebug() << "setting value for checkbox " << checkBox->text();
checkBox->setChecked(boost::any_cast(optionValue));
}
virtual void saveToStringStream(std::stringstream& out){