forked from LBRYCommunity/lbry-sdk
initial commit of auto-launch lbrycrdd
This commit is contained in:
parent
7ab0ae18be
commit
d152336f42
3 changed files with 99 additions and 25 deletions
|
@ -296,6 +296,16 @@ class LBRYcrdWallet(object):
|
|||
|
||||
def _start_daemon(self):
|
||||
|
||||
tries = 0
|
||||
try:
|
||||
rpc_conn = self._get_rpc_conn()
|
||||
rpc_conn.getinfo()
|
||||
log.info("lbrycrdd was already running when LBRYcrdWallet was started.")
|
||||
return
|
||||
except (socket.error, JSONRPCException):
|
||||
tries += 1
|
||||
log.info("lbrcyrdd was not running when LBRYcrdWallet was started. Attempting to start it.")
|
||||
|
||||
try:
|
||||
if os.name == "nt":
|
||||
si = subprocess.STARTUPINFO
|
||||
|
@ -312,8 +322,7 @@ class LBRYcrdWallet(object):
|
|||
log.error("Couldn't launch lbrycrdd at path %s: %s", self.lbrycrdd_path, traceback.format_exc())
|
||||
raise ValueError("Couldn't launch lbrycrdd. Tried %s" % self.lbrycrdd_path)
|
||||
|
||||
tries = 0
|
||||
while tries < 5:
|
||||
while tries < 6:
|
||||
try:
|
||||
rpc_conn = self._get_rpc_conn()
|
||||
rpc_conn.getinfo()
|
||||
|
|
|
@ -41,8 +41,9 @@ log = logging.getLogger(__name__)
|
|||
|
||||
class LBRYConsole():
|
||||
"""A class which can upload and download file streams to and from the network"""
|
||||
def __init__(self, peer_port, dht_node_port, known_dht_nodes, control_class, wallet_type, lbrycrd_conf,
|
||||
use_upnp, data_dir, created_data_dir):
|
||||
def __init__(self, peer_port, dht_node_port, known_dht_nodes, control_class, wallet_type,
|
||||
lbrycrd_conf, lbrycrd_dir, use_upnp, data_dir, created_data_dir,
|
||||
lbrycrdd_path, start_lbrycrdd):
|
||||
"""
|
||||
@param peer_port: the network port on which to listen for peers
|
||||
|
||||
|
@ -55,6 +56,14 @@ class LBRYConsole():
|
|||
self.known_dht_nodes = known_dht_nodes
|
||||
self.wallet_type = wallet_type
|
||||
self.lbrycrd_conf = lbrycrd_conf
|
||||
self.lbrycrd_dir = lbrycrd_dir
|
||||
if not self.lbrycrd_dir:
|
||||
self.lbrycrd_dir = os.path.join(os.path.expanduser("~"), ".lbrycrd")
|
||||
if not self.lbrycrd_conf:
|
||||
self.wallet_conf = os.path.join(self.lbrycrd_dir, "lbrycrd.conf")
|
||||
self.lbrycrdd_path = lbrycrdd_path
|
||||
self.default_lbrycrdd_path = "./lbrycrdd"
|
||||
self.start_lbrycrdd = start_lbrycrdd
|
||||
self.use_upnp = use_upnp
|
||||
self.lbry_server_port = None
|
||||
self.control_class = control_class
|
||||
|
@ -165,6 +174,30 @@ class LBRYConsole():
|
|||
d = self.settings.start()
|
||||
d.addCallback(lambda _: self.settings.get_lbryid())
|
||||
d.addCallback(self.set_lbryid)
|
||||
d.addCallback(lambda _: self.get_lbrycrdd_path())
|
||||
return d
|
||||
|
||||
def get_lbrycrdd_path(self):
|
||||
|
||||
if not self.start_lbrycrdd:
|
||||
return defer.succeed(None)
|
||||
|
||||
def get_lbrycrdd_path_conf_file():
|
||||
lbrycrdd_path_conf_path = os.path.join(os.path.expanduser("~"), ".lbrycrddpath.conf")
|
||||
if not os.path.exists(lbrycrdd_path_conf_path):
|
||||
return ""
|
||||
lbrycrdd_path_conf = open(lbrycrdd_path_conf_path)
|
||||
lines = lbrycrdd_path_conf.readline()
|
||||
return lines
|
||||
|
||||
d = threads.deferToThread(get_lbrycrdd_path_conf_file)
|
||||
|
||||
def load_lbrycrdd_path(conf):
|
||||
for line in conf:
|
||||
if len(line.strip()) and line.strip()[0] != "#":
|
||||
self.lbrycrdd_path = line.strip()
|
||||
|
||||
d.addCallback(load_lbrycrdd_path)
|
||||
return d
|
||||
|
||||
def set_lbryid(self, lbryid):
|
||||
|
@ -200,8 +233,14 @@ class LBRYConsole():
|
|||
return d
|
||||
|
||||
def create_lbrycrd_wallet(lbrycrd_options):
|
||||
lbrycrdd_path = None
|
||||
if self.start_lbrycrdd is True:
|
||||
lbrycrdd_path = self.lbrycrdd_path
|
||||
if not lbrycrdd_path:
|
||||
lbrycrdd_path = self.default_lbrycrdd_path
|
||||
return LBRYcrdWallet(lbrycrd_options['username'], lbrycrd_options['password'], "127.0.0.1",
|
||||
lbrycrd_options['rpc_port'])
|
||||
lbrycrd_options['rpc_port'], wallet_dir=self.lbrycrd_dir,
|
||||
wallet_conf=self.lbrycrd_conf, lbrycrdd_path=lbrycrdd_path)
|
||||
|
||||
def get_wallet():
|
||||
if self.wallet_type == "lbrycrd":
|
||||
|
@ -434,8 +473,11 @@ def launch_lbry_console():
|
|||
parser.add_argument("--wallet_type",
|
||||
help="Either 'lbrycrd' or 'ptc'.",
|
||||
type=str, default="lbrycrd")
|
||||
parser.add_argument("--lbrycrd_wallet_dir",
|
||||
help="The directory in which lbrycrd data will stored. Used if lbrycrdd is "
|
||||
"launched by this application.")
|
||||
parser.add_argument("--lbrycrd_wallet_conf",
|
||||
help="The configuration file for the LBRYcrd wallet. Default: ~/.lbrycrd",
|
||||
help="The configuration file for the LBRYcrd wallet. Default: ~/.lbrycrd/lbrycrd.conf",
|
||||
type=str)
|
||||
parser.add_argument("--no_dht_bootstrap",
|
||||
help="Don't try to connect to the DHT",
|
||||
|
@ -448,13 +490,20 @@ def launch_lbry_console():
|
|||
help="The port of a known DHT node, to be used to bootstrap into the DHT. Must "
|
||||
"be used with --dht_bootstrap_host",
|
||||
type=int, default=4000)
|
||||
parser.add_argument("--use_upnp",
|
||||
help="Try to use UPnP to enable incoming connections through the firewall",
|
||||
parser.add_argument("--disable_upnp",
|
||||
help="Don't try to use UPnP to enable incoming connections through the firewall",
|
||||
action="store_true")
|
||||
parser.add_argument("--data_dir",
|
||||
help=("The full path to the directory in which lbrynet data and metadata will be stored. "
|
||||
"Default: ~/.lbrynet"),
|
||||
type=str)
|
||||
parser.add_argument("--lbrycrdd_path",
|
||||
help="The path to lbrycrdd, which will be launched if it isn't running, unless "
|
||||
"launching lbrycrdd is disabled by --disable_launch_lbrycrdd. By default, "
|
||||
"the file ~/.lbrycrddpath.conf will be checked, and if no path is found "
|
||||
"there, it will be ./lbrycrdd")
|
||||
parser.add_argument("--disable_launch_lbrycrdd",
|
||||
help="Don't launch lbrycrdd even if it's not running.")
|
||||
|
||||
args = parser.parse_args()
|
||||
|
||||
|
@ -482,11 +531,6 @@ def launch_lbry_console():
|
|||
os.mkdir(data_dir)
|
||||
created_data_dir = True
|
||||
|
||||
if args.lbrycrd_wallet_conf:
|
||||
lbrycrd_conf = args.lbrycrd_wallet_conf
|
||||
else:
|
||||
lbrycrd_conf = os.path.join(os.path.expanduser("~"), ".lbrycrd", "lbrycrd.conf")
|
||||
|
||||
|
||||
log_format = "(%(asctime)s)[%(filename)s:%(lineno)s] %(funcName)s(): %(message)s"
|
||||
formatter = logging.Formatter(log_format)
|
||||
|
@ -498,9 +542,12 @@ def launch_lbry_console():
|
|||
file_handler.addFilter(logging.Filter("lbrynet"))
|
||||
logger.addHandler(file_handler)
|
||||
|
||||
console = LBRYConsole(peer_port, dht_node_port, bootstrap_nodes, StdIOControl, wallet_type=args.wallet_type,
|
||||
lbrycrd_conf=lbrycrd_conf, use_upnp=args.use_upnp,
|
||||
data_dir=data_dir, created_data_dir=created_data_dir)
|
||||
console = LBRYConsole(peer_port, dht_node_port, bootstrap_nodes, StdIOControl,
|
||||
wallet_type=args.wallet_type, lbrycrd_conf=args.lbrycrd_wallet_conf,
|
||||
lbrycrd_dir=args.lbrycrd_wallet_dir,
|
||||
use_upnp=not args.disable_upnp, data_dir=data_dir,
|
||||
created_data_dir=created_data_dir, lbrycrdd_path=args.lbrycrdd_path,
|
||||
start_lbrycrdd=not args.disable_launch_lbrycrdd)
|
||||
|
||||
d = task.deferLater(reactor, 0, console.start)
|
||||
|
||||
|
|
|
@ -51,18 +51,17 @@ class LBRYDownloader(object):
|
|||
self.download_deferreds = []
|
||||
self.stream_frames = []
|
||||
self.default_blob_data_payment_rate = MIN_BLOB_DATA_PAYMENT_RATE
|
||||
self.use_upnp = False
|
||||
self.use_upnp = True
|
||||
self.start_lbrycrdd = True
|
||||
if os.name == "nt":
|
||||
self.start_lbrycrdd = True
|
||||
self.lbrycrdd_path = "lbrycrdd.exe"
|
||||
else:
|
||||
self.start_lbrycrdd = False
|
||||
self.lbrycrdd_path = "./lbrycrdd"
|
||||
self.delete_blobs_on_remove = True
|
||||
self.blob_request_payment_rate_manager = None
|
||||
|
||||
def start(self):
|
||||
d = self._load_configuration_file()
|
||||
d = self._load_conf_options()
|
||||
d.addCallback(lambda _: threads.deferToThread(self._create_directory))
|
||||
d.addCallback(lambda _: self._check_db_migration())
|
||||
d.addCallback(lambda _: self._get_session())
|
||||
|
@ -114,9 +113,28 @@ class LBRYDownloader(object):
|
|||
self.current_db_revision)
|
||||
return defer.succeed(True)
|
||||
|
||||
def _load_configuration_file(self):
|
||||
def _load_conf_options(self):
|
||||
|
||||
def get_configuration():
|
||||
def get_lbrycrdd_path_conf_file():
|
||||
if os.name == "nt":
|
||||
return ""
|
||||
lbrycrdd_path_conf_path = os.path.join(os.path.expanduser("~"), ".lbrycrddpath.conf")
|
||||
if not os.path.exists(lbrycrdd_path_conf_path):
|
||||
return ""
|
||||
lbrycrdd_path_conf = open(lbrycrdd_path_conf_path)
|
||||
lines = lbrycrdd_path_conf.readline()
|
||||
return lines
|
||||
|
||||
d = threads.deferToThread(get_lbrycrdd_path_conf_file)
|
||||
|
||||
def load_lbrycrdd_path(conf):
|
||||
for line in conf:
|
||||
if len(line.strip()) and line.strip()[0] != "#":
|
||||
self.lbrycrdd_path = line.strip()
|
||||
|
||||
d.addCallback(load_lbrycrdd_path)
|
||||
|
||||
def get_configuration_file():
|
||||
if os.name == "nt":
|
||||
lbry_conf_path = "lbry.conf"
|
||||
if not os.path.exists(lbry_conf_path):
|
||||
|
@ -133,9 +151,9 @@ class LBRYDownloader(object):
|
|||
log.debug("%s file contents:\n%s", lbry_conf_path, str(lines))
|
||||
return lines
|
||||
|
||||
d = threads.deferToThread(get_configuration)
|
||||
d.addCallback(lambda _: threads.deferToThread(get_configuration_file))
|
||||
|
||||
def load_configuration(conf):
|
||||
def load_configuration_file(conf):
|
||||
for line in conf:
|
||||
if len(line.strip()) and line.strip()[0] != "#":
|
||||
try:
|
||||
|
@ -236,7 +254,7 @@ class LBRYDownloader(object):
|
|||
else:
|
||||
log.warning("Got unknown configuration field: %s", field_name)
|
||||
|
||||
d.addCallback(load_configuration)
|
||||
d.addCallback(load_configuration_file)
|
||||
return d
|
||||
|
||||
def _create_directory(self):
|
||||
|
|
Loading…
Reference in a new issue