This commit is contained in:
cora48 2015-02-25 10:43:21 +03:00
parent 2e1e00c54a
commit 806e03fd70
33 changed files with 4183 additions and 2874 deletions

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

BIN
.CheckKey_Th.cpp.swo Normal file

Binary file not shown.

BIN
.CheckKey_Th.cpp.swp Normal file

Binary file not shown.

View File

@ -212,15 +212,7 @@ int KeyCheckerMain()
if(strstr(msg, "202 Accepted") != NULL) if(strstr(msg, "202 Accepted") != NULL)
{ {
<<<<<<< HEAD
stt->doEmitionGreenFoundData("[Key check] -OK. Key is valid!"); stt->doEmitionGreenFoundData("[Key check] -OK. Key is valid!");
=======
#pragma region QTGUI_Area
stt->doEmitionGreenFoundData("[Key check] -OK. Key is valid!");
#pragma endregion
>>>>>>> 1f26df077976493c1916f7764c83dc03da1445fa
CSSOCKET(sock); CSSOCKET(sock);
if(emitIfOK == 0) stt->doEmitionStartScanIP(); if(emitIfOK == 0) stt->doEmitionStartScanIP();
@ -230,19 +222,9 @@ int KeyCheckerMain()
} }
else if(strstr(msg, "400 Bad Request") != NULL) else if(strstr(msg, "400 Bad Request") != NULL)
{ {
<<<<<<< HEAD
QString errorDef = GetNSErrorDefinition(msg, "notify"); QString errorDef = GetNSErrorDefinition(msg, "notify");
if(errorDef == "Invalid access key") stt->doEmitionYellowFoundData("[NS-Track] [Key is unauthorized] A valid key is required."); if(errorDef == "Invalid access key") stt->doEmitionYellowFoundData("[NS-Track] [Key is unauthorized] A valid key is required.");
else stt->doEmitionYellowFoundData("[NS-Track] -FAIL! [400 Bad Request : " + GetNSErrorDefinition(msg, "notify") + "]"); else stt->doEmitionYellowFoundData("[NS-Track] -FAIL! [400 Bad Request : " + GetNSErrorDefinition(msg, "notify") + "]");
=======
#pragma region QTGUI_Area
QString errorDef = GetNSErrorDefinition(msg, "notify");
if(errorDef == "Invalid access key") stt->doEmitionYellowFoundData("[NS-Track] [Key is unauthorized] A valid key is required.");
else stt->doEmitionYellowFoundData("[NS-Track] -FAIL! [400 Bad Request : " + GetNSErrorDefinition(msg, "notify") + "]");
#pragma endregion
>>>>>>> 1f26df077976493c1916f7764c83dc03da1445fa
CSSOCKET(sock); CSSOCKET(sock);
return -1; return -1;
} }
@ -254,20 +236,10 @@ int KeyCheckerMain()
} }
else else
{ {
<<<<<<< HEAD
=======
#pragma region QTGUI_Area
>>>>>>> 1f26df077976493c1916f7764c83dc03da1445fa
char header[64] = {0}; char header[64] = {0};
getSubStrEx(msg, "http/1.1 ", "\r\n", header, 64); getSubStrEx(msg, "http/1.1 ", "\r\n", header, 64);
stt->doEmitionYellowFoundData("[Key check] -FAIL! An error occured. (" + QString::number(WSAGetLastError()) + ") Header: <u>" + QString::fromLocal8Bit(header) + "</u>"); stt->doEmitionYellowFoundData("[Key check] -FAIL! An error occured. (" + QString::number(WSAGetLastError()) + ") Header: <u>" + QString::fromLocal8Bit(header) + "</u>");
if(gDebugMode) stt->doEmitionDebugFoundData(QString(msg)); if(gDebugMode) stt->doEmitionDebugFoundData(QString(msg));
<<<<<<< HEAD
=======
#pragma endregion
>>>>>>> 1f26df077976493c1916f7764c83dc03da1445fa
CSSOCKET(sock); CSSOCKET(sock);
return -1; return -1;
}; };
@ -277,20 +249,10 @@ int KeyCheckerMain()
} }
else else
{ {
<<<<<<< HEAD
=======
#pragma region QTGUI_Area
>>>>>>> 1f26df077976493c1916f7764c83dc03da1445fa
stt->doEmitionRedFoundData("[Key check] -Balancer replied with invalid string."); stt->doEmitionRedFoundData("[Key check] -Balancer replied with invalid string.");
if(gDebugMode) stt->doEmitionDebugFoundData(QString(msg)); if(gDebugMode) stt->doEmitionDebugFoundData(QString(msg));
CSSOCKET(sock); CSSOCKET(sock);
return -1; return -1;
<<<<<<< HEAD
=======
#pragma endregion
>>>>>>> 1f26df077976493c1916f7764c83dc03da1445fa
}; };
}; };

View File

@ -0,0 +1,300 @@
#pragma once
#include "CheckKey_Th.h"
#include "CheckProxy_Th.h"
#include "STh.h"
#include "externData.h"
#include "externFunctions.h"
void getSubStrEx(char *src, char *startStr, char *endStr, char *dest, int szDest)
{
ZeroMemory(dest, szDest);
char *ptr1 = strstri(src, startStr);
if(ptr1 != NULL)
{
char *ptr2 = strstri(ptr1, endStr);
if(ptr2 != NULL)
{
int szStartStr = strlen(startStr);
int sz = ptr2 - ptr1 - szStartStr;
strncpy(dest, ptr1 + szStartStr, sz < szDest ? sz : szDest);
};
};
}
void getSubStr(char *src, char *startStr, char *endStr, char *dest, int szDest)
{
ZeroMemory(dest, szDest);
char *ptr1 = strstri(src, startStr);
if(ptr1 != NULL)
{
char *ptr2 = strstri(ptr1, endStr);
if(ptr2 != NULL)
{
int sz = ptr2 - ptr1;
strncpy(dest, ptr1, sz < szDest ? sz : szDest);
};
};
}
int emitIfOK = -1;
int KeyCheckerMain()
{
int kLen = strlen(trcPersKey);
if(kLen == 0)
{
stt->doEmitionRedFoundData("[Key check] Key field is empty.");
return -1;
}
else if(kLen < 32)
{
stt->doEmitionRedFoundData("[Key check] Key length is not valid.");
return -1;
};
char msg[1024] = {0};
char ndbServer[64] = {0};
char ndbScript[64] = {0};
sockaddr_in sockAddr;
sockAddr.sin_family = AF_INET;
sockAddr.sin_port = htons(atoi(trcSrvPortLine));
strcpy(msg, "GET ");
strcat(msg, "/");
strcat(msg, trcScr);
strcat(msg, " HTTP/1.0\r\nHost: ");
strcat(msg, trcSrv);
strcat(msg, "\r\nX-Nescav3: True");
strcat(msg, "\r\nConnection: close");
strcat(msg, "\r\n\r\n");
HOSTENT *host;
#if defined(WIN32) || defined(_WIN32) || defined(__WIN32) && !defined(__CYGWIN__)
if(inet_addr(trcSrv) != INADDR_NONE) sockAddr.sin_addr.S_un.S_addr = inet_addr(trcSrv);
else if(host=gethostbyname (trcSrv)) ((unsigned long*) &sockAddr.sin_addr)[0] = ((unsigned long**)host->h_addr_list)[0][0];
#else
if(inet_addr(trcSrv) != INADDR_NONE) sockAddr.sin_addr.s_addr = inet_addr(trcSrv);
else if(host=gethostbyname (trcSrv)) ((unsigned long*) &sockAddr.sin_addr)[0] = ((unsigned long**)host->h_addr_list)[0][0];
#endif
SOCKET sock = socket( AF_INET, SOCK_STREAM, IPPROTO_TCP );
stt->doEmitionYellowFoundData("[Key check] Requesting server ip...");
int test = connect(sock, (sockaddr*)&sockAddr, sizeof(sockAddr));
if(test == -1)
{
stt->doEmitionRedFoundData("[Key check] -connect() returned. Cannot connect to balancer! " + QString::number(WSAGetLastError()) + ".");
CSSOCKET(sock);
return -1;
};
test = send(sock, msg, strlen(msg), 0);
if(test == -1)
{
stt->doEmitionRedFoundData("[Key check] -send() returned. Cannot send to balancer! " + QString::number(WSAGetLastError()) + ".");
CSSOCKET(sock);
return -1;
};
ZeroMemory(msg, sizeof(msg));
int ror = sizeof(msg);
test = recv(sock, msg, sizeof(msg), 0);
char buff[512] = {0};
while((test = recv(sock, msg, sizeof(msg), 0)) != 0)
{
strcat(msg, buff);
};
if(test == -1)
{
stt->doEmitionRedFoundData("[Key check] -recv() returned. Cannot recv from balancer! " + QString::number(WSAGetLastError()) + ".");
CSSOCKET(sock);
return -1;
};
char *t1;
char *t2;
if(strstr(msg, "http://") != NULL)
{
t1 = strstr(msg, "http://");
if(strstr((char*)(t1 + strlen("http://")), "/") != NULL)
{
t2 = strstr((char*)(t1 + strlen("http://")), "/");
int ln = t2 - t1 - strlen("http://");
if(ln > 64)
{
stt->doEmitionRedFoundData("[Key check] -Received server string is not valid!");
CSSOCKET(sock);
return -1;
}
else strncpy(ndbServer, (char*)(t1 + strlen("http://")), ln);
if(strlen(t2) > 64)
{
stt->doEmitionYellowFoundData("[Key check] -Fragmentation detected!");
if(strstr(t2, "\r\n") != NULL)
{
char *t3 = strstr(t2, "\r\n");
int y = (int)(t3 - t2);
if(y > 64)
{
stt->doEmitionRedFoundData("[Key check] -Received server string is not valid!");
CSSOCKET(sock);
return -1;
}
else
{
strncpy(ndbScript, t2, y);
};
}
else
{
stt->doEmitionRedFoundData("[Key check] -Received server string is not valid!");
CSSOCKET(sock);
return -1;
};
} else strcpy(ndbScript, t2);
}
else
{
stt->doEmitionRedFoundData("[Key check] -Cannot receive script value!");
CSSOCKET(sock);
return -1;
};
ZeroMemory(msg, sizeof(msg));
stt->doEmitionGreenFoundData("[Key check] -OK. -Server string aquired! Checking key...");
CSSOCKET(sock);
sockAddr.sin_family = AF_INET;
sockAddr.sin_port = htons(atoi(trcSrvPortLine));
strcpy(msg, "GET ");
strcat(msg, "/api/checkaccount?key=");
strncat(msg, trcPersKey, 32);
strcat(msg, " HTTP/1.0\r\nHost: ");
strcat(msg, ndbServer);
strcat(msg, "\r\nConnection: close");
strcat(msg, "\r\n\r\n");
#if defined(WIN32) || defined(_WIN32) || defined(__WIN32) && !defined(__CYGWIN__)
if(inet_addr(ndbServer) != INADDR_NONE) sockAddr.sin_addr.S_un.S_addr = inet_addr(ndbServer);
else if(host=gethostbyname (ndbServer)) ((unsigned long*) &sockAddr.sin_addr)[0] = ((unsigned long**)host->h_addr_list)[0][0];
#else
if(inet_addr(ndbServer) != INADDR_NONE) sockAddr.sin_addr.s_addr = inet_addr(ndbServer);
else if(host=gethostbyname (ndbServer)) ((unsigned long*) &sockAddr.sin_addr)[0] = ((unsigned long**)host->h_addr_list)[0][0];
#endif
sock = socket( AF_INET, SOCK_STREAM, IPPROTO_TCP );
int c = connect(sock, (sockaddr*)&sockAddr, sizeof(sockAddr));
if(c == SOCKET_ERROR)
{
stt->doEmitionRedFoundData("[Key check] -Connection timeout.");
CSSOCKET(sock);
return -1;
};
c = send(sock, msg, strlen(msg), 0);
if(c == SOCKET_ERROR)
{
stt->doEmitionRedFoundData("[Key check] -Send error.");
CSSOCKET(sock);
return -1;
};
ZeroMemory(msg, sizeof(msg));
test = recv(sock, msg, 512, 0);
if(strstr(msg, "202 Accepted") != NULL)
{
<<<<<<< HEAD
stt->doEmitionGreenFoundData("[Key check] -OK. Key is valid!");
=======
#pragma region QTGUI_Area
stt->doEmitionGreenFoundData("[Key check] -OK. Key is valid!");
#pragma endregion
>>>>>>> 1f26df077976493c1916f7764c83dc03da1445fa
CSSOCKET(sock);
if(emitIfOK == 0) stt->doEmitionStartScanIP();
else if(emitIfOK == 1) stt->doEmitionStartScanDNS();
else if(emitIfOK == 2) stt->doEmitionStartScanImport();
return 1;
}
else if(strstr(msg, "400 Bad Request") != NULL)
{
<<<<<<< HEAD
QString errorDef = GetNSErrorDefinition(msg, "notify");
if(errorDef == "Invalid access key") stt->doEmitionYellowFoundData("[NS-Track] [Key is unauthorized] A valid key is required.");
else stt->doEmitionYellowFoundData("[NS-Track] -FAIL! [400 Bad Request : " + GetNSErrorDefinition(msg, "notify") + "]");
=======
#pragma region QTGUI_Area
QString errorDef = GetNSErrorDefinition(msg, "notify");
if(errorDef == "Invalid access key") stt->doEmitionYellowFoundData("[NS-Track] [Key is unauthorized] A valid key is required.");
else stt->doEmitionYellowFoundData("[NS-Track] -FAIL! [400 Bad Request : " + GetNSErrorDefinition(msg, "notify") + "]");
#pragma endregion
>>>>>>> 1f26df077976493c1916f7764c83dc03da1445fa
CSSOCKET(sock);
return -1;
}
else if(strstr(msg, "503 Bad Gateway") != NULL)
{
stt->doEmitionYellowFoundData("[NS-Track] 503 Backend not responding!");
CSSOCKET(sock);
return -1;
}
else
{
<<<<<<< HEAD
=======
#pragma region QTGUI_Area
>>>>>>> 1f26df077976493c1916f7764c83dc03da1445fa
char header[64] = {0};
getSubStrEx(msg, "http/1.1 ", "\r\n", header, 64);
stt->doEmitionYellowFoundData("[Key check] -FAIL! An error occured. (" + QString::number(WSAGetLastError()) + ") Header: <u>" + QString::fromLocal8Bit(header) + "</u>");
if(gDebugMode) stt->doEmitionDebugFoundData(QString(msg));
<<<<<<< HEAD
=======
#pragma endregion
>>>>>>> 1f26df077976493c1916f7764c83dc03da1445fa
CSSOCKET(sock);
return -1;
};
ZeroMemory(msg, sizeof(msg));
CSSOCKET(sock);
}
else
{
<<<<<<< HEAD
=======
#pragma region QTGUI_Area
>>>>>>> 1f26df077976493c1916f7764c83dc03da1445fa
stt->doEmitionRedFoundData("[Key check] -Balancer replied with invalid string.");
if(gDebugMode) stt->doEmitionDebugFoundData(QString(msg));
CSSOCKET(sock);
return -1;
<<<<<<< HEAD
=======
#pragma endregion
>>>>>>> 1f26df077976493c1916f7764c83dc03da1445fa
};
};
void CheckKey_Th::run()
{
KeyCheckerMain();
};

View File

@ -0,0 +1,300 @@
#pragma once
#include "CheckKey_Th.h"
#include "CheckProxy_Th.h"
#include "STh.h"
#include "externData.h"
#include "externFunctions.h"
void getSubStrEx(char *src, char *startStr, char *endStr, char *dest, int szDest)
{
ZeroMemory(dest, szDest);
char *ptr1 = strstri(src, startStr);
if(ptr1 != NULL)
{
char *ptr2 = strstri(ptr1, endStr);
if(ptr2 != NULL)
{
int szStartStr = strlen(startStr);
int sz = ptr2 - ptr1 - szStartStr;
strncpy(dest, ptr1 + szStartStr, sz < szDest ? sz : szDest);
};
};
}
void getSubStr(char *src, char *startStr, char *endStr, char *dest, int szDest)
{
ZeroMemory(dest, szDest);
char *ptr1 = strstri(src, startStr);
if(ptr1 != NULL)
{
char *ptr2 = strstri(ptr1, endStr);
if(ptr2 != NULL)
{
int sz = ptr2 - ptr1;
strncpy(dest, ptr1, sz < szDest ? sz : szDest);
};
};
}
int emitIfOK = -1;
int KeyCheckerMain()
{
int kLen = strlen(trcPersKey);
if(kLen == 0)
{
stt->doEmitionRedFoundData("[Key check] Key field is empty.");
return -1;
}
else if(kLen < 32)
{
stt->doEmitionRedFoundData("[Key check] Key length is not valid.");
return -1;
};
char msg[1024] = {0};
char ndbServer[64] = {0};
char ndbScript[64] = {0};
sockaddr_in sockAddr;
sockAddr.sin_family = AF_INET;
sockAddr.sin_port = htons(atoi(trcSrvPortLine));
strcpy(msg, "GET ");
strcat(msg, "/");
strcat(msg, trcScr);
strcat(msg, " HTTP/1.0\r\nHost: ");
strcat(msg, trcSrv);
strcat(msg, "\r\nX-Nescav3: True");
strcat(msg, "\r\nConnection: close");
strcat(msg, "\r\n\r\n");
HOSTENT *host;
#if defined(WIN32) || defined(_WIN32) || defined(__WIN32) && !defined(__CYGWIN__)
if(inet_addr(trcSrv) != INADDR_NONE) sockAddr.sin_addr.S_un.S_addr = inet_addr(trcSrv);
else if(host=gethostbyname (trcSrv)) ((unsigned long*) &sockAddr.sin_addr)[0] = ((unsigned long**)host->h_addr_list)[0][0];
#else
if(inet_addr(trcSrv) != INADDR_NONE) sockAddr.sin_addr.s_addr = inet_addr(trcSrv);
else if(host=gethostbyname (trcSrv)) ((unsigned long*) &sockAddr.sin_addr)[0] = ((unsigned long**)host->h_addr_list)[0][0];
#endif
SOCKET sock = socket( AF_INET, SOCK_STREAM, IPPROTO_TCP );
stt->doEmitionYellowFoundData("[Key check] Requesting server ip...");
int test = connect(sock, (sockaddr*)&sockAddr, sizeof(sockAddr));
if(test == -1)
{
stt->doEmitionRedFoundData("[Key check] -connect() returned. Cannot connect to balancer! " + QString::number(WSAGetLastError()) + ".");
CSSOCKET(sock);
return -1;
};
test = send(sock, msg, strlen(msg), 0);
if(test == -1)
{
stt->doEmitionRedFoundData("[Key check] -send() returned. Cannot send to balancer! " + QString::number(WSAGetLastError()) + ".");
CSSOCKET(sock);
return -1;
};
ZeroMemory(msg, sizeof(msg));
int ror = sizeof(msg);
test = recv(sock, msg, sizeof(msg), 0);
char buff[512] = {0};
while((test = recv(sock, msg, sizeof(msg), 0)) != 0)
{
strcat(msg, buff);
};
if(test == -1)
{
stt->doEmitionRedFoundData("[Key check] -recv() returned. Cannot recv from balancer! " + QString::number(WSAGetLastError()) + ".");
CSSOCKET(sock);
return -1;
};
char *t1;
char *t2;
if(strstr(msg, "http://") != NULL)
{
t1 = strstr(msg, "http://");
if(strstr((char*)(t1 + strlen("http://")), "/") != NULL)
{
t2 = strstr((char*)(t1 + strlen("http://")), "/");
int ln = t2 - t1 - strlen("http://");
if(ln > 64)
{
stt->doEmitionRedFoundData("[Key check] -Received server string is not valid!");
CSSOCKET(sock);
return -1;
}
else strncpy(ndbServer, (char*)(t1 + strlen("http://")), ln);
if(strlen(t2) > 64)
{
stt->doEmitionYellowFoundData("[Key check] -Fragmentation detected!");
if(strstr(t2, "\r\n") != NULL)
{
char *t3 = strstr(t2, "\r\n");
int y = (int)(t3 - t2);
if(y > 64)
{
stt->doEmitionRedFoundData("[Key check] -Received server string is not valid!");
CSSOCKET(sock);
return -1;
}
else
{
strncpy(ndbScript, t2, y);
};
}
else
{
stt->doEmitionRedFoundData("[Key check] -Received server string is not valid!");
CSSOCKET(sock);
return -1;
};
} else strcpy(ndbScript, t2);
}
else
{
stt->doEmitionRedFoundData("[Key check] -Cannot receive script value!");
CSSOCKET(sock);
return -1;
};
ZeroMemory(msg, sizeof(msg));
stt->doEmitionGreenFoundData("[Key check] -OK. -Server string aquired! Checking key...");
CSSOCKET(sock);
sockAddr.sin_family = AF_INET;
sockAddr.sin_port = htons(atoi(trcSrvPortLine));
strcpy(msg, "GET ");
strcat(msg, "/api/checkaccount?key=");
strncat(msg, trcPersKey, 32);
strcat(msg, " HTTP/1.0\r\nHost: ");
strcat(msg, ndbServer);
strcat(msg, "\r\nConnection: close");
strcat(msg, "\r\n\r\n");
#if defined(WIN32) || defined(_WIN32) || defined(__WIN32) && !defined(__CYGWIN__)
if(inet_addr(ndbServer) != INADDR_NONE) sockAddr.sin_addr.S_un.S_addr = inet_addr(ndbServer);
else if(host=gethostbyname (ndbServer)) ((unsigned long*) &sockAddr.sin_addr)[0] = ((unsigned long**)host->h_addr_list)[0][0];
#else
if(inet_addr(ndbServer) != INADDR_NONE) sockAddr.sin_addr.s_addr = inet_addr(ndbServer);
else if(host=gethostbyname (ndbServer)) ((unsigned long*) &sockAddr.sin_addr)[0] = ((unsigned long**)host->h_addr_list)[0][0];
#endif
sock = socket( AF_INET, SOCK_STREAM, IPPROTO_TCP );
int c = connect(sock, (sockaddr*)&sockAddr, sizeof(sockAddr));
if(c == SOCKET_ERROR)
{
stt->doEmitionRedFoundData("[Key check] -Connection timeout.");
CSSOCKET(sock);
return -1;
};
c = send(sock, msg, strlen(msg), 0);
if(c == SOCKET_ERROR)
{
stt->doEmitionRedFoundData("[Key check] -Send error.");
CSSOCKET(sock);
return -1;
};
ZeroMemory(msg, sizeof(msg));
test = recv(sock, msg, 512, 0);
if(strstr(msg, "202 Accepted") != NULL)
{
<<<<<<< HEAD
stt->doEmitionGreenFoundData("[Key check] -OK. Key is valid!");
=======
#pragma region QTGUI_Area
stt->doEmitionGreenFoundData("[Key check] -OK. Key is valid!");
#pragma endregion
>>>>>>> 1f26df077976493c1916f7764c83dc03da1445fa
CSSOCKET(sock);
if(emitIfOK == 0) stt->doEmitionStartScanIP();
else if(emitIfOK == 1) stt->doEmitionStartScanDNS();
else if(emitIfOK == 2) stt->doEmitionStartScanImport();
return 1;
}
else if(strstr(msg, "400 Bad Request") != NULL)
{
<<<<<<< HEAD
QString errorDef = GetNSErrorDefinition(msg, "notify");
if(errorDef == "Invalid access key") stt->doEmitionYellowFoundData("[NS-Track] [Key is unauthorized] A valid key is required.");
else stt->doEmitionYellowFoundData("[NS-Track] -FAIL! [400 Bad Request : " + GetNSErrorDefinition(msg, "notify") + "]");
=======
#pragma region QTGUI_Area
QString errorDef = GetNSErrorDefinition(msg, "notify");
if(errorDef == "Invalid access key") stt->doEmitionYellowFoundData("[NS-Track] [Key is unauthorized] A valid key is required.");
else stt->doEmitionYellowFoundData("[NS-Track] -FAIL! [400 Bad Request : " + GetNSErrorDefinition(msg, "notify") + "]");
#pragma endregion
>>>>>>> 1f26df077976493c1916f7764c83dc03da1445fa
CSSOCKET(sock);
return -1;
}
else if(strstr(msg, "503 Bad Gateway") != NULL)
{
stt->doEmitionYellowFoundData("[NS-Track] 503 Backend not responding!");
CSSOCKET(sock);
return -1;
}
else
{
<<<<<<< HEAD
=======
#pragma region QTGUI_Area
>>>>>>> 1f26df077976493c1916f7764c83dc03da1445fa
char header[64] = {0};
getSubStrEx(msg, "http/1.1 ", "\r\n", header, 64);
stt->doEmitionYellowFoundData("[Key check] -FAIL! An error occured. (" + QString::number(WSAGetLastError()) + ") Header: <u>" + QString::fromLocal8Bit(header) + "</u>");
if(gDebugMode) stt->doEmitionDebugFoundData(QString(msg));
<<<<<<< HEAD
=======
#pragma endregion
>>>>>>> 1f26df077976493c1916f7764c83dc03da1445fa
CSSOCKET(sock);
return -1;
};
ZeroMemory(msg, sizeof(msg));
CSSOCKET(sock);
}
else
{
<<<<<<< HEAD
=======
#pragma region QTGUI_Area
>>>>>>> 1f26df077976493c1916f7764c83dc03da1445fa
stt->doEmitionRedFoundData("[Key check] -Balancer replied with invalid string.");
if(gDebugMode) stt->doEmitionDebugFoundData(QString(msg));
CSSOCKET(sock);
return -1;
<<<<<<< HEAD
=======
#pragma endregion
>>>>>>> 1f26df077976493c1916f7764c83dc03da1445fa
};
};
void CheckKey_Th::run()
{
KeyCheckerMain();
};

View File

@ -0,0 +1,300 @@
#pragma once
#include "CheckKey_Th.h"
#include "CheckProxy_Th.h"
#include "STh.h"
#include "externData.h"
#include "externFunctions.h"
void getSubStrEx(char *src, char *startStr, char *endStr, char *dest, int szDest)
{
ZeroMemory(dest, szDest);
char *ptr1 = strstri(src, startStr);
if(ptr1 != NULL)
{
char *ptr2 = strstri(ptr1, endStr);
if(ptr2 != NULL)
{
int szStartStr = strlen(startStr);
int sz = ptr2 - ptr1 - szStartStr;
strncpy(dest, ptr1 + szStartStr, sz < szDest ? sz : szDest);
};
};
}
void getSubStr(char *src, char *startStr, char *endStr, char *dest, int szDest)
{
ZeroMemory(dest, szDest);
char *ptr1 = strstri(src, startStr);
if(ptr1 != NULL)
{
char *ptr2 = strstri(ptr1, endStr);
if(ptr2 != NULL)
{
int sz = ptr2 - ptr1;
strncpy(dest, ptr1, sz < szDest ? sz : szDest);
};
};
}
int emitIfOK = -1;
int KeyCheckerMain()
{
int kLen = strlen(trcPersKey);
if(kLen == 0)
{
stt->doEmitionRedFoundData("[Key check] Key field is empty.");
return -1;
}
else if(kLen < 32)
{
stt->doEmitionRedFoundData("[Key check] Key length is not valid.");
return -1;
};
char msg[1024] = {0};
char ndbServer[64] = {0};
char ndbScript[64] = {0};
sockaddr_in sockAddr;
sockAddr.sin_family = AF_INET;
sockAddr.sin_port = htons(atoi(trcSrvPortLine));
strcpy(msg, "GET ");
strcat(msg, "/");
strcat(msg, trcScr);
strcat(msg, " HTTP/1.0\r\nHost: ");
strcat(msg, trcSrv);
strcat(msg, "\r\nX-Nescav3: True");
strcat(msg, "\r\nConnection: close");
strcat(msg, "\r\n\r\n");
HOSTENT *host;
#if defined(WIN32) || defined(_WIN32) || defined(__WIN32) && !defined(__CYGWIN__)
if(inet_addr(trcSrv) != INADDR_NONE) sockAddr.sin_addr.S_un.S_addr = inet_addr(trcSrv);
else if(host=gethostbyname (trcSrv)) ((unsigned long*) &sockAddr.sin_addr)[0] = ((unsigned long**)host->h_addr_list)[0][0];
#else
if(inet_addr(trcSrv) != INADDR_NONE) sockAddr.sin_addr.s_addr = inet_addr(trcSrv);
else if(host=gethostbyname (trcSrv)) ((unsigned long*) &sockAddr.sin_addr)[0] = ((unsigned long**)host->h_addr_list)[0][0];
#endif
SOCKET sock = socket( AF_INET, SOCK_STREAM, IPPROTO_TCP );
stt->doEmitionYellowFoundData("[Key check] Requesting server ip...");
int test = connect(sock, (sockaddr*)&sockAddr, sizeof(sockAddr));
if(test == -1)
{
stt->doEmitionRedFoundData("[Key check] -connect() returned. Cannot connect to balancer! " + QString::number(WSAGetLastError()) + ".");
CSSOCKET(sock);
return -1;
};
test = send(sock, msg, strlen(msg), 0);
if(test == -1)
{
stt->doEmitionRedFoundData("[Key check] -send() returned. Cannot send to balancer! " + QString::number(WSAGetLastError()) + ".");
CSSOCKET(sock);
return -1;
};
ZeroMemory(msg, sizeof(msg));
int ror = sizeof(msg);
test = recv(sock, msg, sizeof(msg), 0);
char buff[512] = {0};
while((test = recv(sock, msg, sizeof(msg), 0)) != 0)
{
strcat(msg, buff);
};
if(test == -1)
{
stt->doEmitionRedFoundData("[Key check] -recv() returned. Cannot recv from balancer! " + QString::number(WSAGetLastError()) + ".");
CSSOCKET(sock);
return -1;
};
char *t1;
char *t2;
if(strstr(msg, "http://") != NULL)
{
t1 = strstr(msg, "http://");
if(strstr((char*)(t1 + strlen("http://")), "/") != NULL)
{
t2 = strstr((char*)(t1 + strlen("http://")), "/");
int ln = t2 - t1 - strlen("http://");
if(ln > 64)
{
stt->doEmitionRedFoundData("[Key check] -Received server string is not valid!");
CSSOCKET(sock);
return -1;
}
else strncpy(ndbServer, (char*)(t1 + strlen("http://")), ln);
if(strlen(t2) > 64)
{
stt->doEmitionYellowFoundData("[Key check] -Fragmentation detected!");
if(strstr(t2, "\r\n") != NULL)
{
char *t3 = strstr(t2, "\r\n");
int y = (int)(t3 - t2);
if(y > 64)
{
stt->doEmitionRedFoundData("[Key check] -Received server string is not valid!");
CSSOCKET(sock);
return -1;
}
else
{
strncpy(ndbScript, t2, y);
};
}
else
{
stt->doEmitionRedFoundData("[Key check] -Received server string is not valid!");
CSSOCKET(sock);
return -1;
};
} else strcpy(ndbScript, t2);
}
else
{
stt->doEmitionRedFoundData("[Key check] -Cannot receive script value!");
CSSOCKET(sock);
return -1;
};
ZeroMemory(msg, sizeof(msg));
stt->doEmitionGreenFoundData("[Key check] -OK. -Server string aquired! Checking key...");
CSSOCKET(sock);
sockAddr.sin_family = AF_INET;
sockAddr.sin_port = htons(atoi(trcSrvPortLine));
strcpy(msg, "GET ");
strcat(msg, "/api/checkaccount?key=");
strncat(msg, trcPersKey, 32);
strcat(msg, " HTTP/1.0\r\nHost: ");
strcat(msg, ndbServer);
strcat(msg, "\r\nConnection: close");
strcat(msg, "\r\n\r\n");
#if defined(WIN32) || defined(_WIN32) || defined(__WIN32) && !defined(__CYGWIN__)
if(inet_addr(ndbServer) != INADDR_NONE) sockAddr.sin_addr.S_un.S_addr = inet_addr(ndbServer);
else if(host=gethostbyname (ndbServer)) ((unsigned long*) &sockAddr.sin_addr)[0] = ((unsigned long**)host->h_addr_list)[0][0];
#else
if(inet_addr(ndbServer) != INADDR_NONE) sockAddr.sin_addr.s_addr = inet_addr(ndbServer);
else if(host=gethostbyname (ndbServer)) ((unsigned long*) &sockAddr.sin_addr)[0] = ((unsigned long**)host->h_addr_list)[0][0];
#endif
sock = socket( AF_INET, SOCK_STREAM, IPPROTO_TCP );
int c = connect(sock, (sockaddr*)&sockAddr, sizeof(sockAddr));
if(c == SOCKET_ERROR)
{
stt->doEmitionRedFoundData("[Key check] -Connection timeout.");
CSSOCKET(sock);
return -1;
};
c = send(sock, msg, strlen(msg), 0);
if(c == SOCKET_ERROR)
{
stt->doEmitionRedFoundData("[Key check] -Send error.");
CSSOCKET(sock);
return -1;
};
ZeroMemory(msg, sizeof(msg));
test = recv(sock, msg, 512, 0);
if(strstr(msg, "202 Accepted") != NULL)
{
<<<<<<< HEAD
stt->doEmitionGreenFoundData("[Key check] -OK. Key is valid!");
=======
#pragma region QTGUI_Area
stt->doEmitionGreenFoundData("[Key check] -OK. Key is valid!");
#pragma endregion
>>>>>>> 1f26df077976493c1916f7764c83dc03da1445fa
CSSOCKET(sock);
if(emitIfOK == 0) stt->doEmitionStartScanIP();
else if(emitIfOK == 1) stt->doEmitionStartScanDNS();
else if(emitIfOK == 2) stt->doEmitionStartScanImport();
return 1;
}
else if(strstr(msg, "400 Bad Request") != NULL)
{
<<<<<<< HEAD
QString errorDef = GetNSErrorDefinition(msg, "notify");
if(errorDef == "Invalid access key") stt->doEmitionYellowFoundData("[NS-Track] [Key is unauthorized] A valid key is required.");
else stt->doEmitionYellowFoundData("[NS-Track] -FAIL! [400 Bad Request : " + GetNSErrorDefinition(msg, "notify") + "]");
=======
#pragma region QTGUI_Area
QString errorDef = GetNSErrorDefinition(msg, "notify");
if(errorDef == "Invalid access key") stt->doEmitionYellowFoundData("[NS-Track] [Key is unauthorized] A valid key is required.");
else stt->doEmitionYellowFoundData("[NS-Track] -FAIL! [400 Bad Request : " + GetNSErrorDefinition(msg, "notify") + "]");
#pragma endregion
>>>>>>> 1f26df077976493c1916f7764c83dc03da1445fa
CSSOCKET(sock);
return -1;
}
else if(strstr(msg, "503 Bad Gateway") != NULL)
{
stt->doEmitionYellowFoundData("[NS-Track] 503 Backend not responding!");
CSSOCKET(sock);
return -1;
}
else
{
<<<<<<< HEAD
=======
#pragma region QTGUI_Area
>>>>>>> 1f26df077976493c1916f7764c83dc03da1445fa
char header[64] = {0};
getSubStrEx(msg, "http/1.1 ", "\r\n", header, 64);
stt->doEmitionYellowFoundData("[Key check] -FAIL! An error occured. (" + QString::number(WSAGetLastError()) + ") Header: <u>" + QString::fromLocal8Bit(header) + "</u>");
if(gDebugMode) stt->doEmitionDebugFoundData(QString(msg));
<<<<<<< HEAD
=======
#pragma endregion
>>>>>>> 1f26df077976493c1916f7764c83dc03da1445fa
CSSOCKET(sock);
return -1;
};
ZeroMemory(msg, sizeof(msg));
CSSOCKET(sock);
}
else
{
<<<<<<< HEAD
=======
#pragma region QTGUI_Area
>>>>>>> 1f26df077976493c1916f7764c83dc03da1445fa
stt->doEmitionRedFoundData("[Key check] -Balancer replied with invalid string.");
if(gDebugMode) stt->doEmitionDebugFoundData(QString(msg));
CSSOCKET(sock);
return -1;
<<<<<<< HEAD
=======
#pragma endregion
>>>>>>> 1f26df077976493c1916f7764c83dc03da1445fa
};
};
void CheckKey_Th::run()
{
KeyCheckerMain();
};

View File

@ -0,0 +1,300 @@
#pragma once
#include "CheckKey_Th.h"
#include "CheckProxy_Th.h"
#include "STh.h"
#include "externData.h"
#include "externFunctions.h"
void getSubStrEx(char *src, char *startStr, char *endStr, char *dest, int szDest)
{
ZeroMemory(dest, szDest);
char *ptr1 = strstri(src, startStr);
if(ptr1 != NULL)
{
char *ptr2 = strstri(ptr1, endStr);
if(ptr2 != NULL)
{
int szStartStr = strlen(startStr);
int sz = ptr2 - ptr1 - szStartStr;
strncpy(dest, ptr1 + szStartStr, sz < szDest ? sz : szDest);
};
};
}
void getSubStr(char *src, char *startStr, char *endStr, char *dest, int szDest)
{
ZeroMemory(dest, szDest);
char *ptr1 = strstri(src, startStr);
if(ptr1 != NULL)
{
char *ptr2 = strstri(ptr1, endStr);
if(ptr2 != NULL)
{
int sz = ptr2 - ptr1;
strncpy(dest, ptr1, sz < szDest ? sz : szDest);
};
};
}
int emitIfOK = -1;
int KeyCheckerMain()
{
int kLen = strlen(trcPersKey);
if(kLen == 0)
{
stt->doEmitionRedFoundData("[Key check] Key field is empty.");
return -1;
}
else if(kLen < 32)
{
stt->doEmitionRedFoundData("[Key check] Key length is not valid.");
return -1;
};
char msg[1024] = {0};
char ndbServer[64] = {0};
char ndbScript[64] = {0};
sockaddr_in sockAddr;
sockAddr.sin_family = AF_INET;
sockAddr.sin_port = htons(atoi(trcSrvPortLine));
strcpy(msg, "GET ");
strcat(msg, "/");
strcat(msg, trcScr);
strcat(msg, " HTTP/1.0\r\nHost: ");
strcat(msg, trcSrv);
strcat(msg, "\r\nX-Nescav3: True");
strcat(msg, "\r\nConnection: close");
strcat(msg, "\r\n\r\n");
HOSTENT *host;
#if defined(WIN32) || defined(_WIN32) || defined(__WIN32) && !defined(__CYGWIN__)
if(inet_addr(trcSrv) != INADDR_NONE) sockAddr.sin_addr.S_un.S_addr = inet_addr(trcSrv);
else if(host=gethostbyname (trcSrv)) ((unsigned long*) &sockAddr.sin_addr)[0] = ((unsigned long**)host->h_addr_list)[0][0];
#else
if(inet_addr(trcSrv) != INADDR_NONE) sockAddr.sin_addr.s_addr = inet_addr(trcSrv);
else if(host=gethostbyname (trcSrv)) ((unsigned long*) &sockAddr.sin_addr)[0] = ((unsigned long**)host->h_addr_list)[0][0];
#endif
SOCKET sock = socket( AF_INET, SOCK_STREAM, IPPROTO_TCP );
stt->doEmitionYellowFoundData("[Key check] Requesting server ip...");
int test = connect(sock, (sockaddr*)&sockAddr, sizeof(sockAddr));
if(test == -1)
{
stt->doEmitionRedFoundData("[Key check] -connect() returned. Cannot connect to balancer! " + QString::number(WSAGetLastError()) + ".");
CSSOCKET(sock);
return -1;
};
test = send(sock, msg, strlen(msg), 0);
if(test == -1)
{
stt->doEmitionRedFoundData("[Key check] -send() returned. Cannot send to balancer! " + QString::number(WSAGetLastError()) + ".");
CSSOCKET(sock);
return -1;
};
ZeroMemory(msg, sizeof(msg));
int ror = sizeof(msg);
test = recv(sock, msg, sizeof(msg), 0);
char buff[512] = {0};
while((test = recv(sock, msg, sizeof(msg), 0)) != 0)
{
strcat(msg, buff);
};
if(test == -1)
{
stt->doEmitionRedFoundData("[Key check] -recv() returned. Cannot recv from balancer! " + QString::number(WSAGetLastError()) + ".");
CSSOCKET(sock);
return -1;
};
char *t1;
char *t2;
if(strstr(msg, "http://") != NULL)
{
t1 = strstr(msg, "http://");
if(strstr((char*)(t1 + strlen("http://")), "/") != NULL)
{
t2 = strstr((char*)(t1 + strlen("http://")), "/");
int ln = t2 - t1 - strlen("http://");
if(ln > 64)
{
stt->doEmitionRedFoundData("[Key check] -Received server string is not valid!");
CSSOCKET(sock);
return -1;
}
else strncpy(ndbServer, (char*)(t1 + strlen("http://")), ln);
if(strlen(t2) > 64)
{
stt->doEmitionYellowFoundData("[Key check] -Fragmentation detected!");
if(strstr(t2, "\r\n") != NULL)
{
char *t3 = strstr(t2, "\r\n");
int y = (int)(t3 - t2);
if(y > 64)
{
stt->doEmitionRedFoundData("[Key check] -Received server string is not valid!");
CSSOCKET(sock);
return -1;
}
else
{
strncpy(ndbScript, t2, y);
};
}
else
{
stt->doEmitionRedFoundData("[Key check] -Received server string is not valid!");
CSSOCKET(sock);
return -1;
};
} else strcpy(ndbScript, t2);
}
else
{
stt->doEmitionRedFoundData("[Key check] -Cannot receive script value!");
CSSOCKET(sock);
return -1;
};
ZeroMemory(msg, sizeof(msg));
stt->doEmitionGreenFoundData("[Key check] -OK. -Server string aquired! Checking key...");
CSSOCKET(sock);
sockAddr.sin_family = AF_INET;
sockAddr.sin_port = htons(atoi(trcSrvPortLine));
strcpy(msg, "GET ");
strcat(msg, "/api/checkaccount?key=");
strncat(msg, trcPersKey, 32);
strcat(msg, " HTTP/1.0\r\nHost: ");
strcat(msg, ndbServer);
strcat(msg, "\r\nConnection: close");
strcat(msg, "\r\n\r\n");
#if defined(WIN32) || defined(_WIN32) || defined(__WIN32) && !defined(__CYGWIN__)
if(inet_addr(ndbServer) != INADDR_NONE) sockAddr.sin_addr.S_un.S_addr = inet_addr(ndbServer);
else if(host=gethostbyname (ndbServer)) ((unsigned long*) &sockAddr.sin_addr)[0] = ((unsigned long**)host->h_addr_list)[0][0];
#else
if(inet_addr(ndbServer) != INADDR_NONE) sockAddr.sin_addr.s_addr = inet_addr(ndbServer);
else if(host=gethostbyname (ndbServer)) ((unsigned long*) &sockAddr.sin_addr)[0] = ((unsigned long**)host->h_addr_list)[0][0];
#endif
sock = socket( AF_INET, SOCK_STREAM, IPPROTO_TCP );
int c = connect(sock, (sockaddr*)&sockAddr, sizeof(sockAddr));
if(c == SOCKET_ERROR)
{
stt->doEmitionRedFoundData("[Key check] -Connection timeout.");
CSSOCKET(sock);
return -1;
};
c = send(sock, msg, strlen(msg), 0);
if(c == SOCKET_ERROR)
{
stt->doEmitionRedFoundData("[Key check] -Send error.");
CSSOCKET(sock);
return -1;
};
ZeroMemory(msg, sizeof(msg));
test = recv(sock, msg, 512, 0);
if(strstr(msg, "202 Accepted") != NULL)
{
<<<<<<< HEAD
stt->doEmitionGreenFoundData("[Key check] -OK. Key is valid!");
=======
#pragma region QTGUI_Area
stt->doEmitionGreenFoundData("[Key check] -OK. Key is valid!");
#pragma endregion
>>>>>>> 1f26df077976493c1916f7764c83dc03da1445fa
CSSOCKET(sock);
if(emitIfOK == 0) stt->doEmitionStartScanIP();
else if(emitIfOK == 1) stt->doEmitionStartScanDNS();
else if(emitIfOK == 2) stt->doEmitionStartScanImport();
return 1;
}
else if(strstr(msg, "400 Bad Request") != NULL)
{
<<<<<<< HEAD
QString errorDef = GetNSErrorDefinition(msg, "notify");
if(errorDef == "Invalid access key") stt->doEmitionYellowFoundData("[NS-Track] [Key is unauthorized] A valid key is required.");
else stt->doEmitionYellowFoundData("[NS-Track] -FAIL! [400 Bad Request : " + GetNSErrorDefinition(msg, "notify") + "]");
=======
#pragma region QTGUI_Area
QString errorDef = GetNSErrorDefinition(msg, "notify");
if(errorDef == "Invalid access key") stt->doEmitionYellowFoundData("[NS-Track] [Key is unauthorized] A valid key is required.");
else stt->doEmitionYellowFoundData("[NS-Track] -FAIL! [400 Bad Request : " + GetNSErrorDefinition(msg, "notify") + "]");
#pragma endregion
>>>>>>> 1f26df077976493c1916f7764c83dc03da1445fa
CSSOCKET(sock);
return -1;
}
else if(strstr(msg, "503 Bad Gateway") != NULL)
{
stt->doEmitionYellowFoundData("[NS-Track] 503 Backend not responding!");
CSSOCKET(sock);
return -1;
}
else
{
<<<<<<< HEAD
=======
#pragma region QTGUI_Area
>>>>>>> 1f26df077976493c1916f7764c83dc03da1445fa
char header[64] = {0};
getSubStrEx(msg, "http/1.1 ", "\r\n", header, 64);
stt->doEmitionYellowFoundData("[Key check] -FAIL! An error occured. (" + QString::number(WSAGetLastError()) + ") Header: <u>" + QString::fromLocal8Bit(header) + "</u>");
if(gDebugMode) stt->doEmitionDebugFoundData(QString(msg));
<<<<<<< HEAD
=======
#pragma endregion
>>>>>>> 1f26df077976493c1916f7764c83dc03da1445fa
CSSOCKET(sock);
return -1;
};
ZeroMemory(msg, sizeof(msg));
CSSOCKET(sock);
}
else
{
<<<<<<< HEAD
=======
#pragma region QTGUI_Area
>>>>>>> 1f26df077976493c1916f7764c83dc03da1445fa
stt->doEmitionRedFoundData("[Key check] -Balancer replied with invalid string.");
if(gDebugMode) stt->doEmitionDebugFoundData(QString(msg));
CSSOCKET(sock);
return -1;
<<<<<<< HEAD
=======
#pragma endregion
>>>>>>> 1f26df077976493c1916f7764c83dc03da1445fa
};
};
void CheckKey_Th::run()
{
KeyCheckerMain();
};

View File

View File

View File

View File

View File

@ -0,0 +1,270 @@
#pragma once
#include "CheckKey_Th.h"
#include "CheckProxy_Th.h"
#include "STh.h"
#include "externData.h"
#include "externFunctions.h"
void getSubStrEx(char *src, char *startStr, char *endStr, char *dest, int szDest)
{
ZeroMemory(dest, szDest);
char *ptr1 = strstri(src, startStr);
if(ptr1 != NULL)
{
char *ptr2 = strstri(ptr1, endStr);
if(ptr2 != NULL)
{
int szStartStr = strlen(startStr);
int sz = ptr2 - ptr1 - szStartStr;
strncpy(dest, ptr1 + szStartStr, sz < szDest ? sz : szDest);
};
};
}
void getSubStr(char *src, char *startStr, char *endStr, char *dest, int szDest)
{
ZeroMemory(dest, szDest);
char *ptr1 = strstri(src, startStr);
if(ptr1 != NULL)
{
char *ptr2 = strstri(ptr1, endStr);
if(ptr2 != NULL)
{
int sz = ptr2 - ptr1;
strncpy(dest, ptr1, sz < szDest ? sz : szDest);
};
};
}
int emitIfOK = -1;
int KeyCheckerMain()
{
int kLen = strlen(trcPersKey);
if(kLen == 0)
{
stt->doEmitionRedFoundData("[Key check] Key field is empty.");
return -1;
}
else if(kLen < 32)
{
stt->doEmitionRedFoundData("[Key check] Key length is not valid.");
return -1;
};
char msg[1024] = {0};
char ndbServer[64] = {0};
char ndbScript[64] = {0};
sockaddr_in sockAddr;
sockAddr.sin_family = AF_INET;
sockAddr.sin_port = htons(atoi(trcSrvPortLine));
strcpy(msg, "GET ");
strcat(msg, "/");
strcat(msg, trcScr);
strcat(msg, " HTTP/1.0\r\nHost: ");
strcat(msg, trcSrv);
strcat(msg, "\r\nX-Nescav3: True");
strcat(msg, "\r\nConnection: close");
strcat(msg, "\r\n\r\n");
HOSTENT *host;
#if defined(WIN32) || defined(_WIN32) || defined(__WIN32) && !defined(__CYGWIN__)
if(inet_addr(trcSrv) != INADDR_NONE) sockAddr.sin_addr.S_un.S_addr = inet_addr(trcSrv);
else if(host=gethostbyname (trcSrv)) ((unsigned long*) &sockAddr.sin_addr)[0] = ((unsigned long**)host->h_addr_list)[0][0];
#else
if(inet_addr(trcSrv) != INADDR_NONE) sockAddr.sin_addr.s_addr = inet_addr(trcSrv);
else if(host=gethostbyname (trcSrv)) ((unsigned long*) &sockAddr.sin_addr)[0] = ((unsigned long**)host->h_addr_list)[0][0];
#endif
SOCKET sock = socket( AF_INET, SOCK_STREAM, IPPROTO_TCP );
stt->doEmitionYellowFoundData("[Key check] Requesting server ip...");
int test = connect(sock, (sockaddr*)&sockAddr, sizeof(sockAddr));
if(test == -1)
{
stt->doEmitionRedFoundData("[Key check] -connect() returned. Cannot connect to balancer! " + QString::number(WSAGetLastError()) + ".");
CSSOCKET(sock);
return -1;
};
test = send(sock, msg, strlen(msg), 0);
if(test == -1)
{
stt->doEmitionRedFoundData("[Key check] -send() returned. Cannot send to balancer! " + QString::number(WSAGetLastError()) + ".");
CSSOCKET(sock);
return -1;
};
ZeroMemory(msg, sizeof(msg));
int ror = sizeof(msg);
test = recv(sock, msg, sizeof(msg), 0);
char buff[512] = {0};
while((test = recv(sock, msg, sizeof(msg), 0)) != 0)
{
strcat(msg, buff);
};
if(test == -1)
{
stt->doEmitionRedFoundData("[Key check] -recv() returned. Cannot recv from balancer! " + QString::number(WSAGetLastError()) + ".");
CSSOCKET(sock);
return -1;
};
char *t1;
char *t2;
if(strstr(msg, "http://") != NULL)
{
t1 = strstr(msg, "http://");
if(strstr((char*)(t1 + strlen("http://")), "/") != NULL)
{
t2 = strstr((char*)(t1 + strlen("http://")), "/");
int ln = t2 - t1 - strlen("http://");
if(ln > 64)
{
stt->doEmitionRedFoundData("[Key check] -Received server string is not valid!");
CSSOCKET(sock);
return -1;
}
else strncpy(ndbServer, (char*)(t1 + strlen("http://")), ln);
if(strlen(t2) > 64)
{
stt->doEmitionYellowFoundData("[Key check] -Fragmentation detected!");
if(strstr(t2, "\r\n") != NULL)
{
char *t3 = strstr(t2, "\r\n");
int y = (int)(t3 - t2);
if(y > 64)
{
stt->doEmitionRedFoundData("[Key check] -Received server string is not valid!");
CSSOCKET(sock);
return -1;
}
else
{
strncpy(ndbScript, t2, y);
};
}
else
{
stt->doEmitionRedFoundData("[Key check] -Received server string is not valid!");
CSSOCKET(sock);
return -1;
};
} else strcpy(ndbScript, t2);
}
else
{
stt->doEmitionRedFoundData("[Key check] -Cannot receive script value!");
CSSOCKET(sock);
return -1;
};
ZeroMemory(msg, sizeof(msg));
stt->doEmitionGreenFoundData("[Key check] -OK. -Server string aquired! Checking key...");
CSSOCKET(sock);
sockAddr.sin_family = AF_INET;
sockAddr.sin_port = htons(atoi(trcSrvPortLine));
strcpy(msg, "GET ");
strcat(msg, "/api/checkaccount?key=");
strncat(msg, trcPersKey, 32);
strcat(msg, " HTTP/1.0\r\nHost: ");
strcat(msg, ndbServer);
strcat(msg, "\r\nConnection: close");
strcat(msg, "\r\n\r\n");
#if defined(WIN32) || defined(_WIN32) || defined(__WIN32) && !defined(__CYGWIN__)
if(inet_addr(ndbServer) != INADDR_NONE) sockAddr.sin_addr.S_un.S_addr = inet_addr(ndbServer);
else if(host=gethostbyname (ndbServer)) ((unsigned long*) &sockAddr.sin_addr)[0] = ((unsigned long**)host->h_addr_list)[0][0];
#else
if(inet_addr(ndbServer) != INADDR_NONE) sockAddr.sin_addr.s_addr = inet_addr(ndbServer);
else if(host=gethostbyname (ndbServer)) ((unsigned long*) &sockAddr.sin_addr)[0] = ((unsigned long**)host->h_addr_list)[0][0];
#endif
sock = socket( AF_INET, SOCK_STREAM, IPPROTO_TCP );
int c = connect(sock, (sockaddr*)&sockAddr, sizeof(sockAddr));
if(c == SOCKET_ERROR)
{
stt->doEmitionRedFoundData("[Key check] -Connection timeout.");
CSSOCKET(sock);
return -1;
};
c = send(sock, msg, strlen(msg), 0);
if(c == SOCKET_ERROR)
{
stt->doEmitionRedFoundData("[Key check] -Send error.");
CSSOCKET(sock);
return -1;
};
ZeroMemory(msg, sizeof(msg));
test = recv(sock, msg, 512, 0);
if(strstr(msg, "202 Accepted") != NULL)
{
stt->doEmitionGreenFoundData("[Key check] -OK. Key is valid!");
CSSOCKET(sock);
if(emitIfOK == 0) stt->doEmitionStartScanIP();
else if(emitIfOK == 1) stt->doEmitionStartScanDNS();
else if(emitIfOK == 2) stt->doEmitionStartScanImport();
return 1;
}
else if(strstr(msg, "400 Bad Request") != NULL)
{
QString errorDef = GetNSErrorDefinition(msg, "notify");
if(errorDef == "Invalid access key") stt->doEmitionYellowFoundData("[NS-Track] [Key is unauthorized] A valid key is required.");
else stt->doEmitionYellowFoundData("[NS-Track] -FAIL! [400 Bad Request : " + GetNSErrorDefinition(msg, "notify") + "]");
CSSOCKET(sock);
return -1;
}
else if(strstr(msg, "503 Bad Gateway") != NULL)
{
stt->doEmitionYellowFoundData("[NS-Track] 503 Backend not responding!");
CSSOCKET(sock);
return -1;
}
else
{
char header[64] = {0};
getSubStrEx(msg, "http/1.1 ", "\r\n", header, 64);
stt->doEmitionYellowFoundData("[Key check] -FAIL! An error occured. (" + QString::number(WSAGetLastError()) + ") Header: <u>" + QString::fromLocal8Bit(header) + "</u>");
if(gDebugMode) stt->doEmitionDebugFoundData(QString(msg));
CSSOCKET(sock);
return -1;
};
ZeroMemory(msg, sizeof(msg));
CSSOCKET(sock);
}
else
{
stt->doEmitionRedFoundData("[Key check] -Balancer replied with invalid string.");
if(gDebugMode) stt->doEmitionDebugFoundData(QString(msg));
CSSOCKET(sock);
return -1;
};
};
void CheckKey_Th::run()
{
KeyCheckerMain();
};

View File

@ -0,0 +1,270 @@
#pragma once
#include "CheckKey_Th.h"
#include "CheckProxy_Th.h"
#include "STh.h"
#include "externData.h"
#include "externFunctions.h"
void getSubStrEx(char *src, char *startStr, char *endStr, char *dest, int szDest)
{
ZeroMemory(dest, szDest);
char *ptr1 = strstri(src, startStr);
if(ptr1 != NULL)
{
char *ptr2 = strstri(ptr1, endStr);
if(ptr2 != NULL)
{
int szStartStr = strlen(startStr);
int sz = ptr2 - ptr1 - szStartStr;
strncpy(dest, ptr1 + szStartStr, sz < szDest ? sz : szDest);
};
};
}
void getSubStr(char *src, char *startStr, char *endStr, char *dest, int szDest)
{
ZeroMemory(dest, szDest);
char *ptr1 = strstri(src, startStr);
if(ptr1 != NULL)
{
char *ptr2 = strstri(ptr1, endStr);
if(ptr2 != NULL)
{
int sz = ptr2 - ptr1;
strncpy(dest, ptr1, sz < szDest ? sz : szDest);
};
};
}
int emitIfOK = -1;
int KeyCheckerMain()
{
int kLen = strlen(trcPersKey);
if(kLen == 0)
{
stt->doEmitionRedFoundData("[Key check] Key field is empty.");
return -1;
}
else if(kLen < 32)
{
stt->doEmitionRedFoundData("[Key check] Key length is not valid.");
return -1;
};
char msg[1024] = {0};
char ndbServer[64] = {0};
char ndbScript[64] = {0};
sockaddr_in sockAddr;
sockAddr.sin_family = AF_INET;
sockAddr.sin_port = htons(atoi(trcSrvPortLine));
strcpy(msg, "GET ");
strcat(msg, "/");
strcat(msg, trcScr);
strcat(msg, " HTTP/1.0\r\nHost: ");
strcat(msg, trcSrv);
strcat(msg, "\r\nX-Nescav3: True");
strcat(msg, "\r\nConnection: close");
strcat(msg, "\r\n\r\n");
HOSTENT *host;
#if defined(WIN32) || defined(_WIN32) || defined(__WIN32) && !defined(__CYGWIN__)
if(inet_addr(trcSrv) != INADDR_NONE) sockAddr.sin_addr.S_un.S_addr = inet_addr(trcSrv);
else if(host=gethostbyname (trcSrv)) ((unsigned long*) &sockAddr.sin_addr)[0] = ((unsigned long**)host->h_addr_list)[0][0];
#else
if(inet_addr(trcSrv) != INADDR_NONE) sockAddr.sin_addr.s_addr = inet_addr(trcSrv);
else if(host=gethostbyname (trcSrv)) ((unsigned long*) &sockAddr.sin_addr)[0] = ((unsigned long**)host->h_addr_list)[0][0];
#endif
SOCKET sock = socket( AF_INET, SOCK_STREAM, IPPROTO_TCP );
stt->doEmitionYellowFoundData("[Key check] Requesting server ip...");
int test = connect(sock, (sockaddr*)&sockAddr, sizeof(sockAddr));
if(test == -1)
{
stt->doEmitionRedFoundData("[Key check] -connect() returned. Cannot connect to balancer! " + QString::number(WSAGetLastError()) + ".");
CSSOCKET(sock);
return -1;
};
test = send(sock, msg, strlen(msg), 0);
if(test == -1)
{
stt->doEmitionRedFoundData("[Key check] -send() returned. Cannot send to balancer! " + QString::number(WSAGetLastError()) + ".");
CSSOCKET(sock);
return -1;
};
ZeroMemory(msg, sizeof(msg));
int ror = sizeof(msg);
test = recv(sock, msg, sizeof(msg), 0);
char buff[512] = {0};
while((test = recv(sock, msg, sizeof(msg), 0)) != 0)
{
strcat(msg, buff);
};
if(test == -1)
{
stt->doEmitionRedFoundData("[Key check] -recv() returned. Cannot recv from balancer! " + QString::number(WSAGetLastError()) + ".");
CSSOCKET(sock);
return -1;
};
char *t1;
char *t2;
if(strstr(msg, "http://") != NULL)
{
t1 = strstr(msg, "http://");
if(strstr((char*)(t1 + strlen("http://")), "/") != NULL)
{
t2 = strstr((char*)(t1 + strlen("http://")), "/");
int ln = t2 - t1 - strlen("http://");
if(ln > 64)
{
stt->doEmitionRedFoundData("[Key check] -Received server string is not valid!");
CSSOCKET(sock);
return -1;
}
else strncpy(ndbServer, (char*)(t1 + strlen("http://")), ln);
if(strlen(t2) > 64)
{
stt->doEmitionYellowFoundData("[Key check] -Fragmentation detected!");
if(strstr(t2, "\r\n") != NULL)
{
char *t3 = strstr(t2, "\r\n");
int y = (int)(t3 - t2);
if(y > 64)
{
stt->doEmitionRedFoundData("[Key check] -Received server string is not valid!");
CSSOCKET(sock);
return -1;
}
else
{
strncpy(ndbScript, t2, y);
};
}
else
{
stt->doEmitionRedFoundData("[Key check] -Received server string is not valid!");
CSSOCKET(sock);
return -1;
};
} else strcpy(ndbScript, t2);
}
else
{
stt->doEmitionRedFoundData("[Key check] -Cannot receive script value!");
CSSOCKET(sock);
return -1;
};
ZeroMemory(msg, sizeof(msg));
stt->doEmitionGreenFoundData("[Key check] -OK. -Server string aquired! Checking key...");
CSSOCKET(sock);
sockAddr.sin_family = AF_INET;
sockAddr.sin_port = htons(atoi(trcSrvPortLine));
strcpy(msg, "GET ");
strcat(msg, "/api/checkaccount?key=");
strncat(msg, trcPersKey, 32);
strcat(msg, " HTTP/1.0\r\nHost: ");
strcat(msg, ndbServer);
strcat(msg, "\r\nConnection: close");
strcat(msg, "\r\n\r\n");
#if defined(WIN32) || defined(_WIN32) || defined(__WIN32) && !defined(__CYGWIN__)
if(inet_addr(ndbServer) != INADDR_NONE) sockAddr.sin_addr.S_un.S_addr = inet_addr(ndbServer);
else if(host=gethostbyname (ndbServer)) ((unsigned long*) &sockAddr.sin_addr)[0] = ((unsigned long**)host->h_addr_list)[0][0];
#else
if(inet_addr(ndbServer) != INADDR_NONE) sockAddr.sin_addr.s_addr = inet_addr(ndbServer);
else if(host=gethostbyname (ndbServer)) ((unsigned long*) &sockAddr.sin_addr)[0] = ((unsigned long**)host->h_addr_list)[0][0];
#endif
sock = socket( AF_INET, SOCK_STREAM, IPPROTO_TCP );
int c = connect(sock, (sockaddr*)&sockAddr, sizeof(sockAddr));
if(c == SOCKET_ERROR)
{
stt->doEmitionRedFoundData("[Key check] -Connection timeout.");
CSSOCKET(sock);
return -1;
};
c = send(sock, msg, strlen(msg), 0);
if(c == SOCKET_ERROR)
{
stt->doEmitionRedFoundData("[Key check] -Send error.");
CSSOCKET(sock);
return -1;
};
ZeroMemory(msg, sizeof(msg));
test = recv(sock, msg, 512, 0);
if(strstr(msg, "202 Accepted") != NULL)
{
stt->doEmitionGreenFoundData("[Key check] -OK. Key is valid!");
CSSOCKET(sock);
if(emitIfOK == 0) stt->doEmitionStartScanIP();
else if(emitIfOK == 1) stt->doEmitionStartScanDNS();
else if(emitIfOK == 2) stt->doEmitionStartScanImport();
return 1;
}
else if(strstr(msg, "400 Bad Request") != NULL)
{
QString errorDef = GetNSErrorDefinition(msg, "notify");
if(errorDef == "Invalid access key") stt->doEmitionYellowFoundData("[NS-Track] [Key is unauthorized] A valid key is required.");
else stt->doEmitionYellowFoundData("[NS-Track] -FAIL! [400 Bad Request : " + GetNSErrorDefinition(msg, "notify") + "]");
CSSOCKET(sock);
return -1;
}
else if(strstr(msg, "503 Bad Gateway") != NULL)
{
stt->doEmitionYellowFoundData("[NS-Track] 503 Backend not responding!");
CSSOCKET(sock);
return -1;
}
else
{
char header[64] = {0};
getSubStrEx(msg, "http/1.1 ", "\r\n", header, 64);
stt->doEmitionYellowFoundData("[Key check] -FAIL! An error occured. (" + QString::number(WSAGetLastError()) + ") Header: <u>" + QString::fromLocal8Bit(header) + "</u>");
if(gDebugMode) stt->doEmitionDebugFoundData(QString(msg));
CSSOCKET(sock);
return -1;
};
ZeroMemory(msg, sizeof(msg));
CSSOCKET(sock);
}
else
{
stt->doEmitionRedFoundData("[Key check] -Balancer replied with invalid string.");
if(gDebugMode) stt->doEmitionDebugFoundData(QString(msg));
CSSOCKET(sock);
return -1;
};
};
void CheckKey_Th::run()
{
KeyCheckerMain();
};

View File

@ -0,0 +1,270 @@
#pragma once
#include "CheckKey_Th.h"
#include "CheckProxy_Th.h"
#include "STh.h"
#include "externData.h"
#include "externFunctions.h"
void getSubStrEx(char *src, char *startStr, char *endStr, char *dest, int szDest)
{
ZeroMemory(dest, szDest);
char *ptr1 = strstri(src, startStr);
if(ptr1 != NULL)
{
char *ptr2 = strstri(ptr1, endStr);
if(ptr2 != NULL)
{
int szStartStr = strlen(startStr);
int sz = ptr2 - ptr1 - szStartStr;
strncpy(dest, ptr1 + szStartStr, sz < szDest ? sz : szDest);
};
};
}
void getSubStr(char *src, char *startStr, char *endStr, char *dest, int szDest)
{
ZeroMemory(dest, szDest);
char *ptr1 = strstri(src, startStr);
if(ptr1 != NULL)
{
char *ptr2 = strstri(ptr1, endStr);
if(ptr2 != NULL)
{
int sz = ptr2 - ptr1;
strncpy(dest, ptr1, sz < szDest ? sz : szDest);
};
};
}
int emitIfOK = -1;
int KeyCheckerMain()
{
int kLen = strlen(trcPersKey);
if(kLen == 0)
{
stt->doEmitionRedFoundData("[Key check] Key field is empty.");
return -1;
}
else if(kLen < 32)
{
stt->doEmitionRedFoundData("[Key check] Key length is not valid.");
return -1;
};
char msg[1024] = {0};
char ndbServer[64] = {0};
char ndbScript[64] = {0};
sockaddr_in sockAddr;
sockAddr.sin_family = AF_INET;
sockAddr.sin_port = htons(atoi(trcSrvPortLine));
strcpy(msg, "GET ");
strcat(msg, "/");
strcat(msg, trcScr);
strcat(msg, " HTTP/1.0\r\nHost: ");
strcat(msg, trcSrv);
strcat(msg, "\r\nX-Nescav3: True");
strcat(msg, "\r\nConnection: close");
strcat(msg, "\r\n\r\n");
HOSTENT *host;
#if defined(WIN32) || defined(_WIN32) || defined(__WIN32) && !defined(__CYGWIN__)
if(inet_addr(trcSrv) != INADDR_NONE) sockAddr.sin_addr.S_un.S_addr = inet_addr(trcSrv);
else if(host=gethostbyname (trcSrv)) ((unsigned long*) &sockAddr.sin_addr)[0] = ((unsigned long**)host->h_addr_list)[0][0];
#else
if(inet_addr(trcSrv) != INADDR_NONE) sockAddr.sin_addr.s_addr = inet_addr(trcSrv);
else if(host=gethostbyname (trcSrv)) ((unsigned long*) &sockAddr.sin_addr)[0] = ((unsigned long**)host->h_addr_list)[0][0];
#endif
SOCKET sock = socket( AF_INET, SOCK_STREAM, IPPROTO_TCP );
stt->doEmitionYellowFoundData("[Key check] Requesting server ip...");
int test = connect(sock, (sockaddr*)&sockAddr, sizeof(sockAddr));
if(test == -1)
{
stt->doEmitionRedFoundData("[Key check] -connect() returned. Cannot connect to balancer! " + QString::number(WSAGetLastError()) + ".");
CSSOCKET(sock);
return -1;
};
test = send(sock, msg, strlen(msg), 0);
if(test == -1)
{
stt->doEmitionRedFoundData("[Key check] -send() returned. Cannot send to balancer! " + QString::number(WSAGetLastError()) + ".");
CSSOCKET(sock);
return -1;
};
ZeroMemory(msg, sizeof(msg));
int ror = sizeof(msg);
test = recv(sock, msg, sizeof(msg), 0);
char buff[512] = {0};
while((test = recv(sock, msg, sizeof(msg), 0)) != 0)
{
strcat(msg, buff);
};
if(test == -1)
{
stt->doEmitionRedFoundData("[Key check] -recv() returned. Cannot recv from balancer! " + QString::number(WSAGetLastError()) + ".");
CSSOCKET(sock);
return -1;
};
char *t1;
char *t2;
if(strstr(msg, "http://") != NULL)
{
t1 = strstr(msg, "http://");
if(strstr((char*)(t1 + strlen("http://")), "/") != NULL)
{
t2 = strstr((char*)(t1 + strlen("http://")), "/");
int ln = t2 - t1 - strlen("http://");
if(ln > 64)
{
stt->doEmitionRedFoundData("[Key check] -Received server string is not valid!");
CSSOCKET(sock);
return -1;
}
else strncpy(ndbServer, (char*)(t1 + strlen("http://")), ln);
if(strlen(t2) > 64)
{
stt->doEmitionYellowFoundData("[Key check] -Fragmentation detected!");
if(strstr(t2, "\r\n") != NULL)
{
char *t3 = strstr(t2, "\r\n");
int y = (int)(t3 - t2);
if(y > 64)
{
stt->doEmitionRedFoundData("[Key check] -Received server string is not valid!");
CSSOCKET(sock);
return -1;
}
else
{
strncpy(ndbScript, t2, y);
};
}
else
{
stt->doEmitionRedFoundData("[Key check] -Received server string is not valid!");
CSSOCKET(sock);
return -1;
};
} else strcpy(ndbScript, t2);
}
else
{
stt->doEmitionRedFoundData("[Key check] -Cannot receive script value!");
CSSOCKET(sock);
return -1;
};
ZeroMemory(msg, sizeof(msg));
stt->doEmitionGreenFoundData("[Key check] -OK. -Server string aquired! Checking key...");
CSSOCKET(sock);
sockAddr.sin_family = AF_INET;
sockAddr.sin_port = htons(atoi(trcSrvPortLine));
strcpy(msg, "GET ");
strcat(msg, "/api/checkaccount?key=");
strncat(msg, trcPersKey, 32);
strcat(msg, " HTTP/1.0\r\nHost: ");
strcat(msg, ndbServer);
strcat(msg, "\r\nConnection: close");
strcat(msg, "\r\n\r\n");
#if defined(WIN32) || defined(_WIN32) || defined(__WIN32) && !defined(__CYGWIN__)
if(inet_addr(ndbServer) != INADDR_NONE) sockAddr.sin_addr.S_un.S_addr = inet_addr(ndbServer);
else if(host=gethostbyname (ndbServer)) ((unsigned long*) &sockAddr.sin_addr)[0] = ((unsigned long**)host->h_addr_list)[0][0];
#else
if(inet_addr(ndbServer) != INADDR_NONE) sockAddr.sin_addr.s_addr = inet_addr(ndbServer);
else if(host=gethostbyname (ndbServer)) ((unsigned long*) &sockAddr.sin_addr)[0] = ((unsigned long**)host->h_addr_list)[0][0];
#endif
sock = socket( AF_INET, SOCK_STREAM, IPPROTO_TCP );
int c = connect(sock, (sockaddr*)&sockAddr, sizeof(sockAddr));
if(c == SOCKET_ERROR)
{
stt->doEmitionRedFoundData("[Key check] -Connection timeout.");
CSSOCKET(sock);
return -1;
};
c = send(sock, msg, strlen(msg), 0);
if(c == SOCKET_ERROR)
{
stt->doEmitionRedFoundData("[Key check] -Send error.");
CSSOCKET(sock);
return -1;
};
ZeroMemory(msg, sizeof(msg));
test = recv(sock, msg, 512, 0);
if(strstr(msg, "202 Accepted") != NULL)
{
stt->doEmitionGreenFoundData("[Key check] -OK. Key is valid!");
CSSOCKET(sock);
if(emitIfOK == 0) stt->doEmitionStartScanIP();
else if(emitIfOK == 1) stt->doEmitionStartScanDNS();
else if(emitIfOK == 2) stt->doEmitionStartScanImport();
return 1;
}
else if(strstr(msg, "400 Bad Request") != NULL)
{
QString errorDef = GetNSErrorDefinition(msg, "notify");
if(errorDef == "Invalid access key") stt->doEmitionYellowFoundData("[NS-Track] [Key is unauthorized] A valid key is required.");
else stt->doEmitionYellowFoundData("[NS-Track] -FAIL! [400 Bad Request : " + GetNSErrorDefinition(msg, "notify") + "]");
CSSOCKET(sock);
return -1;
}
else if(strstr(msg, "503 Bad Gateway") != NULL)
{
stt->doEmitionYellowFoundData("[NS-Track] 503 Backend not responding!");
CSSOCKET(sock);
return -1;
}
else
{
char header[64] = {0};
getSubStrEx(msg, "http/1.1 ", "\r\n", header, 64);
stt->doEmitionYellowFoundData("[Key check] -FAIL! An error occured. (" + QString::number(WSAGetLastError()) + ") Header: <u>" + QString::fromLocal8Bit(header) + "</u>");
if(gDebugMode) stt->doEmitionDebugFoundData(QString(msg));
CSSOCKET(sock);
return -1;
};
ZeroMemory(msg, sizeof(msg));
CSSOCKET(sock);
}
else
{
stt->doEmitionRedFoundData("[Key check] -Balancer replied with invalid string.");
if(gDebugMode) stt->doEmitionDebugFoundData(QString(msg));
CSSOCKET(sock);
return -1;
};
};
void CheckKey_Th::run()
{
KeyCheckerMain();
};

View File

@ -0,0 +1,270 @@
#pragma once
#include "CheckKey_Th.h"
#include "CheckProxy_Th.h"
#include "STh.h"
#include "externData.h"
#include "externFunctions.h"
void getSubStrEx(char *src, char *startStr, char *endStr, char *dest, int szDest)
{
ZeroMemory(dest, szDest);
char *ptr1 = strstri(src, startStr);
if(ptr1 != NULL)
{
char *ptr2 = strstri(ptr1, endStr);
if(ptr2 != NULL)
{
int szStartStr = strlen(startStr);
int sz = ptr2 - ptr1 - szStartStr;
strncpy(dest, ptr1 + szStartStr, sz < szDest ? sz : szDest);
};
};
}
void getSubStr(char *src, char *startStr, char *endStr, char *dest, int szDest)
{
ZeroMemory(dest, szDest);
char *ptr1 = strstri(src, startStr);
if(ptr1 != NULL)
{
char *ptr2 = strstri(ptr1, endStr);
if(ptr2 != NULL)
{
int sz = ptr2 - ptr1;
strncpy(dest, ptr1, sz < szDest ? sz : szDest);
};
};
}
int emitIfOK = -1;
int KeyCheckerMain()
{
int kLen = strlen(trcPersKey);
if(kLen == 0)
{
stt->doEmitionRedFoundData("[Key check] Key field is empty.");
return -1;
}
else if(kLen < 32)
{
stt->doEmitionRedFoundData("[Key check] Key length is not valid.");
return -1;
};
char msg[1024] = {0};
char ndbServer[64] = {0};
char ndbScript[64] = {0};
sockaddr_in sockAddr;
sockAddr.sin_family = AF_INET;
sockAddr.sin_port = htons(atoi(trcSrvPortLine));
strcpy(msg, "GET ");
strcat(msg, "/");
strcat(msg, trcScr);
strcat(msg, " HTTP/1.0\r\nHost: ");
strcat(msg, trcSrv);
strcat(msg, "\r\nX-Nescav3: True");
strcat(msg, "\r\nConnection: close");
strcat(msg, "\r\n\r\n");
HOSTENT *host;
#if defined(WIN32) || defined(_WIN32) || defined(__WIN32) && !defined(__CYGWIN__)
if(inet_addr(trcSrv) != INADDR_NONE) sockAddr.sin_addr.S_un.S_addr = inet_addr(trcSrv);
else if(host=gethostbyname (trcSrv)) ((unsigned long*) &sockAddr.sin_addr)[0] = ((unsigned long**)host->h_addr_list)[0][0];
#else
if(inet_addr(trcSrv) != INADDR_NONE) sockAddr.sin_addr.s_addr = inet_addr(trcSrv);
else if(host=gethostbyname (trcSrv)) ((unsigned long*) &sockAddr.sin_addr)[0] = ((unsigned long**)host->h_addr_list)[0][0];
#endif
SOCKET sock = socket( AF_INET, SOCK_STREAM, IPPROTO_TCP );
stt->doEmitionYellowFoundData("[Key check] Requesting server ip...");
int test = connect(sock, (sockaddr*)&sockAddr, sizeof(sockAddr));
if(test == -1)
{
stt->doEmitionRedFoundData("[Key check] -connect() returned. Cannot connect to balancer! " + QString::number(WSAGetLastError()) + ".");
CSSOCKET(sock);
return -1;
};
test = send(sock, msg, strlen(msg), 0);
if(test == -1)
{
stt->doEmitionRedFoundData("[Key check] -send() returned. Cannot send to balancer! " + QString::number(WSAGetLastError()) + ".");
CSSOCKET(sock);
return -1;
};
ZeroMemory(msg, sizeof(msg));
int ror = sizeof(msg);
test = recv(sock, msg, sizeof(msg), 0);
char buff[512] = {0};
while((test = recv(sock, msg, sizeof(msg), 0)) != 0)
{
strcat(msg, buff);
};
if(test == -1)
{
stt->doEmitionRedFoundData("[Key check] -recv() returned. Cannot recv from balancer! " + QString::number(WSAGetLastError()) + ".");
CSSOCKET(sock);
return -1;
};
char *t1;
char *t2;
if(strstr(msg, "http://") != NULL)
{
t1 = strstr(msg, "http://");
if(strstr((char*)(t1 + strlen("http://")), "/") != NULL)
{
t2 = strstr((char*)(t1 + strlen("http://")), "/");
int ln = t2 - t1 - strlen("http://");
if(ln > 64)
{
stt->doEmitionRedFoundData("[Key check] -Received server string is not valid!");
CSSOCKET(sock);
return -1;
}
else strncpy(ndbServer, (char*)(t1 + strlen("http://")), ln);
if(strlen(t2) > 64)
{
stt->doEmitionYellowFoundData("[Key check] -Fragmentation detected!");
if(strstr(t2, "\r\n") != NULL)
{
char *t3 = strstr(t2, "\r\n");
int y = (int)(t3 - t2);
if(y > 64)
{
stt->doEmitionRedFoundData("[Key check] -Received server string is not valid!");
CSSOCKET(sock);
return -1;
}
else
{
strncpy(ndbScript, t2, y);
};
}
else
{
stt->doEmitionRedFoundData("[Key check] -Received server string is not valid!");
CSSOCKET(sock);
return -1;
};
} else strcpy(ndbScript, t2);
}
else
{
stt->doEmitionRedFoundData("[Key check] -Cannot receive script value!");
CSSOCKET(sock);
return -1;
};
ZeroMemory(msg, sizeof(msg));
stt->doEmitionGreenFoundData("[Key check] -OK. -Server string aquired! Checking key...");
CSSOCKET(sock);
sockAddr.sin_family = AF_INET;
sockAddr.sin_port = htons(atoi(trcSrvPortLine));
strcpy(msg, "GET ");
strcat(msg, "/api/checkaccount?key=");
strncat(msg, trcPersKey, 32);
strcat(msg, " HTTP/1.0\r\nHost: ");
strcat(msg, ndbServer);
strcat(msg, "\r\nConnection: close");
strcat(msg, "\r\n\r\n");
#if defined(WIN32) || defined(_WIN32) || defined(__WIN32) && !defined(__CYGWIN__)
if(inet_addr(ndbServer) != INADDR_NONE) sockAddr.sin_addr.S_un.S_addr = inet_addr(ndbServer);
else if(host=gethostbyname (ndbServer)) ((unsigned long*) &sockAddr.sin_addr)[0] = ((unsigned long**)host->h_addr_list)[0][0];
#else
if(inet_addr(ndbServer) != INADDR_NONE) sockAddr.sin_addr.s_addr = inet_addr(ndbServer);
else if(host=gethostbyname (ndbServer)) ((unsigned long*) &sockAddr.sin_addr)[0] = ((unsigned long**)host->h_addr_list)[0][0];
#endif
sock = socket( AF_INET, SOCK_STREAM, IPPROTO_TCP );
int c = connect(sock, (sockaddr*)&sockAddr, sizeof(sockAddr));
if(c == SOCKET_ERROR)
{
stt->doEmitionRedFoundData("[Key check] -Connection timeout.");
CSSOCKET(sock);
return -1;
};
c = send(sock, msg, strlen(msg), 0);
if(c == SOCKET_ERROR)
{
stt->doEmitionRedFoundData("[Key check] -Send error.");
CSSOCKET(sock);
return -1;
};
ZeroMemory(msg, sizeof(msg));
test = recv(sock, msg, 512, 0);
if(strstr(msg, "202 Accepted") != NULL)
{
stt->doEmitionGreenFoundData("[Key check] -OK. Key is valid!");
CSSOCKET(sock);
if(emitIfOK == 0) stt->doEmitionStartScanIP();
else if(emitIfOK == 1) stt->doEmitionStartScanDNS();
else if(emitIfOK == 2) stt->doEmitionStartScanImport();
return 1;
}
else if(strstr(msg, "400 Bad Request") != NULL)
{
QString errorDef = GetNSErrorDefinition(msg, "notify");
if(errorDef == "Invalid access key") stt->doEmitionYellowFoundData("[NS-Track] [Key is unauthorized] A valid key is required.");
else stt->doEmitionYellowFoundData("[NS-Track] -FAIL! [400 Bad Request : " + GetNSErrorDefinition(msg, "notify") + "]");
CSSOCKET(sock);
return -1;
}
else if(strstr(msg, "503 Bad Gateway") != NULL)
{
stt->doEmitionYellowFoundData("[NS-Track] 503 Backend not responding!");
CSSOCKET(sock);
return -1;
}
else
{
char header[64] = {0};
getSubStrEx(msg, "http/1.1 ", "\r\n", header, 64);
stt->doEmitionYellowFoundData("[Key check] -FAIL! An error occured. (" + QString::number(WSAGetLastError()) + ") Header: <u>" + QString::fromLocal8Bit(header) + "</u>");
if(gDebugMode) stt->doEmitionDebugFoundData(QString(msg));
CSSOCKET(sock);
return -1;
};
ZeroMemory(msg, sizeof(msg));
CSSOCKET(sock);
}
else
{
stt->doEmitionRedFoundData("[Key check] -Balancer replied with invalid string.");
if(gDebugMode) stt->doEmitionDebugFoundData(QString(msg));
CSSOCKET(sock);
return -1;
};
};
void CheckKey_Th::run()
{
KeyCheckerMain();
};

View File

@ -0,0 +1,270 @@
#pragma once
#include "CheckKey_Th.h"
#include "CheckProxy_Th.h"
#include "STh.h"
#include "externData.h"
#include "externFunctions.h"
void getSubStrEx(char *src, char *startStr, char *endStr, char *dest, int szDest)
{
ZeroMemory(dest, szDest);
char *ptr1 = strstri(src, startStr);
if(ptr1 != NULL)
{
char *ptr2 = strstri(ptr1, endStr);
if(ptr2 != NULL)
{
int szStartStr = strlen(startStr);
int sz = ptr2 - ptr1 - szStartStr;
strncpy(dest, ptr1 + szStartStr, sz < szDest ? sz : szDest);
};
};
}
void getSubStr(char *src, char *startStr, char *endStr, char *dest, int szDest)
{
ZeroMemory(dest, szDest);
char *ptr1 = strstri(src, startStr);
if(ptr1 != NULL)
{
char *ptr2 = strstri(ptr1, endStr);
if(ptr2 != NULL)
{
int sz = ptr2 - ptr1;
strncpy(dest, ptr1, sz < szDest ? sz : szDest);
};
};
}
int emitIfOK = -1;
int KeyCheckerMain()
{
int kLen = strlen(trcPersKey);
if(kLen == 0)
{
stt->doEmitionRedFoundData("[Key check] Key field is empty.");
return -1;
}
else if(kLen < 32)
{
stt->doEmitionRedFoundData("[Key check] Key length is not valid.");
return -1;
};
char msg[1024] = {0};
char ndbServer[64] = {0};
char ndbScript[64] = {0};
sockaddr_in sockAddr;
sockAddr.sin_family = AF_INET;
sockAddr.sin_port = htons(atoi(trcSrvPortLine));
strcpy(msg, "GET ");
strcat(msg, "/");
strcat(msg, trcScr);
strcat(msg, " HTTP/1.0\r\nHost: ");
strcat(msg, trcSrv);
strcat(msg, "\r\nX-Nescav3: True");
strcat(msg, "\r\nConnection: close");
strcat(msg, "\r\n\r\n");
HOSTENT *host;
#if defined(WIN32) || defined(_WIN32) || defined(__WIN32) && !defined(__CYGWIN__)
if(inet_addr(trcSrv) != INADDR_NONE) sockAddr.sin_addr.S_un.S_addr = inet_addr(trcSrv);
else if(host=gethostbyname (trcSrv)) ((unsigned long*) &sockAddr.sin_addr)[0] = ((unsigned long**)host->h_addr_list)[0][0];
#else
if(inet_addr(trcSrv) != INADDR_NONE) sockAddr.sin_addr.s_addr = inet_addr(trcSrv);
else if(host=gethostbyname (trcSrv)) ((unsigned long*) &sockAddr.sin_addr)[0] = ((unsigned long**)host->h_addr_list)[0][0];
#endif
SOCKET sock = socket( AF_INET, SOCK_STREAM, IPPROTO_TCP );
stt->doEmitionYellowFoundData("[Key check] Requesting server ip...");
int test = connect(sock, (sockaddr*)&sockAddr, sizeof(sockAddr));
if(test == -1)
{
stt->doEmitionRedFoundData("[Key check] -connect() returned. Cannot connect to balancer! " + QString::number(WSAGetLastError()) + ".");
CSSOCKET(sock);
return -1;
};
test = send(sock, msg, strlen(msg), 0);
if(test == -1)
{
stt->doEmitionRedFoundData("[Key check] -send() returned. Cannot send to balancer! " + QString::number(WSAGetLastError()) + ".");
CSSOCKET(sock);
return -1;
};
ZeroMemory(msg, sizeof(msg));
int ror = sizeof(msg);
test = recv(sock, msg, sizeof(msg), 0);
char buff[512] = {0};
while((test = recv(sock, msg, sizeof(msg), 0)) != 0)
{
strcat(msg, buff);
};
if(test == -1)
{
stt->doEmitionRedFoundData("[Key check] -recv() returned. Cannot recv from balancer! " + QString::number(WSAGetLastError()) + ".");
CSSOCKET(sock);
return -1;
};
char *t1;
char *t2;
if(strstr(msg, "http://") != NULL)
{
t1 = strstr(msg, "http://");
if(strstr((char*)(t1 + strlen("http://")), "/") != NULL)
{
t2 = strstr((char*)(t1 + strlen("http://")), "/");
int ln = t2 - t1 - strlen("http://");
if(ln > 64)
{
stt->doEmitionRedFoundData("[Key check] -Received server string is not valid!");
CSSOCKET(sock);
return -1;
}
else strncpy(ndbServer, (char*)(t1 + strlen("http://")), ln);
if(strlen(t2) > 64)
{
stt->doEmitionYellowFoundData("[Key check] -Fragmentation detected!");
if(strstr(t2, "\r\n") != NULL)
{
char *t3 = strstr(t2, "\r\n");
int y = (int)(t3 - t2);
if(y > 64)
{
stt->doEmitionRedFoundData("[Key check] -Received server string is not valid!");
CSSOCKET(sock);
return -1;
}
else
{
strncpy(ndbScript, t2, y);
};
}
else
{
stt->doEmitionRedFoundData("[Key check] -Received server string is not valid!");
CSSOCKET(sock);
return -1;
};
} else strcpy(ndbScript, t2);
}
else
{
stt->doEmitionRedFoundData("[Key check] -Cannot receive script value!");
CSSOCKET(sock);
return -1;
};
ZeroMemory(msg, sizeof(msg));
stt->doEmitionGreenFoundData("[Key check] -OK. -Server string aquired! Checking key...");
CSSOCKET(sock);
sockAddr.sin_family = AF_INET;
sockAddr.sin_port = htons(atoi(trcSrvPortLine));
strcpy(msg, "GET ");
strcat(msg, "/api/checkaccount?key=");
strncat(msg, trcPersKey, 32);
strcat(msg, " HTTP/1.0\r\nHost: ");
strcat(msg, ndbServer);
strcat(msg, "\r\nConnection: close");
strcat(msg, "\r\n\r\n");
#if defined(WIN32) || defined(_WIN32) || defined(__WIN32) && !defined(__CYGWIN__)
if(inet_addr(ndbServer) != INADDR_NONE) sockAddr.sin_addr.S_un.S_addr = inet_addr(ndbServer);
else if(host=gethostbyname (ndbServer)) ((unsigned long*) &sockAddr.sin_addr)[0] = ((unsigned long**)host->h_addr_list)[0][0];
#else
if(inet_addr(ndbServer) != INADDR_NONE) sockAddr.sin_addr.s_addr = inet_addr(ndbServer);
else if(host=gethostbyname (ndbServer)) ((unsigned long*) &sockAddr.sin_addr)[0] = ((unsigned long**)host->h_addr_list)[0][0];
#endif
sock = socket( AF_INET, SOCK_STREAM, IPPROTO_TCP );
int c = connect(sock, (sockaddr*)&sockAddr, sizeof(sockAddr));
if(c == SOCKET_ERROR)
{
stt->doEmitionRedFoundData("[Key check] -Connection timeout.");
CSSOCKET(sock);
return -1;
};
c = send(sock, msg, strlen(msg), 0);
if(c == SOCKET_ERROR)
{
stt->doEmitionRedFoundData("[Key check] -Send error.");
CSSOCKET(sock);
return -1;
};
ZeroMemory(msg, sizeof(msg));
test = recv(sock, msg, 512, 0);
if(strstr(msg, "202 Accepted") != NULL)
{
#pragma region QTGUI_Area
stt->doEmitionGreenFoundData("[Key check] -OK. Key is valid!");
#pragma endregion
CSSOCKET(sock);
if(emitIfOK == 0) stt->doEmitionStartScanIP();
else if(emitIfOK == 1) stt->doEmitionStartScanDNS();
else if(emitIfOK == 2) stt->doEmitionStartScanImport();
return 1;
}
else if(strstr(msg, "400 Bad Request") != NULL)
{
#pragma region QTGUI_Area
QString errorDef = GetNSErrorDefinition(msg, "notify");
if(errorDef == "Invalid access key") stt->doEmitionYellowFoundData("[NS-Track] [Key is unauthorized] A valid key is required.");
else stt->doEmitionYellowFoundData("[NS-Track] -FAIL! [400 Bad Request : " + GetNSErrorDefinition(msg, "notify") + "]");
#pragma endregion
CSSOCKET(sock);
return -1;
}
else if(strstr(msg, "503 Bad Gateway") != NULL)
{
stt->doEmitionYellowFoundData("[NS-Track] 503 Backend not responding!");
CSSOCKET(sock);
return -1;
}
else
{
#pragma region QTGUI_Area
char header[64] = {0};
getSubStrEx(msg, "http/1.1 ", "\r\n", header, 64);
stt->doEmitionYellowFoundData("[Key check] -FAIL! An error occured. (" + QString::number(WSAGetLastError()) + ") Header: <u>" + QString::fromLocal8Bit(header) + "</u>");
if(gDebugMode) stt->doEmitionDebugFoundData(QString(msg));
#pragma endregion
CSSOCKET(sock);
return -1;
};
ZeroMemory(msg, sizeof(msg));
CSSOCKET(sock);
}
else
{
#pragma region QTGUI_Area
stt->doEmitionRedFoundData("[Key check] -Balancer replied with invalid string.");
if(gDebugMode) stt->doEmitionDebugFoundData(QString(msg));
CSSOCKET(sock);
return -1;
#pragma endregion
};
};
void CheckKey_Th::run()
{
KeyCheckerMain();
};

View File

@ -0,0 +1,270 @@
#pragma once
#include "CheckKey_Th.h"
#include "CheckProxy_Th.h"
#include "STh.h"
#include "externData.h"
#include "externFunctions.h"
void getSubStrEx(char *src, char *startStr, char *endStr, char *dest, int szDest)
{
ZeroMemory(dest, szDest);
char *ptr1 = strstri(src, startStr);
if(ptr1 != NULL)
{
char *ptr2 = strstri(ptr1, endStr);
if(ptr2 != NULL)
{
int szStartStr = strlen(startStr);
int sz = ptr2 - ptr1 - szStartStr;
strncpy(dest, ptr1 + szStartStr, sz < szDest ? sz : szDest);
};
};
}
void getSubStr(char *src, char *startStr, char *endStr, char *dest, int szDest)
{
ZeroMemory(dest, szDest);
char *ptr1 = strstri(src, startStr);
if(ptr1 != NULL)
{
char *ptr2 = strstri(ptr1, endStr);
if(ptr2 != NULL)
{
int sz = ptr2 - ptr1;
strncpy(dest, ptr1, sz < szDest ? sz : szDest);
};
};
}
int emitIfOK = -1;
int KeyCheckerMain()
{
int kLen = strlen(trcPersKey);
if(kLen == 0)
{
stt->doEmitionRedFoundData("[Key check] Key field is empty.");
return -1;
}
else if(kLen < 32)
{
stt->doEmitionRedFoundData("[Key check] Key length is not valid.");
return -1;
};
char msg[1024] = {0};
char ndbServer[64] = {0};
char ndbScript[64] = {0};
sockaddr_in sockAddr;
sockAddr.sin_family = AF_INET;
sockAddr.sin_port = htons(atoi(trcSrvPortLine));
strcpy(msg, "GET ");
strcat(msg, "/");
strcat(msg, trcScr);
strcat(msg, " HTTP/1.0\r\nHost: ");
strcat(msg, trcSrv);
strcat(msg, "\r\nX-Nescav3: True");
strcat(msg, "\r\nConnection: close");
strcat(msg, "\r\n\r\n");
HOSTENT *host;
#if defined(WIN32) || defined(_WIN32) || defined(__WIN32) && !defined(__CYGWIN__)
if(inet_addr(trcSrv) != INADDR_NONE) sockAddr.sin_addr.S_un.S_addr = inet_addr(trcSrv);
else if(host=gethostbyname (trcSrv)) ((unsigned long*) &sockAddr.sin_addr)[0] = ((unsigned long**)host->h_addr_list)[0][0];
#else
if(inet_addr(trcSrv) != INADDR_NONE) sockAddr.sin_addr.s_addr = inet_addr(trcSrv);
else if(host=gethostbyname (trcSrv)) ((unsigned long*) &sockAddr.sin_addr)[0] = ((unsigned long**)host->h_addr_list)[0][0];
#endif
SOCKET sock = socket( AF_INET, SOCK_STREAM, IPPROTO_TCP );
stt->doEmitionYellowFoundData("[Key check] Requesting server ip...");
int test = connect(sock, (sockaddr*)&sockAddr, sizeof(sockAddr));
if(test == -1)
{
stt->doEmitionRedFoundData("[Key check] -connect() returned. Cannot connect to balancer! " + QString::number(WSAGetLastError()) + ".");
CSSOCKET(sock);
return -1;
};
test = send(sock, msg, strlen(msg), 0);
if(test == -1)
{
stt->doEmitionRedFoundData("[Key check] -send() returned. Cannot send to balancer! " + QString::number(WSAGetLastError()) + ".");
CSSOCKET(sock);
return -1;
};
ZeroMemory(msg, sizeof(msg));
int ror = sizeof(msg);
test = recv(sock, msg, sizeof(msg), 0);
char buff[512] = {0};
while((test = recv(sock, msg, sizeof(msg), 0)) != 0)
{
strcat(msg, buff);
};
if(test == -1)
{
stt->doEmitionRedFoundData("[Key check] -recv() returned. Cannot recv from balancer! " + QString::number(WSAGetLastError()) + ".");
CSSOCKET(sock);
return -1;
};
char *t1;
char *t2;
if(strstr(msg, "http://") != NULL)
{
t1 = strstr(msg, "http://");
if(strstr((char*)(t1 + strlen("http://")), "/") != NULL)
{
t2 = strstr((char*)(t1 + strlen("http://")), "/");
int ln = t2 - t1 - strlen("http://");
if(ln > 64)
{
stt->doEmitionRedFoundData("[Key check] -Received server string is not valid!");
CSSOCKET(sock);
return -1;
}
else strncpy(ndbServer, (char*)(t1 + strlen("http://")), ln);
if(strlen(t2) > 64)
{
stt->doEmitionYellowFoundData("[Key check] -Fragmentation detected!");
if(strstr(t2, "\r\n") != NULL)
{
char *t3 = strstr(t2, "\r\n");
int y = (int)(t3 - t2);
if(y > 64)
{
stt->doEmitionRedFoundData("[Key check] -Received server string is not valid!");
CSSOCKET(sock);
return -1;
}
else
{
strncpy(ndbScript, t2, y);
};
}
else
{
stt->doEmitionRedFoundData("[Key check] -Received server string is not valid!");
CSSOCKET(sock);
return -1;
};
} else strcpy(ndbScript, t2);
}
else
{
stt->doEmitionRedFoundData("[Key check] -Cannot receive script value!");
CSSOCKET(sock);
return -1;
};
ZeroMemory(msg, sizeof(msg));
stt->doEmitionGreenFoundData("[Key check] -OK. -Server string aquired! Checking key...");
CSSOCKET(sock);
sockAddr.sin_family = AF_INET;
sockAddr.sin_port = htons(atoi(trcSrvPortLine));
strcpy(msg, "GET ");
strcat(msg, "/api/checkaccount?key=");
strncat(msg, trcPersKey, 32);
strcat(msg, " HTTP/1.0\r\nHost: ");
strcat(msg, ndbServer);
strcat(msg, "\r\nConnection: close");
strcat(msg, "\r\n\r\n");
#if defined(WIN32) || defined(_WIN32) || defined(__WIN32) && !defined(__CYGWIN__)
if(inet_addr(ndbServer) != INADDR_NONE) sockAddr.sin_addr.S_un.S_addr = inet_addr(ndbServer);
else if(host=gethostbyname (ndbServer)) ((unsigned long*) &sockAddr.sin_addr)[0] = ((unsigned long**)host->h_addr_list)[0][0];
#else
if(inet_addr(ndbServer) != INADDR_NONE) sockAddr.sin_addr.s_addr = inet_addr(ndbServer);
else if(host=gethostbyname (ndbServer)) ((unsigned long*) &sockAddr.sin_addr)[0] = ((unsigned long**)host->h_addr_list)[0][0];
#endif
sock = socket( AF_INET, SOCK_STREAM, IPPROTO_TCP );
int c = connect(sock, (sockaddr*)&sockAddr, sizeof(sockAddr));
if(c == SOCKET_ERROR)
{
stt->doEmitionRedFoundData("[Key check] -Connection timeout.");
CSSOCKET(sock);
return -1;
};
c = send(sock, msg, strlen(msg), 0);
if(c == SOCKET_ERROR)
{
stt->doEmitionRedFoundData("[Key check] -Send error.");
CSSOCKET(sock);
return -1;
};
ZeroMemory(msg, sizeof(msg));
test = recv(sock, msg, 512, 0);
if(strstr(msg, "202 Accepted") != NULL)
{
#pragma region QTGUI_Area
stt->doEmitionGreenFoundData("[Key check] -OK. Key is valid!");
#pragma endregion
CSSOCKET(sock);
if(emitIfOK == 0) stt->doEmitionStartScanIP();
else if(emitIfOK == 1) stt->doEmitionStartScanDNS();
else if(emitIfOK == 2) stt->doEmitionStartScanImport();
return 1;
}
else if(strstr(msg, "400 Bad Request") != NULL)
{
#pragma region QTGUI_Area
QString errorDef = GetNSErrorDefinition(msg, "notify");
if(errorDef == "Invalid access key") stt->doEmitionYellowFoundData("[NS-Track] [Key is unauthorized] A valid key is required.");
else stt->doEmitionYellowFoundData("[NS-Track] -FAIL! [400 Bad Request : " + GetNSErrorDefinition(msg, "notify") + "]");
#pragma endregion
CSSOCKET(sock);
return -1;
}
else if(strstr(msg, "503 Bad Gateway") != NULL)
{
stt->doEmitionYellowFoundData("[NS-Track] 503 Backend not responding!");
CSSOCKET(sock);
return -1;
}
else
{
#pragma region QTGUI_Area
char header[64] = {0};
getSubStrEx(msg, "http/1.1 ", "\r\n", header, 64);
stt->doEmitionYellowFoundData("[Key check] -FAIL! An error occured. (" + QString::number(WSAGetLastError()) + ") Header: <u>" + QString::fromLocal8Bit(header) + "</u>");
if(gDebugMode) stt->doEmitionDebugFoundData(QString(msg));
#pragma endregion
CSSOCKET(sock);
return -1;
};
ZeroMemory(msg, sizeof(msg));
CSSOCKET(sock);
}
else
{
#pragma region QTGUI_Area
stt->doEmitionRedFoundData("[Key check] -Balancer replied with invalid string.");
if(gDebugMode) stt->doEmitionDebugFoundData(QString(msg));
CSSOCKET(sock);
return -1;
#pragma endregion
};
};
void CheckKey_Th::run()
{
KeyCheckerMain();
};

View File

@ -0,0 +1,270 @@
#pragma once
#include "CheckKey_Th.h"
#include "CheckProxy_Th.h"
#include "STh.h"
#include "externData.h"
#include "externFunctions.h"
void getSubStrEx(char *src, char *startStr, char *endStr, char *dest, int szDest)
{
ZeroMemory(dest, szDest);
char *ptr1 = strstri(src, startStr);
if(ptr1 != NULL)
{
char *ptr2 = strstri(ptr1, endStr);
if(ptr2 != NULL)
{
int szStartStr = strlen(startStr);
int sz = ptr2 - ptr1 - szStartStr;
strncpy(dest, ptr1 + szStartStr, sz < szDest ? sz : szDest);
};
};
}
void getSubStr(char *src, char *startStr, char *endStr, char *dest, int szDest)
{
ZeroMemory(dest, szDest);
char *ptr1 = strstri(src, startStr);
if(ptr1 != NULL)
{
char *ptr2 = strstri(ptr1, endStr);
if(ptr2 != NULL)
{
int sz = ptr2 - ptr1;
strncpy(dest, ptr1, sz < szDest ? sz : szDest);
};
};
}
int emitIfOK = -1;
int KeyCheckerMain()
{
int kLen = strlen(trcPersKey);
if(kLen == 0)
{
stt->doEmitionRedFoundData("[Key check] Key field is empty.");
return -1;
}
else if(kLen < 32)
{
stt->doEmitionRedFoundData("[Key check] Key length is not valid.");
return -1;
};
char msg[1024] = {0};
char ndbServer[64] = {0};
char ndbScript[64] = {0};
sockaddr_in sockAddr;
sockAddr.sin_family = AF_INET;
sockAddr.sin_port = htons(atoi(trcSrvPortLine));
strcpy(msg, "GET ");
strcat(msg, "/");
strcat(msg, trcScr);
strcat(msg, " HTTP/1.0\r\nHost: ");
strcat(msg, trcSrv);
strcat(msg, "\r\nX-Nescav3: True");
strcat(msg, "\r\nConnection: close");
strcat(msg, "\r\n\r\n");
HOSTENT *host;
#if defined(WIN32) || defined(_WIN32) || defined(__WIN32) && !defined(__CYGWIN__)
if(inet_addr(trcSrv) != INADDR_NONE) sockAddr.sin_addr.S_un.S_addr = inet_addr(trcSrv);
else if(host=gethostbyname (trcSrv)) ((unsigned long*) &sockAddr.sin_addr)[0] = ((unsigned long**)host->h_addr_list)[0][0];
#else
if(inet_addr(trcSrv) != INADDR_NONE) sockAddr.sin_addr.s_addr = inet_addr(trcSrv);
else if(host=gethostbyname (trcSrv)) ((unsigned long*) &sockAddr.sin_addr)[0] = ((unsigned long**)host->h_addr_list)[0][0];
#endif
SOCKET sock = socket( AF_INET, SOCK_STREAM, IPPROTO_TCP );
stt->doEmitionYellowFoundData("[Key check] Requesting server ip...");
int test = connect(sock, (sockaddr*)&sockAddr, sizeof(sockAddr));
if(test == -1)
{
stt->doEmitionRedFoundData("[Key check] -connect() returned. Cannot connect to balancer! " + QString::number(WSAGetLastError()) + ".");
CSSOCKET(sock);
return -1;
};
test = send(sock, msg, strlen(msg), 0);
if(test == -1)
{
stt->doEmitionRedFoundData("[Key check] -send() returned. Cannot send to balancer! " + QString::number(WSAGetLastError()) + ".");
CSSOCKET(sock);
return -1;
};
ZeroMemory(msg, sizeof(msg));
int ror = sizeof(msg);
test = recv(sock, msg, sizeof(msg), 0);
char buff[512] = {0};
while((test = recv(sock, msg, sizeof(msg), 0)) != 0)
{
strcat(msg, buff);
};
if(test == -1)
{
stt->doEmitionRedFoundData("[Key check] -recv() returned. Cannot recv from balancer! " + QString::number(WSAGetLastError()) + ".");
CSSOCKET(sock);
return -1;
};
char *t1;
char *t2;
if(strstr(msg, "http://") != NULL)
{
t1 = strstr(msg, "http://");
if(strstr((char*)(t1 + strlen("http://")), "/") != NULL)
{
t2 = strstr((char*)(t1 + strlen("http://")), "/");
int ln = t2 - t1 - strlen("http://");
if(ln > 64)
{
stt->doEmitionRedFoundData("[Key check] -Received server string is not valid!");
CSSOCKET(sock);
return -1;
}
else strncpy(ndbServer, (char*)(t1 + strlen("http://")), ln);
if(strlen(t2) > 64)
{
stt->doEmitionYellowFoundData("[Key check] -Fragmentation detected!");
if(strstr(t2, "\r\n") != NULL)
{
char *t3 = strstr(t2, "\r\n");
int y = (int)(t3 - t2);
if(y > 64)
{
stt->doEmitionRedFoundData("[Key check] -Received server string is not valid!");
CSSOCKET(sock);
return -1;
}
else
{
strncpy(ndbScript, t2, y);
};
}
else
{
stt->doEmitionRedFoundData("[Key check] -Received server string is not valid!");
CSSOCKET(sock);
return -1;
};
} else strcpy(ndbScript, t2);
}
else
{
stt->doEmitionRedFoundData("[Key check] -Cannot receive script value!");
CSSOCKET(sock);
return -1;
};
ZeroMemory(msg, sizeof(msg));
stt->doEmitionGreenFoundData("[Key check] -OK. -Server string aquired! Checking key...");
CSSOCKET(sock);
sockAddr.sin_family = AF_INET;
sockAddr.sin_port = htons(atoi(trcSrvPortLine));
strcpy(msg, "GET ");
strcat(msg, "/api/checkaccount?key=");
strncat(msg, trcPersKey, 32);
strcat(msg, " HTTP/1.0\r\nHost: ");
strcat(msg, ndbServer);
strcat(msg, "\r\nConnection: close");
strcat(msg, "\r\n\r\n");
#if defined(WIN32) || defined(_WIN32) || defined(__WIN32) && !defined(__CYGWIN__)
if(inet_addr(ndbServer) != INADDR_NONE) sockAddr.sin_addr.S_un.S_addr = inet_addr(ndbServer);
else if(host=gethostbyname (ndbServer)) ((unsigned long*) &sockAddr.sin_addr)[0] = ((unsigned long**)host->h_addr_list)[0][0];
#else
if(inet_addr(ndbServer) != INADDR_NONE) sockAddr.sin_addr.s_addr = inet_addr(ndbServer);
else if(host=gethostbyname (ndbServer)) ((unsigned long*) &sockAddr.sin_addr)[0] = ((unsigned long**)host->h_addr_list)[0][0];
#endif
sock = socket( AF_INET, SOCK_STREAM, IPPROTO_TCP );
int c = connect(sock, (sockaddr*)&sockAddr, sizeof(sockAddr));
if(c == SOCKET_ERROR)
{
stt->doEmitionRedFoundData("[Key check] -Connection timeout.");
CSSOCKET(sock);
return -1;
};
c = send(sock, msg, strlen(msg), 0);
if(c == SOCKET_ERROR)
{
stt->doEmitionRedFoundData("[Key check] -Send error.");
CSSOCKET(sock);
return -1;
};
ZeroMemory(msg, sizeof(msg));
test = recv(sock, msg, 512, 0);
if(strstr(msg, "202 Accepted") != NULL)
{
#pragma region QTGUI_Area
stt->doEmitionGreenFoundData("[Key check] -OK. Key is valid!");
#pragma endregion
CSSOCKET(sock);
if(emitIfOK == 0) stt->doEmitionStartScanIP();
else if(emitIfOK == 1) stt->doEmitionStartScanDNS();
else if(emitIfOK == 2) stt->doEmitionStartScanImport();
return 1;
}
else if(strstr(msg, "400 Bad Request") != NULL)
{
#pragma region QTGUI_Area
QString errorDef = GetNSErrorDefinition(msg, "notify");
if(errorDef == "Invalid access key") stt->doEmitionYellowFoundData("[NS-Track] [Key is unauthorized] A valid key is required.");
else stt->doEmitionYellowFoundData("[NS-Track] -FAIL! [400 Bad Request : " + GetNSErrorDefinition(msg, "notify") + "]");
#pragma endregion
CSSOCKET(sock);
return -1;
}
else if(strstr(msg, "503 Bad Gateway") != NULL)
{
stt->doEmitionYellowFoundData("[NS-Track] 503 Backend not responding!");
CSSOCKET(sock);
return -1;
}
else
{
#pragma region QTGUI_Area
char header[64] = {0};
getSubStrEx(msg, "http/1.1 ", "\r\n", header, 64);
stt->doEmitionYellowFoundData("[Key check] -FAIL! An error occured. (" + QString::number(WSAGetLastError()) + ") Header: <u>" + QString::fromLocal8Bit(header) + "</u>");
if(gDebugMode) stt->doEmitionDebugFoundData(QString(msg));
#pragma endregion
CSSOCKET(sock);
return -1;
};
ZeroMemory(msg, sizeof(msg));
CSSOCKET(sock);
}
else
{
#pragma region QTGUI_Area
stt->doEmitionRedFoundData("[Key check] -Balancer replied with invalid string.");
if(gDebugMode) stt->doEmitionDebugFoundData(QString(msg));
CSSOCKET(sock);
return -1;
#pragma endregion
};
};
void CheckKey_Th::run()
{
KeyCheckerMain();
};

View File

@ -0,0 +1,270 @@
#pragma once
#include "CheckKey_Th.h"
#include "CheckProxy_Th.h"
#include "STh.h"
#include "externData.h"
#include "externFunctions.h"
void getSubStrEx(char *src, char *startStr, char *endStr, char *dest, int szDest)
{
ZeroMemory(dest, szDest);
char *ptr1 = strstri(src, startStr);
if(ptr1 != NULL)
{
char *ptr2 = strstri(ptr1, endStr);
if(ptr2 != NULL)
{
int szStartStr = strlen(startStr);
int sz = ptr2 - ptr1 - szStartStr;
strncpy(dest, ptr1 + szStartStr, sz < szDest ? sz : szDest);
};
};
}
void getSubStr(char *src, char *startStr, char *endStr, char *dest, int szDest)
{
ZeroMemory(dest, szDest);
char *ptr1 = strstri(src, startStr);
if(ptr1 != NULL)
{
char *ptr2 = strstri(ptr1, endStr);
if(ptr2 != NULL)
{
int sz = ptr2 - ptr1;
strncpy(dest, ptr1, sz < szDest ? sz : szDest);
};
};
}
int emitIfOK = -1;
int KeyCheckerMain()
{
int kLen = strlen(trcPersKey);
if(kLen == 0)
{
stt->doEmitionRedFoundData("[Key check] Key field is empty.");
return -1;
}
else if(kLen < 32)
{
stt->doEmitionRedFoundData("[Key check] Key length is not valid.");
return -1;
};
char msg[1024] = {0};
char ndbServer[64] = {0};
char ndbScript[64] = {0};
sockaddr_in sockAddr;
sockAddr.sin_family = AF_INET;
sockAddr.sin_port = htons(atoi(trcSrvPortLine));
strcpy(msg, "GET ");
strcat(msg, "/");
strcat(msg, trcScr);
strcat(msg, " HTTP/1.0\r\nHost: ");
strcat(msg, trcSrv);
strcat(msg, "\r\nX-Nescav3: True");
strcat(msg, "\r\nConnection: close");
strcat(msg, "\r\n\r\n");
HOSTENT *host;
#if defined(WIN32) || defined(_WIN32) || defined(__WIN32) && !defined(__CYGWIN__)
if(inet_addr(trcSrv) != INADDR_NONE) sockAddr.sin_addr.S_un.S_addr = inet_addr(trcSrv);
else if(host=gethostbyname (trcSrv)) ((unsigned long*) &sockAddr.sin_addr)[0] = ((unsigned long**)host->h_addr_list)[0][0];
#else
if(inet_addr(trcSrv) != INADDR_NONE) sockAddr.sin_addr.s_addr = inet_addr(trcSrv);
else if(host=gethostbyname (trcSrv)) ((unsigned long*) &sockAddr.sin_addr)[0] = ((unsigned long**)host->h_addr_list)[0][0];
#endif
SOCKET sock = socket( AF_INET, SOCK_STREAM, IPPROTO_TCP );
stt->doEmitionYellowFoundData("[Key check] Requesting server ip...");
int test = connect(sock, (sockaddr*)&sockAddr, sizeof(sockAddr));
if(test == -1)
{
stt->doEmitionRedFoundData("[Key check] -connect() returned. Cannot connect to balancer! " + QString::number(WSAGetLastError()) + ".");
CSSOCKET(sock);
return -1;
};
test = send(sock, msg, strlen(msg), 0);
if(test == -1)
{
stt->doEmitionRedFoundData("[Key check] -send() returned. Cannot send to balancer! " + QString::number(WSAGetLastError()) + ".");
CSSOCKET(sock);
return -1;
};
ZeroMemory(msg, sizeof(msg));
int ror = sizeof(msg);
test = recv(sock, msg, sizeof(msg), 0);
char buff[512] = {0};
while((test = recv(sock, msg, sizeof(msg), 0)) != 0)
{
strcat(msg, buff);
};
if(test == -1)
{
stt->doEmitionRedFoundData("[Key check] -recv() returned. Cannot recv from balancer! " + QString::number(WSAGetLastError()) + ".");
CSSOCKET(sock);
return -1;
};
char *t1;
char *t2;
if(strstr(msg, "http://") != NULL)
{
t1 = strstr(msg, "http://");
if(strstr((char*)(t1 + strlen("http://")), "/") != NULL)
{
t2 = strstr((char*)(t1 + strlen("http://")), "/");
int ln = t2 - t1 - strlen("http://");
if(ln > 64)
{
stt->doEmitionRedFoundData("[Key check] -Received server string is not valid!");
CSSOCKET(sock);
return -1;
}
else strncpy(ndbServer, (char*)(t1 + strlen("http://")), ln);
if(strlen(t2) > 64)
{
stt->doEmitionYellowFoundData("[Key check] -Fragmentation detected!");
if(strstr(t2, "\r\n") != NULL)
{
char *t3 = strstr(t2, "\r\n");
int y = (int)(t3 - t2);
if(y > 64)
{
stt->doEmitionRedFoundData("[Key check] -Received server string is not valid!");
CSSOCKET(sock);
return -1;
}
else
{
strncpy(ndbScript, t2, y);
};
}
else
{
stt->doEmitionRedFoundData("[Key check] -Received server string is not valid!");
CSSOCKET(sock);
return -1;
};
} else strcpy(ndbScript, t2);
}
else
{
stt->doEmitionRedFoundData("[Key check] -Cannot receive script value!");
CSSOCKET(sock);
return -1;
};
ZeroMemory(msg, sizeof(msg));
stt->doEmitionGreenFoundData("[Key check] -OK. -Server string aquired! Checking key...");
CSSOCKET(sock);
sockAddr.sin_family = AF_INET;
sockAddr.sin_port = htons(atoi(trcSrvPortLine));
strcpy(msg, "GET ");
strcat(msg, "/api/checkaccount?key=");
strncat(msg, trcPersKey, 32);
strcat(msg, " HTTP/1.0\r\nHost: ");
strcat(msg, ndbServer);
strcat(msg, "\r\nConnection: close");
strcat(msg, "\r\n\r\n");
#if defined(WIN32) || defined(_WIN32) || defined(__WIN32) && !defined(__CYGWIN__)
if(inet_addr(ndbServer) != INADDR_NONE) sockAddr.sin_addr.S_un.S_addr = inet_addr(ndbServer);
else if(host=gethostbyname (ndbServer)) ((unsigned long*) &sockAddr.sin_addr)[0] = ((unsigned long**)host->h_addr_list)[0][0];
#else
if(inet_addr(ndbServer) != INADDR_NONE) sockAddr.sin_addr.s_addr = inet_addr(ndbServer);
else if(host=gethostbyname (ndbServer)) ((unsigned long*) &sockAddr.sin_addr)[0] = ((unsigned long**)host->h_addr_list)[0][0];
#endif
sock = socket( AF_INET, SOCK_STREAM, IPPROTO_TCP );
int c = connect(sock, (sockaddr*)&sockAddr, sizeof(sockAddr));
if(c == SOCKET_ERROR)
{
stt->doEmitionRedFoundData("[Key check] -Connection timeout.");
CSSOCKET(sock);
return -1;
};
c = send(sock, msg, strlen(msg), 0);
if(c == SOCKET_ERROR)
{
stt->doEmitionRedFoundData("[Key check] -Send error.");
CSSOCKET(sock);
return -1;
};
ZeroMemory(msg, sizeof(msg));
test = recv(sock, msg, 512, 0);
if(strstr(msg, "202 Accepted") != NULL)
{
#pragma region QTGUI_Area
stt->doEmitionGreenFoundData("[Key check] -OK. Key is valid!");
#pragma endregion
CSSOCKET(sock);
if(emitIfOK == 0) stt->doEmitionStartScanIP();
else if(emitIfOK == 1) stt->doEmitionStartScanDNS();
else if(emitIfOK == 2) stt->doEmitionStartScanImport();
return 1;
}
else if(strstr(msg, "400 Bad Request") != NULL)
{
#pragma region QTGUI_Area
QString errorDef = GetNSErrorDefinition(msg, "notify");
if(errorDef == "Invalid access key") stt->doEmitionYellowFoundData("[NS-Track] [Key is unauthorized] A valid key is required.");
else stt->doEmitionYellowFoundData("[NS-Track] -FAIL! [400 Bad Request : " + GetNSErrorDefinition(msg, "notify") + "]");
#pragma endregion
CSSOCKET(sock);
return -1;
}
else if(strstr(msg, "503 Bad Gateway") != NULL)
{
stt->doEmitionYellowFoundData("[NS-Track] 503 Backend not responding!");
CSSOCKET(sock);
return -1;
}
else
{
#pragma region QTGUI_Area
char header[64] = {0};
getSubStrEx(msg, "http/1.1 ", "\r\n", header, 64);
stt->doEmitionYellowFoundData("[Key check] -FAIL! An error occured. (" + QString::number(WSAGetLastError()) + ") Header: <u>" + QString::fromLocal8Bit(header) + "</u>");
if(gDebugMode) stt->doEmitionDebugFoundData(QString(msg));
#pragma endregion
CSSOCKET(sock);
return -1;
};
ZeroMemory(msg, sizeof(msg));
CSSOCKET(sock);
}
else
{
#pragma region QTGUI_Area
stt->doEmitionRedFoundData("[Key check] -Balancer replied with invalid string.");
if(gDebugMode) stt->doEmitionDebugFoundData(QString(msg));
CSSOCKET(sock);
return -1;
#pragma endregion
};
};
void CheckKey_Th::run()
{
KeyCheckerMain();
};

300
CheckKey_Th.cpp.orig Normal file
View File

@ -0,0 +1,300 @@
#pragma once
#include "CheckKey_Th.h"
#include "CheckProxy_Th.h"
#include "STh.h"
#include "externData.h"
#include "externFunctions.h"
void getSubStrEx(char *src, char *startStr, char *endStr, char *dest, int szDest)
{
ZeroMemory(dest, szDest);
char *ptr1 = strstri(src, startStr);
if(ptr1 != NULL)
{
char *ptr2 = strstri(ptr1, endStr);
if(ptr2 != NULL)
{
int szStartStr = strlen(startStr);
int sz = ptr2 - ptr1 - szStartStr;
strncpy(dest, ptr1 + szStartStr, sz < szDest ? sz : szDest);
};
};
}
void getSubStr(char *src, char *startStr, char *endStr, char *dest, int szDest)
{
ZeroMemory(dest, szDest);
char *ptr1 = strstri(src, startStr);
if(ptr1 != NULL)
{
char *ptr2 = strstri(ptr1, endStr);
if(ptr2 != NULL)
{
int sz = ptr2 - ptr1;
strncpy(dest, ptr1, sz < szDest ? sz : szDest);
};
};
}
int emitIfOK = -1;
int KeyCheckerMain()
{
int kLen = strlen(trcPersKey);
if(kLen == 0)
{
stt->doEmitionRedFoundData("[Key check] Key field is empty.");
return -1;
}
else if(kLen < 32)
{
stt->doEmitionRedFoundData("[Key check] Key length is not valid.");
return -1;
};
char msg[1024] = {0};
char ndbServer[64] = {0};
char ndbScript[64] = {0};
sockaddr_in sockAddr;
sockAddr.sin_family = AF_INET;
sockAddr.sin_port = htons(atoi(trcSrvPortLine));
strcpy(msg, "GET ");
strcat(msg, "/");
strcat(msg, trcScr);
strcat(msg, " HTTP/1.0\r\nHost: ");
strcat(msg, trcSrv);
strcat(msg, "\r\nX-Nescav3: True");
strcat(msg, "\r\nConnection: close");
strcat(msg, "\r\n\r\n");
HOSTENT *host;
#if defined(WIN32) || defined(_WIN32) || defined(__WIN32) && !defined(__CYGWIN__)
if(inet_addr(trcSrv) != INADDR_NONE) sockAddr.sin_addr.S_un.S_addr = inet_addr(trcSrv);
else if(host=gethostbyname (trcSrv)) ((unsigned long*) &sockAddr.sin_addr)[0] = ((unsigned long**)host->h_addr_list)[0][0];
#else
if(inet_addr(trcSrv) != INADDR_NONE) sockAddr.sin_addr.s_addr = inet_addr(trcSrv);
else if(host=gethostbyname (trcSrv)) ((unsigned long*) &sockAddr.sin_addr)[0] = ((unsigned long**)host->h_addr_list)[0][0];
#endif
SOCKET sock = socket( AF_INET, SOCK_STREAM, IPPROTO_TCP );
stt->doEmitionYellowFoundData("[Key check] Requesting server ip...");
int test = connect(sock, (sockaddr*)&sockAddr, sizeof(sockAddr));
if(test == -1)
{
stt->doEmitionRedFoundData("[Key check] -connect() returned. Cannot connect to balancer! " + QString::number(WSAGetLastError()) + ".");
CSSOCKET(sock);
return -1;
};
test = send(sock, msg, strlen(msg), 0);
if(test == -1)
{
stt->doEmitionRedFoundData("[Key check] -send() returned. Cannot send to balancer! " + QString::number(WSAGetLastError()) + ".");
CSSOCKET(sock);
return -1;
};
ZeroMemory(msg, sizeof(msg));
int ror = sizeof(msg);
test = recv(sock, msg, sizeof(msg), 0);
char buff[512] = {0};
while((test = recv(sock, msg, sizeof(msg), 0)) != 0)
{
strcat(msg, buff);
};
if(test == -1)
{
stt->doEmitionRedFoundData("[Key check] -recv() returned. Cannot recv from balancer! " + QString::number(WSAGetLastError()) + ".");
CSSOCKET(sock);
return -1;
};
char *t1;
char *t2;
if(strstr(msg, "http://") != NULL)
{
t1 = strstr(msg, "http://");
if(strstr((char*)(t1 + strlen("http://")), "/") != NULL)
{
t2 = strstr((char*)(t1 + strlen("http://")), "/");
int ln = t2 - t1 - strlen("http://");
if(ln > 64)
{
stt->doEmitionRedFoundData("[Key check] -Received server string is not valid!");
CSSOCKET(sock);
return -1;
}
else strncpy(ndbServer, (char*)(t1 + strlen("http://")), ln);
if(strlen(t2) > 64)
{
stt->doEmitionYellowFoundData("[Key check] -Fragmentation detected!");
if(strstr(t2, "\r\n") != NULL)
{
char *t3 = strstr(t2, "\r\n");
int y = (int)(t3 - t2);
if(y > 64)
{
stt->doEmitionRedFoundData("[Key check] -Received server string is not valid!");
CSSOCKET(sock);
return -1;
}
else
{
strncpy(ndbScript, t2, y);
};
}
else
{
stt->doEmitionRedFoundData("[Key check] -Received server string is not valid!");
CSSOCKET(sock);
return -1;
};
} else strcpy(ndbScript, t2);
}
else
{
stt->doEmitionRedFoundData("[Key check] -Cannot receive script value!");
CSSOCKET(sock);
return -1;
};
ZeroMemory(msg, sizeof(msg));
stt->doEmitionGreenFoundData("[Key check] -OK. -Server string aquired! Checking key...");
CSSOCKET(sock);
sockAddr.sin_family = AF_INET;
sockAddr.sin_port = htons(atoi(trcSrvPortLine));
strcpy(msg, "GET ");
strcat(msg, "/api/checkaccount?key=");
strncat(msg, trcPersKey, 32);
strcat(msg, " HTTP/1.0\r\nHost: ");
strcat(msg, ndbServer);
strcat(msg, "\r\nConnection: close");
strcat(msg, "\r\n\r\n");
#if defined(WIN32) || defined(_WIN32) || defined(__WIN32) && !defined(__CYGWIN__)
if(inet_addr(ndbServer) != INADDR_NONE) sockAddr.sin_addr.S_un.S_addr = inet_addr(ndbServer);
else if(host=gethostbyname (ndbServer)) ((unsigned long*) &sockAddr.sin_addr)[0] = ((unsigned long**)host->h_addr_list)[0][0];
#else
if(inet_addr(ndbServer) != INADDR_NONE) sockAddr.sin_addr.s_addr = inet_addr(ndbServer);
else if(host=gethostbyname (ndbServer)) ((unsigned long*) &sockAddr.sin_addr)[0] = ((unsigned long**)host->h_addr_list)[0][0];
#endif
sock = socket( AF_INET, SOCK_STREAM, IPPROTO_TCP );
int c = connect(sock, (sockaddr*)&sockAddr, sizeof(sockAddr));
if(c == SOCKET_ERROR)
{
stt->doEmitionRedFoundData("[Key check] -Connection timeout.");
CSSOCKET(sock);
return -1;
};
c = send(sock, msg, strlen(msg), 0);
if(c == SOCKET_ERROR)
{
stt->doEmitionRedFoundData("[Key check] -Send error.");
CSSOCKET(sock);
return -1;
};
ZeroMemory(msg, sizeof(msg));
test = recv(sock, msg, 512, 0);
if(strstr(msg, "202 Accepted") != NULL)
{
<<<<<<< HEAD
stt->doEmitionGreenFoundData("[Key check] -OK. Key is valid!");
=======
#pragma region QTGUI_Area
stt->doEmitionGreenFoundData("[Key check] -OK. Key is valid!");
#pragma endregion
>>>>>>> 1f26df077976493c1916f7764c83dc03da1445fa
CSSOCKET(sock);
if(emitIfOK == 0) stt->doEmitionStartScanIP();
else if(emitIfOK == 1) stt->doEmitionStartScanDNS();
else if(emitIfOK == 2) stt->doEmitionStartScanImport();
return 1;
}
else if(strstr(msg, "400 Bad Request") != NULL)
{
<<<<<<< HEAD
QString errorDef = GetNSErrorDefinition(msg, "notify");
if(errorDef == "Invalid access key") stt->doEmitionYellowFoundData("[NS-Track] [Key is unauthorized] A valid key is required.");
else stt->doEmitionYellowFoundData("[NS-Track] -FAIL! [400 Bad Request : " + GetNSErrorDefinition(msg, "notify") + "]");
=======
#pragma region QTGUI_Area
QString errorDef = GetNSErrorDefinition(msg, "notify");
if(errorDef == "Invalid access key") stt->doEmitionYellowFoundData("[NS-Track] [Key is unauthorized] A valid key is required.");
else stt->doEmitionYellowFoundData("[NS-Track] -FAIL! [400 Bad Request : " + GetNSErrorDefinition(msg, "notify") + "]");
#pragma endregion
>>>>>>> 1f26df077976493c1916f7764c83dc03da1445fa
CSSOCKET(sock);
return -1;
}
else if(strstr(msg, "503 Bad Gateway") != NULL)
{
stt->doEmitionYellowFoundData("[NS-Track] 503 Backend not responding!");
CSSOCKET(sock);
return -1;
}
else
{
<<<<<<< HEAD
=======
#pragma region QTGUI_Area
>>>>>>> 1f26df077976493c1916f7764c83dc03da1445fa
char header[64] = {0};
getSubStrEx(msg, "http/1.1 ", "\r\n", header, 64);
stt->doEmitionYellowFoundData("[Key check] -FAIL! An error occured. (" + QString::number(WSAGetLastError()) + ") Header: <u>" + QString::fromLocal8Bit(header) + "</u>");
if(gDebugMode) stt->doEmitionDebugFoundData(QString(msg));
<<<<<<< HEAD
=======
#pragma endregion
>>>>>>> 1f26df077976493c1916f7764c83dc03da1445fa
CSSOCKET(sock);
return -1;
};
ZeroMemory(msg, sizeof(msg));
CSSOCKET(sock);
}
else
{
<<<<<<< HEAD
=======
#pragma region QTGUI_Area
>>>>>>> 1f26df077976493c1916f7764c83dc03da1445fa
stt->doEmitionRedFoundData("[Key check] -Balancer replied with invalid string.");
if(gDebugMode) stt->doEmitionDebugFoundData(QString(msg));
CSSOCKET(sock);
return -1;
<<<<<<< HEAD
=======
#pragma endregion
>>>>>>> 1f26df077976493c1916f7764c83dc03da1445fa
};
};
void CheckKey_Th::run()
{
KeyCheckerMain();
};

View File

@ -0,0 +1,208 @@
#include "CheckProxy_Th.h"
#include "externData.h"
void CheckProxy_Th::doEmitChangeRedIRCData(QString str)
{
emit chPTh->changeRedIRCData(str);
};
void CheckProxy_Th::doEmitChangeGreenIRCData(QString str)
{
emit chPTh->changeGreenIRCData(str);
};
void CheckProxy_Th::doEmitChangeYellowIRCData(QString str)
{
emit chPTh->changeYellowIRCData(str);
};
void CheckProxy_Th::doEmitChangeRawIRCDataInc(QString str)
{
emit chPTh->changeRawIRCDataInc(str);
};
void CheckProxy_Th::doEmitChangeRawIRCDataOut(QString str)
{
emit chPTh->changeRawIRCDataOut(str);
};
void CheckProxyLogic()
{
QString str1 = ui->ircProxyPort->text();
QString str2 = ui->ircProxy->text();
strcpy(ircProxy, str2.toUtf8().data());
strcpy(ircProxyPort, str1.toUtf8().data());
int err, yes = 1;
SOCKET pSock;
char precvBuff[2048] = {0};
sockaddr_in addr;
addr.sin_family = AF_INET;
addr.sin_port = htons(atoi(ircProxyPort));
HOSTENT *host;
#if defined(WIN32) || defined(_WIN32) || defined(__WIN32) && !defined(__CYGWIN__)
if(inet_addr(ircProxy) != INADDR_NONE) addr.sin_addr.S_un.S_addr = inet_addr(ircProxy);
else if(host = gethostbyname (ircProxy)) ((unsigned long*) &addr.sin_addr)[0] = ((unsigned long**)host->h_addr_list)[0][0];
#else
if(inet_addr(ircProxy) != INADDR_NONE) addr.sin_addr.s_addr = inet_addr(ircProxy);
else if(host=gethostbyname (ircProxy)) ((unsigned long*) &addr.sin_addr)[0] = ((unsigned long**)host->h_addr_list)[0][0];
#endif
pSock = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
if(pSock == INVALID_SOCKET)
{
<<<<<<< HEAD
chPTh->doEmitChangeRedIRCData("CheckProxy: -INVALID SOCKET.");
=======
#pragma region QTGUI_Area
chPTh->doEmitChangeRedIRCData("CheckProxy: -INVALID SOCKET.");
#pragma endregion
>>>>>>> 1f26df077976493c1916f7764c83dc03da1445fa
}
else
{
if(connect(pSock, (sockaddr*)&addr, sizeof(addr)) != SOCKET_ERROR)
{
<<<<<<< HEAD
chPTh->doEmitChangeRawIRCDataOut(QString::fromLocal8Bit("CONNECT 2ip.ru HTTP/1.1\r\n\r\n"));
=======
#pragma region QTGUI_Area
chPTh->doEmitChangeRawIRCDataOut(QString::fromLocal8Bit("CONNECT 2ip.ru HTTP/1.1\r\n\r\n"));
#pragma endregion
>>>>>>> 1f26df077976493c1916f7764c83dc03da1445fa
send(pSock, "CONNECT 2ip.ru HTTP/1.1\r\n\r\n", strlen("CONNECT 2ip.ru HTTP/1.1\r\n\r\n"), 0);
while(recv(pSock, precvBuff, sizeof(precvBuff), 0) > 0)
{
<<<<<<< HEAD
chPTh->doEmitChangeRawIRCDataInc(QString::fromLocal8Bit(precvBuff));
=======
#pragma region QTGUI_Area
chPTh->doEmitChangeRawIRCDataInc(QString::fromLocal8Bit(precvBuff));
#pragma endregion
>>>>>>> 1f26df077976493c1916f7764c83dc03da1445fa
if( (strstr(precvBuff, "HTTP/1.1 200 OK") || strstr(precvBuff, "200 OK")
|| strstr(precvBuff, "OK 200") || strstr(precvBuff, "200 Connection")
)
&& (strlen(precvBuff) < 150)
&& strstr(precvBuff, "404 File Not Found") == NULL
&&
(
strstr(precvBuff, "Invalid Request") == NULL
|| strstr(precvBuff, "Invalid request") == NULL || strstr(precvBuff, "invalid request") == NULL
|| strstr(precvBuff, "400 Bad Request") == NULL || strstr(precvBuff, " 400 bad request") == NULL
)
)
{
<<<<<<< HEAD
chPTh->doEmitChangeRawIRCDataOut(QString::fromLocal8Bit("GET / HTTP/1.1\r\nHost: 2ip.ru\r\n\r\n"));
=======
#pragma region QTGUI_Area
chPTh->doEmitChangeRawIRCDataOut(QString::fromLocal8Bit("GET / HTTP/1.1\r\nHost: 2ip.ru\r\n\r\n"));
#pragma endregion
>>>>>>> 1f26df077976493c1916f7764c83dc03da1445fa
send(pSock, "GET / HTTP/1.1\r\nHost: 2ip.ru\r\n\r\n", strlen("GET / HTTP/1.1\r\nHost: 2ip.ru\r\n\r\n"), 0);
ZeroMemory(precvBuff, sizeof(precvBuff));
while(recv(pSock, precvBuff, sizeof(precvBuff), 0) > 0)
{
<<<<<<< HEAD
chPTh->doEmitChangeRawIRCDataInc(QString::fromLocal8Bit(precvBuff));
=======
#pragma region QTGUI_Area
chPTh->doEmitChangeRawIRCDataInc(QString::fromLocal8Bit(precvBuff));
#pragma endregion
>>>>>>> 1f26df077976493c1916f7764c83dc03da1445fa
if(strstr(precvBuff, "404 File Not Found") == NULL && strstr(precvBuff, "Invalid Request") == NULL
&& strstr(precvBuff, "Invalid request") == NULL && strstr(precvBuff, "invalid request") == NULL
&& strstr(precvBuff, "400 Bad Request") == NULL && strstr(precvBuff, "400 bad request") == NULL
&& strstr(precvBuff, "404 Not") == NULL && strstr(precvBuff, "404 not") == NULL
&& strstr(precvBuff, "500 Internal") == NULL && strstr(precvBuff, "500 internal") == NULL
&& strstr(precvBuff, "401 Unauthorized") == NULL && strstr(precvBuff, "401 unauthorized") == NULL
&& strstr(precvBuff, "InvalidUrl") == NULL && strstr(precvBuff, "invalidurl") == NULL
&& strstr(precvBuff, "Invalid Url") == NULL && strstr(precvBuff, "invalid url") == NULL
&& strstr(precvBuff, "Gateway Timeout") == NULL && strstr(precvBuff, "Gateway timeout") == NULL
&& strstr(precvBuff, "gateway timeout") == NULL
)
{
<<<<<<< HEAD
chPTh->doEmitChangeGreenIRCData("[OK] Success! Now using " + QString(ircProxy) + ":" + QString(ircProxyPort) + ".");
=======
#pragma region QTGUI_Area
chPTh->doEmitChangeGreenIRCData("[OK] Success! Now using " + QString(ircProxy) + ":" + QString(ircProxyPort) + ".");
#pragma endregion
>>>>>>> 1f26df077976493c1916f7764c83dc03da1445fa
proxyEnabledFlag = 1;
CSSOCKET(pSock);
break;
}
else
{
<<<<<<< HEAD
chPTh->doEmitChangeRedIRCData(QString(ircProxy) + ":" + QString(ircProxyPort) + " - is not CONNECT proxy? Try another one.");
=======
#pragma region QTGUI_Area
chPTh->doEmitChangeRedIRCData(QString(ircProxy) + ":" + QString(ircProxyPort) + " - is not CONNECT proxy? Try another one.");
#pragma endregion
>>>>>>> 1f26df077976493c1916f7764c83dc03da1445fa
proxyEnabledFlag = 0;
CSSOCKET(pSock);
break;
};
};
break;
}
else
{
<<<<<<< HEAD
chPTh->doEmitChangeRedIRCData(QString(ircProxy) + ":" + QString(ircProxyPort) + " - is not CONNECT proxy? Try another one.");
=======
#pragma region QTGUI_Area
chPTh->doEmitChangeRedIRCData(QString(ircProxy) + ":" + QString(ircProxyPort) + " - is not CONNECT proxy? Try another one.");
#pragma endregion
>>>>>>> 1f26df077976493c1916f7764c83dc03da1445fa
proxyEnabledFlag = 0;
CSSOCKET(pSock);
break;
};
};
}
else
{
<<<<<<< HEAD
chPTh->doEmitChangeRedIRCData("Cannot connect to " + QString(ircProxy) + ":" + QString(ircProxyPort) + ".");
=======
#pragma region QTGUI_Area
chPTh->doEmitChangeRedIRCData("Cannot connect to " + QString(ircProxy) + ":" + QString(ircProxyPort) + ".");
#pragma endregion
>>>>>>> 1f26df077976493c1916f7764c83dc03da1445fa
proxyEnabledFlag = 0;
};
};
};
void CheckProxy_Th::run()
{
CheckProxyLogic();
};

View File

View File

@ -0,0 +1,154 @@
#include "CheckProxy_Th.h"
#include "externData.h"
void CheckProxy_Th::doEmitChangeRedIRCData(QString str)
{
emit chPTh->changeRedIRCData(str);
};
void CheckProxy_Th::doEmitChangeGreenIRCData(QString str)
{
emit chPTh->changeGreenIRCData(str);
};
void CheckProxy_Th::doEmitChangeYellowIRCData(QString str)
{
emit chPTh->changeYellowIRCData(str);
};
void CheckProxy_Th::doEmitChangeRawIRCDataInc(QString str)
{
emit chPTh->changeRawIRCDataInc(str);
};
void CheckProxy_Th::doEmitChangeRawIRCDataOut(QString str)
{
emit chPTh->changeRawIRCDataOut(str);
};
void CheckProxyLogic()
{
QString str1 = ui->ircProxyPort->text();
QString str2 = ui->ircProxy->text();
strcpy(ircProxy, str2.toUtf8().data());
strcpy(ircProxyPort, str1.toUtf8().data());
int err, yes = 1;
SOCKET pSock;
char precvBuff[2048] = {0};
sockaddr_in addr;
addr.sin_family = AF_INET;
addr.sin_port = htons(atoi(ircProxyPort));
HOSTENT *host;
#if defined(WIN32) || defined(_WIN32) || defined(__WIN32) && !defined(__CYGWIN__)
if(inet_addr(ircProxy) != INADDR_NONE) addr.sin_addr.S_un.S_addr = inet_addr(ircProxy);
else if(host = gethostbyname (ircProxy)) ((unsigned long*) &addr.sin_addr)[0] = ((unsigned long**)host->h_addr_list)[0][0];
#else
if(inet_addr(ircProxy) != INADDR_NONE) addr.sin_addr.s_addr = inet_addr(ircProxy);
else if(host=gethostbyname (ircProxy)) ((unsigned long*) &addr.sin_addr)[0] = ((unsigned long**)host->h_addr_list)[0][0];
#endif
pSock = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
if(pSock == INVALID_SOCKET)
{
chPTh->doEmitChangeRedIRCData("CheckProxy: -INVALID SOCKET.");
}
else
{
if(connect(pSock, (sockaddr*)&addr, sizeof(addr)) != SOCKET_ERROR)
{
chPTh->doEmitChangeRawIRCDataOut(QString::fromLocal8Bit("CONNECT 2ip.ru HTTP/1.1\r\n\r\n"));
send(pSock, "CONNECT 2ip.ru HTTP/1.1\r\n\r\n", strlen("CONNECT 2ip.ru HTTP/1.1\r\n\r\n"), 0);
while(recv(pSock, precvBuff, sizeof(precvBuff), 0) > 0)
{
chPTh->doEmitChangeRawIRCDataInc(QString::fromLocal8Bit(precvBuff));
if( (strstr(precvBuff, "HTTP/1.1 200 OK") || strstr(precvBuff, "200 OK")
|| strstr(precvBuff, "OK 200") || strstr(precvBuff, "200 Connection")
)
&& (strlen(precvBuff) < 150)
&& strstr(precvBuff, "404 File Not Found") == NULL
&&
(
strstr(precvBuff, "Invalid Request") == NULL
|| strstr(precvBuff, "Invalid request") == NULL || strstr(precvBuff, "invalid request") == NULL
|| strstr(precvBuff, "400 Bad Request") == NULL || strstr(precvBuff, " 400 bad request") == NULL
)
)
{
chPTh->doEmitChangeRawIRCDataOut(QString::fromLocal8Bit("GET / HTTP/1.1\r\nHost: 2ip.ru\r\n\r\n"));
send(pSock, "GET / HTTP/1.1\r\nHost: 2ip.ru\r\n\r\n", strlen("GET / HTTP/1.1\r\nHost: 2ip.ru\r\n\r\n"), 0);
ZeroMemory(precvBuff, sizeof(precvBuff));
while(recv(pSock, precvBuff, sizeof(precvBuff), 0) > 0)
{
chPTh->doEmitChangeRawIRCDataInc(QString::fromLocal8Bit(precvBuff));
if(strstr(precvBuff, "404 File Not Found") == NULL && strstr(precvBuff, "Invalid Request") == NULL
&& strstr(precvBuff, "Invalid request") == NULL && strstr(precvBuff, "invalid request") == NULL
&& strstr(precvBuff, "400 Bad Request") == NULL && strstr(precvBuff, "400 bad request") == NULL
&& strstr(precvBuff, "404 Not") == NULL && strstr(precvBuff, "404 not") == NULL
&& strstr(precvBuff, "500 Internal") == NULL && strstr(precvBuff, "500 internal") == NULL
&& strstr(precvBuff, "401 Unauthorized") == NULL && strstr(precvBuff, "401 unauthorized") == NULL
&& strstr(precvBuff, "InvalidUrl") == NULL && strstr(precvBuff, "invalidurl") == NULL
&& strstr(precvBuff, "Invalid Url") == NULL && strstr(precvBuff, "invalid url") == NULL
&& strstr(precvBuff, "Gateway Timeout") == NULL && strstr(precvBuff, "Gateway timeout") == NULL
&& strstr(precvBuff, "gateway timeout") == NULL
)
{
chPTh->doEmitChangeGreenIRCData("[OK] Success! Now using " + QString(ircProxy) + ":" + QString(ircProxyPort) + ".");
proxyEnabledFlag = 1;
CSSOCKET(pSock);
break;
}
else
{
chPTh->doEmitChangeRedIRCData(QString(ircProxy) + ":" + QString(ircProxyPort) + " - is not CONNECT proxy? Try another one.");
proxyEnabledFlag = 0;
CSSOCKET(pSock);
break;
};
};
break;
}
else
{
chPTh->doEmitChangeRedIRCData(QString(ircProxy) + ":" + QString(ircProxyPort) + " - is not CONNECT proxy? Try another one.");
proxyEnabledFlag = 0;
CSSOCKET(pSock);
break;
};
};
}
else
{
chPTh->doEmitChangeRedIRCData("Cannot connect to " + QString(ircProxy) + ":" + QString(ircProxyPort) + ".");
proxyEnabledFlag = 0;
};
};
};
void CheckProxy_Th::run()
{
CheckProxyLogic();
};

View File

@ -0,0 +1,154 @@
#include "CheckProxy_Th.h"
#include "externData.h"
void CheckProxy_Th::doEmitChangeRedIRCData(QString str)
{
emit chPTh->changeRedIRCData(str);
};
void CheckProxy_Th::doEmitChangeGreenIRCData(QString str)
{
emit chPTh->changeGreenIRCData(str);
};
void CheckProxy_Th::doEmitChangeYellowIRCData(QString str)
{
emit chPTh->changeYellowIRCData(str);
};
void CheckProxy_Th::doEmitChangeRawIRCDataInc(QString str)
{
emit chPTh->changeRawIRCDataInc(str);
};
void CheckProxy_Th::doEmitChangeRawIRCDataOut(QString str)
{
emit chPTh->changeRawIRCDataOut(str);
};
void CheckProxyLogic()
{
QString str1 = ui->ircProxyPort->text();
QString str2 = ui->ircProxy->text();
strcpy(ircProxy, str2.toUtf8().data());
strcpy(ircProxyPort, str1.toUtf8().data());
int err, yes = 1;
SOCKET pSock;
char precvBuff[2048] = {0};
sockaddr_in addr;
addr.sin_family = AF_INET;
addr.sin_port = htons(atoi(ircProxyPort));
HOSTENT *host;
#if defined(WIN32) || defined(_WIN32) || defined(__WIN32) && !defined(__CYGWIN__)
if(inet_addr(ircProxy) != INADDR_NONE) addr.sin_addr.S_un.S_addr = inet_addr(ircProxy);
else if(host = gethostbyname (ircProxy)) ((unsigned long*) &addr.sin_addr)[0] = ((unsigned long**)host->h_addr_list)[0][0];
#else
if(inet_addr(ircProxy) != INADDR_NONE) addr.sin_addr.s_addr = inet_addr(ircProxy);
else if(host=gethostbyname (ircProxy)) ((unsigned long*) &addr.sin_addr)[0] = ((unsigned long**)host->h_addr_list)[0][0];
#endif
pSock = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
if(pSock == INVALID_SOCKET)
{
#pragma region QTGUI_Area
chPTh->doEmitChangeRedIRCData("CheckProxy: -INVALID SOCKET.");
#pragma endregion
}
else
{
if(connect(pSock, (sockaddr*)&addr, sizeof(addr)) != SOCKET_ERROR)
{
#pragma region QTGUI_Area
chPTh->doEmitChangeRawIRCDataOut(QString::fromLocal8Bit("CONNECT 2ip.ru HTTP/1.1\r\n\r\n"));
#pragma endregion
send(pSock, "CONNECT 2ip.ru HTTP/1.1\r\n\r\n", strlen("CONNECT 2ip.ru HTTP/1.1\r\n\r\n"), 0);
while(recv(pSock, precvBuff, sizeof(precvBuff), 0) > 0)
{
#pragma region QTGUI_Area
chPTh->doEmitChangeRawIRCDataInc(QString::fromLocal8Bit(precvBuff));
#pragma endregion
if( (strstr(precvBuff, "HTTP/1.1 200 OK") || strstr(precvBuff, "200 OK")
|| strstr(precvBuff, "OK 200") || strstr(precvBuff, "200 Connection")
)
&& (strlen(precvBuff) < 150)
&& strstr(precvBuff, "404 File Not Found") == NULL
&&
(
strstr(precvBuff, "Invalid Request") == NULL
|| strstr(precvBuff, "Invalid request") == NULL || strstr(precvBuff, "invalid request") == NULL
|| strstr(precvBuff, "400 Bad Request") == NULL || strstr(precvBuff, " 400 bad request") == NULL
)
)
{
#pragma region QTGUI_Area
chPTh->doEmitChangeRawIRCDataOut(QString::fromLocal8Bit("GET / HTTP/1.1\r\nHost: 2ip.ru\r\n\r\n"));
#pragma endregion
send(pSock, "GET / HTTP/1.1\r\nHost: 2ip.ru\r\n\r\n", strlen("GET / HTTP/1.1\r\nHost: 2ip.ru\r\n\r\n"), 0);
ZeroMemory(precvBuff, sizeof(precvBuff));
while(recv(pSock, precvBuff, sizeof(precvBuff), 0) > 0)
{
#pragma region QTGUI_Area
chPTh->doEmitChangeRawIRCDataInc(QString::fromLocal8Bit(precvBuff));
#pragma endregion
if(strstr(precvBuff, "404 File Not Found") == NULL && strstr(precvBuff, "Invalid Request") == NULL
&& strstr(precvBuff, "Invalid request") == NULL && strstr(precvBuff, "invalid request") == NULL
&& strstr(precvBuff, "400 Bad Request") == NULL && strstr(precvBuff, "400 bad request") == NULL
&& strstr(precvBuff, "404 Not") == NULL && strstr(precvBuff, "404 not") == NULL
&& strstr(precvBuff, "500 Internal") == NULL && strstr(precvBuff, "500 internal") == NULL
&& strstr(precvBuff, "401 Unauthorized") == NULL && strstr(precvBuff, "401 unauthorized") == NULL
&& strstr(precvBuff, "InvalidUrl") == NULL && strstr(precvBuff, "invalidurl") == NULL
&& strstr(precvBuff, "Invalid Url") == NULL && strstr(precvBuff, "invalid url") == NULL
&& strstr(precvBuff, "Gateway Timeout") == NULL && strstr(precvBuff, "Gateway timeout") == NULL
&& strstr(precvBuff, "gateway timeout") == NULL
)
{
#pragma region QTGUI_Area
chPTh->doEmitChangeGreenIRCData("[OK] Success! Now using " + QString(ircProxy) + ":" + QString(ircProxyPort) + ".");
#pragma endregion
proxyEnabledFlag = 1;
CSSOCKET(pSock);
break;
}
else
{
#pragma region QTGUI_Area
chPTh->doEmitChangeRedIRCData(QString(ircProxy) + ":" + QString(ircProxyPort) + " - is not CONNECT proxy? Try another one.");
#pragma endregion
proxyEnabledFlag = 0;
CSSOCKET(pSock);
break;
};
};
break;
}
else
{
#pragma region QTGUI_Area
chPTh->doEmitChangeRedIRCData(QString(ircProxy) + ":" + QString(ircProxyPort) + " - is not CONNECT proxy? Try another one.");
#pragma endregion
proxyEnabledFlag = 0;
CSSOCKET(pSock);
break;
};
};
}
else
{
#pragma region QTGUI_Area
chPTh->doEmitChangeRedIRCData("Cannot connect to " + QString(ircProxy) + ":" + QString(ircProxyPort) + ".");
#pragma endregion
proxyEnabledFlag = 0;
};
};
};
void CheckProxy_Th::run()
{
CheckProxyLogic();
};

View File

@ -8,7 +8,7 @@
#include "externData.h" #include "externData.h"
#include <openssl/err.h> #include <openssl/err.h>
#if defined(Q_OS_WIN32) #if defined(WIN32) || defined(_WIN32) || defined(__WIN32) && !defined(__CYGWIN__)
#include <iphlpapi.h> #include <iphlpapi.h>
#include <icmpapi.h> #include <icmpapi.h>
#pragma comment(lib, "iphlpapi.lib") #pragma comment(lib, "iphlpapi.lib")

File diff suppressed because it is too large Load Diff

View File

@ -1,7 +1,7 @@
#include "nesca_3.h" #include "nesca_3.h"
#include <QApplication> #include <QApplication>
#include <qfontdatabase.h> #include <qfontdatabase.h>
#if defined(Q_OS_WIN32) #if defined(WIN32) || defined(_WIN32) || defined(__WIN32) && !defined(__CYGWIN__)
#include <windows.h> #include <windows.h>
#endif #endif