aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAva Chow <github@achow101.com>2024-04-25 13:55:37 -0400
committerAva Chow <github@achow101.com>2024-04-25 13:55:47 -0400
commit206629517270f6a51cd38a27552e71405b661c55 (patch)
tree5fac0868d91d45cd73598114b3f4fc8b898c8aea
parent50b09e8173d018d63e7e3623424497953257a54a (diff)
parent9adf949d2aa6d199b85295b18c08967395b5570a (diff)
downloadbitcoin-206629517270f6a51cd38a27552e71405b661c55.tar.xz
Merge bitcoin/bitcoin#29433: contrib: rpcauth.py - Add new option (-json) to output text in json format
9adf949d2aa6d199b85295b18c08967395b5570a contrib: rpcauth.py - Add new option (-j/--json) to output text in json format (bstin) Pull request description: This is a simple change to rpcauth.py utility in order to output as json instead raw text. This is beneficial because integrating json output is simpler with multiple different forms of automation and tooling ACKs for top commit: maflcko: ACK 9adf949d2aa6d199b85295b18c08967395b5570a achow101: ACK 9adf949d2aa6d199b85295b18c08967395b5570a willcl-ark: tACK 9adf949d2aa6d199b85295b18c08967395b5570a tdb3: ACK for 9adf949d2aa6d199b85295b18c08967395b5570a Tree-SHA512: 2cdc3b2071fbe4fb32a84ce42ee8ad216cff96ed82aaef58daeb3991953ac137ae42d6898a7fdb6cbd1800e1f61ff8d292f0b150eaebdd2a3fd9d37ed7450787
-rw-r--r--share/rpcauth/README.md1
-rwxr-xr-xshare/rpcauth/rpcauth.py12
2 files changed, 10 insertions, 3 deletions
diff --git a/share/rpcauth/README.md b/share/rpcauth/README.md
index 6f627b867b..1b3acb1dac 100644
--- a/share/rpcauth/README.md
+++ b/share/rpcauth/README.md
@@ -15,4 +15,5 @@ positional arguments:
optional arguments:
-h, --help show this help message and exit
+ -j, --json output data in json format
```
diff --git a/share/rpcauth/rpcauth.py b/share/rpcauth/rpcauth.py
index cc7bba1f8b..506fcf9d91 100755
--- a/share/rpcauth/rpcauth.py
+++ b/share/rpcauth/rpcauth.py
@@ -7,6 +7,7 @@ from argparse import ArgumentParser
from getpass import getpass
from secrets import token_hex, token_urlsafe
import hmac
+import json
def generate_salt(size):
"""Create size byte hex salt"""
@@ -24,6 +25,7 @@ def main():
parser = ArgumentParser(description='Create login credentials for a JSON-RPC user')
parser.add_argument('username', help='the username for authentication')
parser.add_argument('password', help='leave empty to generate a random password or specify "-" to prompt for password', nargs='?')
+ parser.add_argument("-j", "--json", help="output to json instead of plain-text", action='store_true')
args = parser.parse_args()
if not args.password:
@@ -35,9 +37,13 @@ def main():
salt = generate_salt(16)
password_hmac = password_to_hmac(salt, args.password)
- print('String to be appended to bitcoin.conf:')
- print(f'rpcauth={args.username}:{salt}${password_hmac}')
- print(f'Your password:\n{args.password}')
+ if args.json:
+ odict={'username':args.username, 'password':args.password, 'rpcauth':f'{args.username}:{salt}${password_hmac}'}
+ print(json.dumps(odict))
+ else:
+ print('String to be appended to bitcoin.conf:')
+ print(f'rpcauth={args.username}:{salt}${password_hmac}')
+ print(f'Your password:\n{args.password}')
if __name__ == '__main__':
main()