Projects STRLCPY sub3suite Commits d747b8cd
🤬
  • added preference to change font and theme

  • Loading...
  • Enock committed 2 years ago
    d747b8cd
    1 parent 97891b8c
Revision indexing in progress... (symbol navigation in revisions will be accurate after indexed)
  • ■ ■ ■ ■ ■ ■
    sub3suite/res/files/HISTORY
    1 1  SUB3-SUITE VERSION HISTORY
    2 2   
    3 3  0.0.4 (beta release)
     4 +-added: light theme
     5 +-added: hostname querying in URL Tool
    4 6  -fix: unwanted selection in results tree views
     7 +-fix: json highlighter
     8 +-fix:
    5 9   
    6 10  0.0.3 (beta release)
    7 11  -added: ipdata module for ASN enumeration
    skipped 10 lines
  • sub3suite/res/icons/folder.png
  • sub3suite/res/icons/folder3.png
  • sub3suite/res/icons/light_down.png
  • sub3suite/res/themes/light/down.png
  • sub3suite/res/themes/light/down_on.png
  • sub3suite/res/themes/light/left.png
  • sub3suite/res/themes/light/left_on.png
  • sub3suite/res/themes/light/right.png
  • sub3suite/res/themes/light/right_on.png
  • sub3suite/res/themes/light/up.png
  • sub3suite/res/themes/light/up_on.png
  • ■ ■ ■ ■ ■
    sub3suite/res/themes/light.css
    1 1  QTabWidget::pane {
    2  - border-color: rgb(150,150,150);
     2 + border-color: rgba(140, 140, 140, 255);
    3 3   background-color: transparent;
    4 4   border-style: solid;
    5 5   border-top-width: 1px;
    skipped 23 lines
    29 29   border-color: rgb(150,150,150);
    30 30   border-style: solid;
    31 31   border-bottom-width: 0px;
    32  - color: rgb(101, 101, 86);
    33  - background: qlineargradient(x1:0, y1:0, x2:0, y2:1,stop:0 rgb(250, 250, 250),stop: 0.4 rgb(200,200,200), stop: 0.5 rgb(200,200,200) stop:1 rgb(200, 200, 200));
     32 + border-top-right-radius: 4px;
     33 + border-top-left-radius: 4px;
     34 + color: black;
     35 + /*background: qlineargradient(x1:0, y1:0, x2:0, y2:1,stop:0 rgb(250, 250, 250),stop: 0.4 rgb(210,210,210), stop: 0.5 rgb(210,210,210) stop:1 rgb(230, 230, 230));*/
     36 + background-color: qlineargradient(spread:pad, x1:0.5, y1:1, x2:0.5, y2:0, stop:0 rgba(170, 170, 127, 150), stop:1 rgb(255, 255, 255));
    34 37  }
    35 38   
    36 39  QTabBar::tab:hover {
    37  - color: black;
     40 + background: qlineargradient(x1:0, y1:0, x2:0, y2:1,stop:0 rgb(250, 250, 250),stop: 0.4 rgb(230,230,230), stop: 0.5 rgb(230,230,230) stop:1 rgb(250, 250, 250));
    38 41  }
    39 42   
    40 43  QTabBar::tab:selected {
    41  - background-color: white;
    42  - color: rgb(141, 141, 106);
    43  -}
    44  - 
    45  -QTextEdit,
    46  -QTableView,
    47  -QTreeView,
    48  -QListView,
    49  -QPlainTextEdit {
    50  - color: black;
    51  - border-style: inset solid;
    52  - border-color: rgb(150,150,150);
    53  - border-width: 1px;
     44 + background-color: qlineargradient(spread:pad, x1:0.5, y1:1, x2:0.5, y2:0, stop:0 rgba(127, 127, 127, 255), stop:1 rgb(170, 170, 127));
     45 + color: white;
    54 46  }
    55 47   
    56 48  QFrame[default_frame="true"] {
    57 49   height: 45px;
    58 50   max-height: 45px;
    59 51   min-height: 45px;
    60  - background: rgb(200,200,200);
     52 + background-color: rgba(170, 170, 127, 100);
     53 + border-style: solid;
     54 + border-color: rgb(150,150,150);
     55 + border-width: 1px;
    61 56  }
    62 57   
    63 58  QProgressBar {
    skipped 2 lines
    66 61   min-height: 22px;
    67 62   text-align: center;
    68 63   color: black;
     64 + border-style: inset solid;
     65 + border-radius: 5px;
    69 66   border-width: 1px;
    70  - border-color: rgb(30,30,30);
    71  - border-style: solid;
    72  - background-color:rgb(207,207,207);
     67 + border-color: rgb(150,150,150);
     68 + background-color:white;
    73 69  }
    74 70   
    75 71  QProgressBar::chunk {
    76  - background-color: qlineargradient(x1: 0, y1: 0, x2: 0, y2: 1, stop: 0 white, stop: 0.3 rgb(170, 170, 127));
     72 + border-style: inset solid;
     73 + border-radius: 5px;
     74 + background-color: qlineargradient(spread:pad, x1:0.5, y1:1, x2:0.5, y2:0, stop:0 rgba(130, 130, 130, 255), stop:1 rgb(170, 170, 127));
    77 75  }
    78 76   
    79 77  /****************************** ToolButton ******************************/
    skipped 1 lines
    81 79   min-height: 12px;
    82 80   min-width: 50px;
    83 81   padding: 1.5px;
    84  - border-style: outset;
    85  - border-style: solid;
     82 + border-style: inset;
    86 83   border-radius: 5px;
     84 + border-width: 1px;
    87 85   border-color: rgb(150,150,150);
    88  - color: white;
    89  - background: qlineargradient(spread:pad, x1:0.5, y1:1, x2:0.5, y2:0, stop:0 rgba(117, 117, 117, 255), stop:1 rgba(137, 137, 137, 255));
     86 + border-style: solid;
     87 + color: rgb(20,20,20);
     88 + /*background: qlineargradient(x1:0, y1:0, x2:0, y2:1,stop:0 rgb(250, 250, 250),stop: 0.4 rgb(210,210,210), stop: 0.5 rgb(210,210,210) stop:1 rgb(250, 250, 250));*/
     89 + background-color: qlineargradient(spread:pad, x1:0.5, y1:1, x2:0.5, y2:0, stop:0 rgba(170, 170, 127, 150), stop:1 rgb(255, 255, 255));
     90 +}
     91 + 
     92 +QToolButton:hover {
     93 + background: qlineargradient(x1:0, y1:0, x2:0, y2:1,stop:0 rgb(250, 250, 250),stop: 0.4 rgb(220,220,220), stop: 0.5 rgb(220,220,220) stop:1 rgb(250, 250, 250));
     94 +}
     95 + 
     96 +QToolButton:pressed {
     97 + background: qlineargradient(x1:0, y1:0, x2:0, y2:1,stop:0 rgb(250, 250, 250),stop: 0.4 rgb(230,230,230), stop: 0.5 rgb(230,230,230) stop:1 rgb(250, 250, 250));
    90 98  }
    91 99   
    92 100  QPushButton{
    93  - min-height: 20px;
    94  - min-width: 73px;
     101 + min-height: 21px;
     102 + min-width: 75px;
    95 103   padding: 1px;
    96 104   border-style: inset;
     105 + border-radius: 4px;
    97 106   border-width: 1px;
    98 107   border-color: rgb(150,150,150);
    99 108   border-style: solid;
    100 109   color: rgb(20,20,20);
    101  - background: qlineargradient(x1:0, y1:0, x2:0, y2:1,stop:0 rgb(250, 250, 250),stop: 0.4 rgb(200,200,200), stop: 0.5 rgb(200,200,200) stop:1 rgb(200, 200, 200));
     110 + /*background: qlineargradient(x1:0, y1:0, x2:0, y2:1,stop:0 rgb(250, 250, 250),stop: 0.4 rgb(210,210,210), stop: 0.5 rgb(210,210,210) stop:1 rgb(250, 250, 250));*/
     111 + background-color: qlineargradient(spread:pad, x1:0.5, y1:1, x2:0.5, y2:0, stop:0 rgba(170, 170, 127, 150), stop:1 rgb(255, 255, 255));
    102 112  }
    103 113   
    104  -QAction {
    105  - background: transparent;
     114 +QPushButton:disabled {
     115 + color: grey;
     116 +}
     117 + 
     118 +QPushButton:hover {
     119 + background: qlineargradient(x1:0, y1:0, x2:0, y2:1,stop:0 rgb(250, 250, 250),stop: 0.4 rgb(220,220,220), stop: 0.5 rgb(220,220,220) stop:1 rgb(250, 250, 250));
     120 +}
     121 + 
     122 +QPushButton:pressed {
     123 + background: qlineargradient(x1:0, y1:0, x2:0, y2:1,stop:0 rgb(250, 250, 250),stop: 0.4 rgb(230,230,230), stop: 0.5 rgb(230,230,230) stop:1 rgb(250, 250, 250));
    106 124  }
    107 125   
    108 126  QComboBox {
    skipped 3 lines
    112 130   padding-right: 1px;
    113 131   padding-top: 1px;
    114 132   padding-bottom: 1px;
     133 + border-style: solid;
     134 + border-color: rgb(150,150,150);
     135 + border-width: 1px;
     136 + background-color: qlineargradient(spread:pad, x1:0.5, y1:1, x2:0.5, y2:0, stop:0 rgba(170, 170, 127, 100), stop:1 rgb(255, 255, 255));
     137 +}
     138 + 
     139 +QComboBox::drop-down {
     140 + image: url(:/img/res/icons/light_down.png);
     141 + padding-top: 3px;
     142 + padding-right: 5px;
     143 + padding-left: 5px;
    115 144  }
    116 145   
    117 146  QStatusBar {
    skipped 12 lines
    130 159  }
    131 160   
    132 161  QMenuBar::item:disabled {
    133  - color: grey;
     162 + color: rgb(220,220,220);
    134 163  }
    135 164   
    136 165  QLabel[dark="true"] {
    137  - border-style: outset;
     166 + border-style: inset;
    138 167   border-style: solid;
    139 168   border-width: 1px;
    140 169   border-color: rgb(150,150,150);
    141  - background-color: transparent;
     170 + background-color: rgba(170, 170, 127, 100);
    142 171  }
    143 172   
    144 173  QScrollArea {
    skipped 3 lines
    148 177   border-color: rgb(150,150,150);
    149 178  }
    150 179   
     180 +QToolBox QWidget {
     181 + background-color: rgba(240,240,240);
     182 +}
     183 + 
    151 184  QToolBox QScrollArea {
    152 185   border-style: solid;
    153 186   border-width: 1px;
    154  - border-color: rgb(150,150,150);
    155 187  }
    156 188   
    157 189  QToolBox::tab {
    158 190   padding-left: 12px;
    159  - color: rgb(101, 101, 86);
    160  - background: qlineargradient(x1:0, y1:0, x2:0, y2:1,stop:0 rgb(250, 250, 250),stop: 0.4 rgb(200,200,200), stop: 0.5 rgb(200,200,200) stop:1 rgb(200, 200, 200));
     191 + color: black;
     192 + background-color: qlineargradient(spread:pad, x1:0.5, y1:1, x2:0.5, y2:0, stop:0 rgba(170, 170, 127, 150), stop:1 rgb(255, 255, 255));
    161 193   border-style: solid;
    162 194   border-width: 1px;
    163 195   border-color: rgb(150,150,150);
    164 196  }
    165 197   
     198 +/****************************** ScrollBar ******************************/
     199 +QScrollBar:horizontal {
     200 + height: 18px;
     201 + margin: 4px 16px 4px 16px;
     202 + border: 0;
     203 + border-radius: 4px;
     204 + background-color: transparent;
     205 +}
     206 + 
     207 +QScrollBar::handle:horizontal {
     208 + background-color: rgba(170, 170, 127, 130);
     209 + min-width: 5px;
     210 + border-radius: 4px;
     211 +}
     212 + 
     213 +QScrollBar::handle:horizontal:hover {
     214 + background-color: rgba(170, 170, 127, 100);
     215 + min-width: 5px;
     216 + border-radius: 4px;
     217 +}
     218 + 
     219 +QScrollBar::add-line:horizontal {
     220 + margin: 0px 3px 0px 3px;
     221 + border-image: url(:/light_theme/res/themes/light/right.png);
     222 + height: 10px;
     223 + width: 10px;
     224 + subcontrol-position: right;
     225 + subcontrol-origin: margin;
     226 +}
     227 + 
     228 +QScrollBar::sub-line:horizontal {
     229 + margin: 0px 3px 0px 3px;
     230 + border-image: url(:/light_theme/res/themes/light/left.png);
     231 + height: 10px;
     232 + width: 10px;
     233 + subcontrol-position: left;
     234 + subcontrol-origin: margin;
     235 +}
     236 + 
     237 +QScrollBar::add-line:horizontal:hover,
     238 +QScrollBar::add-line:horizontal:on {
     239 + border-image: url(:/light_theme/res/themes/light/right_on.png);
     240 + height: 10px;
     241 + width: 10px;
     242 + subcontrol-position: right;
     243 + subcontrol-origin: margin;
     244 +}
     245 + 
     246 +QScrollBar::sub-line:horizontal:hover,
     247 +QScrollBar::sub-line:horizontal:on {
     248 + border-image: url(:/light_theme/res/themes/light/left_on.png);
     249 + height: 10px;
     250 + width: 10px;
     251 + subcontrol-position: left;
     252 + subcontrol-origin: margin;
     253 +}
     254 + 
     255 +QScrollBar::up-arrow:horizontal,
     256 +QScrollBar::down-arrow:horizontal,
     257 +QScrollBar::add-page:horizontal,
     258 +QScrollBar::sub-page:horizontal {
     259 + background: none;
     260 +}
     261 + 
     262 +QScrollBar:vertical {
     263 + background-color: transparent;
     264 + width: 18px;
     265 + margin: 16px 4px 16px 4px;
     266 + border-radius: 4px;
     267 +}
     268 + 
     269 +QScrollBar::handle:vertical {
     270 + background-color: rgba(170, 170, 127, 130);
     271 + min-height: 24px;
     272 + border-radius: 4px;
     273 +}
     274 + 
     275 +QScrollBar::handle:vertical:hover {
     276 + background-color: rgba(170, 170, 127, 100);
     277 + min-height: 24px;
     278 + border-radius: 4px;
     279 +}
     280 + 
     281 +QScrollBar::sub-line:vertical {
     282 + margin: 3px 0px 3px 0px;
     283 + border-image: url(:/light_theme/res/themes/light/up.png);
     284 + height: 10px;
     285 + width: 10px;
     286 + subcontrol-position: top;
     287 + subcontrol-origin: margin;
     288 +}
     289 + 
     290 +QScrollBar::add-line:vertical {
     291 + margin: 3px 0px 3px 0px;
     292 + border-image: url(:/light_theme/res/themes/light/down.png);
     293 + height: 10px;
     294 + width: 10px;
     295 + subcontrol-position: bottom;
     296 + subcontrol-origin: margin;
     297 +}
     298 + 
     299 +QScrollBar::sub-line:vertical:hover,
     300 +QScrollBar::sub-line:vertical:on {
     301 + border-image: url(:/light_theme/res/themes/light/up_on.png);
     302 + height: 10px;
     303 + width: 10px;
     304 + subcontrol-position: top;
     305 + subcontrol-origin: margin;
     306 +}
     307 + 
     308 +QScrollBar::add-line:vertical:hover,
     309 +QScrollBar::add-line:vertical:on {
     310 + border-image: url(:/light_theme/res/themes/light/down_on.png);
     311 + height: 10px;
     312 + width: 10px;
     313 + subcontrol-position: bottom;
     314 + subcontrol-origin: margin;
     315 +}
     316 + 
     317 +QScrollBar::up-arrow:vertical,
     318 +QScrollBar::down-arrow:vertical,
     319 +QScrollBar::add-page:vertical,
     320 +QScrollBar::sub-page:vertical {
     321 + background: none;
     322 +}
     323 + 
     324 +QCheckBox {
     325 + color: black;
     326 + padding: 2px;
     327 +}
     328 + 
     329 +QCheckBox:disabled {
     330 + color: grey;
     331 + padding: 2px;
     332 +}
     333 + 
     334 +QCheckBox::indicator:checked,
     335 +QGroupBox::indicator:checked {
     336 + border-style:solid;
     337 + border-width:1px;
     338 + border-color: rgb(150,150,150);
     339 + image: url(:/img/res/icons/checkBox.png);
     340 + background-color: qlineargradient(spread:pad, x1:0.5, y1:1, x2:0.5, y2:0, stop:0 rgba(170, 170, 127, 150), stop:1 rgb(255, 255, 255));
     341 +}
     342 + 
     343 +QCheckBox::indicator:unchecked,
     344 +QGroupBox::indicator:unchecked {
     345 + border-style:solid;
     346 + border-width:1px;
     347 + border-color: rgb(150,150,150);
     348 + background-color: qlineargradient(spread:pad, x1:0.5, y1:1, x2:0.5, y2:0, stop:0 rgba(170, 170, 127, 150), stop:1 rgb(255, 255, 255));
     349 +}
     350 + 
     351 +QCheckBox::indicator:disabled {
     352 + background-color: grey;
     353 +}
     354 + 
     355 +QMainWindow {
     356 + background-color: rgba(240, 240, 240, 255);
     357 +}
     358 + 
     359 +QDialog {
     360 + min-width: 400px;
     361 + background-color: rgba(240, 240, 240, 255);
     362 +}
     363 + 
     364 +/****************************** Splitter ******************************/
     365 +QSplitter::handle:horizontal {
     366 + background-color: transparent;
     367 + width: 8px;
     368 +}
     369 + 
     370 +QSplitter::handle:vertical{
     371 + background-color: transparent;
     372 + height: 8px;
     373 +}
     374 + 
     375 +QTreeView[no_item_border="true"] {
     376 + border-style: solid;
     377 + border-width: 0px;
     378 +}
     379 + 
  • ■ ■ ■ ■ ■ ■
    sub3suite/res.qrc
    skipped 38 lines
    39 39   <file>res/icons/open.png</file>
    40 40   <file>res/icons/recent.png</file>
    41 41   <file>res/icons/folder2.png</file>
    42  - <file>res/icons/folder.png</file>
    43 42   <file>res/icons/exit.png</file>
    44 43   <file>res/icons/key.png</file>
    45 44   <file>res/icons/about.png</file>
    skipped 23 lines
    69 68   <file>res/icons/copy.png</file>
    70 69   <file>res/icons/duplicate.png</file>
    71 70   <file>res/icons/splash.png</file>
     71 + <file>res/icons/light_down.png</file>
     72 + <file>res/icons/folder.png</file>
    72 73   </qresource>
    73 74   <qresource prefix="/files">
    74 75   <file>res/files/srv.txt</file>
    skipped 9 lines
    84 85   <qresource prefix="/themes">
    85 86   <file>res/themes/default.css</file>
    86 87   <file>res/themes/light.css</file>
     88 + </qresource>
     89 + <qresource prefix="/light_theme">
     90 + <file>res/themes/light/down.png</file>
     91 + <file>res/themes/light/down_on.png</file>
     92 + <file>res/themes/light/left.png</file>
     93 + <file>res/themes/light/left_on.png</file>
     94 + <file>res/themes/light/right.png</file>
     95 + <file>res/themes/light/right_on.png</file>
     96 + <file>res/themes/light/up.png</file>
     97 + <file>res/themes/light/up_on.png</file>
    87 98   </qresource>
    88 99  </RCC>
    89 100   
  • ■ ■ ■ ■ ■ ■
    sub3suite/src/MainWindow.cpp
    skipped 10 lines
    11 11  #include <QScreen>
    12 12  #include <QPushButton>
    13 13  #include <QDesktopServices>
     14 +#include <QActionGroup>
    14 15   
    15 16  #include "src/dialogs/AboutDialog.h"
    16 17  #include "src/dialogs/ApiKeysDialog.h"
    skipped 130 lines
    147 148   ui->menuTools->addAction("MX Enumerator", this, [=](){this->onChangeTabToMXEnum();})->setIcon(QIcon(":/img/res/icons/mx.png"));
    148 149   ui->menuTools->addAction("SSL Enumerator", this, [=](){this->onChangeTabToSSLEnum();})->setIcon(QIcon(":/img/res/icons/ssl.png"));
    149 150   ui->menuTools->addAction("Email Enumerator", this, [=](){this->onChangeTabToEmailEnum();})->setIcon(QIcon(":/img/res/icons/email.png"));
     151 + 
     152 + ///
     153 + /// theme actions...
     154 + ///
     155 + QAction *light_theme = new QAction(this);
     156 + QAction *dark_theme = new QAction(this);
     157 + light_theme->setText(tr("Light"));
     158 + dark_theme->setText(tr("Dark"));
     159 + light_theme->setCheckable(true);
     160 + dark_theme->setCheckable(true);
     161 + 
     162 + connect(light_theme, &QAction::triggered, this, [=](){
     163 + CONFIG.setValue(CFG_VAL_THEME, "light");
     164 + QMessageBox::information(this, "Info", "The theme will be applied after re-start");
     165 + });
     166 + connect(dark_theme, &QAction::triggered, this, [=](){
     167 + CONFIG.setValue(CFG_VAL_THEME, "dark");
     168 + QMessageBox::information(this, "Info", "The theme will be applied after re-start");
     169 + });
     170 + 
     171 + QActionGroup *theme_group = new QActionGroup(this);
     172 + theme_group->addAction(light_theme);
     173 + theme_group->addAction(dark_theme);
     174 + theme_group->setExclusive(true);
     175 + 
     176 + QMenu *themes = new QMenu(this);
     177 + themes->addAction(light_theme);
     178 + themes->addAction(dark_theme);
     179 + 
     180 + if(s3s::is_dark_theme)
     181 + dark_theme->setChecked(true);
     182 + if(s3s::is_light_theme)
     183 + light_theme->setChecked(true);
     184 + 
     185 + ui->actionTheme->setMenu(themes);
     186 + 
     187 + ///
     188 + /// theme actions...
     189 + ///
     190 + QAction *font_11 = new QAction(this);
     191 + QAction *font_12 = new QAction(this);
     192 + QAction *font_none = new QAction(this);
     193 + font_11->setText(tr("11"));
     194 + font_12->setText(tr("12"));
     195 + font_none->setText(tr("none"));
     196 + font_11->setCheckable(true);
     197 + font_12->setCheckable(true);
     198 + font_none->setCheckable(true);
     199 + 
     200 + connect(font_11, &QAction::triggered, this, [=](){
     201 + CONFIG.setValue(CFG_VAL_FONT, 11);
     202 + QMessageBox::information(this, "Info", "The font size will be applied after re-start");
     203 + });
     204 + connect(font_12, &QAction::triggered, this, [=](){
     205 + CONFIG.setValue(CFG_VAL_FONT, 12);
     206 + QMessageBox::information(this, "Info", "The font size will be applied after re-start");
     207 + });
     208 + connect(font_none, &QAction::triggered, this, [=](){
     209 + CONFIG.setValue(CFG_VAL_FONT, 0);
     210 + QMessageBox::information(this, "Info", "The font size will be applied after re-start");
     211 + });
     212 + 
     213 + QActionGroup *font_group = new QActionGroup(this);
     214 + font_group->addAction(font_11);
     215 + font_group->addAction(font_12);
     216 + font_group->addAction(font_none);
     217 + font_group->setExclusive(true);
     218 + 
     219 + QMenu *fonts = new QMenu(this);
     220 + fonts->addAction(font_11);
     221 + fonts->addAction(font_12);
     222 + fonts->addAction(font_none);
     223 + 
     224 + if(s3s::font_size == 11)
     225 + font_11->setChecked(true);
     226 + if(s3s::font_size == 12)
     227 + font_12->setChecked(true);
     228 + if(s3s::font_size == 0)
     229 + font_none->setChecked(true);
     230 + 
     231 + ui->actionFont->setMenu(fonts);
    150 232  }
    151 233   
    152 234  void MainWindow::setRecentProjects(){
    skipped 13 lines
    166 248  }
    167 249   
    168 250  void MainWindow::initProject(ProjectStruct project_info){
    169  - ui->statusbar->showMessage("Opening Project \""+project_info.name+"\"");
     251 + ui->statusbar->showMessage("Opening Project \""+project_info.name+"\"", 3000);
    170 252   projectModel->openProject(project_info);
    171 253  }
    172 254   
    skipped 246 lines
    419 501  ///
    420 502   
    421 503  void MainWindow::onReceiveStatus(QString status){
    422  - ui->statusbar->showMessage(status, 5000);
     504 + ui->statusbar->showMessage(status, 3000);
    423 505  }
    424 506   
    425 507  void MainWindow::onChangeTabToOsint(){
    skipped 155 lines
  • ■ ■ ■ ■ ■ ■
    sub3suite/src/MainWindow.ui
    skipped 199 lines
    200 200   <string>Options</string>
    201 201   </property>
    202 202   <addaction name="actionApiKeys"/>
     203 + <addaction name="actionTheme"/>
     204 + <addaction name="actionFont"/>
    203 205   <addaction name="actionLanguage"/>
    204 206   </widget>
    205 207   <widget class="QMenu" name="menuTools">
    skipped 145 lines
    351 353   <action name="actionSaveCopy">
    352 354   <property name="text">
    353 355   <string>Save copy</string>
     356 + </property>
     357 + </action>
     358 + <action name="actionTheme">
     359 + <property name="text">
     360 + <string>Theme</string>
     361 + </property>
     362 + </action>
     363 + <action name="actionFont">
     364 + <property name="text">
     365 + <string>Font Size</string>
    354 366   </property>
    355 367   </action>
    356 368   </widget>
    skipped 4 lines
  • ■ ■ ■ ■ ■ ■
    sub3suite/src/dialogs/LogViewerDialog.cpp
    skipped 10 lines
    11 11  #include <QDir>
    12 12  #include <QDateTime>
    13 13   
     14 +#include "src/utils/Config.h"
     15 + 
    14 16   
    15 17  LogViewerDialog::LogViewerDialog(QWidget *parent): QDialog(parent),
    16 18   ui(new Ui::LogViewerDialog)
    skipped 18 lines
    35 37   
    36 38   /* syntax higlighting... */
    37 39   m_logsSyntaxHighlighter = new LogsSyntaxHighlighter(ui->plainTextEdit->document());
     40 + if(s3s::is_dark_theme)
     41 + m_logsSyntaxHighlighter->forDarkTheme();
     42 + if(s3s::is_light_theme)
     43 + m_logsSyntaxHighlighter->forLightTheme();
    38 44  }
    39 45  LogViewerDialog::~LogViewerDialog(){
    40 46   delete m_logsSyntaxHighlighter;
    skipped 25 lines
  • ■ ■ ■ ■
    sub3suite/src/dialogs/StartupDialog.ui
    skipped 6 lines
    7 7   <x>0</x>
    8 8   <y>0</y>
    9 9   <width>834</width>
    10  - <height>573</height>
     10 + <height>543</height>
    11 11   </rect>
    12 12   </property>
    13 13   <property name="sizePolicy">
    skipped 405 lines
  • ■ ■ ■ ■ ■ ■
    sub3suite/src/engines/active/Active_actions.cpp
    skipped 313 lines
    314 314   emit sendToSsl(targets, result_type);
    315 315   emit changeTabToSSL();
    316 316   break;
     317 + case ENGINE::URL:
     318 + emit sendToUrl(targets, result_type);
     319 + emit changeTabToURL();
     320 + break;
    317 321   default:
    318 322   break;
    319 323   }
    skipped 45 lines
    365 369   case ENGINE::SSL:
    366 370   emit sendToSsl(targets, result_type);
    367 371   emit changeTabToSSL();
     372 + break;
     373 + case ENGINE::URL:
     374 + emit sendToUrl(targets, result_type);
     375 + emit changeTabToURL();
    368 376   break;
    369 377   default:
    370 378   break;
    skipped 55 lines
  • ■ ■ ■ ■ ■ ■
    sub3suite/src/engines/active/Active_contextmenu.cpp
    skipped 65 lines
    66 66   menu.addAction(tr("Send Hostname to ACTIVE"), this, [=](){this->sendToEngine(ENGINE::ACTIVE, RESULT_TYPE::SUBDOMAIN);})->setIcon(QIcon(":/img/res/icons/domain.png"));
    67 67   menu.addAction(tr("Send Hostname to DNS"), this, [=](){this->sendToEngine(ENGINE::DNS, RESULT_TYPE::SUBDOMAIN);})->setIcon(QIcon(":/img/res/icons/domain.png"));
    68 68   menu.addAction(tr("Send Hostname to SSL"), this, [=](){this->sendToEngine(ENGINE::SSL, RESULT_TYPE::SUBDOMAIN);})->setIcon(QIcon(":/img/res/icons/domain.png"));
     69 + menu.addAction(tr("Send Hostname to URL"), this, [=](){this->sendToEngine(ENGINE::URL, RESULT_TYPE::SUBDOMAIN);})->setIcon(QIcon(":/img/res/icons/domain.png"));
    69 70   menu.addSeparator();
    70 71   menu.addAction(tr("Send IpAddress to IP-Enum"), this, [=](){this->sendToEnum(ENUMERATOR::IP);})->setIcon(QIcon(":/img/res/icons/ip.png"));
    71 72   
    skipped 44 lines
    116 117   menu.addAction(tr("Send Hostname to ACTIVE"), this, [=](){this->sendSelectedToEngine(ENGINE::ACTIVE, RESULT_TYPE::SUBDOMAIN);})->setIcon(QIcon(":/img/res/icons/domain.png"));
    117 118   menu.addAction(tr("Send Hostname to DNS"), this, [=](){this->sendSelectedToEngine(ENGINE::DNS, RESULT_TYPE::SUBDOMAIN);})->setIcon(QIcon(":/img/res/icons/domain.png"));
    118 119   menu.addAction(tr("Send Hostname to SSL"), this, [=](){this->sendSelectedToEngine(ENGINE::SSL, RESULT_TYPE::SUBDOMAIN);})->setIcon(QIcon(":/img/res/icons/domain.png"));
     120 + menu.addAction(tr("Send Hostname to URL"), this, [=](){this->sendSelectedToEngine(ENGINE::URL, RESULT_TYPE::SUBDOMAIN);})->setIcon(QIcon(":/img/res/icons/domain.png"));
    119 121   menu.addSeparator();
    120 122   }
    121 123   if(selectionModel->columnIntersectsSelection(1, selectionModel->currentIndex().parent()) ||
    skipped 7 lines
  • ■ ■ ■ ■ ■ ■
    sub3suite/src/engines/brute/Brute_actions.cpp
    skipped 361 lines
    362 362   emit sendToSsl(targets, result_type);
    363 363   emit changeTabToSSL();
    364 364   break;
     365 + case ENGINE::URL:
     366 + emit sendToUrl(targets, result_type);
     367 + emit changeTabToURL();
     368 + break;
    365 369   default:
    366 370   break;
    367 371   }
    skipped 45 lines
    413 417   case ENGINE::SSL:
    414 418   emit sendToSsl(targets, result_type);
    415 419   emit changeTabToSSL();
     420 + break;
     421 + case ENGINE::URL:
     422 + emit sendToUrl(targets, result_type);
     423 + emit changeTabToURL();
    416 424   break;
    417 425   default:
    418 426   break;
    skipped 56 lines
  • ■ ■ ■ ■ ■ ■
    sub3suite/src/engines/brute/Brute_contextmenu.cpp
    skipped 65 lines
    66 66   menu.addAction(tr("Send Hostname to ACTIVE"), this, [=](){this->sendToEngine(ENGINE::ACTIVE, RESULT_TYPE::SUBDOMAIN);})->setIcon(QIcon(":/img/res/icons/domain.png"));
    67 67   menu.addAction(tr("Send Hostname to DNS"), this, [=](){this->sendToEngine(ENGINE::DNS, RESULT_TYPE::SUBDOMAIN);})->setIcon(QIcon(":/img/res/icons/domain.png"));
    68 68   menu.addAction(tr("Send Hostname to SSL"), this, [=](){this->sendToEngine(ENGINE::SSL, RESULT_TYPE::SUBDOMAIN);})->setIcon(QIcon(":/img/res/icons/domain.png"));
     69 + menu.addAction(tr("Send Hostname to URL"), this, [=](){this->sendToEngine(ENGINE::URL, RESULT_TYPE::SUBDOMAIN);})->setIcon(QIcon(":/img/res/icons/domain.png"));
    69 70   menu.addSeparator();
    70 71   menu.addAction(tr("Send IpAddress to IP-Enum"), this, [=](){this->sendToEnum(ENUMERATOR::IP);})->setIcon(QIcon(":/img/res/icons/ip.png"));
    71 72   
    skipped 44 lines
    116 117   menu.addAction(tr("Send Hostname to ACTIVE"), this, [=](){this->sendSelectedToEngine(ENGINE::ACTIVE, RESULT_TYPE::SUBDOMAIN);})->setIcon(QIcon(":/img/res/icons/domain.png"));
    117 118   menu.addAction(tr("Send Hostname to DNS"), this, [=](){this->sendSelectedToEngine(ENGINE::DNS, RESULT_TYPE::SUBDOMAIN);})->setIcon(QIcon(":/img/res/icons/domain.png"));
    118 119   menu.addAction(tr("Send Hostname to SSL"), this, [=](){this->sendSelectedToEngine(ENGINE::SSL, RESULT_TYPE::SUBDOMAIN);})->setIcon(QIcon(":/img/res/icons/domain.png"));
     120 + menu.addAction(tr("Send Hostname to URL"), this, [=](){this->sendSelectedToEngine(ENGINE::URL, RESULT_TYPE::SUBDOMAIN);})->setIcon(QIcon(":/img/res/icons/domain.png"));
    119 121   menu.addSeparator();
    120 122   }
    121 123   if(selectionModel->columnIntersectsSelection(1, selectionModel->currentIndex().parent()) ||
    skipped 7 lines
  • ■ ■ ■ ■ ■ ■
    sub3suite/src/engines/dns/Dns_actions.cpp
    skipped 426 lines
    427 427   emit sendToSsl(targets, result_type);
    428 428   emit changeTabToSSL();
    429 429   break;
     430 + case ENGINE::URL:
     431 + emit sendToUrl(targets, result_type);
     432 + emit changeTabToURL();
     433 + break;
    430 434   default:
    431 435   break;
    432 436   }
    skipped 33 lines
    466 470   case ENGINE::SSL:
    467 471   emit sendToSsl(targets, result_type);
    468 472   emit changeTabToSSL();
     473 + break;
     474 + case ENGINE::URL:
     475 + emit sendToUrl(targets, result_type);
     476 + emit changeTabToURL();
    469 477   break;
    470 478   default:
    471 479   break;
    skipped 91 lines
  • ■ ■ ■ ■ ■ ■
    sub3suite/src/engines/dns/Dns_contextmenu.cpp
    skipped 72 lines
    73 73   menu.addAction(tr("Send Hostname to ACTIVE"), this, [=](){this->sendToEngine(ENGINE::ACTIVE, RESULT_TYPE::SUBDOMAIN);})->setIcon(QIcon(":/img/res/icons/domain.png"));
    74 74   menu.addAction(tr("Send Hostname to DNS"), this, [=](){this->sendToEngine(ENGINE::DNS, RESULT_TYPE::SUBDOMAIN);})->setIcon(QIcon(":/img/res/icons/domain.png"));
    75 75   menu.addAction(tr("Send Hostname to SSL"), this, [=](){this->sendToEngine(ENGINE::SSL, RESULT_TYPE::SUBDOMAIN);})->setIcon(QIcon(":/img/res/icons/domain.png"));
     76 + menu.addAction(tr("Send Hostname to URL"), this, [=](){this->sendToEngine(ENGINE::URL, RESULT_TYPE::SUBDOMAIN);})->setIcon(QIcon(":/img/res/icons/domain.png"));
    76 77   menu.addSeparator();
    77 78   menu.addAction(tr("Send IpAddress to IP-Enum"), this, [=](){this->sendToEnum(ENUMERATOR::IP);})->setIcon(QIcon(":/img/res/icons/ip.png"));
    78 79   menu.addAction(tr("Send NS to NS-Enum"), this, [=](){this->sendToEnum(ENUMERATOR::NS);})->setIcon(QIcon(":/img/res/icons/ns.png"));
    skipped 33 lines
    112 113   menu.addAction(tr("Send Hostname to ACTIVE"), this, [=](){this->sendSelectedToEngine(ENGINE::ACTIVE, RESULT_TYPE::SUBDOMAIN);})->setIcon(QIcon(":/img/res/icons/domain.png"));
    113 114   menu.addAction(tr("Send Hostname to DNS"), this, [=](){this->sendSelectedToEngine(ENGINE::DNS, RESULT_TYPE::SUBDOMAIN);})->setIcon(QIcon(":/img/res/icons/domain.png"));
    114 115   menu.addAction(tr("Send Hostname to SSL"), this, [=](){this->sendSelectedToEngine(ENGINE::SSL, RESULT_TYPE::SUBDOMAIN);})->setIcon(QIcon(":/img/res/icons/domain.png"));
     116 + menu.addAction(tr("Send Hostname to URL"), this, [=](){this->sendSelectedToEngine(ENGINE::URL, RESULT_TYPE::SUBDOMAIN);})->setIcon(QIcon(":/img/res/icons/domain.png"));
    115 117   menu.addSeparator();
    116 118   menu.addAction(tr("Send IpAddress to IP-Enum"), this, [=](){this->sendSelectedToEnum(ENUMERATOR::IP);})->setIcon(QIcon(":/img/res/icons/ip.png"));
    117 119   menu.addAction(tr("Send MX to MX-Enum"), this, [=](){this->sendSelectedToEnum(ENUMERATOR::MX);})->setIcon(QIcon(":/img/res/icons/mx.png"));
    skipped 6 lines
  • ■ ■ ■ ■ ■ ■
    sub3suite/src/engines/osint/Osint.cpp
    skipped 198 lines
    199 199   
    200 200   /* setting a respective placeholdertext on the target line edit */
    201 201   switch (index) {
    202  - case INPUT::HOSTNAME:
     202 + case OSINT_INPUT::HOSTNAME:
    203 203   ui->targets->setListModel(m_targetListModel_host);
    204 204   ui->lineEditTarget->setPlaceholderText(tr(PLACEHOLDERTEXT_DOMAIN));
    205 205   break;
    206  - case INPUT::IP:
     206 + case OSINT_INPUT::IP:
    207 207   ui->targets->setListModel(m_targetListModel_ip);
    208 208   ui->lineEditTarget->setPlaceholderText(tr(PLACEHOLDERTEXT_IP));
    209 209   break;
    210  - case INPUT::EMAIL:
     210 + case OSINT_INPUT::EMAIL:
    211 211   ui->targets->setListModel(m_targetListModel_email);
    212 212   ui->lineEditTarget->setPlaceholderText(tr(PLACEHOLDERTEXT_EMAIL));
    213 213   break;
    214  - case INPUT::URL:
     214 + case OSINT_INPUT::URL:
    215 215   ui->targets->setListModel(m_targetListModel_url);
    216 216   ui->lineEditTarget->setPlaceholderText(tr(PLACEHOLDERTEXT_URL));
    217 217   break;
    218  - case INPUT::ASN:
     218 + case OSINT_INPUT::ASN:
    219 219   ui->targets->setListModel(m_targetListModel_asn);
    220 220   ui->lineEditTarget->setPlaceholderText(tr(PLACEHOLDERTEXT_ASN));
    221 221   break;
    222  - case INPUT::CERT:
     222 + case OSINT_INPUT::CERT:
    223 223   ui->targets->setListModel(m_targetListModel_ssl);
    224 224   ui->lineEditTarget->setPlaceholderText(tr(PLACEHOLDERTEXT_SSLCERT));
    225 225   break;
    226  - case INPUT::CIDR:
     226 + case OSINT_INPUT::CIDR:
    227 227   ui->targets->setListModel(m_targetListModel_cidr);
    228 228   ui->lineEditTarget->setPlaceholderText(tr(PLACEHOLDERTEXT_CIDR));
    229 229   break;
    230  - case INPUT::QUERY_TERM:
     230 + case OSINT_INPUT::QUERY_TERM:
    231 231   ui->targets->setListModel(m_targetListModel_query);
    232 232   ui->lineEditTarget->setPlaceholderText(tr(PLACEHOLDERTEXT_QUERY));
    233 233   }
    skipped 83 lines
  • ■ ■ ■ ■
    sub3suite/src/engines/osint/Osint.h
    skipped 13 lines
    14 14  #include <QAction>
    15 15   
    16 16   
    17  -enum INPUT {
     17 +enum OSINT_INPUT {
    18 18   HOSTNAME = 0,
    19 19   IP = 1,
    20 20   EMAIL = 2,
    skipped 134 lines
  • ■ ■ ■ ■ ■ ■
    sub3suite/src/engines/osint/Osint.ui
    skipped 715 lines
    716 716   </property>
    717 717   <property name="font">
    718 718   <font>
    719  - <weight>75</weight>
     719 + <weight>50</weight>
    720 720   <italic>false</italic>
    721  - <bold>true</bold>
     721 + <bold>false</bold>
    722 722   </font>
    723 723   </property>
    724 724   <property name="frameShape">
    skipped 10 lines
    735 735   <rect>
    736 736   <x>0</x>
    737 737   <y>0</y>
    738  - <width>177</width>
     738 + <width>160</width>
    739 739   <height>1126</height>
    740 740   </rect>
    741 741   </property>
    skipped 366 lines
    1108 1108   </property>
    1109 1109   <property name="font">
    1110 1110   <font>
    1111  - <weight>75</weight>
     1111 + <weight>50</weight>
    1112 1112   <italic>false</italic>
    1113  - <bold>true</bold>
     1113 + <bold>false</bold>
    1114 1114   </font>
    1115 1115   </property>
    1116 1116   <property name="currentIndex">
    skipped 6 lines
    1123 1123   <property name="geometry">
    1124 1124   <rect>
    1125 1125   <x>0</x>
    1126  - <y>-148</y>
    1127  - <width>158</width>
     1126 + <y>0</y>
     1127 + <width>143</width>
    1128 1128   <height>922</height>
    1129 1129   </rect>
    1130 1130   </property>
    skipped 318 lines
  • ■ ■ ■ ■ ■ ■
    sub3suite/src/engines/osint/Osint_actions.cpp
    skipped 629 lines
    630 630  void Osint::onReceiveTargets(QSet<QString> targets, RESULT_TYPE result_type){
    631 631   switch (result_type) {
    632 632   case RESULT_TYPE::SUBDOMAIN:
    633  - ui->comboBoxInput->setCurrentIndex(INPUT::HOSTNAME);
     633 + ui->comboBoxInput->setCurrentIndex(OSINT_INPUT::HOSTNAME);
    634 634   break;
    635 635   case RESULT_TYPE::IP:
    636  - ui->comboBoxInput->setCurrentIndex(INPUT::IP);
     636 + ui->comboBoxInput->setCurrentIndex(OSINT_INPUT::IP);
    637 637   break;
    638 638   case RESULT_TYPE::ASN:
    639  - ui->comboBoxInput->setCurrentIndex(INPUT::ASN);
     639 + ui->comboBoxInput->setCurrentIndex(OSINT_INPUT::ASN);
    640 640   break;
    641 641   case RESULT_TYPE::CIDR:
    642  - ui->comboBoxInput->setCurrentIndex(INPUT::CIDR);
     642 + ui->comboBoxInput->setCurrentIndex(OSINT_INPUT::CIDR);
    643 643   break;
    644 644   case RESULT_TYPE::CERT_ID:
    645  - ui->comboBoxInput->setCurrentIndex(INPUT::CERT);
     645 + ui->comboBoxInput->setCurrentIndex(OSINT_INPUT::CERT);
    646 646   break;
    647 647   case RESULT_TYPE::EMAIL:
    648  - ui->comboBoxInput->setCurrentIndex(INPUT::EMAIL);
     648 + ui->comboBoxInput->setCurrentIndex(OSINT_INPUT::EMAIL);
    649 649   break;
    650 650   case RESULT_TYPE::URL:
    651  - ui->comboBoxInput->setCurrentIndex(INPUT::URL);
     651 + ui->comboBoxInput->setCurrentIndex(OSINT_INPUT::URL);
    652 652   break;
    653 653   default:
    654 654   break;
    skipped 8 lines
  • ■ ■ ■ ■ ■ ■
    sub3suite/src/engines/osint/Osint_contextmenu.cpp
    skipped 64 lines
    65 65   menu.addAction(tr("Send Hostname to ACTIVE"), this, [=](){this->sendToEngine(ENGINE::ACTIVE, RESULT_TYPE::SUBDOMAIN);})->setIcon(QIcon(":/img/res/icons/domain.png"));
    66 66   menu.addAction(tr("Send Hostname to DNS"), this, [=](){this->sendToEngine(ENGINE::DNS, RESULT_TYPE::SUBDOMAIN);})->setIcon(QIcon(":/img/res/icons/domain.png"));
    67 67   menu.addAction(tr("Send Hostname to SSL"), this, [=](){this->sendToEngine(ENGINE::SSL, RESULT_TYPE::SUBDOMAIN);})->setIcon(QIcon(":/img/res/icons/domain.png"));
     68 + menu.addAction(tr("Send Hostname to URL"), this, [=](){this->sendToEngine(ENGINE::URL, RESULT_TYPE::SUBDOMAIN);})->setIcon(QIcon(":/img/res/icons/domain.png"));
    68 69   menu.addSeparator();
    69 70   menu.addAction(tr("Send IpAddress to IP-Enum"), this, [=](){this->sendToEnum(ENUMERATOR::IP, RESULT_TYPE::IP);})->setIcon(QIcon(":/img/res/icons/ip.png"));
    70 71   }
    skipped 11 lines
    82 83   menu.addAction(tr("Send Hostname to ACTIVE"), this, [=](){this->sendToEngine(ENGINE::ACTIVE, RESULT_TYPE::SUBDOMAIN);})->setIcon(QIcon(":/img/res/icons/domain.png"));
    83 84   menu.addAction(tr("Send Hostname to DNS"), this, [=](){this->sendToEngine(ENGINE::DNS, RESULT_TYPE::SUBDOMAIN);})->setIcon(QIcon(":/img/res/icons/domain.png"));
    84 85   menu.addAction(tr("Send Hostname to SSL"), this, [=](){this->sendToEngine(ENGINE::SSL, RESULT_TYPE::SUBDOMAIN);})->setIcon(QIcon(":/img/res/icons/domain.png"));
     86 + menu.addAction(tr("Send Hostname to URL"), this, [=](){this->sendToEngine(ENGINE::URL, RESULT_TYPE::SUBDOMAIN);})->setIcon(QIcon(":/img/res/icons/domain.png"));
    85 87   break;
    86 88   case osint::OUTPUT::IP:
    87 89   menu.addAction(tr("Save"), this, [=](){this->saveResults(RESULT_TYPE::IP);})->setIcon(QIcon(":/img/res/icons/save.png"));
    skipped 112 lines
    200 202   menu.addAction(tr("Send Hostname To ACTIVE"), this, [=](){this->sendSelectedToEngine(ENGINE::ACTIVE, RESULT_TYPE::SUBDOMAIN);})->setIcon(QIcon(":/img/res/icons/domain.png"));
    201 203   menu.addAction(tr("Send Hostname To DNS"), this, [=](){this->sendSelectedToEngine(ENGINE::DNS, RESULT_TYPE::SUBDOMAIN);})->setIcon(QIcon(":/img/res/icons/domain.png"));
    202 204   menu.addAction(tr("Send Hostname To SSL"), this, [=](){this->sendSelectedToEngine(ENGINE::SSL, RESULT_TYPE::SUBDOMAIN);})->setIcon(QIcon(":/img/res/icons/domain.png"));
     205 + menu.addAction(tr("Send Hostname to URL"), this, [=](){this->sendSelectedToEngine(ENGINE::URL, RESULT_TYPE::SUBDOMAIN);})->setIcon(QIcon(":/img/res/icons/domain.png"));
    203 206   menu.addSeparator();
    204 207   }
    205 208   if(selectionModel->columnIntersectsSelection(1, selectionModel->currentIndex().parent()))
    skipped 6 lines
    212 215   menu.addAction(tr("Send Hostname To ACTIVE"), this, [=](){this->sendSelectedToEngine(ENGINE::ACTIVE, RESULT_TYPE::SUBDOMAIN);})->setIcon(QIcon(":/img/res/icons/domain.png"));
    213 216   menu.addAction(tr("Send Hostname To DNS"), this, [=](){this->sendSelectedToEngine(ENGINE::DNS, RESULT_TYPE::SUBDOMAIN);})->setIcon(QIcon(":/img/res/icons/domain.png"));
    214 217   menu.addAction(tr("Send Hostname To SSL"), this, [=](){this->sendSelectedToEngine(ENGINE::SSL, RESULT_TYPE::SUBDOMAIN);})->setIcon(QIcon(":/img/res/icons/domain.png"));
     218 + menu.addAction(tr("Send Hostname to URL"), this, [=](){this->sendSelectedToEngine(ENGINE::URL, RESULT_TYPE::SUBDOMAIN);})->setIcon(QIcon(":/img/res/icons/domain.png"));
    215 219   break;
    216 220   case osint::OUTPUT::IP:
    217 221   menu.addAction(tr("Send IpAddress To OSINT"), this, [=](){this->sendSelectedToEngine(ENGINE::OSINT, RESULT_TYPE::IP);})->setIcon(QIcon(":/img/res/icons/ip.png"));
    skipped 37 lines
  • ■ ■ ■ ■ ■ ■
    sub3suite/src/engines/osint/Osint_scan.cpp
    skipped 66 lines
    67 67   
    68 68   /* getting input type as specified by user */
    69 69   switch(ui->comboBoxInput->currentIndex()){
    70  - case INPUT::HOSTNAME:
     70 + case OSINT_INPUT::HOSTNAME:
    71 71   m_scanArgs->input_Domain = true;
    72 72   break;
    73  - case INPUT::IP:
     73 + case OSINT_INPUT::IP:
    74 74   m_scanArgs->input_IP = true;
    75 75   break;
    76  - case INPUT::EMAIL:
     76 + case OSINT_INPUT::EMAIL:
    77 77   m_scanArgs->input_Email = true;
    78 78   break;
    79  - case INPUT::URL:
     79 + case OSINT_INPUT::URL:
    80 80   m_scanArgs->input_URL = true;
    81 81   break;
    82  - case INPUT::ASN:
     82 + case OSINT_INPUT::ASN:
    83 83   m_scanArgs->input_ASN = true;
    84 84   break;
    85  - case INPUT::CERT:
     85 + case OSINT_INPUT::CERT:
    86 86   m_scanArgs->input_SSL = true;
    87 87   break;
    88  - case INPUT::CIDR:
     88 + case OSINT_INPUT::CIDR:
    89 89   m_scanArgs->input_CIDR = true;
    90 90   break;
    91  - case INPUT::QUERY_TERM:
     91 + case OSINT_INPUT::QUERY_TERM:
    92 92   m_scanArgs->input_Search = true;
    93 93   break;
    94 94   }
    skipped 342 lines
  • ■ ■ ■ ■ ■ ■
    sub3suite/src/engines/raw/Raw.cpp
    skipped 89 lines
    90 90   /* json syntax higlighting */
    91 91   m_resultsHighlighter = new JsonSyntaxHighlighter(ui->plainTextEditResults->document());
    92 92   m_jsonHighlighter = new JsonSyntaxHighlighter(ui->plainTextEditJson->document());
     93 + if(s3s::is_dark_theme){
     94 + m_resultsHighlighter->forDarkTheme();
     95 + m_jsonHighlighter->forDarkTheme();
     96 + }
     97 + if(s3s::is_light_theme){
     98 + m_resultsHighlighter->forLightTheme();
     99 + m_jsonHighlighter->forLightTheme();
     100 + }
    93 101   
    94 102   /* equally seperate the widgets... */
    95 103   ui->splitter->setSizes(QList<int>() << static_cast<int>((this->width() * 0.50))
    skipped 235 lines
  • ■ ■ ■ ■ ■ ■
    sub3suite/src/engines/raw/Raw.ui
    skipped 881 lines
    882 882   </property>
    883 883   <property name="font">
    884 884   <font>
    885  - <weight>75</weight>
    886  - <bold>true</bold>
     885 + <weight>50</weight>
     886 + <bold>false</bold>
    887 887   </font>
    888 888   </property>
    889 889   <property name="currentIndex">
    skipped 7 lines
    897 897   <rect>
    898 898   <x>0</x>
    899 899   <y>0</y>
    900  - <width>177</width>
     900 + <width>159</width>
    901 901   <height>742</height>
    902 902   </rect>
    903 903   </property>
    skipped 311 lines
    1215 1215   </property>
    1216 1216   <property name="font">
    1217 1217   <font>
    1218  - <weight>75</weight>
    1219  - <bold>true</bold>
     1218 + <weight>50</weight>
     1219 + <bold>false</bold>
    1220 1220   </font>
    1221 1221   </property>
    1222 1222   <property name="currentIndex">
    skipped 7 lines
    1230 1230   <rect>
    1231 1231   <x>0</x>
    1232 1232   <y>0</y>
    1233  - <width>176</width>
     1233 + <width>157</width>
    1234 1234   <height>1501</height>
    1235 1235   </rect>
    1236 1236   </property>
    skipped 657 lines
  • ■ ■ ■ ■ ■ ■
    sub3suite/src/engines/ssl/Ssl_actions.cpp
    skipped 320 lines
    321 321   emit sendToSsl(targets, result_type);
    322 322   emit changeTabToSSL();
    323 323   break;
     324 + case ENGINE::URL:
     325 + emit sendToUrl(targets, result_type);
     326 + emit changeTabToURL();
     327 + break;
    324 328   default:
    325 329   break;
    326 330   }
    skipped 31 lines
    358 362   case ENGINE::SSL:
    359 363   emit sendToSsl(targets, result_type);
    360 364   emit changeTabToSSL();
     365 + break;
     366 + case ENGINE::URL:
     367 + emit sendToUrl(targets, result_type);
     368 + emit changeTabToURL();
    361 369   break;
    362 370   default:
    363 371   break;
    skipped 47 lines
  • ■ ■ ■ ■ ■ ■
    sub3suite/src/engines/ssl/Ssl_contextmenu.cpp
    skipped 42 lines
    43 43   menu.addAction(tr("Send Hostname to ACTIVE"), this, [=](){this->sendToEngine(ENGINE::ACTIVE, RESULT_TYPE::SUBDOMAIN);})->setIcon(QIcon(":/img/res/icons/domain.png"));
    44 44   menu.addAction(tr("Send Hostname to DNS"), this, [=](){this->sendToEngine(ENGINE::DNS, RESULT_TYPE::SUBDOMAIN);})->setIcon(QIcon(":/img/res/icons/domain.png"));
    45 45   menu.addAction(tr("Send Hostname to SSL"), this, [=](){this->sendToEngine(ENGINE::SSL, RESULT_TYPE::SUBDOMAIN);})->setIcon(QIcon(":/img/res/icons/domain.png"));
     46 + menu.addAction(tr("Send Hostname to URL"), this, [=](){this->sendToEngine(ENGINE::URL, RESULT_TYPE::SUBDOMAIN);})->setIcon(QIcon(":/img/res/icons/domain.png"));
    46 47   break;
    47 48   case 1: // cert hash
    48 49   menu.addAction(tr("Send To Project"), this, [=](){this->sendToProject();})->setIcon(QIcon(":/img/res/icons/project.png"));
    skipped 44 lines
    93 94   menu.addAction(tr("Send Hostname to ACTIVE"), this, [=](){this->sendSelectedToEngine(ENGINE::ACTIVE, RESULT_TYPE::SUBDOMAIN);})->setIcon(QIcon(":/img/res/icons/domain.png"));
    94 95   menu.addAction(tr("Send Hostname to DNS"), this, [=](){this->sendSelectedToEngine(ENGINE::DNS, RESULT_TYPE::SUBDOMAIN);})->setIcon(QIcon(":/img/res/icons/domain.png"));
    95 96   menu.addAction(tr("Send Hostname to SSL"), this, [=](){this->sendSelectedToEngine(ENGINE::SSL, RESULT_TYPE::SUBDOMAIN);})->setIcon(QIcon(":/img/res/icons/domain.png"));
     97 + menu.addAction(tr("Send Hostname to URL"), this, [=](){this->sendSelectedToEngine(ENGINE::URL, RESULT_TYPE::SUBDOMAIN);})->setIcon(QIcon(":/img/res/icons/domain.png"));
    96 98   break;
    97 99   case 1: // cert hash
    98 100   menu.addAction(tr("Send To Project"), this, [=](){this->sendSelectedToProject();})->setIcon(QIcon(":/img/res/icons/project.png"));
    skipped 15 lines
  • ■ ■ ■ ■ ■ ■
    sub3suite/src/engines/url/Url.cpp
    skipped 9 lines
    10 10   
    11 11  #include <QThread>
    12 12  #include <QDateTime>
     13 + 
    13 14  #include "src/utils/Config.h"
    14 15  #include "src/utils/utils.h"
    15 16  #include "src/dialogs/ActiveConfigDialog.h"
    skipped 191 lines
    207 208   ui->labelResultsCount->setNum(proxyModel->rowCount());
    208 209  }
    209 210   
     211 +void Url::on_tableViewResults_doubleClicked(const QModelIndex &index){
     212 + if(index.column())
     213 + return;
     214 + 
     215 + s3s_item::URL *item = static_cast<s3s_item::URL*>(m_model->itemFromIndex(proxyModel->mapToSource(index)));
     216 + ui->textBrowserScreenshots->setHtml(item->document);
     217 +}
     218 + 
  • ■ ■ ■ ■ ■ ■
    sub3suite/src/engines/url/Url.h
    skipped 45 lines
    46 46   void on_lineEditTarget_returnPressed();
    47 47   void on_lineEditFilter_textChanged(const QString &arg1);
    48 48   
     49 + void on_tableViewResults_doubleClicked(const QModelIndex &index);
     50 + 
    49 51   private:
    50 52   Ui::Url *ui;
    51 53   QElapsedTimer m_timer;
    skipped 35 lines
  • ■ ■ ■ ■
    sub3suite/src/engines/url/Url_actions.cpp
    skipped 269 lines
    270 270  ///
    271 271   
    272 272  void Url::onReceiveTargets(QSet<QString> targets, RESULT_TYPE resultType){
    273  - if(resultType == RESULT_TYPE::URL)
     273 + if(resultType == RESULT_TYPE::URL || resultType == RESULT_TYPE::SUBDOMAIN)
    274 274   ui->targets->add(targets);
    275 275   
    276 276   /* set multiple targets checkbox checked */
    skipped 3 lines
  • ■ ■ ■ ■ ■ ■
    sub3suite/src/items/ASNItem.h
    skipped 70 lines
    71 71   rir_country(new QStandardItem),
    72 72   rir_dateAllocated(new QStandardItem)
    73 73   {
    74  - this->setForeground(Qt::white);
    75 74   this->setIcon(QIcon(":/img/res/icons/folder.png"));
    76  - 
    77  - info->setForeground(Qt::white);
    78  - emailContacts->setForeground(Qt::white);
    79  - abuseContacts->setForeground(Qt::white);
    80  - rir->setForeground(Qt::white);
    81  - peers->setForeground(Qt::white);
    82  - prefixes->setForeground(Qt::white);
    83 75   
    84 76   info->setWhatsThis(JSON_OBJECT);
    85 77   emailContacts->setWhatsThis(JSON_ARRAY);
    skipped 157 lines
  • ■ ■ ■ ■ ■ ■
    sub3suite/src/items/CIDRItem.h
    skipped 70 lines
    71 71   rir_country(new QStandardItem),
    72 72   rir_dateAllocated(new QStandardItem)
    73 73   {
    74  - this->setForeground(Qt::white);
    75 74   this->setIcon(QIcon(":/img/res/icons/folder.png"));
    76  - 
    77  - info->setForeground(Qt::white);
    78  - emailContacts->setForeground(Qt::white);
    79  - abuseContacts->setForeground(Qt::white);
    80  - rir->setForeground(Qt::white);
    81  - asns->setForeground(Qt::white);
    82 75   
    83 76   info->setWhatsThis(JSON_OBJECT);
    84 77   emailContacts->setWhatsThis(JSON_ARRAY);
    skipped 121 lines
  • ■ ■ ■ ■ ■ ■
    sub3suite/src/items/DNSItem.h
    skipped 39 lines
    40 40   TXT(new QStandardItem("TXT")),
    41 41   SRV(new QStandardItem("SRV"))
    42 42   {
    43  - this->setForeground(Qt::white);
    44 43   this->setIcon(QIcon(":/img/res/icons/folder.png"));
    45  - 
    46  - A->setForeground(Qt::white);
    47  - AAAA->setForeground(Qt::white);
    48  - CNAME->setForeground(Qt::white);
    49  - NS->setForeground(Qt::white);
    50  - MX->setForeground(Qt::white);
    51  - TXT->setForeground(Qt::white);
    52  - SRV->setForeground(Qt::white);
    53 44   
    54 45   A->setWhatsThis(JSON_ARRAY);
    55 46   AAAA->setWhatsThis(JSON_ARRAY);
    skipped 137 lines
  • ■ ■ ■ ■ ■ ■
    sub3suite/src/items/EmailItem.h
    skipped 37 lines
    38 38   disposable(new QStandardItem),
    39 39   deliverable(new QStandardItem)
    40 40   {
    41  - this->setForeground(Qt::white);
    42 41   this->setIcon(QIcon(":/img/res/icons/folder.png"));
    43 42   
    44  - info->setForeground(Qt::white);
    45 43   info->setIcon(QIcon(":/img/res/icons/folder2.png"));
    46 44   
    47 45   info->appendRow({new QStandardItem("Domain"), domain});
    skipped 64 lines
  • ■ ■ ■ ■ ■ ■
    sub3suite/src/items/IPItem.h
    skipped 96 lines
    97 97   privacyInfo_abuser(new QStandardItem),
    98 98   privacyInfo_threat(new QStandardItem)
    99 99   {
    100  - this->setForeground(Qt::white);
    101 100   this->setIcon(QIcon(":/img/res/icons/folder.png"));
    102  - 
    103  - info->setForeground(Qt::white);
    104  - asnInfo->setForeground(Qt::white);
    105  - companyInfo->setForeground(Qt::white);
    106  - privacyInfo->setForeground(Qt::white);
    107  - domains->setForeground(Qt::white);
    108 101   
    109 102   info->setWhatsThis(JSON_OBJECT);
    110 103   asnInfo->setWhatsThis(JSON_OBJECT);
    skipped 217 lines
  • ■ ■ ■ ■ ■ ■
    sub3suite/src/items/MXItem.h
    skipped 30 lines
    31 31   ip(new QStandardItem("IPs")),
    32 32   domains(new QStandardItem("Domains"))
    33 33   {
    34  - this->setForeground(Qt::white);
    35 34   this->setIcon(QIcon(":/img/res/icons/folder.png"));
    36  - 
    37  - ip->setForeground(Qt::white);
    38  - domains->setForeground(Qt::white);
    39 35   
    40 36   ip->setWhatsThis(JSON_ARRAY);
    41 37   domains->setWhatsThis(JSON_ARRAY);
    skipped 52 lines
  • ■ ■ ■ ■ ■ ■
    sub3suite/src/items/NSItem.h
    skipped 30 lines
    31 31   ip(new QStandardItem("IPs")),
    32 32   domains(new QStandardItem("Domains"))
    33 33   {
    34  - this->setForeground(Qt::white);
    35 34   this->setIcon(QIcon(":/img/res/icons/folder.png"));
    36  - 
    37  - ip->setForeground(Qt::white);
    38  - domains->setForeground(Qt::white);
    39 35   
    40 36   ip->setWhatsThis(JSON_ARRAY);
    41 37   domains->setWhatsThis(JSON_ARRAY);
    skipped 54 lines
  • ■ ■ ■ ■ ■ ■
    sub3suite/src/items/RawItem.h
    skipped 24 lines
    25 25  public:
    26 26   RAW(): QStandardItem()
    27 27   {
    28  - this->setForeground(Qt::white);
    29 28   this->setIcon(QIcon(":/img/res/icons/folder.png"));
    30 29   }
    31 30   ~RAW()
    skipped 42 lines
    74 73   QStringList keys = object.keys();
    75 74   if(item != this){
    76 75   item->setWhatsThis(JSON_OBJECT);
    77  - item->setForeground(Qt::white);
    78 76   item->setIcon(QIcon(":/img/res/icons/folder2.png"));
    79 77   }
    80 78   foreach(const QString &key, keys)
    skipped 31 lines
    112 110   int count = 0;
    113 111   if(item != this){
    114 112   item->setWhatsThis(JSON_ARRAY);
    115  - item->setForeground(Qt::white);
    116 113   item->setIcon(QIcon(":/img/res/icons/folder2.png"));
    117 114   }
    118 115   foreach(const QJsonValue &value, array)
    skipped 48 lines
  • ■ ■ ■ ■ ■ ■
    sub3suite/src/items/SSLItem.h
    skipped 54 lines
    55 55   key_type(new QStandardItem),
    56 56   key_algorithm(new QStandardItem)
    57 57   {
    58  - this->setForeground(Qt::white);
    59 58   this->setIcon(QIcon(":/img/res/icons/folder.png"));
    60  - 
    61  - info->setForeground(Qt::white);
    62  - fingerprint->setForeground(Qt::white);
    63  - issuer->setForeground(Qt::white);
    64  - validity->setForeground(Qt::white);
    65  - subject->setForeground(Qt::white);
    66  - key->setForeground(Qt::white);
    67  - subjectAltNames->setForeground(Qt::white);
    68 59   
    69 60   info->setWhatsThis(JSON_OBJECT);
    70 61   fingerprint->setWhatsThis(JSON_OBJECT);
    skipped 182 lines
  • ■ ■ ■ ■ ■
    sub3suite/src/items/URLItem.h
    skipped 11 lines
    12 12   QString url;
    13 13   QString banner;
    14 14   QString content_type;
     15 + QByteArray document;
     16 + 
    15 17   int status_code;
    16 18  };
    17 19  }
    skipped 17 lines
    35 37   QStandardItem *content_type;
    36 38   QStandardItem *status_code;
    37 39   
     40 + QByteArray document;
     41 + 
    38 42   /* summary */
    39 43   QString last_modified;
    40 44   QString comment;
    skipped 3 lines
    44 48   banner->setText(url.banner);
    45 49   content_type->setText(url.content_type);
    46 50   status_code->setText(QString::number(url.status_code));
     51 + document = url.document;
    47 52   
    48 53   /* last modified */
    49 54   last_modified = QDate::currentDate().toString();
    skipped 12 lines
  • ■ ■ ■ ■ ■
    sub3suite/src/main.cpp
    skipped 115 lines
    116 116   }
    117 117  };
    118 118   
     119 +namespace s3s {
     120 + bool is_dark_theme = false;
     121 + bool is_light_theme = false;
     122 + int font_size = 0;
     123 +}
     124 + 
    119 125  int main(int argc, char *argv[])
    120 126  {
    121 127   /* dpi scalling */
    skipped 47 lines
    169 175   registerMetaTypes();
    170 176   
    171 177   /* setting font */
    172  -#if defined(Q_OS_LINUX)
    173  - if(qApp->desktop()->physicalDpiX() == 112 && qApp->desktop()->logicalDpiX() == 96)
     178 + switch (CONFIG.value(CFG_VAL_FONT).toInt()) {
     179 + case 11:
    174 180   {
    175 181   QFont font = qApp->font();
    176 182   font.setPixelSize(11);
    177 183   qApp->setFont(font);
     184 + s3s::font_size = 11;
    178 185   }
    179  -#endif
     186 + break;
     187 + case 12:
     188 + {
     189 + QFont font = qApp->font();
     190 + font.setPixelSize(12);
     191 + qApp->setFont(font);
     192 + s3s::font_size = 12;
     193 + }
     194 + break;
     195 + default:
     196 + s3s::font_size = 0;
     197 + break;
     198 + }
    180 199   
    181 200   /* setting stylesheets */
    182  - QFile stylesheet(":/themes/res/themes/light.css");
     201 + QFile stylesheet;
     202 + if(CONFIG.value(CFG_VAL_THEME).toString() == "dark"){
     203 + stylesheet.setFileName(":/themes/res/themes/default.css");
     204 + s3s::is_dark_theme = true;
     205 + }
     206 + if(CONFIG.value(CFG_VAL_THEME).toString() == "light"){
     207 + stylesheet.setFileName(":/themes/res/themes/light.css");
     208 + s3s::is_light_theme = true;
     209 + }
     210 + 
    183 211   if(stylesheet.open(QFile::ReadOnly)){
    184 212   qApp->setStyleSheet(QLatin1String(stylesheet.readAll()));
    185 213   stylesheet.close();
    skipped 39 lines
  • ■ ■ ■ ■ ■ ■
    sub3suite/src/models/ExplorerModel.cpp
    skipped 55 lines
    56 56   ///
    57 57   QFont font("Segoe UI", 9, QFont::Bold);
    58 58   project->setFont(font);
    59  - project->setForeground(Qt::white);
    60 59   project->setIcon(QIcon(":/img/res/icons/project.png"));
    61 60   active->setFont(font);
    62  - active->setForeground(Qt::white);
    63 61   active->setIcon(QIcon(":/img/res/icons/gear.png"));
    64 62   passive->setFont(font);
    65  - passive->setForeground(Qt::white);
    66 63   passive->setIcon(QIcon(":/img/res/icons/gear.png"));
    67 64   enums->setFont(font);
    68  - enums->setForeground(Qt::white);
    69 65   enums->setIcon(QIcon(":/img/res/icons/gear.png"));
    70 66   custom->setFont(font);
    71  - custom->setForeground(Qt::white);
    72 67   custom->setIcon(QIcon(":/img/res/icons/gear.png"));
    73 68   
    74 69   activeHost->setIcon(QIcon(":/img/res/icons/domain.png"));
    skipped 32 lines
    107 102   enumSSL->setIcon(QIcon(":/img/res/icons/ssl.png"));
    108 103   enumEmail->setIcon(QIcon(":/img/res/icons/email.png"));
    109 104   raw->setIcon(QIcon(":/img/res/icons/raw.png"));
    110  - 
    111  - ///
    112  - /// setting foreground
    113  - ///
    114  - activeHost->setForeground(Qt::white);
    115  - activeWildcard->setForeground(Qt::white);
    116  - activeDNS->setForeground(Qt::white);
    117  - activeA->setForeground(Qt::white);
    118  - activeAAAA->setForeground(Qt::white);
    119  - activeNS->setForeground(Qt::white);
    120  - activeMX->setForeground(Qt::white);
    121  - activeTXT->setForeground(Qt::white);
    122  - activeCNAME->setForeground(Qt::white);
    123  - activeSRV->setForeground(Qt::white);
    124  - activeSSL->setForeground(Qt::white);
    125  - activeSSL_sha1->setForeground(Qt::white);
    126  - activeSSL_sha256->setForeground(Qt::white);
    127  - activeSSL_altNames->setForeground(Qt::white);
    128  - activeURL->setForeground(Qt::white);
    129  - passiveSubdomain->setForeground(Qt::white);
    130  - passiveSubdomainIp->setForeground(Qt::white);
    131  - passiveA->setForeground(Qt::white);
    132  - passiveAAAA->setForeground(Qt::white);
    133  - passiveCIDR->setForeground(Qt::white);
    134  - passiveNS->setForeground(Qt::white);
    135  - passiveMX->setForeground(Qt::white);
    136  - passiveTXT->setForeground(Qt::white);
    137  - passiveCNAME->setForeground(Qt::white);
    138  - passiveEmail->setForeground(Qt::white);
    139  - passiveURL->setForeground(Qt::white);
    140  - passiveASN->setForeground(Qt::white);
    141  - passiveSSL->setForeground(Qt::white);
    142  - enumIP->setForeground(Qt::white);
    143  - enumASN->setForeground(Qt::white);
    144  - enumCIDR->setForeground(Qt::white);
    145  - enumNS->setForeground(Qt::white);
    146  - enumMX->setForeground(Qt::white);
    147  - enumSSL->setForeground(Qt::white);
    148  - enumEmail->setForeground(Qt::white);
    149  - raw->setForeground(Qt::white);
    150 105   
    151 106   ///
    152 107   /// appending items...
    skipped 50 lines
  • ■ ■ ■ ■ ■
    sub3suite/src/modules/active/URLScanner.cpp
    skipped 42 lines
    43 43   url.status_code = reply->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt();
    44 44   url.banner = reply->header(QNetworkRequest::ServerHeader).toString();
    45 45   url.content_type = reply->header(QNetworkRequest::ContentTypeHeader).toString();
     46 + url.document = reply->readAll();
    46 47   emit scanResult(url);
    47 48   }
    48 49   break;
    skipped 56 lines
  • ■ ■ ■ ■ ■ ■
    sub3suite/src/project/Project.cpp
    skipped 5 lines
    6 6  #include <QJsonObject>
    7 7  #include <QJsonDocument>
    8 8   
     9 +#include "src/utils/Config.h"
     10 + 
    9 11   
    10 12  Project::Project(QWidget *parent, ProjectModel *projectModel) :QWidget(parent),
    11 13   ui(new Ui::Project),
    skipped 87 lines
    99 101   << static_cast<int>((this->width() * 0.20)));
    100 102   
    101 103   m_jsonHighlighter = new JsonSyntaxHighlighter(ui->plainTextEditJson->document());
     104 + if(s3s::is_dark_theme)
     105 + m_jsonHighlighter->forDarkTheme();
     106 + if(s3s::is_light_theme)
     107 + m_jsonHighlighter->forLightTheme();
    102 108  }
    103 109   
    104 110  void Project::init_menubar_tree(){
    skipped 118 lines
  • ■ ■ ■ ■ ■ ■
    sub3suite/src/project/Project.ui
    skipped 55 lines
    56 56   </property>
    57 57   <property name="font">
    58 58   <font>
    59  - <weight>75</weight>
    60  - <bold>true</bold>
     59 + <weight>50</weight>
     60 + <bold>false</bold>
    61 61   </font>
    62 62   </property>
    63 63   <property name="tabSpacing">
    skipped 30 lines
    94 94   <font>
    95 95   <family>MS Shell Dlg 2</family>
    96 96   <pointsize>8</pointsize>
    97  - <weight>75</weight>
    98  - <bold>true</bold>
     97 + <weight>50</weight>
     98 + <bold>false</bold>
    99 99   </font>
    100 100   </property>
    101 101   <property name="editTriggers">
    102 102   <set>QAbstractItemView::NoEditTriggers</set>
     103 + </property>
     104 + <property name="alternatingRowColors">
     105 + <bool>false</bool>
    103 106   </property>
    104 107   <property name="indentation">
    105 108   <number>15</number>
    skipped 324 lines
    430 433   </property>
    431 434   <property name="font">
    432 435   <font>
    433  - <weight>75</weight>
    434  - <bold>true</bold>
     436 + <weight>50</weight>
     437 + <bold>false</bold>
    435 438   </font>
    436 439   </property>
    437 440   <property name="tabSpacing">
    skipped 4 lines
    442 445   <rect>
    443 446   <x>0</x>
    444 447   <y>0</y>
    445  - <width>103</width>
     448 + <width>102</width>
    446 449   <height>411</height>
    447 450   </rect>
    448 451   </property>
    skipped 161 lines
    610 613   <rect>
    611 614   <x>0</x>
    612 615   <y>0</y>
    613  - <width>103</width>
     616 + <width>102</width>
    614 617   <height>411</height>
    615 618   </rect>
    616 619   </property>
    skipped 105 lines
  • ■ ■ ■ ■ ■ ■
    sub3suite/src/utils/Config.h
    skipped 31 lines
    32 32  #define CFG_ENUM "enums"
    33 33   
    34 34  /* general group values */
     35 +#define CFG_VAL_FONT "font"
     36 +#define CFG_VAL_THEME "theme"
    35 37  #define CFG_VAL_THREADS "threads"
    36 38  #define CFG_VAL_TIMEOUT "timeout"
    37 39  #define CFG_VAL_RECORD "record"
    skipped 17 lines
    55 57  #define CFG_WL_TLD "tld_wordlist"
    56 58  #define CFG_WL_TLD_SPECIAL "tld_special_wordlist"
    57 59  #define CFG_WL_SUBSTITUTIONS "wordlist_substitutions"
     60 + 
     61 +namespace s3s {
     62 +extern bool is_dark_theme;
     63 +extern bool is_light_theme;
     64 +extern int font_size;
     65 +}
    58 66   
    59 67  class Config
    60 68  {
    skipped 31 lines
  • ■ ■ ■ ■ ■ ■
    sub3suite/src/utils/JsonSyntaxHighlighter.cpp
    1  -/*
    2  - Copyright 2020-2022 Enock Nicholaus <[email protected]>. All rights reserved.
    3  - Use of this source code is governed by GPL-3.0 LICENSE that can be found in the LICENSE file.
    4  - 
    5  - @brief :
    6  -*/
    7  - 
    8  -#include "JsonSyntaxHighlighter.h"
    9  - 
    10  - 
    11  -JsonSyntaxHighlighter::JsonSyntaxHighlighter(QTextDocument *document) : QSyntaxHighlighter(document)
    12  -{
    13  - HighlightingRule rule;
    14  - 
    15  - /* keys */
    16  - rule.pattern = QRegExp ("(\"[^\"]*\")");
    17  - rule.format.setForeground(Qt::cyan);
    18  - rules.append(rule);
    19  - 
    20  - /* strings */
    21  - rule.pattern = QRegExp(":\\s*([\"](?:[^\"])*[\"])");
    22  - rule.format.setForeground(QColor(220,220,220));
    23  - rules.append(rule);
    24  - 
    25  - /* numbers */
    26  - rule.pattern = QRegExp("([-0-9.]+)(?!([^\"]*\"[\\s]*\\:))");
    27  - rule.format.setForeground(QColor(220,220,220));
    28  - rules.append(rule);
    29  - 
    30  - /* special strings */
    31  - rule.pattern = QRegExp("(true|false|null)(?!\"[^\"]*\")");
    32  - rule.format.setForeground(Qt::magenta);
    33  - rules.append(rule);
    34  -}
    35  - 
    36  -void JsonSyntaxHighlighter::highlightBlock(const QString &text){
    37  - foreach (const HighlightingRule &rule, rules) {
    38  - QRegExp expression(rule.pattern);
    39  - int index = expression.indexIn(text);
    40  - 
    41  - while (index >= 0) {
    42  - index = expression.pos(1);
    43  - int length = expression.cap(1).length();
    44  - setFormat(index, length, rule.format);
    45  - index = expression.indexIn(text, index + length);
    46  - }
    47  - }
    48  -}
    49  - 
  • ■ ■ ■ ■ ■
    sub3suite/src/utils/JsonSyntaxHighlighter.h
    skipped 10 lines
    11 11  #include <QSyntaxHighlighter>
    12 12  #include <QTextCharFormat>
    13 13   
     14 + 
    14 15  class JsonSyntaxHighlighter: public QSyntaxHighlighter{
    15  - public:
    16  - JsonSyntaxHighlighter(QTextDocument *document = nullptr);
     16 +public:
     17 + JsonSyntaxHighlighter(QTextDocument *document = nullptr):
     18 + QSyntaxHighlighter(document) {}
     19 + 
     20 + void forDarkTheme(){
     21 + HighlightingRule rule;
     22 + 
     23 + /* keys */
     24 + rule.pattern = QRegExp ("(\"[^\"]*\")");
     25 + rule.format.setForeground(Qt::cyan);
     26 + rules.append(rule);
     27 + 
     28 + /* numbers */
     29 + rule.pattern = QRegExp("([-0-9.]+)(?!([^\"]*\"[\\s]*\\:))");
     30 + rule.format.setForeground(Qt::green);
     31 + rules.append(rule);
     32 + 
     33 + /* strings */
     34 + rule.pattern = QRegExp(":\\s*([\"](?:[^\"])*[\"])");
     35 + rule.format.setForeground(Qt::white);
     36 + rules.append(rule);
    17 37   
    18  - private:
    19  - struct HighlightingRule{
    20  - QRegExp pattern;
    21  - QTextCharFormat format;
    22  - };
     38 + /* special strings */
     39 + rule.pattern = QRegExp("(true|false|null)(?!\"[^\"]*\")");
     40 + rule.format.setForeground(Qt::magenta);
     41 + rules.append(rule);
     42 + }
    23 43   
    24  - QVector<HighlightingRule> rules;
     44 + void forLightTheme(){
     45 + HighlightingRule rule;
    25 46   
    26  - protected:
    27  - void highlightBlock(const QString &text);
     47 + /* keys */
     48 + rule.pattern = QRegExp ("(\"[^\"]*\")");
     49 + rule.format.setForeground(Qt::blue);
     50 + rules.append(rule);
     51 + 
     52 + /* numbers */
     53 + rule.pattern = QRegExp("([-0-9.]+)(?!([^\"]*\"[\\s]*\\:))");
     54 + rule.format.setForeground(Qt::darkRed);
     55 + rules.append(rule);
     56 + 
     57 + /* strings */
     58 + rule.pattern = QRegExp(":\\s*([\"](?:[^\"])*[\"])");
     59 + rule.format.setForeground(Qt::black);
     60 + rules.append(rule);
     61 + 
     62 + /* special strings */
     63 + rule.pattern = QRegExp("(true|false|null)(?!\"[^\"]*\")");
     64 + rule.format.setForeground(Qt::red);
     65 + rules.append(rule);
     66 + }
     67 + 
     68 +private:
     69 + struct HighlightingRule{
     70 + QRegExp pattern;
     71 + QTextCharFormat format;
     72 + };
     73 + 
     74 + QVector<HighlightingRule> rules;
     75 + 
     76 +protected:
     77 + void highlightBlock(const QString &text){
     78 + foreach (const HighlightingRule &rule, rules) {
     79 + QRegExp expression(rule.pattern);
     80 + int index = expression.indexIn(text);
     81 + 
     82 + while (index >= 0) {
     83 + index = expression.pos(1);
     84 + int length = expression.cap(1).length();
     85 + setFormat(index, length, rule.format);
     86 + index = expression.indexIn(text, index + length);
     87 + }
     88 + }
     89 + }
    28 90  };
    29 91   
    30 92  #endif // JSONSYNTAXHIGHLIGHTER_H
    skipped 1 lines
  • ■ ■ ■ ■ ■ ■
    sub3suite/src/utils/LogsSyntaxHighlighter.cpp
    1  -/*
    2  - Copyright 2020-2022 Enock Nicholaus <[email protected]>. All rights reserved.
    3  - Use of this source code is governed by GPL-3.0 LICENSE that can be found in the LICENSE file.
    4  - 
    5  - @brief :
    6  -*/
    7  - 
    8  -#include "LogsSyntaxHighlighter.h"
    9  - 
    10  - 
    11  -LogsSyntaxHighlighter::LogsSyntaxHighlighter(QTextDocument *document) : QSyntaxHighlighter(document)
    12  -{
    13  - HighlightingRule rule;
    14  - 
    15  - rule.pattern = QRegExp ("(INFO:[^\"]*)");
    16  - rule.format.setForeground(Qt::blue);
    17  - rules.append(rule);
    18  - 
    19  - rule.pattern = QRegExp ("(DEBUG:[^\"]*)");
    20  - rule.format.setForeground(Qt::green);
    21  - rules.append(rule);
    22  - 
    23  - rule.pattern = QRegExp ("(WARNING:[^\"]*)");
    24  - rule.format.setForeground(Qt::yellow);
    25  - rules.append(rule);
    26  - 
    27  - rule.pattern = QRegExp ("(CRITICAL:[^\"]*)");
    28  - rule.format.setForeground(Qt::red);
    29  - rules.append(rule);
    30  - 
    31  - rule.pattern = QRegExp ("(FATAL:[^\"]*)");
    32  - rule.format.setForeground(Qt::red);
    33  - rules.append(rule);
    34  -}
    35  - 
    36  -void LogsSyntaxHighlighter::highlightBlock(const QString &text){
    37  - foreach (const HighlightingRule &rule, rules) {
    38  - QRegExp expression(rule.pattern);
    39  - int index = expression.indexIn(text);
    40  - 
    41  - while (index >= 0) {
    42  - index = expression.pos(1);
    43  - int length = expression.cap(1).length();
    44  - setFormat(index, length, rule.format);
    45  - index = expression.indexIn(text, index + length);
    46  - }
    47  - }
    48  -}
    49  - 
  • ■ ■ ■ ■ ■
    sub3suite/src/utils/LogsSyntaxHighlighter.h
    skipped 12 lines
    13 13   
    14 14   
    15 15  class LogsSyntaxHighlighter: public QSyntaxHighlighter{
    16  - public:
    17  - LogsSyntaxHighlighter(QTextDocument *document = nullptr);
     16 +public:
     17 + LogsSyntaxHighlighter(QTextDocument *document = nullptr):
     18 + QSyntaxHighlighter(document) {}
     19 + 
     20 + void forDarkTheme(){
     21 + HighlightingRule rule;
     22 + 
     23 + rule.pattern = QRegExp ("(INFO:[^\"]*)");
     24 + rule.format.setForeground(Qt::blue);
     25 + rules.append(rule);
     26 + 
     27 + rule.pattern = QRegExp ("(DEBUG:[^\"]*)");
     28 + rule.format.setForeground(Qt::green);
     29 + rules.append(rule);
     30 + 
     31 + rule.pattern = QRegExp ("(WARNING:[^\"]*)");
     32 + rule.format.setForeground(Qt::yellow);
     33 + rules.append(rule);
     34 + 
     35 + rule.pattern = QRegExp ("(CRITICAL:[^\"]*)");
     36 + rule.format.setForeground(Qt::red);
     37 + rules.append(rule);
     38 + 
     39 + rule.pattern = QRegExp ("(FATAL:[^\"]*)");
     40 + rule.format.setForeground(Qt::red);
     41 + rules.append(rule);
     42 + }
     43 + 
     44 + void forLightTheme(){
     45 + HighlightingRule rule;
     46 + 
     47 + rule.pattern = QRegExp ("(INFO:[^\"]*)");
     48 + rule.format.setForeground(Qt::blue);
     49 + rules.append(rule);
     50 + 
     51 + rule.pattern = QRegExp ("(DEBUG:[^\"]*)");
     52 + rule.format.setForeground(Qt::darkGreen);
     53 + rules.append(rule);
     54 + 
     55 + rule.pattern = QRegExp ("(WARNING:[^\"]*)");
     56 + rule.format.setForeground(Qt::darkYellow);
     57 + rules.append(rule);
    18 58   
    19  - private:
    20  - struct HighlightingRule{
    21  - QRegExp pattern;
    22  - QTextCharFormat format;
    23  - };
     59 + rule.pattern = QRegExp ("(CRITICAL:[^\"]*)");
     60 + rule.format.setForeground(Qt::red);
     61 + rules.append(rule);
    24 62   
    25  - QVector<HighlightingRule> rules;
     63 + rule.pattern = QRegExp ("(FATAL:[^\"]*)");
     64 + rule.format.setForeground(Qt::red);
     65 + rules.append(rule);
     66 + }
    26 67   
    27  - protected:
    28  - void highlightBlock(const QString &text);
     68 +private:
     69 + struct HighlightingRule{
     70 + QRegExp pattern;
     71 + QTextCharFormat format;
     72 + };
     73 + 
     74 + QVector<HighlightingRule> rules;
     75 + 
     76 +protected:
     77 + void highlightBlock(const QString &text){
     78 + foreach (const HighlightingRule &rule, rules) {
     79 + QRegExp expression(rule.pattern);
     80 + int index = expression.indexIn(text);
     81 + 
     82 + while (index >= 0) {
     83 + index = expression.pos(1);
     84 + int length = expression.cap(1).length();
     85 + setFormat(index, length, rule.format);
     86 + index = expression.indexIn(text, index + length);
     87 + }
     88 + }
     89 + }
    29 90  };
    30 91   
    31 92  #endif // LOGSSYNTAXHIGHLIGHTER_H
    skipped 1 lines
  • ■ ■ ■ ■ ■ ■
    sub3suite/src/widgets/InputWidget.ui
    skipped 108 lines
    109 109   <property name="editTriggers">
    110 110   <set>QAbstractItemView::DoubleClicked|QAbstractItemView::EditKeyPressed</set>
    111 111   </property>
     112 + <property name="alternatingRowColors">
     113 + <bool>true</bool>
     114 + </property>
    112 115   <property name="selectionMode">
    113 116   <enum>QAbstractItemView::ExtendedSelection</enum>
    114 117   </property>
    skipped 99 lines
  • ■ ■ ■ ■ ■ ■
    sub3suite/sub3suite.pro
    skipped 254 lines
    255 255   src/engines/osint/Osint.cpp \
    256 256   src/project/Project_actions.cpp \
    257 257   src/project/Project_slots.cpp \
    258  - src/utils/JsonSyntaxHighlighter.cpp \
    259  - src/utils/LogsSyntaxHighlighter.cpp \
    260 258   src/utils/UpdateChecker.cpp \
    261 259   src/utils/CrashHandler.cpp \
    262 260   src/widgets/InputWidget.cpp \
    skipped 217 lines
Please wait...
Page is in error, reload to recover