mirror of
https://github.com/darkrenaissance/darkfi.git
synced 2026-01-14 17:18:08 -05:00
66 lines
2.1 KiB
Python
66 lines
2.1 KiB
Python
# -*- coding: utf-8 -*-
|
|
|
|
import signal
|
|
import irc
|
|
import argparse
|
|
|
|
# parse arguments
|
|
parser = argparse.ArgumentParser(description='IRC bot to mirror msgs from a server to another')
|
|
parser.add_argument('--server-from',default='127.0.0.1', help='First IRC server')
|
|
parser.add_argument('--port-from', default=22024, type=int, help='port of the first IRC server')
|
|
parser.add_argument('--server-to',default='127.0.0.1', help='Second IRC server')
|
|
parser.add_argument('--port-to', default=22028, type=int, help='port of the second IRC server')
|
|
parser.add_argument('--channels',
|
|
default=["#dev", "#memes", "#philosophy", "#markets", "#math", "#random", "#test"],
|
|
nargs='+', help='channels to join')
|
|
parser.add_argument('--nickname', default="mirror-bot", help='bot nickname in IRC')
|
|
|
|
args = parser.parse_args()
|
|
|
|
botnick = args.nickname
|
|
|
|
## Server 1
|
|
darkirc_server = args.server_from
|
|
darkirc_port = args.port_from
|
|
darkirc_channels = args.channels
|
|
|
|
darkirc = irc.IRC()
|
|
darkirc.connect(darkirc_server, darkirc_port, darkirc_channels, botnick)
|
|
|
|
## Server 2
|
|
ircd_server = args.server_to
|
|
ircd_port = args.port_to
|
|
ircd_channels = args.channels
|
|
|
|
ircd = irc.IRC()
|
|
ircd.connect(ircd_server, ircd_port, ircd_channels, botnick)
|
|
|
|
def signal_handler(sig, frame):
|
|
print("Caught termination signal, cleaning up and exiting...")
|
|
ircd.disconnect(args.server_to, args.port_to)
|
|
darkirc.disconnect(args.server_from, args.port_from)
|
|
print("Shut down successfully")
|
|
exit(0)
|
|
|
|
signal.signal(signal.SIGINT, signal_handler)
|
|
|
|
|
|
while True:
|
|
darkirc_text = darkirc.get_response()
|
|
if not len(darkirc_text.strip()) > 0:
|
|
print("Error: disconnected from server")
|
|
exit(-1)
|
|
|
|
print(darkirc_text)
|
|
text_list = darkirc_text.split(' ')
|
|
command = text_list[1]
|
|
nick_handle = text_list[0]
|
|
|
|
if command == "PRIVMSG":
|
|
nickname = nick_handle[nick_handle.find(':')+1 : nick_handle.find('!')]
|
|
channel = text_list[2]
|
|
msg = ' '.join(text_list[3:])
|
|
message = msg[msg.find(':')+1:].rstrip()
|
|
|
|
ircd.send(channel, f"<{nickname}>: {message}")
|