void FileHash_handler(char *request) { memset(response, 0, sizeof(response)); char *request_data = NULL; char delim[] = " \n"; request_data = strtok(request,delim); request_data = strtok(NULL,delim); if(request_data == NULL) { error = 1; sprintf(response,"ERROR: Wrong Format"); } while(request_data != NULL) { if(strcmp(request_data,"CheckAll") == 0) { request_data = strtok(NULL,delim); if(request_data != NULL) { error = 1; sprintf(response,"ERROR: Wrong Format. The correct format is:\nFileHash CheckAll"); return; } else { handleCheckAll(); } } else if(strcmp(request_data,"Verify") == 0) { request_data = strtok(NULL,delim); if(request_data == NULL) { error = 1; sprintf(response,"ERROR: Wrong Format. The correct format is:\nFileHash Verify <filename>"); return; } char *filename = request_data; request_data = strtok(NULL,delim); if(request_data != NULL) { error = 1; sprintf(response,"ERROR: Wrong Format. The correct format is:\nFileHash Verify <filename>"); return; } else handleVerify(filename); } } }
void FileHash_handler(char *request) { char *request_data = NULL; request_data = strtok(request,delim); request_data = strtok(NULL,delim); if(request_data == NULL) { error = 1; sprintf(response,"ERROR: Wrong Format\n"); } while(request_data != NULL) { if(strcmp(request_data,"--checkall") == 0) { request_data = strtok(NULL,delim); if(request_data != NULL) { error = 1; sprintf(response,"ERROR: Wrong Format. The correct format is:\nFileHash --checkall\n"); return; } else { handleCheckAll(); } } else if(strcmp(request_data,"--verify") == 0) { request_data = strtok(NULL,delim); if(request_data == NULL) { error = 1; sprintf(response,"ERROR: Wrong Format. The correct format is:\nFileHash --verify <filename>\n"); return; } char *filename = request_data; request_data = strtok(NULL,delim); if(request_data != NULL) { error = 1; sprintf(response,"ERROR: Wrong Format. The correct format is:\nFileHash --verify <filename>\n"); return; } else handleVerify(filename); } } }
int tcp_client(char *ip,int conn_port) { int sockfd = 0; sockfd = socket(AF_INET, SOCK_STREAM, 0); struct sockaddr_in serv_addr; int data = 0; if(sockfd < 0) { printf("\n Error : Could not create socket \n"); return 0; } memset(&serv_addr, 0, sizeof(serv_addr)); serv_addr.sin_family = AF_INET; serv_addr.sin_port = htons(conn_port); char read_buffer[1024],write_buffer[1024]; memset(read_buffer, 0,sizeof(read_buffer)); memset(write_buffer, 0,sizeof(write_buffer)); char FILE_NAME[1024]; if(inet_pton(AF_INET, ip, &serv_addr.sin_addr)<=0) { printf("\n inet_pton error occured\n"); return 0; } while(1) { if( connect(sockfd, (struct sockaddr *)&serv_addr, sizeof(serv_addr)) < 0) { continue; } else { printf("Client is Connected now : \n"); break; } } int flag_download = 0 , flag_upload = 0; while(1) { printf("Your request here : "); flag_download = 0, flag_upload = 0; FILE *fp = NULL; int i = 0; fgets(write_buffer,sizeof(write_buffer),stdin); char *filename; char copy[1024]; strcpy(copy,write_buffer); filename = strtok(copy," \n"); if(strcmp(filename,"quit") == 0) _exit(1); if(strcmp(filename,"FileDownload") == 0) { flag_download = 1; filename = strtok(NULL," \n"); strcpy(FILE_NAME,filename); fp = fopen(FILE_NAME,"wb"); } if(strcmp(filename,"FileUpload") == 0) { flag_upload = 1; filename = strtok(NULL," \n"); strcpy(FILE_NAME,filename); FILE *f = fopen(FILE_NAME, "r"); fseek(f, 0, SEEK_END); unsigned long len = (unsigned long)ftell(f); char size[1024]; memset(size, 0, sizeof(size)); sprintf(size,"%ld\n",len); strcat(write_buffer,size); fclose(f); } write(sockfd, write_buffer , strlen(write_buffer)); data = read(sockfd, read_buffer, sizeof(read_buffer)-1); if(strcmp(read_buffer,"1") == 0) { size_t bytes_read; int b,c; printf("Upload Accepted\n"); handleVerify(FILE_NAME); sprintf(cresponse, "%s, ",hdata[0].filename); strcat(write_buffer,cresponse); for (c = 0 ; c < MD5_DIGEST_LENGTH ; c++) { sprintf(cresponse, "%02x",hdata[b].hash[c]); strcat(write_buffer,cresponse); } sprintf(cresponse, ", %s",ctime(&hdata[0].mtime)); strcat(write_buffer,cresponse); write(sockfd , write_buffer , bytes_read); printf("%s\n",write_buffer); memset(write_buffer, 0, sizeof(write_buffer)); fp = fopen(FILE_NAME,"rb"); while(!feof(fp)) { size_t bytes_read = fread(cresponse, 1, 1024, fp); cresponse[1024] = 0; memcpy(write_buffer,cresponse,bytes_read); write(sockfd , write_buffer , bytes_read); memset(write_buffer, 0, sizeof(write_buffer)); memset(cresponse, 0, sizeof(cresponse)); } memcpy(write_buffer,"~^~",3); write(sockfd , write_buffer , 3); memset(write_buffer, 0, sizeof(write_buffer)); memset(read_buffer, 0, strlen(read_buffer)); fclose(fp); } else if(strcmp(read_buffer,"0\n") == 0) { printf("Upload Denied\n"); memset(read_buffer, 0,sizeof(read_buffer)); continue; } else { while(1) { read_buffer[data] = 0; if(read_buffer[data-1] == '~' && read_buffer[data-3] == '~' && read_buffer[data-2] == '^') { read_buffer[data-3] = 0; if(flag_download == 1) { fwrite(read_buffer,1,data-3,fp); fclose(fp); } else strcat(cresponse,read_buffer); memset(read_buffer, 0,strlen(read_buffer)); break; } else { if(flag_download == 1) fwrite(read_buffer,1,data,fp); else strcat(cresponse,read_buffer); memset(read_buffer, 0,strlen(read_buffer)); } data = read(sockfd, read_buffer, sizeof(read_buffer)-1); if(data < 0) break; } } if(flag_download == 0) printf("%s\n",cresponse); else printf("File Downloaded\n"); if(data < 0) printf("\n Read error \n"); memset(read_buffer, 0,sizeof(read_buffer)); memset(write_buffer, 0,sizeof(write_buffer)); } return 0; }