From 5bd6a1c028934be83f5989d03c9836f3e3b4d5fa Mon Sep 17 00:00:00 2001 From: XMRig Date: Sun, 22 Dec 2019 19:09:30 +0700 Subject: [PATCH] Added ENV support for "user", "pass" and "rig-id" fields. --- src/base/api/Api.cpp | 5 ----- src/base/kernel/Env.cpp | 5 +++++ src/base/net/stratum/BaseClient.cpp | 18 +++++++++++++++++- src/base/net/stratum/BaseClient.h | 6 +++++- src/base/net/stratum/Client.cpp | 8 ++++---- src/base/net/stratum/DaemonClient.cpp | 4 ++-- 6 files changed, 33 insertions(+), 13 deletions(-) diff --git a/src/base/api/Api.cpp b/src/base/api/Api.cpp index d30cda81b..dfd785657 100644 --- a/src/base/api/Api.cpp +++ b/src/base/api/Api.cpp @@ -26,11 +26,6 @@ #include -#ifndef _WIN32 -# include -#endif - - #include "base/api/Api.h" #include "3rdparty/http-parser/http_parser.h" #include "base/api/interfaces/IApiListener.h" diff --git a/src/base/kernel/Env.cpp b/src/base/kernel/Env.cpp index 1ec323737..fd95270de 100644 --- a/src/base/kernel/Env.cpp +++ b/src/base/kernel/Env.cpp @@ -30,6 +30,11 @@ #include +#ifndef _WIN32 +# include +#endif + + #ifndef UV_MAXHOSTNAMESIZE # ifdef MAXHOSTNAMELEN # define UV_MAXHOSTNAMESIZE (MAXHOSTNAMELEN + 1) diff --git a/src/base/net/stratum/BaseClient.cpp b/src/base/net/stratum/BaseClient.cpp index 56e5ad7c5..677b0e376 100644 --- a/src/base/net/stratum/BaseClient.cpp +++ b/src/base/net/stratum/BaseClient.cpp @@ -23,16 +23,19 @@ */ -#include "base/kernel/interfaces/IClientListener.h" #include "base/net/stratum/BaseClient.h" +#include "base/kernel/Env.h" +#include "base/kernel/interfaces/IClientListener.h" #include "base/net/stratum/SubmitResult.h" #include "rapidjson/document.h" namespace xmrig { + int64_t BaseClient::m_sequence = 1; + } /* namespace xmrig */ @@ -43,6 +46,19 @@ xmrig::BaseClient::BaseClient(int id, IClientListener *listener) : } +void xmrig::BaseClient::setPool(const Pool &pool) +{ + if (!pool.isValid()) { + return; + } + + m_pool = pool; + m_user = Env::expand(pool.user()); + m_password = Env::expand(pool.password()); + m_rigId = Env::expand(pool.rigId()); +} + + bool xmrig::BaseClient::handleResponse(int64_t id, const rapidjson::Value &result, const rapidjson::Value &error) { if (id == 1) { diff --git a/src/base/net/stratum/BaseClient.h b/src/base/net/stratum/BaseClient.h index 974e61a5e..5726b3e58 100644 --- a/src/base/net/stratum/BaseClient.h +++ b/src/base/net/stratum/BaseClient.h @@ -56,11 +56,12 @@ protected: inline int64_t sequence() const override { return m_sequence; } inline void setAlgo(const Algorithm &algo) override { m_pool.setAlgo(algo); } inline void setEnabled(bool enabled) override { m_enabled = enabled; } - inline void setPool(const Pool &pool) override { if (pool.isValid()) { m_pool = pool; } } inline void setQuiet(bool quiet) override { m_quiet = quiet; } inline void setRetries(int retries) override { m_retries = retries; } inline void setRetryPause(uint64_t ms) override { m_retryPause = ms; } + void setPool(const Pool &pool) override; + protected: enum SocketState { UnconnectedState, @@ -95,6 +96,9 @@ protected: std::map m_callbacks; std::map m_results; String m_ip; + String m_password; + String m_rigId; + String m_user; uint64_t m_retryPause = 5000; static int64_t m_sequence; diff --git a/src/base/net/stratum/Client.cpp b/src/base/net/stratum/Client.cpp index 30ef20ead..df90e40fa 100644 --- a/src/base/net/stratum/Client.cpp +++ b/src/base/net/stratum/Client.cpp @@ -624,12 +624,12 @@ void xmrig::Client::login() auto &allocator = doc.GetAllocator(); Value params(kObjectType); - params.AddMember("login", m_pool.user().toJSON(), allocator); - params.AddMember("pass", m_pool.password().toJSON(), allocator); + params.AddMember("login", m_user.toJSON(), allocator); + params.AddMember("pass", m_password.toJSON(), allocator); params.AddMember("agent", StringRef(m_agent), allocator); - if (!m_pool.rigId().isNull()) { - params.AddMember("rigid", m_pool.rigId().toJSON(), allocator); + if (!m_rigId.isNull()) { + params.AddMember("rigid", m_rigId.toJSON(), allocator); } m_listener->onLogin(this, doc, params); diff --git a/src/base/net/stratum/DaemonClient.cpp b/src/base/net/stratum/DaemonClient.cpp index 09f2a7f90..11e8256a7 100644 --- a/src/base/net/stratum/DaemonClient.cpp +++ b/src/base/net/stratum/DaemonClient.cpp @@ -284,8 +284,8 @@ int64_t xmrig::DaemonClient::getBlockTemplate() auto &allocator = doc.GetAllocator(); Value params(kObjectType); - params.AddMember("wallet_address", m_pool.user().toJSON(), allocator); - params.AddMember("reserve_size", 8, allocator); + params.AddMember("wallet_address", m_user.toJSON(), allocator); + params.AddMember("reserve_size", 8, allocator); JsonRequest::create(doc, m_sequence, "getblocktemplate", params);