Skip to content

Commit 41d8d9b

Browse files
Add functions which return displayable addresses
1 parent dd09e3c commit 41d8d9b

File tree

4 files changed

+40
-0
lines changed

4 files changed

+40
-0
lines changed

include/server.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -69,6 +69,8 @@ namespace kiwix
6969
int getPort() const;
7070
IpAddress getAddress() const;
7171
IpMode getIpMode() const;
72+
std::string getDisplayableAddress();
73+
std::string getDisplayableAddress6();
7274

7375
protected:
7476
std::shared_ptr<Library> mp_library;

src/server.cpp

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -106,4 +106,27 @@ IpMode Server::getIpMode() const
106106
return mp_server->getIpMode();
107107
}
108108

109+
std::string Server::getDisplayableAddress()
110+
{
111+
kiwix::IpAddress addresses = Server::getAddress();
112+
if(addresses.addr.empty()) return getDisplayableAddress6(); //as a fallback return ipv6 address as one of them has to be set
113+
114+
std::string result = "http://";
115+
std::string suffix = mp_server->getSuffixOfRootUrlWithPort();
116+
117+
result = result + addresses.addr + suffix;
118+
return result;
119+
}
120+
121+
std::string Server::getDisplayableAddress6()
122+
{
123+
kiwix::IpAddress addresses = Server::getAddress();
124+
if(addresses.addr6.empty()) return getDisplayableAddress(); //as a fallback return ipv4 address as one of them has to be set
125+
126+
std::string result = "http://";
127+
std::string suffix = mp_server->getSuffixOfRootUrlWithPort();
128+
129+
result = result + "[" + addresses.addr6 + "]" + suffix;
130+
return result;
109131
}
132+
}

src/server/internalServer.cpp

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -79,6 +79,7 @@ extern "C" {
7979
#include "response.h"
8080

8181
#define DEFAULT_CACHE_SIZE 2
82+
#define HTTP_DEFAULT_PORT 80
8283

8384
namespace kiwix {
8485

@@ -272,6 +273,19 @@ struct NoDelete
272273

273274
} // unnamed namespace
274275

276+
std::string InternalServer::getSuffixOfRootUrlWithPort()
277+
{
278+
std::string suffix;
279+
if (m_port == HTTP_DEFAULT_PORT)
280+
{
281+
suffix = m_rootPrefixOfDecodedURL;
282+
} else
283+
{
284+
suffix = ":" + std::to_string(m_port) + m_rootPrefixOfDecodedURL;
285+
}
286+
return suffix;
287+
}
288+
275289
std::pair<std::string, Library::BookIdSet> InternalServer::selectBooks(const RequestContext& request) const
276290
{
277291
// Try old API

src/server/internalServer.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -124,6 +124,7 @@ class InternalServer {
124124
IpAddress getAddress() const { return m_addr; }
125125
int getPort() const { return m_port; }
126126
IpMode getIpMode() const { return m_ipMode; }
127+
std::string getSuffixOfRootUrlWithPort();
127128

128129
private: // functions
129130
std::unique_ptr<Response> handle_request(const RequestContext& request);

0 commit comments

Comments
 (0)