@@ -0,0 +1,1335 @@
+import subprocess%0A%0Afrom irctest.basecontrollers import BaseClientController, NotImplementedByController%0A%0Aclass GircController(BaseClientController):%0A    software_name = 'gIRC'%0A%0A    def __init__(self):%0A        super().__init__()%0A        self.directory = None%0A        self.proc = None%0A        self.supported_sasl_mechanisms = %5B'PLAIN'%5D%0A%0A    def kill(self):%0A        if self.proc:%0A            self.proc.terminate()%0A            try:%0A                self.proc.wait(5)%0A            except subprocess.TimeoutExpired:%0A                self.proc.kill()%0A            self.proc = None%0A%0A    def __del__(self):%0A        if self.proc:%0A            self.proc.kill()%0A        if self.directory:%0A            self.directory.cleanup()%0A%0A    def run(self, hostname, port, auth, tls_config):%0A        if tls_config:%0A            print(tls_config)%0A            raise NotImplementedByController('TLS options')%0A        args = %5B'--host', hostname, '--port', str(port), '--quiet'%5D%0A%0A        if auth and auth.username and auth.password:%0A            args += %5B'--sasl-name', auth.username%5D%0A            args += %5B'--sasl-pass', auth.password%5D%0A            args += %5B'--sasl-fail-is-ok'%5D%0A%0A        # Runs a client with the config given as arguments%0A        self.proc = subprocess.Popen(%5B'girc_test', 'connect'%5D + args)%0A%0Adef get_irctest_controller_class():%0A    return GircController%0A

Add gIRC controller