mirror of https://github.com/oxen-io/lokinet
Merge remote-tracking branch 'origin/stable' into dev
This commit is contained in:
commit
c92894804c
|
@ -30,7 +30,7 @@ android {
|
||||||
versionName '0.8.4'
|
versionName '0.8.4'
|
||||||
externalNativeBuild {
|
externalNativeBuild {
|
||||||
cmake {
|
cmake {
|
||||||
// targets "lokinet-android"
|
targets "lokinet-android"
|
||||||
arguments "-DWITH_LTO=OFF", "-DCXXOPTS_BUILD_TESTS=OFF","-DWITH_TESTS=OFF", "-DCMAKE_CROSSCOMPILING=ON", "-DNATIVE_BUILD=OFF", "-DANDROID=ON", "-DANDROID_STL=c++_static", "-DBUILD_STATIC_DEPS=ON", "-DBUILD_SHARED_LIBS=OFF", "-DSTATIC_LINK=ON", "-DANDROID_ARM_MODE=arm", "-DFORCE_OXENMQ_SUBMODULE=ON"
|
arguments "-DWITH_LTO=OFF", "-DCXXOPTS_BUILD_TESTS=OFF","-DWITH_TESTS=OFF", "-DCMAKE_CROSSCOMPILING=ON", "-DNATIVE_BUILD=OFF", "-DANDROID=ON", "-DANDROID_STL=c++_static", "-DBUILD_STATIC_DEPS=ON", "-DBUILD_SHARED_LIBS=OFF", "-DSTATIC_LINK=ON", "-DANDROID_ARM_MODE=arm", "-DFORCE_OXENMQ_SUBMODULE=ON"
|
||||||
cppFlags "-std=c++17"
|
cppFlags "-std=c++17"
|
||||||
abiFilters 'x86', 'x86_64', 'armeabi-v7a', 'arm64-v8a'
|
abiFilters 'x86', 'x86_64', 'armeabi-v7a', 'arm64-v8a'
|
||||||
|
|
|
@ -24,6 +24,11 @@ if(CMAKE_SYSTEM_NAME MATCHES "Linux")
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
target_link_libraries(lokinet-bootstrap PUBLIC cpr::cpr)
|
target_link_libraries(lokinet-bootstrap PUBLIC cpr::cpr)
|
||||||
|
if(NOT WIN32)
|
||||||
|
find_package(OpenSSL REQUIRED)
|
||||||
|
# because debian sid's curl doesn't link against openssl for some godawful cursed reason
|
||||||
|
target_link_libraries(lokinet-bootstrap PUBLIC OpenSSL::Crypto)
|
||||||
|
endif()
|
||||||
|
|
||||||
foreach(exe lokinet lokinet-vpn lokinet-bootstrap)
|
foreach(exe lokinet lokinet-vpn lokinet-bootstrap)
|
||||||
if(WIN32 AND NOT MSVC_VERSION)
|
if(WIN32 AND NOT MSVC_VERSION)
|
||||||
|
@ -36,6 +41,7 @@ foreach(exe lokinet lokinet-vpn lokinet-bootstrap)
|
||||||
if(WITH_JEMALLOC)
|
if(WITH_JEMALLOC)
|
||||||
target_link_libraries(${exe} PUBLIC jemalloc)
|
target_link_libraries(${exe} PUBLIC jemalloc)
|
||||||
endif()
|
endif()
|
||||||
|
target_include_directories(${exe} PRIVATE ${CMAKE_SOURCE_DIR})
|
||||||
target_compile_definitions(${exe} PRIVATE -DVERSIONTAG=${GIT_VERSION_REAL})
|
target_compile_definitions(${exe} PRIVATE -DVERSIONTAG=${GIT_VERSION_REAL})
|
||||||
add_log_tag(${exe})
|
add_log_tag(${exe})
|
||||||
if(should_install)
|
if(should_install)
|
||||||
|
|
|
@ -1,11 +1,13 @@
|
||||||
#include <cpr/cpr.h>
|
#include <cpr/cpr.h>
|
||||||
#include <llarp/constants/files.hpp>
|
#include <llarp/constants/files.hpp>
|
||||||
#include <llarp/constants/version.hpp>
|
#include <llarp/constants/version.hpp>
|
||||||
#include <llarp/util/buffer.hpp>
|
|
||||||
#include <llarp/util/fs.hpp>
|
#include <llarp/util/fs.hpp>
|
||||||
#include <llarp/router_contact.hpp>
|
|
||||||
|
|
||||||
|
#include <fstream>
|
||||||
#include <sstream>
|
#include <sstream>
|
||||||
|
#include <iostream>
|
||||||
|
|
||||||
|
#include <unordered_map>
|
||||||
|
|
||||||
#ifndef _WIN32
|
#ifndef _WIN32
|
||||||
#include <openssl/x509.h>
|
#include <openssl/x509.h>
|
||||||
|
@ -14,21 +16,41 @@
|
||||||
namespace
|
namespace
|
||||||
{
|
{
|
||||||
int
|
int
|
||||||
exit_with_message(std::string msg, int exitcode)
|
fail(std::string msg)
|
||||||
{
|
{
|
||||||
std::cout << msg << std::endl;
|
std::cout << msg << std::endl;
|
||||||
return exitcode;
|
return 1;
|
||||||
}
|
}
|
||||||
} // namespace
|
} // namespace
|
||||||
|
|
||||||
int
|
int
|
||||||
main(int argc, char* argv[])
|
main(int argc, char* argv[])
|
||||||
{
|
{
|
||||||
std::string bootstrap_url{"https://seed.lokinet.org/lokinet.signed"};
|
const std::unordered_map<std::string, std::string> bootstrap_urls = {
|
||||||
|
{"mainnet", "https://seed.lokinet.org/lokinet.signed"},
|
||||||
|
{"lokinet", "https://seed.lokinet.org/lokinet.signed"},
|
||||||
|
{"testnet", "https://seed.lokinet.org/testnet.signed"},
|
||||||
|
{"gamma", "https://seed.lokinet.org/testnet.signed"}};
|
||||||
|
|
||||||
|
std::string bootstrap_url = bootstrap_urls.at("lokinet");
|
||||||
|
fs::path outputfile{llarp::GetDefaultBootstrap()};
|
||||||
|
|
||||||
if (argc > 1)
|
if (argc > 1)
|
||||||
{
|
{
|
||||||
bootstrap_url = argv[1];
|
if (auto itr = bootstrap_urls.find(argv[1]); itr != bootstrap_urls.end())
|
||||||
|
{
|
||||||
|
bootstrap_url = itr->second;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
bootstrap_url = argv[1];
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
if (argc > 2)
|
||||||
|
{
|
||||||
|
outputfile = fs::path{argv[2]};
|
||||||
|
}
|
||||||
|
|
||||||
cpr::Response resp =
|
cpr::Response resp =
|
||||||
#ifdef _WIN32
|
#ifdef _WIN32
|
||||||
cpr::Get(
|
cpr::Get(
|
||||||
|
@ -41,24 +63,24 @@ main(int argc, char* argv[])
|
||||||
#endif
|
#endif
|
||||||
if (resp.status_code != 200)
|
if (resp.status_code != 200)
|
||||||
{
|
{
|
||||||
return exit_with_message(
|
return fail("failed to fetch '" + bootstrap_url + "' HTTP " + std::to_string(resp.status_code));
|
||||||
"failed to fetch '" + bootstrap_url + "' HTTP " + std::to_string(resp.status_code), 1);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
std::stringstream ss;
|
std::stringstream ss;
|
||||||
ss << resp.text;
|
ss << resp.text;
|
||||||
|
|
||||||
std::string data{ss.str()};
|
std::string data{ss.str()};
|
||||||
llarp_buffer_t buf{&data[0], data.size()};
|
if (data[0] == 'l' or data[0] == 'd')
|
||||||
|
{
|
||||||
llarp::RouterContact rc;
|
try
|
||||||
if (not rc.BDecode(&buf))
|
{
|
||||||
return exit_with_message("invalid bootstrap data was fetched", 1);
|
fs::ofstream ofs{outputfile, std::ios::binary};
|
||||||
|
ofs.exceptions(fs::ofstream::failbit);
|
||||||
const auto path = llarp::GetDefaultBootstrap();
|
ofs << data;
|
||||||
if (not rc.Write(path))
|
return 0;
|
||||||
return exit_with_message("failed to write bootstrap file to " + path.string(), 1);
|
}
|
||||||
|
catch (std::exception& ex)
|
||||||
const llarp::RouterID router{rc.pubkey};
|
{
|
||||||
return exit_with_message("fetched bootstrap file for " + router.ToString(), 0);
|
return fail(std::string{"failed to write bootstrap file: "} + ex.what());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return fail("got invalid bootstrap file content");
|
||||||
}
|
}
|
||||||
|
|
|
@ -13,7 +13,14 @@
|
||||||
namespace fs = ghc::filesystem;
|
namespace fs = ghc::filesystem;
|
||||||
#else
|
#else
|
||||||
#include <filesystem>
|
#include <filesystem>
|
||||||
namespace fs = std::filesystem;
|
namespace fs
|
||||||
|
{
|
||||||
|
using namespace std::filesystem;
|
||||||
|
using ifstream = std::ifstream;
|
||||||
|
using ofstream = std::ofstream;
|
||||||
|
using fstream = std::fstream;
|
||||||
|
} // namespace fs
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifndef _MSC_VER
|
#ifndef _MSC_VER
|
||||||
|
|
Loading…
Reference in New Issue