commit 429c4b1022b4d1b4b476631c7b90adcddbdb1e09
parent b08e50e439a155777010ee58f9d0a9f3f4583b10
Author: lash <dev@holbrook.no>
Date: Wed, 1 Apr 2026 11:14:44 -0600
Implement config, fs store for socket server.
Diffstat:
4 files changed, 34 insertions(+), 9 deletions(-)
diff --git a/dummy/usawa/context.py b/dummy/usawa/context.py
@@ -1,3 +1,4 @@
+import logging
import getpass
from whee.valkey import ValkeyStore
@@ -7,7 +8,10 @@ from usawa.account import AccountIndex
from usawa.store import LedgerStore, EntryStore, KeyStore
from usawa.resolve.fs import FSResolver
+logg = logging.getLogger('usawa.ctx')
+
+# TODO: move this code to a cli module
def pwgetter():
return getpass.getpass('passphrase: ')
@@ -16,7 +20,7 @@ class UsawaContext:
pwget = pwgetter
- def __init__(self, cfg, askpass=None):
+ def __init__(self, cfg, askpass=None, pwgetter=None):
self.cfg = cfg
self.db = None
self.ledger = None
@@ -135,6 +139,7 @@ class UsawaContext:
self.resolver = FSResolver(resolver_path)
else:
logg.debug('missing resolver')
+ logg.info('created {}'.format(self.resolver))
diff --git a/dummy/usawa/resolve/base.py b/dummy/usawa/resolve/base.py
@@ -45,8 +45,9 @@ class BaseResolver:
:param verifier: Verifier function for checking keys and key/value relation.
:type verifier: function, by default usawa.resolve.sha512_verify
"""
- def __init__(self, verifier=sha512_verify):
+ def __init__(self, base, verifier=sha512_verify):
self.verifier = verifier
+ self.base = base
"""Get value for key.
@@ -126,3 +127,7 @@ class BaseResolver:
#logg.debug('getting parent {} {}'.format(k.hex(), v))
#entry_nolookup = Entry.from_string(v, ledger.uidx)
#lookup = self.get(entry_nolookup.lookup)
+
+
+ def __str__(self):
+ return 'resolver base {}'.format(self.base)
diff --git a/dummy/usawa/resolve/fs.py b/dummy/usawa/resolve/fs.py
@@ -27,11 +27,12 @@ class FSResolver(BaseResolver):
:seealso: usawa.resolve.BaseResolver
"""
def __init__(self, path, verifier=sha512_verify):
- super(FSResolver, self).__init__(verifier=verifier)
- self.path = os.path.realpath(path)
+ path = os.path.realpath(path)
+ super(FSResolver, self).__init__(path, verifier=verifier)
+ self.path = path
os.makedirs(self.path, exist_ok=True)
-
+
"""Implements usawa.resolve.BaseResolver
"""
def get(self, k):
diff --git a/dummy/usawa/runnable/server.py b/dummy/usawa/runnable/server.py
@@ -10,7 +10,7 @@ from usawa.service import Handler, UnixServer
from whee.valkey import ValkeyStore
-logging.basicConfig(level=logging.DEBUG)
+logging.basicConfig(level=logging.WARNING)
logg = logging.getLogger()
def parse(v):
@@ -34,12 +34,17 @@ Public keys used to verify entries and ledger states are provided using the -k f
epilog="Currently only UNIX socket are supported",
)
argp.add_argument('-k', action='append', type=str, default=[], help='Add public key to list of valid signers')
+ argp.add_argument('-c', type=str, help='override config dir')
argp.add_argument('-u', type=str, default='./usawa.socket', help='UNIX Socket file to listen on')
- argp.add_argument('--valkey-host', dest='valkey_host', type=str, default='localhost', help='Valkey host')
- argp.add_argument('--valkey-port', dest='valkey_port', type=int, default=6379, help='Valkey port')
+ argp.add_argument('-v', type=str, choices=['info','debug','warning','error'], help='be verbose')
argp.add_argument('ledger_xml_file', type=str, help='load ledger metadata from XML file')
arg = argp.parse_args()
+ if arg.v:
+ logg.setLevel(getattr(logging, arg.v.upper()))
+
+ #ctx = UsawaContext(arg)
+
acl = ACL()
for k in arg.k:
acl.add(k)
@@ -49,8 +54,17 @@ Public keys used to verify entries and ledger states are provided using the -k f
uidx = UnitIndex.from_tree(ledger_tree)
ledger = Ledger.from_tree(ledger_tree, acl=acl)
- db = ValkeyStore('', host=arg.valkey_host, port=arg.valkey_port)
+ #db = ValkeyStore('', host=arg.valkey_host, port=arg.valkey_port)
#srv = TCPServer(db, ledger, acl=acl)
+ db = None
+ if cfg.get('STORE_TYPE') == 'valkey':
+ dbid = cfg.get('VALKEY_ID')
+ host = self.cfg.get('VALKEY_HOST')
+ port = self.cfg.get('VALKEY_PORT')
+ db = ValkeyStore('', host=host, port=port)
+ elif self.cfg.get('STORE_TYPE') == 'fs':
+ base = self.cfg.get('FSSTORE_BASE')
+ db = FsStore(base=base, dbname='usawa')
srv = UnixServer(db, ledger, acl=acl, path=arg.u)
def stop_server(sig, stack):