Files
amnezia-client/client/protocols/ikev2_vpn_protocol_windows.h
T

70 lines
1.6 KiB
C++
Raw Normal View History

2021-12-21 02:57:23 +03:00
#ifndef IKEV2_VPN_PROTOCOL_WINDOWS_H
#define IKEV2_VPN_PROTOCOL_WINDOWS_H
2021-10-04 19:07:49 +03:00
#include <QObject>
#include <QProcess>
#include <QString>
#include <QTemporaryFile>
#include <QTimer>
#include "vpnprotocol.h"
#include "core/ipcclient.h"
2021-10-13 15:46:00 +03:00
#include <string>
#include <memory>
#include <atomic>
#include <thread>
#include <condition_variable>
#include <mutex>
2021-10-07 22:20:45 +03:00
2021-10-13 15:46:00 +03:00
#include <stdio.h>
2021-10-07 22:20:45 +03:00
#include <windows.h>
2021-10-13 15:46:00 +03:00
#include <Ras.h>
2021-10-07 22:20:45 +03:00
#include <raserror.h>
#include <shlwapi.h>
2021-10-13 15:46:00 +03:00
#include <wincrypt.h>
2021-10-07 22:20:45 +03:00
#pragma comment(lib, "shlwapi.lib")
#pragma comment(lib, "rasapi32.lib")
2021-10-13 15:46:00 +03:00
#pragma comment(lib, "Crypt32.lib")
2021-10-07 22:20:45 +03:00
2021-10-04 19:07:49 +03:00
class Ikev2Protocol : public VpnProtocol
{
Q_OBJECT
public:
explicit Ikev2Protocol(const QJsonObject& configuration, QObject* parent = nullptr);
virtual ~Ikev2Protocol() override;
ErrorCode start() override;
void stop() override;
2021-10-07 22:20:45 +03:00
static QString tunnelName() { return "AmneziaVPN IKEv2"; }
public:
void newConnectionStateEventReceived(UINT unMsg,
RASCONNSTATE rasconnstate,
DWORD dwError);
2021-10-04 19:07:49 +03:00
private:
void readIkev2Configuration(const QJsonObject &configuration);
private:
QJsonObject m_config;
2021-10-07 22:20:45 +03:00
2023-04-11 09:50:44 -04:00
//RAS functions and parameters
2021-10-13 15:46:00 +03:00
HRASCONN hRasConn{nullptr};
2021-10-13 19:43:37 +03:00
bool create_new_vpn(const QString & vpn_name,
const QString & serv_addr);
2021-10-13 15:46:00 +03:00
bool delete_vpn_connection(const QString &vpn_name);
bool connect_to_vpn(const QString & vpn_name);
bool disconnect_vpn();
2021-10-04 19:07:49 +03:00
};
2021-10-07 22:20:45 +03:00
DWORD CALLBACK rasCallback(UINT msg, RASCONNSTATE rascs, DWORD err);
2021-12-21 02:57:23 +03:00
#endif // IKEV2_VPN_PROTOCOL_WINDOWS_H