Improved torcontrol formatting and efficency
parent
e14955cb6b
commit
3473c5e36a
|
@ -7,7 +7,6 @@ import subprocess
|
|||
import signal
|
||||
import time
|
||||
import multiprocessing
|
||||
import platform # For windows sigkill workaround
|
||||
|
||||
from onionrtypes import BooleanSuccessState
|
||||
import logger
|
||||
|
@ -129,28 +128,26 @@ class NetController:
|
|||
return True
|
||||
|
||||
def killTor(self):
|
||||
"""
|
||||
Properly kill tor based on pid saved to file
|
||||
"""
|
||||
|
||||
"""Properly kill tor based on pid saved to file."""
|
||||
try:
|
||||
pid = open(self.dataDir + 'torPid.txt', 'r')
|
||||
pidN = pid.read()
|
||||
pid.close()
|
||||
with open(self.dataDir + 'torPid.txt', 'r') as torPid:
|
||||
pidN = torPid.read()
|
||||
except FileNotFoundError:
|
||||
return
|
||||
|
||||
try:
|
||||
int(pidN)
|
||||
except ValueError:
|
||||
return
|
||||
|
||||
try:
|
||||
try:
|
||||
# Extra int()
|
||||
os.kill(int(pidN), signal.SIGTERM)
|
||||
except PermissionError:
|
||||
# seems to happen on win 10
|
||||
pass
|
||||
except ValueError:
|
||||
# Happens if int() check is not valid
|
||||
logger.error("torPid.txt contained invalid integer. " +
|
||||
"This indicates corruption " +
|
||||
"and should not be bypassed for security reasons")
|
||||
return
|
||||
os.remove(self.dataDir + 'torPid.txt')
|
||||
except ProcessLookupError:
|
||||
pass
|
||||
|
@ -162,10 +159,6 @@ class NetController:
|
|||
except KeyboardInterrupt:
|
||||
pass
|
||||
|
||||
if 'windows' == platform.system().lower():
|
||||
os.system(f'taskkill /PID {pidN} /F')
|
||||
time.sleep(0.5)
|
||||
return
|
||||
try:
|
||||
os.kill(int(pidN), signal.SIGKILL)
|
||||
except (ProcessLookupError, PermissionError):
|
||||
|
|
|
@ -5,6 +5,7 @@ Generate a generate a torrc file for our Onionr instance
|
|||
import base64
|
||||
import os
|
||||
import subprocess
|
||||
from typing import TYPE_CHECKING
|
||||
|
||||
from .. import getopenport
|
||||
from . import customtorrc
|
||||
|
@ -12,6 +13,10 @@ from . import addbridges
|
|||
from . import torbinary
|
||||
from utils import identifyhome
|
||||
import config
|
||||
|
||||
if TYPE_CHECKING:
|
||||
from netcontroller import NetController
|
||||
from onionrtypes import LoopBackIP
|
||||
"""
|
||||
This program is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
|
@ -30,7 +35,8 @@ import config
|
|||
add_bridges = addbridges.add_bridges
|
||||
|
||||
|
||||
def generate_torrc(net_controller, api_server_ip):
|
||||
def generate_torrc(net_controller: 'NetController',
|
||||
api_server_ip: 'LoopBackIP'):
|
||||
"""Generate a torrc file for our tor instance."""
|
||||
socks_port = net_controller.socksPort
|
||||
hs_port = net_controller.hsPort
|
||||
|
@ -43,13 +49,14 @@ def generate_torrc(net_controller, api_server_ip):
|
|||
Set the Tor control password.
|
||||
Meant to make it harder to manipulate our Tor instance
|
||||
"""
|
||||
plaintext = base64.b85encode(os.urandom(50)).decode()
|
||||
plaintext = base64.b85encode(
|
||||
os.urandom(50)).decode()
|
||||
config.set('tor.controlpassword', plaintext, savefile=True)
|
||||
config.set('tor.socksport', socks_port, savefile=True)
|
||||
|
||||
controlPort = getopenport.get_open_port()
|
||||
control_port = getopenport.get_open_port()
|
||||
|
||||
config.set('tor.controlPort', controlPort, savefile=True)
|
||||
config.set('tor.controlPort', control_port, savefile=True)
|
||||
|
||||
hashedPassword = subprocess.Popen([torbinary.tor_binary(),
|
||||
'--hash-password',
|
||||
|
@ -66,7 +73,7 @@ DataDirectory """ + home_dir + """tordata/
|
|||
CookieAuthentication 1
|
||||
KeepalivePeriod 40
|
||||
CircuitsAvailableTimeout 86400
|
||||
ControlPort """ + str(controlPort) + """
|
||||
ControlPort """ + str(control_port) + """
|
||||
HashedControlPassword """ + str(password) + """
|
||||
"""
|
||||
if config.get('general.security_level', 1) == 0:
|
||||
|
|
|
@ -3,7 +3,8 @@ from typing import NewType
|
|||
UserID = NewType('UserID', str)
|
||||
UserIDSecretKey = NewType('UserIDSecretKey', str)
|
||||
|
||||
LANIP = NewType('LANIP', 'str')
|
||||
LANIP = NewType('LANIP', str)
|
||||
LoopBackIP = NewType('LoopBackIP', str)
|
||||
|
||||
DeterministicKeyPassphrase = NewType('DeterministicKeyPassphrase', str)
|
||||
|
||||
|
|
Loading…
Reference in New Issue