Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
Scorpion Messenger1.0 (repacking 04012008) - Client.c

Client.c

Caricato da: ScorpionITA
Scarica il programma completo

  1. #include<stdio.h>
  2. #include<string.h>
  3. #include<windows.h>
  4. #include<winreg.h>
  5. #include<winsock.h>
  6.  
  7. #define INVIO   0x0D
  8.  
  9.  
  10. int i;
  11. //int myID;
  12. char myNick[50];
  13. int LoggaConv;
  14. int MAX_CLIENT;
  15. int Connect=0;
  16. int send_nick=0;
  17. int Rmenu;
  18. char bufferrecv[500];
  19. char buffersend[500];
  20. char Clear_line[500];
  21. char SERVER_ADDR[50];
  22. char logfile[1000];
  23. SYSTEMTIME LocalTime;
  24. HANDLE Hinvio;
  25. HANDLE Hricezione;
  26.  
  27. int Protocol_Gst(char buffer[500],int l_buffrecv);
  28. int GetText(char *szBuffer, int nMaxLenght);
  29. int Config(int IDconf,char Param[50]);
  30. int ListNick(char Nick,int ID);
  31. int Title();
  32. int menu(int IDmenu);
  33.  
  34.  
  35. DWORD ricezione (LPDWORD lpdwParam)
  36. {
  37.         int n;
  38.         while(Connect == 0){
  39.                 n = 0;
  40.                 bufferrecv[0] = 0;
  41.                 n= recv(server,bufferrecv,500,0);
  42.                 bufferrecv[n] = 0;
  43.                 if(send_nick != 1){
  44.                         if((strcmp(bufferrecv,"110 NICK OK\r"))==0){
  45.                                 send_nick = 1;
  46.                                 char temp[100];
  47.                                 sprintf(temp,"Connessione Avvenuta Nick: \"%s\"",myNick);
  48.                                 printf("%s\n\n",temp);
  49.                                 if(LoggaConv == 0){
  50.                                         Logga(temp);
  51.                                         }
  52.                                 }
  53.                         }
  54.                 if(i > 0){
  55.                         int b=i;
  56.                         Clear_line[b]=0;
  57.                         for(b = i;b >= 0;b --){
  58.                                 Clear_line[b] = ' ';
  59.                                 }
  60.                         printf("\r%s\r",Clear_line);
  61.                         Protocol_Gst(bufferrecv,n);
  62.                         char buffer[500];
  63.                         int c = i;
  64.                         strcpy(buffer,buffersend);
  65.                         buffer[c] = 0;
  66.                         printf("%s",buffer);
  67.                         }
  68.                 else{
  69.                         Protocol_Gst(bufferrecv,n);
  70.                         }
  71.                 }
  72.         }
  73.  
  74. DWORD invio (LPDWORD lpdwParam)
  75. {
  76.         int z;
  77.         char temp[500];
  78.         while(Connect == 0){
  79.                 z = 0;
  80.                 buffersend[0] = 0;
  81.                 fflush(stdin);
  82.                 GetText(buffersend,500);
  83.                 z=strlen(buffersend);
  84.                 if(send_nick == 0){
  85.                         buffersend[z --] = 0;
  86.                         if(z > 50){
  87.                         printf("Nick troppo lungo");
  88.                         }
  89.                         else{
  90.                                 send(server,buffersend,z,0);
  91.                                 strcpy(myNick,buffersend);
  92.                                 myNick[z] = 0;
  93.                                 }
  94.                         }
  95.                 else{
  96.                         if(buffersend[0] == '/'){
  97.                                 sprintf(temp,"165 %s",buffersend);
  98.                                 }
  99.                         else{
  100.                                 sprintf(temp,"105 %s",buffersend);
  101.                                 }
  102.                         z=strlen(temp);
  103.                         send(server,temp,z,0);
  104.                         if(LoggaConv == 0){
  105.                                 if(send_nick == 1){
  106.                                         Logga(buffersend);
  107.                                         }
  108.                                 }
  109.                         }
  110.                 }
  111. }
  112.  
  113. int main(int argc,char **argv){
  114.  
  115.         SOCKADDR_IN server_addr;
  116.         WSADATA data;
  117.         WORD p;
  118.         int len(char *);
  119.         int lun, err = 0;
  120.         LPHOSTENT host;  
  121.  
  122.         SetConsoleTitle("Scorpion Messenger 1.0");
  123.  
  124.         Config(0,0);
  125.         Rmenu=menu(0);
  126.  
  127.         if(Rmenu != 1){
  128.                 p = MAKEWORD(2,0);
  129.                 err = WSAStartup(p,&data);
  130.  
  131.                 server=socket(PF_INET,SOCK_STREAM,0);
  132.                 server_addr.sin_family=PF_INET;
  133.                 server_addr.sin_port=htons(65);
  134.  
  135.                 host = gethostbyname (SERVER_ADDR);
  136.                 if (host == NULL){
  137.                         err = WSAGetLastError();
  138.                         printf ("Impossibile risolvere l'indirizzo del server\t%d",err);
  139.                         }
  140.  
  141.                 server_addr.sin_addr = *((LPIN_ADDR)*host->h_addr_list);
  142.                 err = connect(server,(struct sockaddr*)&server_addr,lun);
  143.                 if (err != 0){
  144.                         err = WSAGetLastError();
  145.                         printf("Impossibile Connettersi al Server\t%d",err);
  146.                         }
  147.                 DWORD dwThreadRicezioneId,dwThreadInvioId, dwThrdParam = 1;
  148.                 Hricezione = CreateThread(NULL, 0,(LPTHREAD_START_ROUTINE) ricezione, &dwThrdParam, 0, &dwThreadRicezioneId);
  149.                 Hinvio = CreateThread(NULL, 0,(LPTHREAD_START_ROUTINE) invio, &dwThrdParam, 0, &dwThreadInvioId);
  150.        
  151.                 while(1) sleep(10);
  152.                 }
  153.  
  154.         closesocket (server);
  155.         closesocket(miosock);
  156.         WSACleanup();
  157. return 0;
  158. }
  159.  
  160. int Protocol_Gst(char buffer[500],int l_buffrecv){
  161.         char Com_Mess[3]="000";
  162.  
  163.         Com_Mess[0] = buffer[0];
  164.         Com_Mess[1] = buffer[1];
  165.         Com_Mess[2] = buffer[2];
  166.         Com_Mess[3] = 0;
  167.         if ((strcmp(Com_Mess,"105"))==0){
  168.                 char temp[500];
  169.                 int i = 0;
  170.                 int c;
  171.                 for(c = 4;c <= l_buffrecv;c ++){
  172.                         temp[i] = buffer[c];
  173.                         i ++;
  174.                 }
  175.                 temp[i] = 0;
  176.                 printf("%s",temp);
  177.                 if(LoggaConv == 0){
  178.                         if(send_nick == 1){
  179.                                 Logga(temp);
  180.                                 }
  181.                         }
  182.         }
  183.         else if ((strcmp(Com_Mess,"120"))==0){
  184.                 int c=l_buffrecv;
  185.                 c=-3;
  186.                 char ID[c];
  187.                 int i=0;
  188.                 for(c=4;c<=l_buffrecv;c++){
  189.                         ID[i]=buffer[c];
  190.                         i++;
  191.                         }
  192.                 ID[i]=0;
  193.                 MAX_CLIENT=atoi(ID);
  194.                 }
  195.  
  196. /*      else if ((strcmp(Com_Mess,"140"))==0){
  197.                 int c=l_buffrecv;
  198.                 c=-3;
  199.                 char ID[c];
  200.                 int i=0;
  201.                 for(c=4;c<=l_buffrecv;c++){
  202.                         ID[i]=buffer[c];
  203.                         i++;
  204.                         }
  205.                 ID[i]=0;
  206.                 myID=atoi(ID);
  207. }*/
  208.  
  209.         else if ((strcmp(Com_Mess,"192"))==0){
  210.                 closesocket(server);
  211.                 closesocket(miosock);
  212.                 WSACleanup();
  213.                 Connect=1;
  214.                 TerminateThread(Hinvio,0);
  215.                 printf("\n\nIl Server si %c disconnesso",-118);
  216.                 }
  217. return 0;
  218. }
  219.  
  220. int GetText(char *szBuffer, int nMaxLenght) {
  221.         i=0;
  222.         char ch;
  223.         nMaxLenght-2;
  224.         while(ch!=INVIO){
  225.                 ch = getch();
  226.  
  227.                 if (i < 0) i = 0;
  228.  
  229.                 if (i > (nMaxLenght)) i = nMaxLenght;
  230.                 else{
  231.                         if (ch == '\b') {
  232.                                 if(ch != 0) if (i > 0) putch('\b'); putch(' '); putch('\b');
  233.                                 i--;
  234.                                 }
  235.                         else {
  236.                                 szBuffer[i++] = ch;
  237.                                 putch(ch);
  238.                                 }
  239.                         }
  240.                 }
  241.         printf("\n");
  242.         if(i==0){
  243.                 szBuffer[0] = '\n';
  244.                 szBuffer[1] = '\0';
  245.                 }
  246.         else{
  247.                 i--;
  248.                 szBuffer[i] = '\n';
  249.                 i++;
  250.                 szBuffer[i] = '\0';
  251.                 }
  252.         i=0;
  253. return 0;
  254. }
  255.  
  256. int Logga(char buffer[500]){
  257.         GetLocalTime(&LocalTime);
  258.         FILE *log;
  259.         log=fopen(logfile,"a");
  260.         fprintf(log,"<p><font face=\"Comic Sans MS\" size=\"2\"><%i:%i>%s</font></p>\n",LocalTime.wHour,LocalTime.wMinute,buffer);
  261.         fclose(log);
  262. return 0;
  263. }
  264.  
  265. int Config(int IDconf,char Param[50]){
  266.         HKEY chiave;
  267.         DWORD KeyExsist;
  268.         char path[]="SOFTWARE\\Scorpion Software\\Scorpion Messenger\\Client";
  269.         if(IDconf==0){
  270.                 DWORD ipsize;
  271.                 char Logging[1];
  272.                 RegCreateKeyEx(HKEY_LOCAL_MACHINE,
  273.                                 path,0,NULL,
  274.                                 REG_OPTION_NON_VOLATILE,
  275.                                 KEY_ALL_ACCESS,NULL,
  276.                                 &chiave,&KeyExsist);
  277.                 if(KeyExsist==REG_CREATED_NEW_KEY){
  278.                         system("cls");
  279.                         Title();
  280.                         printf("\n*** Prima Configurazione del Programma ***\n\n");
  281.                         printf("\nInserisci L'indirizzo del server: ");
  282.                         GetText(SERVER_ADDR,50);
  283.                         SERVER_ADDR[strlen(SERVER_ADDR)-1]=0;
  284.                         RegSetValueEx(chiave, "IP Server", 0, REG_SZ, SERVER_ADDR, strlen(SERVER_ADDR));
  285.                         printf("\nVuoi abilitare il logging della chat?(S/N): ");
  286.                         int ci=0;
  287.                         while(ci==0){
  288.                                 char sc;
  289.                                 sc=getch();
  290.                                 if(tolower(sc)=='s'){
  291.                                         LoggaConv=0;
  292.                                         RegSetValueEx(chiave, "Logging", 0, REG_SZ, "0",1);
  293.                                         ci=1;
  294.                                         }
  295.                                 else if(tolower(sc)=='n'){
  296.                                         LoggaConv=0;
  297.                                         RegSetValueEx(chiave, "Logging", 0, REG_SZ, "1",1);
  298.                                         ci=1;
  299.                                         }
  300.                                 }
  301.                         }
  302.                 else{
  303.                         RegQueryValueEx(chiave,"IP Server",NULL,NULL,SERVER_ADDR,&ipsize);
  304.                         RegQueryValueEx(chiave,"Logging",NULL,NULL,Logging,&ipsize);
  305.                         LoggaConv=atoi(Logging);
  306.                         }
  307.                 RegCloseKey(chiave);
  308.                 }
  309.         else if(IDconf==1){
  310.                 RegOpenKeyEx(HKEY_LOCAL_MACHINE,path,0,KEY_SET_VALUE,&chiave);
  311.                 RegSetValueEx(chiave, "IP Server", 0, REG_SZ, Param, strlen(Param));
  312.                 RegCloseKey(chiave);
  313.                 }
  314.         else if(IDconf==2){
  315.                 RegOpenKeyEx(HKEY_LOCAL_MACHINE,path,0,KEY_SET_VALUE,&chiave);
  316.                 RegSetValueEx(chiave, "Logging", 0, REG_SZ, Param, strlen(Param));
  317.                 RegCloseKey(chiave);
  318.                 }
  319.         if(LoggaConv==0){
  320.                 ExpandEnvironmentStrings("%USERPROFILE%\\Documenti\\",logfile,sizeof(logfile));
  321.                 strcat(logfile,"Scorpion Messenger");
  322.                 CreateDirectory(logfile,NULL);
  323.                 GetLocalTime(&LocalTime);
  324.                 char temp[500];
  325.                 sprintf(temp,"\\Log_%i_%i_%i.htm",LocalTime.wDay,LocalTime.wMonth,LocalTime.wYear);
  326.                 strcat(logfile,temp);
  327.                 }
  328. return 0;
  329. }
  330.  
  331. int menu(int IDmenu){
  332.         int scelta;
  333.         int CicloMenu;
  334.         int cm;
  335.         while(1){
  336.                 if(IDmenu==0){
  337.                         scelta=0;
  338.                         char ScelteMenu0[3][20];
  339.                         strcpy(ScelteMenu0[0],"Connetti");
  340.                         strcpy(ScelteMenu0[1],"Impostazioni");
  341.                         strcpy(ScelteMenu0[2],"Credits & Info");
  342.                         strcpy(ScelteMenu0[3],"Esci");
  343.                         CicloMenu=0;
  344.                         while(CicloMenu==0){
  345.                                 if (GetAsyncKeyState(38)== -32767){
  346.                                         if(scelta==0){
  347.                                                 scelta=3;
  348.                                                 }
  349.                                         else{
  350.                                                 scelta--;
  351.                                                 }
  352.                                 }
  353.                                 else if (GetAsyncKeyState(40)== -32767){
  354.                                         if(scelta==3){
  355.                                                 scelta=0;
  356.                                                 }
  357.                                         else{
  358.                                                 scelta++;
  359.                                                 }
  360.                                         }
  361.                                 else if (GetAsyncKeyState(13)== -32767){
  362.                                         if(scelta==0){
  363.                                                 system("cls");
  364.                                                 Title();
  365.                                                 return 0;
  366.                                                 }
  367.                                         else if(scelta==1){
  368.                                                 IDmenu=1;
  369.                                                 break;
  370.                                                 }
  371.                                         else if(scelta==2){
  372.                                                 system("cls");
  373.                                                 Title();
  374.                                                 printf("\nScorpion Messenger 1.0");
  375.                                                 printf("\n\t\tBy Scorpion");
  376.                                                 SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),12);
  377.                                                 printf("\n\n-> Indietro <-\n");
  378.                                                 SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),10);
  379.                                                 while(GetAsyncKeyState(13)!= -32767);
  380.                                                 }
  381.                                         else if(scelta==3){
  382.                                                 system("cls");
  383.                                                 Title();
  384.                                                 printf("\nArrivederci!!!");
  385.                                                 return 1;
  386.                                                 }
  387.                                         }
  388.                                 system("cls");
  389.                                 Title();
  390.                                 printf("\t*** Main Men%c ***\n\n",-105);
  391.                                 for(cm=0;cm<=3;cm++){
  392.                                         if(cm==scelta){
  393.                                                 SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),12);
  394.                                                 printf("\t-> %s <-\n",ScelteMenu0[cm]);
  395.                                                 SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),10);
  396.                                                 }
  397.                                         else{
  398.                                                 printf("\t  %s\n",ScelteMenu0[cm]);
  399.                                                 }
  400.                                         }
  401.                                 sleep(5);
  402.                                 getch();
  403.                                 }
  404.                         }
  405.                 if(IDmenu==1){
  406.                         scelta=0;
  407.                         char ScelteMenu1[3][50];
  408.                         strcpy(ScelteMenu1[0],"Cambia Indirizzo Server");
  409.                         if(LoggaConv!=0){
  410.                                 strcpy(ScelteMenu1[1],"Abilita il Logging della Chat");
  411.                                 }
  412.                         else{
  413.                                 strcpy(ScelteMenu1[1],"Disabilita il Logging della Chat");
  414.                                 }
  415.                         strcpy(ScelteMenu1[2],"Indietro");
  416.                         CicloMenu=0;
  417.                         while(CicloMenu==0){
  418.                                 if (GetAsyncKeyState(38)== -32767){
  419.                                         if(scelta==0){
  420.                                                 scelta=2;
  421.                                                 }
  422.                                         else{
  423.                                                 scelta--;
  424.                                                 }
  425.                                         }
  426.                                 else if (GetAsyncKeyState(40)== -32767){
  427.                                         if(scelta==2){
  428.                                                 scelta=0;
  429.                                         }
  430.                                         else{
  431.                                                 scelta++;
  432.                                                 }
  433.                                         }
  434.                                 else if (GetAsyncKeyState(13)== -32767){
  435.                                         if(scelta==0){
  436.                                                 fflush(stdin);
  437.                                                 system("cls");
  438.                                                 Title();
  439.                                                 printf("\nIndirizzo Corrente: \"%s\"",SERVER_ADDR);
  440.                                                 printf("\nVuoi Cambiare l'indirizzo?(S/N): ");
  441.                                                 int ci=0;
  442.                                                 while(ci==0){
  443.                                                         char sc;
  444.                                                         sc=getch();
  445.                                                         if(tolower(sc)=='s'){
  446.                                                                 putch(sc);
  447.                                                                 printf("\n\nInserisci il nuovo indirizzo: ");
  448.                                                                 GetText(SERVER_ADDR,50);
  449.                                                                 SERVER_ADDR[strlen(SERVER_ADDR)-1]=0;
  450.                                                                 Config(1,SERVER_ADDR);
  451.                                                                 ci=1;
  452.                                                                 }
  453.                                                         else if(tolower(sc)=='n'){
  454.                                                                 putch(sc);
  455.                                                                 ci=1;
  456.                                                                 }
  457.                                                         }
  458.                                                 }
  459.                                         else if(scelta==1){
  460.                                                 if(LoggaConv==0){
  461.                                                         LoggaConv=1;
  462.                                                                 Config(2,"1");
  463.                                                                 strcpy(ScelteMenu1[1],"Abilita il Logging della Chat");
  464.                                                                 }
  465.                                                 else{
  466.                                                         LoggaConv=0;
  467.                                                         Config(2,"0");
  468.                                                         strcpy(ScelteMenu1[1],"Disabilita il Logging della Chat");
  469.                                                         }
  470.                                                 }
  471.                                         else if(scelta==2){
  472.                                                 IDmenu=0;
  473.                                                 break;
  474.                                                 }
  475.                                         }
  476.                                 system("cls");
  477.                                 Title();
  478.                                 printf("\t*** Impostazioni ***\n\n");
  479.                                 for(cm=0;cm<=2;cm++){
  480.                                         if(cm==scelta){
  481.                                                 SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),12);
  482.                                                 printf("\t-> %s <-\n",ScelteMenu1[cm]);
  483.                                                 SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),10);
  484.                                                 }
  485.                                         else{
  486.                                                 printf("\t  %s\n",ScelteMenu1[cm]);
  487.                                                 }
  488.                                         }
  489.                                 sleep(5);
  490.                                 getch();
  491.                                 }
  492.                         }
  493.                 }
  494. return 0;
  495. }
  496.  
  497. int Title(){
  498.         SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),12);
  499.         printf(" _____   _____   _____   _____    _____   _   _____   __   _  \n");
  500.         printf("/  ___/ /  ___| /  _  \\ |  _  \\  |  _  \\ | | /  _  \\ |  \\ | |\n");
  501.         printf("| |___  | |     | | | | | |_| |  | |_| | | | | | | | |   \\| |\n");
  502.         printf("\\___  \\ | |     | | | | |  _  /  |  ___/ | | | | | | | |\\   |\n");
  503.         printf(" ___| | | |___  | |_| | | | \\ \\  | |     | | | |_| | | | \\  |\n");
  504.         printf("/_____/ \\_____| \\_____/ |_|  \\_\\ |_|     |_| \\_____/ |_|  \\_|\n");
  505.         printf("     ___  ___   _____   _____   _____   _____   __   _   _____   _____   _____\n");  
  506.         printf("    /   |/   | | ____| /  ___/ /  ___/ | ____| |  \\ | | /  ___| | ____| |  _  \\\n");
  507.         printf("   / /|   /| | | |__   | |___  | |___  | |__   |   \\| | | |     | |__   | |_| |\n");
  508.         printf("  / / |__/ | | |  __|  \\___  \\ \\___  \\ |  __|  | |\\   | | |  _  |  __|  |  _  /\n");  
  509.         printf(" / /       | | | |___   ___| |  ___| | | |___  | | \\  | | |_| | | |___  | | \\ \\\n");
  510.         printf("/_/        |_| |_____| /_____/ /_____/ |_____| |_|  \\_| \\_____/ |_____| |_|  \\_\n\n\n");
  511.         SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),10);
  512. return 0;
  513. }