Join Helbreath
Would you like to react to this message? Create an account in a few clicks or log in to continue.


An essential info site for anyone learning the game. Great community and often very insightful posts.
 
HomeUseful information for Helbreath beginnersPlay, discover, and broadcast your Helbreath moments for free.Statistics overviewSearchMemberlistRulesRegisterLog in
 

 Get IP code

Go down 
AuthorMessage
SabbaT[GM]
‏‏‎ ‎‏‏‎ ‎
‏‏‎ ‎‏‏‎ ‎
SabbaT[GM]

Posts : 29

Get IP code Empty
PostSubject: Get IP code   Get IP code 999105/19/2020, 12:46 am

bueno no voy a poner el codigo entero por que mis exes estan muy tuneados.

este fragmento de codigo sirve para "averiguar" las 3 IPs importantes de nuestras PCs. cada uno le da el uso que quiere.

este ejemplo muestra para que lo uso yo...
mis exes estan hechos para que quien upea el servidor, se olvide de los CFG
del gate, main y world server.
incluso, supongan que yo los borro a los tres CFGs. 
cada exe genera su propio CFG con las ips de la maquina. el puerto y algunas cosas mas que necesitan. los archivos son editables, y updateables manualmente.
cuando el programa dectecta discrepancia entre las ipv4, ipv6, o la external ip.
automaticamente regenera el CFG, guardando informacion critica como el puerto del exe. y algunas cosas mas y updateando las ip nuevas.
con este codigo que desarrolle. nunca mas volvi a abrir los CFG para cambiar las IPs. todo es automatico.
las letras en amarillo son la parte que regenera el CFG
Get IP code Ej11

[You must be registered and logged in to see this link.]

por lo pronto, solo les dejare el metodo para que puedan obtener las ips.
y denle el uso que quieran.
podrian implementarlo en el client. y transferir la info al HG. para implementar medidas restrictiva de coneccion en la clase XSocket en casa de querer que esas ips no se vuelvan a conectar. 
de nada sirve blokear una cuenta si puede conectarse con otra.

Code:
void MSC::getIPAddresses(char *cipext, char *cipa4, char *cipa6, WORD wPort)
{ struct addrinfo *result = nullptr;
 struct addrinfo hints;
 struct addrinfo *ptr = nullptr;
 struct sockaddr_in  *sockaddr_ipv4;
 struct sockaddr_in6 *sockaddr_ipv6;
 LPSOCKADDR sockaddr_ip;
 char ipstringbuffer[46];
 DWORD ipbufferlength = 46;
 int iRetval;
 int iRet1, iRet2;
 char cPort[16], cHostName[256];

 memcpy(cipext, "ERROR", 5);
 memcpy(cipa4, "ERROR", 5);
 memcpy(cipa6, "ERROR", 5);
 ZeroMemory(cHostName, sizeof(cHostName));
 iRet1 = gethostname(cHostName, 256);
 switch (iRet1)
 { case 0:
 ZeroMemory(&hints, sizeof(hints));
 hints.ai_family = AF_UNSPEC;
 hints.ai_socktype = SOCK_STREAM;
 hints.ai_protocol = IPPROTO_TCP;
 ZeroMemory(cPort, sizeof(cPort));
 wsprintfA(cPort, "%u", wPort);
 iRet2 = getaddrinfo(cHostName, cPort, &hints, &result);
 switch (iRet2)
 { case 0:
 for (ptr = result; ptr != nullptr; ptr = ptr->ai_next)
 { switch (ptr->ai_family)
 { case AF_INET:
 { sockaddr_ipv4 = (struct sockaddr_in *)ptr->ai_addr;
 memcpy(cipa4, inet_ntoa(sockaddr_ipv4->sin_addr), 16);
 }
 break;
 case AF_INET6:
 { sockaddr_ipv6 = (struct sockaddr_in6 *) ptr->ai_addr;
 sockaddr_ip = (LPSOCKADDR)ptr->ai_addr;
 ipbufferlength = 46;
 ZeroMemory(ipstringbuffer, sizeof(ipstringbuffer));
 iRetval = WSAAddressToStringA(sockaddr_ip, (DWORD)ptr->ai_addrlen, NULL, ipstringbuffer, &ipbufferlength);
 if (iRetval != 0) memcpy(cipa6, "ERROR", 5);
 else  memcpy(cipa6, ipstringbuffer, strlen(ipstringbuffer));
 }
 break;
 }
 }
 freeaddrinfo(result);
 break;
 default:
 { PutLogList("(*)An error has occurred in getaddrinfo function.", 1);
 PutLogList("(*)Start Up ABORTED.", 1);
 memcpy(cipa4, "ERROR", 5);
 memcpy(cipa6, "ERROR", 5);
 }
 break;
 }
 break;
 case SOCKET_ERROR:
 { PutLogList("(*)An error has occurred in gethostname function.", 1);
 PutLogList("(*)Start Up ABORTED.", 1);
 memcpy(cipa4, "ERROR", 5);
 memcpy(cipa6, "ERROR", 5);
 }
 break;
 }
 HINTERNET net = InternetOpenA("IP retriever", INTERNET_OPEN_TYPE_PRECONFIG, NULL, NULL, 0);
 HINTERNET conn = InternetOpenUrlA(net, "http://myexternalip.com/raw", NULL, 0, INTERNET_FLAG_RELOAD, 0);
 char buffer[16];
 DWORD read;
 ZeroMemory(buffer, sizeof(buffer));
 buffer[0] = '\0';
 InternetReadFile(conn, buffer, sizeof(buffer) / sizeof(buffer[0]), &read);
 memcpy(cipext, buffer, 16);
 InternetCloseHandle(net);
}
Back to top Go down
 
Get IP code
Back to top 
Page 1 of 1

Permissions in this forum:You cannot reply to topics in this forum
Join Helbreath :: Open Source / Development Corner :: C++-
Jump to: