|
19 | 19 | SMTP_PORT = 25
|
20 | 20 | SMTP_TIMEOUT = 30
|
21 | 21 | FROM = "regressiontest@sqlmap.org"
|
22 |
| -TO = "dev@sqlmap.org" |
23 |
| -SUBJECT = "Regression test results on on %s" % TIME |
| 22 | +#TO = "dev@sqlmap.org" |
| 23 | +TO = "bernardo.damele@gmail.com" |
| 24 | +SUBJECT = "Regression test results on %s" % TIME |
24 | 25 | CONTENT = ""
|
25 | 26 | TEST_COUNTS = []
|
| 27 | +ATTACHMENTS = {} |
26 | 28 |
|
27 | 29 | command_line = "cd ../../ ; rm -f $REGRESSION_FILE ; python sqlmap.py --live-test --run-case 'Invalid logic'"
|
28 | 30 | proc = subprocess.Popen(command_line, shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
|
29 | 31 | proc.wait()
|
30 | 32 | stdout, stderr = proc.communicate()
|
31 |
| -failed_tests = re.findall("running live test case: (.+?) \((\d+)\/\d+\)[\r]*\n(.+?)test failed (.*?)at parsing item: (.+) \- scan folder is (\/.+)[\r]*\n", stdout, re.I | re.M) |
| 33 | +failed_tests = re.findall("running live test case: (.+?) \((\d+)\/\d+\)[\r]*\n.+test failed (at parsing item \"(.+)\" )?\- scan folder: (\/.+) \- traceback: (.*?)( - SQL injection not detected)?[\r]*\n", stdout, re.M) |
32 | 34 |
|
33 | 35 | for failed_test in failed_tests:
|
34 | 36 | title = failed_test[0]
|
35 |
| - test_count = failed_test[1] |
36 |
| - error = True if "the test did not identify the SQL injection" in failed_test[2] else False |
37 |
| - traceback = failed_test[2] or None |
38 |
| - parse = failed_test[3] |
| 37 | + test_count = int(failed_test[1]) |
| 38 | + parse = failed_test[3] if failed_test[3] else None |
39 | 39 | output_folder = failed_test[4]
|
| 40 | + traceback = failed_test[5] |
| 41 | + detection = True if failed_test[6] else False |
40 | 42 |
|
41 | 43 | TEST_COUNTS.append(test_count)
|
42 | 44 |
|
43 | 45 | console_output_fd = codecs.open(os.path.join(output_folder, "console_output"), "rb", "utf8")
|
44 | 46 | console_output = console_output_fd.read()
|
45 | 47 | console_output_fd.close()
|
46 | 48 |
|
47 |
| - if error is False: |
48 |
| - log_fd = codecs.open(os.path.join(output_folder, "debiandev", "log"), "rb", "utf8") |
49 |
| - log = log_fd.read() |
50 |
| - log_fd.close() |
| 49 | + ATTACHMENTS[test_count] = str(console_output) |
| 50 | + |
| 51 | + log_fd = codecs.open(os.path.join(output_folder, "debiandev", "log"), "rb", "utf8") |
| 52 | + log = log_fd.read() |
| 53 | + log_fd.close() |
51 | 54 |
|
52 | 55 | if traceback:
|
53 | 56 | traceback_fd = codecs.open(os.path.join(output_folder, "traceback"), "rb", "utf8")
|
54 | 57 | traceback = traceback_fd.read()
|
55 | 58 | traceback_fd.close()
|
56 | 59 |
|
57 |
| - CONTENT += "Failed test case '%s' at parsing: %s:\n\n" % (title, parse) |
| 60 | + CONTENT += "Failed test case '%s'" % title |
58 | 61 |
|
59 |
| - if error is False: |
| 62 | + if parse: |
| 63 | + CONTENT += " at parsing: %s:\n\n" % parse |
60 | 64 | CONTENT += "### LOG FILE:\n\n"
|
61 | 65 | CONTENT += "%s\n" % log
|
62 |
| - else: |
63 |
| - CONTENT += "### CONSOLE OUTPUT\n\n" |
64 |
| - CONTENT += "%s\n" % str(console_output) |
| 66 | + elif not detection: |
| 67 | + CONTENT += " - SQL injection not detected\n\n" |
65 | 68 |
|
66 | 69 | if traceback:
|
67 |
| - CONTENT += "### TRACEBACK:\n" |
| 70 | + CONTENT += "### TRACEBACK:\n\n" |
68 | 71 | CONTENT += "%s\n" % str(traceback)
|
69 | 72 |
|
70 | 73 | CONTENT += "\n#######################################\n\n"
|
|
76 | 79 | msg["From"] = FROM
|
77 | 80 | msg["To"] = TO
|
78 | 81 |
|
| 82 | + for test_count, attachment in ATTACHMENTS: |
| 83 | + attachment = MIMEText(attachment) |
| 84 | + attachment.add_header('Content-Disposition', 'attachment', filename="%d.console_output.txt" % test_count) |
| 85 | + msg.attach(attachment) |
| 86 | + |
79 | 87 | s = smtplib.SMTP(host=SMTP_SERVER, port=SMTP_PORT, timeout=SMTP_TIMEOUT)
|
80 | 88 | #s.set_debuglevel(1)
|
81 | 89 | s.sendmail(FROM, TO, msg.as_string())
|
|
0 commit comments