import subprocess
import os
import random
# import time
import signal
# import tempfile
import dataset
import psutil
TOR_CONFIGS_DIR = os.path.join(os.path.dirname(__file__), "tor_configs")
TOR_EXE = r"P:\Dropbox\!DEV\Tor\tor.exe"
TOR_CONFIG = """
SocksPort {} #9050
ControlPort {} #9051
CookieAuthentication 1
"""
def run_tor(dir_path, config, exe_path):
socks_port = str(random.randint(10000, 65535))
control_port = str(random.randint(10000, 65535))
config_file = config.format(socks_port, control_port)
file_name = os.path.join(dir_path, socks_port) + ".txt"
with open(file_name, "w") as f:
f.write(config_file)
fullCmd = ' '.join([exe_path, "-f", file_name])
proc = subprocess.Popen(fullCmd)
return {
"process": proc,
"socks_port": socks_port,
"control_port": control_port,
"proxies": {
'http': 'socks5://127.0.0.1:{}'.format(socks_port),
'https': 'socks5://127.0.0.1:{}'.format(socks_port)
}
}
def stop_tor(settings):
proc = settings["process"]
if not proc:
return False
process = psutil.Process(proc.pid)
for proc in process.children(recursive=True):
proc.kill()
process.kill()