From bde61a117fde2bf5be8f6d121ecd47727cfacfdd Mon Sep 17 00:00:00 2001 From: "danil.martynenko" <danil.martynenko@demlabs.net> Date: Thu, 20 Feb 2025 16:02:04 +0300 Subject: [PATCH] [*] Executing the script after joining the server or after disconnecting from the server for CLI client --- vpn/client/DapCmdHandlers/DapCmdConnect.cpp | 11 ++++++++++- vpn/client/DapCmdHandlers/DapCmdConnect.h | 3 +++ vpn/qml/handlers/DapCmdConnect.cpp | 8 ++++++-- vpn/qml/handlers/DapCmdConnect.h | 5 +++-- 4 files changed, 22 insertions(+), 5 deletions(-) diff --git a/vpn/client/DapCmdHandlers/DapCmdConnect.cpp b/vpn/client/DapCmdHandlers/DapCmdConnect.cpp index fe9b4ffd0..35120d878 100644 --- a/vpn/client/DapCmdHandlers/DapCmdConnect.cpp +++ b/vpn/client/DapCmdHandlers/DapCmdConnect.cpp @@ -71,7 +71,9 @@ void DapCmdConnect::handle(const QJsonObject* params) QMap<QString, QJsonValue> mandatoryConnParams = { {ADDRESS_KEY, params->value(ADDRESS_KEY)}, {PORT_KEY, params->value(PORT_KEY)}, - {UPDATE_ROUTE_TABLE, params->value(UPDATE_ROUTE_TABLE)} + {UPDATE_ROUTE_TABLE, params->value(UPDATE_ROUTE_TABLE)}, + {RUN_SCRIPT_PATH, params->value(RUN_SCRIPT_PATH)}, + {RUN_SCRIPT_AFTER_CONNECT, params->value(RUN_SCRIPT_AFTER_CONNECT)} }; if (!mandatoryConnParams[ADDRESS_KEY].isString() || !mandatoryConnParams[PORT_KEY].isDouble()) { @@ -93,6 +95,13 @@ void DapCmdConnect::handle(const QJsonObject* params) uint16_t port = uint16_t(mandatoryConnParams[PORT_KEY].toInt()); QString address = mandatoryConnParams[ADDRESS_KEY].toString(); + QString runScriptPath = mandatoryConnParams[RUN_SCRIPT_PATH].toString(); + + if (!runScriptPath.isEmpty()){ + bool runAfterConnect = mandatoryConnParams[RUN_SCRIPT_AFTER_CONNECT].toBool(true); + emit sigSetRunScript(runScriptPath, runAfterConnect); + } + qDebug() << "Address:" << address << ", Port:" << port << ", UpdateRouteTable:" << updateRouteTable; qDebug() << "SerialKey:" << (serialKey.isEmpty() ? "No serial key provided" : "Serial key provided"); diff --git a/vpn/client/DapCmdHandlers/DapCmdConnect.h b/vpn/client/DapCmdHandlers/DapCmdConnect.h index 7786d0f50..1d8bac67d 100644 --- a/vpn/client/DapCmdHandlers/DapCmdConnect.h +++ b/vpn/client/DapCmdHandlers/DapCmdConnect.h @@ -24,6 +24,7 @@ signals: void sigConnectNoAuth(const QString& address, uint16_t port); void sigDisconnect(); void sigRestartService(bool if_runnning); + void sigSetRunScript(const QString& runScriptPath, bool runAfterConnect); private: const QString ACTION_KEY = "action"; @@ -33,6 +34,8 @@ private: const QString ADDRESS_KEY = "address"; const QString PORT_KEY = "port"; const QString UPDATE_ROUTE_TABLE = "updateRouteTable"; + const QString RUN_SCRIPT_PATH = "run_script_path"; + const QString RUN_SCRIPT_AFTER_CONNECT = "run_script_after_connect"; const QString CODE_KEY = "code"; const QString MESSAGE_KEY = "message"; diff --git a/vpn/qml/handlers/DapCmdConnect.cpp b/vpn/qml/handlers/DapCmdConnect.cpp index 3da24dc60..56aabea35 100644 --- a/vpn/qml/handlers/DapCmdConnect.cpp +++ b/vpn/qml/handlers/DapCmdConnect.cpp @@ -7,7 +7,8 @@ DapCmdConnect::DapCmdConnect(QObject *parent) } void DapCmdConnect::sendCmdConnect(const QString& a_addr, quint16 a_port, - const QString& a_user, const QString& a_pswd, const QString& a_serial, const bool a_updateRouteTable) + const QString& a_user, const QString& a_pswd, const QString& a_serial, const bool a_updateRouteTable, + const QString& a_runScriptPath, const bool a_runAfterConnect) { QJsonObject obj; obj["action"] = "Connect"; @@ -20,7 +21,10 @@ void DapCmdConnect::sendCmdConnect(const QString& a_addr, quint16 a_port, obj["password"] = a_pswd; if ( !a_serial.isEmpty() ) obj["serial"] = QString(a_serial).remove('-'); - obj["port"] = a_port; + if ( !a_runScriptPath.isEmpty() ) { + obj["run_script_path"] = QString(a_runScriptPath); + obj["run_script_after_connect"] = a_runAfterConnect; + } sendCmd(&obj); } diff --git a/vpn/qml/handlers/DapCmdConnect.h b/vpn/qml/handlers/DapCmdConnect.h index 552bd94a6..aa873fea6 100644 --- a/vpn/qml/handlers/DapCmdConnect.h +++ b/vpn/qml/handlers/DapCmdConnect.h @@ -11,8 +11,9 @@ public: explicit DapCmdConnect(QObject *parent = nullptr); public slots: - void sendCmdConnect(const QString& a_addr, quint16 a_port, - const QString& a_user= QString(), const QString& a_pswd = QString(), const QString& a_serial= QString(), const bool a_updateRouteTable = true); + void sendCmdConnect(const QString& a_addr, quint16 a_port, const QString& a_user = QString(), const QString& a_pswd = QString(), + const QString& a_serial = QString(), const bool a_updateRouteTable = true, + const QString& a_runScriptPath = QString(), const bool a_runAfterConnect = false); void sendCmdConnectByOrder(const QString& a_addr); -- GitLab