File tree Expand file tree Collapse file tree 4 files changed +40
-0
lines changed
Expand file tree Collapse file tree 4 files changed +40
-0
lines changed Original file line number Diff line number Diff 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;
Original file line number Diff line number Diff 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+ }
Original file line number Diff line number Diff 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
8384namespace 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+
275289std::pair<std::string, Library::BookIdSet> InternalServer::selectBooks (const RequestContext& request) const
276290{
277291 // Try old API
Original file line number Diff line number Diff 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);
You can’t perform that action at this time.
0 commit comments