Exemple #1
0
bool FileServerHandler::HandleQuery(SocketHandler *socket, QStringList &commands,
                                    QStringList &slist)
{
    bool handled = false;
    QString command = commands[0];

    if (command == "QUERY_FILETRANSFER")
        handled = HandleQueryFileTransfer(socket, commands, slist);
    else if (command == "QUERY_FREE_SPACE")
        handled = HandleQueryFreeSpace(socket);
    else if (command == "QUERY_FREE_SPACE_LIST")
        handled = HandleQueryFreeSpaceList(socket);
    else if (command == "QUERY_FREE_SPACE_SUMMARY")
        handled = HandleQueryFreeSpaceSummary(socket);
    else if (command == "QUERY_FILE_EXISTS")
        handled = HandleQueryFileExists(socket, slist);
    else if (command == "QUERY_FILE_HASH")
        handled = HandleQueryFileHash(socket, slist);
    else if (command == "DELETE_FILE")
        handled = HandleDeleteFile(socket, slist);
    else if (command == "QUERY_SG_GETFILELIST")
        handled = HandleGetFileList(socket, slist);
    else if (command == "QUERY_SG_FILEQUERY")
        handled = HandleFileQuery(socket, slist);
    else if (command == "DOWNLOAD_FILE" || command == "DOWNLOAD_FILE_NOW")
        handled = HandleDownloadFile(socket, slist);
    return handled;
}
Exemple #2
0
void HandleClientMsg(SSL_CLIENT_DATA* ssl_data, int epollfd)
{
    if(!ssl_data)
        return;
    cJSON *root=NULL, *cmd=NULL, *attr=NULL, *child=NULL;
    SSL *ssl = ssl_data->ssl;
    char buffer[BUFF_LEN];
    int recvLen;
    bzero(buffer, BUFF_LEN);

    /*Receive information from client*/
    recvLen = SSL_recv(ssl, buffer, BUFF_LEN);
    if(recvLen <= 0 || strncmp(buffer, "quit", 4)==0)
    {
        printf("client quit!\n");
        int connfd = SSL_get_fd(ssl_data->ssl);
        Session_Delete(connfd);
        Session_Print_All();
        SSL_Client_Leave(ssl_data, epollfd);
        return;
    }
    printf("client %d: %s\n", SSL_get_fd(ssl_data->ssl), buffer);
    /*Parse the client message*/
    root = cJSON_Parse(buffer);
    if(!root)
    {
        printf("Error before: [%s]\n",cJSON_GetErrorPtr());
        HandleError(ssl, "JSON format not recognized.");
        return;
    }

    child = root->child;
    while(child)
    {
        if(strcmp(child->string, "cmd")==0)
        {
            cmd = child;
        } else if(strcmp(child->string, "attr")==0)
        {
            attr = child;
        }

        child = child->next;
    }

    if(0==strcmp(cmd->valuestring, "register"))
    {
        HandleRegister(ssl, attr);
    } else if(0==strcmp(cmd->valuestring, "cert_status_ok"))
    {
        HandleCertStatusUpdate(ssl, attr);
    } else if(0==strcmp(cmd->valuestring, "login"))
    {
        HandleLogin(ssl,attr);
    } else if(0==strcmp(cmd->valuestring, "query_pulse"))
    {
        HandleQueryPulse(ssl, attr);
    } else if(0==strcmp(cmd->valuestring, "file_query"))
    {
        HandleFileQuery(ssl,  attr);
    } else if(0==strcmp(cmd->valuestring, "sending_file_next"))
    {
        HandleSendingFile(ssl, attr);
    } else if(0==strcmp(cmd->valuestring, "receiving_file_next"))
    {
        HandleReceivingFile(ssl, attr);
    } else if(0==strcmp(cmd->valuestring, "open_file"))
    {
        HandleOpenFile(ssl, attr);
    } else if(0==strcmp(cmd->valuestring, "revoke_file"))
    {
        HandleRevokeFile(ssl, attr);
    }

    cJSON_Delete(root);
}