diff --git a/vpn/client/DapCmdHandlers/DapCmdConnect.cpp b/vpn/client/DapCmdHandlers/DapCmdConnect.cpp index fe9b4ffd0ac246df7614f06661d5d439679b2bbe..35120d8788aa7d6473f8239b36b289f4dee7903a 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 7786d0f50e589511a4e1baa569d9ff9ed5b68346..1d8bac67d60f5b43a5ce8c18606ed5e2b19c8553 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 3da24dc601341b1e1837ad77be67e2770df27406..56aabea35e365fb5b87a3d7bce32824ed16cfb27 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 552bd94a6c1a0117df1e0dc04022c34379d2f764..aa873fea639f887296ac2fa893377703e070577d 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);