From dfd2e8b4e6d77a59a18f4a40b09c878242413d58 Mon Sep 17 00:00:00 2001 From: Roberto Espinoza Date: Tue, 25 Sep 2018 00:12:37 +0900 Subject: [PATCH] [WebServerBundle] Added ability to display the current hostname address if available when binding to 0.0.0.0 --- src/Symfony/Bundle/WebServerBundle/CHANGELOG.md | 1 + .../WebServerBundle/Command/ServerRunCommand.php | 6 +++++- .../Command/ServerStartCommand.php | 6 +++++- .../Bundle/WebServerBundle/WebServerConfig.php | 16 ++++++++++++++++ 4 files changed, 27 insertions(+), 2 deletions(-) diff --git a/src/Symfony/Bundle/WebServerBundle/CHANGELOG.md b/src/Symfony/Bundle/WebServerBundle/CHANGELOG.md index 45eff9240afe8..cbc9a86b09ef5 100644 --- a/src/Symfony/Bundle/WebServerBundle/CHANGELOG.md +++ b/src/Symfony/Bundle/WebServerBundle/CHANGELOG.md @@ -6,6 +6,7 @@ CHANGELOG * Deprecated omitting the `$environment` argument of the `ServerRunCommand` and `ServerStartCommand` constructors + * Added ability to display the current hostname address if available when binding to 0.0.0.0 3.4.0 ----- diff --git a/src/Symfony/Bundle/WebServerBundle/Command/ServerRunCommand.php b/src/Symfony/Bundle/WebServerBundle/Command/ServerRunCommand.php index 10b2de7fa384b..5cac3065174f8 100644 --- a/src/Symfony/Bundle/WebServerBundle/Command/ServerRunCommand.php +++ b/src/Symfony/Bundle/WebServerBundle/Command/ServerRunCommand.php @@ -137,7 +137,11 @@ protected function execute(InputInterface $input, OutputInterface $output) $server = new WebServer(); $config = new WebServerConfig($documentRoot, $env, $input->getArgument('addressport'), $input->getOption('router')); - $io->success(sprintf('Server listening on http://%s', $config->getAddress())); + $message = sprintf('Server listening on http://%s', $config->getAddress()); + if ('' !== $displayAddress = $config->getDisplayAddress()) { + $message = sprintf('Server listening on all interfaces, port %s -- see http://%s', $config->getPort(), $displayAddress); + } + $io->success($message); if (ini_get('xdebug.profiler_enable_trigger')) { $io->comment('Xdebug profiler trigger enabled.'); } diff --git a/src/Symfony/Bundle/WebServerBundle/Command/ServerStartCommand.php b/src/Symfony/Bundle/WebServerBundle/Command/ServerStartCommand.php index ac10072ab4ba6..a168758d6620d 100644 --- a/src/Symfony/Bundle/WebServerBundle/Command/ServerStartCommand.php +++ b/src/Symfony/Bundle/WebServerBundle/Command/ServerStartCommand.php @@ -148,7 +148,11 @@ protected function execute(InputInterface $input, OutputInterface $output) $config = new WebServerConfig($documentRoot, $env, $input->getArgument('addressport'), $input->getOption('router')); if (WebServer::STARTED === $server->start($config, $input->getOption('pidfile'))) { - $io->success(sprintf('Server listening on http://%s', $config->getAddress())); + $message = sprintf('Server listening on http://%s', $config->getAddress()); + if ('' !== $displayAddress = $config->getDisplayAddress()) { + $message = sprintf('Server listening on all interfaces, port %s -- see http://%s', $config->getPort(), $displayAddress); + } + $io->success($message); if (ini_get('xdebug.profiler_enable_trigger')) { $io->comment('Xdebug profiler trigger enabled.'); } diff --git a/src/Symfony/Bundle/WebServerBundle/WebServerConfig.php b/src/Symfony/Bundle/WebServerBundle/WebServerConfig.php index 8a46208eadef2..275926c18ef49 100644 --- a/src/Symfony/Bundle/WebServerBundle/WebServerConfig.php +++ b/src/Symfony/Bundle/WebServerBundle/WebServerConfig.php @@ -101,6 +101,22 @@ public function getAddress() return $this->hostname.':'.$this->port; } + /** + * @return string contains resolved hostname if available, empty string otherwise + */ + public function getDisplayAddress() + { + if ('0.0.0.0' !== $this->hostname) { + return ''; + } + + if (false === $localHostname = gethostname()) { + return ''; + } + + return gethostbyname($localHostname).':'.$this->port; + } + private function findFrontController($documentRoot, $env) { $fileNames = $this->getFrontControllerFileNames($env);