package org.openstack.atlas.service.domain.services.impl; import java.util.HashSet; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.openstack.atlas.service.domain.entities.AllowedDomain; import org.openstack.atlas.service.domain.services.AllowedDomainsService; import org.springframework.stereotype.Service; import java.util.List; import java.util.Set; import org.openstack.atlas.service.domain.repository.AllowedDomainsRepository; @Service public class AllowedDomainsServiceImpl extends BaseService implements AllowedDomainsService { private final Log LOG = LogFactory.getLog(AllowedDomainsServiceImpl.class); @Override public Set<String> getAllowedDomains() { return allowedDomainsRepository.getAllowedDomains(); } @Override public boolean add(String name) { return allowedDomainsRepository.add(name); } @Override public boolean remove(String name) { return allowedDomainsRepository.remove(name); } @Override public Set<String> matches(String hostName){ Set<String> domains = allowedDomainsRepository.getAllowedDomains(); Set<String> matchedDomains = new HashSet<String>(); for(String domain : domains){ if(hostInDomain(hostName,domain)){ matchedDomains.add(domain); } } return matchedDomains; } @Override public boolean hasHost(String hostName){ Set<String> ads = matches(hostName); return ads.size() > 0; } public boolean hostInDomain(String host,String domain){ String[] dcomp = domain.split("\\."); String[] hcomp = host.split("\\."); int di = dcomp.length - 1; int hi = hcomp.length - 1; int i; if(di>hi){ return false; } while(di>=0){ if(!dcomp[di].equals(hcomp[hi])){ return false; } di--; hi--; } return true; } }