import org.jetbrains.io.BuiltInServer;
import org.jetbrains.io.SubServer;
+import java.io.IOException;
import java.net.InetAddress;
+import java.net.NetworkInterface;
import java.net.URLConnection;
-import java.net.UnknownHostException;
import java.util.concurrent.ExecutionException;
import java.util.concurrent.Future;
import java.util.concurrent.atomic.AtomicBoolean;
}
}
}
-
+
public static boolean isOnBuiltInWebServerByAuthority(@NotNull String authority) {
int portIndex = authority.indexOf(':');
if (portIndex < 0 || portIndex == authority.length() - 1) {
return false;
}
- int port;
- try {
- port = Integer.parseInt(authority.substring(portIndex + 1));
- }
- catch (NumberFormatException ignored) {
- return false;
- }
-
- if (BuiltInServerOptions.getInstance().builtInServerPort != port && BuiltInServerManager.getInstance().getPort() != port) {
+ int port = StringUtil.parseInt(authority.substring(portIndex + 1), -1);
+ if (port == -1 || (BuiltInServerOptions.getInstance().builtInServerPort != port && BuiltInServerManager.getInstance().getPort() != port)) {
return false;
}
return true;
}
- InetAddress inetAddress;
try {
- inetAddress = InetAddress.getByName(host);
- }
- catch (UnknownHostException ignored) {
- return false;
+ InetAddress inetAddress = InetAddress.getByName(host);
+ return inetAddress.isLoopbackAddress() || inetAddress.isAnyLocalAddress() || NetworkInterface.getByInetAddress(inetAddress) != null;
}
-
- if (inetAddress == null) {
+ catch (IOException e) {
return false;
}
- return inetAddress.isLoopbackAddress() || inetAddress.isAnyLocalAddress();
}
}
\ No newline at end of file
import com.intellij.util.PathUtilRt;
import com.intellij.util.Url;
import com.intellij.util.io.HttpRequests;
+import com.intellij.util.io.RequestBuilder;
import com.intellij.util.net.ssl.CertificateManager;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.ide.BuiltInServerManager;
public class DefaultRemoteContentProvider extends RemoteContentProvider {
private static final Logger LOG = Logger.getInstance(DefaultRemoteContentProvider.class);
+ @NotNull
+ public static RequestBuilder addRequestTuner(@NotNull Url url, @NotNull RequestBuilder requestBuilder) {
+ BuiltInServerManager builtInServerManager = BuiltInServerManager.getInstance();
+ if (builtInServerManager.isOnBuiltInWebServer(url)) {
+ requestBuilder.tuner(builtInServerManager::configureRequestToWebServer);
+ }
+ return requestBuilder;
+ }
+
@Override
public boolean canProvideContent(@NotNull Url url) {
return true;
final String presentableUrl = StringUtil.trimMiddle(url.trimParameters().toDecodedForm(), 40);
callback.setProgressText(VfsBundle.message("download.progress.connecting", presentableUrl), true);
try {
- HttpRequests.request(url.toExternalForm())
+ addRequestTuner(url, HttpRequests.request(url.toExternalForm()))
.connectTimeout(60 * 1000)
.productNameAsUserAgent()
.hostNameVerifier(CertificateManager.HOSTNAME_VERIFIER)
- .tuner(connection -> {
- BuiltInServerManager builtInServerManager = BuiltInServerManager.getInstance();
- if (builtInServerManager.isOnBuiltInWebServer(url)) {
- builtInServerManager.configureRequestToWebServer(connection);
- }
- })
.connect(new HttpRequests.RequestProcessor<Object>() {
@Override
public Object process(@NotNull HttpRequests.Request request) throws IOException {