this script made/tested on ubuntu/debian based systems.
usage
$ sudo python installer.py
import os | |
import sys | |
import urllib2 | |
import urllib | |
import json | |
import time | |
import re | |
import getpass | |
INSTALL_PATH = '/srv/' | |
CONF_FILE = os.path.join(INSTALL_PATH, "hz/conf/nhz-default.properties") | |
NHZ_PATH = os.path.join(INSTALL_PATH, "hz") | |
SUPERVISOR_CONF = "/etc/supervisor/conf.d/hz.conf" | |
def make_get(url): | |
response = urllib2.urlopen(url) | |
html = response.read() | |
return html | |
def make_post(url, data): | |
data = urllib.urlencode(data) | |
req = urllib2.Request(url=url,data=data) | |
content = urllib2.urlopen(req).read() | |
return content | |
def installed(): | |
return os.path.exists(CONF_FILE) | |
def edited(ip): | |
return ip in open(CONF_FILE).read() | |
def get_ip(): | |
return json.loads(make_get("http://httpbin.org/ip"))["origin"] | |
def create_hallmark(ip, secret): | |
endpoint = 'http://127.0.0.1:7776/nhz' | |
content = make_post(endpoint, { | |
"requestType": "markHost", | |
"host": ip, | |
"weight": 100, | |
"date": "2013-12-10", | |
"secretPhrase": secret, | |
}) | |
return json.loads(content)["hallmark"] | |
def update_config(ip, hallmark): | |
conf_content = open(CONF_FILE).read() | |
conf_content = re.sub("nhz.myHallmark=([^\n]*)\n", "nhz.myHallmark={}".format(hallmark), conf_content) | |
conf_content = re.sub("nhz.myAddress=([^\n]*)\n", "nhz.myAddress={}".format(ip), conf_content) | |
f = open(CONF_FILE, 'w+') | |
f.write(conf_content) | |
f.close() | |
print "config updated with addr: {}, hallmark: {}".format(ip, hallmark) | |
def write_supervisor_config(): | |
if not os.path.exists(os.path.dirname(SUPERVISOR_CONF)): | |
os.makedirs(os.path.dirname(SUPERVISOR_CONF)) | |
file_content = """[program:quark] | |
directory={} | |
command=/bin/sh run.sh | |
stdout_logfile=/var/log/nhz.log | |
stderr_logfile=/var/log/nhz.error.log | |
autorestart=true""".format(NHZ_PATH) | |
f = open(SUPERVISOR_CONF, "w+") | |
f.write(file_content) | |
f.close() | |
def main(): | |
try: | |
f = open("/root/sec-test", "w+") | |
f.close() | |
except IOError: | |
print >> sys.stderr, "You need root permissions to run this script." | |
sys.exit(1) | |
if not installed(): | |
print "installing dependencies..." | |
os.system("apt-get update -y") | |
os.system("apt-get install -y screen") | |
os.system("apt-get install -y openjdk-7-jre") | |
os.system("apt-get install -y unzip") | |
os.system("apt-get install -y supervisor") | |
os.chdir(INSTALL_PATH) | |
os.system("wget http://downloads.horizonplatform.io/binaries/hz_v3.8.zip") | |
os.system("unzip hz_v3.8.zip") | |
# open port | |
os.system("iptables -A INPUT -p tcp -d 0/0 -s 0/0 --dport 7774 -j ACCEPT") | |
os.chdir(NHZ_PATH) | |
ip = get_ip() | |
if not edited(ip): | |
os.system("screen -d -m -S hallmark ./run.sh") | |
print "waiting 30 seconds for node to set itself up..." | |
time.sleep(30) | |
try: | |
hallmark = create_hallmark(ip, getpass.getpass("enter your secret phrase:\n")) | |
update_config(ip, hallmark) | |
finally: | |
os.system("screen -S hallmark -X quit") | |
write_supervisor_config() | |
print "starting supervisord" | |
os.system("service supervisor stop") | |
time.sleep(3) | |
os.system("service supervisor start") | |
print "-" * 42 | |
print "success! your hallmark node set on ip: {}".format(ip) | |
print "NHZ address for donations: NHZ-MGUU-WTUR-JC6K-DREBV" | |
print "thanks!" | |
print "-" * 42 | |
if __name__ == '__main__': | |
main() |
import requests | |
from clint.textui import puts, indent, colored | |
NODE_LIST = [ | |
"ip", | |
"ip2", | |
"ipN", | |
] | |
for node in NODE_LIST: | |
response = requests.get("http://explorer.nhzcrypto.org/api.php?page=nodecheck&nodeAddress={0}".format(node)) | |
result = response.json() | |
next_payout = "" | |
if result.get("error"): | |
state = colored.red("down") | |
else: | |
if result["sbs"]["state"] == 'ONLINE': | |
state = colored.green("up") | |
next_payout = str(result["sbs"]["next_payout"]) + "m" | |
else: | |
state = colored.magenta("not detected") | |
with indent(2): | |
puts("{0} {1} {2}".format(node, state, next_payout)) |
Hello,
Great script but I have a error with nodechecker.py :
File "nodechecker.py", line 13, in
response = requests.get("http://explorer.nhzcrypto.org/api.php?page=nodecheck&nodeAddress={0}".format(node))
File "/usr/local/lib/python2.7/dist-packages/requests-2.6.0-py2.7.egg/requests/api.py", line 68, in get
return request('get', url, *_kwargs)
File "/usr/local/lib/python2.7/dist-packages/requests-2.6.0-py2.7.egg/requests/api.py", line 50, in request
response = session.request(method=method, url=url, *_kwargs)
File "/usr/local/lib/python2.7/dist-packages/requests-2.6.0-py2.7.egg/requests/sessions.py", line 464, in request
resp = self.send(prep, *_send_kwargs)
File "/usr/local/lib/python2.7/dist-packages/requests-2.6.0-py2.7.egg/requests/sessions.py", line 602, in send
history = [resp for resp in gen] if allow_redirects else []
File "/usr/local/lib/python2.7/dist-packages/requests-2.6.0-py2.7.egg/requests/sessions.py", line 195, in resolve_redirects
allow_redirects=False,
File "/usr/local/lib/python2.7/dist-packages/requests-2.6.0-py2.7.egg/requests/sessions.py", line 576, in send
r = adapter.send(request, *_kwargs)
File "/usr/local/lib/python2.7/dist-packages/requests-2.6.0-py2.7.egg/requests/adapters.py", line 431, in send
It's normal ? or not ? :-)
Thanks