Esempio n. 1
0
void MainWindow::importSessions(){
    QFileDialog dialog;
    QString fileName = dialog.getOpenFileName(this,tr("select file to open"),"","Archiev Files(*.saz *.zip)");
    QuaZip zip(fileName);
    if(!zip.open(QuaZip::mdUnzip)){
        qDebug()<<"cannot open "<<fileName;
        return;
    }
    QuaZipFileInfo info;
    QuaZipFile file(&zip);

    RyPipeData_ptr pipeData;

    QString name;
    for (bool more = zip.goToFirstFile(); more; more = zip.goToNextFile()) {

        if (!zip.getCurrentFileInfo(&info)) {
            qWarning("testRead(): getCurrentFileInfo(): %d\n", zip.getZipError());
            return;
        }

        if (!file.open(QIODevice::ReadOnly)) {
            qWarning("testRead(): file.open(): %d", file.getZipError());
            return;
        }

        name = file.getActualFileName();
        QByteArray ba = file.readAll();
        if(name.endsWith("_c.txt")){
            //pipeData.clear();
            pipeData = RyPipeData_ptr(new RyPipeData(0,0));
            pipeData->isImported = true;
            pipeData->parseRequest(&ba);
            onNewPipe(pipeData);
        }else if(name.endsWith("_s.txt")){
            pipeData->parseResponse(&ba);
            onPipeUpdate(pipeData);
            pipeData.clear();
        }

        if (file.getZipError() != UNZ_OK) {
            qWarning("testRead(): file.getFileName(): %d", file.getZipError());
            return ;
        }

        file.close();

        if (file.getZipError() != UNZ_OK) {
            qWarning("testRead(): file.close(): %d", file.getZipError());
            return ;
        }

    }

    zip.close();

}
Esempio n. 2
0
QString rypipeDataGetDataByColumn(RyPipeData_ptr p, int column){
    switch(column){
        case 0:
            return QString::number(p->number);
        case 1:
            return QString::number(p->socketConnectionId);
        case 2:
            return ((p->responseStatus.isEmpty())?QString("-"):p->responseStatus);
        case 3:
            return p->httpVersion;
        case 4:
            return p->host;
        case 5:
            return p->serverIp;
        case 6:
            return p->path;
        case 7:
            return QString::number(p->responseBodyRawData().size());
        case 8:
            return p->getResponseHeader("Cache-Control");
        case 9:
            //qDebug()<<QString::number(p->performances.responseDone)<<QString::number(p->performances.requestBegin);
            return QString::number(p->performances.responseDone - p->performances.requestBegin);
        /*
            return QString::number(p->socketHandle);
        case 3:
            return ((p->responseStatus.isEmpty())?QString("-"):p->responseStatus);
        case 4:
            return p->httpVersion;
        case 5:
            return p->host;
        case 6:
            return p->serverIp;
        case 7:
            return p->path;
        case 8:
            return QString::number(p->responseBodyRawData().size());
        case 9:
            return p->getResponseHeader("Cache-Control");
        case 10:
            qDebug()<<QString::number(p->performances.responseDone)<<QString::number(p->performances.requestBegin);
            return QString::number(p->performances.responseDone - p->performances.requestBegin);
        */
        case 10:
            return QString::number(p->performances.requestBegin);
        default:
            return QString("-");
    }
}
Esempio n. 3
0
void Composer::dropEvent(QDropEvent *event){
    //qDebug()<<"drop";
    const RyMimeData* mime = dynamic_cast<const RyMimeData*>(event->mimeData());

    if (mime) {
        RyPipeData_ptr d = mime->pipeData();
        this->ui->server->setText(d->host);
        this->ui->port->setText(QString::number(d->port));
        this->ui->request->setPlainText(QString(d->requestHeaderRawData()).append("\r\n\r\n").append(d->requestBodyRawData()));
        //qDebug()<<"drop text="<<mime->text();
        event->acceptProposedAction();
    } else {
        event->ignore();
    }
}
Esempio n. 4
0
bool RyTableModel::itemLessThan(RyPipeData_ptr left,int leftColumn,RyPipeData_ptr right,int rightColumn){
    if(left.isNull() || right.isNull()){
        return false;
    }
    QString leftData = rypipeDataGetDataByColumn(left,leftColumn) ;
    QString rightData = rypipeDataGetDataByColumn(right,rightColumn);
    bool isNumber=false;
    long long leftNumber = leftData.toLongLong(&isNumber);
    long long rightNumber;
    if(isNumber){
        rightNumber = rightData.toLongLong(&isNumber);
        if(isNumber){
            return leftNumber<rightNumber;
        }
    }
    return leftData < rightData;
}
bool RyTableSortFilterProxyModel::filterAcceptsRow(int sourceRow, const QModelIndex &) const{
    //qDebug()<<"filterAcceptsRow comparing";
    RyPipeData_ptr p = _sourceModel->getItem(sourceRow);
    if(p.isNull()){
        qDebug()<<"filterAcceptsRow got null";
        return true;
    }

    //先处理文本过滤
    if(!_filterText.isEmpty()){
        QStringList hostFilterList = _filterText.split("|");
        bool matchHost = false;
        foreach(QString hostFilter,hostFilterList){
            if(p->fullUrl.indexOf(hostFilter) != -1){
                matchHost = true;
            }
        }
        if(!matchHost){
            return matchHost;
        }
    }
Esempio n. 6
0
void MainWindow::onItemDoubleClicked(QModelIndex topLeft){
    RyPipeData_ptr data = sortFilterProxyModel->getItem(topLeft);
    if(data.isNull()){
        qDebug()<<QString("isNull %1").arg(topLeft.row());
        return;
    }

    ui->toolTabs->setCurrentWidget(ui->inspectorTab);
    ui->requestInspectorTabs->setCurrentWidget(ui->requestInspectorTextview);

    // TODO: test
    ui->requestTextEdit->setPlainText(data->requestHeaderRawData() +"\r\n\r\n"+data->requestBodyRawData() );



    QByteArray encoding("UTF-8");
    QString contentType = data->getResponseHeader("Content-Type");
    int encodingIndex = contentType.indexOf("charset=");
    if(encodingIndex!=-1){
        encoding.clear();
        encoding.append(contentType.mid(encodingIndex + 8));
    }
    bool isEncrypted = !data->getResponseHeader("Content-Encoding").isEmpty();




    QByteArray decrypedData =
            (data->isResponseChunked()?
              data->responseBodyRawDataUnChunked()
              :data->responseBodyRawData());
    if(isEncrypted){
        decrypedData = gzipDecompress(decrypedData);
    }

    //TODO: gif
    //QMovie *movie = ui->label->movie();
    //if(movie){
    //    delete movie;
    //}
    if(data->getResponseHeader("Content-Type").toLower().indexOf("image")!=-1){
        if(!decrypedData.isEmpty()){
            if(data->getResponseHeader("Content-Type").toLower().indexOf("gif")!=-1){
                //QBuffer *data = new QBuffer(&decrypedData);
                //QMovie *movie = new QMovie(data);
                //ui->label->setMovie(movie);
                //TODO: start and delete movie..
            }else{
                QPixmap pixmap;
                pixmap.loadFromData(decrypedData);
                ui->label->setPixmap(pixmap);
            }
            ui->responseInspectorTabs->setCurrentWidget(ui->responseInspectorImageView);
        }else{
            ui->responseInspectorTabs->setCurrentWidget(ui->responseInspectorTextView);
            ui->label->clear();
        }
    }else{
        ui->label->clear();
        ui->responseInspectorTabs->setCurrentWidget(ui->responseInspectorTextView);
    }


    // show in textview
    QTextCodec* oldCodec = QTextCodec::codecForCStrings();
    QTextCodec::setCodecForCStrings(QTextCodec::codecForName(encoding));
    ui->responseTextEdit->setPlainText(QString((
                                              data->responseHeaderRawData()
                                            +"\r\n\r\n"
                                            + decrypedData
                                           ).data())
                                       );
    QTextCodec::setCodecForCStrings(oldCodec);



    data.clear();
}