|
19 | 19 | SMTP_PORT = 25 |
20 | 20 | SMTP_TIMEOUT = 30 |
21 | 21 | |
22 | | - |
23 | | -SUBJECT = "Regression test results on on %s" % TIME |
| 22 | + |
| 23 | + |
| 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