mirror of https://github.com/oxen-io/lokinet
Rediff patches
Drop 0002-Make-lokid-rpc-setting-required-in-SN-mode.patch: <REASON> Drop 0003-Make-Default-Required-or-Required-Hidden-compilation.patch: <REASON> Drop 0001-Fix-missing-option-names.patch: <REASON> Drop 0004-Remove-another-obsolete-bootstrap.patch: <REASON>ubuntu/kinetic
parent
d2050f000a
commit
eb3ab7b837
@ -1,65 +0,0 @@
|
|||||||
From: Jason Rhinelander <jason@imaginary.ca>
|
|
||||||
Date: Tue, 15 Nov 2022 13:11:11 -0400
|
|
||||||
Subject: Fix missing option names
|
|
||||||
|
|
||||||
At some point between 0.9.9 and 0.9.10 we removed the printing of option
|
|
||||||
names when a value doesn't have a default, but this means the config is
|
|
||||||
littered with things like:
|
|
||||||
|
|
||||||
# This option sets the greater foo value.
|
|
||||||
|
|
||||||
with no actual option name printed out when there is no default.
|
|
||||||
|
|
||||||
This fixes it by always printing the option name in such a case, just
|
|
||||||
with an empty value, e.g.:
|
|
||||||
|
|
||||||
# This option sets the greater foo value.
|
|
||||||
#big-foo=
|
|
||||||
---
|
|
||||||
llarp/config/definition.cpp | 23 +++++++++++++++--------
|
|
||||||
1 file changed, 15 insertions(+), 8 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/llarp/config/definition.cpp b/llarp/config/definition.cpp
|
|
||||||
index aa199eb..7617760 100644
|
|
||||||
--- a/llarp/config/definition.cpp
|
|
||||||
+++ b/llarp/config/definition.cpp
|
|
||||||
@@ -152,10 +152,8 @@ namespace llarp
|
|
||||||
const std::string& section, std::vector<std::string> comments)
|
|
||||||
{
|
|
||||||
auto& sectionComments = m_sectionComments[section];
|
|
||||||
- for (size_t i = 0; i < comments.size(); ++i)
|
|
||||||
- {
|
|
||||||
- sectionComments.emplace_back(std::move(comments[i]));
|
|
||||||
- }
|
|
||||||
+ for (auto& c : comments)
|
|
||||||
+ sectionComments.emplace_back(std::move(c));
|
|
||||||
}
|
|
||||||
|
|
||||||
void
|
|
||||||
@@ -198,13 +196,22 @@ namespace llarp
|
|
||||||
if (useValues and def->getNumberFound() > 0)
|
|
||||||
{
|
|
||||||
for (const auto& val : def->valuesAsString())
|
|
||||||
- fmt::format_to(sect_append, "\n{}={}\n", name, val);
|
|
||||||
+ fmt::format_to(sect_append, "\n{}={}", name, val);
|
|
||||||
+ *sect_append = '\n';
|
|
||||||
}
|
|
||||||
- else if (not(def->hidden and not has_comment))
|
|
||||||
+ else if (not def->hidden)
|
|
||||||
{
|
|
||||||
- for (const auto& val : def->defaultValuesAsString())
|
|
||||||
- fmt::format_to(sect_append, "\n{}{}={}\n", def->required ? "" : "#", name, val);
|
|
||||||
+ if (auto defaults = def->defaultValuesAsString(); not defaults.empty())
|
|
||||||
+ for (const auto& val : defaults)
|
|
||||||
+ fmt::format_to(sect_append, "\n{}{}={}", def->required ? "" : "#", name, val);
|
|
||||||
+ else
|
|
||||||
+ // We have no defaults so we append it as "#opt-name=" so that we show the option name,
|
|
||||||
+ // and make it simple to uncomment and edit to the desired value.
|
|
||||||
+ fmt::format_to(sect_append, "\n#{}=", name);
|
|
||||||
+ *sect_append = '\n';
|
|
||||||
}
|
|
||||||
+ else if (has_comment)
|
|
||||||
+ *sect_append = '\n';
|
|
||||||
});
|
|
||||||
|
|
||||||
if (sect_str.empty())
|
|
@ -1,226 +0,0 @@
|
|||||||
From: Jason Rhinelander <jason@imaginary.ca>
|
|
||||||
Date: Tue, 15 Nov 2022 13:14:15 -0400
|
|
||||||
Subject: Make [lokid]:rpc setting required in SN mode
|
|
||||||
|
|
||||||
When running as a service node we can't do anything without a lokid rpc
|
|
||||||
URL, and we don't necessarily have a good default for it.
|
|
||||||
|
|
||||||
This makes it required so that we fail with an appropriate error message
|
|
||||||
(rather than connect timeouts) if it is not specified.
|
|
||||||
---
|
|
||||||
llarp/config/config.cpp | 1 +
|
|
||||||
test/config/test_llarp_config_values.cpp | 49 ++++++++++++++------------------
|
|
||||||
2 files changed, 23 insertions(+), 27 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/llarp/config/config.cpp b/llarp/config/config.cpp
|
|
||||||
index aa02da5..67d92fa 100644
|
|
||||||
--- a/llarp/config/config.cpp
|
|
||||||
+++ b/llarp/config/config.cpp
|
|
||||||
@@ -1179,6 +1179,7 @@ namespace llarp
|
|
||||||
"lokid",
|
|
||||||
"rpc",
|
|
||||||
RelayOnly,
|
|
||||||
+ Required,
|
|
||||||
Comment{
|
|
||||||
"oxenmq control address for for communicating with oxend. Depends on oxend's",
|
|
||||||
"lmq-local-control configuration option. By default this value should be",
|
|
||||||
diff --git a/test/config/test_llarp_config_values.cpp b/test/config/test_llarp_config_values.cpp
|
|
||||||
index 8276cc5..f0e9ebe 100644
|
|
||||||
--- a/test/config/test_llarp_config_values.cpp
|
|
||||||
+++ b/test/config/test_llarp_config_values.cpp
|
|
||||||
@@ -75,6 +75,8 @@ run_config_test(mocks::Network env, std::string_view ini_str)
|
|
||||||
throw std::runtime_error{"non zero return"};
|
|
||||||
}
|
|
||||||
|
|
||||||
+const std::string ini_minimal = "[lokid]\nrpc=ipc://dummy\n";
|
|
||||||
+
|
|
||||||
TEST_CASE("service node bind section on valid network", "[config]")
|
|
||||||
{
|
|
||||||
std::unordered_multimap<std::string, llarp::IPRange> env{
|
|
||||||
@@ -92,15 +94,14 @@ TEST_CASE("service node bind section on valid network", "[config]")
|
|
||||||
REQUIRE(not mock_net.IsBogon(*maybe_addr));
|
|
||||||
}
|
|
||||||
|
|
||||||
- SECTION("empty config")
|
|
||||||
+ SECTION("minimal config")
|
|
||||||
{
|
|
||||||
- std::string_view ini_str = "";
|
|
||||||
- REQUIRE_NOTHROW(run_config_test(env, ini_str));
|
|
||||||
+ REQUIRE_NOTHROW(run_config_test(env, ini_minimal));
|
|
||||||
}
|
|
||||||
|
|
||||||
SECTION("explicit bind via ifname")
|
|
||||||
{
|
|
||||||
- std::string_view ini_str = R"(
|
|
||||||
+ auto ini_str = ini_minimal + R"(
|
|
||||||
[bind]
|
|
||||||
mock0=443
|
|
||||||
)";
|
|
||||||
@@ -108,7 +109,7 @@ mock0=443
|
|
||||||
}
|
|
||||||
SECTION("explicit bind via ip address")
|
|
||||||
{
|
|
||||||
- std::string_view ini_str = R"(
|
|
||||||
+ auto ini_str = ini_minimal + R"(
|
|
||||||
[bind]
|
|
||||||
inbound=1.1.1.1:443
|
|
||||||
)";
|
|
||||||
@@ -116,7 +117,7 @@ inbound=1.1.1.1:443
|
|
||||||
}
|
|
||||||
SECTION("explicit bind via ip address with old syntax")
|
|
||||||
{
|
|
||||||
- std::string_view ini_str = R"(
|
|
||||||
+ auto ini_str = ini_minimal + R"(
|
|
||||||
[bind]
|
|
||||||
1.1.1.1=443
|
|
||||||
)";
|
|
||||||
@@ -125,7 +126,7 @@ inbound=1.1.1.1:443
|
|
||||||
}
|
|
||||||
SECTION("ip spoof fails")
|
|
||||||
{
|
|
||||||
- std::string_view ini_str = R"(
|
|
||||||
+ auto ini_str = ini_minimal + R"(
|
|
||||||
[router]
|
|
||||||
public-ip=8.8.8.8
|
|
||||||
public-port=443
|
|
||||||
@@ -136,7 +137,7 @@ inbound=1.1.1.1:443
|
|
||||||
}
|
|
||||||
SECTION("explicit bind via ifname but fails from non existing ifname")
|
|
||||||
{
|
|
||||||
- std::string_view ini_str = R"(
|
|
||||||
+ auto ini_str = ini_minimal + R"(
|
|
||||||
[bind]
|
|
||||||
ligma0=443
|
|
||||||
)";
|
|
||||||
@@ -145,7 +146,7 @@ ligma0=443
|
|
||||||
|
|
||||||
SECTION("explicit bind via ifname but fails from using loopback")
|
|
||||||
{
|
|
||||||
- std::string_view ini_str = R"(
|
|
||||||
+ auto ini_str = ini_minimal + R"(
|
|
||||||
[bind]
|
|
||||||
lo=443
|
|
||||||
)";
|
|
||||||
@@ -154,7 +155,7 @@ lo=443
|
|
||||||
|
|
||||||
SECTION("explicit bind via explicit loopback")
|
|
||||||
{
|
|
||||||
- std::string_view ini_str = R"(
|
|
||||||
+ auto ini_str = ini_minimal + R"(
|
|
||||||
[bind]
|
|
||||||
inbound=127.0.0.1:443
|
|
||||||
)";
|
|
||||||
@@ -162,7 +163,7 @@ inbound=127.0.0.1:443
|
|
||||||
}
|
|
||||||
SECTION("public ip provided but no bind section")
|
|
||||||
{
|
|
||||||
- std::string_view ini_str = R"(
|
|
||||||
+ auto ini_str = ini_minimal + R"(
|
|
||||||
[router]
|
|
||||||
public-ip=1.1.1.1
|
|
||||||
public-port=443
|
|
||||||
@@ -171,7 +172,7 @@ public-port=443
|
|
||||||
}
|
|
||||||
SECTION("public ip provided with ip in bind section")
|
|
||||||
{
|
|
||||||
- std::string_view ini_str = R"(
|
|
||||||
+ auto ini_str = ini_minimal + R"(
|
|
||||||
[router]
|
|
||||||
public-ip=1.1.1.1
|
|
||||||
public-port=443
|
|
||||||
@@ -196,7 +197,7 @@ TEST_CASE("service node bind section on nat network", "[config]")
|
|
||||||
|
|
||||||
SECTION("public ip provided via inbound directive")
|
|
||||||
{
|
|
||||||
- std::string_view ini_str = R"(
|
|
||||||
+ auto ini_str = ini_minimal + R"(
|
|
||||||
[router]
|
|
||||||
public-ip=1.1.1.1
|
|
||||||
public-port=443
|
|
||||||
@@ -209,7 +210,7 @@ inbound=10.1.1.1:443
|
|
||||||
|
|
||||||
SECTION("public ip provided with bind via ifname")
|
|
||||||
{
|
|
||||||
- std::string_view ini_str = R"(
|
|
||||||
+ auto ini_str = ini_minimal + R"(
|
|
||||||
[router]
|
|
||||||
public-ip=1.1.1.1
|
|
||||||
public-port=443
|
|
||||||
@@ -222,7 +223,7 @@ mock0=443
|
|
||||||
|
|
||||||
SECTION("public ip provided bind via wildcard ip")
|
|
||||||
{
|
|
||||||
- std::string_view ini_str = R"(
|
|
||||||
+ auto ini_str = ini_minimal + R"(
|
|
||||||
[router]
|
|
||||||
public-ip=1.1.1.1
|
|
||||||
public-port=443
|
|
||||||
@@ -232,7 +233,6 @@ inbound=0.0.0.0:443
|
|
||||||
)";
|
|
||||||
REQUIRE_THROWS(run_config_test(env, ini_str));
|
|
||||||
}
|
|
||||||
-
|
|
||||||
}
|
|
||||||
|
|
||||||
TEST_CASE("service node bind section with multiple public ip", "[config]")
|
|
||||||
@@ -242,14 +242,9 @@ TEST_CASE("service node bind section with multiple public ip", "[config]")
|
|
||||||
{"mock0", llarp::IPRange::FromIPv4(2, 1, 1, 1, 32)},
|
|
||||||
{"lo", llarp::IPRange::FromIPv4(127, 0, 0, 1, 8)},
|
|
||||||
};
|
|
||||||
- SECTION("empty config")
|
|
||||||
- {
|
|
||||||
- std::string_view ini_str = "";
|
|
||||||
- REQUIRE_NOTHROW(run_config_test(env, ini_str));
|
|
||||||
- }
|
|
||||||
SECTION("with old style wildcard for inbound and no public ip, fails")
|
|
||||||
{
|
|
||||||
- std::string_view ini_str = R"(
|
|
||||||
+ auto ini_str = ini_minimal + R"(
|
|
||||||
[bind]
|
|
||||||
0.0.0.0=443
|
|
||||||
)";
|
|
||||||
@@ -257,7 +252,7 @@ TEST_CASE("service node bind section with multiple public ip", "[config]")
|
|
||||||
}
|
|
||||||
SECTION("with old style wildcard for outbound")
|
|
||||||
{
|
|
||||||
- std::string_view ini_str = R"(
|
|
||||||
+ auto ini_str = ini_minimal + R"(
|
|
||||||
[bind]
|
|
||||||
*=1443
|
|
||||||
)";
|
|
||||||
@@ -265,7 +260,7 @@ TEST_CASE("service node bind section with multiple public ip", "[config]")
|
|
||||||
}
|
|
||||||
SECTION("with wildcard via inbound directive no public ip given, fails")
|
|
||||||
{
|
|
||||||
- std::string_view ini_str = R"(
|
|
||||||
+ auto ini_str = ini_minimal + R"(
|
|
||||||
[bind]
|
|
||||||
inbound=0.0.0.0:443
|
|
||||||
)";
|
|
||||||
@@ -274,7 +269,7 @@ inbound=0.0.0.0:443
|
|
||||||
}
|
|
||||||
SECTION("with wildcard via inbound directive primary public ip given")
|
|
||||||
{
|
|
||||||
- std::string_view ini_str = R"(
|
|
||||||
+ auto ini_str = ini_minimal + R"(
|
|
||||||
[router]
|
|
||||||
public-ip=1.1.1.1
|
|
||||||
public-port=443
|
|
||||||
@@ -286,7 +281,7 @@ inbound=0.0.0.0:443
|
|
||||||
}
|
|
||||||
SECTION("with wildcard via inbound directive secondary public ip given")
|
|
||||||
{
|
|
||||||
- std::string_view ini_str = R"(
|
|
||||||
+ auto ini_str = ini_minimal + R"(
|
|
||||||
[router]
|
|
||||||
public-ip=2.1.1.1
|
|
||||||
public-port=443
|
|
||||||
@@ -298,7 +293,7 @@ inbound=0.0.0.0:443
|
|
||||||
}
|
|
||||||
SECTION("with bind via interface name")
|
|
||||||
{
|
|
||||||
- std::string_view ini_str = R"(
|
|
||||||
+ auto ini_str = ini_minimal + R"(
|
|
||||||
[bind]
|
|
||||||
mock0=443
|
|
||||||
)";
|
|
@ -1,266 +0,0 @@
|
|||||||
From: Jason Rhinelander <jason@imaginary.ca>
|
|
||||||
Date: Tue, 15 Nov 2022 13:15:54 -0400
|
|
||||||
Subject: Make Default&Required or Required&Hidden compilation failures
|
|
||||||
|
|
||||||
Default & Required makes no sense: if we have a default it makes no
|
|
||||||
sense to make it required. The previous behaviour when this was
|
|
||||||
specified was to force an (uncommented) value in the config with the
|
|
||||||
value, but this was only used in the test suite.
|
|
||||||
|
|
||||||
Required & Hidden makes no sense either: if it's required to be
|
|
||||||
specified we definitely don't want to hide it from the generated config
|
|
||||||
file.
|
|
||||||
|
|
||||||
These are now compile-time failures.
|
|
||||||
---
|
|
||||||
llarp/config/definition.hpp | 10 ++++
|
|
||||||
test/config/test_llarp_config_definition.cpp | 11 ++---
|
|
||||||
test/config/test_llarp_config_output.cpp | 68 ++++++++++++++++------------
|
|
||||||
3 files changed, 53 insertions(+), 36 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/llarp/config/definition.hpp b/llarp/config/definition.hpp
|
|
||||||
index 8f9225c..6cacd31 100644
|
|
||||||
--- a/llarp/config/definition.hpp
|
|
||||||
+++ b/llarp/config/definition.hpp
|
|
||||||
@@ -202,6 +202,16 @@ namespace llarp
|
|
||||||
OptionDefinition(std::string section_, std::string name_, Options&&... opts)
|
|
||||||
: OptionDefinitionBase(section_, name_, opts...)
|
|
||||||
{
|
|
||||||
+ constexpr bool has_default =
|
|
||||||
+ ((config::is_default_array<Options> || config::is_default<Options>) || ...);
|
|
||||||
+ constexpr bool has_required =
|
|
||||||
+ (std::is_same_v<config::remove_cvref_t<Options>, config::Required_t> || ...);
|
|
||||||
+ constexpr bool has_hidden =
|
|
||||||
+ (std::is_same_v<config::remove_cvref_t<Options>, config::Hidden_t> || ...);
|
|
||||||
+ static_assert(
|
|
||||||
+ not(has_default and has_required), "Default{...} and Required are mutually exclusive");
|
|
||||||
+ static_assert(not(has_hidden and has_required), "Hidden and Required are mutually exclusive");
|
|
||||||
+
|
|
||||||
(extractDefault(std::forward<Options>(opts)), ...);
|
|
||||||
(extractAcceptor(std::forward<Options>(opts)), ...);
|
|
||||||
(extractComments(std::forward<Options>(opts)), ...);
|
|
||||||
diff --git a/test/config/test_llarp_config_definition.cpp b/test/config/test_llarp_config_definition.cpp
|
|
||||||
index e3edec2..80005d5 100644
|
|
||||||
--- a/test/config/test_llarp_config_definition.cpp
|
|
||||||
+++ b/test/config/test_llarp_config_definition.cpp
|
|
||||||
@@ -104,7 +104,7 @@ TEST_CASE("OptionDefinition acceptor throws test", "[config]")
|
|
||||||
TEST_CASE("OptionDefinition tryAccept missing option test", "[config]")
|
|
||||||
{
|
|
||||||
int unset = -1;
|
|
||||||
- llarp::OptionDefinition<int> def("foo", "bar", Required, Default{1}, [&](int arg) {
|
|
||||||
+ llarp::OptionDefinition<int> def("foo", "bar", Required, [&](int arg) {
|
|
||||||
(void)arg;
|
|
||||||
unset = 0; // should never be called
|
|
||||||
});
|
|
||||||
@@ -170,7 +170,6 @@ TEST_CASE("ConfigDefinition required test", "[config]")
|
|
||||||
config.defineOption(std::make_unique<llarp::OptionDefinition<int>>(
|
|
||||||
"router",
|
|
||||||
"threads",
|
|
||||||
- Default{1},
|
|
||||||
Required));
|
|
||||||
|
|
||||||
CHECK_THROWS(config.validateRequiredFields());
|
|
||||||
@@ -186,13 +185,13 @@ TEST_CASE("ConfigDefinition section test", "[config]")
|
|
||||||
config.defineOption(std::make_unique<llarp::OptionDefinition<int>>(
|
|
||||||
"foo",
|
|
||||||
"bar",
|
|
||||||
- Required,
|
|
||||||
- Default{1}));
|
|
||||||
+ Required
|
|
||||||
+ ));
|
|
||||||
config.defineOption(std::make_unique<llarp::OptionDefinition<int>>(
|
|
||||||
"goo",
|
|
||||||
"bar",
|
|
||||||
- Required,
|
|
||||||
- Default{1}));
|
|
||||||
+ Required
|
|
||||||
+ ));
|
|
||||||
|
|
||||||
CHECK_THROWS(config.validateRequiredFields());
|
|
||||||
|
|
||||||
diff --git a/test/config/test_llarp_config_output.cpp b/test/config/test_llarp_config_output.cpp
|
|
||||||
index 13eb64c..5ba47bf 100644
|
|
||||||
--- a/test/config/test_llarp_config_output.cpp
|
|
||||||
+++ b/test/config/test_llarp_config_output.cpp
|
|
||||||
@@ -8,37 +8,37 @@ TEST_CASE("ConfigDefinition simple generate test", "[config]")
|
|
||||||
{
|
|
||||||
llarp::ConfigDefinition config{true};
|
|
||||||
|
|
||||||
- config.defineOption<int>("foo", "bar", Required, Default{1});
|
|
||||||
+ config.defineOption<int>("foo", "bar", Required);
|
|
||||||
config.defineOption<int>("foo", "baz", Default{2});
|
|
||||||
- config.defineOption(std::make_unique<llarp::OptionDefinition<std::string>>(
|
|
||||||
- "foo", "quux", Required, Default{"hello"}));
|
|
||||||
+ config.defineOption(
|
|
||||||
+ std::make_unique<llarp::OptionDefinition<std::string>>("foo", "quux", Default{"hello"}));
|
|
||||||
|
|
||||||
- config.defineOption<int>("argle", "bar", RelayOnly, Required, Default{3});
|
|
||||||
+ config.defineOption<int>("argle", "bar", RelayOnly, Required);
|
|
||||||
config.defineOption<int>("argle", "baz", Default{4});
|
|
||||||
- config.defineOption<std::string>("argle", "quux", Required, Default{"the quick brown fox"});
|
|
||||||
+ config.defineOption<std::string>("argle", "quux", Default{"the quick brown fox"});
|
|
||||||
|
|
||||||
- config.defineOption<int>("not", "for-routers", ClientOnly, Required, Default{1});
|
|
||||||
+ config.defineOption<int>("not", "for-routers", ClientOnly, Default{1});
|
|
||||||
|
|
||||||
std::string output = config.generateINIConfig();
|
|
||||||
|
|
||||||
CHECK(output == R"raw([foo]
|
|
||||||
|
|
||||||
|
|
||||||
-bar=1
|
|
||||||
+#bar=
|
|
||||||
|
|
||||||
#baz=2
|
|
||||||
|
|
||||||
-quux=hello
|
|
||||||
+#quux=hello
|
|
||||||
|
|
||||||
|
|
||||||
[argle]
|
|
||||||
|
|
||||||
|
|
||||||
-bar=3
|
|
||||||
+#bar=
|
|
||||||
|
|
||||||
#baz=4
|
|
||||||
|
|
||||||
-quux=the quick brown fox
|
|
||||||
+#quux=the quick brown fox
|
|
||||||
)raw");
|
|
||||||
}
|
|
||||||
|
|
||||||
@@ -46,16 +46,24 @@ TEST_CASE("ConfigDefinition useValue test", "[config]")
|
|
||||||
{
|
|
||||||
llarp::ConfigDefinition config{true};
|
|
||||||
|
|
||||||
- config.defineOption<int>("foo", "bar", Required, Default{1});
|
|
||||||
+ config.defineOption<int>("foo", "bar", Default{1});
|
|
||||||
|
|
||||||
- constexpr auto expected = "[foo]\n\n\nbar=1\n";
|
|
||||||
+ constexpr auto expected = R"raw([foo]
|
|
||||||
+
|
|
||||||
+
|
|
||||||
+#bar=1
|
|
||||||
+)raw";
|
|
||||||
|
|
||||||
CHECK(config.generateINIConfig(false) == expected);
|
|
||||||
CHECK(config.generateINIConfig(true) == expected);
|
|
||||||
|
|
||||||
config.addConfigValue("foo", "bar", "2");
|
|
||||||
|
|
||||||
- constexpr auto expectedWhenValueProvided = "[foo]\n\n\nbar=2\n";
|
|
||||||
+ constexpr auto expectedWhenValueProvided = R"raw([foo]
|
|
||||||
+
|
|
||||||
+
|
|
||||||
+bar=2
|
|
||||||
+)raw";
|
|
||||||
|
|
||||||
CHECK(config.generateINIConfig(false) == expected);
|
|
||||||
CHECK(config.generateINIConfig(true) == expectedWhenValueProvided);
|
|
||||||
@@ -67,8 +75,7 @@ TEST_CASE("ConfigDefinition section comments test")
|
|
||||||
|
|
||||||
config.addSectionComments("foo", {"test comment"});
|
|
||||||
config.addSectionComments("foo", {"test comment 2"});
|
|
||||||
- config.defineOption(std::make_unique<llarp::OptionDefinition<int>>(
|
|
||||||
- "foo", "bar", Required, Default{1}));
|
|
||||||
+ config.defineOption(std::make_unique<llarp::OptionDefinition<int>>("foo", "bar", Default{1}));
|
|
||||||
|
|
||||||
std::string output = config.generateINIConfig();
|
|
||||||
|
|
||||||
@@ -77,7 +84,7 @@ TEST_CASE("ConfigDefinition section comments test")
|
|
||||||
# test comment 2
|
|
||||||
|
|
||||||
|
|
||||||
-bar=1
|
|
||||||
+#bar=1
|
|
||||||
)raw");
|
|
||||||
}
|
|
||||||
|
|
||||||
@@ -87,18 +94,21 @@ TEST_CASE("ConfigDefinition option comments test")
|
|
||||||
|
|
||||||
config.addOptionComments("foo", "bar", {"test comment 1"});
|
|
||||||
config.addOptionComments("foo", "bar", {"test comment 2"});
|
|
||||||
- config.defineOption<int>("foo", "bar", Required, Default{1});
|
|
||||||
+ config.defineOption<int>("foo", "bar", Default{1});
|
|
||||||
|
|
||||||
- config.defineOption<std::string>("foo", "far", Default{"abc"},
|
|
||||||
+ config.defineOption<std::string>(
|
|
||||||
+ "foo",
|
|
||||||
+ "far",
|
|
||||||
+ Default{"abc"},
|
|
||||||
Comment{
|
|
||||||
- "Fill in the missing values:",
|
|
||||||
- "___defg",
|
|
||||||
+ "Fill in the missing values:",
|
|
||||||
+ "___defg",
|
|
||||||
});
|
|
||||||
|
|
||||||
config.defineOption<int>("client", "omg", ClientOnly, Default{1}, Comment{"hi"});
|
|
||||||
config.defineOption<int>("relay", "ftw", RelayOnly, Default{1}, Comment{"bye"});
|
|
||||||
|
|
||||||
- // has comment, so still gets shown.
|
|
||||||
+ // has comment, but is hidden: we show only the comment but not the value/default.
|
|
||||||
config.defineOption<int>("foo", "old-bar", Hidden, Default{456});
|
|
||||||
config.addOptionComments("foo", "old-bar", {"old bar option"});
|
|
||||||
|
|
||||||
@@ -112,14 +122,13 @@ TEST_CASE("ConfigDefinition option comments test")
|
|
||||||
|
|
||||||
# test comment 1
|
|
||||||
# test comment 2
|
|
||||||
-bar=1
|
|
||||||
+#bar=1
|
|
||||||
|
|
||||||
# Fill in the missing values:
|
|
||||||
# ___defg
|
|
||||||
#far=abc
|
|
||||||
|
|
||||||
# old bar option
|
|
||||||
-#old-bar=456
|
|
||||||
|
|
||||||
|
|
||||||
[relay]
|
|
||||||
@@ -139,7 +148,7 @@ TEST_CASE("ConfigDefinition empty comments test")
|
|
||||||
|
|
||||||
config.addOptionComments("foo", "bar", {"option comment"});
|
|
||||||
config.addOptionComments("foo", "bar", {""});
|
|
||||||
- config.defineOption<int>("foo", "bar", Required, Default{1});
|
|
||||||
+ config.defineOption<int>("foo", "bar", Default{1});
|
|
||||||
|
|
||||||
std::string output = config.generateINIConfig();
|
|
||||||
|
|
||||||
@@ -150,7 +159,7 @@ TEST_CASE("ConfigDefinition empty comments test")
|
|
||||||
|
|
||||||
# option comment
|
|
||||||
#
|
|
||||||
-bar=1
|
|
||||||
+#bar=1
|
|
||||||
)raw");
|
|
||||||
}
|
|
||||||
|
|
||||||
@@ -161,10 +170,10 @@ TEST_CASE("ConfigDefinition multi option comments")
|
|
||||||
config.addSectionComments("foo", {"foo section comment"});
|
|
||||||
|
|
||||||
config.addOptionComments("foo", "bar", {"foo bar option comment"});
|
|
||||||
- config.defineOption<int>("foo", "bar", Required, Default{1});
|
|
||||||
+ config.defineOption<int>("foo", "bar", Default{1});
|
|
||||||
|
|
||||||
config.addOptionComments("foo", "baz", {"foo baz option comment"});
|
|
||||||
- config.defineOption<int>("foo", "baz", Required, Default{1});
|
|
||||||
+ config.defineOption<int>("foo", "baz", Default{1});
|
|
||||||
|
|
||||||
std::string output = config.generateINIConfig();
|
|
||||||
|
|
||||||
@@ -173,10 +182,9 @@ TEST_CASE("ConfigDefinition multi option comments")
|
|
||||||
|
|
||||||
|
|
||||||
# foo bar option comment
|
|
||||||
-bar=1
|
|
||||||
+#bar=1
|
|
||||||
|
|
||||||
# foo baz option comment
|
|
||||||
-baz=1
|
|
||||||
+#baz=1
|
|
||||||
)raw");
|
|
||||||
}
|
|
||||||
-
|
|
@ -1,25 +0,0 @@
|
|||||||
From: Jason Rhinelander <jason@imaginary.ca>
|
|
||||||
Date: Fri, 18 Nov 2022 16:00:12 -0400
|
|
||||||
Subject: Remove another obsolete bootstrap
|
|
||||||
|
|
||||||
I found another defunct obsolete boostrap file on a few foundation
|
|
||||||
service nodes; this adds it to the list.
|
|
||||||
---
|
|
||||||
llarp/router_contact.cpp | 4 +++-
|
|
||||||
1 file changed, 3 insertions(+), 1 deletion(-)
|
|
||||||
|
|
||||||
diff --git a/llarp/router_contact.cpp b/llarp/router_contact.cpp
|
|
||||||
index a0655f1..194a59b 100644
|
|
||||||
--- a/llarp/router_contact.cpp
|
|
||||||
+++ b/llarp/router_contact.cpp
|
|
||||||
@@ -534,7 +534,9 @@ namespace llarp
|
|
||||||
}
|
|
||||||
|
|
||||||
static constexpr std::array obsolete_bootstraps = {
|
|
||||||
- "7a16ac0b85290bcf69b2f3b52456d7e989ac8913b4afbb980614e249a3723218"sv};
|
|
||||||
+ "7a16ac0b85290bcf69b2f3b52456d7e989ac8913b4afbb980614e249a3723218"sv,
|
|
||||||
+ "e6b3a6fe5e32c379b64212c72232d65b0b88ddf9bbaed4997409d329f8519e0b"sv,
|
|
||||||
+ };
|
|
||||||
|
|
||||||
bool
|
|
||||||
RouterContact::IsObsoleteBootstrap() const
|
|
@ -1,4 +0,0 @@
|
|||||||
0001-Fix-missing-option-names.patch
|
|
||||||
0002-Make-lokid-rpc-setting-required-in-SN-mode.patch
|
|
||||||
0003-Make-Default-Required-or-Required-Hidden-compilation.patch
|
|
||||||
0004-Remove-another-obsolete-bootstrap.patch
|
|
Loading…
Reference in New Issue