commit f92e2878cd96e528d032100c5501a43e862b8e5c
parent 06962b33652f4434b22f483c14c183a56bd6c585
Author: nolash <dev@holbrook.no>
Date: Sat, 17 Oct 2020 11:06:52 +0200
Add configurable dsn for postgres connection
Diffstat:
5 files changed, 23 insertions(+), 4 deletions(-)
diff --git a/CHANGELOG b/CHANGELOG
@@ -1,3 +1,5 @@
+* 0.2.3
+ - Use dsn and config for keystore database settings
* 0.2.2
- Use confini for configurations
* 0.2.1
diff --git a/config/database.ini b/config/database.ini
@@ -0,0 +1,6 @@
+[database]
+NAME=cic-signer
+USER=postgres
+PASSWORD=
+HOST=localhost
+PORT=5432
diff --git a/crypto_dev_signer/keystore/postgres.py b/crypto_dev_signer/keystore/postgres.py
@@ -6,6 +6,7 @@ import base64
from cryptography.fernet import Fernet
import psycopg2
from psycopg2 import sql
+from psycopg2.extensions import make_dsn
import sha3
# local imports
@@ -34,8 +35,9 @@ class ReferenceKeystore(Keystore):
""",
]
- def __init__(self, dbname, **kwargs):
- self.conn = psycopg2.connect('dbname=' + dbname)
+ def __init__(self, dsn, **kwargs):
+ logg.debug('dsn {}'.format(dsn))
+ self.conn = psycopg2.connect(make_dsn(dsn))
self.cur = self.conn.cursor()
self.symmetric_key = kwargs.get('symmetric_key')
diff --git a/scripts/crypto-dev-daemon b/scripts/crypto-dev-daemon
@@ -51,6 +51,14 @@ if args.s:
elif config.get('SIGNER_SOCKET_PATH'):
socket_path = config.get('SIGNER_SOCKET_PATH')
+# connect to database
+dsn = 'postgresql://{}:{}@{}:{}/{}'.format(
+ config.get('DATABASE_USER'),
+ config.get('DATABASE_PASSWORD'),
+ config.get('DATABASE_HOST'),
+ config.get('DATABASE_PORT'),
+ config.get('DATABASE_NAME'),
+ )
class MissingSecretError(BaseException):
@@ -194,7 +202,8 @@ def init():
'symmetric_key': secret,
}
#db = ReferenceKeystore(os.environ.get('SIGNER_DATABASE', 'cic_signer'), **kw)
- db = ReferenceKeystore(config.get('SIGNER_DATABASE'), **kw)
+ #db = ReferenceKeystore(config.get('SIGNER_DATABASE'), **kw)
+ db = ReferenceKeystore(dsn, **kw)
signer = ReferenceSigner(db)
diff --git a/setup.py b/setup.py
@@ -2,7 +2,7 @@ from setuptools import setup
setup(
name="crypto-dev-signer",
- version="0.2.2",
+ version="0.2.3",
description="A signer and keystore daemon and library for cryptocurrency software development",
author="Louis Holbrook",
author_email="dev@holbrook.no",