in src/init/iptables-rules/setup-iptables.py [0:0]
def main():
logger = logging.getLogger()
logging.basicConfig(stream=sys.stdout, level=logging.DEBUG)
args = parse_args()
log_args(logger, args)
if args.clear_mount_paths:
logging.info(f"Clearing specified mount paths: {args.clear_mount_paths}")
for mount_path in args.clear_mount_paths:
try:
os.remove(f"{mount_path}/*")
except FileNotFoundError:
pass
except Exception as e:
logger.error(f"Failed to clear mount path {mount_path}. Error: {e}")
raise
if args.create_directories:
logging.info(f"Creating specified directories: {args.create_directories}")
for directory in args.create_directories:
try:
os.makedirs(directory, exist_ok=True)
os.chmod(directory, 0o777)
except FileExistsError:
pass
except Exception as e:
logger.error(f"Failed to create directory {directory}. Error: {e}")
raise
logger.info("Generating config files...")
iptables_config_file = "setup-iptables.sh"
generate_config(
template_path,
"setup-iptables.sh.j2",
iptables_config_file,
allowed_ips=args.allowed_ips,
enable_dns=args.enable_dns,
dns_port=args.dns_port,
)
os.chmod(iptables_config_file, 0o755)
try:
proc = subprocess.run(
f"bash {iptables_config_file}",
shell=True,
stdout=subprocess.PIPE,
stderr=subprocess.STDOUT,
check=True,
)
logger.info("Successfully executed iptables rules.")
logger.info(f"Output: {proc.stdout}")
except subprocess.CalledProcessError as e:
logger.error(f"Failed to launch subprocess. Error: {e}")
logger.error(f"Output: {e.output}")
logger.error(f"Error: {e.stderr}")
raise