cloudfoundry / cloudfoundry/cf-java-client
Option to deactivate apiHost validation, to allow forwarding to localhost
Dieses Issue hat noch niemand übernommen.
- Vorherrschende Sprache
- Java
- Sterne
- 334
- Forks
- 319
- PR-Merge-Kennzahlen
- Keine gemergten PRs in 30 T.
Beschreibung
We are using ReactorCloudFoundryClient to connect to the CF-API.
Version used:
<dependency>
<groupId>org.cloudfoundry</groupId>
<artifactId>cloudfoundry-client-reactor</artifactId>
<version>5.6.0.RELEASE</version>
</dependency>
We provide this class with its connection context by building an instance of DefaultConnectionContext:
private DefaultConnectionContext getDefaultConnectionContext() {
return DefaultConnectionContext.builder()
.apiHost(config.getApiEndpoint())
.build();
}
As you can see, the builder reads the property apiHost from our app-config.
The CF-ApiEndpoint we want to connect to changes depending on the current target-environment. The application that implements ReactorCloudFoundryClient doesn't know about this environment though.
Instead, we send all http-traffic to a second, locally running application which knows about the current target environment.
For the above mentioned use-case, we have to set apiHost to localhost:4201, so the traffic is forwarded to our second, environment-aware application.
Using this setup, the following exception occurs upon building the DefaultConnectionContext instance:
IllegalArgumentException: "API hostname http://localhost:4201 is not correctly formatted (e.g. 'api.local.pcfdev.io')"
Looking at the call-stack, it seems like this method checkForValidApiHost() in AbstractRootProvider is causing the issue for us:
@Check
public final void checkForValidApiHost() {
Matcher matcher = HOSTNAME_PATTERN.matcher(this.getApiHost());
if (!matcher.matches()) {
throw new IllegalArgumentException(String.format("API hostname %s is not correctly formatted (e.g. 'api.local.pcfdev.io')", this.getApiHost()));
}
}
We already considered multiple options to workaround this limitation in the apiHost-string-syntax, but so far we couldn't find any working solution sadly..
Do you guys maybe know a way to get around this validation-step of the apiHost property? Or is there any chance that we can disable this validation if needed, maybe through an additional building-param?
Thanks already for any help about this matter!
Beitragsleitfaden
Für dieses Repository ist kein Beitragsleitfaden indexiert
Erste Schritte
- Lies das ganze Issue und danach den Beitragsleitfaden des Projekts.
- Schreib ins Issue, dass du es übernimmst — das erspart doppelte Arbeit.
- Forke das Repository und arbeite in einem Branch.
- Öffne einen Pull Request, der die Issue-Nummer nennt.
Rechercherichtung
Beginne mit AbstractRootProvider.checkForValidApiHost() und verfolge, wie DefaultConnectionContext.builder() apiHost bereitstellt. Ermittle, wie die Validierung optional gemacht werden könnte, wobei das bestehende Standardverhalten erhalten bleibt, und überprüfe anschließend, dass localhost:4201 für die Weiterleitung akzeptiert werden kann, ohne die aktuelle IllegalArgumentException auszulösen.
Vom Indexierungsmodell aus dem Issue-Text verfasst.
Bewertung
- Tech-Stack
- java
- Bereich
- api
- Issue-Typ
- Feature
- Schwierigkeit
- 4/5
- Geschätzter Aufwand
- 3-5 Tage
- Aktivitätsstatus
- Veraltet
- Klarheit
- Größtenteils klar
- Anfängerfreundlichkeit
- 30/100