chia-blockchain/src/cmds/configure.py

117 lines
3.9 KiB
Python
Raw Normal View History

from src.util.config import (
load_config,
save_config,
)
2020-12-12 03:02:31 +03:00
from argparse import ArgumentParser
from typing import Dict
from src.util.default_root import DEFAULT_ROOT_PATH
2021-01-15 12:56:58 +03:00
from src.util.config import str2bool
2020-12-12 03:02:31 +03:00
def make_parser(parser: ArgumentParser):
parser.add_argument(
"--set-node-introducer",
help="Set the introducer for node - IP:Port",
type=str,
nargs="?",
default="",
)
parser.add_argument(
"--set-fullnode-port",
help="Set the port to use for the fullnode",
type=str,
nargs="?",
default="",
)
2020-12-12 09:09:34 +03:00
parser.add_argument(
"--set-log-level",
2021-01-20 11:56:43 +03:00
"--log-level",
"-log-level",
2020-12-12 09:09:34 +03:00
help="Set the instance log level, Can be CRITICAL, ERROR, WARNING, INFO, DEBUG, NOTSET",
type=str,
nargs="?",
default="",
)
2021-01-15 12:56:58 +03:00
parser.add_argument(
"--enable-upnp",
"--upnp",
2021-01-20 11:56:43 +03:00
"-upnp",
2021-01-15 12:56:58 +03:00
help="Enable or disable uPnP. Can be True or False",
type=str,
nargs="?",
)
2020-12-12 03:02:31 +03:00
parser.set_defaults(function=configure)
def help_message():
print("usage: chia configure -flag")
print(
2020-12-12 09:32:04 +03:00
"""
2020-12-12 09:09:34 +03:00
chia configure [arguments] [inputs]
--set-node-introducer [IP:Port] (Set the introducer for node),
--set-fullnode-port [Port] (Set the full node default port, useful for beta testing),
--set-log-level [LogLevel] (Can be CRITICAL, ERROR, WARNING, INFO, DEBUG, NOTSET),
--enable-upnp,
--upnp {True,False} (Enable or disable uPnP. Can be True or False)
2020-12-12 09:32:04 +03:00
"""
2020-12-12 03:02:31 +03:00
)
def configure(args, parser):
config: Dict = load_config(DEFAULT_ROOT_PATH, "config.yaml")
change_made = False
if args.set_node_introducer:
try:
if args.set_node_introducer.index(":"):
host, port = (
":".join(args.set_node_introducer.split(":")[:-1]),
args.set_node_introducer.split(":")[-1],
)
config["full_node"]["introducer_peer"]["host"] = host
config["full_node"]["introducer_peer"]["port"] = int(port)
2020-12-12 03:18:18 +03:00
config["introducer"]["port"] = int(port)
2020-12-12 03:02:31 +03:00
print("Node introducer updated.")
change_made = True
except ValueError:
print("Node introducer address must be in format [IP:Port]")
if args.set_fullnode_port:
config["full_node"]["port"] = int(args.set_fullnode_port)
config["full_node"]["introducer_peer"]["port"] = int(args.set_fullnode_port)
config["farmer"]["full_node_peer"]["port"] = int(args.set_fullnode_port)
config["timelord"]["full_node_peer"]["port"] = int(args.set_fullnode_port)
config["wallet"]["full_node_peer"]["port"] = int(args.set_fullnode_port)
config["wallet"]["introducer_peer"]["port"] = int(args.set_fullnode_port)
config["introducer"]["port"] = int(args.set_fullnode_port)
2020-12-12 03:02:31 +03:00
print("Default full node port updated.")
change_made = True
2020-12-12 09:09:34 +03:00
if args.set_log_level:
2020-12-12 09:32:04 +03:00
if (
(args.set_log_level == "CRITICAL")
or (args.set_log_level == "ERROR")
or (args.set_log_level == "WARNING")
or (args.set_log_level == "INFO")
or (args.set_log_level == "DEBUG")
or (args.set_log_level == "NOTSET")
):
2020-12-12 09:09:34 +03:00
config["logging"]["log_level"] = args.set_log_level
print("Logging level updated. Check CHIA_ROOT/log/debug.log")
change_made = True
2021-01-17 04:18:34 +03:00
if args.enable_upnp is not None:
2021-01-15 12:56:58 +03:00
config["full_node"]["enable_upnp"] = str2bool(args.enable_upnp)
if str2bool(args.enable_upnp):
print("uPnP enabled.")
else:
print("uPnP disabled.")
change_made = True
2020-12-12 03:02:31 +03:00
if change_made:
2021-01-12 00:59:08 +03:00
print("Restart any running chia services for changes to take effect.")
2020-12-12 03:02:31 +03:00
save_config(args.root_path, "config.yaml", config)
else:
help_message()
return 0