int login() { int iLoginu1; int iLoginu2; int iAuswahl; char sUsername1[40]; char sUsername2[40]; char sPasswort1[40] = "\0"; char sPasswort2[40] = "\0"; printf("Herzlich Willkommen\n"); do { printf("Bitte wählen Sie aus:\n1. Login (Sie gegen Ki)\n2. Login (Multiplayer)\n3. Registrieren\n4. Beenden\n\nEingabe: "); fflush(stdin); scanf("%i",&iAuswahl); if(iAuswahl<1||iAuswahl>4) { system("cls"); printf("Ihre Eingabe war Falsch bitte wiederholen.\n\n"); } } while(iAuswahl<1||iAuswahl>4); system("cls"); switch(iAuswahl) { case 1: iType=1; do { printf("Zum Abbrechen -1 eingeben.\n\nBitte Username fuer den ersten User eingeben:\n"); fflush(stdin); scanf("%s",sUsername1); if(strcmp(sUsername1,"-1")==0) { system("cls"); return 0; } printf("Bitte Passwort fuer den ersten User eingeben:\n"); enter_pw(sPasswort1); if(strcmp(sPasswort1,"-1")==0) { system("cls"); return 0; } iLoginu1 = sql_login(sUsername1,sPasswort1); if(iLoginu1==0) { system("cls"); printf("Username oder Passwort waren Falsch.\n\n"); } } while(iLoginu1==0); return 1; break; case 2: iType=2; do { printf("Zum Abbrechen -1 eingeben.\n\nBitte Username fuer den ersten User eingeben:\n"); fflush(stdin); scanf("%s",sUsername1); if(strcmp(sUsername1,"-1")==0) { system("cls"); return 0; } printf("Bitte Passwort fuer den ersten User eingeben:\n"); enter_pw(sPasswort1); if(strcmp(sPasswort1,"-1")==0) { system("cls"); return 0; } iLoginu1 = sql_login(sUsername1,sPasswort1); if(iLoginu1==0) { system("cls"); printf("Username oder Passwort für den ersten User waren Falsch.\n\n"); } } while(iLoginu1==0); do { printf("Zum Abbrechen -1 eingeben.\n\nBitte Username fuer den zweiten User eingeben:\n"); fflush(stdin); scanf("%s",sUsername2); if(strcmp(sUsername2,"-1")==0) { system("cls"); return 0; } printf("Bitte Passwort fuer den zweiten User eingeben:\n"); enter_pw(sPasswort2); if(strcmp(sPasswort2,"-1")==0) { system("cls"); return 0; } iLoginu2 = sql_login(sUsername2,sPasswort2); if(iLoginu2==0) { system("cls"); printf("Username oder Passwort für den zweiten User waren Falsch.\n\n"); } if(iLoginu2==-1) { system("cls"); printf("Der gleiche User darf sich nicht 2. mal anmelden.\n\n"); iLoginu2 = 0; } } while(iLoginu2==0); return 1; break; case 3: printf("Zum Abbrechen -1 eingeben.\n\nRegistrierung\n\nBitte Username eingeben:\n"); fflush(stdin); scanf("%s",sUsername1); if(strcmp(sUsername1,"-1")==0) { system("cls"); return 0; } printf("Bitte Passwort eingeben:\n"); fflush(stdin); scanf("%s",sPasswort1); if(strcmp(sPasswort1,"-1")==0) { system("cls"); return 0; } break; case 4: return -1; break; } return -1; }
int sql_routine(int fd, sqlite3 *db, sockfd_buf_t *rwbuf) { if (fd < 0 || db == NULL || rwbuf == NULL || rwbuf->rbuf.data == NULL || rwbuf->rbuf.len == 0 || rwbuf->wbuf.data == NULL) { E("parameter error."); DD(fd); DP(db); DP(rwbuf); DP(rwbuf->rbuf.data); DD(rwbuf->rbuf.len); DP(rwbuf->wbuf.data); DD(rwbuf->wbuf.len); return -1; } char *regex = "^:[0-9]{1,2}:[A-Za-z0-9_]*:[A-Za-z0-9_]*:" "[A-Za-z0-9_]*:.*:[0-9]{0,14}$"; if (cs_regex(rwbuf->rbuf.data, regex) != 0) { E("request type undefined."); strncpy(rwbuf->wbuf.data, "regex_err", 9); rwbuf->wbuf.len = 9; return -1; } cs_request_t req = cs_parse_request(rwbuf->rbuf.data); request_dump(&req); int ret = -1; switch (req.req_type) { case 0: ret = sql_register(&req, db, &rwbuf->wbuf); break; case 1: ret = sql_destroy(&req, db, &rwbuf->wbuf); break; case 2: ret = sql_login(fd, &req, db, &rwbuf->wbuf); break; case 3: ret = sql_logout(&req, db, &rwbuf->wbuf); break; case 4: ret = sql_view_user(&req, db, &rwbuf->wbuf); break; case 5: ret = sql_add_buddy(&req, db, &rwbuf->wbuf); break; case 6: ret = sql_del_buddy(&req, db, &rwbuf->wbuf); break; case 7: ret = sql_sendto(fd, &req, db, &rwbuf->wbuf); break; case 8: ret = sql_view_log(&req, db, &rwbuf->wbuf); break; case 9: ret = sql_del_log(&req, db, &rwbuf->wbuf); break; case 10: ret = sql_change_passwd(&req, db, &rwbuf->wbuf); break; case 11: ret = sql_submit_info(&req, db, &rwbuf->wbuf); break; case 12: ret = sql_view_info(&req, db, &rwbuf->wbuf); break; default: DD(req.req_type); break; } request_free(&req); return ret; }