mirror of
https://github.com/craigerl/aprsd.git
synced 2024-12-20 16:41:13 -05:00
Enable configuring where to save the objectstore data
This patch adds a new config entry aprsd.save_location which is the directory used to store and load the objectstore data.
This commit is contained in:
parent
135e21cd8d
commit
0d51634ec2
@ -10,6 +10,12 @@ import yaml
|
||||
from aprsd import utils
|
||||
|
||||
|
||||
home = str(Path.home())
|
||||
DEFAULT_CONFIG_DIR = f"{home}/.config/aprsd/"
|
||||
DEFAULT_SAVE_FILE = f"{home}/.config/aprsd/aprsd.p"
|
||||
DEFAULT_CONFIG_FILE = f"{home}/.config/aprsd/aprsd.yml"
|
||||
|
||||
|
||||
LOG_LEVELS = {
|
||||
"CRITICAL": logging.CRITICAL,
|
||||
"ERROR": logging.ERROR,
|
||||
@ -72,6 +78,7 @@ DEFAULT_CONFIG_DICT = {
|
||||
"logfile": "/tmp/aprsd.log",
|
||||
"logformat": DEFAULT_LOG_FORMAT,
|
||||
"dateformat": DEFAULT_DATE_FORMAT,
|
||||
"save_location": DEFAULT_CONFIG_DIR,
|
||||
"trace": False,
|
||||
"enabled_plugins": CORE_MESSAGE_PLUGINS,
|
||||
"units": "imperial",
|
||||
@ -129,11 +136,6 @@ DEFAULT_CONFIG_DICT = {
|
||||
},
|
||||
}
|
||||
|
||||
home = str(Path.home())
|
||||
DEFAULT_CONFIG_DIR = f"{home}/.config/aprsd/"
|
||||
DEFAULT_SAVE_FILE = f"{home}/.config/aprsd/aprsd.p"
|
||||
DEFAULT_CONFIG_FILE = f"{home}/.config/aprsd/aprsd.yml"
|
||||
|
||||
|
||||
class Config(collections.UserDict):
|
||||
def _get(self, d, keys, default=None):
|
||||
|
@ -479,15 +479,14 @@ def server(
|
||||
if flush:
|
||||
LOG.debug("Deleting saved MsgTrack.")
|
||||
messaging.MsgTrack().flush()
|
||||
packets.PacketList(config=config)
|
||||
packets.WatchList(config=config)
|
||||
else:
|
||||
# Try and load saved MsgTrack list
|
||||
LOG.debug("Loading saved MsgTrack object.")
|
||||
messaging.MsgTrack().load()
|
||||
packets.WatchList().load()
|
||||
packets.SeenList().load()
|
||||
|
||||
packets.PacketList(config=config)
|
||||
packets.WatchList(config=config)
|
||||
packets.WatchList(config=config).load()
|
||||
packets.SeenList(config=config).load()
|
||||
|
||||
rx_thread = threads.APRSDRXThread(
|
||||
msg_queues=threads.msg_queues,
|
||||
|
@ -35,9 +35,27 @@ class ObjectStoreMixin:
|
||||
with self.lock:
|
||||
return self.data[id]
|
||||
|
||||
def _init_store(self):
|
||||
sl = self._save_location()
|
||||
if not os.path.exists(sl):
|
||||
LOG.warning(f"Save location {sl} doesn't exist")
|
||||
try:
|
||||
os.makedirs(sl)
|
||||
except Exception as ex:
|
||||
LOG.exception(ex)
|
||||
|
||||
def _save_location(self):
|
||||
save_location = self.config.get("aprsd.save_location", None)
|
||||
if not save_location:
|
||||
save_location = aprsd_config.DEFAULT_CONFIG_DIR
|
||||
return save_location
|
||||
|
||||
def _save_filename(self):
|
||||
save_location = self._save_location()
|
||||
|
||||
LOG.debug(f"{self.__class__.__name__}::Using save location {save_location}")
|
||||
return "{}/{}.p".format(
|
||||
aprsd_config.DEFAULT_CONFIG_DIR,
|
||||
save_location,
|
||||
self.__class__.__name__.lower(),
|
||||
)
|
||||
|
||||
|
@ -97,6 +97,7 @@ class WatchList(objectstore.ObjectStoreMixin):
|
||||
ring_size,
|
||||
),
|
||||
}
|
||||
self._init_store()
|
||||
|
||||
def is_enabled(self):
|
||||
if self.config and "watch_list" in self.config["aprsd"]:
|
||||
@ -165,6 +166,11 @@ class SeenList(objectstore.ObjectStoreMixin):
|
||||
cls.data = {}
|
||||
return cls._instance
|
||||
|
||||
def __init__(self, config=None):
|
||||
if config:
|
||||
self.config = config
|
||||
self._init_store()
|
||||
|
||||
def update_seen(self, packet):
|
||||
callsign = None
|
||||
if "fromcall" in packet:
|
||||
|
Loading…
Reference in New Issue
Block a user