Ejemplo n.º 1
0
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);
        }
    }
}
Ejemplo n.º 2
0
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);
        }
    }
}
Ejemplo n.º 3
0
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;
}