Datadir option in linearize scripts
Adds a datadir configuration option to the linearize scripts to allow the script to use the RPC cookie instead of requiring the user to set a rpcuser and rpcpassword for the rpc server.
This commit is contained in:
parent
5114f81136
commit
bd41d9831f
3 changed files with 25 additions and 2 deletions
|
@ -7,7 +7,8 @@ run using Python 3 but are compatible with Python 2.
|
|||
$ ./linearize-hashes.py linearize.cfg > hashlist.txt
|
||||
|
||||
Required configuration file settings for linearize-hashes:
|
||||
* RPC: `rpcuser`, `rpcpassword`
|
||||
* RPC: `datadir` (Required if `rpcuser` and `rpcpassword` are not specified)
|
||||
* RPC: `rpcuser`, `rpcpassword` (Required if `datadir` is not specified)
|
||||
|
||||
Optional config file setting for linearize-hashes:
|
||||
* RPC: `host` (Default: `127.0.0.1`)
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
# bitcoind RPC settings (linearize-hashes)
|
||||
rpcuser=someuser
|
||||
rpcpassword=somepassword
|
||||
#datadir=~/.bitcoin
|
||||
host=127.0.0.1
|
||||
port=8332
|
||||
#port=18332
|
||||
|
|
|
@ -16,6 +16,8 @@ import json
|
|||
import re
|
||||
import base64
|
||||
import sys
|
||||
import os
|
||||
import os.path
|
||||
|
||||
settings = {}
|
||||
|
||||
|
@ -93,6 +95,14 @@ def get_block_hashes(settings, max_blocks_per_call=10000):
|
|||
|
||||
height += num_blocks
|
||||
|
||||
def get_rpc_cookie():
|
||||
# Open the cookie file
|
||||
with open(os.path.join(os.path.expanduser(settings['datadir']), '.cookie'), 'r') as f:
|
||||
combined = f.readline()
|
||||
combined_split = combined.split(":")
|
||||
settings['rpcuser'] = combined_split[0]
|
||||
settings['rpcpassword'] = combined_split[1]
|
||||
|
||||
if __name__ == '__main__':
|
||||
if len(sys.argv) != 2:
|
||||
print("Usage: linearize-hashes.py CONFIG-FILE")
|
||||
|
@ -122,8 +132,15 @@ if __name__ == '__main__':
|
|||
settings['max_height'] = 313000
|
||||
if 'rev_hash_bytes' not in settings:
|
||||
settings['rev_hash_bytes'] = 'false'
|
||||
|
||||
use_userpass = True
|
||||
use_datadir = False
|
||||
if 'rpcuser' not in settings or 'rpcpassword' not in settings:
|
||||
print("Missing username and/or password in cfg file", file=stderr)
|
||||
use_userpass = False
|
||||
if 'datadir' in settings and not use_userpass:
|
||||
use_datadir = True
|
||||
if not use_userpass and not use_datadir:
|
||||
print("Missing datadir or username and/or password in cfg file", file=stderr)
|
||||
sys.exit(1)
|
||||
|
||||
settings['port'] = int(settings['port'])
|
||||
|
@ -133,4 +150,8 @@ if __name__ == '__main__':
|
|||
# Force hash byte format setting to be lowercase to make comparisons easier.
|
||||
settings['rev_hash_bytes'] = settings['rev_hash_bytes'].lower()
|
||||
|
||||
# Get the rpc user and pass from the cookie if the datadir is set
|
||||
if use_datadir:
|
||||
get_rpc_cookie()
|
||||
|
||||
get_block_hashes(settings)
|
||||
|
|
Loading…
Reference in a new issue