From 11495c582022558845446dcd89abf404bd3367bb Mon Sep 17 00:00:00 2001 From: Jakub Warmuz Date: Tue, 20 Oct 2015 20:16:12 +0000 Subject: [PATCH 1/3] Better logging for start/stop acme.standalone servers. --- acme/acme/standalone.py | 1 + letsencrypt/plugins/standalone.py | 9 +++++---- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/acme/acme/standalone.py b/acme/acme/standalone.py index 97e52fa9f..b0d8f08bd 100644 --- a/acme/acme/standalone.py +++ b/acme/acme/standalone.py @@ -55,6 +55,7 @@ class ACMEServerMixin: # pylint: disable=old-style-class def serve_forever2(self): """Serve forever, until other thread calls `shutdown2`.""" + logger.debug("Starting server at %s:%d...", *self.socket.getsockname()) while not self._stopped: self.handle_request() diff --git a/letsencrypt/plugins/standalone.py b/letsencrypt/plugins/standalone.py index 3ad823e9c..d548b2162 100644 --- a/letsencrypt/plugins/standalone.py +++ b/letsencrypt/plugins/standalone.py @@ -72,13 +72,12 @@ class ServerManager(object): except socket.error as error: raise errors.StandaloneBindError(error, port) - # if port == 0, then random free port on OS is taken - # pylint: disable=no-member - host, real_port = server.socket.getsockname() thread = threading.Thread(target=server.serve_forever2) - logger.debug("Starting server at %s:%d", host, real_port) thread.start() + # if port == 0, then random free port on OS is taken + # pylint: disable=no-member + _, real_port = server.socket.getsockname() self._instances[real_port] = self._Instance(server, thread) return server @@ -89,6 +88,8 @@ class ServerManager(object): """ instance = self._instances[port] + logger.debug("Stopping server at %s:%d...", + *instance.server.socket.getsockname()) instance.server.shutdown2() instance.thread.join() del self._instances[port] From aa67b83b382a1e8969cfc7438d9d4a042f925017 Mon Sep 17 00:00:00 2001 From: Jakub Warmuz Date: Tue, 20 Oct 2015 20:22:38 +0000 Subject: [PATCH 2/3] debug log version --- letsencrypt/cli.py | 1 + 1 file changed, 1 insertion(+) diff --git a/letsencrypt/cli.py b/letsencrypt/cli.py index 9090839a6..e10bed2e9 100644 --- a/letsencrypt/cli.py +++ b/letsencrypt/cli.py @@ -1042,6 +1042,7 @@ def main(cli_args=sys.argv[1:]): args.logs_dir, 0o700, os.geteuid(), "--strict-permissions" in cli_args) setup_logging(args, _cli_log_handler, logfile='letsencrypt.log') + logger.debug("letsencrypt version: %s", letsencrypt.__version__) # do not log `args`, as it contains sensitive data (e.g. revoke --key)! logger.debug("Arguments: %r", cli_args) logger.debug("Discovered plugins: %r", plugins) From e52922b11e0f519048a28e70db21610f81ac09df Mon Sep 17 00:00:00 2001 From: Jakub Warmuz Date: Tue, 20 Oct 2015 20:44:18 +0000 Subject: [PATCH 3/3] Fix getsockname usage with IPv6 --- acme/acme/standalone.py | 3 ++- acme/acme/standalone_test.py | 4 ++-- letsencrypt/plugins/standalone.py | 4 ++-- 3 files changed, 6 insertions(+), 5 deletions(-) diff --git a/acme/acme/standalone.py b/acme/acme/standalone.py index b0d8f08bd..49759bc07 100644 --- a/acme/acme/standalone.py +++ b/acme/acme/standalone.py @@ -55,7 +55,8 @@ class ACMEServerMixin: # pylint: disable=old-style-class def serve_forever2(self): """Serve forever, until other thread calls `shutdown2`.""" - logger.debug("Starting server at %s:%d...", *self.socket.getsockname()) + logger.debug("Starting server at %s:%d...", + *self.socket.getsockname()[:2]) while not self._stopped: self.handle_request() diff --git a/acme/acme/standalone_test.py b/acme/acme/standalone_test.py index 5dd6c2952..349581a3d 100644 --- a/acme/acme/standalone_test.py +++ b/acme/acme/standalone_test.py @@ -101,8 +101,8 @@ class DVSNIServerTest(unittest.TestCase): self.assertFalse(self.server._stopped) def test_dvsni(self): - cert = crypto_util.probe_sni( - b'localhost', *self.server.socket.getsockname()) + host, port = self.server.socket.getsockname()[:2] + cert = crypto_util.probe_sni(b'localhost', host=host, port=port) self.assertEqual(jose.ComparableX509(cert), jose.ComparableX509(self.certs[b'localhost'][1])) diff --git a/letsencrypt/plugins/standalone.py b/letsencrypt/plugins/standalone.py index d548b2162..d4dddc7f6 100644 --- a/letsencrypt/plugins/standalone.py +++ b/letsencrypt/plugins/standalone.py @@ -77,7 +77,7 @@ class ServerManager(object): # if port == 0, then random free port on OS is taken # pylint: disable=no-member - _, real_port = server.socket.getsockname() + real_port = server.socket.getsockname()[1] self._instances[real_port] = self._Instance(server, thread) return server @@ -89,7 +89,7 @@ class ServerManager(object): """ instance = self._instances[port] logger.debug("Stopping server at %s:%d...", - *instance.server.socket.getsockname()) + *instance.server.socket.getsockname()[:2]) instance.server.shutdown2() instance.thread.join() del self._instances[port]