mirror of
				https://github.com/yuezk/GlobalProtect-openconnect.git
				synced 2025-05-20 07:26:58 -04:00 
			
		
		
		
	Fix the clientos param (#87)
* fix the clientos param * fix the clientos param
This commit is contained in:
		| @@ -8,7 +8,7 @@ | |||||||
|  |  | ||||||
| using namespace gpclient::helper; | using namespace gpclient::helper; | ||||||
|  |  | ||||||
| GatewayAuthenticator::GatewayAuthenticator(const QString& gateway, const GatewayAuthenticatorParams& params) | GatewayAuthenticator::GatewayAuthenticator(const QString& gateway, const GatewayAuthenticatorParams params) | ||||||
|     : QObject() |     : QObject() | ||||||
|     , gateway(gateway) |     , gateway(gateway) | ||||||
|     , params(params) |     , params(params) | ||||||
| @@ -29,23 +29,19 @@ void GatewayAuthenticator::authenticate() | |||||||
| { | { | ||||||
|     PLOGI << "Start gateway authentication..."; |     PLOGI << "Start gateway authentication..."; | ||||||
|  |  | ||||||
|     LoginParams loginParams; |     LoginParams loginParams { params.clientos() }; | ||||||
|     loginParams.setUser(params.username()); |     loginParams.setUser(params.username()); | ||||||
|     loginParams.setPassword(params.password()); |     loginParams.setPassword(params.password()); | ||||||
|     loginParams.setUserAuthCookie(params.userAuthCookie()); |     loginParams.setUserAuthCookie(params.userAuthCookie()); | ||||||
|  |  | ||||||
|     if (!params.clientos().isEmpty()) { |  | ||||||
|         loginParams.setClientos(params.clientos()); |  | ||||||
|     } |  | ||||||
|  |  | ||||||
|     login(loginParams); |     login(loginParams); | ||||||
| } | } | ||||||
|  |  | ||||||
| void GatewayAuthenticator::login(const LoginParams ¶ms) | void GatewayAuthenticator::login(const LoginParams &loginParams) | ||||||
| { | { | ||||||
|     PLOGI << "Trying to login the gateway at " << loginUrl << " with " << params.toUtf8(); |     PLOGI << "Trying to login the gateway at " << loginUrl << " with " << loginParams.toUtf8(); | ||||||
|  |  | ||||||
|     QNetworkReply *reply = createRequest(loginUrl, params.toUtf8()); |     QNetworkReply *reply = createRequest(loginUrl, loginParams.toUtf8()); | ||||||
|     connect(reply, &QNetworkReply::finished, this, &GatewayAuthenticator::onLoginFinished); |     connect(reply, &QNetworkReply::finished, this, &GatewayAuthenticator::onLoginFinished); | ||||||
| } | } | ||||||
|  |  | ||||||
| @@ -132,10 +128,11 @@ void GatewayAuthenticator::onPerformNormalLogin(const QString &username, const Q | |||||||
|     PLOGI << "Start to perform normal login..."; |     PLOGI << "Start to perform normal login..."; | ||||||
|  |  | ||||||
|     normalLoginWindow->setProcessing(true); |     normalLoginWindow->setProcessing(true); | ||||||
|     LoginParams params; |     LoginParams loginParams { params.clientos() }; | ||||||
|     params.setUser(username); |     loginParams.setUser(username); | ||||||
|     params.setPassword(password); |     loginParams.setPassword(password); | ||||||
|     login(params); |      | ||||||
|  |     login(loginParams); | ||||||
| } | } | ||||||
|  |  | ||||||
| void GatewayAuthenticator::onLoginWindowRejected() | void GatewayAuthenticator::onLoginWindowRejected() | ||||||
| @@ -170,12 +167,12 @@ void GatewayAuthenticator::onSAMLLoginSuccess(const QMap<QString, QString> &saml | |||||||
|         PLOGI << "SAML login succeeded, got the portal-userauthcookie " << samlResult.value("userAuthCookie"); |         PLOGI << "SAML login succeeded, got the portal-userauthcookie " << samlResult.value("userAuthCookie"); | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     LoginParams params; |     LoginParams loginParams { params.clientos() }; | ||||||
|     params.setUser(samlResult.value("username")); |     loginParams.setUser(samlResult.value("username")); | ||||||
|     params.setPreloginCookie(samlResult.value("preloginCookie")); |     loginParams.setPreloginCookie(samlResult.value("preloginCookie")); | ||||||
|     params.setUserAuthCookie(samlResult.value("userAuthCookie")); |     loginParams.setUserAuthCookie(samlResult.value("userAuthCookie")); | ||||||
|  |  | ||||||
|     login(params); |     login(loginParams); | ||||||
| } | } | ||||||
|  |  | ||||||
| void GatewayAuthenticator::onSAMLLoginFail(const QString msg) | void GatewayAuthenticator::onSAMLLoginFail(const QString msg) | ||||||
|   | |||||||
| @@ -10,7 +10,7 @@ class GatewayAuthenticator : public QObject | |||||||
| { | { | ||||||
|     Q_OBJECT |     Q_OBJECT | ||||||
| public: | public: | ||||||
|     explicit GatewayAuthenticator(const QString& gateway, const GatewayAuthenticatorParams& params); |     explicit GatewayAuthenticator(const QString& gateway, const GatewayAuthenticatorParams params); | ||||||
|     ~GatewayAuthenticator(); |     ~GatewayAuthenticator(); | ||||||
|  |  | ||||||
|     void authenticate(); |     void authenticate(); | ||||||
| @@ -30,13 +30,13 @@ private slots: | |||||||
|  |  | ||||||
| private: | private: | ||||||
|     QString gateway; |     QString gateway; | ||||||
|     const GatewayAuthenticatorParams& params; |     const GatewayAuthenticatorParams params; | ||||||
|     QString preloginUrl; |     QString preloginUrl; | ||||||
|     QString loginUrl; |     QString loginUrl; | ||||||
|  |  | ||||||
|     NormalLoginWindow *normalLoginWindow{ nullptr }; |     NormalLoginWindow *normalLoginWindow{ nullptr }; | ||||||
|  |  | ||||||
|     void login(const LoginParams& params); |     void login(const LoginParams& loginParams); | ||||||
|     void doAuth(); |     void doAuth(); | ||||||
|     void normalAuth(QString labelUsername, QString labelPassword, QString authMessage); |     void normalAuth(QString labelUsername, QString labelPassword, QString authMessage); | ||||||
|     void samlAuth(QString samlMethod, QString samlRequest, QString preloginUrl = ""); |     void samlAuth(QString samlMethod, QString samlRequest, QString preloginUrl = ""); | ||||||
|   | |||||||
| @@ -2,7 +2,7 @@ | |||||||
|  |  | ||||||
| #include <QUrlQuery> | #include <QUrlQuery> | ||||||
|  |  | ||||||
| LoginParams::LoginParams() | LoginParams::LoginParams(const QString clientos) | ||||||
| { | { | ||||||
|     params.addQueryItem("prot", QUrl::toPercentEncoding("https:")); |     params.addQueryItem("prot", QUrl::toPercentEncoding("https:")); | ||||||
|     params.addQueryItem("server", ""); |     params.addQueryItem("server", ""); | ||||||
| @@ -15,6 +15,12 @@ LoginParams::LoginParams() | |||||||
|     params.addQueryItem("direct", "yes"); |     params.addQueryItem("direct", "yes"); | ||||||
|     params.addQueryItem("clientVer", "4100"); |     params.addQueryItem("clientVer", "4100"); | ||||||
|     params.addQueryItem("os-version", QUrl::toPercentEncoding(QSysInfo::prettyProductName())); |     params.addQueryItem("os-version", QUrl::toPercentEncoding(QSysInfo::prettyProductName())); | ||||||
|  |  | ||||||
|  |     // add the clientos parameter if not empty | ||||||
|  |     if (!clientos.isEmpty()) { | ||||||
|  |         params.addQueryItem("clientos", clientos); | ||||||
|  |     } | ||||||
|  |  | ||||||
|     params.addQueryItem("portal-userauthcookie", ""); |     params.addQueryItem("portal-userauthcookie", ""); | ||||||
|     params.addQueryItem("portal-prelogonuserauthcookie", ""); |     params.addQueryItem("portal-prelogonuserauthcookie", ""); | ||||||
|     params.addQueryItem("prelogin-cookie", ""); |     params.addQueryItem("prelogin-cookie", ""); | ||||||
| @@ -55,11 +61,6 @@ void LoginParams::setPreloginCookie(const QString cookie) | |||||||
|     updateQueryItem("prelogin-cookie", cookie); |     updateQueryItem("prelogin-cookie", cookie); | ||||||
| } | } | ||||||
|  |  | ||||||
| void LoginParams::setClientos(const QString clientos) |  | ||||||
| { |  | ||||||
|     updateQueryItem("clientos", clientos); |  | ||||||
| } |  | ||||||
|  |  | ||||||
| QByteArray LoginParams::toUtf8() const | QByteArray LoginParams::toUtf8() const | ||||||
| { | { | ||||||
|     return params.toString().toUtf8(); |     return params.toString().toUtf8(); | ||||||
|   | |||||||
| @@ -6,7 +6,7 @@ | |||||||
| class LoginParams | class LoginParams | ||||||
| { | { | ||||||
| public: | public: | ||||||
|     LoginParams(); |     LoginParams(const QString clientos); | ||||||
|     ~LoginParams(); |     ~LoginParams(); | ||||||
|  |  | ||||||
|     void setUser(const QString user); |     void setUser(const QString user); | ||||||
| @@ -15,7 +15,6 @@ public: | |||||||
|     void setUserAuthCookie(const QString cookie); |     void setUserAuthCookie(const QString cookie); | ||||||
|     void setPrelogonAuthCookie(const QString cookie); |     void setPrelogonAuthCookie(const QString cookie); | ||||||
|     void setPreloginCookie(const QString cookie); |     void setPreloginCookie(const QString cookie); | ||||||
|     void setClientos(const QString clientos); |  | ||||||
|  |  | ||||||
|     QByteArray toUtf8() const; |     QByteArray toUtf8() const; | ||||||
|  |  | ||||||
|   | |||||||
| @@ -14,6 +14,7 @@ using namespace gpclient::helper; | |||||||
|  |  | ||||||
| PortalAuthenticator::PortalAuthenticator(const QString& portal, const QString& clientos) : QObject() | PortalAuthenticator::PortalAuthenticator(const QString& portal, const QString& clientos) : QObject() | ||||||
|   , portal(portal) |   , portal(portal) | ||||||
|  |   , clientos(clientos) | ||||||
|   , preloginUrl("https://" + portal + "/global-protect/prelogin.esp?tmp=tmp&kerberos-support=yes&ipv6-support=yes&clientVer=4100") |   , preloginUrl("https://" + portal + "/global-protect/prelogin.esp?tmp=tmp&kerberos-support=yes&ipv6-support=yes&clientVer=4100") | ||||||
|   , configUrl("https://" + portal + "/global-protect/getconfig.esp") |   , configUrl("https://" + portal + "/global-protect/getconfig.esp") | ||||||
| { | { | ||||||
| @@ -146,12 +147,12 @@ void PortalAuthenticator::onSAMLLoginFail(const QString msg) | |||||||
|  |  | ||||||
| void PortalAuthenticator::fetchConfig(QString username, QString password, QString preloginCookie, QString userAuthCookie) | void PortalAuthenticator::fetchConfig(QString username, QString password, QString preloginCookie, QString userAuthCookie) | ||||||
| { | { | ||||||
|     LoginParams params; |     LoginParams loginParams { clientos }; | ||||||
|     params.setServer(portal); |     loginParams.setServer(portal); | ||||||
|     params.setUser(username); |     loginParams.setUser(username); | ||||||
|     params.setPassword(password); |     loginParams.setPassword(password); | ||||||
|     params.setPreloginCookie(preloginCookie); |     loginParams.setPreloginCookie(preloginCookie); | ||||||
|     params.setUserAuthCookie(userAuthCookie); |     loginParams.setUserAuthCookie(userAuthCookie); | ||||||
|  |  | ||||||
|     // Save the username and password for future use. |     // Save the username and password for future use. | ||||||
|     this->username = username; |     this->username = username; | ||||||
| @@ -159,7 +160,7 @@ void PortalAuthenticator::fetchConfig(QString username, QString password, QStrin | |||||||
|  |  | ||||||
|     PLOGI << "Fetching the portal config from " << configUrl << " for user: " << username; |     PLOGI << "Fetching the portal config from " << configUrl << " for user: " << username; | ||||||
|  |  | ||||||
|     QNetworkReply *reply = createRequest(configUrl, params.toUtf8()); |     QNetworkReply *reply = createRequest(configUrl, loginParams.toUtf8()); | ||||||
|     connect(reply, &QNetworkReply::finished, this, &PortalAuthenticator::onFetchConfigFinished); |     connect(reply, &QNetworkReply::finished, this, &PortalAuthenticator::onFetchConfigFinished); | ||||||
| } | } | ||||||
|  |  | ||||||
|   | |||||||
| @@ -34,6 +34,7 @@ private slots: | |||||||
|  |  | ||||||
| private: | private: | ||||||
|     QString portal; |     QString portal; | ||||||
|  |     QString clientos; | ||||||
|     QString preloginUrl; |     QString preloginUrl; | ||||||
|     QString configUrl; |     QString configUrl; | ||||||
|     QString username; |     QString username; | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user