mirror of
https://github.com/kiwix/libkiwix.git
synced 2025-08-03 02:06:05 -04:00
Add ip availability check in server start
This commit is contained in:
parent
b80699916d
commit
95529d2c0a
@ -85,6 +85,19 @@ namespace kiwix {
|
|||||||
namespace
|
namespace
|
||||||
{
|
{
|
||||||
|
|
||||||
|
bool ipAvailable(const std::string addr)
|
||||||
|
{
|
||||||
|
auto interfaces = kiwix::getNetworkInterfacesIPv4Or6();
|
||||||
|
|
||||||
|
for (const auto& [_, interfaceIps] : interfaces) {
|
||||||
|
if ((interfaceIps.addr == addr) || (interfaceIps.addr6 == addr)) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
inline std::string normalizeRootUrl(std::string rootUrl)
|
inline std::string normalizeRootUrl(std::string rootUrl)
|
||||||
{
|
{
|
||||||
while ( !rootUrl.empty() && rootUrl.back() == '/' )
|
while ( !rootUrl.empty() && rootUrl.back() == '/' )
|
||||||
@ -484,6 +497,11 @@ bool InternalServer::start() {
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (!ipAvailable(addr)) {
|
||||||
|
std::cerr << "ERROR: IP address is not available on this system: " << addr << std::endl;
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
m_ipMode = !m_addr.addr.empty() ? IpMode::IPV4 : IpMode::IPV6;
|
m_ipMode = !m_addr.addr.empty() ? IpMode::IPV4 : IpMode::IPV6;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user