45 lines
1.3 KiB
Python
45 lines
1.3 KiB
Python
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, interface, folder_path,
|
|
f"{self.base_port + self.idx}", 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"})
|