Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- void http::steam_login(const QString &uname, const QString &pwd)
- {
- app::log("Started Steam login process for \""+uname+"\"",1);
- this->login_state = 0; //log out
- this->login_storage.push_back(uname);
- this->login_storage.push_back(pwd);
- delete this->cookieJar();
- this->setCookieJar(new QNetworkCookieJar());
- QNetworkCookie steam_timezone;
- QNetworkRequest request;
- steam_timezone.setDomain(".steampowered.com");
- steam_timezone.setPath("/");
- steam_timezone.setName("timezoneOffset");
- steam_timezone.setValue((QString::number(app::core::getTimeZoneOffset().toInt() * 3600) + ",0").toUtf8());
- this->cookieJar()->insertCookie(steam_timezone);
- request.setHeader(QNetworkRequest::ContentTypeHeader, "application/x-www-form-urlencoded; charset=utf-8");
- request.setUrl(steam_login_base+"getrsakey");
- this->post(request, QString("username=%1&l=english").arg(uname).toUtf8());
- QObject::connect(this,SIGNAL(finished(QNetworkReply*)),this,SLOT(login_reciever(QNetworkReply*)));
- }
- void http::login_reciever(QNetworkReply* data)
- {
- QByteArray buffer = data->readAll();
- QJsonDocument json_buffer = QJsonDocument::fromJson(buffer);
- QNetworkRequest request;
- request.setHeader(QNetworkRequest::ContentTypeHeader, "application/x-www-form-urlencoded; charset=utf-8");
- switch (this->login_state)
- {
- case 0:
- {
- if (!(json_buffer.object().value("success").toBool()))
- {
- app::log("Login failure at stage 1 for \""+this->login_storage[0]+"\"",1);
- QObject::disconnect(this,SIGNAL(finished(QNetworkReply*)));
- this->login_state=0;
- this->login_storage.clear();
- break;
- }
- this->login_storage.push_back(json_buffer.object().value("timestamp").toString());
- this->login_storage.push_back(app::get_encrypted_password(this->login_storage[1],json_buffer.object().value("publickey_mod").toString(),json_buffer.object().value("publickey_exp").toString()));
- request.setUrl(steam_login_base+"dologin");
- this->post(request,QString("username=%1&password=%2&rsatimestamp=%3").arg(this->login_storage[0],percent_encode(this->login_storage[3]),this->login_storage[2]).toUtf8());
- this->login_state++;
- break;
- }
- case 1:
- {
- if (json_buffer.object().value("message").toString()!="SteamGuard")
- {
- app::log("Login failure at stage 2 for \""+this->login_storage[0]+"\", message: "+json_buffer.object().value("message").toString(),1);
- QObject::disconnect(this,SIGNAL(finished(QNetworkReply*)));
- this->login_state=0;
- this->login_storage.clear();
- break;
- }
- this->login_storage.push_back((app::query(QString("Enter Steam Guard code for \"%1\": ").arg(this->login_storage[0]))).toUpper());
- this->login_storage.push_back(json_buffer.object().value("emailsteamid").toString());
- request.setUrl(steam_login_base+"dologin");
- this->post(request,QString("username=%1&password=%2&emailauth=%4&emailsteamid=%5&rsatimestamp=%3").arg(this->login_storage[0],percent_encode(this->login_storage[3]),this->login_storage[2],this->login_storage[4],this->login_storage[5]).toUtf8());
- this->login_state++;
- break;
- }
- case 2:
- {
- if (!(json_buffer.object().value("login_complete").toBool()))
- {
- app::log("Login failure at stage 3 for \""+this->login_storage[0]+"\"",1);
- QObject::disconnect(this,SIGNAL(finished(QNetworkReply*)));
- this->login_state=0;
- this->login_storage.clear();
- break;
- }
- this->login_storage.push_back(json_buffer.object().value("transfer_parameters").toObject().value("token").toString());
- this->login_storage.push_back(json_buffer.object().value("transfer_parameters").toObject().value("webcookie").toString());
- request.setUrl(steam_login_base+"transfer");
- this->post(request,QString("steamid=%1&token=%2&remember_login=%3&webcookie=%4").arg(this->login_storage[5],this->login_storage[6],"true",this->login_storage[7]).toUtf8());
- this->login_state++;
- break;
- }
- case 3:
- {
- QNetworkCookie temp_cookie;
- QList<QNetworkCookie> cookies = this->cookieJar()->cookiesForUrl(QUrl(steam_login_base));
- for (int i=0; i<cookies.size(); i++)
- {
- temp_cookie=cookies[i];
- temp_cookie.setDomain(".steamcommunity.com");
- this->cookieJar()->insertCookie(temp_cookie);
- }
- this->login_state++;
- QObject::disconnect(this,SIGNAL(finished(QNetworkReply*)));
- this->login_storage.clear();
- emit login_complete();
- app::log("Successfully logged in as \""+this->login_storage[0]+"\"",1);
- break;
- }
- data->deleteLater();
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement