List of usage examples for java.net InetAddress getAddress
public byte[] getAddress()
From source file:org.onosproject.sdnip.bgp.BgpSession.java
@Override public void channelConnected(ChannelHandlerContext ctx, ChannelStateEvent channelEvent) { localAddress = ctx.getChannel().getLocalAddress(); remoteAddress = ctx.getChannel().getRemoteAddress(); // Assign the local and remote IPv4 addresses InetAddress inetAddr; if (localAddress instanceof InetSocketAddress) { inetAddr = ((InetSocketAddress) localAddress).getAddress(); localIp4Address = Ip4Address.valueOf(inetAddr.getAddress()); }//from w ww .jav a2 s.co m if (remoteAddress instanceof InetSocketAddress) { inetAddr = ((InetSocketAddress) remoteAddress).getAddress(); remoteIp4Address = Ip4Address.valueOf(inetAddr.getAddress()); } log.debug("BGP Session Connected from {} on {}", remoteAddress, localAddress); if (!bgpSessionManager.peerConnected(this)) { log.debug("Cannot setup BGP Session Connection from {}. Closing...", remoteAddress); ctx.getChannel().close(); } }
From source file:eu.faircode.netguard.ServiceSinkhole.java
public static List<InetAddress> getDns(Context context) { List<InetAddress> listDns = new ArrayList<>(); List<String> sysDns = Util.getDefaultDNS(context); // Get custom DNS servers SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(context); boolean ip6 = prefs.getBoolean("ip6", true); String vpnDns1 = prefs.getString("dns", null); String vpnDns2 = prefs.getString("dns2", null); Log.i(TAG, "DNS system=" + TextUtils.join(",", sysDns) + " VPN1=" + vpnDns1 + " VPN2=" + vpnDns2); if (vpnDns1 != null) try {//from www . j a va 2 s .c o m InetAddress dns = InetAddress.getByName(vpnDns1); if (!(dns.isLoopbackAddress() || dns.isAnyLocalAddress()) && (ip6 || dns instanceof Inet4Address)) listDns.add(dns); } catch (Throwable ignored) { } if (vpnDns2 != null) try { InetAddress dns = InetAddress.getByName(vpnDns2); if (!(dns.isLoopbackAddress() || dns.isAnyLocalAddress()) && (ip6 || dns instanceof Inet4Address)) listDns.add(dns); } catch (Throwable ex) { Log.e(TAG, ex.toString() + "\n" + Log.getStackTraceString(ex)); } // Use system DNS servers only when no two custom DNS servers specified if (listDns.size() <= 1) for (String def_dns : sysDns) try { InetAddress ddns = InetAddress.getByName(def_dns); if (!listDns.contains(ddns) && !(ddns.isLoopbackAddress() || ddns.isAnyLocalAddress()) && (ip6 || ddns instanceof Inet4Address)) listDns.add(ddns); } catch (Throwable ex) { Log.e(TAG, ex.toString() + "\n" + Log.getStackTraceString(ex)); } // Remove local DNS servers when not routing LAN boolean lan = prefs.getBoolean("lan", false); boolean use_hosts = prefs.getBoolean("filter", false) && prefs.getBoolean("use_hosts", false); if (lan && use_hosts) { List<InetAddress> listLocal = new ArrayList<>(); try { Enumeration<NetworkInterface> nis = NetworkInterface.getNetworkInterfaces(); if (nis != null) while (nis.hasMoreElements()) { NetworkInterface ni = nis.nextElement(); if (ni != null && ni.isUp() && !ni.isLoopback()) { List<InterfaceAddress> ias = ni.getInterfaceAddresses(); if (ias != null) for (InterfaceAddress ia : ias) { InetAddress hostAddress = ia.getAddress(); BigInteger host = new BigInteger(1, hostAddress.getAddress()); int prefix = ia.getNetworkPrefixLength(); BigInteger mask = BigInteger.valueOf(-1) .shiftLeft(hostAddress.getAddress().length * 8 - prefix); for (InetAddress dns : listDns) if (hostAddress.getAddress().length == dns.getAddress().length) { BigInteger ip = new BigInteger(1, dns.getAddress()); if (host.and(mask).equals(ip.and(mask))) { Log.i(TAG, "Local DNS server host=" + hostAddress + "/" + prefix + " dns=" + dns); listLocal.add(dns); } } } } } } catch (Throwable ex) { Log.e(TAG, ex.toString() + "\n" + Log.getStackTraceString(ex)); } List<InetAddress> listDns4 = new ArrayList<>(); List<InetAddress> listDns6 = new ArrayList<>(); try { listDns4.add(InetAddress.getByName("8.8.8.8")); listDns4.add(InetAddress.getByName("8.8.4.4")); if (ip6) { listDns6.add(InetAddress.getByName("2001:4860:4860::8888")); listDns6.add(InetAddress.getByName("2001:4860:4860::8844")); } } catch (Throwable ex) { Log.e(TAG, ex.toString() + "\n" + Log.getStackTraceString(ex)); } for (InetAddress dns : listLocal) { listDns.remove(dns); if (dns instanceof Inet4Address) { if (listDns4.size() > 0) { listDns.add(listDns4.get(0)); listDns4.remove(0); } } else { if (listDns6.size() > 0) { listDns.add(listDns6.get(0)); listDns6.remove(0); } } } } return listDns; }
From source file:es.caib.seycon.ng.servei.XarxaServiceImpl.java
@Override protected Maquina handleRegisterDynamicIP(String nomMaquina, String ip, String serialNumber) throws es.caib.seycon.ng.exception.UnknownHostException, UnknownNetworkException { boolean anyChange = false; // First. Test if this IP belongs to anybody else MaquinaEntity old = getMaquinaEntityDao().findByAdreca(ip); MaquinaEntity maquina = null;//from www. j ava 2s. c o m if (old != null) { if (serialNumber.equals(old.getSerialNumber())) { maquina = old; // Coincide serial number if (!nomMaquina.equals(maquina.getNom())) { // Host name changed // Check if already exists such a name old = getMaquinaEntityDao().findByNom(nomMaquina); if (old != null) { old.setDeleted(true); getMaquinaEntityDao().update(old); } maquina.setNom(nomMaquina); anyChange = true; } } else { if (old.getDeleted().booleanValue() || old.getDynamicIP().booleanValue()) { old.setAdreca(null); old.setXarxa(null); getMaquinaEntityDao().update(old); } else { log.warn(String.format(Messages.getString("XarxaServiceImpl.HostsCollisionMessage"), //$NON-NLS-1$ nomMaquina, nomMaquina, ip, serialNumber)); throw new UnknownHostException( String.format(Messages.getString("XarxaServiceImpl.IPAssignedMessage"), //$NON-NLS-1$ ip, old.getNom())); } } } // Second. Test if this name belongs to anybody else if (maquina == null) { // Found a host with no serial number => Bind it old = getMaquinaEntityDao().findByNom(nomMaquina); if (old == null) { // Nothing to do } else if (old.getSerialNumber() == null && old.getDynamicIP().booleanValue()) { // Replace unused host maquina = old; maquina.setSerialNumber(serialNumber); maquina.setAdreca(ip); maquina.setLastSeen(new Date()); getMaquinaEntityDao().update(maquina); } else if (serialNumber.equals(old.getSerialNumber())) { // Found host entry maquina = old; } else if (old.getDynamicIP().booleanValue()) { // Autodelete old.setDeleted(true); getMaquinaEntityDao().update(old); } else { log.warn(String.format(Messages.getString("XarxaServiceImpl.HostsCollisionMessage"), //$NON-NLS-1$ nomMaquina, nomMaquina, ip, serialNumber)); throw new UnknownHostException(nomMaquina); } } // Third. Test if this serial is already used (with another name) if (maquina == null) { maquina = getMaquinaEntityDao().findBySerialNumber(serialNumber); if (maquina != null && !nomMaquina.equals(maquina.getNom())) { anyChange = true; maquina.setNom(nomMaquina); } } if (maquina == null) { try { InetAddress addr = InetAddress.getByName(ip); XarxaEntity x = guessNetwork(addr.getAddress()); if (x == null) { String msg = String.format(Messages.getString("XarxaServiceImpl.RequestUnmanagedIP"), //$NON-NLS-1$ nomMaquina, ip); log.warn(msg); throw new UnknownNetworkException(msg); } maquina = getMaquinaEntityDao().newMaquinaEntity(); maquina.setAdreca(ip); maquina.setCorreu("N"); //$NON-NLS-1$ maquina.setDeleted(false); DateFormat df = DateFormat.getDateTimeInstance(DateFormat.SHORT, DateFormat.MEDIUM); maquina.setDescripcio(Messages.getString("XarxaServiceImpl.AutocreatedMessage") + //$NON-NLS-1$ " " + // $NON-NLS-1$ //$NON-NLS-1$ df.format(new Date())); //$NON-NLS-1$ maquina.setDynamicIP(new Boolean(true)); maquina.setNom(nomMaquina); maquina.setOfimatica("N"); //$NON-NLS-1$ maquina.setSerialNumber(serialNumber); maquina.setServidorImpressores("N"); //$NON-NLS-1$ maquina.setOperatingSystem(getOsTypeEntityDao().findOSTypeByName("ALT")); //$NON-NLS-1$ maquina.setXarxa(x); getMaquinaEntityDao().create(maquina); } catch (java.net.UnknownHostException e) { String msg = String.format(Messages.getString("XarxaServiceImpl.RequestUnmanagedIP"), nomMaquina, //$NON-NLS-1$ "??"); //$NON-NLS-1$ log.warn(msg); throw new UnknownNetworkException(msg); } } if (!ip.equals(maquina.getAdreca()) || maquina.getXarxa() == null || !Boolean.FALSE.equals(maquina.getDeleted())) { try { InetAddress addr = InetAddress.getByName(ip); XarxaEntity x = guessNetwork(addr.getAddress()); if (x != null) { if (x.isDchpSupport()) { anyChange = true; maquina.setDeleted(Boolean.FALSE); maquina.setAdreca(ip); maquina.setXarxa(x); } else { throw new UnknownNetworkException( String.format(Messages.getString("XarxaServiceImpl.RequestWithoutDHCP"), //$NON-NLS-1$ nomMaquina, ip, x.getCodi())); } } else { throw new UnknownNetworkException(String .format(Messages.getString("XarxaServiceImpl.RequestUnmanagedIP"), nomMaquina, ip)); //$NON-NLS-1$ } } catch (java.net.UnknownHostException e) { String msg = String.format(Messages.getString("XarxaServiceImpl.RequestUnmanagedIP"), nomMaquina, //$NON-NLS-1$ "??"); //$NON-NLS-1$ log.warn(msg); throw new UnknownNetworkException(msg); } } if (anyChange || maquina.getLastSeen() == null || System.currentTimeMillis() - maquina.getLastSeen().getTime() > 8 * 60L * 60L * 1000L) // each 8 hours update last seen { maquina.setLastSeen(new Date()); getMaquinaEntityDao().update(maquina); } return getMaquinaEntityDao().toMaquina(maquina); }
From source file:org.opennms.ng.services.capsd.SuspectEventProcessor.java
/** * Utility method which compares two InetAddress objects based on the * provided method (MIN/MAX) and returns the InetAddress which is to be * considered the primary interface. NOTE: In order for an interface to be * considered primary it must be managed. This method will return null if * the 'oldPrimary' address is null and the 'currentIf' address is * unmanaged.//from w w w. j a va2 s . com * * @param currentIf Interface with which to compare the 'oldPrimary' address. * @param oldPrimary Primary interface to be compared against the 'currentIf' * address. * @param method Comparison method to be used (either "min" or "max") * @return InetAddress object of the primary interface based on the * provided method or null if neither address is eligible to be * primary. */ InetAddress compareAndSelectPrimary(InetAddress currentIf, InetAddress oldPrimary) { InetAddress newPrimary = null; if (oldPrimary == null) { if (!capsdConfig.isAddressUnmanaged(currentIf)) { return currentIf; } else { return oldPrimary; } } byte[] current = currentIf.getAddress(); byte[] primary = oldPrimary.getAddress(); // Smallest address wins if (new ByteArrayComparator().compare(current, primary) < 0) { // Replace the primary interface with the current // interface only if the current interface is managed! if (!capsdConfig.isAddressUnmanaged(currentIf)) { newPrimary = currentIf; } } if (newPrimary != null) { return newPrimary; } else { return oldPrimary; } }
From source file:catalina.core.StandardServer.java
/** * Return <code>true</code> if the specified client and server addresses * are the same. This method works around a bug in the IBM 1.1.8 JVM on * Linux, where the address bytes are returned reversed in some * circumstances.//from w w w . ja va 2s .c o m * * @param server The server's InetAddress * @param client The client's InetAddress */ private boolean isSameAddress(InetAddress server, InetAddress client) { // Compare the byte array versions of the two addresses byte serverAddr[] = server.getAddress(); byte clientAddr[] = client.getAddress(); if (serverAddr.length != clientAddr.length) return (false); boolean match = true; for (int i = 0; i < serverAddr.length; i++) { if (serverAddr[i] != clientAddr[i]) { match = false; break; } } if (match) return (true); // Compare the reversed form of the two addresses for (int i = 0; i < serverAddr.length; i++) { if (serverAddr[i] != clientAddr[(serverAddr.length - 1) - i]) return (false); } return (true); }
From source file:org.commoncrawl.service.crawler.CrawlerEngine.java
public void queueExternalURL(final String url, final long fingerprint, final boolean highPriorityRequest, final CrawlItemStatusCallback callback) { // validate the url ... String hostName = URLUtils.fastGetHostFromURL(url); if (hostName == null) { if (callback != null) { callback.crawlComplete(null, CrawlTarget.allocateCrawlURLForFailure(url, fingerprint, CrawlURL.FailureReason.MalformedURL, "URL Rejected - Bad SessionID URL"), null, false);/*from w w w .j a va2 s.co m*/ } else { if (Environment.detailLogEnabled()) LOG.error("queueExternalURL for URL:" + url + " Failed with:URL Rejected - Bad SessionID URL"); } } else { // schedule resolution ... NIODNSQueryClient queryClient = new NIODNSQueryClient() { @Override public void AddressResolutionFailure(NIODNSResolver source, String hostName, Status status, String errorDesc) { // LOG.info("DNS Failed for High Priority Request:" + hostName + " Errror:" + errorDesc); if (callback != null) { callback.crawlComplete(null, CrawlTarget.allocateCrawlURLForFailure(url, fingerprint, CrawlURL.FailureReason.DNSFailure, errorDesc), null, false); } else { if (Environment.detailLogEnabled()) LOG.error("queueExternalURL for URL:" + url + " Failed with:DNS Failed for High Priority Request:" + hostName + " Errror:" + errorDesc); } } @Override public void AddressResolutionSuccess(NIODNSResolver source, String hostName, String name, InetAddress address, long addressTTL) { int hostAddress = 0; if (address != null && address.getAddress() != null) { byte[] addr = address.getAddress(); if (addr.length == 4) { hostAddress = IPAddressUtils.IPV4AddressToInteger(addr); } } if (hostAddress != 0) { // LOG.info("DNS Success for High Priority URL:" + url + "IP:" + address.toString()); _httpCrawlQueue.queueExternalURLRequest(url, getServer().getHighPriorityListId(), fingerprint, hostName, hostAddress, addressTTL + 30000000, highPriorityRequest, callback); } else { // LOG.error("DNS Failed for High Priority URL:"+ url + " with Zero IP"); if (callback != null) { callback.crawlComplete(null, CrawlTarget.allocateCrawlURLForFailure(url, fingerprint, CrawlURL.FailureReason.DNSFailure, "Invalid IP Address"), null, false); } else { if (Environment.detailLogEnabled()) LOG.error("queueExternalURL for URL:" + url + " Failed with:DNS Failed for High Priority URL:" + url + " with Zero IP"); } } } @Override public void DNSResultsAvailable() { } @Override public void done(NIODNSResolver source, FutureTask<DNSQueryResult> task) { } }; try { getServer().getDNSServiceResolver().resolve(queryClient, hostName, false, true, DEFAULT_DNS_TIMEOUT); } catch (IOException e) { // LOG.error("Failed to Dispatch DNS Query for High Priority URL:" + url + " Exception:" + CCStringUtils.stringifyException(e)); if (callback != null) { callback.crawlComplete(null, CrawlTarget.allocateCrawlURLForFailure(url, fingerprint, CrawlURL.FailureReason.ResolverFailure, CCStringUtils.stringifyException(e)), null, false); } else { if (Environment.detailLogEnabled()) LOG.error("queueExternalURL for URL:" + url + " Failed with:Exception:" + CCStringUtils.stringifyException(e)); } } } }
From source file:org.opennms.ng.services.capsdconfig.CapsdConfigManager.java
/** * {@inheritDoc}//w w w .j a va 2s .co m * <p/> * Checks the configuration to determine if the target is managed or * unmanaged. */ @Override public boolean isAddressUnmanaged(InetAddress target) { String managementPolicy = m_config.getManagementPolicy(); boolean managedByDefault = (managementPolicy == null || managementPolicy.equalsIgnoreCase("managed")); boolean found_denial = false; boolean found_accept = false; List<IpManagement> ipManagements = getIpManagements(); Iterator<IpManagement> ipIter = ipManagements.iterator(); while (ipIter.hasNext() && !found_denial) { IpManagement mgt = ipIter.next(); for (String saddr : getSpecifics(mgt)) { InetAddress addr; addr = InetAddressUtils.addr(saddr); if (addr == null) { LOG.info("Failed to convert specific address '{}' to an InetAddress.", saddr); continue; } if (addr.equals(target)) { if (mgt.getPolicy() == null || mgt.getPolicy().equalsIgnoreCase("managed")) { found_accept = true; } else { found_denial = true; } break; } } // now check the ranges List<Range> ranges = getRanges(mgt); Iterator<Range> rangeIter = ranges.iterator(); while (!found_denial && rangeIter.hasNext()) { Range range = rangeIter.next(); InetAddress saddr; saddr = InetAddressUtils.addr(range.getBegin()); if (saddr == null) { LOG.info("Failed to convert begin address '{}' to an InetAddress.", range.getBegin()); continue; } InetAddress eaddr; eaddr = InetAddressUtils.addr(range.getEnd()); if (eaddr == null) { LOG.info("Failed to convert end address '{}' to an InetAddress.", range.getEnd()); continue; } int compareStartToTarget = new ByteArrayComparator().compare(saddr.getAddress(), target.getAddress()); int compareTargetToEnd = new ByteArrayComparator().compare(target.getAddress(), eaddr.getAddress()); if (compareStartToTarget <= 0 && compareTargetToEnd <= 0) { if (mgt.getPolicy() == null || mgt.getPolicy().equalsIgnoreCase("managed")) { found_accept = true; } else { found_denial = true; } break; } } // now check urls List<String> includeUrls = getIncludeUrls(mgt); Iterator<String> includeUrlIter = includeUrls.iterator(); boolean match = false; while (!found_denial && !match && includeUrlIter.hasNext()) { String url = includeUrlIter.next(); /* * Retrieve address list from url map. * Iterate over addresses looking for target match. */ for (String saddr : m_urlMap.get(url)) { InetAddress addr; addr = InetAddressUtils.addr(saddr); if (addr == null) { LOG.info("Failed to convert address '{}' from include URL '{}' to an InetAddress.", saddr, url); continue; } if (addr.equals(target)) { if (mgt.getPolicy() == null || mgt.getPolicy().equalsIgnoreCase("managed")) { found_accept = true; } else { found_denial = true; } match = true; break; } } } } boolean result = !managedByDefault; if (found_denial) { result = true; } else { if (found_accept) { result = false; } } return result; }
From source file:org.jibble.pircbot.PircBot.java
/** * Attempts to establish a DCC CHAT session with a client. This method * issues the connection request to the client and then waits for the * client to respond. If the connection is successfully made, then a * DccChat object is returned by this method. If the connection is not * made within the time limit specified by the timeout value, then null * is returned.//from ww w . j a v a2 s . c o m * <p/> * It is <b>strongly recommended</b> that you call this method within a new * Thread, as it may take a long time to return. * <p/> * This method may not be overridden. * * @param nick The nick of the user we are trying to establish a chat with. * @param timeout The number of milliseconds to wait for the recipient to * accept the chat connection (we recommend about 120000). * @return a DccChat object that can be used to send and recieve lines of * text. Returns <b>null</b> if the connection could not be made. * @see DccChat * @since PircBot 0.9.8 */ public final DccChat dccSendChatRequest(String nick, int timeout) { DccChat chat = null; try { ServerSocket ss = null; int[] ports = getDccPorts(); if (ports == null) { // Use any free port. ss = new ServerSocket(0); } else { for (int i = 0; i < ports.length; i++) { try { ss = new ServerSocket(ports[i]); // Found a port number we could use. break; } catch (Exception e) { // Do nothing; go round and try another port. } } if (ss == null) { // No ports could be used. throw new IOException("All ports returned by getDccPorts() are in use."); } } ss.setSoTimeout(timeout); int port = ss.getLocalPort(); InetAddress inetAddress = getDccInetAddress(); if (inetAddress == null) { inetAddress = getInetAddress(); } byte[] ip = inetAddress.getAddress(); long ipNum = ipToLong(ip); sendCTCPCommand(nick, "DCC CHAT chat " + ipNum + " " + port); // The client may now connect to us to chat. Socket socket = ss.accept(); // Close the server socket now that we've finished with it. ss.close(); chat = new DccChat(this, nick, socket); } catch (Exception e) { // Do nothing. } return chat; }
From source file:org.commoncrawl.service.crawler.CrawlerEngine.java
/** resolve IP addresses for remaining hosts in work unit **/ private void distributeSegmentHost(final CrawlSegmentHost host) { if (_shutdownFlag) return;//from ww w .ja v a 2 s.co m if (Environment.detailLogEnabled()) LOG.info("Distributing Host:" + host.getHostName() + "URL Count:" + host.getUrlTargets().size()); // get host name final String hostName = extractHostNameFromCrawlSegmentHost(host); if (hostName == null) { LOG.error("No Valid Extracted HostName found for host: " + host.getHostName()); processHostIPResolutionResult(host, false, null); return; } // cache lookup happened in segment load ... so just check to see if IP is populated ... if (host.isFieldDirty(CrawlSegmentHost.Field_IPADDRESS)) { if (Environment.detailLogEnabled()) LOG.info("Immediately Processing " + host.getUrlTargets().size() + " Items for SuperHost:" + host.getHostName()); // if so, immediately process results processHostIPResolutionResult(host, false, null); } // otherwise queue up for result ... else { if ((_highWaterMarkHit && _hostQueuedForResolution <= _dnsHighWaterMark) || (!_highWaterMarkHit && _hostQueuedForResolution < _dnsHighWaterMark)) { // increment pending resolution count ... _hostQueuedForResolution++; // and increment urls pending resolution if (_hostQueuedForResolution == _dnsHighWaterMark) { if (!_highWaterMarkHit) { if (CrawlEnvironment.detailLoggingEnabled) LOG.info("### DNS High Water Mark Hit. PendingResolutions:" + _hostQueuedForResolution); _highWaterMarkHit = true; } } if (Environment.detailLogEnabled()) LOG.info("Scheduling Resolution for Host:" + hostName); // schedule resolution ... NIODNSQueryClient queryClient = new NIODNSQueryClient() { @Override public void AddressResolutionFailure(NIODNSResolver source, String hostName, Status status, String errorDesc) { // LOG.info("Got AddressResolutionFailure for host:" + hostName); // decrement pending resolution count ... _hostQueuedForResolution--; if (_hostQueuedForResolution <= _dnsLowWaterMark && _highWaterMarkHit) { if (!_shutdownFlag) { feedDNSQueue(); } } logDNSFailure(host.getHostName(), errorDesc); LOG.error("Host IP Resolution for Host:" + host.getHostName() + " FAILED with Status:" + status.toString() + " ErrorDesc:" + errorDesc); if (!_shutdownFlag) { // now react to the result ... processHostIPResolutionResult(host, true, null); } } @Override public void AddressResolutionSuccess(NIODNSResolver source, String hostName, String name, InetAddress address, long addressTTL) { //LOG.info("Got AddressResolutionSuccess for host:" + hostName); // decrement pending resolution count ... _hostQueuedForResolution--; logDNSQuery(hostName, address, addressTTL, null); if (_hostQueuedForResolution <= _dnsLowWaterMark && _highWaterMarkHit) { if (!_shutdownFlag) { feedDNSQueue(); } } int hostAddress = 0; if (address != null && address.getAddress() != null) { byte[] addr = address.getAddress(); if (addr.length == 4) { hostAddress = IPAddressUtils.IPV4AddressToInteger(addr); } } if (hostAddress != 0) { // and update segment host's ip info ... host.setIpAddress(hostAddress); host.setTtl(Math.max(addressTTL, System.currentTimeMillis() + CrawlEnvironment.MIN_DNS_CACHE_TIME)); // log it // LOG.info(host.getHostName() + " " +IPAddressUtils.IntegerToIPAddressString(hostAddress) + " " + result.getTTL()); if (!_shutdownFlag) { // now react to the result ... processHostIPResolutionResult(host, false, null); } } else { //if (Environment.detailLogEnabled()) LOG.error("Host IP Resolution for Host:" + host.getHostName() + " FAILED with Zero IP"); if (!_shutdownFlag) { // now react to the result ... processHostIPResolutionResult(host, true, null); } } } @Override public void DNSResultsAvailable() { } @Override public void done(NIODNSResolver source, FutureTask<DNSQueryResult> task) { } }; try { getServer().getDNSServiceResolver().resolve(queryClient, hostName, false, false, DEFAULT_DNS_TIMEOUT); } catch (IOException e) { LOG.error(CCStringUtils.stringifyException(e)); // decrement pending resolution count ... _hostQueuedForResolution--; if (_hostQueuedForResolution <= _dnsLowWaterMark && _highWaterMarkHit) { if (!_shutdownFlag) { feedDNSQueue(); } } LOG.error("Host IP Resolution for Host:" + host.getHostName() + " FAILED with Exception:" + CCStringUtils.stringifyException(e)); // now react to the result ... if (!_shutdownFlag) { processHostIPResolutionResult(host, true, null); } } } //otherwise if we need to defer this item ... else { if (Environment.detailLogEnabled()) LOG.info("Deferring DNS Lookup for Host:" + host.getHostName()); _dnsDeferedHosts.add(host); } } }
From source file:com.dragonflow.StandardMonitor.URLOriginalMonitor.java
/** * /* w ww . java 2 s.co m*/ */ private static long[] checkInternalURL(SocketSession socketsession, String s, String s1, String s2, String s3, String s4, String s5, String s6, String s7, Array array, String s8, String s9, String s10, StringBuffer stringbuffer, long l, String s11, int i, long l1, StringBuffer stringbuffer1, StringBuffer stringbuffer2) { String s12 = ""; if (s.lastIndexOf('#') != -1) { s = s.substring(0, s.lastIndexOf('#')); } if ((debugURL & kDebugRequest) != 0) { LogManager.log("RunMonitor", "checking URL... " + s); } int j = 0; if (socketsession.context.getSetting("_keepTryingForGoodStatus").length() > 0) { j = TextUtils.toInt(socketsession.context.getSetting("_keepTryingForGoodStatus")); } long l2 = kURLNoStatusError; long l3 = 0L; long l4 = System.currentTimeMillis(); long l6 = 0L; long l7 = 0L; long l8 = 0L; long l9 = 0L; long l10 = 0L; long l11 = 0L; long l12 = 0L; boolean flag = false; URLInfo urlinfo = new URLInfo(s); String s16 = urlinfo.getProtocol(); String s17 = urlinfo.getHost(); int k = urlinfo.getConnectPort(); boolean flag1 = false; boolean flag2 = false; if (SocketStream.getSSLFactory() != null) { flag1 = true; if (socketsession.context.getSetting("_sslJavaEnabled").length() > 0) { flag1 = true; } else if (socketsession.context.getSetting("_sslJavaDisabled").length() > 0) { flag1 = false; } } boolean flag3 = false; if (s8.startsWith(NT_CHALLENGE_RESPONSE_TAG)) { s8 = s8.substring(NT_CHALLENGE_RESPONSE_TAG.length()); flag3 = true; } boolean flag4 = false; if (socketsession.context.getSetting("_urlMonitorUseApacheHttpClient").length() > 0) { flag4 = true; } SocketStream socketstream = null; String s18 = getUserAgent(array); if (s18.length() == 0) { s18 = socketsession.context.getSetting("_URLUserAgent"); } String s19 = getSslgetOptions(array); if (s19.length() == 0) { s19 = socketsession.context.getSetting("_sslgetOptions"); } String s20 = socketsession.context.getSetting("_URLMonitorProxyExceptions"); String s21 = null; String s22 = ""; String s23 = ""; String s25 = ""; String s26 = getContentType(array); String s27 = encodeParameters(array, s26); socketsession.addCookieParameters(array, s); if (stringbuffer == null) { stringbuffer = new StringBuffer(kURLBufferSize); } boolean flag5 = socketsession.context.getSetting("_concatURLRedirects").length() != 0; if (flag5 && concatBuffer == null) { concatBuffer = new StringBuffer(kURLBufferSize); } if (s8.length() > 0) { Base64Encoder base64encoder = new Base64Encoder(s8 + ":" + s9); s22 = "Authorization: Basic " + base64encoder.processString() + CRLF; } if (s6.length() > 0) { Base64Encoder base64encoder1 = new Base64Encoder(s6 + ":" + s7); String s24 = base64encoder1.processString(); s25 = "Proxy-Authorization: Basic " + s24 + CRLF; } long l13 = l1 - System.currentTimeMillis(); long l14 = l13 / 1000L; long l15 = -1L; CounterLock counterlock; // 617 try { if (s10.length() != 0) { String s28 = ""; if (s27.length() > 0) { s28 = HTTPRequest.encodeString(s27); } String s32; if (s10.indexOf("get.exe") != -1) { String s36 = socketsession.context.getSetting("_URLRemoteOptions"); if (s36.length() == 0) { s36 = "-ignoreErrors+-ignoreUnknownCA+-x"; } if (flag3 && !s8.startsWith(NT_CHALLENGE_RESPONSE_TAG)) { s8 = NT_CHALLENGE_RESPONSE_TAG + s8; } if (s18.length() > 0) { if (s28.length() > 0) { s28 = s28 + URLEncoder.encode("&"); } s28 = s28 + URLEncoder.encode("User-Agent: " + s18); } if (s19.length() > 0) { if (s28.length() > 0) { s28 = s28 + URLEncoder.encode("&"); } s28 = s28 + URLEncoder.encode("sslgetOptions: " + s19); } if (s11.length() > 0) { String as[] = TextUtils.split(s11, CRLF); for (int k1 = 0; k1 < as.length; k1++) { if (s28.length() > 0) { s28 = s28 + URLEncoder.encode("&"); } if (getHeaderType(as[k1]) < 0) { s28 = s28 + URLEncoder.encode("Custom-Header: "); } String s46 = as[k1]; int i3 = s46.indexOf("&"); if (i3 >= 0 && !s46.startsWith(URLSequenceMonitor.refererStartToken)) { s46 = s46.substring(0, i3); } s28 = s28 + URLEncoder.encode(s46); } } String s13 = socketsession.getCookieHeader(s, true); if (s13.length() > 0) { String s40 = ""; if (s36.endsWith("-x")) { s40 = "-x"; s36 = s36.substring(0, s36.length() - 2); } String as2[] = TextUtils.split(s13, CRLF); for (int j2 = 0; j2 < as2.length; j2++) { s36 = s36 + "-c+%22" + URLEncoder.encode(as2[j2]) + "%22+"; } s36 = s36 + s40; } s32 = s10 + "?" + s36 + "+%22" + URLEncoder.encode(s) + "%22" + "+%22" + l14 + "%22" + "+%22" + URLEncoder.encode(s8) + "%22" + "+%22" + URLEncoder.encode(s9) + "%22" + "+%22" + s28 + "%22" + "+%22" + URLEncoder.encode(s5) + "%22" + "+%22" + URLEncoder.encode(s6) + "%22" + "+%22" + URLEncoder.encode(s7) + "%22"; } else if (s10.indexOf("port.exe") != -1) { s32 = s10 + "&host=" + s; } else { s32 = s10 + "?host=" + s; } Array array2 = null; String s41 = ""; String s43 = ""; String s47 = ""; String s49 = ""; String s51 = ""; String s54 = ""; String s56 = ""; if (Platform.isPortal()) { String s59 = HTTPUtils.getLocationIDByURL(s10); if (Portal.isPortalID(s59)) { PortalSiteView portalsiteview = (PortalSiteView) Portal.getSiteViewForID(s59); if (portalsiteview != null) { s41 = portalsiteview.getProperty(PortalSiteView.pUserName); s43 = portalsiteview.getProperty(PortalSiteView.pPassword); s49 = portalsiteview.getProperty(PortalSiteView.pProxy); s51 = portalsiteview.getProperty(PortalSiteView.pProxyUserName); s54 = portalsiteview.getProperty(PortalSiteView.pProxyPassword); } } } int k3 = i; if (socketsession.context == null) ; CounterLock counterlock1 = null; if (!socketsession.inRemoteRequest) { counterlock1 = getLocationLock(socketsession.context, s10, s); } try { long l18 = System.currentTimeMillis() + (l14 + 30L) * 1000L; socketsession.inRemoteRequest = true; long al2[] = check1URL(socketsession, s32, s1, s2, s3, s4, s49, s51, s54, array2, s41, s43, s47, stringbuffer, l, s56, k3, l18, stringbuffer1, stringbuffer2); l2 = al2[0]; if (j > 0) { l2 = getURLStatus_ForBackupToRegularMeansOnly(socketsession, l2, s32, 0, j); } if (debugURL != 0) { System.out.println("Status1: " + l2); } l3 = al2[1]; } finally { socketsession.inRemoteRequest = false; if (counterlock1 != null) { releaseLocationLock(counterlock1); } } String s65 = stringbuffer.toString(); int i4 = s65.length(); stringbuffer.setLength(0); int j4 = 0; while (j4 < i4) { int k4 = s65.indexOf("\r\r\n", j4); if (k4 < 0) { stringbuffer.append(s65.substring(j4)); break; } stringbuffer.append(s65.substring(j4, k4) + "\r\n"); j4 = k4 + 3; } String s68 = stringbuffer.toString(); if (s10.indexOf("get.exe") != -1) { String s70 = "URLMonitorDuration: "; int k5 = s68.lastIndexOf(s70); if (k5 != -1) { l3 = TextUtils.toLong(s68.substring(k5 + s70.length(), k5 + s70.length() + 10)); } s70 = "URLMonitorStatus: "; k5 = s68.lastIndexOf(s70); long l21 = l2; if (k5 != -1) { l21 = TextUtils.toLong(s68.substring(k5 + s70.length(), k5 + s70.length() + 10)); } if (l21 != 200L || l2 != (long) kURLContentMatchError && l2 != (long) kURLContentErrorFound) { if (k5 != -1) { l2 = l21; if (debugURL != 0) { System.out.println("Status2 ssl: " + l2); } } else { int j6 = s68.length(); if (j6 > 500) { j6 = 500; } String s78 = s68.substring(0, j6); if (j > 0) { l21 = getURLStatus_ForBackupToRegularMeansOnly(socketsession, l21, s32, 0, j); } LogManager.log("Error", "Remote URL error, [" + HTTPUtils.getLocationIDByURL(s10) + "] " + lookupStatus(l2) + ", " + s10 + ", " + s + ", detail: " + s78); l2 = kURLRemoteMonitoringError; if (debugURL != 0) { System.out.println("Status3 kURLRemoteMonitoringError: " + l2); } } } } s68 = getHTTPContent(s68); int i5 = s68.lastIndexOf("\r\nURLMonitorStatus: "); if (i5 >= 0) { s68 = s68.substring(0, i5); } stringbuffer.setLength(0); stringbuffer.append(s68); l12 = stringbuffer.length(); } else { if (flag3 || s16.equals("https") && !flag1 || flag4) { flag2 = true; counterlock = null; try { if (s16.equals("https")) { counterlock = getSSLGroupLock(socketsession.context); } if (flag4) { Vector vector = new Vector(); if (socketsession.context.getSetting("_sslKeepAlive").length() > 0) { if (s5.length() > 0) { vector.add(new Header("Proxy-Connection", "Keep-Alive")); } else { vector.add(new Header("Connection", "Keep-Alive")); } } vector.add(new Header("User-Agent", s18)); Header header = socketsession.getCookieHeader(s); if (header != null) { vector.add(header); } if (s27.length() > 0) { vector.add(new Header("Content-Type", s26)); } String s42 = ""; HTTPRequestSettings httprequestsettings = new HTTPRequestSettings(s, s8, s9, s42, null, s5, s6, s7, vector, 1, (int) l13, (int) l13); StringBuffer stringbuffer3 = new StringBuffer(); ApacheHttpMethod apachehttpmethod = null; long l17 = System.currentTimeMillis(); apachehttpmethod = ApacheHttpUtils.getRequest(httprequestsettings, stringbuffer3); l3 = System.currentTimeMillis() - l17; l2 = apachehttpmethod.getStatusCode(); if (apachehttpmethod.getResponseBodyAsString() != null) { stringbuffer2.append(apachehttpmethod.getResponseBodyAsString()); } if (apachehttpmethod.getResponseBody() != null) { l12 = apachehttpmethod.getResponseBody().length; } } else { if (s5 == null) { s5 = ""; } Array array1 = new Array(); array1.add(Platform.getRoot() + "/tools/sslget"); if (s19.length() > 0) { Array array3 = Platform.split(' ', s19); Enumeration enumeration = array3.elements(); while (enumeration.hasMoreElements()) { array1.add(enumeration.nextElement()); } } if (socketsession.context.getSetting("_sslKeepAlive").length() > 0) { array1.add("-keepAlive"); } boolean flag6 = socketsession.context.getSetting("_urlUnixSSL").length() == 0; array1.add("-agent"); array1.add("\"" + s18 + "\""); String s14 = s11; s14 = socketsession.getCookieHeader(s, flag6) + s14; if (s14.length() > 0) { String as1[] = TextUtils.split(s14, CRLF); for (int i2 = 0; i2 < as1.length; i2++) { array1.add("-c"); array1.add("\"" + as1[i2] + "\""); } } if (s27.length() > 0) { array1.add("-c"); array1.add("\"" + CONTENT_TYPE_HEADER + s26 + "\""); } if (array != null) { Enumeration enumeration1 = array.elements(); while (enumeration1.hasMoreElements()) { String s44 = (String) enumeration1.nextElement(); if (TextUtils.startsWithIgnoreCase(s44, CUSTOM_HEADER)) { array1.add("-c"); array1.add("\"" + s44.substring(CUSTOM_HEADER.length()) + "\""); } } } array1.add("-x"); array1.add(s); array1.add("" + l14); array1.add("\"" + s8 + "\""); array1.add("\"" + s9 + "\""); array1.add("\"" + s27 + "\""); if (!hostIsProxyException(s20, s)) { array1.add("\"" + s5 + "\""); } else { array1.add("\"\""); } array1.add("\"" + s6 + "\""); array1.add("\"" + s7 + "\""); SSLCounter++; if (sslLock.current() == 0) { LogManager.log("RunMonitor", "ssl block, " + ((sslLock.max - sslLock.current()) + 1) + ", " + s); } else { LogManager.log("RunMonitor", "ssl start, " + SSLCounter + ", " + s); } Array array4 = new Array(); l2 = sendSSLRequest(urlinfo.getHost(), socketsession, array1, sslLock, array4); if (debugURL != 0) { System.out.println("Status4 sendSSLRequest: " + l2); } SSLCounter--; Enumeration enumeration2 = array4.elements(); int k2 = 0; boolean flag7 = false; l12 = -1L; String s52 = "URLMonitorStatus:"; String s55 = "URLMonitorDuration:"; String s57 = "URLMonitorDNSDuration:"; String s60 = "URLMonitorConnectDuration:"; String s62 = "URLMonitorResponseDuration:"; String s66 = "URLMonitorDownloadDuration:"; boolean flag8 = true; while (enumeration2.hasMoreElements()) { String s69 = (String) enumeration2.nextElement(); if (stringbuffer2 != null) { stringbuffer2.append(s69 + "\n"); } if (++k2 > 2) { int j5 = s69.indexOf(s52); if (j5 >= 0) { String s71 = s69.substring(s69.length() - 10); l2 = TextUtils.toLong(s71); if (debugURL != 0) { System.out.println("Status5 statusString: " + l2); } flag8 = false; } int i6 = s69.indexOf(s55); if (i6 >= 0) { String s72 = s69.substring(s69.length() - 10); l3 = TextUtils.toLong(s72); } i6 = s69.indexOf(s57); if (i6 >= 0) { String s73 = s69.substring(s69.length() - 10); l6 = TextUtils.toLong(s73); } i6 = s69.indexOf(s60); if (i6 >= 0) { String s74 = s69.substring(s69.length() - 10); l7 = TextUtils.toLong(s74); } i6 = s69.indexOf(s62); if (i6 >= 0) { String s75 = s69.substring(s69.length() - 10); l8 = TextUtils.toLong(s75); } i6 = s69.indexOf(s66); if (i6 >= 0) { String s76 = s69.substring(s69.length() - 10); l9 = TextUtils.toLong(s76); } if (k2 == 4 && s69.length() == 0) { flag7 = true; } if ((!flag7 || k2 % 2 != 0 || s69.length() != 0) && flag8) { stringbuffer.append(s69); stringbuffer.append('\n'); } } } LogManager.log("RunMonitor", "SSL END, " + SSLCounter + ", " + l3 + " " + s); l12 = stringbuffer.length(); } if (counterlock != null) { releaseSSLGroupLock(counterlock); } } catch (Exception exception1) { if (counterlock != null) { releaseSSLGroupLock(counterlock); } throw exception1; } } else { String s29 = urlinfo.getFile(); String s33 = getHostHeader(array, s17, k, s16); String s37 = null; int j1 = -1; if (s5.length() != 0 && !isProxyException(s20, s17)) { if (!s5.startsWith("http://")) { s5 = "http://" + s5; } j1 = k; s37 = s17; URLInfo urlinfo1 = new URLInfo(s5); s17 = urlinfo1.getHost(); k = urlinfo1.getConnectPort(); if (!s16.equals("https")) { if (s29.equals("/") && !s.endsWith("/")) { s29 = s + "/"; } else { s29 = s; } } } String s45 = socketsession.getCookieHeader(s, false); String s48 = getRequestCommand(array); String s50 = socketsession.getVersion(); String s53 = getRequestProtocol(array); if (s53.endsWith("/")) { s53 = s53 + s50; } String s15 = s11; int j3 = -1; String s58 = s15; if ((j3 = s15.indexOf("&" + URLSequenceMonitor.refererEndToken)) != -1) { s15 = s58.substring(0, j3); s15 = s15 + s58.substring(j3 + ("&" + URLSequenceMonitor.refererEndToken).length()); } if (s15.length() > 0 && !s15.endsWith(CRLF)) { s15 = s15 + CRLF; } if (array != null) { Enumeration enumeration3 = array.elements(); while (enumeration3.hasMoreElements()) { String s63 = (String) enumeration3.nextElement(); if (TextUtils.startsWithIgnoreCase(s63, CUSTOM_HEADER)) { s15 = s15 + s63.substring(CUSTOM_HEADER.length()) + CRLF; } } } String s61 = socketsession.getStreamEncoding(); String s64 = ""; if (s61.length() > 0) { s64 = "Accept-charset: " + s61 + CRLF; } String s67 = s48 + " " + s29 + " " + s53 + CRLF + "User-Agent: " + s18 + CRLF + s64 + "Accept: */*" + CRLF + "Host: " + s33 + CRLF + s22 + s25 + s45 + s15; if (s27.length() == 0) { s67 = s67 + CRLF; } else { if (s61.length() > 0) { s64 = "; charset=" + s61; } s67 = s67 + CONTENT_TYPE_HEADER + s26 + s64 + CRLF + "Content-length: " + s27.length() + CRLF + CRLF + s27; } long l5 = System.currentTimeMillis(); long l19 = l5; InetAddress inetaddress = InetAddress.getByName(s17); long l20 = System.currentTimeMillis(); l6 = l20 - l19; String s77 = Platform.dottedIPString(inetaddress.getAddress()) + ":" + k; l19 = l20; socketstream = socketsession.connect(s77, inetaddress, k, s16, s37, j1, s6, s7, l1); l20 = System.currentTimeMillis(); l7 = l20 - l19; Socket socket = socketstream.socket; int k6 = (int) (l1 - System.currentTimeMillis()); if ((long) k6 <= kTimedOutValue) { throw new InterruptedIOException(); } if (s16.equals("https") && socketsession.context.getSetting("_urlCertDays").length() > 0) { try { SSLSession sslsession = ((SSLSocket) socketstream.socket).getSession(); X509Certificate ax509certificate[] = sslsession.getPeerCertificateChain(); int j7 = 0; for (int k7 = 0; k7 < ax509certificate.length; k7++) { X509Certificate x509certificate = ax509certificate[k7]; long l22 = System.currentTimeMillis(); long l23 = l22 + 0x5265c00L; int i8 = 0; while (true) { Date date = new Date(l23); try { x509certificate.checkValidity(date); } catch (CertificateExpiredException certificateexpiredexception) { if (i8 == 0) { i8++; } break; } catch (CertificateNotYetValidException certificatenotyetvalidexception) { break; } i8++; l23 += 0x5265c00L; } if (i8 <= 0) { continue; } if (j7 == 0) { j7 = i8; continue; } if (j7 > i8) { j7 = i8; } } if (j7 > 1) { l15 = j7; } if (j7 == 1) { l15 = 0L; } } catch (SSLPeerUnverifiedException sslpeerunverifiedexception) { /* empty */ } } Platform.setSocketTimeout(socket, k6); if ((debugURL & kDebugRequest) != 0) { LogManager.log("RunMonitor", "sending request... " + s67); } l19 = System.currentTimeMillis(); socketstream.transmit(s67); if (stringbuffer2 != null) { stringbuffer2.append(s67); } if ((debugURL & kDebugRequest) != 0) { LogManager.log("RunMonitor", "request sent"); } long al3[]; if (s50.equals("1.0")) { al3 = fillBuffer(socketsession, socketstream, l1, stringbuffer, l, l19); } else { al3 = fillBufferParse(s48, socketsession, socketstream, socket, l1, stringbuffer, l, l19); } if (stringbuffer2 != null) { stringbuffer2.append(stringbuffer.toString()); } if (!socketstream.receivedReply || al3.length > 2 && al3[2] == -1L) { socketstream.receivedEndOfStreamOnFirst = false; LogManager.log("RunMonitor", "reopening connection to " + inetaddress); socketstream.reconnect(); l19 = l20; socketstream = socketsession.connect(s77, inetaddress, k, s16, s37, j1, s6, s7, l1); l20 = System.currentTimeMillis(); l7 += l20 - l19; Socket socket1 = socketstream.socket; int i7 = (int) (l1 - System.currentTimeMillis()); if ((long) i7 <= kTimedOutValue) { throw new InterruptedIOException(); } Platform.setSocketTimeout(socket1, i7); if (debugURL != 0) { LogManager.log("RunMonitor", "sending request2..." + s67); System.out.println("URLOriginalMonitor : sending request2..." + s67); } l19 = System.currentTimeMillis(); socketstream.transmit(s67); if (stringbuffer2 != null) { stringbuffer2.append(s67); } if (debugURL != 0) { LogManager.log("RunMonitor", "request2 sent"); System.out.println("URLOriginalMonitor : request2 sent"); } if (s50.equals("1.0")) { al3 = fillBuffer(socketsession, socketstream, l1, stringbuffer, l, l19); } else { al3 = fillBufferParse(s48, socketsession, socketstream, socket1, l1, stringbuffer, l, l19); } if (stringbuffer2 != null) { stringbuffer2.append(stringbuffer.toString()); } } l12 = al3[0]; l8 = al3[1]; l20 = System.currentTimeMillis(); l9 = l20 - l19 - l8; l3 = l20 - l5; if ((debugURL & kDebugIO) != 0) { LogManager.log("RunMonitor", "total, duration: " + l3 + ", clock: " + System.currentTimeMillis()); } } } // 5637 if ((debugURL & kDebugData) != 0) { LogManager.log("RunMonitor", "content=" + stringbuffer); } URLScannerInputStream urlscannerinputstream = new URLScannerInputStream(stringbuffer, l2); urlscannerinputstream.parse(); if (urlscannerinputstream.contentLength != -1L) { l12 = urlscannerinputstream.contentLength; } l10 = urlscannerinputstream.lastModified; l11 = urlscannerinputstream.date; s21 = urlscannerinputstream.location; l2 = urlscannerinputstream.status; if (j > 0) { l2 = getURLStatus_ForBackupToRegularMeansOnly(socketsession, l2, s, 0, j); } if (debugURL != 0) { System.out.println("Status6 scanner.status: " + l2); } if ((debugURL & kDebugReply) != 0) { if (l2 != 200L) { LogManager.log("RunMonitor", "status=" + l2 + ", reply=" + stringbuffer); } else { LogManager.log("RunMonitor", "status=" + l2); } } if (socketstream != null) { socketstream.keepAlive = urlscannerinputstream.isKeepAlive(); } if (!socketsession.inRemoteRequest) { flag = urlscannerinputstream.refreshRedirect; } // 5905 } catch (UnknownHostException e) { l2 = kURLBadHostNameError; if (debugURL != 0) { System.out.println("Status7 kURLBadHostNameError: " + l2 + " exception: " + e.toString()); } } catch (InterruptedIOException e) { l2 = kURLTimeoutError; if (debugURL != 0) { System.out.println("Status8 kURLTimeoutError: " + l2 + " exception: " + e.toString()); } } catch (SocketException e) { if (debugURL != 0) { e.printStackTrace(); LogManager.log("RunMonitor", "socket exception, " + e); } if (Platform.noRoute(e)) { l2 = kURLNoRouteToHostError; if (debugURL != 0) { System.out.println("Status9 kURLNoRouteToHostError: " + l2 + " exception: " + e.toString()); } } else { l2 = kURLNoConnectionError; if (debugURL != 0) { System.out.println("Status10 kURLNoConnectionError: " + l2 + " exception: " + e.toString()); } if (Platform.isWindows()) { l2 = kSSL2NotFoundError; if (debugURL != 0) { System.out.println("Status11 kSSL2NotFoundError: " + l2 + " exception: " + e.toString()); } } } } catch (Exception e) { String s34 = e.getClass() + ", " + e.getMessage(); if (s34.indexOf("SSLException") != -1 && Platform.isWindows()) { String s38 = s17 + ":" + k; addSSL2Only(s38, s + ", " + s34); l2 = kSSL2NotFoundError; if (debugURL != 0) { System.out.println("Status12 kSSL2NotFoundError: " + l2 + " exception: " + e.toString()); } } else { e.printStackTrace(); l2 = kSSL2NotFoundError; if (debugURL != 0) { System.out.println("Status13 kSSL2NotFoundError: " + l2 + " exception: " + e.toString()); } } } finally { if (j > 0) { l2 = getURLStatus_ForBackupToRegularMeansOnly(socketsession, l2, s, 0, j); } if (socketstream != null) { if (socketstream.receivedEndOfStreamOnFirst) { String s79 = s17 + ":" + k; addSSL2Only(s79, s + ", " + " first line null"); l2 = kSSL2NotFoundError; if (debugURL != 0) { System.out.println("Status14 kSSL2NotFoundError: " + l2); } socketstream.receivedEndOfStreamOnFirst = false; } socketsession.release(socketstream); } } // 6637 if (200L < l2 && l2 < 300L && socketsession.context.getSetting("_urlEnable2xxStatus").length() == 0) { l2 = 200L; } if (debugURL != 0) { System.out.println("Status15 200: " + l2); } if (l2 == 301L || l2 == 302L || l2 == 303L || l2 == 307L || flag) { if (s21 != null) { s21 = TextUtils.unescapeHTML(s21); s21 = resolveURL(s21, new URLInfo(s1), ""); socketsession.refererURL = s21; long l16 = socketsession.context.getSettingAsLong("_urlRedirectMax", DEFAULT_MAX_REDIRECTS); if ((long) i <= l16) { if ((debugURL & kDebugRequest) != 0) { LogManager.log("RunMonitor", "redirect=" + s21); } socketsession.updateCookies(stringbuffer.toString(), s); if (stringbuffer1 != null) { stringbuffer1.setLength(0); stringbuffer1.append(s21); } if (flag5 && concatBuffer != null) { concatBuffer.append(stringbuffer.toString()); } stringbuffer.setLength(0); s8 = socketsession.originalUserName; s9 = socketsession.originalPassword; long al1[] = check1URL(socketsession, s21, s21, s2, s3, s4, s5, s6, s7, null, s8, s9, s2, stringbuffer, l, s11, i + 1, l1, stringbuffer1, stringbuffer2); l2 = al1[0]; if (j > 0) { l2 = getURLStatus_ForBackupToRegularMeansOnly(socketsession, l2, s21, 0, j); } if (debugURL != 0) { System.out.println("Status16 redirectResult: " + l2); } l10 = al1[3]; l11 = al1[4]; l3 += al1[1]; l12 += al1[2]; l6 += al1[5]; l7 += al1[6]; l8 += al1[7]; l9 += al1[8]; } } } else { if (l2 == (long) kURLNoStatusError) { if (socketsession.context.getSetting("_urlAllowNoStatus").length() > 0) { l2 = kURLok; if (debugURL != 0) { System.out.println("Status17 kURLok: " + l2); } } else { LogManager.log("Error", "URL missing status: " + s); } } if (flag5 && concatBuffer != null) { concatBuffer.append(stringbuffer.toString()); stringbuffer.setLength(0); stringbuffer.append(concatBuffer.toString()); concatBuffer = null; } String s30 = I18N.UnicodeToString(stringbuffer.toString(), I18N.nullEncoding()); if (l2 == 200L && s4.length() != 0) { int i1 = TextUtils.matchExpression(s30, s4); if (i1 != Monitor.kURLok && I18N.hasUnicode(s4)) { String s39 = getHTMLEncoding(s30); i1 = TextUtils.matchExpression(s30, I18N.UnicodeToString(s4, s39)); } if (i1 == 200) { l2 = kURLContentErrorFound; } if (debugURL != 0) { System.out.println("Status18 kURLContentErrorFound: " + l2); } } if (l2 == 200L && s3.length() != 0) { l2 = TextUtils.matchExpression(s30, s3); if (debugURL != 0) { System.out.println("Status19 TextUtils.matchExpression(contents,match): " + l2); } if (l2 != (long) Monitor.kURLok && I18N.hasUnicode(s3)) { String s35 = getHTMLEncoding(s30); l2 = TextUtils.matchExpression(s30, I18N.UnicodeToString(s3, s35)); if (debugURL != 0) { System.out.println( "Status20 TextUtils.matchExpression(contents, I18N.UnicodeToString(match,encoding): " + l2); } } } } if (socketsession.context.getSetting("_urlDetailLogEnabled").length() > 0 && s.indexOf("get.exe") == -1) { String s31 = ""; if (s10.length() > 0) { s31 = "[" + HTTPUtils.getLocationIDByURL(s10) + "]"; } LogManager.log(socketsession.context.getSetting(pURLLogName), s31 + s + "\t" + l2 + "\t" + l3 + "\t" + l12 + "\t" + l10 + "\t" + l11 + "\t" + l6 + "\t" + l7 + "\t" + l8 + "\t" + l9 + "\t" + socketsession.context.getProperty(pName) + "\t" + socketsession.context.getProperty(pGroupID) + "\t" + socketsession.context.getProperty(pID)); } if (!socketsession.inRemoteRequest) { internalURLs++; internalURLBytes += l12; internalURLDuration += l3; if (l2 != 200L) { internalURLErrors++; } } if (s10.length() > 0) { internalRemoteURLs++; internalRemoteBytes += l12; internalRemoteDuration += l3; if (l2 != 200L) { internalRemoteErrors++; } } else if (s16.equals("https")) { if (flag2) { internalSecureURLs++; internalSecureBytes += l12; internalSecureDuration += l3; if (l2 != 200L) { internalSecureErrors++; } } else { internalSecureJavaURLs++; internalSecureJavaBytes += l12; internalSecureJavaDuration += l3; if (l2 != 200L) { internalSecureJavaErrors++; } } } else if (!socketsession.inRemoteRequest) { internalJavaURLs++; internalJavaBytes += l12; internalJavaDuration += l3; if (l2 != 200L) { internalJavaErrors++; } } long al[] = new long[10]; al[0] = l2; if (debugURL != 0) { System.out.println("Status21 #############################results[0]: " + l2); } al[1] = l3; al[2] = l12; al[3] = l10; al[4] = l11; al[5] = l6; al[6] = l7; al[7] = l8; al[8] = l9; al[9] = l15; return al; }