diff --git a/YACReader/YACReader.pro b/YACReader/YACReader.pro index 49684d37..64c639d8 100644 --- a/YACReader/YACReader.pro +++ b/YACReader/YACReader.pro @@ -12,11 +12,6 @@ DEFINES += YACREADER include (../config.pri) include (../dependencies/pdf_backend.pri) -unix:haiku { - DEFINES += _BSD_SOURCE - LIBS += -lnetwork -lbsd -} - CONFIG(force_angle) { contains(QMAKE_TARGET.arch, x86_64) { Release:DESTDIR = ../release64_angle diff --git a/YACReaderLibrary/YACReaderLibrary.pro b/YACReaderLibrary/YACReaderLibrary.pro index 70e558f8..b496b89e 100644 --- a/YACReaderLibrary/YACReaderLibrary.pro +++ b/YACReaderLibrary/YACReaderLibrary.pro @@ -18,11 +18,6 @@ DEFINES += SERVER_RELEASE YACREADER_LIBRARY include (../config.pri) include (../dependencies/pdf_backend.pri) -unix:haiku { - DEFINES += _BSD_SOURCE - LIBS += -lnetwork -lbsd -} - INCLUDEPATH += ../common/gl # there are two builds for Windows, Desktop OpenGL based and ANGLE OpenGL ES based diff --git a/YACReaderLibrary/server_config_dialog.cpp b/YACReaderLibrary/server_config_dialog.cpp index bab2be0b..e80c4510 100644 --- a/YACReaderLibrary/server_config_dialog.cpp +++ b/YACReaderLibrary/server_config_dialog.cpp @@ -1,25 +1,18 @@ -#include "server_config_dialog.h" -#include #include #include -#include -#include #include #include -#include -#include #include #include #include +#include "server_config_dialog.h" #include "yacreader_http_server.h" #include "yacreader_global_gui.h" #include "qnaturalsorting.h" #include "qrcodegen.hpp" -#include - // 192.168 (most comon local subnet for ips are always put first) // IPs are sorted using natoral sorting bool ipComparator(const QString &ip1, const QString &ip2) @@ -36,50 +29,6 @@ bool ipComparator(const QString &ip1, const QString &ip2) return naturalSortLessThanCI(ip1, ip2); } -#ifndef Q_OS_WIN32 - -#include -#include -#include -#include -#include -#include - -QList addresses() -{ - struct ifaddrs *ifAddrStruct = NULL; - struct ifaddrs *ifa = NULL; - void *tmpAddrPtr = NULL; - - QList localAddreses; - - getifaddrs(&ifAddrStruct); - - for (ifa = ifAddrStruct; ifa != NULL; ifa = ifa->ifa_next) { - if (ifa->ifa_addr) { - if (ifa->ifa_addr->sa_family == AF_INET) { // check it is IP4 - // is a valid IP4 Address - tmpAddrPtr = &((struct sockaddr_in *)ifa->ifa_addr)->sin_addr; - char addressBuffer[INET_ADDRSTRLEN]; - inet_ntop(AF_INET, tmpAddrPtr, addressBuffer, INET_ADDRSTRLEN); - localAddreses.push_back(QString(addressBuffer)); - // printf("%s IP Address %s\n", ifa->ifa_name, addressBuffer); - } else if (ifa->ifa_addr->sa_family == AF_INET6) { // check it is IP6 - // is a valid IP6 Address - tmpAddrPtr = &((struct sockaddr_in6 *)ifa->ifa_addr)->sin6_addr; - char addressBuffer[INET6_ADDRSTRLEN]; - inet_ntop(AF_INET6, tmpAddrPtr, addressBuffer, INET6_ADDRSTRLEN); - // printf("%s IP Address %s\n", ifa->ifa_name, addressBuffer); - } - } - } - if (ifAddrStruct != NULL) - freeifaddrs(ifAddrStruct); - return localAddreses; -} - -#endif - extern YACReaderHttpServer *httpServer; ServerConfigDialog::ServerConfigDialog(QWidget *parent) @@ -224,47 +173,20 @@ void ServerConfigDialog::enableperformanceWorkaround(int status) void ServerConfigDialog::generateQR() { ip->clear(); - QString dir; -#ifdef Q_OS_WIN32 - QList list = QHostInfo::fromName(QHostInfo::localHostName()).addresses(); - - QList otherAddresses; - foreach (QHostAddress add, list) { - QString tmp = add.toString(); - if (tmp.contains(".") && !tmp.startsWith("127")) { - otherAddresses.push_back(tmp); + QList addresses; + for (auto add : QNetworkInterface::allAddresses()) { + // Exclude loopback, local, multicast + if (add.isGlobal()) { + addresses.push_back(add.toString()); } } -#else - QList list = addresses(); + std::sort(addresses.begin(), addresses.end(), ipComparator); - QList otherAddresses; - foreach (QString add, list) { - QString tmp = add; - if (tmp.contains(".") && !tmp.startsWith("127")) { - otherAddresses.push_back(tmp); - } - } -#endif - - std::sort(otherAddresses.begin(), otherAddresses.end(), ipComparator); - - if (!otherAddresses.isEmpty()) { - dir = otherAddresses.first(); - otherAddresses.pop_front(); - } - - if (otherAddresses.length() > 0 || !dir.isEmpty()) { - if (!dir.isEmpty()) { - generateQR(dir + ":" + httpServer->getPort()); - - ip->addItem(dir); - } else { - generateQR(otherAddresses.first() + ":" + httpServer->getPort()); - } - ip->addItems(otherAddresses); + if (addresses.length() > 0) { + generateQR(addresses.first() + ":" + httpServer->getPort()); + ip->addItems(addresses); port->setText(httpServer->getPort()); } } diff --git a/YACReaderLibraryServer/YACReaderLibraryServer.pro b/YACReaderLibraryServer/YACReaderLibraryServer.pro index bebe2be7..b93a783d 100644 --- a/YACReaderLibraryServer/YACReaderLibraryServer.pro +++ b/YACReaderLibraryServer/YACReaderLibraryServer.pro @@ -15,6 +15,7 @@ DEFINES += SERVER_RELEASE YACREADER_LIBRARY # do a basic dependency check include(headless_config.pri) include(../dependencies/pdf_backend.pri) +include(../third_party/QrCode/QrCode.pri) greaterThan(QT_MAJOR_VERSION, 5): QT += core5compat @@ -32,11 +33,6 @@ macx { CONFIG += objective_c } -unix:haiku { - DEFINES += _BSD_SOURCE - LIBS += -lnetwork -lbsd -} - #CONFIG += release CONFIG -= flat QT += core sql network