package org.cacert.gigi.dbObjects;
import java.io.IOException;
+import java.io.InputStream;
import java.net.IDN;
import java.util.Arrays;
import java.util.Collections;
import org.cacert.gigi.dbObjects.DomainPingConfiguration.PingType;
import org.cacert.gigi.util.PublicSuffixes;
-public class Domain implements IdCachable {
+public class Domain implements IdCachable, Verifyable {
public class DomainPingExecution {
private static final Set<String> IDNEnabledTLDs;
static {
Properties CPS = new Properties();
- try {
- CPS.load(Domain.class.getResourceAsStream("CPS.properties"));
+ try (InputStream resourceAsStream = Domain.class.getResourceAsStream("CPS.properties")) {
+ CPS.load(resourceAsStream);
IDNEnabledTLDs = Collections.unmodifiableSet(new HashSet<>(Arrays.asList(CPS.getProperty("IDN-enabled").split(","))));
} catch (IOException e) {
throw new Error(e);
}
public void insert() throws GigiApiException {
- if (id != 0) {
- throw new GigiApiException("already inserted.");
- }
synchronized (Domain.class) {
+ if (id != 0) {
+ throw new GigiApiException("already inserted.");
+ }
checkInsert(suffix);
GigiPreparedStatement ps = DatabaseConnection.getInstance().prepare("INSERT INTO `domains` SET memid=?, domain=?");
ps.setInt(1, owner.getId());
configs = null;
}
- public void verify(String hash) throws GigiApiException {
+ public synchronized void verify(String hash) throws GigiApiException {
GigiPreparedStatement ps = DatabaseConnection.getInstance().prepare("UPDATE domainPinglog SET state='success' WHERE challenge=? AND configId IN (SELECT id FROM pingconfig WHERE domainId=?)");
ps.setString(1, hash);
ps.setInt(2, id);