From 717b557610daca6c3fe30771501306e1edc70977 Mon Sep 17 00:00:00 2001 From: Daniel Oaks Date: Thu, 1 Dec 2016 19:43:30 +1000 Subject: [PATCH] Add gIRC controller --- irctest/controllers/girc.py | 44 +++++++++++++++++++++++++++++++++++++ 1 file changed, 44 insertions(+) create mode 100644 irctest/controllers/girc.py diff --git a/irctest/controllers/girc.py b/irctest/controllers/girc.py new file mode 100644 index 0000000..4dc8197 --- /dev/null +++ b/irctest/controllers/girc.py @@ -0,0 +1,44 @@ +import subprocess + +from irctest.basecontrollers import BaseClientController, NotImplementedByController + +class GircController(BaseClientController): + software_name = 'gIRC' + + def __init__(self): + super().__init__() + self.directory = None + self.proc = None + self.supported_sasl_mechanisms = ['PLAIN'] + + def kill(self): + if self.proc: + self.proc.terminate() + try: + self.proc.wait(5) + except subprocess.TimeoutExpired: + self.proc.kill() + self.proc = None + + def __del__(self): + if self.proc: + self.proc.kill() + if self.directory: + self.directory.cleanup() + + def run(self, hostname, port, auth, tls_config): + if tls_config: + print(tls_config) + raise NotImplementedByController('TLS options') + args = ['--host', hostname, '--port', str(port), '--quiet'] + + if auth and auth.username and auth.password: + args += ['--sasl-name', auth.username] + args += ['--sasl-pass', auth.password] + args += ['--sasl-fail-is-ok'] + + # Runs a client with the config given as arguments + self.proc = subprocess.Popen(['girc_test', 'connect'] + args) + +def get_irctest_controller_class(): + return GircController