Refactoring, added docstrings

This commit is contained in:
BarsTiger
2023-07-16 00:07:35 +03:00
parent e9477dfde7
commit 1662127c85
11 changed files with 135 additions and 64 deletions

View File

@@ -134,6 +134,12 @@ class Onion(object):
@staticmethod
def write_onion_service(name: str, port: int):
"""
Writes onion service to config
:param name: Name of service
:param port: Port of real service on local machine to proxy
:return: ServiceModel object
"""
if name in services.keys():
service: config.models.ServiceModel = services[name]
service.port = port

View File

@@ -8,6 +8,10 @@ from typing import Literal
def get_latest_version() -> str:
"""
Gets latest non-alfa version name from dist.torproject.org
:return:
"""
r = requests.get('https://dist.torproject.org/torbrowser/').text
results = re.findall(r'<a href=".+/">(.+)/</a>', r)
@@ -22,6 +26,10 @@ def get_build() -> Literal[
'macos-x86_64',
'macos-aarch64'
]:
"""
Gets proper build name for your system
:return:
"""
if sys.platform == 'win32':
return 'windows-x86_64'
elif sys.platform == 'linux':
@@ -38,18 +46,32 @@ def get_build() -> Literal[
def get_tor_expert_bundles(version: str = get_latest_version(),
platform: str = get_build()):
"""
Returns a link for downloading tor expert bundle by version and platform
:param version: Tor expert bundle version that exists in dist.torproject.org
:param platform: Build type based on platform and arch, can be generated using
get_build()
:return:
"""
return f'https://dist.torproject.org/torbrowser/{version}/tor-expert-bundle-' \
f'{version}-{platform}.tar.gz'
def download_tor(url: str = get_tor_expert_bundles(), dist: str = 'tor'):
"""
Downloads tor from url and unpacks it to specified directory. Note, that
it doesn't unpack only tor executable to dist folder, but creates there
tor folder, where tor executable and libs are stored
:param url: Direct link for downloading
:param dist: Directory where to unpack archive (tor folder will appear there)
:return:
"""
if not os.path.exists(dist):
os.makedirs(dist)
(tar := tarfile.open(fileobj=io.BytesIO(requests.get(url).content),
mode='r:gz')).extractall(
members=
[
members=[
tarinfo
for tarinfo
in tar.getmembers()