From d135bdd87ea5b72e078e4d5137c3646e02a6fd6a Mon Sep 17 00:00:00 2001 From: XMRig Date: Sat, 2 Mar 2019 13:12:38 +0700 Subject: [PATCH] #957 Added optional embedded JSON config support. --- CMakeLists.txt | 28 ++++++---- src/base/net/Pool.cpp | 1 + src/common/config/ConfigLoader.cpp | 10 ++++ src/config.json | 2 +- src/core/ConfigLoader_default.h | 84 ++++++++++++++++++++++++++++++ 5 files changed, 113 insertions(+), 12 deletions(-) create mode 100644 src/core/ConfigLoader_default.h diff --git a/CMakeLists.txt b/CMakeLists.txt index d2009b84..f6ccc84b 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,17 +1,18 @@ cmake_minimum_required(VERSION 2.8) project(xmrig) -option(WITH_LIBCPUID "Use Libcpuid" ON) -option(WITH_AEON "CryptoNight-Lite support" ON) -option(WITH_SUMO "CryptoNight-Heavy support" ON) -option(WITH_CN_PICO "CryptoNight-Pico support" ON) -option(WITH_CN_GPU "CryptoNight-GPU support" ON) -option(WITH_HTTPD "HTTP REST API" ON) -option(WITH_DEBUG_LOG "Enable debug log output" OFF) -option(WITH_TLS "Enable OpenSSL support" ON) -option(WITH_ASM "Enable ASM PoW implementations" ON) -option(BUILD_STATIC "Build static binary" OFF) -option(ARM_TARGET "Force use specific ARM target 8 or 7" 0) +option(WITH_LIBCPUID "Use Libcpuid" ON) +option(WITH_AEON "CryptoNight-Lite support" ON) +option(WITH_SUMO "CryptoNight-Heavy support" ON) +option(WITH_CN_PICO "CryptoNight-Pico support" ON) +option(WITH_CN_GPU "CryptoNight-GPU support" ON) +option(WITH_HTTPD "HTTP REST API" ON) +option(WITH_DEBUG_LOG "Enable debug log output" OFF) +option(WITH_TLS "Enable OpenSSL support" ON) +option(WITH_ASM "Enable ASM PoW implementations" ON) +option(BUILD_STATIC "Build static binary" OFF) +option(ARM_TARGET "Force use specific ARM target 8 or 7" 0) +option(WITH_EMBEDDED_CONFIG "Enable internal embedded JSON config" OFF) include (CheckIncludeFile) include (cmake/cpu.cmake) @@ -65,6 +66,7 @@ set(HEADERS src/common/utils/mm_malloc.h src/common/xmrig.h src/core/ConfigLoader_platform.h + src/core/ConfigLoader_default.h src/core/Controller.h src/interfaces/IJobResultListener.h src/interfaces/IThread.h @@ -249,6 +251,10 @@ if (NOT WITH_CN_PICO) add_definitions(/DXMRIG_NO_CN_PICO) endif() +if (WITH_EMBEDDED_CONFIG) + add_definitions(/DXMRIG_FEATURE_EMBEDDED_CONFIG) +endif() + if (WITH_HTTPD) find_package(MHD) diff --git a/src/base/net/Pool.cpp b/src/base/net/Pool.cpp index dcea9b57..8a4d0a0a 100644 --- a/src/base/net/Pool.cpp +++ b/src/base/net/Pool.cpp @@ -132,6 +132,7 @@ xmrig::Pool::Pool(const rapidjson::Value &object) : xmrig::Pool::Pool(const char *host, uint16_t port, const char *user, const char *password, int keepAlive, bool nicehash, bool tls) : + m_enabled(true), m_nicehash(nicehash), m_tls(tls), m_keepAlive(keepAlive), diff --git a/src/common/config/ConfigLoader.cpp b/src/common/config/ConfigLoader.cpp index fd46e791..7124d121 100644 --- a/src/common/config/ConfigLoader.cpp +++ b/src/common/config/ConfigLoader.cpp @@ -47,6 +47,7 @@ #include "common/interfaces/IConfig.h" #include "common/Platform.h" #include "core/ConfigCreator.h" +#include "core/ConfigLoader_default.h" #include "core/ConfigLoader_platform.h" #include "rapidjson/document.h" #include "rapidjson/error/en.h" @@ -180,6 +181,15 @@ xmrig::IConfig *xmrig::ConfigLoader::load(Process *process, IConfigCreator *crea loadFromFile(config, process->location(Process::ExeLocation, "config.json")); } +# ifdef XMRIG_FEATURE_EMBEDDED_CONFIG + if (!config->finalize()) { + delete config; + + config = m_creator->create(); + loadFromJSON(config, default_config); + } +# endif + if (!config->finalize()) { if (!config->algorithm().isValid()) { fprintf(stderr, "No valid algorithm specified. Exiting.\n"); diff --git a/src/config.json b/src/config.json index f6646c11..5018db51 100644 --- a/src/config.json +++ b/src/config.json @@ -39,5 +39,5 @@ "safe": false, "threads": null, "user-agent": null, - "watch": false + "watch": true } \ No newline at end of file diff --git a/src/core/ConfigLoader_default.h b/src/core/ConfigLoader_default.h new file mode 100644 index 00000000..8fd0502b --- /dev/null +++ b/src/core/ConfigLoader_default.h @@ -0,0 +1,84 @@ +/* XMRig + * Copyright 2010 Jeff Garzik + * Copyright 2012-2014 pooler + * Copyright 2014 Lucas Jones + * Copyright 2014-2016 Wolf9466 + * Copyright 2016 Jay D Dee + * Copyright 2017-2018 XMR-Stak , + * Copyright 2018-2019 SChernykh + * Copyright 2016-2019 XMRig , + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#ifndef XMRIG_CONFIGLOADER_DEFAULT_H +#define XMRIG_CONFIGLOADER_DEFAULT_H + + +namespace xmrig { + + +#ifdef XMRIG_FEATURE_EMBEDDED_CONFIG +const static char *default_config = +R"===( +{ + "algo": "cryptonight", + "api": { + "port": 0, + "access-token": null, + "id": null, + "worker-id": null, + "ipv6": false, + "restricted": true + }, + "asm": true, + "autosave": true, + "av": 0, + "background": false, + "colors": true, + "cpu-affinity": null, + "cpu-priority": null, + "donate-level": 5, + "huge-pages": true, + "hw-aes": null, + "log-file": null, + "max-cpu-usage": 100, + "pools": [ + { + "url": "donate.v2.xmrig.com:3333", + "user": "YOUR_WALLET_ADDRESS", + "pass": "x", + "rig-id": null, + "nicehash": false, + "keepalive": false, + "variant": -1, + "tls": false, + "tls-fingerprint": null + } + ], + "print-time": 60, + "retries": 5, + "retry-pause": 5, + "safe": false, + "threads": null, + "user-agent": null, + "watch": false +} +)==="; +#endif + + +} /* namespace xmrig */ + +#endif /* XMRIG_CONFIGLOADER_DEFAULT_H */