123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960 |
- from jinja2 import Environment, FileSystemLoader
- from modules.BootstrapBase import BootstrapBase
- from pathlib import Path
- import os
- import sys
- import time
- class BootstrapClamd(BootstrapBase):
- def bootstrap(self):
- # Skip Clamd if set
- if self.isYes(os.getenv("SKIP_CLAMD", "")):
- print("SKIP_CLAMD is set, skipping ClamAV startup...")
- time.sleep(365 * 24 * 60 * 60)
- sys.exit(1)
- # Connect to MySQL
- self.connect_mysql()
- print("Cleaning up tmp files...")
- tmp_files = Path("/var/lib/clamav").glob("clamav-*.tmp")
- for tmp_file in tmp_files:
- try:
- self.remove(tmp_file)
- print(f"Removed: {tmp_file}")
- except Exception as e:
- print(f"Failed to remove {tmp_file}: {e}")
- self.create_dir("/run/clamav")
- self.create_dir("/var/lib/clamav")
- # Setup Jinja2 Environment and load vars
- self.env = Environment(
- loader=FileSystemLoader([
- '/service_config/custom_templates',
- '/service_config/config_templates'
- ]),
- keep_trailing_newline=True,
- lstrip_blocks=True,
- trim_blocks=True
- )
- extra_vars = {
- }
- self.env_vars = self.prepare_template_vars('/service_config/overwrites.json', extra_vars)
- print("Set Timezone")
- self.set_timezone()
- print("Render config")
- self.render_config("/service_config")
- # Fix permissions
- self.set_owner("/var/lib/clamav", "clamav", "clamav", recursive=True)
- self.set_owner("/run/clamav", "clamav", "clamav", recursive=True)
- self.set_permissions("/var/lib/clamav", 0o755)
- for item in Path("/var/lib/clamav").glob("*"):
- self.set_permissions(item, 0o644)
- self.set_permissions("/run/clamav", 0o750)
- # Copying to /etc/clamav to expose file as-is to administrator
- self.copy_file("/var/lib/clamav/whitelist.ign2", "/etc/clamav/whitelist.ign2")
|