Files
amnezia-client/ipc/ipcserver.cpp
T

98 lines
2.3 KiB
C++
Raw Normal View History

2021-02-02 01:47:40 +03:00
#include "ipcserver.h"
2021-02-18 15:00:41 +03:00
#include <QObject>
2021-02-02 01:47:40 +03:00
#include <QDateTime>
2021-02-03 15:42:36 +03:00
#include <QLocalSocket>
2021-02-02 01:47:40 +03:00
2021-02-18 15:00:41 +03:00
#include "router.h"
#ifdef Q_OS_WIN
#include "tapcontroller_win.h"
#endif
2021-02-02 01:47:40 +03:00
IpcServer::IpcServer(QObject *parent):
IpcInterfaceSource(parent)
{}
int IpcServer::createPrivilegedProcess()
{
m_localpid++;
2021-02-18 15:00:41 +03:00
ProcessDescriptor pd(this);
2021-02-03 15:42:36 +03:00
// pd.serverNode->setHostUrl(QUrl(amnezia::getIpcProcessUrl(m_localpid)));
// pd.serverNode->enableRemoting(pd.ipcProcess.data());
2021-02-18 15:00:41 +03:00
//pd.localServer = QSharedPointer<QLocalServer>(new QLocalServer(this));
2021-02-03 15:42:36 +03:00
pd.localServer->setSocketOptions(QLocalServer::WorldAccessOption);
if (!pd.localServer->listen(amnezia::getIpcProcessUrl(m_localpid))) {
qDebug() << QString("Unable to start the server: %1.").arg(pd.localServer->errorString());
return -1;
}
// connect(m_server.data(), &QLocalServer::newConnection, this, &LocalServer::onNewConnection);
// qDebug().noquote() << QString("Local server started on '%1'").arg(m_server->serverName());
// m_serverNode.setHostUrl(QUrl(QStringLiteral(IPC_SERVICE_URL))); // create host node without Registry
// Make sure any connections are handed to QtRO
QObject::connect(pd.localServer.data(), &QLocalServer::newConnection, this, [pd]() {
qDebug() << "LocalServer new connection";
if (pd.serverNode) {
pd.serverNode->addHostSideConnection(pd.localServer->nextPendingConnection());
pd.serverNode->enableRemoting(pd.ipcProcess.data());
}
});
2021-02-02 01:47:40 +03:00
m_processes.insert(m_localpid, pd);
return m_localpid;
}
2021-02-18 15:00:41 +03:00
bool IpcServer::routeAdd(const QString &ip, const QString &gw, const QString &mask)
{
2021-02-21 09:44:53 -08:00
return Router::routeAdd(ip, gw, mask);
2021-02-18 15:00:41 +03:00
}
int IpcServer::routeAddList(const QString &gw, const QStringList &ips)
{
2021-02-21 09:44:53 -08:00
return Router::routeAddList(gw, ips);
2021-02-18 15:00:41 +03:00
}
bool IpcServer::clearSavedRoutes()
{
2021-02-21 09:44:53 -08:00
return Router::clearSavedRoutes();
2021-02-18 15:00:41 +03:00
}
bool IpcServer::routeDelete(const QString &ip)
{
2021-02-21 09:44:53 -08:00
return Router::routeDelete(ip);
2021-02-18 15:00:41 +03:00
}
void IpcServer::flushDns()
{
2021-02-21 09:44:53 -08:00
return Router::flushDns();
2021-02-18 15:00:41 +03:00
}
bool IpcServer::checkAndInstallDriver()
{
#ifdef Q_OS_WIN
return TapController::checkAndSetup();
#else
return true;
#endif
}
QStringList IpcServer::getTapList()
{
#ifdef Q_OS_WIN
return TapController::getTapList();
#else
return QStringList();
#endif
}