Projects STRLCPY LoggerPlusPlus Commits 48667ced
🤬
  • ■ ■ ■ ■
    build.gradle
    skipped 15 lines
    16 16  dependencies {
    17 17   implementation 'net.portswigger.burp.extensions:montoya-api:1.0.0'
    18 18   implementation 'org.swinglabs:swingx:1.6.1'
    19  - implementation 'com.github.CoreyD97:Burp-Montoya-Utilities:8501f80f05'
     19 + implementation 'com.github.CoreyD97:Burp-Montoya-Utilities:07e3e02b'
    20 20   implementation 'org.elasticsearch.client:elasticsearch-rest-high-level-client:7.15.2'
    21 21   implementation 'org.apache.httpcomponents:httpclient:4.5.13'
    22 22   implementation 'org.apache.commons:commons-text:1.10.0'
    skipped 22 lines
  • ■ ■ ■ ■
    src/main/java/com/nccgroup/loggerplusplus/filter/tag/Tag.java
    skipped 139 lines
    140 140   
    141 141   @Override
    142 142   public String toString() {
    143  - return "ColorFilter[" + (this.filter != null ? this.filter.toString() : "") + "]";
     143 + return this.getName();
    144 144   }
    145 145  }
    146 146   
  • ■ ■ ■ ■
    src/main/java/com/nccgroup/loggerplusplus/logentry/LogEntry.java
    skipped 532 lines
    533 533   case REQUEST_TOOL:
    534 534   return tool.toolName();
    535 535   case TAGS:
    536  - return this.matchingTags.stream().map(Tag::getName).collect(Collectors.toList());
     536 + return this.matchingTags.stream().collect(Collectors.toList());
    537 537   case URL:
    538 538   return this.urlString;
    539 539   case PATH:
    skipped 234 lines
  • ■ ■ ■ ■ ■
    src/main/java/com/nccgroup/loggerplusplus/logview/logtable/LogTableColumnModel.java
    skipped 12 lines
    13 13  package com.nccgroup.loggerplusplus.logview.logtable;
    14 14   
    15 15  import com.coreyd97.BurpExtenderUtilities.Preferences;
     16 +import com.nccgroup.loggerplusplus.logentry.LogEntryField;
    16 17  import com.nccgroup.loggerplusplus.util.Globals;
    17 18  import com.nccgroup.loggerplusplus.LoggerPlusPlus;
     19 +import com.nccgroup.loggerplusplus.util.userinterface.renderer.TagRenderer;
    18 20   
    19 21  import javax.swing.event.TableColumnModelEvent;
     22 +import javax.swing.table.DefaultTableCellRenderer;
    20 23  import javax.swing.table.DefaultTableColumnModel;
    21 24  import javax.swing.table.TableColumn;
    22 25  import java.util.*;
    skipped 22 lines
    45 48   if (column.isVisible()) {
    46 49   addColumn(column);
    47 50   }
     51 + }
     52 + 
     53 + Optional<LogTableColumn> tagColumn = this.allColumns.stream().filter(logTableColumn -> logTableColumn.getName().equals("Tags")).findFirst();
     54 + if((boolean) preferences.getSetting(Globals.PREF_TABLE_PILL_STYLE) && tagColumn.isPresent()){
     55 + tagColumn.get().setCellRenderer(new TagRenderer());
    48 56   }
    49 57   
    50 58   initialize();
    skipped 116 lines
    167 175   }
    168 176   }
    169 177   
    170  - public Enumeration<LogTableColumn> getAllColumns() {
    171  - return Collections.enumeration(this.allColumns);
     178 + public List<LogTableColumn> getAllColumns() {
     179 + return this.allColumns;
    172 180   }
    173 181  }
    174 182   
  • ■ ■ ■ ■ ■ ■
    src/main/java/com/nccgroup/loggerplusplus/logview/logtable/TableHeaderMenu.java
    skipped 61 lines
    62 62   item = new JMenuItem("Make all visible");
    63 63   item.addActionListener(new ActionListener() {
    64 64   public void actionPerformed(ActionEvent e) {
    65  - Enumeration<LogTableColumn> columnEnumeration = logTable.getColumnModel().getAllColumns();
    66  - while (columnEnumeration.hasMoreElements()) {
    67  - LogTableColumn logTableColumn = columnEnumeration.nextElement();
    68  - logTable.getColumnModel().showColumn(logTableColumn);
     65 + for (LogTableColumn column : logTable.getColumnModel().getAllColumns()) {
     66 + logTable.getColumnModel().showColumn(column);
    69 67   }
    70 68   logTableController.getLogTableColumnModel().saveLayout();
    71 69   }
    skipped 2 lines
    74 72   
    75 73   Map<FieldGroup, JMenu> groupMenus = new HashMap<>();
    76 74   
    77  - Enumeration<LogTableColumn> columnEnumeration = logTable.getColumnModel().getAllColumns();
    78  - while (columnEnumeration.hasMoreElements()) {
    79  - LogTableColumn logTableColumn = columnEnumeration.nextElement();
     75 + for (LogTableColumn logTableColumn : logTable.getColumnModel().getAllColumns()) {
     76 + 
    80 77   FieldGroup group = logTableColumn.getIdentifier().getFieldGroup();
    81 78   if (!groupMenus.containsKey(group)) {
    82 79   groupMenus.put(group, new JMenu(group.getLabel()));
    skipped 27 lines
  • ■ ■ ■ ■
    src/main/java/com/nccgroup/loggerplusplus/preferences/LoggerPreferenceFactory.java
    skipped 15 lines
    16 16  import com.nccgroup.loggerplusplus.logentry.LogEntrySerializer;
    17 17  import com.nccgroup.loggerplusplus.logview.logtable.LogTableColumn;
    18 18  import com.nccgroup.loggerplusplus.util.Globals;
    19  -import lombok.extern.java.Log;
    20 19  import lombok.extern.log4j.Log4j2;
    21 20  import org.apache.logging.log4j.Level;
    22 21   
    skipped 55 lines
    78 77   prefs.registerSetting(PREF_LOG_EXTENSIONS, Boolean.class, true);
    79 78   prefs.registerSetting(PREF_LOG_TARGET_TAB, Boolean.class, true);
    80 79   prefs.registerSetting(PREF_MAX_RESP_SIZE, Integer.class, 10); //Default 10MB
     80 + prefs.registerSetting(PREF_TABLE_PILL_STYLE, Boolean.class, true);
    81 81   prefs.registerSetting(PREF_COLOR_FILTERS, new TypeToken<Map<UUID, ColorFilter>>() {
    82 82   }.getType(), defaultColorFilters);
    83 83   prefs.registerSetting(PREF_TAG_FILTERS, new TypeToken<Map<UUID, Tag>>() {
    skipped 45 lines
  • ■ ■ ■ ■ ■
    src/main/java/com/nccgroup/loggerplusplus/preferences/PreferencesPanel.java
    skipped 23 lines
    24 24  import com.nccgroup.loggerplusplus.filter.colorfilter.ColorFilter;
    25 25  import com.nccgroup.loggerplusplus.filter.savedfilter.SavedFilter;
    26 26  import com.nccgroup.loggerplusplus.imports.LoggerImport;
     27 +import com.nccgroup.loggerplusplus.logentry.LogEntryField;
     28 +import com.nccgroup.loggerplusplus.logview.logtable.LogTableColumn;
     29 +import com.nccgroup.loggerplusplus.logview.logtable.LogTableColumnModel;
    27 30  import com.nccgroup.loggerplusplus.util.MoreHelp;
     31 +import com.nccgroup.loggerplusplus.util.userinterface.renderer.TagRenderer;
    28 32   
    29 33  import javax.swing.*;
     34 +import javax.swing.table.DefaultTableCellRenderer;
    30 35  import java.awt.*;
    31 36  import java.awt.event.ActionEvent;
    32  -import java.util.ArrayList;
    33  -import java.util.HashMap;
    34  -import java.util.Map;
    35  -import java.util.UUID;
     37 +import java.util.*;
    36 38   
    37 39  import static com.nccgroup.loggerplusplus.util.Globals.*;
    38 40   
    skipped 168 lines
    207 209   ((SpinnerNumberModel) maxResponseSize.getModel()).setMinimum(0);
    208 210   ((SpinnerNumberModel) maxResponseSize.getModel()).setMaximum(1000000);
    209 211   ((SpinnerNumberModel) maxResponseSize.getModel()).setStepSize(1);
     212 + 
     213 + JCheckBox tagStyle = otherPanel.addPreferenceComponent(preferences, PREF_TABLE_PILL_STYLE, "Display matching tags as pill components");
     214 + 
     215 + preferences.addSettingListener((source, settingName, newValue) -> {
     216 + if(Objects.equals(settingName, PREF_TABLE_PILL_STYLE)){
     217 + LogTableColumnModel columnModel = LoggerPlusPlus.instance.getLogViewController().getLogViewPanel().getLogTable().getColumnModel();
     218 + Optional<LogTableColumn> column = columnModel.getAllColumns().stream().filter(logTableColumn -> logTableColumn.getIdentifier() == LogEntryField.TAGS).findFirst();
     219 + if(column.isEmpty()) return;
     220 + if((boolean) newValue) {
     221 + column.get().setCellRenderer(new TagRenderer());
     222 + }else{
     223 + column.get().setCellRenderer(new DefaultTableCellRenderer());
     224 + }
     225 + }
     226 + });
    210 227   
    211 228   ComponentGroup savedFilterSharing = new ComponentGroup(Orientation.VERTICAL, "Saved Filter Sharing");
    212 229   savedFilterSharing.add(new JButton(new AbstractAction("Import Saved Filters") {
    skipped 112 lines
  • ■ ■ ■ ■ ■
    src/main/java/com/nccgroup/loggerplusplus/util/Globals.java
    skipped 74 lines
    75 75   public static final String PREF_SAVED_FIELD_SELECTIONS = "savedFieldSelections";
    76 76   public static final String PREF_COLUMNS_VERSION = "columnsVersion";
    77 77   public static final String PREF_MAX_RESP_SIZE = "maxRespBodySize";
     78 + public static final String PREF_TABLE_PILL_STYLE = "tagsStyle";
    78 79   
    79 80   public enum ElasticAuthType {ApiKey, Basic, None}
    80 81   
    skipped 66 lines
  • ■ ■ ■ ■ ■
    src/main/java/com/nccgroup/loggerplusplus/util/userinterface/dialog/TagTable.java
    skipped 1 lines
    2 2   
    3 3  import com.nccgroup.loggerplusplus.filter.tag.Tag;
    4 4  import com.nccgroup.loggerplusplus.filterlibrary.FilterLibraryController;
     5 +import com.nccgroup.loggerplusplus.util.userinterface.ColorEditor;
    5 6  import com.nccgroup.loggerplusplus.util.userinterface.renderer.ButtonRenderer;
     7 +import com.nccgroup.loggerplusplus.util.userinterface.renderer.ColorRenderer;
    6 8  import com.nccgroup.loggerplusplus.util.userinterface.renderer.FilterRenderer;
    7 9   
    8 10  import javax.swing.*;
    skipped 19 lines
    28 30   ((JComponent) this.getDefaultRenderer(JButton.class)).setOpaque(true);
    29 31   
    30 32   this.getColumnModel().getColumn(1).setCellRenderer(new FilterRenderer());
    31  - this.getColumnModel().getColumn(3).setCellRenderer(new ButtonRenderer());
     33 + this.getColumnModel().getColumn(2).setCellRenderer(new ColorRenderer(true));
     34 + this.getColumnModel().getColumn(2).setCellEditor(new ColorEditor());
     35 + this.getColumnModel().getColumn(3).setCellRenderer(new ColorRenderer(true));
     36 + this.getColumnModel().getColumn(3).setCellEditor(new ColorEditor());
     37 + this.getColumnModel().getColumn(5).setCellRenderer(new ButtonRenderer());
    32 38   
    33 39   
    34 40   this.setDragEnabled(true);
    skipped 44 lines
  • ■ ■ ■ ■ ■
    src/main/java/com/nccgroup/loggerplusplus/util/userinterface/dialog/TagTableModel.java
    skipped 6 lines
    7 7   
    8 8  import javax.swing.*;
    9 9  import javax.swing.table.AbstractTableModel;
     10 +import java.awt.*;
    10 11  import java.util.*;
     12 +import java.util.List;
    11 13   
    12 14  /**
    13 15   * Created by corey on 19/07/17.
    skipped 2 lines
    16 18   
    17 19   private final Map<Short, UUID> rowUUIDs = new HashMap<Short, UUID>();
    18 20   private final Map<UUID, Tag> tags;
    19  - private final String[] columnNames = {"Tag", "LogFilter", "Enabled", ""};
     21 + private final String[] columnNames = {"Tag", "LogFilter", "Foreground Color", "Background Color", "Enabled", ""};
    20 22   private final JButton removeButton = new JButton("Remove");
    21 23   private final FilterLibraryController filterLibraryController;
    22 24   
    skipped 32 lines
    55 57   case 1:
    56 58   return (tags.get(rowUid).getFilterString() == null ? "" : tags.get(rowUid).getFilterString());
    57 59   case 2:
     60 + return (tags.get(rowUid).getForegroundColor() == null ? Color.BLACK : tags.get(rowUid).getForegroundColor());
     61 + case 3:
     62 + return (tags.get(rowUid).getBackgroundColor() == null ? Color.WHITE : tags.get(rowUid).getBackgroundColor());
     63 + case 4:
    58 64   return tags.get(rowUid).isEnabled();
    59  - case 3:
     65 + case 5:
    60 66   return removeButton;
    61 67   default:
    62 68   return false;
    skipped 29 lines
    92 98   break;
    93 99   }
    94 100   case 2:
     101 + tag.setForegroundColor((Color) value);
     102 + break;
     103 + case 3:
     104 + tag.setBackgroundColor((Color) value);
     105 + break;
     106 + case 4:
    95 107   tag.setEnabled((Boolean) value);
    96 108   break;
    97 109   default:
    skipped 8 lines
    106 118   public Class<?> getColumnClass(int columnIndex) {
    107 119   switch (columnIndex) {
    108 120   case 2:
    109  - return Boolean.class;
    110 121   case 3:
     122 + return Color.class;
     123 + case 4:
     124 + return Boolean.class;
     125 + case 5:
    111 126   return JButton.class;
    112 127   default:
    113 128   return String.class;
    skipped 2 lines
    116 131   
    117 132   @Override
    118 133   public boolean isCellEditable(int row, int col) {
    119  - return col != 3;
     134 + return col != 5;
    120 135   }
    121 136   
    122 137   public void addTag(Tag tag) {
    skipped 5 lines
    128 143   }
    129 144   
    130 145   public void onClick(int row, int column) {
    131  - if (row != -1 && row < tags.size() && column == 3) {
     146 + if (row != -1 && row < tags.size() && column == 5) {
    132 147   synchronized (rowUUIDs) {
    133 148   Tag removedFilter = tags.get(rowUUIDs.get((short) row));
    134 149   filterLibraryController.removeTag(removedFilter);
    skipped 36 lines
  • ■ ■ ■ ■ ■ ■
    src/main/java/com/nccgroup/loggerplusplus/util/userinterface/renderer/TagRenderer.java
     1 +package com.nccgroup.loggerplusplus.util.userinterface.renderer;
     2 + 
     3 +import com.nccgroup.loggerplusplus.filter.tag.Tag;
     4 +import org.jdesktop.swingx.HorizontalLayout;
     5 + 
     6 +import javax.swing.*;
     7 +import javax.swing.table.TableCellRenderer;
     8 +import java.awt.*;
     9 +import java.util.ArrayList;
     10 +import java.util.Collection;
     11 +import java.util.Collections;
     12 +import java.util.Enumeration;
     13 + 
     14 +/**
     15 + * Created by corey on 22/08/17.
     16 + */
     17 +public class TagRenderer implements TableCellRenderer {
     18 + @Override public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) {
     19 + JPanel tagWrapper = new JPanel();
     20 + tagWrapper.setLayout(new HorizontalLayout(2));
     21 + tagWrapper.setBorder(BorderFactory.createEmptyBorder(2,2,2,2));
     22 + 
     23 + if(value instanceof Collection){
     24 + for (Object o : ((Collection<Tag>) value).toArray()) {
     25 + JButton c = new JButton(((Tag) o).getName());
     26 + c.putClientProperty("JButton.buttonType", "roundRect");
     27 + c.setMargin(new Insets(7,4,7,4));
     28 + c.setBackground(((Tag) o).getBackgroundColor());
     29 + c.setForeground(((Tag) o).getForegroundColor());
     30 + tagWrapper.add(c);
     31 + }
     32 + }
     33 + 
     34 + return tagWrapper;
     35 + }
     36 +}
     37 + 
Please wait...
Page is in error, reload to recover