import json
import os
import datetime
import shutil
import argparse
def backup_response_headers(log_file, backup_dir, override_file):
"""
Backs up response headers from a log file, allowing for manual overrides.
Args:
log_file (str): Path to the log file containing response headers.
backup_dir (str): Directory to store the backup files.
override_file (str): Path to a JSON file containing header overrides.
"""
# Create backup directory if it doesn't exist
os.makedirs(backup_dir, exist_ok=True)
try:
with open(log_file, 'r') as f:
lines = f.readlines()
except FileNotFoundError:
print(f"Error: Log file not found: {log_file}")
return
header_data = {}
for line in lines:
try:
header_name, header_value = line.strip().split(': ', 1)
header_data[header_name] = header_value
except ValueError:
# Ignore lines that don't have the expected format
pass
# Load overrides from JSON file
try:
with open(override_file, 'r') as f:
overrides = json.load(f)
except FileNotFoundError:
print(f"Warning: Override file not found: {override_file}. Continuing without overrides.")
overrides = {}
except json.JSONDecodeError:
print(f"Warning: Invalid JSON in override file: {override_file}. Continuing without overrides.")
overrides = {}
# Filter headers based on overrides
backup_headers = {}
for header, value in header_data.items():
if header in overrides:
backup_headers[header] = overrides[header]
else:
backup_headers[header] = value
# Generate backup filename
timestamp = datetime.datetime.now().strftime("%Y%m%d_%H%M%S")
backup_filename = os.path.join(backup_dir, f"response_headers_{timestamp}.json")
# Save backup to JSON file
try:
with open(backup_filename, 'w') as f:
json.dump(backup_headers, f, indent=4)
print(f"Backup created: {backup_filename}")
except Exception as e:
print(f"Error writing backup file: {e}")
if __name__ == "__main__":
parser = argparse.ArgumentParser(description="Backup response headers from a log file.")
parser.add_argument("log_file", help="Path to the log file.")
parser.add_argument("backup_dir", help="Directory to store the backup files.")
parser.add_argument("override_file", help="Path to the JSON file containing header overrides.")
args = parser.parse_args()
backup_response_headers(args.log_file, args.backup_dir, args.override_file)
Add your comment