lbry-sdk/lbrynet/core/system_info.py

60 lines
2 KiB
Python
Raw Normal View History

import platform
2018-07-21 20:12:29 +02:00
import json
2017-04-26 20:18:41 +02:00
import subprocess
import os
2018-07-05 05:16:52 +02:00
from six.moves.urllib import request
from six.moves.urllib.error import URLError
from lbrynet.schema import __version__ as schema_version
2017-04-26 20:18:41 +02:00
from lbrynet import build_type, __version__ as lbrynet_version
from lbrynet.conf import ROOT_DIR
import logging.handlers
log = logging.getLogger(__name__)
2018-10-05 16:20:32 +02:00
def get_lbrynet_version() -> str:
2017-04-26 20:18:41 +02:00
if build_type.BUILD == "dev":
try:
with open(os.devnull, 'w') as devnull:
git_dir = ROOT_DIR + '/.git'
return subprocess.check_output(
['git', '--git-dir='+git_dir, 'describe', '--dirty', '--always'],
stderr=devnull
).decode().strip().lstrip('v')
2017-04-26 20:18:41 +02:00
except (subprocess.CalledProcessError, OSError):
log.debug("failed to get version from git")
2017-04-26 20:18:41 +02:00
return lbrynet_version
2018-10-05 16:20:32 +02:00
def get_platform(get_ip: bool = True) -> dict:
p = {
"processor": platform.processor(),
"python_version": platform.python_version(),
"platform": platform.platform(),
"os_release": platform.release(),
"os_system": platform.system(),
2017-04-26 20:18:41 +02:00
"lbrynet_version": get_lbrynet_version(),
"lbryschema_version": schema_version,
2017-03-15 21:33:41 +01:00
"build": build_type.BUILD, # CI server sets this during build step
}
if p["os_system"] == "Linux":
2018-08-17 16:28:47 +02:00
try:
import distro
p["distro"] = distro.info()
p["desktop"] = os.environ.get('XDG_CURRENT_DESKTOP', 'Unknown')
except ModuleNotFoundError:
pass
2018-05-05 07:20:21 +02:00
# TODO: remove this from get_platform and add a get_external_ip function using treq
if get_ip:
try:
2018-07-05 05:16:52 +02:00
response = json.loads(request.urlopen("https://api.lbry.io/ip").read())
2018-01-22 21:47:14 +01:00
if not response['success']:
raise URLError("failed to get external ip")
p['ip'] = response['data']['ip']
except (URLError, AssertionError):
p['ip'] = "Could not determine IP"
return p