forked from megashurik/sentinel
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
60 lines
1.7 KiB
60 lines
1.7 KiB
import sys
|
|
import os
|
|
import io
|
|
import re
|
|
sys.path.append(os.path.join(os.path.dirname(__file__), '..'))
|
|
sys.path.append(os.path.join(os.path.dirname(__file__), '..', 'lib'))
|
|
from misc import printdbg
|
|
|
|
|
|
class DashConfig():
|
|
|
|
@classmethod
|
|
def slurp_config_file(self, filename):
|
|
# read dash.conf config but skip commented lines
|
|
f = io.open(filename)
|
|
lines = []
|
|
for line in f:
|
|
if re.match(r'^\s*#', line):
|
|
continue
|
|
lines.append(line)
|
|
f.close()
|
|
|
|
# data is dash.conf without commented lines
|
|
data = ''.join(lines)
|
|
|
|
return data
|
|
|
|
@classmethod
|
|
def get_rpc_creds(self, data, network='mainnet'):
|
|
# get rpc info from dash.conf
|
|
match = re.findall(r'rpc(user|password|port)=(.*?)$', data, re.MULTILINE)
|
|
|
|
# python >= 2.7
|
|
creds = {key: value for (key, value) in match}
|
|
|
|
# standard Dash defaults...
|
|
default_port = 9998 if (network == 'mainnet') else 19998
|
|
|
|
# use default port for network if not specified in dash.conf
|
|
if not ('port' in creds):
|
|
creds[u'port'] = default_port
|
|
|
|
# convert to an int if taken from dash.conf
|
|
creds[u'port'] = int(creds[u'port'])
|
|
|
|
# return a dictionary with RPC credential key, value pairs
|
|
return creds
|
|
|
|
@classmethod
|
|
def tokenize(self, filename):
|
|
tokens = {}
|
|
try:
|
|
data = self.slurp_config_file(filename)
|
|
match = re.findall(r'(.*?)=(.*?)$', data, re.MULTILINE)
|
|
tokens = {key: value for (key, value) in match}
|
|
except IOError as e:
|
|
printdbg("[warning] error reading config file: %s" % e)
|
|
|
|
return tokens
|