AuthResponse AuthenticateClient(char *buffer, std::string &clientName) { //authenticate user and send response std::map<std::string, std::string> userMap; if(!GetUsersFromFile(userMap)) { return ERROR; } char *user = strtok(buffer, "\t"); clientName = user; char *passwd = strtok(NULL, "\t"); std::string Passwd(passwd); std::map<std::string, std::string>::iterator it = userMap.find(clientName); //check if username exists if(it == userMap.end()) { return UNKNOWN_USER; } //if passwords dont match, wrong password if(it->second != Passwd) { return WRONG_PASSWORD; } return SUCCESS; }
int cgiMain() { int ret; Name(user); Passwd(passwd); /* Send the content type, letting the browser know this is HTML */ cgiHeaderContentType("text/html;charset=gb2312"); /* Top of the page */ fprintf(cgiOut, "<HTML><HEAD>\n"); fprintf(cgiOut, "<LINK rel=\"SHORTCUT ICON\" href=\"../images/favicon.ico\">\n"); fprintf(cgiOut, "<TITLE>NC600 Web Server</TITLE></HEAD>\n"); ret = usr_check(user, passwd); if(ret == 0) { fprintf(cgiOut, "<BODY>\n"); fprintf(cgiOut, "<script type=\"text/javascript\">\n"); fprintf(cgiOut, "window.alert(\"Óû§Ãû»òÃÜÂë´íÎó£¬ÇëÖØеǼ£¡\");\n"); fprintf(cgiOut, "window.location.href=\"../login.html\";\n"); fprintf(cgiOut, "</script>\n"); fprintf(cgiOut, "</BODY>\n"); fprintf(cgiOut, "</HTML>\n"); return 0; } fprintf(cgiOut, "<frameset rows=\"80,*\" cols=\"*\" frameborder=\"no\" border=\"0\" framespacing=\"0\">\"\n"); fprintf(cgiOut, "<frame src=\"../top.html\" name=\"topFrame\" scrolling=\"No\" noresize=\"noresize\" id=\"topFrame\" title=\"topFrame\" />\n"); fprintf(cgiOut, "<frameset cols=\"150,*\" frameborder=\"no\" border=\"0\" framespacing=\"0\">\n"); fprintf(cgiOut, "<frame src=\"../left.html\" name=\"leftFrame\" scrolling=\"auto\" noresize=\"noresize\" id=\"leftFrame\" title=\"leftFrame\" />\n"); fprintf(cgiOut, "<frame src=\"../welcome.html\" name=\"mainFrame\" id=\"mainFrame\" title=\"mainFrame\" />\n"); fprintf(cgiOut, "</frameset>\n"); fprintf(cgiOut, "</frameset>\n"); fprintf(cgiOut, "<noframes>\n"); fprintf(cgiOut, "<BODY>\n"); fprintf(cgiOut, "</BODY></noframes></HTML>\n"); return 0; }
//根据用户账号名修改用户账号密码,不存在这个用户账号名,提示出错信息 int Account_UI_Modify(account_list_t head,char usrName[]) { int er=0,ret=0,q=0; char choice; void Passwd(); Pagination_t paging; paging.totalRecords = Account_Srv_FetchAll(head); account_t data; if( Account_Srv_FetchByUsrName(usrName,&data) ){ if(gl_CurUser.id==data.id){ printf("\n ----------------------------没有权限!------------------------------"); cl_stdin(); getchar(); return 0; } while(1) { system("clear"); printf("\n\t\t=================================================================="); printf("\n\t\t***************************修改用户********************************"); printf("\n\t\t=================================================================="); printf("\n\t\t\t%s\t\t%s\t\t%s", "ID", "用户类型", "用户名"); printf("\n\t\t------------------------------------------------------------------"); printf("\n \033[31m**该功能涉及系统安全,请谨慎操作!**\033[0m\n"); printf("\n\t\t------------------------------------------------------------------"); printf("\n\t\t\t%d\t\t ", data.id); switch(data.type){ case USR_CLERK: printf("%s\t\t\t","CLERK"); break; case USR_MANG: printf("%s\t\t\t","MANG"); break; case USR_ADMIN: printf("%s\t\t\t","ADMIN"); break; } printf("%-20s", data.username); printf("\n =================================================================="); printf("\n |---------总数%2d------------------------------%2d/%2d页----------|",paging.totalRecords ,Pageing_CurPage(paging),Pageing_TotalPages(paging)); printf("\n ==================================================================");; printf("\n ******************************************************************"); printf("\n\t\t| [T]ype | [P]asswd | [R]eturn |"); printf("\n ******************************************************************"); printf("\n\t\tYour choice:"); choice=l_getc(); if('r'==choice || 'R'==choice) break; switch(choice){ case 'p': case 'P': Passwd(); /*{ char fpwd[30]spwd[30]; while(1){ printf("\n\t\t| 新密码:"); cl_stdin(); getpwd(30,fpwd); printf("\n\t\t|请再次输入新密码:"); getpwd(30spwd); if( strcmp(fpwdspwd)==0 ){ strcpy(data.password,fpwd); q=1; break; }else{ printf("\n\n -----------------两次新密码输入不一致!-------------------------"); } } }*/ break; case 't': case 'T': printf("\n -------[1].CLERK------------[2].MANG-------------[3].ADMAIN--------"); printf("\n | 请选择用户类型:"); while(1){ er=0; choice=l_getc(); switch(choice){ case '1': if(data.type!= USR_CLERK){ data.type= USR_CLERK; }else{ printf("\n ----------------------------类型相同!------------------------------"); } break; case '2': if(data.type!= USR_MANG){ data.type= USR_MANG; q=1; }else{ printf("\n ----------------------------类型相同!------------------------------"); q=0; } break; case '3': if(data.type!= USR_ADMIN){ data.type= USR_ADMIN; q=1; }else{ printf("\n ----------------------------类型相同!------------------------------"); q=0; } break; default : er=1; printf("\n\t\t **输入有误!** "); } if(er!=1) break; } break; } if(q && Account_Srv_Modify(&data)){ printf("\n ----------------------------修改成功!------------------------------"); ret=1; }else{ if(q!=0) printf("\n ----------------------------修改成功!------------------------------");; } cl_stdin(); sleep(1); } }else{ printf("\n ----------------------------未找到信息!------------------------------"); cl_stdin(); sleep(1); } return ret; }