| 572 | |
| 573 | |
| 574 | def format_nuclei_result(text): |
| 575 | texts, results = text.split('\n'), [] |
| 576 | |
| 577 | results = {'info':[], 'low':[], 'medium': [], 'high': [], 'critical': []} |
| 578 | levels = ['info' ,'low', 'medium', 'high', 'critical'] |
| 579 | |
| 580 | for text in texts: |
| 581 | try: |
| 582 | poc, poctype, level, end = text.split(' ', 3) |
| 583 | key = level.replace('[','').replace(']','') |
| 584 | assert (key in levels) |
| 585 | except: |
| 586 | continue |
| 587 | |
| 588 | results[key].append( |
| 589 | '{level} {poc} {poctype} {end}'.format(level=level, poc=poc, poctype=poctype, end=end) |
| 590 | ) |
| 591 | |
| 592 | text = '' |
| 593 | for level in levels[::-1]: |
| 594 | if results.get(level) != []: |
| 595 | text += '\n'.join(results.get(level)) + '\n\n' |
| 596 | |
| 597 | if text == '': |
| 598 | sublime.message_dialog('[waring-nuclei] The result format is not supported! Please read the docs') |
| 599 | return '' |
| 600 | |
| 601 | return text |