Advertisement
Guest User

sends request twice

a guest
Jun 20th, 2013
212
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 4.86 KB | None | 0 0
  1. void http::steam_login(const QString &uname, const QString &pwd)
  2. {
  3.     app::log("Started Steam login process for \""+uname+"\"",1);
  4.     this->login_state = 0; //log out
  5.     this->login_storage.push_back(uname);
  6.     this->login_storage.push_back(pwd);
  7.     delete this->cookieJar();
  8.     this->setCookieJar(new QNetworkCookieJar());
  9.     QNetworkCookie steam_timezone;
  10.     QNetworkRequest request;
  11.     steam_timezone.setDomain(".steampowered.com");
  12.     steam_timezone.setPath("/");
  13.     steam_timezone.setName("timezoneOffset");
  14.     steam_timezone.setValue((QString::number(app::core::getTimeZoneOffset().toInt() * 3600) + ",0").toUtf8());
  15.     this->cookieJar()->insertCookie(steam_timezone);
  16.     request.setHeader(QNetworkRequest::ContentTypeHeader, "application/x-www-form-urlencoded; charset=utf-8");
  17.     request.setUrl(steam_login_base+"getrsakey");
  18.     this->post(request, QString("username=%1&l=english").arg(uname).toUtf8());
  19.     QObject::connect(this,SIGNAL(finished(QNetworkReply*)),this,SLOT(login_reciever(QNetworkReply*)));
  20. }
  21. void http::login_reciever(QNetworkReply* data)
  22. {
  23.     QByteArray buffer = data->readAll();
  24.     QJsonDocument json_buffer = QJsonDocument::fromJson(buffer);
  25.     QNetworkRequest request;
  26.     request.setHeader(QNetworkRequest::ContentTypeHeader, "application/x-www-form-urlencoded; charset=utf-8");
  27.     switch (this->login_state)
  28.     {
  29.     case 0:
  30.     {
  31.         if (!(json_buffer.object().value("success").toBool()))
  32.         {
  33.             app::log("Login failure at stage 1 for \""+this->login_storage[0]+"\"",1);
  34.             QObject::disconnect(this,SIGNAL(finished(QNetworkReply*)));
  35.             this->login_state=0;
  36.             this->login_storage.clear();
  37.             break;
  38.         }
  39.         this->login_storage.push_back(json_buffer.object().value("timestamp").toString());
  40.         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()));
  41.         request.setUrl(steam_login_base+"dologin");
  42.         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());
  43.         this->login_state++;
  44.         break;
  45.     }
  46.     case 1:
  47.     {
  48.         if (json_buffer.object().value("message").toString()!="SteamGuard")
  49.         {
  50.             app::log("Login failure at stage 2 for \""+this->login_storage[0]+"\", message: "+json_buffer.object().value("message").toString(),1);
  51.             QObject::disconnect(this,SIGNAL(finished(QNetworkReply*)));
  52.             this->login_state=0;
  53.             this->login_storage.clear();
  54.             break;
  55.         }
  56.         this->login_storage.push_back((app::query(QString("Enter Steam Guard code for \"%1\": ").arg(this->login_storage[0]))).toUpper());
  57.         this->login_storage.push_back(json_buffer.object().value("emailsteamid").toString());
  58.         request.setUrl(steam_login_base+"dologin");
  59.         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());
  60.         this->login_state++;
  61.         break;
  62.     }
  63.     case 2:
  64.     {
  65.         if (!(json_buffer.object().value("login_complete").toBool()))
  66.         {
  67.             app::log("Login failure at stage 3 for \""+this->login_storage[0]+"\"",1);
  68.             QObject::disconnect(this,SIGNAL(finished(QNetworkReply*)));
  69.             this->login_state=0;
  70.             this->login_storage.clear();
  71.             break;
  72.         }
  73.         this->login_storage.push_back(json_buffer.object().value("transfer_parameters").toObject().value("token").toString());
  74.         this->login_storage.push_back(json_buffer.object().value("transfer_parameters").toObject().value("webcookie").toString());
  75.         request.setUrl(steam_login_base+"transfer");
  76.         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());
  77.         this->login_state++;
  78.         break;
  79.     }
  80.     case 3:
  81.     {
  82.         QNetworkCookie temp_cookie;
  83.         QList<QNetworkCookie> cookies = this->cookieJar()->cookiesForUrl(QUrl(steam_login_base));
  84.         for (int i=0; i<cookies.size(); i++)
  85.         {
  86.             temp_cookie=cookies[i];
  87.             temp_cookie.setDomain(".steamcommunity.com");
  88.             this->cookieJar()->insertCookie(temp_cookie);
  89.         }
  90.         this->login_state++;
  91.         QObject::disconnect(this,SIGNAL(finished(QNetworkReply*)));
  92.         this->login_storage.clear();
  93.         emit login_complete();
  94.         app::log("Successfully logged in as \""+this->login_storage[0]+"\"",1);
  95.         break;
  96.     }
  97.     data->deleteLater();
  98.     }
  99. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement