2
0

support custom location for database persistent statefile (defaults to "capport.state" in cwd)

This commit is contained in:
Stefan Bühler 2023-08-08 13:35:43 +02:00
parent 8eedb6b367
commit 9e31c8c673
4 changed files with 7 additions and 4 deletions

View File

@ -11,3 +11,4 @@ server-names:
- ... - ...
api-port: 8000 api-port: 8000
controller-port: 5000 controller-port: 5000
database-file: capport.state

View File

@ -299,11 +299,11 @@ class Hub:
self._hostname = socket.getfqdn() self._hostname = socket.getfqdn()
self._app = app self._app = app
self._is_controller = is_controller self._is_controller = is_controller
state_filename: typing.Optional[str] state_filename: str
if is_controller: if is_controller:
state_filename = 'capport.state' state_filename = config.database_file
else: else:
state_filename = None state_filename = ''
self.database = capport.database.Database(state_filename=state_filename) self.database = capport.database.Database(state_filename=state_filename)
self._anon_context = ssl.SSLContext() self._anon_context = ssl.SSLContext()
# python ssl doesn't support setting tls1.3 ciphers yet, so make sure we stay on 1.2 for now to enable anon # python ssl doesn't support setting tls1.3 ciphers yet, so make sure we stay on 1.2 for now to enable anon

View File

@ -23,6 +23,7 @@ class Config:
session_timeout: int # in seconds session_timeout: int # in seconds
api_port: int api_port: int
controller_port: int controller_port: int
database_file: str # empty str: disable database
debug: bool debug: bool
@staticmethod @staticmethod
@ -58,6 +59,7 @@ class Config:
session_timeout=data.pop('session-timeout', 3600), session_timeout=data.pop('session-timeout', 3600),
api_port=data.pop('api-port', 8000), api_port=data.pop('api-port', 8000),
controller_port=data.pop('controller-port', 5000), controller_port=data.pop('controller-port', 5000),
database_file=str(data.pop('database-file', 'capport.state')),
debug=data.pop('debug', False) debug=data.pop('debug', False)
) )
if data: if data:

View File

@ -139,7 +139,7 @@ class NotReadyYet(Exception):
class Database: class Database:
def __init__(self, state_filename: typing.Optional[str] = None): def __init__(self, state_filename: str = ""):
self._macs: dict[cptypes.MacAddress, MacEntry] = {} self._macs: dict[cptypes.MacAddress, MacEntry] = {}
self._state_filename = state_filename self._state_filename = state_filename
self._changed_since_last_cleanup = False self._changed_since_last_cleanup = False