From 46cb3d64d07af16bb87fb97b3db30f1efc18bc2a Mon Sep 17 00:00:00 2001 From: ekultek Date: Sun, 26 Nov 2017 10:14:41 -0600 Subject: [PATCH] edited the automatic issue creator so that it will only pull the last 35 lines of the file, along with that it will now tell you the link to your issue if you have anything to add to it --- etc/checksum/md5sum.md5 | 4 ++-- lib/core/settings.py | 22 +++++++++++++++++++++- var/auto_issue/github.py | 35 ++++++++++++++++++++++++++++++++--- 3 files changed, 55 insertions(+), 6 deletions(-) diff --git a/etc/checksum/md5sum.md5 b/etc/checksum/md5sum.md5 index 03e9516..9166b68 100644 --- a/etc/checksum/md5sum.md5 +++ b/etc/checksum/md5sum.md5 @@ -71,11 +71,11 @@ e11185d7dd3d6c94d7f4ddbcfd1d26cc ./lib/header_check/__init__.py 45fc5f5847a3a9909cbd5e0add7b4586 ./lib/core/common.py 1faa2b5dfad6eb538bbfe42942d2a9da ./lib/core/errors.py d41d8cd98f00b204e9800998ecf8427e ./lib/core/__init__.py -db185dc79cdb6baa6c0949788204421c ./lib/core/settings.py +e85aeb86ed1e341c65d3916e80e264f0 ./lib/core/settings.py 9989b7122c79a4cd38be1e00adab5187 ./var/search/__init__.py cd16c7e4eb550b2c8531dee993eb4c2a ./var/search/selenium_search.py 63ba132381a0cc2d7629852bd5e4aa17 ./var/search/pgp_search.py d41d8cd98f00b204e9800998ecf8427e ./var/__init__.py d41d8cd98f00b204e9800998ecf8427e ./var/auto_issue/__init__.py -a12d5ffa2d45347c86e5fab154a89943 ./var/auto_issue/github.py +0c11c16126baf789388a661bbbefb149 ./var/auto_issue/github.py 7f605eefd38c7404660e8266a7a52192 ./var/blackwidow/__init__.py \ No newline at end of file diff --git a/lib/core/settings.py b/lib/core/settings.py index 6905c9b..08a23ac 100644 --- a/lib/core/settings.py +++ b/lib/core/settings.py @@ -46,7 +46,7 @@ CLONE = "https://github.com/ekultek/zeus-scanner.git" ISSUE_LINK = "https://github.com/ekultek/zeus-scanner/issues" # current version -VERSION = "1.2.35".format(PATCH_ID) +VERSION = "1.2.36".format(PATCH_ID) # colors to output depending on the version VERSION_TYPE_COLORS = {"dev": 33, "stable": 92, "other": 30} @@ -1097,3 +1097,23 @@ def get_token(path): n = __get_n(encoded) token = __decode(encoded, int(n)) return token + + +def tails(file_object, last_lines=35): + """ + return the last `n` lines of a file, much like the Unix + tails command + """ + with open(file_object) as file_object: + assert last_lines >= 0 + pos, lines = last_lines+1, [] + while len(lines) <= last_lines: + try: + file_object.seek(-pos, 2) + except IOError: + file_object.seek(0) + break + finally: + lines = list(file_object) + pos *= 2 + return "".join(lines[-last_lines:]) diff --git a/var/auto_issue/github.py b/var/auto_issue/github.py index 2405a26..f000fd6 100644 --- a/var/auto_issue/github.py +++ b/var/auto_issue/github.py @@ -1,3 +1,4 @@ +import re import sys try: import urllib2 # python 2 @@ -6,10 +7,35 @@ except ImportError: import json import platform +import requests +from bs4 import BeautifulSoup + import lib.core.common import lib.core.settings +def find_url(params, search="https://github.com/ekultek/zeus-scanner/issues"): + """ + get the URL that your issue is created at + """ + retval = "https://github.com{}" + href = None + searcher = re.compile(params, re.I) + req = requests.get(search) + status, html = req.status_code, req.content + if status == 200: + split_information = str(html).split("\n") + for i, line in enumerate(split_information): + if searcher.search(line) is not None: + href = split_information[i-1] + if href is not None: + soup = BeautifulSoup(href, "html.parser") + for item in soup.findAll("a"): + link = item.get("href") + return retval.format(link) + return None + + def request_issue_creation(): if not lib.core.settings.get_md5sum(): lib.core.settings.logger.fatal(lib.core.settings.set_color( @@ -60,8 +86,9 @@ def request_issue_creation(): current_log_file = lib.core.settings.get_latest_log_file(lib.core.settings.CURRENT_LOG_FILE_PATH) stacktrace = __extract_stacktrace(current_log_file) identifier = lib.core.settings.create_identifier() - issue_title = "{} ({})".format(stacktrace.split("\n")[-2], identifier) + issue_title = "Unhandled exception ({})".format(identifier) ff_version = lib.core.settings.get_browser_version() + log_file_information = lib.core.settings.tails(current_log_file) issue_data = { "title": issue_title, @@ -78,7 +105,7 @@ def request_issue_creation(): str(stacktrace), str(platform.platform()), " ".join(sys.argv), - open(current_log_file).read() + log_file_information ), } @@ -94,7 +121,9 @@ def request_issue_creation(): urllib2.urlopen(req, timeout=10).read() lib.core.settings.logger.info(lib.core.settings.set_color( "issue has been created successfully with the following name '{}', your unique identifier " - "for this issue is '{}'...".format(issue_title, identifier) + "for this issue is '{}' and the URL to your issue is '{}'...".format( + issue_title, identifier, find_url(identifier) + ) )) except Exception as e: lib.core.settings.logger.exception(lib.core.settings.set_color(