import os from openvpn import Openvpn import asyncio class OManager: def __init__(self, base_folder, base_port=8001): self.base_folder = base_folder self.base_port = base_port self.ops = [] self.idx = 0 def new_op(self, cfg_fp, name=None, additional_cfg={}): interface = f"tun{self.idx}" folder_path = os.path.join(self.base_folder, f"session{self.idx}") if not os.path.isdir(folder_path): os.makedirs(folder_path) if not name: name = f"openvpn-{self.idx}" op = Openvpn(cfg_fp, self.idx, folder_path, f"{self.base_port + self.idx}", "script.sh.template", name=name, additional_cfg=additional_cfg) self.ops.append(op) self.idx += 1 return op def start_op(self, idx): self.ops[idx].start() def get_all_ops(self): return self.ops def stop_all(self): loop = asyncio.get_event_loop() for op in self.ops: loop.create_task(op.stop()) if __name__ == "__main__": folder_fp = "/home/mantao/Desktop/t/" cfg_fp = "/home/mantao/Desktop/t/TCP_Files/UK2-TCP.ovpn" om = OManager(folder_fp) om.new_op(cfg_fp, "op1", { "auth-user-pass": "/home/mantao/Desktop/t/fast.txt"})