Add nonProxyHosts to ProxyConfiguration

Abierto
#3,585 0 comentarios 0 reacciones 0 asignados Ver en GitHub

Los mantenedores suelen responder en 1 día

Nadie ha tomado este issue todavía.

Evaluación

Dificultad
4/5
Tiempo estimado
3-5 días
Aptitud para principiantes
48/100
Tipo de issue
Nueva funcionalidad
Claridad
Bastante claro
Estado de actividad
Tranquilo
Stack tecnológico
java

Línea de trabajo

Comienza localizando ProxyConfiguration y ClientConfigurations, y luego sigue cómo ProxySelector pasa por la capa Dialogue hasta los clientes HTTP subyacentes. Revisa la configuración de proxy existente y el comportamiento de la API antes de resolver las interacciones entre el formato de lista, las reglas de coincidencia, CIDR, SOCKS, mesh y la actualización de DNS. La tarea estará terminada cuando se puedan configurar hosts sin proxy y las solicitudes coincidentes omitan el proxy sin romper las configuraciones existentes.

Escrito por el modelo de indexación a partir del texto del issue.

Descripción

There isn't currently a way to specify non-proxy hosts for conjure generated clients. This is an FR to add a configuration field for explicitly configuring no-proxy hosts (separate from #3166, which would pull from environment)

Add a new nonProxyHosts field to ProxyConfiguration, and change ClientConfigurations to produce a new ProxySelector that matches on the provided non-proxy hosts in order to determine whether to indicate passthrough or proxy. Since the ProxySelector is passed through the Dialogue layer to the underlying hc clients, no modifications should be needed for https outside c-j-r and the associated api.

While this should be a straightforward change, there are a number of things to discuss:

  • How should backcompat and rollout be handled? Since this is an additive change, it will not break compat with existing configuration. However, if a service were to have picked up non-proxy-hosts configuration via discovery and then roll back to a non-supported version, the proxy settings could either silently break or error out.
    • The first use cases will be with static non-proxy hosts that are introduced programmatically, which makes this a bit less of a concern.
  • Should the nonProxyHosts be a List or a String?
    • Using a List would be less confusing for end users, and would elide discussion around whether the string should be delimited by commas (no_proxy envvar) or pipe characters (java).
  • Should CIDR blocks be supported?
    • Initial implementation could just not support this and error out instead.
  • Should domain suffix matching require explicit asterisks like in the Java case?
    • It would probably make more sense to make this behave more like the no-proxy envvar and suffix match even without wildcards.
  • How should socks proxies and mesh be handled?
    • The best option might be to error out on configurations with a socks proxy or mesh is used with nonProxyHosts.

Some further investigation is required to determine how no-proxy will interact with Dialogue's custom DNS refreshing. Initial impression is that it should work with hostnames, but it probably won't work with IPs matching resolved hostnames (instead of other IPs), since the DNS resolution happens after the ProxySelector callback.

Lenguaje dominante
Java
Estrellas
96
Forks
95
Merge medio
8 min
PR fusionados (30 d)
55

Preparar el entorno

  • Sin Dockerfile ni archivo de Docker Compose
  • Tiene una plantilla de pull request
  • Sin guía de contribución

Primeros pasos

  1. Lee el issue completo y luego la guía de contribución del proyecto.
  2. Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
  3. Haz un fork del repositorio y trabaja en una rama.
  4. Abre un pull request que haga referencia al número del issue.

Más de palantir/conjure-java-runtime

Todos los issues de palantir/conjure-java-runtime

Issues similares

Más issues de Java

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.