initial commit
This commit is contained in:
commit
ea9fd28008
|
@ -0,0 +1,3 @@
|
||||||
|
testenv
|
||||||
|
__pycache__
|
||||||
|
circus.ini
|
|
@ -0,0 +1,38 @@
|
||||||
|
|
||||||
|
VENV := /opt/extpython/python3.6/bin/virtualenv
|
||||||
|
SERVER_HOST := 127.0.0.1
|
||||||
|
SERVER_PORT := 7100
|
||||||
|
.DEFAULT_GOAL := run
|
||||||
|
|
||||||
|
|
||||||
|
virtualenv: testenv
|
||||||
|
|
||||||
|
|
||||||
|
testenv:
|
||||||
|
rm -rf testenv
|
||||||
|
$(VENV) testenv
|
||||||
|
. testenv/bin/activate && pip3 install -r requirements.txt
|
||||||
|
|
||||||
|
|
||||||
|
.PHONY: circus.ini
|
||||||
|
circus.ini: virtualenv
|
||||||
|
. testenv/bin/activate && ./genconf.py $(SERVER_HOST) $(SERVER_PORT) > circus.ini
|
||||||
|
|
||||||
|
|
||||||
|
.PHONY: run
|
||||||
|
run: circus.ini
|
||||||
|
. testenv/bin/activate && circusd circus.ini
|
||||||
|
|
||||||
|
|
||||||
|
.PHONY: daemon
|
||||||
|
daemon: circus.ini
|
||||||
|
. testenv/bin/activate && circusd --daemon circus.ini
|
||||||
|
|
||||||
|
|
||||||
|
.PHONY: kill
|
||||||
|
kill:
|
||||||
|
pkill circusd
|
||||||
|
|
||||||
|
|
||||||
|
clean:
|
||||||
|
rm -rf testenv circus.ini
|
|
@ -0,0 +1 @@
|
||||||
|
*
|
|
@ -0,0 +1,45 @@
|
||||||
|
#!/usr/bin/env python3
|
||||||
|
import os
|
||||||
|
import sys
|
||||||
|
|
||||||
|
|
||||||
|
timefmt = "%Y-%m-%d %H:%M:%S".replace("%", "%%")
|
||||||
|
|
||||||
|
|
||||||
|
def main(host, port):
|
||||||
|
"""
|
||||||
|
Generate a circus conf to run all the plugins
|
||||||
|
"""
|
||||||
|
os.chdir(os.path.abspath(os.path.dirname(__file__)))
|
||||||
|
print("[circus]\ncheck_delay = 2\nwarmup_delay = 1\nloglevel = DEBUG\n")
|
||||||
|
|
||||||
|
for plugin in os.listdir("plugins"):
|
||||||
|
if any([plugin.startswith(x) for x in [".", "_"]]):
|
||||||
|
continue
|
||||||
|
name = plugin.split(".")[0]
|
||||||
|
|
||||||
|
print("[watcher:{name}]\n"
|
||||||
|
"cmd = ../../plugins/{plugin}\n"
|
||||||
|
"args = -i {host} -p {port}\n"
|
||||||
|
"working_dir = data/{name}\n"
|
||||||
|
"numprocesses = 1\n"
|
||||||
|
"copy_env = True\n"
|
||||||
|
"stop_children = True\n"
|
||||||
|
"stdout_stream.class = FileStream\n"
|
||||||
|
"stdout_stream.filename = ./data/logs/{name}.log\n"
|
||||||
|
"stdout_stream.time_format = {timefmt}\n"
|
||||||
|
"stderr_stream.class = FileStream\n"
|
||||||
|
"stderr_stream.filename = ./data/logs/{name}.log\n"
|
||||||
|
"stderr_stream.time_format = {timefmt}\n"
|
||||||
|
"respawn = True\n".format(host=host, port=port, name=name, plugin=plugin, timefmt=timefmt))
|
||||||
|
|
||||||
|
os.makedirs("./data/{}".format(name), exist_ok=True)
|
||||||
|
|
||||||
|
|
||||||
|
if __name__ == '__main__':
|
||||||
|
try:
|
||||||
|
host, port = sys.argv[1:]
|
||||||
|
except ValueError:
|
||||||
|
print("usage:", __file__, "host port")
|
||||||
|
sys.exit(2)
|
||||||
|
main(host, port)
|
|
@ -0,0 +1,16 @@
|
||||||
|
import argparse
|
||||||
|
import logging
|
||||||
|
|
||||||
|
|
||||||
|
def get_args(parser=None):
|
||||||
|
if not parser:
|
||||||
|
parser = argparse.ArgumentParser(description="irc bot plugin")
|
||||||
|
parser.add_argument("-i", "--host", default="127.0.0.1", help="host to connect to")
|
||||||
|
parser.add_argument("-p", "--port", default=7003, help="port to connect to")
|
||||||
|
return parser.parse_args()
|
||||||
|
|
||||||
|
|
||||||
|
def get_logger():
|
||||||
|
logging.basicConfig(level=logging.INFO,
|
||||||
|
format="%(asctime)-15s %(levelname)-8s %(filename)s:%(lineno)d %(message)s")
|
||||||
|
return logging.getLogger()
|
|
@ -0,0 +1,26 @@
|
||||||
|
#!/usr/bin/env python3
|
||||||
|
|
||||||
|
from _common import get_args
|
||||||
|
from contextlib import closing
|
||||||
|
from msgbus.client import MsgbusSubClient
|
||||||
|
from json import dumps, loads
|
||||||
|
|
||||||
|
|
||||||
|
def main():
|
||||||
|
args = get_args()
|
||||||
|
with closing(MsgbusSubClient(args.host, args.port)) as client:
|
||||||
|
client.sub("pyircbot_command_ping") # subscribe to .ping commnad
|
||||||
|
while True:
|
||||||
|
channel, msg = client.recv()
|
||||||
|
_, rest = msg.split(" ", 1)
|
||||||
|
channel, sender, trailing, extras = loads(rest)
|
||||||
|
channel = channel[0]
|
||||||
|
if not channel[0] == "#":
|
||||||
|
# ignore PMs
|
||||||
|
continue
|
||||||
|
print("Pong: {} in {}".format(sender, channel))
|
||||||
|
client.pub("pyircbot_send", "default privmsg {}".format(dumps([channel, "{}: pong".format(sender)])))
|
||||||
|
|
||||||
|
|
||||||
|
if __name__ == '__main__':
|
||||||
|
main()
|
|
@ -0,0 +1,8 @@
|
||||||
|
git+http://gitlab.davepedu.com/dave/pymsgbus.git
|
||||||
|
pyzmq==16.0.2
|
||||||
|
circus==0.14.0
|
||||||
|
iowait==0.2
|
||||||
|
meld3==1.0.2
|
||||||
|
psutil==5.3.1
|
||||||
|
tornado==4.5.2
|
||||||
|
|
Loading…
Reference in New Issue