You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
44 lines
1.1 KiB
Python
44 lines
1.1 KiB
Python
#!/usr/bin/env python2
|
|
|
|
import zmq, yaml, binascii, nacl, sys, subprocess, os
|
|
from nacl.public import PublicKey, PrivateKey, Box
|
|
|
|
basedir = os.path.dirname(os.path.realpath(__file__))
|
|
|
|
with open("cstatsd.pid", "w") as pidfile:
|
|
pidfile.write(str(os.getpid()))
|
|
|
|
ctx = zmq.Context()
|
|
|
|
with open("config/cstatsd.yaml", "r") as cfile:
|
|
config = yaml.safe_load(cfile)
|
|
|
|
pubkey = PublicKey(binascii.unhexlify(config["pubkey"]))
|
|
|
|
with open("privkey.dat", "r") as f:
|
|
privkey = PrivateKey(binascii.unhexlify(f.read()))
|
|
|
|
box = Box(privkey, pubkey)
|
|
|
|
collector = ctx.socket(zmq.PULL)
|
|
collector.bind("ipc:///tmp/cstatsd")
|
|
|
|
shipper = ctx.socket(zmq.PUSH)
|
|
shipper.bind(config["endpoint"])
|
|
|
|
try:
|
|
disable_autostart = (sys.argv[1] == "--disable-autostart")
|
|
except:
|
|
disable_autostart = False
|
|
|
|
if disable_autostart == False:
|
|
with open("/dev/null", "w+") as stfu:
|
|
for script in config["autostart"]:
|
|
print os.path.join(basedir, script)
|
|
subprocess.Popen([os.path.join(basedir, script)], stdout=stfu, stderr=stfu)
|
|
|
|
while True:
|
|
message = collector.recv()
|
|
nonce = nacl.utils.random(Box.NONCE_SIZE)
|
|
shipper.send(box.encrypt(message, nonce))
|