#!/usr/bin/python3 # # container.py # Linux Container (e.g. Docker) plugin for Caterpillar Proxy # # Caterpillar Proxy - The simple and parasitic web proxy with SPAM filter # Namyheon Go (Catswords Research) # https://github.com/gnh1201/caterpillar # Created at: 2024-03-04 # Updated at: 2024-07-06 # import docker from base import Extension, Logger logger = Logger("Container") class Container(Extension): def __init__(self): self.type = "rpcmethod" self.method = "container_init" self.exported_methods = ["container_run", "container_stop"] # docker self.client = docker.from_env() def dispatch(self, type, id, params, conn): logger.info("[*] Greeting! dispatch") conn.send(b"Greeting! dispatch") def container_run(self, type, id, params, conn): devices = params["devices"] image = params["image"] devices = params["devices"] name = params["name"] environment = params["environment"] volumes = params["volumes"] container = self.client.containers.run( image, devices=devices, name=name, volumes=volumes, environment=environment, detach=True, ) container.logs() logger.info("[*] Running...") def container_stop(self, type, id, params, conn): name = params["name"] container = self.client.containers.get(name) container.stop() logger.info("[*] Stopped")