2 Commits 287626914a ... 709272d8bf

Author SHA1 Message Date
  Medoo 709272d8bf Версия 1.31 2 years ago
  Medoo db9a55ac32 Функция поиска пикселя возвращала другой тот тип ответа, когда число параметров не совпадало. Вместо badRequest будет возвращена более осмысленная ошибка 2 years ago
4 changed files with 65 additions and 19 deletions
  1. 2 0
      DataHelper.h
  2. 20 2
      UiHelper.h
  3. 14 14
      mainwindow.cpp
  4. 29 3
      mainwindow.h

+ 2 - 0
DataHelper.h

@@ -378,6 +378,8 @@ public:
         QList<QString> listData = TaskList.at(1).split(":");
         listData.append(TaskList.at(2).split(":"));
 
+        data_to_server = "no";
+
         if(listData.size() < 4) return;
 
         int x  = listData.at(0).toInt(), y = listData.at(1).toInt();

+ 20 - 2
UiHelper.h

@@ -108,8 +108,26 @@ bool MainWindow::isMatchString(QString &string, QStringList strings)
     return strings.contains(string);
 }
 
-void MainWindow::badRequest(QLocalSocket *socket){
-    SendToServer(socket, &BAD_REQUEST);
+void MainWindow::error(Errors err, QLocalSocket *socket){
+    SendToServer(socket, getError(err));
+}
+
+const QByteArray* MainWindow::getError(Errors err){
+    switch (err) {
+    case NO_TABS:                    return &NO_TABS_err;
+    case BAD_ID:                     return &BAD_ID_err;
+    case NO_COMMAND:                 return &NO_COMMAND_err;
+    case TAB_NOT_EXISTS:             return &TAB_NOT_EXISTS_err;
+    case BAD_CAPTCHA_TYPE:           return &BAD_CAPTCHA_TYPE_err;
+    case BAD_COMMAND_NAME:           return &BAD_COMMAND_NAME_err;
+    case BAD_PROXY_TYPE_OR_PARAMS:   return &BAD_PROXY_TYPE_OR_PARAMS_err;
+    case BAD_COMMAND_PARAM_LIST:     return &BAD_COMMAND_PARAM_LIST_err;
+    case BAD_COMMAND_NAME_OR_PARAMS: return &BAD_COMMAND_NAME_OR_PARAMS_err;
+    case BAD_MOUSE_EMULATION:        return &BAD_MOUSE_EMULATION_err;
+    case TOO_MUCH_PARAMS:            return &TOO_MUCH_PARAMS_err;
+
+    default:                         return &UNDEFINED_ERROR;
+    }
 }
 
 void MainWindow::on_pushButton_clicked(){//Нажата кнопка "Gmail"

+ 14 - 14
mainwindow.cpp

@@ -35,7 +35,7 @@ void MainWindow::readSocket()
     QLocalSocket * socket = (QLocalSocket*)sender();
 
     if(tabs.count() == 0)
-    { badRequest(socket); return; }
+    { error(NO_TABS, socket); return; }
 
     QByteArray data_to_server = "1";
 
@@ -51,7 +51,7 @@ void MainWindow::readSocket()
             for(int i = 0; i < TaskList.at(0).length(); i++){
                 if(!TaskList.at(i)[0].isDigit()){
                     if(findDigits){//1gfg5||command
-                        badRequest(socket); return;
+                        error(BAD_ID, socket); return;
                     }
                     break;//command||param
                 }
@@ -66,11 +66,11 @@ void MainWindow::readSocket()
 
         posterCommand = TaskList.at(0).toUpper().remove('_');
     }
-    else { badRequest(socket); return; }
+    else { error(NO_COMMAND, socket); return; }
     Tab *tab = getTabById(tabId);
 
     if(tab == nullptr)//такой вкладки не существует
-    { badRequest(socket); return; }
+    { error(TAB_NOT_EXISTS, socket); return; }
 
     if(isMatchString(posterCommand, {"ISLOAD"}))//проверка загрузки страницы
     { data_to_server = tab->isLoaded ? "YES" : "NO"; }
@@ -99,7 +99,7 @@ void MainWindow::readSocket()
         }
         else if(isMatchString(posterCommand, {"RECAPTCHARESPONSE", "RR"})){//получить ключ reCAPCHA(2|3)
             if(!tab->captchaResponse(data_to_server))
-            { badRequest(socket); return; }
+            { error(BAD_CAPTCHA_TYPE, socket); return; }
         }
         else if(isMatchString(posterCommand, {"DELTOR"}))//убрать подключение через TOR
             QNetworkProxy::setApplicationProxy(QNetworkProxy::NoProxy);
@@ -209,7 +209,7 @@ void MainWindow::readSocket()
         else if(isMatchString(posterCommand, {"ISBAR"})){//Проверить видна ли нижняя панель
             data_to_server = QByteArray::number(ui->progressBar->isHidden());
         }
-        else { badRequest(socket); return; }
+        else { error(BAD_COMMAND_NAME, socket); return; }
     }
     else if(TaskList.length() == 2){//Дальше идут функции с параметрами
         if(isMatchString(posterCommand, {"OPENURL", "OPEN"})){//обычная загрузка сайта
@@ -261,7 +261,7 @@ void MainWindow::readSocket()
 
         else if(isMatchString(posterCommand, {"SETPROXY"})){//установить подключение через прокси
             if(!tab->setProxy(&TaskList))
-            { badRequest(socket); return; }
+            { error(BAD_PROXY_TYPE_OR_PARAMS, socket); return; }
         }
         else if(isMatchString(posterCommand, {"SETUSERAGENT"}))//установить UserAgent
             tab->profile->setHttpUserAgent(TaskList[1]);
@@ -295,7 +295,7 @@ void MainWindow::readSocket()
                 }
                 resize(newWidth, newHeight);
             }
-            else { badRequest(socket); return; }
+            else { error(BAD_COMMAND_PARAM_LIST, socket); return; }
         }
         else if(isMatchString(posterCommand, {"SETPOSITION"})){//установить положение окна
             QList<QString> list = TaskList[1].split(":");
@@ -316,7 +316,7 @@ void MainWindow::readSocket()
                 }
                 move(newX, newY);
             }
-            else { badRequest(socket); return; }
+            else { error(BAD_COMMAND_PARAM_LIST, socket); return; }
         }
         else if(isMatchString(posterCommand, {"SETHTML"}))//установить HTML страницу
             tab->setHtml(TaskList.at(1));
@@ -375,7 +375,7 @@ void MainWindow::readSocket()
         else {
             QPoint point = getPoint(&TaskList[1]);
             if(!performeMouseEmulation(tab, &posterCommand, &point))
-            { badRequest(socket); return; }
+            { error(BAD_COMMAND_NAME_OR_PARAMS, socket); return; }
         }
     }
     else if(TaskList.length() == 3){
@@ -405,9 +405,9 @@ void MainWindow::readSocket()
 
             QPoint point = getPoint(&TaskList[2]);
             if(!performeMouseEmulation(tab, &secondParam, &point))
-            { badRequest(socket); return; }
+            { error(BAD_MOUSE_EMULATION, socket); return; }
         }
-        else { badRequest(socket); return; }
+        else { error(BAD_COMMAND_NAME, socket); return; }
     }
     else if(TaskList.length() == 4){
         if(isMatchString(posterCommand, {"SAVECOOKIES"}))//получить куки из браузера и сохранить по стандартному пути
@@ -449,9 +449,9 @@ void MainWindow::readSocket()
                             {  }
 
                 }*/
-        else { badRequest(socket); return; }
+        else { error(BAD_COMMAND_NAME, socket); return; }
     }
-    else { badRequest(socket); return; }
+    else { error(TOO_MUCH_PARAMS, socket); return; }
     /*else if(isMatchString(posterCommand, {"CAPMONSTER"})//
             QList<QString> list = TaskList[1].split(":");
                 if(list.size() == 2){

+ 29 - 3
mainwindow.h

@@ -47,11 +47,35 @@ private:
     QLocalServer server;
     QVector<QLocalSocket*> connection_list;
 
-    QString version = "v 1.3";
+    QString version = "v 1.31";
 
     QPoint getPoint(QString *str);
 
-    const QByteArray BAD_REQUEST = "badRequest";
+    enum Errors : uint{
+        NO_TABS,
+        BAD_ID,
+        NO_COMMAND,
+        TAB_NOT_EXISTS,
+        BAD_CAPTCHA_TYPE,
+        BAD_COMMAND_NAME,
+        BAD_PROXY_TYPE_OR_PARAMS,
+        BAD_COMMAND_PARAM_LIST,
+        BAD_COMMAND_NAME_OR_PARAMS,
+        BAD_MOUSE_EMULATION,
+        TOO_MUCH_PARAMS
+    };
+    const QByteArray NO_TABS_err                    = "No_Tabs_In_Browser";
+    const QByteArray BAD_ID_err                     = "Bad_Tab_Id";
+    const QByteArray NO_COMMAND_err                 = "Command_Name_Required";
+    const QByteArray TAB_NOT_EXISTS_err             = "Tab_Not_Exists";
+    const QByteArray BAD_CAPTCHA_TYPE_err           = "Bad_Captcha_Type";
+    const QByteArray BAD_COMMAND_NAME_err           = "Command_Executor_Not_Found";
+    const QByteArray BAD_PROXY_TYPE_OR_PARAMS_err   = "Bad_Proxy_Type_Or_Params";
+    const QByteArray BAD_COMMAND_PARAM_LIST_err     = "Bad_Params_Count_For_Command";
+    const QByteArray BAD_COMMAND_NAME_OR_PARAMS_err = "Bad_Command_Name_Or_Params";
+    const QByteArray BAD_MOUSE_EMULATION_err        = "Mouse_Emulation_Failed";
+    const QByteArray TOO_MUCH_PARAMS_err            = "Too_Much_Params_For_Command";
+    const QByteArray UNDEFINED_ERROR                = "Undefined_Error";
 
     int mouseClick_X;
     int mouseClick_Y;    
@@ -76,7 +100,9 @@ private slots:
     bool isMatchString(QString &string, QStringList strings);
 
     void SendToServer(QLocalSocket *socket, const QByteArray *str);
-    void badRequest  (QLocalSocket *socket);
+    void error(Errors err, QLocalSocket *socket);
+
+    const QByteArray * getError(Errors err);
 
     void mouseMoveEvent (QMouseEvent* event);
     void mousePressEvent(QMouseEvent* event);