-
Notifications
You must be signed in to change notification settings - Fork 1
/
client.py
72 lines (60 loc) · 2.46 KB
/
client.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
import requests, argparse, time, sys, os, logging
from daemonize import Daemonize
logger = logging.getLogger(__name__)
logger.setLevel(logging.DEBUG)
logger.propagate = False
fh = logging.FileHandler("/tmp/client.log", "w")
fh.setLevel(logging.DEBUG)
logger.addHandler(fh)
keep_fds = [fh.stream.fileno()]
parser = argparse.ArgumentParser()
parser.add_argument("--rai_node_uri", help='rai_nodes uri, usually 127.0.0.1', default='127.0.0.1')
parser.add_argument("--rai_node_port", help='rai_node port, usually 7076', default='7076')
parser.add_argument("--api_key", help='api key, get from jaycox on discord')
parser.add_argument("--daemon", help='start as daemon', default = False)
args = parser.parse_args()
def main():
api_key = args.api_key
logger.debug(api_key)
if api_key == None:
logger.debug("Error - no api key")
sys.exit()
rai_node_address = 'http://%s:%s' % (args.rai_node_uri, args.rai_node_port)
def get_data(json_request):
try:
r = requests.post(rai_node_address, data = json_request)
return r
except:
message_list.append("Error - no connection to Nano node")
return "Error"
while True:
logger.debug("Grab Quorum Data")
json_request = '{"action" : "confirmation_quorum", "peer_details" : 1}'
r = get_data(json_request)
if r == "Error":
break
resulting_data = r.json()
logger.debug(resulting_data)
logger.debug("Grab peers")
peer_req = '{"action":"peers"}'
peer_raw = get_data(peer_req)
peer_json = peer_raw.json()
# logger.debug(peer_json)
logger.debug("Send to server")
payload = {'api_key': api_key, 'online_stake_total' : resulting_data['online_stake_total'], 'peers_stake_total' : resulting_data['peers_stake_total'], 'quorum_delta' : resulting_data['quorum_delta'], 'peers' : peer_json, 'rebroadcast_peers' : resulting_data['peers']}
try:
r = requests.post('http://138.68.170.107:7092/callback/', json = payload)
logger.debug(r.text)
if args.daemon == False:
print(r.text)
except:
pass
time.sleep(1)
if __name__ == '__main__':
if args.daemon == True:
myname=os.path.basename(sys.argv[0])
pidfile='/tmp/%s' % myname # any name
daemon = Daemonize(app=myname,pid=pidfile, action=main, keep_fds=keep_fds)
daemon.start()
else:
main()