Skip to content

Commit 361c6ce

Browse files
Add functions which return displayable addresses
1 parent dd09e3c commit 361c6ce

File tree

4 files changed

+39
-0
lines changed

4 files changed

+39
-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: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -272,6 +272,19 @@ struct NoDelete
272272

273273
} // unnamed namespace
274274

275+
std::string InternalServer::getSuffixOfRootUrlWithPort()
276+
{
277+
std::string suffix;
278+
if (m_port == 80)
279+
{
280+
suffix = m_rootPrefixOfDecodedURL;
281+
} else
282+
{
283+
suffix = ":" + std::to_string(m_port) + m_rootPrefixOfDecodedURL;
284+
}
285+
return suffix;
286+
}
287+
275288
std::pair<std::string, Library::BookIdSet> InternalServer::selectBooks(const RequestContext& request) const
276289
{
277290
// 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)