From 4928509991ac0bec75da1300442624ae3b1b9b2d Mon Sep 17 00:00:00 2001 From: Vighnesh Date: Sun, 26 Oct 2025 20:56:36 +0530 Subject: [PATCH] Implement a function which returns server access url --- include/server.h | 1 + src/server.cpp | 28 ++++++++++++++++++++++++++++ 2 files changed, 29 insertions(+) diff --git a/include/server.h b/include/server.h index 0fbdfab6..11a33d54 100644 --- a/include/server.h +++ b/include/server.h @@ -69,6 +69,7 @@ namespace kiwix int getPort() const; IpAddress getAddress() const; IpMode getIpMode() const; + std::vector getServerAccessUrls() const; protected: std::shared_ptr mp_library; diff --git a/src/server.cpp b/src/server.cpp index 950ea774..658b5cce 100644 --- a/src/server.cpp +++ b/src/server.cpp @@ -29,6 +29,22 @@ namespace kiwix { +namespace +{ + +std::string makeServerUrl(std::string host, int port, std::string root) +{ + const int httpDefaultPort = 80; + + if (port == httpDefaultPort) { + return "http://" + host + root; + } else { + return "http://" + host + ":" + std::to_string(port) + root; + } +} + +} // unnamed namespace + Server::Server(LibraryPtr library, std::shared_ptr nameMapper) : mp_library(library), mp_nameMapper(nameMapper), @@ -112,4 +128,16 @@ IpMode Server::getIpMode() const return mp_server->getIpMode(); } +std::vector Server::getServerAccessUrls() const +{ + std::vector result; + if (!m_addr.addr.empty()) { + result.push_back(makeServerUrl(m_addr.addr, m_port, m_root)); + } + if (!m_addr.addr6.empty()) { + result.push_back(makeServerUrl("[" + m_addr.addr6 + "]", m_port, m_root)); + } + return result; +} + }