Code style fixes

pull/55/head
Richard Körber 2017-05-01 18:17:12 +02:00
parent 8819558b3f
commit fdc05ba70b
8 changed files with 47 additions and 28 deletions

View File

@ -27,7 +27,7 @@ public class Problem implements Serializable {
private static final long serialVersionUID = -8418248862966754214L; private static final long serialVersionUID = -8418248862966754214L;
private final URI baseUri; private final URI baseUri;
private final JSON problem; private final JSON problemJson;
/** /**
* Creates a new {@link Problem} object. * Creates a new {@link Problem} object.
@ -38,7 +38,7 @@ public class Problem implements Serializable {
* Document's base {@link URI} to resolve relative URIs against * Document's base {@link URI} to resolve relative URIs against
*/ */
public Problem(JSON problem, URI baseUri) { public Problem(JSON problem, URI baseUri) {
this.problem = problem; this.problemJson = problem;
this.baseUri = baseUri; this.baseUri = baseUri;
} }
@ -46,7 +46,7 @@ public class Problem implements Serializable {
* Returns the problem type. It is always an absolute URI. * Returns the problem type. It is always an absolute URI.
*/ */
public URI getType() { public URI getType() {
String type = problem.get("type").asString(); String type = problemJson.get("type").asString();
return type != null ? baseUri.resolve(type) : null; return type != null ? baseUri.resolve(type) : null;
} }
@ -54,7 +54,7 @@ public class Problem implements Serializable {
* Returns a human-readable description of the problem. * Returns a human-readable description of the problem.
*/ */
public String getDetail() { public String getDetail() {
return problem.get("detail").asString(); return problemJson.get("detail").asString();
} }
/** /**
@ -62,15 +62,17 @@ public class Problem implements Serializable {
* an absolute URI. * an absolute URI.
*/ */
public URI getInstance() { public URI getInstance() {
String instance = problem.get("instance").asString(); String instance = problemJson.get("instance").asString();
return instance != null ? baseUri.resolve(instance) : null; return instance != null ? baseUri.resolve(instance) : null;
} }
/** /**
* Returns the problem as {@link JSON} object, to access other fields. * Returns the problem as {@link JSON} object, to access other fields.
*
* @return Problem as {@link JSON} object
*/ */
public JSON asJSON() { public JSON asJSON() {
return problem; return problemJson;
} }
/** /**
@ -78,7 +80,7 @@ public class Problem implements Serializable {
*/ */
@Override @Override
public String toString() { public String toString() {
return problem.toString(); return problemJson.toString();
} }
} }

View File

@ -24,10 +24,10 @@ import org.slf4j.LoggerFactory;
*/ */
public final class Pebble { public final class Pebble {
private static final boolean PEBBLE = Boolean.getBoolean("pebble"); private static final boolean PEBBLE_PROPERTY = Boolean.getBoolean("pebble");
static { static {
if (PEBBLE) { if (PEBBLE_PROPERTY) {
LoggerFactory.getLogger(Pebble.class).warn("Pebble workarounds enabled!"); LoggerFactory.getLogger(Pebble.class).warn("Pebble workarounds enabled!");
} }
} }
@ -37,11 +37,11 @@ public final class Pebble {
} }
/** /**
* Returns {@code true} to enable Pebble workarounds, {@code false} for strict * @return {@code true} to enable Pebble workarounds, {@code false} for strict ACME
* ACME specifications. * specifications.
*/ */
public static boolean workaround() { public static boolean workaround() {
return PEBBLE; return PEBBLE_PROPERTY;
} }
} }

View File

@ -53,17 +53,7 @@ public class PebbleAcmeProvider extends AbstractAcmeProvider {
URL baseUrl = new URL("http://localhost:14000/dir"); URL baseUrl = new URL("http://localhost:14000/dir");
if (path != null && !path.isEmpty() && !"/".equals(path)) { if (path != null && !path.isEmpty() && !"/".equals(path)) {
Matcher m = HOST_PATTERN.matcher(path); baseUrl = parsePath(path);
if (m.matches()) {
String host = m.group(1);
int port = 14000;
if (m.group(2) != null) {
port = Integer.parseInt(m.group(2));
}
baseUrl = new URL("http", host, port, "/dir");
} else {
throw new IllegalArgumentException("Invalid Pebble host/port: " + path);
}
} }
return baseUrl; return baseUrl;
@ -72,6 +62,27 @@ public class PebbleAcmeProvider extends AbstractAcmeProvider {
} }
} }
/**
* Parses the server URI path and returns the server's base URL.
*
* @param path
* server URI path
* @return URL of the server's base
*/
private URL parsePath(String path) throws MalformedURLException {
Matcher m = HOST_PATTERN.matcher(path);
if (m.matches()) {
String host = m.group(1);
int port = 14000;
if (m.group(2) != null) {
port = Integer.parseInt(m.group(2));
}
return new URL("http", host, port, "/dir");
} else {
throw new IllegalArgumentException("Invalid Pebble host/port: " + path);
}
}
// TODO PEBBLE: new-reg // TODO PEBBLE: new-reg
// https://github.com/letsencrypt/pebble/pull/24 // https://github.com/letsencrypt/pebble/pull/24
@Override @Override

View File

@ -427,7 +427,7 @@ public final class JSON implements Serializable {
*/ */
public byte[] asBinary() { public byte[] asBinary() {
if (val == null) { if (val == null) {
return null; return null; //NOSONAR: we want to return null here
} }
return AcmeUtils.base64UrlDecode(val.toString()); return AcmeUtils.base64UrlDecode(val.toString());

View File

@ -28,6 +28,10 @@
<name>acme4j Example</name> <name>acme4j Example</name>
<description>Example for using acme4j</description> <description>Example for using acme4j</description>
<properties>
<sonar.exclusions>src/main/java/org/shredzone/acme4j/**</sonar.exclusions>
</properties>
<build> <build>
<plugins> <plugins>
<plugin> <plugin>

View File

@ -30,6 +30,7 @@
<properties> <properties>
<skipITs>true</skipITs> <skipITs>true</skipITs>
<sonar.coverage.exclusions>src/main/java/org/shredzone/acme4j/**</sonar.coverage.exclusions>
</properties> </properties>
<profiles> <profiles>

View File

@ -39,6 +39,7 @@ public class HttpServer {
private static final String TOKEN_PATH = "/.well-known/acme-challenge/"; private static final String TOKEN_PATH = "/.well-known/acme-challenge/";
private static final Pattern TOKEN_PATTERN = Pattern.compile("^" + Pattern.quote(TOKEN_PATH) + "([^/]+)$"); private static final Pattern TOKEN_PATTERN = Pattern.compile("^" + Pattern.quote(TOKEN_PATH) + "([^/]+)$");
private static final String TYPE_TEXT_PLAIN = "text/plain";
private final Map<String, String> tokenMap = synchronizedMap(new HashMap<>()); private final Map<String, String> tokenMap = synchronizedMap(new HashMap<>());
private NanoHTTPD server; private NanoHTTPD server;
@ -84,7 +85,7 @@ public class HttpServer {
Matcher m = TOKEN_PATTERN.matcher(path); Matcher m = TOKEN_PATTERN.matcher(path);
if (!m.matches()) { if (!m.matches()) {
return newFixedLengthResponse(Status.NOT_FOUND, "text/plain", "not found: "+ path + "\n"); return newFixedLengthResponse(Status.NOT_FOUND, TYPE_TEXT_PLAIN, "not found: "+ path + "\n");
} }
String token = m.group(1); String token = m.group(1);
@ -92,11 +93,11 @@ public class HttpServer {
if (content == null) { if (content == null) {
LOG.warn("http-01: unknown token " + token); LOG.warn("http-01: unknown token " + token);
return newFixedLengthResponse(Status.NOT_FOUND, "text/plain", "unknown token: "+ token + "\n"); return newFixedLengthResponse(Status.NOT_FOUND, TYPE_TEXT_PLAIN, "unknown token: "+ token + "\n");
} }
LOG.info("http-01: " + token + " -> " + content); LOG.info("http-01: " + token + " -> " + content);
return newFixedLengthResponse(Status.OK, "text/plain", content); return newFixedLengthResponse(Status.OK, TYPE_TEXT_PLAIN, content);
} }
}; };

View File

@ -172,7 +172,7 @@ public class TlsSniServer {
LOG.info("tls-sni: {}", domainsToString(cert)); LOG.info("tls-sni: {}", domainsToString(cert));
try (InputStream in = sslSocket.getInputStream()) { try (InputStream in = sslSocket.getInputStream()) {
while (in.read() >= 0); while (in.read() >= 0); //NOSONAR: intentional empty statement
} }
} }
} }