Example usage for com.google.common.net HostSpecifier isValid

List of usage examples for com.google.common.net HostSpecifier isValid

Introduction

In this page you can find the example usage for com.google.common.net HostSpecifier isValid.

Prototype

public static boolean isValid(String specifier) 

Source Link

Document

Determines whether specifier represents a valid HostSpecifier as described in the documentation for #fromValid(String) .

Usage

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;
}