List of usage examples for com.google.common.net HostSpecifier isValid
public static boolean isValid(String specifier)
From source file:io.fluo.commoncrawl.data.util.LinkUtil.java
public static URL createURL(String url) throws ParseException { String cleanUrl = DataUtil.cleanUrl(url); try {/*www .j a v a2 s.co m*/ URL u = new URL(cleanUrl); if (!u.getProtocol().equalsIgnoreCase("http") && !u.getProtocol().equalsIgnoreCase("https")) { throw new ParseException("Bad protocol: " + u.toString(), 0); } if (u.getUserInfo() != null) { throw new ParseException("No user info: " + u.toString(), 0); } if (!HostSpecifier.isValid(u.getHost())) { throw new ParseException("Invalid host: " + u.getHost(), 0); } if (InternetDomainName.isValid(u.getHost())) { if (!InternetDomainName.from(u.getHost()).isUnderPublicSuffix()) { throw new ParseException("Bad domain: " + u.getHost(), 0); } } String uri = DataUtil.toUri(cleanUrl); String reformUrl = DataUtil.toUrl(uri); if (!reformUrl.equals(cleanUrl)) { String msg = String.format("Url %s creates url %s when reformed from uri %s", cleanUrl, reformUrl, uri); log.info(msg); throw new ParseException(msg, 0); } return u; } catch (MalformedURLException e) { throw new ParseException(e.getMessage(), 0); } }
From source file:com.forerunnergames.tools.net.NetworkTools.java
public static boolean isValidAddress(@Nullable final String address) { return address != null && HostSpecifier.isValid(address); }
From source file:webindex.core.models.URL.java
public static boolean isValidHost(String host) { return HostSpecifier.isValid(host) && InternetDomainName.isValid(host) && InternetDomainName.from(host).isUnderPublicSuffix(); }
From source file:org.opendaylight.groupbasedpolicy.renderer.iovisor.module.IovisorModuleManager.java
private boolean isValidIovisorModuleId(IovisorModuleId id) { String[] idParts = id.getValue().split(":"); if (idParts.length != 2) { LOG.error("IovisorModuleId is not of form host-specifier:port {}", id.getValue()); return false; }//from w w w. java 2 s .c o m String nameOrIp = idParts[0]; if (!HostSpecifier.isValid(nameOrIp)) { LOG.error("IovisorModuleId host specifier is incorrect format: {}", nameOrIp); return false; } Integer port = Integer.valueOf(idParts[1]); if (port < 0 || port > 65535) { LOG.error("IovisorModuleId port specifier is incorrect format: {}", port); return false; } return true; }
From source file:com.eucalyptus.loadbalancing.LoadBalancingService.java
public CreateLoadBalancerResponseType createLoadBalancer(CreateLoadBalancerType request) throws EucalyptusCloudException { final CreateLoadBalancerResponseType reply = request.getReply(); final Context ctx = Contexts.lookup(); final UserFullName ownerFullName = ctx.getUserFullName(); final String lbName = request.getLoadBalancerName(); // verify loadbalancer name final Predicate<String> nameChecker = new Predicate<String>() { @Override/*from w w w . ja va 2 s . com*/ public boolean apply(@Nullable String arg0) { if (arg0 == null) return false; if (!HostSpecifier.isValid(String.format("%s.com", arg0))) return false; return true; } }; if (!nameChecker.apply(lbName)) { throw new InvalidConfigurationRequestException("Invalid character found in the loadbalancer name"); } if (request.getListeners() != null && request.getListeners().getMember() != null) LoadBalancers.validateListener(request.getListeners().getMember()); final Supplier<LoadBalancer> allocator = new Supplier<LoadBalancer>() { @Override public LoadBalancer get() { try { return LoadBalancers.addLoadbalancer(ownerFullName, lbName); } catch (LoadBalancingException e) { throw Exceptions.toUndeclared(e); } } }; LoadBalancer lb = null; try { lb = LoadBalancingMetadatas.allocateUnitlessResource(allocator); } catch (Exception e) { handleException(e); } final Collection<String> zones = request.getAvailabilityZones().getMember(); Function<String, Boolean> rollback = new Function<String, Boolean>() { @Override public Boolean apply(String lbName) { try { LoadBalancers.unsetForeignKeys(ctx, lbName); } catch (final Exception ex) { LOG.warn("unable to unset foreign keys", ex); } try { LoadBalancers.removeZone(lbName, ctx, zones); } catch (final Exception ex) { LOG.error("unable to delete availability zones during rollback", ex); } try { LoadBalancers.deleteLoadbalancer(ownerFullName, lbName); } catch (LoadBalancingException ex) { LOG.error("failed to rollback the loadbalancer: " + lbName, ex); return false; } return true; } }; final LoadBalancerDnsRecord dns = LoadBalancers.getDnsRecord(lb); if (dns == null || dns.getName() == null) { rollback.apply(lbName); throw new InternalFailure400Exception("Dns name could not be created"); } if (zones != null && zones.size() > 0) { try { LoadBalancers.addZone(lbName, ctx, zones); } catch (LoadBalancingException ex) { rollback.apply(lbName); throw ex; } catch (Exception ex) { rollback.apply(lbName); throw new InternalFailure400Exception("Failed to persist the zone"); } } /// trigger new loadbalancer event try { NewLoadbalancerEvent evt = new NewLoadbalancerEvent(); evt.setLoadBalancer(lbName); evt.setContext(ctx); evt.setZones(zones); ActivityManager.getInstance().fire(evt); } catch (EventFailedException e) { LOG.error("failed to handle new loadbalancer event", e); rollback.apply(lbName); final String reason = e.getCause() != null && e.getCause().getMessage() != null ? e.getCause().getMessage() : "internal error"; throw new InternalFailure400Exception(String.format("Failed to create the loadbalancer: %s", reason), e); } Collection<Listener> listeners = request.getListeners().getMember(); if (listeners != null && listeners.size() > 0) { LoadBalancers.createLoadbalancerListener(lbName, ctx, Lists.newArrayList(listeners)); try { CreateListenerEvent evt = new CreateListenerEvent(); evt.setLoadBalancer(lbName); evt.setListeners(listeners); evt.setContext(ctx); ActivityManager.getInstance().fire(evt); } catch (EventFailedException e) { LOG.error("failed to handle createListener event", e); rollback.apply(lbName); final String reason = e.getCause() != null && e.getCause().getMessage() != null ? e.getCause().getMessage() : "internal error"; throw new InternalFailure400Exception(String.format("Faild to setup the listener: %s", reason), e); } } final CreateLoadBalancerResult result = new CreateLoadBalancerResult(); if (dns == null || dns.getDnsName() == null) { LOG.warn("No DNS name is assigned to the loadbalancer: " + lbName); } result.setDnsName(dns.getDnsName()); reply.setCreateLoadBalancerResult(result); reply.set_return(true); return reply; }
From source file:com.eucalyptus.loadbalancing.backend.LoadBalancingBackendService.java
public CreateLoadBalancerResponseType createLoadBalancer(CreateLoadBalancerType request) throws EucalyptusCloudException { final CreateLoadBalancerResponseType reply = request.getReply(); final Context ctx = Contexts.lookup(); final UserFullName ownerFullName = ctx.getUserFullName(); final String lbName = request.getLoadBalancerName(); // verify loadbalancer name final Predicate<String> nameChecker = new Predicate<String>() { @Override/*from w w w . j av a2 s . c om*/ public boolean apply(@Nullable String arg0) { if (arg0 == null) return false; if (!HostSpecifier.isValid(String.format("%s.com", arg0))) return false; if (!arg0.matches("[a-zA-Z0-9-]{1,255}")) return false; return true; } }; if (!nameChecker.apply(lbName)) { throw new InvalidConfigurationRequestException("Invalid character found in the loadbalancer name"); } // To be AWS compatible, the ELB name must not exceed 32 characters. To remain DNS compliant, in case // AWS increase this number in the future, the ELB name must never exceed 63 characters. if (lbName.length() > 32) { throw new InvalidConfigurationRequestException("Loadbalancer name must not exceed 32 characters"); } if (request.getListeners() != null && request.getListeners().getMember() != null) LoadBalancers.validateListener(request.getListeners().getMember()); // Check SSL Certificate Id before creating LB Collection<Listener> listeners = request.getListeners().getMember(); try { for (final Listener l : listeners) { if ("HTTPS".equals(l.getProtocol().toUpperCase()) || "SSL".equals(l.getProtocol().toUpperCase())) { final String certArn = l.getSSLCertificateId(); if (certArn == null || certArn.length() <= 0) throw new InvalidConfigurationRequestException( "SSLCertificateId is required for HTTPS or SSL protocol"); LoadBalancers.checkSSLCertificate(ctx.getUser().getUserId(), certArn); } } } catch (Exception ex) { if (!(ex instanceof LoadBalancingException)) { LOG.error("failed to check SSL certificate Id", ex); ex = new InternalFailure400Exception("failed to check SSL certificate Id", ex); } throw (LoadBalancingException) ex; } final Supplier<LoadBalancer> allocator = new Supplier<LoadBalancer>() { @Override public LoadBalancer get() { try { return LoadBalancers.addLoadbalancer(ownerFullName, lbName); } catch (LoadBalancingException e) { throw Exceptions.toUndeclared(e); } } }; LoadBalancer lb = null; try { lb = LoadBalancingMetadatas.allocateUnitlessResource(allocator); } catch (Exception e) { handleException(e); } final Collection<String> zones = request.getAvailabilityZones().getMember(); Function<String, Boolean> rollback = new Function<String, Boolean>() { @Override public Boolean apply(String lbName) { try { LoadBalancers.unsetForeignKeys(ctx, lbName); } catch (final Exception ex) { LOG.warn("unable to unset foreign keys", ex); } try { LoadBalancers.removeZone(lbName, ctx, zones); } catch (final Exception ex) { LOG.error("unable to delete availability zones during rollback", ex); } try { LoadBalancers.deleteLoadbalancer(ownerFullName, lbName); } catch (LoadBalancingException ex) { LOG.error("failed to rollback the loadbalancer: " + lbName, ex); return false; } return true; } }; final LoadBalancerDnsRecord dns = LoadBalancers.getDnsRecord(lb); if (dns == null || dns.getName() == null) { rollback.apply(lbName); throw new InternalFailure400Exception("Dns name could not be created"); } if (zones != null && zones.size() > 0) { try { LoadBalancers.addZone(lbName, ctx, zones); } catch (LoadBalancingException ex) { rollback.apply(lbName); throw ex; } catch (Exception ex) { rollback.apply(lbName); throw new InternalFailure400Exception("Failed to persist the zone"); } } /// trigger new loadbalancer event try { NewLoadbalancerEvent evt = new NewLoadbalancerEvent(); evt.setLoadBalancer(lbName); evt.setContext(ctx); evt.setZones(zones); ActivityManager.getInstance().fire(evt); } catch (EventFailedException e) { LOG.error("failed to handle new loadbalancer event", e); rollback.apply(lbName); final String reason = e.getCause() != null && e.getCause().getMessage() != null ? e.getCause().getMessage() : "internal error"; throw new InternalFailure400Exception(String.format("Failed to create the loadbalancer: %s", reason), e); } if (listeners != null && listeners.size() > 0) { LoadBalancers.createLoadbalancerListener(lbName, ctx, Lists.newArrayList(listeners)); try { CreateListenerEvent evt = new CreateListenerEvent(); evt.setLoadBalancer(lbName); evt.setListeners(listeners); evt.setContext(ctx); ActivityManager.getInstance().fire(evt); } catch (EventFailedException e) { LOG.error("failed to handle createListener event", e); // rollback.apply(lbName); // TODO: this will leave the loadbalancer, which will not be functional. // ideally, we should rollback the whole loadbalancer creation pipeline final String reason = e.getCause() != null && e.getCause().getMessage() != null ? e.getCause().getMessage() : "internal error"; throw new InternalFailure400Exception(String.format("Faild to setup the listener: %s", reason), e); } } final CreateLoadBalancerResult result = new CreateLoadBalancerResult(); if (dns == null || dns.getDnsName() == null) { LOG.warn("No DNS name is assigned to the loadbalancer: " + lbName); } result.setDnsName(dns.getDnsName()); reply.setCreateLoadBalancerResult(result); reply.set_return(true); return reply; }