List of usage examples for org.apache.commons.net.whois WhoisClient getInputStream
public InputStream getInputStream(String handle) throws IOException
From source file:net.spfbl.core.Server.java
/** * Consulta de identificao no WHOIS.// w w w .java 2s . co m * Controla a taxa de 30 consultas no intervalo de 24 horas. * @param query a consulta a ser realizada. * @param server o servidor que contm a informao. * @return o resultado do WHOIS para a consulta. * @throws ProcessException se houver falha no processamento da informao. */ public static String whoisID(String query, String server) throws ProcessException { long time = System.currentTimeMillis(); ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); try { if (WHOIS_CONNECTION_SEMAPHORE.tryAcquire()) { try { acquireWhoisIDQuery(); WhoisClient whoisClient = new WhoisClient(); try { whoisClient.setDefaultTimeout(3000); whoisClient.connect(server); InputStream inputStream = whoisClient.getInputStream(query); int code; while ((code = inputStream.read()) != -1) { outputStream.write(code); } } finally { whoisClient.disconnect(); } } finally { WHOIS_CONNECTION_SEMAPHORE.release(); } } else { throw new ProcessException("ERROR: TOO MANY CONNECTIONS"); } } catch (ProcessException ex) { throw ex; } catch (Exception ex) { throw new ProcessException("ERROR: WHOIS CONNECTION FAIL", ex); } try { String result = outputStream.toString("ISO-8859-1"); logWhois(time, server, query, result); return result; } catch (UnsupportedEncodingException ex) { throw new ProcessException("ERROR: ENCODING", ex); } }
From source file:net.spfbl.core.Server.java
/** * Consulta comum no WHOIS./* w w w .j a va2s . co m*/ * Controla a taxa de 30 consultas no intervalo de 5 minutos. * @param query a consulta a ser realizada. * @param server o servidor que contm a informao. * @return o resultado do WHOIS para a consulta. * @throws ProcessException se houver falha no processamento da informao. */ public static String whois(String query, String server) throws ProcessException { long time = System.currentTimeMillis(); ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); try { if (WHOIS_CONNECTION_SEMAPHORE.tryAcquire()) { try { acquireWhoisQuery(); WhoisClient whoisClient = new WhoisClient(); try { whoisClient.setDefaultTimeout(3000); whoisClient.connect(server); InputStream inputStream = whoisClient.getInputStream(query); try { int code; while ((code = inputStream.read()) != -1) { outputStream.write(code); } } finally { inputStream.close(); } } finally { whoisClient.disconnect(); } } finally { WHOIS_CONNECTION_SEMAPHORE.release(); } } else { throw new ProcessException("ERROR: TOO MANY CONNECTIONS"); } } catch (ProcessException ex) { throw ex; } catch (Exception ex) { throw new ProcessException("ERROR: WHOIS CONNECTION FAIL", ex); } try { String result = outputStream.toString("ISO-8859-1"); result = result.replace("\r", ""); logWhois(time, server, query, result); return result; } catch (UnsupportedEncodingException ex) { throw new ProcessException("ERROR: ENCODING", ex); } }
From source file:org.archive.modules.fetcher.FetchWhois.java
protected void fetch(CrawlURI curi, String whoisServer, String whoisQuery) { WhoisClient client = new WhoisClient(); Recorder recorder = curi.getRecorder(); try {/*from w w w .j av a2s. com*/ client.setConnectTimeout(getSoTimeoutMs()); client.setDefaultTimeout(getSoTimeoutMs()); if (curi.getUURI().getPort() > 0) { client.connect(whoisServer, curi.getUURI().getPort()); } else { client.connect(whoisServer); } client.setSoTimeout(getSoTimeoutMs()); // must be after connect() curi.getData().put(CoreAttributeConstants.A_WHOIS_SERVER_IP, client.getRemoteAddress().getHostAddress()); recorder.inputWrap(client.getInputStream(whoisQuery)); // look for info about whois server in the response // XXX run regex on the whole thing, rather than line by line? BufferedReader reader = new BufferedReader(new InputStreamReader(recorder.getRecordedInput(), "ASCII")); for (String line = reader.readLine(); line != null; line = reader.readLine()) { Matcher matcher = TextUtils.getMatcher(WHOIS_SERVER_REGEX, line); if (matcher.find()) { // gets rid of "domain " for whois.verisign-grs.com queries String key = whoisQuery.replaceFirst("(\\S+\\s+)+", "").toLowerCase(); referralServers.put(key, matcher.group(1).toLowerCase()); if (logger.isLoggable(Level.FINE)) { logger.fine("added referral server " + matcher.group(1) + " to server list for " + key); } } } curi.setContentType("text/plain"); curi.setFetchStatus(S_WHOIS_SUCCESS); } catch (IOException e) { if (logger.isLoggable(Level.FINE)) { logger.fine("failed to connect to whois server for uri " + curi + ": " + e); } curi.getNonFatalFailures().add(e); curi.setFetchStatus(S_CONNECT_FAILED); } finally { recorder.close(); curi.setContentSize(recorder.getRecordedInput().getSize()); logger.fine(curi + ": " + recorder.getRecordedInput().getSize() + " bytes read"); if (client != null && client.isConnected()) try { client.disconnect(); } catch (IOException e) { logger.fine("problem closing connection to whois server for uri " + curi + ": " + e); } urlProgress.put(curi.toString(), UrlStatus.DONE.ordinal()); } }