From f8522fb26e8b1601f0c18caebfe84ff6d3ec1dfd Mon Sep 17 00:00:00 2001 From: Matthieu Gautier Date: Thu, 4 Apr 2019 16:49:07 +0200 Subject: [PATCH] Remove getNetworkInterfaces and getBestPublicIp function. They are not used at all and the windows version need some extra libs that complexify the code. Remove them for now. If it happens that they are needed, we will readd them. --- include/tools/networkTools.h | 3 - src/tools/networkTools.cpp | 151 +---------------------------------- 2 files changed, 1 insertion(+), 153 deletions(-) diff --git a/include/tools/networkTools.h b/include/tools/networkTools.h index 4281860f5..4762e2286 100644 --- a/include/tools/networkTools.h +++ b/include/tools/networkTools.h @@ -20,13 +20,10 @@ #ifndef KIWIX_NETWORKTOOLS_H #define KIWIX_NETWORKTOOLS_H -#include #include namespace kiwix { -std::map getNetworkInterfaces(); -std::string getBestPublicIp(); std::string download(const std::string& url); } diff --git a/src/tools/networkTools.cpp b/src/tools/networkTools.cpp index 3c69bad16..76d8f3dbf 100644 --- a/src/tools/networkTools.cpp +++ b/src/tools/networkTools.cpp @@ -19,167 +19,18 @@ #include -#ifdef _WIN32 -#include -#include -#else -#include -#include #include #include #include -#include -#include -#include #include -#endif #include #include #include +#include -std::map kiwix::getNetworkInterfaces() -{ - std::map interfaces; - -#ifdef _WIN32 - SOCKET sd = WSASocket(AF_INET, SOCK_DGRAM, 0, 0, 0, 0); - if (sd == (SOCKET)SOCKET_ERROR) { - std::cerr << "Failed to get a socket. Error " << WSAGetLastError() - << std::endl; - return interfaces; - } - - INTERFACE_INFO InterfaceList[20]; - unsigned long nBytesReturned; - if (WSAIoctl(sd, - SIO_GET_INTERFACE_LIST, - 0, - 0, - &InterfaceList, - sizeof(InterfaceList), - &nBytesReturned, - 0, - 0) - == SOCKET_ERROR) { - std::cerr << "Failed calling WSAIoctl: error " << WSAGetLastError() - << std::endl; - return interfaces; - } - - int nNumInterfaces = nBytesReturned / sizeof(INTERFACE_INFO); - for (int i = 0; i < nNumInterfaces; ++i) { - sockaddr_in* pAddress; - pAddress = (sockaddr_in*)&(InterfaceList[i].iiAddress); - - /* Add to the map */ - std::string interfaceName = std::string(inet_ntoa(pAddress->sin_addr)); - std::string interfaceIp = std::string(inet_ntoa(pAddress->sin_addr)); - interfaces.insert( - std::pair(interfaceName, interfaceIp)); - } -#else - /* Get Network interfaces information */ - char buf[16384]; - struct ifconf ifconf; - int fd = socket(PF_INET, SOCK_DGRAM, 0); /* Only IPV4 */ - ifconf.ifc_len = sizeof buf; - ifconf.ifc_buf = buf; - if (ioctl(fd, SIOCGIFCONF, &ifconf) != 0) { - perror("ioctl(SIOCGIFCONF)"); - exit(EXIT_FAILURE); - } - - /* Go through each interface */ - int i; - size_t len; - struct ifreq* ifreq; - ifreq = ifconf.ifc_req; - for (i = 0; i < ifconf.ifc_len;) { - if (ifreq->ifr_addr.sa_family == AF_INET) { - /* Get the network interface ip */ - char host[128] = {0}; - const int error = getnameinfo(&(ifreq->ifr_addr), - sizeof ifreq->ifr_addr, - host, - sizeof host, - 0, - 0, - NI_NUMERICHOST); - if (!error) { - std::string interfaceName = std::string(ifreq->ifr_name); - std::string interfaceIp = std::string(host); - /* Add to the map */ - interfaces.insert( - std::pair(interfaceName, interfaceIp)); - } else { - perror("getnameinfo()"); - } - } - -/* some systems have ifr_addr.sa_len and adjust the length that - * way, but not mine. weird */ -#ifndef __linux__ - len = IFNAMSIZ + ifreq->ifr_addr.sa_len; -#else - len = sizeof *ifreq; -#endif - ifreq = (struct ifreq*)((char*)ifreq + len); - i += len; - } -#endif - return interfaces; -} - -std::string kiwix::getBestPublicIp() -{ - std::map interfaces = kiwix::getNetworkInterfaces(); - -#ifndef _WIN32 - const char* const prioritizedNames[] - = {"eth0", "eth1", "wlan0", "wlan1", "en0", "en1"}; - const int count = (sizeof prioritizedNames) / (sizeof prioritizedNames[0]); - for (int i = 0; i < count; ++i) { - std::map::const_iterator it - = interfaces.find(prioritizedNames[i]); - if (it != interfaces.end()) { - return it->second; - } - } -#endif - - for (std::map::iterator iter = interfaces.begin(); - iter != interfaces.end(); - ++iter) { - std::string interfaceIp = iter->second; - if (interfaceIp.length() >= 7 && interfaceIp.substr(0, 7) == "192.168") { - return interfaceIp; - } - } - - for (std::map::iterator iter = interfaces.begin(); - iter != interfaces.end(); - ++iter) { - std::string interfaceIp = iter->second; - if (interfaceIp.length() >= 7 && interfaceIp.substr(0, 7) == "172.16.") { - return interfaceIp; - } - } - - for (std::map::iterator iter = interfaces.begin(); - iter != interfaces.end(); - ++iter) { - std::string interfaceIp = iter->second; - if (interfaceIp.length() >= 3 && interfaceIp.substr(0, 3) == "10.") { - return interfaceIp; - } - } - - return "127.0.0.1"; -} - size_t write_callback_to_iss(char* ptr, size_t size, size_t nmemb, void* userdata) { auto str = static_cast(userdata);