Merge pull request #101 from amnezia-vpn/openvpn_random_mgmt_port
Openvpn random mgmt port [AVP-01-010]
This commit is contained in:
commit
fffa4fc031
2 changed files with 24 additions and 2 deletions
|
|
@ -2,6 +2,8 @@
|
||||||
#include <QFileInfo>
|
#include <QFileInfo>
|
||||||
#include <QProcess>
|
#include <QProcess>
|
||||||
#include <QTcpSocket>
|
#include <QTcpSocket>
|
||||||
|
#include <QTcpServer>
|
||||||
|
#include <QRandomGenerator>
|
||||||
|
|
||||||
#include "debug.h"
|
#include "debug.h"
|
||||||
#include "defines.h"
|
#include "defines.h"
|
||||||
|
|
@ -121,6 +123,21 @@ void OpenVpnProtocol::sendManagementCommand(const QString& command)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
uint OpenVpnProtocol::selectMgmtPort()
|
||||||
|
{
|
||||||
|
|
||||||
|
for (int i = 0; i < 100; ++i) {
|
||||||
|
quint32 port = QRandomGenerator::global()->generate();
|
||||||
|
port = (double)(65000-15001) * port / UINT32_MAX + 15001;
|
||||||
|
|
||||||
|
QTcpServer s;
|
||||||
|
bool ok = s.listen(QHostAddress::LocalHost, port);
|
||||||
|
if (ok) return port;
|
||||||
|
}
|
||||||
|
|
||||||
|
return m_managementPort;
|
||||||
|
}
|
||||||
|
|
||||||
void OpenVpnProtocol::updateRouteGateway(QString line)
|
void OpenVpnProtocol::updateRouteGateway(QString line)
|
||||||
{
|
{
|
||||||
// TODO: fix for macos
|
// TODO: fix for macos
|
||||||
|
|
@ -150,7 +167,10 @@ ErrorCode OpenVpnProtocol::start()
|
||||||
// QString vpnLogFileNamePath = Utils::systemLogPath() + "/openvpn.log";
|
// QString vpnLogFileNamePath = Utils::systemLogPath() + "/openvpn.log";
|
||||||
// Utils::createEmptyFile(vpnLogFileNamePath);
|
// Utils::createEmptyFile(vpnLogFileNamePath);
|
||||||
|
|
||||||
if (!m_managementServer.start(m_managementHost, m_managementPort)) {
|
uint mgmtPort = selectMgmtPort();
|
||||||
|
qDebug() << "OpenVpnProtocol::start mgmt port selected:" << mgmtPort;
|
||||||
|
|
||||||
|
if (!m_managementServer.start(m_managementHost, mgmtPort)) {
|
||||||
setLastError(ErrorCode::OpenVpnManagementServerError);
|
setLastError(ErrorCode::OpenVpnManagementServerError);
|
||||||
return lastError();
|
return lastError();
|
||||||
}
|
}
|
||||||
|
|
@ -173,7 +193,7 @@ ErrorCode OpenVpnProtocol::start()
|
||||||
}
|
}
|
||||||
m_openVpnProcess->setProgram(PermittedProcess::OpenVPN);
|
m_openVpnProcess->setProgram(PermittedProcess::OpenVPN);
|
||||||
QStringList arguments({"--config" , configPath(),
|
QStringList arguments({"--config" , configPath(),
|
||||||
"--management", m_managementHost, QString::number(m_managementPort),
|
"--management", m_managementHost, QString::number(mgmtPort),
|
||||||
"--management-client"/*, "--log", vpnLogFileNamePath */
|
"--management-client"/*, "--log", vpnLogFileNamePath */
|
||||||
});
|
});
|
||||||
m_openVpnProcess->setArguments(arguments);
|
m_openVpnProcess->setArguments(arguments);
|
||||||
|
|
|
||||||
|
|
@ -46,6 +46,8 @@ private:
|
||||||
QString m_configFileName;
|
QString m_configFileName;
|
||||||
QTemporaryFile m_configFile;
|
QTemporaryFile m_configFile;
|
||||||
|
|
||||||
|
uint selectMgmtPort();
|
||||||
|
|
||||||
private:
|
private:
|
||||||
void updateRouteGateway(QString line);
|
void updateRouteGateway(QString line);
|
||||||
void updateVpnGateway(const QString &line);
|
void updateVpnGateway(const QString &line);
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue