From c0e328b68998c28a335bdaa9f2aa1d8599c63954 Mon Sep 17 00:00:00 2001
From: Joe Haddad <timer150@gmail.com>
Date: Sun, 21 May 2017 15:44:28 -0400
Subject: [PATCH] Ensure address is private (#2297)

* Ensure address is private
Resolves #2296

* adjust rule

* Update WebpackDevServerUtils.js
---
 packages/react-dev-utils/WebpackDevServerUtils.js | 15 ++++++++++++++-
 1 file changed, 14 insertions(+), 1 deletion(-)

diff --git a/packages/react-dev-utils/WebpackDevServerUtils.js b/packages/react-dev-utils/WebpackDevServerUtils.js
index 4fcd719087b..02ce10f3e9b 100644
--- a/packages/react-dev-utils/WebpackDevServerUtils.js
+++ b/packages/react-dev-utils/WebpackDevServerUtils.js
@@ -52,9 +52,22 @@ function prepareUrls(protocol, host, port) {
   if (isUnspecifiedHost) {
     prettyHost = 'localhost';
     try {
+      // This can only return an IPv4 address
       lanUrlForConfig = address.ip();
       if (lanUrlForConfig) {
-        lanUrlForTerminal = prettyPrintUrl(lanUrlForConfig);
+        // Check if the address is a private ip
+        // https://en.wikipedia.org/wiki/Private_network#Private_IPv4_address_spaces
+        if (
+          /^10[.]|^172[.](1[6-9]|2[0-9]|3[0-1])[.]|^192[.]168[.]/.test(
+            lanUrlForConfig
+          )
+        ) {
+          // Address is private, format it for later use
+          lanUrlForTerminal = prettyPrintUrl(lanUrlForConfig);
+        } else {
+          // Address is not private, so we will discard it
+          lanUrlForConfig = undefined;
+        }
       }
     } catch (_e) {
       // ignored