diff --git a/res/app.rc b/res/app.rc index 037d842a..fb41b8b1 100644 --- a/res/app.rc +++ b/res/app.rc @@ -1,7 +1,7 @@ #include #include "../src/version.h" -IDI_ICON1 ICON DISCARDABLE "app.ico" +101 ICON "app.ico" VS_VERSION_INFO VERSIONINFO FILEVERSION APP_VER_MAJOR,APP_VER_MINOR,APP_VER_PATCH,0 diff --git a/src/api/Httpd.cpp b/src/api/Httpd.cpp index 38b477aa..726f75e0 100644 --- a/src/api/Httpd.cpp +++ b/src/api/Httpd.cpp @@ -40,6 +40,11 @@ namespace xmrig { static const char *kAuthorization = "authorization"; static const char *kContentType = "content-type"; +#ifdef _WIN32 +static const char *favicon = nullptr; +static size_t faviconSize = 0; +#endif + } // namespace xmrig @@ -85,6 +90,17 @@ bool xmrig::Httpd::start() m_port = static_cast(rc); +# ifdef _WIN32 + HRSRC src = FindResource(nullptr, MAKEINTRESOURCE(1), RT_ICON); + if (src != nullptr) { + HGLOBAL res = LoadResource(nullptr, src); + if (res != nullptr) { + favicon = static_cast(LockResource(res)); + faviconSize = SizeofResource(nullptr, src); + } + } +# endif + return true; } @@ -118,6 +134,19 @@ void xmrig::Httpd::onHttpRequest(const HttpRequest &req) return HttpApiResponse(req.id()).end(); } + if (req.method == HTTP_GET && req.url == "/favicon.ico") { +# ifdef _WIN32 + if (favicon != nullptr) { + HttpResponse response(req.id()); + response.setHeader("Content-Type", "image/x-icon"); + + return response.end(favicon, faviconSize); + } +# endif + + return HttpResponse(req.id(), 404).end(); + } + if (req.method > 4) { return HttpApiResponse(req.id(), HTTP_STATUS_METHOD_NOT_ALLOWED).end(); } diff --git a/src/base/net/http/HttpResponse.cpp b/src/base/net/http/HttpResponse.cpp index 06b61879..3b88e29b 100644 --- a/src/base/net/http/HttpResponse.cpp +++ b/src/base/net/http/HttpResponse.cpp @@ -43,9 +43,9 @@ static const char *kUserAgent = "user-agent"; } // namespace xmrig -xmrig::HttpResponse::HttpResponse(uint64_t id) : +xmrig::HttpResponse::HttpResponse(uint64_t id, int statusCode) : m_id(id), - m_statusCode(HTTP_STATUS_OK) + m_statusCode(statusCode) { } diff --git a/src/base/net/http/HttpResponse.h b/src/base/net/http/HttpResponse.h index f8296b89..c2bc9001 100644 --- a/src/base/net/http/HttpResponse.h +++ b/src/base/net/http/HttpResponse.h @@ -38,7 +38,7 @@ namespace xmrig { class HttpResponse { public: - HttpResponse(uint64_t id); + HttpResponse(uint64_t id, int statusCode = 200); inline int statusCode() const { return m_statusCode; } inline void setHeader(const std::string &key, const std::string &value) { m_headers.insert({ key, value }); }