ing
This commit is contained in:
parent
c4a677f7b6
commit
c22d48c192
9
pom.xml
9
pom.xml
|
@ -38,6 +38,7 @@
|
||||||
<googleauth.version>1.1.2</googleauth.version>
|
<googleauth.version>1.1.2</googleauth.version>
|
||||||
<fasterxml.uuid.verion>3.1.5</fasterxml.uuid.verion>
|
<fasterxml.uuid.verion>3.1.5</fasterxml.uuid.verion>
|
||||||
<httpclient.version>4.5.3</httpclient.version>
|
<httpclient.version>4.5.3</httpclient.version>
|
||||||
|
<seancfoley.ipaddress.version>4.2.0</seancfoley.ipaddress.version>
|
||||||
</properties>
|
</properties>
|
||||||
|
|
||||||
<dependencies>
|
<dependencies>
|
||||||
|
@ -50,7 +51,7 @@
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>com.loafle.overflow</groupId>
|
<groupId>com.loafle.overflow</groupId>
|
||||||
<artifactId>commons-java</artifactId>
|
<artifactId>commons-java</artifactId>
|
||||||
<version>1.0.53-SNAPSHOT</version>
|
<version>1.0.54-SNAPSHOT</version>
|
||||||
</dependency>
|
</dependency>
|
||||||
|
|
||||||
<dependency>
|
<dependency>
|
||||||
|
@ -224,6 +225,12 @@
|
||||||
<artifactId>java-uuid-generator</artifactId>
|
<artifactId>java-uuid-generator</artifactId>
|
||||||
<version>${fasterxml.uuid.verion}</version>
|
<version>${fasterxml.uuid.verion}</version>
|
||||||
</dependency>
|
</dependency>
|
||||||
|
|
||||||
|
<dependency>
|
||||||
|
<groupId>com.github.seancfoley</groupId>
|
||||||
|
<artifactId>ipaddress</artifactId>
|
||||||
|
<version>${seancfoley.ipaddress.version}</version>
|
||||||
|
</dependency>
|
||||||
</dependencies>
|
</dependencies>
|
||||||
|
|
||||||
<build>
|
<build>
|
||||||
|
|
|
@ -6,6 +6,8 @@ import com.loafle.overflow.core.annotation.WebappAPI;
|
||||||
import com.loafle.overflow.central.commons.utils.GenerateKey;
|
import com.loafle.overflow.central.commons.utils.GenerateKey;
|
||||||
import com.loafle.overflow.central.commons.utils.SessionMetadata;
|
import com.loafle.overflow.central.commons.utils.SessionMetadata;
|
||||||
import com.loafle.overflow.central.module.infra.service.CentralInfraService;
|
import com.loafle.overflow.central.module.infra.service.CentralInfraService;
|
||||||
|
import com.loafle.overflow.central.module.meta.service.CentralMetaIPTypeService;
|
||||||
|
import com.loafle.overflow.central.module.meta.service.CentralMetaTargetHostTypeService;
|
||||||
import com.loafle.overflow.central.module.noauthprobe.dao.NoAuthProbeDAO;
|
import com.loafle.overflow.central.module.noauthprobe.dao.NoAuthProbeDAO;
|
||||||
import com.loafle.overflow.core.exception.OverflowException;
|
import com.loafle.overflow.core.exception.OverflowException;
|
||||||
import com.loafle.overflow.model.apikey.ApiKey;
|
import com.loafle.overflow.model.apikey.ApiKey;
|
||||||
|
@ -13,15 +15,20 @@ import com.loafle.overflow.model.domain.Domain;
|
||||||
import com.loafle.overflow.model.domain.DomainMember;
|
import com.loafle.overflow.model.domain.DomainMember;
|
||||||
import com.loafle.overflow.model.infra.InfraHost;
|
import com.loafle.overflow.model.infra.InfraHost;
|
||||||
import com.loafle.overflow.model.infra.InfraHostIP;
|
import com.loafle.overflow.model.infra.InfraHostIP;
|
||||||
|
import com.loafle.overflow.model.infra.InfraHostOS;
|
||||||
import com.loafle.overflow.model.infra.InfraZone;
|
import com.loafle.overflow.model.infra.InfraZone;
|
||||||
import com.loafle.overflow.model.member.Member;
|
import com.loafle.overflow.model.member.Member;
|
||||||
|
import com.loafle.overflow.model.meta.MetaIPType;
|
||||||
|
import com.loafle.overflow.model.meta.MetaInfraType;
|
||||||
import com.loafle.overflow.model.meta.MetaNoAuthProbeStatus;
|
import com.loafle.overflow.model.meta.MetaNoAuthProbeStatus;
|
||||||
import com.loafle.overflow.model.meta.MetaProbeStatus;
|
import com.loafle.overflow.model.meta.MetaProbeStatus;
|
||||||
|
import com.loafle.overflow.model.meta.MetaTargetHostType;
|
||||||
import com.loafle.overflow.model.noauthprobe.NoAuthProbe;
|
import com.loafle.overflow.model.noauthprobe.NoAuthProbe;
|
||||||
import com.loafle.overflow.model.probe.Probe;
|
import com.loafle.overflow.model.probe.Probe;
|
||||||
import com.loafle.overflow.model.probe.ProbeHost;
|
import com.loafle.overflow.model.probe.ProbeHost;
|
||||||
import com.loafle.overflow.service.central.apikey.ApiKeyService;
|
import com.loafle.overflow.service.central.apikey.ApiKeyService;
|
||||||
import com.loafle.overflow.service.central.domain.DomainMemberService;
|
import com.loafle.overflow.service.central.domain.DomainMemberService;
|
||||||
|
import com.loafle.overflow.service.central.meta.MetaIPTypeService;
|
||||||
import com.loafle.overflow.service.central.noauthprobe.NoAuthProbeService;
|
import com.loafle.overflow.service.central.noauthprobe.NoAuthProbeService;
|
||||||
import com.loafle.overflow.service.central.probe.ProbeHostService;
|
import com.loafle.overflow.service.central.probe.ProbeHostService;
|
||||||
import com.loafle.overflow.service.central.probe.ProbeService;
|
import com.loafle.overflow.service.central.probe.ProbeService;
|
||||||
|
@ -32,6 +39,9 @@ import org.springframework.beans.factory.annotation.Qualifier;
|
||||||
import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
|
import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
|
import inet.ipaddr.IPAddress;
|
||||||
|
import inet.ipaddr.IPAddressString;
|
||||||
|
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.util.Date;
|
import java.util.Date;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
@ -64,20 +74,31 @@ public class CentralNoAuthProbeService implements NoAuthProbeService {
|
||||||
private ObjectMapper objectMapper;
|
private ObjectMapper objectMapper;
|
||||||
|
|
||||||
@Autowired
|
@Autowired
|
||||||
@Qualifier("InfraService")
|
|
||||||
private CentralInfraService infraService;
|
private CentralInfraService infraService;
|
||||||
|
|
||||||
@Autowired
|
@Autowired
|
||||||
private ProbeHostService probeHostService;
|
private ProbeHostService probeHostService;
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
private CentralMetaIPTypeService metaIPTypeService;
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
private CentralMetaTargetHostTypeService metaTargetHostTypeService;
|
||||||
|
|
||||||
@ProbeAPI
|
@ProbeAPI
|
||||||
public NoAuthProbe regist(NoAuthProbe noAuthProbe) throws OverflowException {
|
public NoAuthProbe regist(NoAuthProbe noAuthProbe) throws OverflowException {
|
||||||
|
if (null == noAuthProbe) {
|
||||||
|
throw new OverflowException("NoAuthProbe is not valid");
|
||||||
|
}
|
||||||
|
|
||||||
ApiKey apiKey = apiKeyService.readByApiKey(noAuthProbe.getApiKey());
|
ApiKey apiKey = apiKeyService.readByApiKey(noAuthProbe.getApiKey());
|
||||||
noAuthProbe.setDomain(apiKey.getDomain());
|
if (null == apiKey) {
|
||||||
|
throw new OverflowException(String.format("APIKey[%s] of NoAuthProbe is not valid", noAuthProbe.getApiKey()));
|
||||||
|
}
|
||||||
|
|
||||||
|
noAuthProbe.setDomain(apiKey.getDomain());
|
||||||
noAuthProbe.setTempProbeKey(GenerateKey.getKey());
|
noAuthProbe.setTempProbeKey(GenerateKey.getKey());
|
||||||
noAuthProbe.setMetaNoAuthProbeStatus(new MetaNoAuthProbeStatus((short) 3));
|
noAuthProbe.setMetaNoAuthProbeStatus(MetaNoAuthProbeStatus.Enum.PROCESSING.to());
|
||||||
|
|
||||||
messagePublisher.publishToDomainMembers(apiKey.getDomain().getId(), "NoAuthProbeService.regist", noAuthProbe);
|
messagePublisher.publishToDomainMembers(apiKey.getDomain().getId(), "NoAuthProbeService.regist", noAuthProbe);
|
||||||
|
|
||||||
|
@ -85,8 +106,8 @@ public class CentralNoAuthProbeService implements NoAuthProbeService {
|
||||||
}
|
}
|
||||||
|
|
||||||
public List<NoAuthProbe> readAllByDomainID(Long domainID) throws OverflowException {
|
public List<NoAuthProbe> readAllByDomainID(Long domainID) throws OverflowException {
|
||||||
|
return this.noAuthProbeDAO.findAllByDomainIdAndMetaNoAuthProbeStatusId(domainID,
|
||||||
return this.noAuthProbeDAO.findAllByDomainIdAndMetaNoAuthProbeStatusId(domainID, (short) 3);
|
MetaNoAuthProbeStatus.Enum.PROCESSING.getValue());
|
||||||
}
|
}
|
||||||
|
|
||||||
public NoAuthProbe read(Long id) {
|
public NoAuthProbe read(Long id) {
|
||||||
|
@ -108,24 +129,81 @@ public class CentralNoAuthProbeService implements NoAuthProbeService {
|
||||||
throw new OverflowException("json error", e);
|
throw new OverflowException("json error", e);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (null == oriInfraHost.getInfraHostIPs()) {
|
if (null == oriInfraHost.getInfraHostIPs() || 0 == oriInfraHost.getInfraHostIPs().size()) {
|
||||||
throw new OverflowException("IP of Probe InfraHost is not valild");
|
throw new OverflowException("IP of Probe InfraHost is not valild");
|
||||||
}
|
}
|
||||||
|
|
||||||
for (InfraHostIP infraHostIP : oriInfraHost.getInfraHostIPs()) {
|
if (null == zoneCIDR && 1 < oriInfraHost.getInfraHostIPs().size()) {
|
||||||
|
throw new OverflowException(String.format("Zone count[%d] of Probe is not single, must specified",
|
||||||
|
oriInfraHost.getInfraHostIPs().size()));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
InfraHostIP infraHostIP = null;
|
||||||
|
if (1 == oriInfraHost.getInfraHostIPs().size()) {
|
||||||
|
infraHostIP = oriInfraHost.getInfraHostIPs().get(0);
|
||||||
|
} else {
|
||||||
|
IPAddress ZoneIPAddress = new IPAddressString(zoneCIDR).getAddress();
|
||||||
|
|
||||||
InfraZone infraZone = new InfraZone();
|
for (InfraHostIP _infraHostIP : oriInfraHost.getInfraHostIPs()) {
|
||||||
InfraHost infraHost = new InfraHost();
|
if (null == _infraHostIP.getAddress()) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
IPAddress ipAddress = new IPAddressString(_infraHostIP.getAddress()).getAddress();
|
||||||
|
if (ipAddress.toPrefixBlock().equals(ZoneIPAddress)) {
|
||||||
|
infraHostIP = _infraHostIP;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (null == infraHostIP) {
|
||||||
|
throw new OverflowException("Network is not valid");
|
||||||
|
}
|
||||||
|
|
||||||
|
if (null == oriInfraHost.getInfraHostOS()) {
|
||||||
|
throw new OverflowException("InfraHostOS is not valid");
|
||||||
|
}
|
||||||
|
if (null == oriInfraHost.getInfraHostMachine()) {
|
||||||
|
throw new OverflowException("InfraHostMachine is not valid");
|
||||||
|
}
|
||||||
|
|
||||||
Probe probe = this.newProbe(noAuthProbe, infraHost);
|
BCryptPasswordEncoder passwordEncoder = new BCryptPasswordEncoder();
|
||||||
InfraHost host = this.infraService.registByNoAuthProbe(probe.getId(), infraHost);
|
String encryptKey = passwordEncoder.encode(UUID.randomUUID().toString());
|
||||||
this.newProbeHost(host, probe);
|
|
||||||
|
|
||||||
noAuthProbe.setMetaNoAuthProbeStatus(new MetaNoAuthProbeStatus((short) 1));
|
ApiKey apiKey = apiKeyService.readByApiKey(noAuthProbe.getApiKey());
|
||||||
|
String memberEmail = SessionMetadata.getTargetID();
|
||||||
|
DomainMember domainMember = domainMemberService.readByMemberEmail(memberEmail);
|
||||||
|
|
||||||
|
Probe probe = new Probe();
|
||||||
|
probe.setEncryptionKey(encryptKey);
|
||||||
|
probe.setProbeKey(GenerateKey.getKey());
|
||||||
|
probe.setDomain(new Domain(apiKey.getDomain().getId()));
|
||||||
|
probe.setAuthorizeMember(new Member(domainMember.getMember().getId()));
|
||||||
|
probe.setTargetCount(0);
|
||||||
|
probe.setMetaProbeStatus(MetaProbeStatus.Enum.INITIAL.to());
|
||||||
|
|
||||||
|
String name = oriInfraHost.getInfraHostOS().getName();
|
||||||
|
name += " probe";
|
||||||
|
probe.setName(name);
|
||||||
|
IPAddress ipAddress = new IPAddressString(infraHostIP.getAddress()).getAddress();
|
||||||
|
probe.setCidr(ipAddress.toPrefixBlock().toString());
|
||||||
|
|
||||||
|
probe = this.probeService.regist(probe);
|
||||||
|
|
||||||
|
InfraZone infraZone = this.newInfraZone(infraHostIP);
|
||||||
|
|
||||||
|
InfraHost infraHost = this.newInfraHost(oriInfraHost);
|
||||||
|
infraHost.setInfraZone(infraZone);
|
||||||
|
|
||||||
|
Probe probe = this.newProbe(noAuthProbe, infraZone, infraHost);
|
||||||
|
infraZone.setProbe(probe);
|
||||||
|
infraHost.setProbe(probe);
|
||||||
|
|
||||||
|
infraZone = this.infraService.registInfraZone(infraZone);
|
||||||
|
infraHost = this.infraService.registInfraHost(infraHost);
|
||||||
|
|
||||||
|
this.newProbeHost(probe, infraHost);
|
||||||
|
|
||||||
|
noAuthProbe.setMetaNoAuthProbeStatus(MetaNoAuthProbeStatus.Enum.ACCEPTED.to());
|
||||||
this.noAuthProbeDAO.save(noAuthProbe);
|
this.noAuthProbeDAO.save(noAuthProbe);
|
||||||
|
|
||||||
messagePublisher.publishToNoAuthProbe(noAuthProbe.getTempProbeKey(), "NoAuthProbeService.Accept",
|
messagePublisher.publishToNoAuthProbe(noAuthProbe.getTempProbeKey(), "NoAuthProbeService.Accept",
|
||||||
|
@ -134,8 +212,63 @@ public class CentralNoAuthProbeService implements NoAuthProbeService {
|
||||||
return this.readAllByDomainID(noAuthProbe.getDomain().getId());
|
return this.readAllByDomainID(noAuthProbe.getDomain().getId());
|
||||||
}
|
}
|
||||||
|
|
||||||
private Probe newProbe(NoAuthProbe noauthprobe, InfraHost infraHost)
|
private InfraZone newInfraZone(InfraHostIP infraHostIP) throws OverflowException {
|
||||||
throws OverflowException {
|
if (null == infraHostIP) {
|
||||||
|
throw new OverflowException("InfraHostIP is not valid");
|
||||||
|
}
|
||||||
|
|
||||||
|
InfraZone infraZone = new InfraZone();
|
||||||
|
infraZone.setMetaInfraType(MetaInfraType.Enum.ZONE.to());
|
||||||
|
|
||||||
|
if (null == infraHostIP.getMetaIPType() || null == infraHostIP.getMetaIPType().getKey()) {
|
||||||
|
throw new OverflowException("MetaIPType is not valid");
|
||||||
|
}
|
||||||
|
MetaIPType metaIPType = this.metaIPTypeService.readByKey(infraHostIP.getMetaIPType().getKey());
|
||||||
|
if (null == metaIPType) {
|
||||||
|
throw new OverflowException(
|
||||||
|
String.format("Key[%s] of MetaIPType is not valid", infraHostIP.getMetaIPType().getKey()));
|
||||||
|
}
|
||||||
|
infraZone.setMetaIPType(metaIPType);
|
||||||
|
|
||||||
|
if (null == infraHostIP.getAddress()) {
|
||||||
|
throw new OverflowException("Address is not valid");
|
||||||
|
}
|
||||||
|
infraZone.setAddress(infraHostIP.getAddress());
|
||||||
|
|
||||||
|
IPAddress ipAddress = new IPAddressString(infraHostIP.getAddress()).getAddress();
|
||||||
|
infraZone.setNetwork(ipAddress.toPrefixBlock().toString());
|
||||||
|
|
||||||
|
if (null == infraHostIP.getAddress()) {
|
||||||
|
throw new OverflowException("Iface is not valid");
|
||||||
|
}
|
||||||
|
infraZone.setIface(infraHostIP.getIface());
|
||||||
|
|
||||||
|
if (null == infraHostIP.getMac()) {
|
||||||
|
throw new OverflowException("Mac is not valid");
|
||||||
|
}
|
||||||
|
infraZone.setMac(infraHostIP.getMac());
|
||||||
|
|
||||||
|
return infraZone;
|
||||||
|
}
|
||||||
|
|
||||||
|
private InfraHost newInfraHost(InfraHost oriInfraHost) throws OverflowException {
|
||||||
|
InfraHost infraHost = new InfraHost();
|
||||||
|
infraHost.setMetaInfraType(MetaInfraType.Enum.HOST.to());
|
||||||
|
|
||||||
|
InfraHostOS infraHostOS = oriInfraHost.getInfraHostOS();
|
||||||
|
// MetaTargetHostType metaTargetHostType = this.metaTargetHostTypeService.readByInfraHostOS(infraHostOS);
|
||||||
|
infraHost.setMetaTargetHostType(MetaTargetHostType.Enum.UNKNOWN.to());
|
||||||
|
infraHost.setInfraHostOS(infraHostOS);
|
||||||
|
|
||||||
|
infraHost.setInfraHostIPs(oriInfraHost.getInfraHostIPs());
|
||||||
|
infraHost.setInfraHostPorts(oriInfraHost.getInfraHostPorts());
|
||||||
|
infraHost.setInfraHostApplications(oriInfraHost.getInfraHostApplications());
|
||||||
|
infraHost.setInfraHostDaemons(oriInfraHost.getInfraHostDaemons());
|
||||||
|
|
||||||
|
return infraHost;
|
||||||
|
}
|
||||||
|
|
||||||
|
private Probe newProbe(NoAuthProbe noauthprobe, InfraZone infraZone, InfraHost infraHost) throws OverflowException {
|
||||||
|
|
||||||
BCryptPasswordEncoder passwordEncoder = new BCryptPasswordEncoder();
|
BCryptPasswordEncoder passwordEncoder = new BCryptPasswordEncoder();
|
||||||
String encryptKey = passwordEncoder.encode(UUID.randomUUID().toString());
|
String encryptKey = passwordEncoder.encode(UUID.randomUUID().toString());
|
||||||
|
@ -155,16 +288,12 @@ public class CentralNoAuthProbeService implements NoAuthProbeService {
|
||||||
String name = infraHost.getInfraHostOS().getName();
|
String name = infraHost.getInfraHostOS().getName();
|
||||||
name += " probe";
|
name += " probe";
|
||||||
probe.setName(name);
|
probe.setName(name);
|
||||||
|
probe.setCidr(infraZone.getNetwork());
|
||||||
// String addrStr = noAuthProbeDescription.getNetwork().getAddress();
|
|
||||||
// String[] addrArr = addrStr.split("\\|");
|
|
||||||
// probe.setCidr(addrArr[0]);
|
|
||||||
|
|
||||||
return this.probeService.regist(probe);
|
return this.probeService.regist(probe);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void newProbeHost(Probe probe, InfraHost infraHost) throws OverflowException {
|
||||||
private void newProbeHost(InfraHost infraHost, Probe probe) throws OverflowException {
|
|
||||||
ProbeHost probeHost = new ProbeHost();
|
ProbeHost probeHost = new ProbeHost();
|
||||||
probeHost.setInfraHost(infraHost);
|
probeHost.setInfraHost(infraHost);
|
||||||
probeHost.setProbe(probe);
|
probeHost.setProbe(probe);
|
||||||
|
@ -176,7 +305,7 @@ public class CentralNoAuthProbeService implements NoAuthProbeService {
|
||||||
public List<NoAuthProbe> denyNoauthProbe(Long noAuthProbeID) throws OverflowException {
|
public List<NoAuthProbe> denyNoauthProbe(Long noAuthProbeID) throws OverflowException {
|
||||||
NoAuthProbe noAuthProbe = this.noAuthProbeDAO.findById(noAuthProbeID).get();
|
NoAuthProbe noAuthProbe = this.noAuthProbeDAO.findById(noAuthProbeID).get();
|
||||||
|
|
||||||
noAuthProbe.setMetaNoAuthProbeStatus(new MetaNoAuthProbeStatus((short) 2));
|
noAuthProbe.setMetaNoAuthProbeStatus(MetaNoAuthProbeStatus.Enum.DENIED.to());
|
||||||
this.noAuthProbeDAO.save(noAuthProbe);
|
this.noAuthProbeDAO.save(noAuthProbe);
|
||||||
|
|
||||||
messagePublisher.publishToNoAuthProbe(noAuthProbe.getTempProbeKey(), "NoAuthProbeService.Deny");
|
messagePublisher.publishToNoAuthProbe(noAuthProbe.getTempProbeKey(), "NoAuthProbeService.Deny");
|
||||||
|
|
Loading…
Reference in New Issue
Block a user