Guest User

Untitled

a guest
Dec 30th, 2017
34
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.63 KB | None | 0 0
  1. #include <sys/types.h>
  2. #include <sys/socket.h>
  3. #include <netinet/in.h>
  4. #include <errno.h>
  5. #include <unistd.h>
  6. #include <stdio.h>
  7. #include <string.h>
  8. #include <stdlib.h>
  9. #include <sqlite3.h>
  10. /* portul folosit */
  11. #define PORT 2099
  12.  
  13. /* codul de eroare returnat de anumite apeluri */
  14. extern int errno;
  15.  
  16.  
  17. static int call(void *data,int argc, char **argv, char **azColName)
  18. {
  19. if (argv==NULL)
  20. return 0;
  21. else
  22. return 4;
  23. }
  24.  
  25.  
  26. void selectOption(int client,int optiune)
  27. {
  28. if (read (client, &optiune,sizeof(optiune)) <= 0)
  29. {
  30. perror ("[server]Eroare la read() de la client.\n");
  31. //close (client); /* inchidem conexiunea cu clientul */
  32. }
  33.  
  34. // Pregatim structurile si descriptorii pentru a accesa baza de date
  35. sqlite3 *db;
  36. char *zErrMsg = 0;
  37. int rc;
  38. char *sql;
  39. rc = sqlite3_open("data.db", &db);
  40. if( rc )
  41. {
  42. fprintf(stderr, "Can't open database: %s\n", sqlite3_errmsg(db));
  43. exit(-1);
  44. }
  45. else
  46. {
  47. fprintf(stderr, "Opened database successfully\n");
  48. }
  49.  
  50.  
  51. char userName[30];
  52. char password[30];
  53. switch(optiune)
  54. {
  55. case 1: // LOGIN
  56. // read la user si parola verificare baza de date rezolvare
  57. if (read (client, userName, 30) <= 0)
  58. {
  59. perror ("[server]Eroare la read() de la client.\n");
  60. close (client);
  61. }
  62.  
  63. if (read (client, password, 30) <= 0)
  64. {
  65. perror ("[server]Eroare la read() de la client.\n");
  66. close (client);
  67. }
  68.  
  69. /// Verificam daca ii gasim in baza de date
  70. sql=(char*)malloc(100);
  71. strcat(sql,"SELECT * from USERS WHERE userName='");
  72. strcat(sql,userName);
  73. strcat(sql,"' AND password='");
  74. strcat(sql,password);
  75.  
  76. rc = sqlite3_exec(db, sql, call, NULL, &zErrMsg);
  77. if( rc != SQLITE_OK )
  78. {
  79. fprintf(stderr, "SQL error: %s\n", zErrMsg);
  80. sqlite3_free(zErrMsg);
  81. }
  82. else
  83. {
  84. fprintf(stdout, "Operation done successfully\n");
  85. }
  86. /////////////////////////// rc=0 eroare |||||||||||||||||| rc=4 done
  87.  
  88.  
  89.  
  90.  
  91.  
  92. break;
  93. case 2:
  94. printf("Inregistrare");
  95. break;
  96. case 3:
  97. printf("Stergere");
  98. break;
  99. case 4:
  100. printf("Deconectare");
  101. break;
  102. default:
  103. printf("Gresit");
  104. break;
  105.  
  106. }
  107. }
  108.  
  109. int main ()
  110. {
  111. struct sockaddr_in server;
  112. struct sockaddr_in from;
  113. int sd;
  114. if ((sd = socket (AF_INET, SOCK_STREAM, 0)) == -1)
  115. {
  116. perror ("[server]Eroare la socket().\n");
  117. return errno;
  118. }
  119. bzero (&server, sizeof (server));
  120. bzero (&from, sizeof (from));
  121. server.sin_family = AF_INET;
  122. server.sin_addr.s_addr = htonl (INADDR_ANY);
  123. server.sin_port = htons (PORT);
  124. if (bind (sd, (struct sockaddr *) &server, sizeof (struct sockaddr)) == -1)
  125. {
  126. perror ("[server]Eroare la bind().\n");
  127. return errno;
  128. }
  129. if (listen (sd, 5) == -1)
  130. {
  131. perror ("[server]Eroare la listen().\n");
  132. return errno;
  133. }
  134.  
  135.  
  136. while (1)
  137. {
  138. int client;
  139. int length = sizeof (from);
  140. printf ("[server]Asteptam la portul %d...\n",PORT);
  141. fflush (stdout);
  142. client = accept (sd, (struct sockaddr *) &from, &length);
  143. if (client < 0)
  144. {
  145. perror ("[server]Eroare la accept().\n");
  146. continue;
  147. }
  148.  
  149. pid_t pd;
  150. pd = fork();
  151.  
  152. if(pd == 0)
  153. {
  154. fflush (stdout);
  155. int optiune;
  156. selectOption(client,optiune);
  157. }
  158. else
  159. {
  160.  
  161. continue;
  162. } //fork
  163.  
  164. } /* while */
  165. } /* main */
Add Comment
Please, Sign In to add comment