This commit is contained in:
parent
6940072b0b
commit
caa7e7a5dc
3 changed files with 43 additions and 50 deletions
16
pom.xml
16
pom.xml
|
@ -151,19 +151,5 @@
|
|||
</plugin>
|
||||
</plugins>
|
||||
</build>
|
||||
|
||||
<profiles>
|
||||
<profile>
|
||||
<id>native</id>
|
||||
<activation>
|
||||
<property>
|
||||
<name>native</name>
|
||||
</property>
|
||||
</activation>
|
||||
<properties>
|
||||
<skipITs>false</skipITs>
|
||||
<quarkus.native.enabled>true</quarkus.native.enabled>
|
||||
</properties>
|
||||
</profile>
|
||||
</profiles>
|
||||
|
||||
</project>
|
||||
|
|
|
@ -0,0 +1,39 @@
|
|||
package de.rpr.ddnsclient.lookup;
|
||||
|
||||
import org.jboss.logging.Logger;
|
||||
|
||||
import java.security.SecureRandom;
|
||||
import java.util.Arrays;
|
||||
import java.util.NoSuchElementException;
|
||||
|
||||
enum IpLookupProviders {
|
||||
IFCONFIG_ME("ifconfig.me", "ifconfig.me"),
|
||||
IPIFY_ORG("ipify.org", "api64.ipify.org"),
|
||||
IDENT_ME("ident.me", "ident.me"),
|
||||
NNEV_DE("nnev.de", "ip.nnev.de"),
|
||||
I_CAN_HAZ_IP_COM("icanhazip.com", "icanhazip.com");
|
||||
|
||||
private static final Logger log = Logger.getLogger(PublicIpLookup.class);
|
||||
|
||||
final String url;
|
||||
private final String tld;
|
||||
private static final SecureRandom secureRandom = new SecureRandom();
|
||||
|
||||
IpLookupProviders(String tld, String url) {
|
||||
this.tld = tld;
|
||||
this.url = url;
|
||||
}
|
||||
|
||||
public static IpLookupProviders get(String candidate) {
|
||||
return Arrays.stream(values())
|
||||
.filter(it -> it.tld.equals(candidate))
|
||||
.findFirst()
|
||||
.orElseThrow(() -> new NoSuchElementException("Unknown ip provider!"));
|
||||
}
|
||||
|
||||
public static IpLookupProviders random() {
|
||||
IpLookupProviders randomProvider = values()[secureRandom.nextInt(values().length)];
|
||||
log.tracef("Choosing ip lookup provider %s", randomProvider);
|
||||
return randomProvider;
|
||||
}
|
||||
}
|
|
@ -10,9 +10,6 @@ import org.jboss.logging.Logger;
|
|||
import java.io.BufferedReader;
|
||||
import java.io.InputStream;
|
||||
import java.io.InputStreamReader;
|
||||
import java.security.SecureRandom;
|
||||
import java.util.Arrays;
|
||||
import java.util.NoSuchElementException;
|
||||
import java.util.Optional;
|
||||
|
||||
@ApplicationScoped
|
||||
|
@ -31,42 +28,13 @@ public class PublicIpLookup {
|
|||
this.configuredProvider = configuredProvider;
|
||||
}
|
||||
|
||||
enum Providers {
|
||||
IFCONFIG_ME("ifconfig.me", "ifconfig.me"),
|
||||
IPIFY_ORG("ipify.org", "api64.ipify.org"),
|
||||
IDENT_ME("ident.me", "ident.me"),
|
||||
NNEV_DE("nnev.de", "ip.nnev.de"),
|
||||
I_CAN_HAZ_IP_COM("icanhazip.com", "icanhazip.com");
|
||||
|
||||
final String url;
|
||||
private final String tld;
|
||||
|
||||
Providers(String tld, String url) {
|
||||
this.tld = tld;
|
||||
this.url = url;
|
||||
}
|
||||
|
||||
public static Providers get(String candidate) {
|
||||
return Arrays.stream(values())
|
||||
.filter(it -> it.tld.equals(candidate))
|
||||
.findFirst()
|
||||
.orElseThrow(() -> new NoSuchElementException("Unknown ip provider!"));
|
||||
}
|
||||
|
||||
public static Providers random() {
|
||||
Providers randomProvider = values()[new SecureRandom().nextInt(values().length)];
|
||||
log.tracef("Choosing ip lookup provider %s", randomProvider);
|
||||
return randomProvider;
|
||||
}
|
||||
}
|
||||
|
||||
private Optional<Providers> provider = Optional.empty();
|
||||
private Optional<IpLookupProviders> provider = Optional.empty();
|
||||
|
||||
void onStart(@Observes StartupEvent event) {
|
||||
try {
|
||||
configuredProvider.ifPresent(it -> {
|
||||
log.tracef("Setting ip lookup provider %s", it);
|
||||
provider = Optional.of(Providers.get(it));
|
||||
provider = Optional.of(IpLookupProviders.get(it));
|
||||
}
|
||||
);
|
||||
} catch (Exception e) {
|
||||
|
@ -78,7 +46,7 @@ public class PublicIpLookup {
|
|||
log.trace("Retrieving public ips.");
|
||||
|
||||
try {
|
||||
String provider = this.provider.map(it -> it.url).orElseGet(() -> Providers.random().url);
|
||||
String provider = this.provider.map(it -> it.url).orElseGet(() -> IpLookupProviders.random().url);
|
||||
|
||||
String v4 = getIp(provider, CurlProcessFactory.IpClass.V4);
|
||||
String v6 = getIp(provider, CurlProcessFactory.IpClass.V6);
|
||||
|
|
Loading…
Reference in a new issue