Spaces:
Running on CPU Upgrade
Running on CPU Upgrade
Update backend/utils/pdf_generator.py
Browse files
backend/utils/pdf_generator.py
CHANGED
|
@@ -942,13 +942,15 @@ def generate_scan_pdf(scan, vulnerabilities):
|
|
| 942 |
elements.append(Paragraph(f"<b>Remediation (Finding #{idx}):</b>", styles['Normal']))
|
| 943 |
rem_text_raw = vuln.remediation or "No specific remediation step provided. Follow standard secure coding practices."
|
| 944 |
|
| 945 |
-
|
|
|
|
| 946 |
if not raw_sentences:
|
| 947 |
raw_sentences = [rem_text_raw]
|
| 948 |
|
| 949 |
numbered_rem_html = []
|
| 950 |
step_counter = 1
|
| 951 |
for sent in raw_sentences:
|
|
|
|
| 952 |
clean_sent = re.sub(r'^[0-9]+\.\s*|^[-*•]\s*', '', sent).strip()
|
| 953 |
if clean_sent:
|
| 954 |
if not clean_sent.endswith('.'):
|
|
@@ -961,6 +963,7 @@ def generate_scan_pdf(scan, vulnerabilities):
|
|
| 961 |
elements.append(Paragraph(rem_final_text, normal))
|
| 962 |
elements.append(Spacer(1, 25))
|
| 963 |
|
|
|
|
| 964 |
# --- APPENDIX: REQUIRES MANUAL VERIFICATION (ONLY IF UNCONFIRMED FINDINGS EXIST) ---
|
| 965 |
target_findings_list = vulnerabilities if 'vulnerabilities' in locals() and vulnerabilities is not None else (findings if 'findings' in locals() and findings is not None else getattr(scan, 'vulnerabilities', []))
|
| 966 |
|
|
|
|
| 942 |
elements.append(Paragraph(f"<b>Remediation (Finding #{idx}):</b>", styles['Normal']))
|
| 943 |
rem_text_raw = vuln.remediation or "No specific remediation step provided. Follow standard secure coding practices."
|
| 944 |
|
| 945 |
+
# Split ONLY on newlines — do NOT split on '. ' to avoid breaking numbered steps like '1. Generate DNSSEC keys'
|
| 946 |
+
raw_sentences = [s.strip() for s in rem_text_raw.split('\n') if s.strip()]
|
| 947 |
if not raw_sentences:
|
| 948 |
raw_sentences = [rem_text_raw]
|
| 949 |
|
| 950 |
numbered_rem_html = []
|
| 951 |
step_counter = 1
|
| 952 |
for sent in raw_sentences:
|
| 953 |
+
# Strip leading number markers like '1.' '2.' '-' '*' '•'
|
| 954 |
clean_sent = re.sub(r'^[0-9]+\.\s*|^[-*•]\s*', '', sent).strip()
|
| 955 |
if clean_sent:
|
| 956 |
if not clean_sent.endswith('.'):
|
|
|
|
| 963 |
elements.append(Paragraph(rem_final_text, normal))
|
| 964 |
elements.append(Spacer(1, 25))
|
| 965 |
|
| 966 |
+
|
| 967 |
# --- APPENDIX: REQUIRES MANUAL VERIFICATION (ONLY IF UNCONFIRMED FINDINGS EXIST) ---
|
| 968 |
target_findings_list = vulnerabilities if 'vulnerabilities' in locals() and vulnerabilities is not None else (findings if 'findings' in locals() and findings is not None else getattr(scan, 'vulnerabilities', []))
|
| 969 |
|