X-Git-Url: https://code.wpia.club/?a=blobdiff_plain;f=src%2Forg%2Fcacert%2Fgigi%2Fping%2FSSLPinger.java;h=acc36adc47650e584b11226f59b5d6869d4b6218;hb=6d65334306c8b7bd10fbbfa07bc8f38475ff6d08;hp=2f49b44627702a71f79b00678b6cb7766720c860;hpb=e87392fd58e9152531a8d1cb34cb46e370062108;p=gigi.git diff --git a/src/org/cacert/gigi/ping/SSLPinger.java b/src/org/cacert/gigi/ping/SSLPinger.java index 2f49b446..acc36adc 100644 --- a/src/org/cacert/gigi/ping/SSLPinger.java +++ b/src/org/cacert/gigi/ping/SSLPinger.java @@ -43,10 +43,11 @@ public class SSLPinger extends DomainPinger { } @Override - public String ping(Domain domain, String configuration, User u) { + public void ping(Domain domain, String configuration, User u, int confId) { try (SocketChannel sch = SocketChannel.open()) { + sch.socket().setSoTimeout(5000); String[] parts = configuration.split(":", 2); - sch.connect(new InetSocketAddress(domain.getSuffix(), Integer.parseInt(parts[0]))); + sch.socket().connect(new InetSocketAddress(domain.getSuffix(), Integer.parseInt(parts[0])), 5000); if (parts.length == 2) { switch (parts[1]) { case "xmpp": @@ -64,9 +65,12 @@ public class SSLPinger extends DomainPinger { } } - return test(sch, domain.getSuffix(), u); + String res = test(sch, domain.getSuffix(), u); + enterPingResult(confId, res, res, null); + return; } catch (IOException e) { - return "Connecton failed"; + enterPingResult(confId, "error", "connection Failed", null); + return; } } @@ -76,7 +80,7 @@ public class SSLPinger extends DomainPinger { InputStream is = s.getInputStream(); OutputStream os = s.getOutputStream(); scanFor(is, "\n"); - os.write("ENABLE STARTTLS\r\n".getBytes()); + os.write("ENABLE STARTTLS\r\n".getBytes("UTF-8")); os.flush(); scanFor(is, "\n"); } @@ -85,9 +89,9 @@ public class SSLPinger extends DomainPinger { Socket s = sch.socket(); InputStream is = s.getInputStream(); OutputStream os = s.getOutputStream(); - os.write(("").getBytes()); + os.write(("").getBytes("UTF-8")); os.flush(); - os.write("".getBytes()); + os.write("".getBytes("UTF-8")); os.flush(); scanFor(is, ""); @@ -109,13 +113,13 @@ public class SSLPinger extends DomainPinger { Socket s = sch.socket(); InputStream is = s.getInputStream(); readSMTP(is); - s.getOutputStream().write("EHLO ssl.pinger\r\n".getBytes()); + s.getOutputStream().write("EHLO ssl.pinger\r\n".getBytes("UTF-8")); s.getOutputStream().flush(); readSMTP(is); - s.getOutputStream().write("HELP\r\n".getBytes()); + s.getOutputStream().write("HELP\r\n".getBytes("UTF-8")); s.getOutputStream().flush(); readSMTP(is); - s.getOutputStream().write("STARTTLS\r\n".getBytes()); + s.getOutputStream().write("STARTTLS\r\n".getBytes("UTF-8")); s.getOutputStream().flush(); readSMTP(is); } @@ -147,6 +151,7 @@ public class SSLPinger extends DomainPinger { private String test(SocketChannel sch, String domain, User subject) { try { + sch.socket().setSoTimeout(5000); SSLContext sc = SSLContext.getInstance("SSL"); try { TrustManagerFactory tmf = TrustManagerFactory.getInstance("X509"); @@ -208,7 +213,10 @@ public class SSLPinger extends DomainPinger { BigInteger serial = first.getSerialNumber(); Certificate c = Certificate.getBySerial(serial.toString(16)); - if (c.getOwnerId() != subject.getId()) { + if (c == null) { + return "Certificate not found"; + } + if (c.getOwner().getId() != subject.getId()) { return "Owner mismatch"; } return PING_SUCCEDED;