Package org.parosproxy.paros.extension.patternsearch

Source Code of org.parosproxy.paros.extension.patternsearch.ExtensionPatternSearch

/*
*
* Paros and its related class files.
*
* Paros is an HTTP/HTTPS proxy for assessing web application security.
* Copyright (C) 2003-2005 Chinotec Technologies Company
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the Clarified Artistic License
* as published by the Free Software Foundation.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
* Clarified Artistic License for more details.
*
* You should have received a copy of the Clarified Artistic License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
*/
package org.parosproxy.paros.extension.patternsearch;

import java.sql.SQLException;
import java.util.List;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

import javax.swing.JMenuItem;

import org.parosproxy.paros.extension.ExtensionAdaptor;
import org.parosproxy.paros.extension.ExtensionHook;
import org.parosproxy.paros.model.HistoryList;
import org.parosproxy.paros.model.HistoryReference;
import org.parosproxy.paros.model.Session;
import org.parosproxy.paros.network.HttpMalformedHeaderException;
import org.parosproxy.paros.network.HttpMessage;

/**
*
* To change the template for this generated type comment go to Window -
* Preferences - Java - Code Generation - Code and Comments
*/
public class ExtensionPatternSearch extends ExtensionAdaptor {

  private JMenuItem menuItemPatternSearch = null;
  private HistoryList historyList = null;

  private SearchDialog searchDialog = null;

  /**
     *
     */
  public ExtensionPatternSearch() {
    super();
    initialize();
  }

  /**
   * This method initializes this
   *
   * @return void
   */
  private void initialize() {
    this.setName("ExtensionSearch");

  }

  /**
   * This method initializes menuItemEncoder
   *
   * @return javax.swing.JMenuItem
   */
  private JMenuItem getMenuItemPatternSearch() {
    if (menuItemPatternSearch == null) {
      menuItemPatternSearch = new JMenuItem();
      menuItemPatternSearch.setText("Extract Pattern in Session...");
      menuItemPatternSearch
        .addActionListener(new java.awt.event.ActionListener() {
          public void actionPerformed(java.awt.event.ActionEvent e) {
            getSearchDialog().setVisible(true);
          }
      });
    }
    return menuItemPatternSearch;
  }

  public void hook(ExtensionHook extensionHook) {
    super.hook(extensionHook);
    if (getView() != null) {
      extensionHook.getHookMenu().addEditMenuItem(
          getMenuItemPatternSearch());
    }
  }

  /**
   * This method initializes searchDialog1
   *
   * @return org.parosproxy.paros.extension.patternsearch.SearchDialog
   */
  private SearchDialog getSearchDialog() {
    if (searchDialog == null) {
      searchDialog = new SearchDialog(getView().getMainFrame(), false);
      searchDialog.setExt(this);
      searchDialog.setView(getView());
      searchDialog.setSize(640, 480);
    }
    return searchDialog;
  }

  public HistoryList getHistoryList() {
    if (historyList == null) {
      historyList = new HistoryList();
    }
    return historyList;
  }

  public String search(String filter, boolean isRequest) {
    String result = "";
    Session session = getModel().getSession();
    Pattern pattern = Pattern.compile(filter, Pattern.MULTILINE
        | Pattern.CASE_INSENSITIVE);
    Matcher matcher = null;

    getHistoryList();
    synchronized (historyList) {
      try {
        List<Integer> list = getModel().getDb().getTableHistory().getHistoryList(session.getSessionId(),HistoryReference.TYPE_MANUAL, filter, isRequest);
        int last = list.size();
        for (int index = 0; index < last; index++) {
          int v = ((Integer) (list.get(index))).intValue();
          try {
            HttpMessage message = getModel().getDb().getTableHistory().read(v).getHttpMessage();

            if (isRequest) {
              matcher = pattern.matcher(message.getRequestHeader().toString()
                  + message.getRequestBody().toString());
            } else {
              matcher = pattern.matcher(message.getResponseHeader().toString()
                  + message.getResponseBody().toString());
            }
            while (matcher.find()) {
              if (result.indexOf(matcher.group(0)) == -1) {
                result += "\r\n" + matcher.group(0);
              }
            }

          } catch (HttpMalformedHeaderException e1) {
            e1.printStackTrace();
          }
        }
      } catch (SQLException e) {
      }

      getView().getOutputPanel().append(result);
    }
    return result;
  }
}
TOP

Related Classes of org.parosproxy.paros.extension.patternsearch.ExtensionPatternSearch

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.