import javax.net.ssl.SSLParameters;
import javax.security.cert.X509Certificate;
+import org.cacert.gigi.Domain;
+import org.cacert.gigi.User;
+
public class SSLPinger extends DomainPinger {
+ public static final String[] TYPES = new String[] {
+ "xmpp", "server-xmpp", "smtp", "imap"
+ };
+
@Override
- public void ping(String domain, String configuration, String expToken) {
+ public String ping(Domain domain, String configuration, User u) {
try {
SocketChannel sch = SocketChannel.open();
String[] parts = configuration.split(":", 2);
- sch.connect(new InetSocketAddress(domain, Integer.parseInt(parts[0])));
+ sch.connect(new InetSocketAddress(domain.getSuffix(), Integer.parseInt(parts[0])));
if (parts.length == 2) {
switch (parts[1]) {
case "xmpp":
- startXMPP(sch, false, domain);
+ startXMPP(sch, false, domain.getSuffix());
break;
case "server-xmpp":
- startXMPP(sch, true, domain);
+ startXMPP(sch, true, domain.getSuffix());
break;
case "smtp":
startSMTP(sch);
}
}
- test(sch, domain);
+ return test(sch, domain.getSuffix());
} catch (IOException e) {
- e.printStackTrace();
+ return "Connecton failed";
}
}
}
}
- private void test(SocketChannel sch, String domain) {
+ private String test(SocketChannel sch, String domain) {
try {
SSLContext sc = SSLContext.getDefault();
SSLEngine se = sc.createSSLEngine();
for (X509Certificate x509Certificate : peerCertificateChain) {
System.out.println(x509Certificate.getSubjectDN().getName());
}
+ return PING_SUCCEDED;
} catch (NoSuchAlgorithmException e) {
e.printStackTrace();
+ return "Security failed";
} catch (SSLException e) {
e.printStackTrace();
+ return "Security failed";
} catch (IOException e) {
e.printStackTrace();
+ return "Connection closed";
}
}
}