Skip to content

Commit 7e3973e

Browse files
authored
Exposing Stub Solver domain config (#601)
* refactoring * adjusting test * fixed test * implementing solver stub json config * adjsting test * adjusting tests * adjusting field * fixing typo * testing config mapper * fixing bug * creating docs * implementing env * fixing tests * fixing bug * implementing and testing config flag * release notes * [Gradle Release Plugin] - new version commit: '3.32.2-snapshot'.
1 parent 461887c commit 7e3973e

File tree

38 files changed

+345
-93
lines changed

38 files changed

+345
-93
lines changed

RELEASE-NOTES.md

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,6 @@
1+
## 3.32.2
2+
* Exposing Stub Solver domain config, see the docs. #545
3+
14
## 3.32.1
25
* Configuring Stub Solver. #545
36

docs/content/2-features/stub-solver/_index.en.md

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,11 +38,12 @@ ${name}[.-]${ip_address}.stub
3838

3939
### Customize the domain name
4040

41-
<tbd>
41+
See the [config reference][2].
4242

4343
## Refs
4444

4545
* [Stub Solver #545][1]
4646

4747

4848
[1]: https://github.com/mageddo/dns-proxy-server/issues/545
49+
[2]: {{%relref "3-configuration/_index.en.md" %}}

docs/content/3-configuration/_index.en.md

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -129,6 +129,16 @@ Default: true
129129
|-----------------------------------------------|-----------------------------------------|-----------|
130130
| MG_DOCKER_SOLVER_HOST_MACHINE_FALLBACK_ACTIVE | `dockerSolverHostMachineFallbackActive` | See -help |
131131

132+
### Stub Solver
133+
134+
#### Stub Solver - Domain Name
135+
136+
The domain name used for stub solver resolved hostnames. Default: `stub`.
137+
138+
| Env | JSON | Terminal |
139+
|----------------------------|-------------------------|-----------|
140+
| MG_STUB_SOLVER_DOMAIN_NAME | `solverStub.domainName` | See -help |
141+
132142
## Config File Path
133143

134144
The location of the external config file (as the JSON file) can be changed by setting two variables:

gradle.properties

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
version=3.32.1-snapshot
1+
version=3.32.2-snapshot

src/main/java/com/mageddo/dnsproxyserver/config/Config.java

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -71,6 +71,8 @@ public class Config {
7171

7272
private Boolean dockerSolverHostMachineFallbackActive;
7373

74+
private SolverStub solverStub;
75+
7476
private SolverRemote solverRemote;
7577

7678
@NonNull
@@ -100,6 +102,14 @@ public CircuitBreakerStrategyConfig getSolverRemoteCircuitBreakerStrategy() {
100102
return this.solverRemote.getCircuitBreaker();
101103
}
102104

105+
@JsonIgnore
106+
public String getSolverStubDomainName() {
107+
if (this.solverStub == null) {
108+
return null;
109+
}
110+
return this.solverStub.getDomainName();
111+
}
112+
103113
public enum Source {
104114
JSON,
105115
FLAG,
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
package com.mageddo.dnsproxyserver.config;
2+
3+
import lombok.Builder;
4+
import lombok.Value;
5+
6+
@Value
7+
@Builder
8+
public class SolverStub {
9+
private String domainName;
10+
}
Lines changed: 2 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,8 @@
11
package com.mageddo.dnsproxyserver.config.dataprovider;
22

33
import com.mageddo.dnsproxyserver.config.Config;
4-
import com.mageddo.dnsproxyserver.config.SolverRemote;
5-
import com.mageddo.dnsproxyserver.config.dataprovider.mapper.ConfigFieldsValuesMapper;
4+
import com.mageddo.dnsproxyserver.config.dataprovider.mapper.ConfigEnvMapper;
65
import com.mageddo.dnsproxyserver.config.dataprovider.vo.ConfigEnv;
7-
import com.mageddo.dnsproxyserver.utils.Booleans;
86
import lombok.RequiredArgsConstructor;
97

108
import javax.inject.Inject;
@@ -16,7 +14,7 @@ public class ConfigDAOEnv implements ConfigDAO {
1614

1715
@Override
1816
public Config find() {
19-
return toConfig(this.findRaw());
17+
return ConfigEnvMapper.toConfig(this.findRaw());
2018
}
2119

2220
public ConfigEnv findRaw() {
@@ -28,26 +26,4 @@ public int priority() {
2826
return 1;
2927
}
3028

31-
static Config toConfig(ConfigEnv config) {
32-
return Config.builder()
33-
.registerContainerNames(config.getRegisterContainerNames())
34-
.domain(config.getDomain())
35-
.logFile(config.getLogFile())
36-
.logLevel(ConfigFieldsValuesMapper.mapLogLevelFrom(config.getLogLevel()))
37-
.dockerHost(config.getDockerHost())
38-
.hostMachineHostname(config.getHostMachineHostname())
39-
.dpsNetworkAutoConnect(config.getDpsNetworkAutoConnect())
40-
.noEntriesResponseCode(config.getNoEntriesResponseCode())
41-
.dockerSolverHostMachineFallbackActive(config.getDockerSolverHostMachineFallbackActive())
42-
.resolvConfOverrideNameServers(config.getResolvConfOverrideNameServers())
43-
.mustConfigureDpsNetwork(config.getDpsNetwork())
44-
.resolvConfPaths(config.getResolvConfPath())
45-
.solverRemote(SolverRemote
46-
.builder()
47-
.active(Booleans.reverseWhenNotNull(config.getNoRemoteServers()))
48-
.build())
49-
.source(Config.Source.ENV)
50-
.build();
51-
}
52-
5329
}
Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
package com.mageddo.dnsproxyserver.config.dataprovider.mapper;
2+
3+
import com.mageddo.dnsproxyserver.config.Config;
4+
import com.mageddo.dnsproxyserver.config.SolverRemote;
5+
import com.mageddo.dnsproxyserver.config.SolverStub;
6+
import com.mageddo.dnsproxyserver.config.dataprovider.vo.ConfigEnv;
7+
import com.mageddo.dnsproxyserver.utils.Booleans;
8+
9+
public class ConfigEnvMapper {
10+
public static Config toConfig(ConfigEnv config) {
11+
return Config.builder()
12+
.registerContainerNames(config.getRegisterContainerNames())
13+
.domain(config.getDomain())
14+
.logFile(config.getLogFile())
15+
.logLevel(ConfigFieldsValuesMapper.mapLogLevelFrom(config.getLogLevel()))
16+
.dockerHost(config.getDockerHost())
17+
.hostMachineHostname(config.getHostMachineHostname())
18+
.dpsNetworkAutoConnect(config.getDpsNetworkAutoConnect())
19+
.noEntriesResponseCode(config.getNoEntriesResponseCode())
20+
.dockerSolverHostMachineFallbackActive(config.getDockerSolverHostMachineFallbackActive())
21+
.resolvConfOverrideNameServers(config.getResolvConfOverrideNameServers())
22+
.mustConfigureDpsNetwork(config.getDpsNetwork())
23+
.resolvConfPaths(config.getResolvConfPath())
24+
.solverRemote(SolverRemote
25+
.builder()
26+
.active(Booleans.reverseWhenNotNull(config.getNoRemoteServers()))
27+
.build()
28+
)
29+
.solverStub(SolverStub
30+
.builder()
31+
.domainName(config.getSolverStubDomainName())
32+
.build()
33+
)
34+
.source(Config.Source.ENV)
35+
.build();
36+
}
37+
}

src/main/java/com/mageddo/dnsproxyserver/config/dataprovider/mapper/ConfigFlagMapper.java

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
import com.mageddo.dnsproxyserver.config.Config;
44
import com.mageddo.dnsproxyserver.config.SolverRemote;
5+
import com.mageddo.dnsproxyserver.config.SolverStub;
56
import com.mageddo.dnsproxyserver.config.dataprovider.vo.ConfigFlag;
67
import com.mageddo.dnsproxyserver.utils.Booleans;
78
import com.mageddo.utils.Files;
@@ -29,6 +30,11 @@ public static Config toConfig(ConfigFlag config) {
2930
.active(Booleans.reverseWhenNotNull(config.getNoRemoteServers()))
3031
.build()
3132
)
33+
.solverStub(SolverStub
34+
.builder()
35+
.domainName(config.getStubSolverDomainName())
36+
.build()
37+
)
3238
.source(Config.Source.FLAG)
3339
.build();
3440
}

src/main/java/com/mageddo/dnsproxyserver/config/dataprovider/mapper/ConfigJsonV2Mapper.java

Lines changed: 16 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
import com.mageddo.dnsproxyserver.config.CircuitBreakerStrategyConfig;
55
import com.mageddo.dnsproxyserver.config.Config;
66
import com.mageddo.dnsproxyserver.config.SolverRemote;
7+
import com.mageddo.dnsproxyserver.config.SolverStub;
78
import com.mageddo.dnsproxyserver.config.StaticThresholdCircuitBreakerStrategyConfig;
89
import com.mageddo.dnsproxyserver.config.dataprovider.vo.ConfigJson;
910
import com.mageddo.dnsproxyserver.config.dataprovider.vo.ConfigJsonV2;
@@ -38,12 +39,23 @@ public static Config toConfig(ConfigJson json, Path configFileAbsolutePath) {
3839
.dockerSolverHostMachineFallbackActive(json.getDockerSolverHostMachineFallbackActive())
3940
.configPath(configFileAbsolutePath)
4041
.solverRemote(toSolverRemote(json))
42+
.solverStub(toSolverStub(json.getSolverStub()))
4143
.source(Config.Source.JSON)
4244
.build();
4345
}
4446

47+
private static SolverStub toSolverStub(ConfigJsonV2.SolverStub solverStub) {
48+
if (solverStub == null) {
49+
return null;
50+
}
51+
return SolverStub
52+
.builder()
53+
.domainName(solverStub.getDomainName())
54+
.build();
55+
}
56+
4557
static SolverRemote toSolverRemote(ConfigJson json) {
46-
if(nothingIsSet(json)){
58+
if (nothingIsSet(json)) {
4759
return null;
4860
} else if (isPossibleToBuildComplete(json)) {
4961
return buildCompleteSolverRemote(json, json.getSolverRemoteCircuitBreaker());
@@ -76,9 +88,10 @@ static SolverRemote buildCompleteSolverRemote(ConfigJson json, ConfigJsonV2.Circ
7688

7789
private static CircuitBreakerStrategyConfig mapCircuitBreaker(ConfigJsonV2.CircuitBreaker circuitBreaker) {
7890
log.debug("circuitBreakerConfigStrategy={}", circuitBreaker.strategy());
79-
return switch (circuitBreaker.strategy()){
91+
return switch (circuitBreaker.strategy()) {
8092
case STATIC_THRESHOLD -> mapFromStaticCircuitBreaker((StaticThresholdCircuitBreaker) circuitBreaker);
81-
case CANARY_RATE_THRESHOLD -> mapFromCanaryRateThresholdCircuitBreaker((CanaryRateThresholdCircuitBreaker) circuitBreaker);
93+
case CANARY_RATE_THRESHOLD ->
94+
mapFromCanaryRateThresholdCircuitBreaker((CanaryRateThresholdCircuitBreaker) circuitBreaker);
8295
default -> throw new UnsupportedOperationException("Unrecognized circuit breaker: " + circuitBreaker.strategy());
8396
};
8497
}

0 commit comments

Comments
 (0)