Skip to content

Commit db43ebc

Browse files
committed
Fix incorrect certificate handling on Windows
Summary: This reimplements suvayu/electrum-personal-server#1 such that it works on Windows properly, see: chris-belcher#44. The certificates are now treated as package_data, and are accessible using the pkg_resources API. All other behaviour is same as "Handle certificate files in a more robust manner".
1 parent e9c8a35 commit db43ebc

File tree

6 files changed

+8
-10
lines changed

6 files changed

+8
-10
lines changed

MANIFEST.in

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
11
include README.md
22
include doc/*.md
3-
include certs/*
3+
include electrumpersonalserver/certs/*
44
include config.cfg_sample

electrumpersonalserver/__init__.py

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import electrumpersonalserver.bitcoin
22
import electrumpersonalserver.server
33

4-
__certfile__ = 'etc/electrum-personal-server/certs/cert.crt'
5-
__keyfile__ = 'etc/electrum-personal-server/certs/cert.key'
4+
__certfile__ = 'certs/cert.crt'
5+
__keyfile__ = 'certs/cert.key'
File renamed without changes.
File renamed without changes.

electrumpersonalserver/server/common.py

+4-6
Original file line numberDiff line numberDiff line change
@@ -468,19 +468,17 @@ def get_scriptpubkeys_to_monitor(rpc, config):
468468
return False, spks_to_monitor, deterministic_wallets
469469

470470
def get_certs(config):
471-
from pathlib import Path
472-
import electrumpersonalserver
471+
from pkg_resources import resource_filename
472+
from electrumpersonalserver import __certfile__, __keyfile__
473473
logger = logging.getLogger('ELECTRUMPERSONALSERVER')
474474
certfile = config.get('electrum-server', 'certfile', fallback=None)
475475
keyfile = config.get('electrum-server', 'keyfile', fallback=None)
476476
if (certfile and keyfile) and \
477477
(os.path.exists(certfile) and os.path.exists(keyfile)):
478478
return certfile, keyfile
479479
else:
480-
# platform independent top directory
481-
top = Path(os.path.dirname(electrumpersonalserver.__file__)).parts[:-4]
482-
certfile = os.path.join(*top, electrumpersonalserver.__certfile__)
483-
keyfile = os.path.join(*top, electrumpersonalserver.__keyfile__)
480+
certfile = resource_filename('electrumpersonalserver', __certfile__)
481+
keyfile = resource_filename('electrumpersonalserver', __keyfile__)
484482
if os.path.exists(certfile) and os.path.exists(keyfile):
485483
logger.info('using cert: {}, key: {}'.format(certfile, keyfile))
486484
return certfile, keyfile

setup.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -16,8 +16,8 @@
1616
"electrum-personal-server-rescan = electrumpersonalserver.server.common:rescan",
1717
]
1818
},
19+
package_data={"electrumpersonalserver": ["certs/*"]},
1920
data_files=[
20-
('etc/electrumpersonalserver/certs', ['certs/cert.crt', 'certs/cert.key'])
2121
("etc/electrum-personal-server", ["config.cfg_sample"]),
2222
("share/doc/electrum-personal-server", ["README.md"]),
2323
],

0 commit comments

Comments
 (0)