Add nonProxyHosts to ProxyConfiguration

Aperta
#3,585 0 commenti 0 reazioni 0 assegnatari Vedi su GitHub

I maintainer di solito rispondono entro 1 giorno

Nessuno ha ancora preso questa issue.

Valutazione

Difficoltà
4/5
Tempo stimato
3-5 giorni
Idoneità per principianti
48/100
Tipo di issue
Funzionalità
Chiarezza
Abbastanza chiara
Stato di attività
Tranquilla
Stack tecnologico
java

Direzione di ricerca

Inizia individuando ProxyConfiguration e ClientConfigurations, quindi traccia il percorso di ProxySelector attraverso il livello Dialogue fino ai client HTTP sottostanti. Esamina la configurazione del proxy esistente e il comportamento dell’API prima di risolvere le interazioni tra il formato dell’elenco, le regole di corrispondenza, CIDR, SOCKS, mesh e l’aggiornamento DNS. Il lavoro è completo quando è possibile configurare host senza proxy e le richieste corrispondenti bypassano il proxy senza compromettere le configurazioni esistenti.

Scritto dal modello di indicizzazione a partire dal testo della issue.

Descrizione

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.

Lingua principale
Java
Stelle
96
Fork
95
Merge medio
8m
PR unite (30g)
55

Preparare l'ambiente

  • Nessun Dockerfile né file Docker Compose
  • Ha un modello di pull request
  • Nessuna guida per i contributori

Come iniziare

  1. Leggi tutta la issue e poi la guida ai contributi del progetto.
  2. Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
  3. Fai un fork del repository e lavora su un branch.
  4. Apri una pull request che faccia riferimento al numero della issue.

Altre issue di palantir/conjure-java-runtime

Tutte le issue di palantir/conjure-java-runtime

Issue simili

Altre issue su Java

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.