endpoint certificates added

This commit is contained in:
Radek Davidek 2025-10-23 14:13:20 +02:00
parent efeae043aa
commit 3a65ceb327
3 changed files with 77 additions and 1 deletions

View File

@ -18,11 +18,15 @@ import java.util.zip.ZipOutputStream;
import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger; import org.apache.logging.log4j.Logger;
import com.fasterxml.jackson.core.type.TypeReference;
import cz.trask.migration.AbstractProcess; import cz.trask.migration.AbstractProcess;
import cz.trask.migration.mapper.ApiDefinitionMapper; import cz.trask.migration.mapper.ApiDefinitionMapper;
import cz.trask.migration.model.ApiDefinition32; import cz.trask.migration.model.ApiDefinition32;
import cz.trask.migration.model.ApiDefinition45; import cz.trask.migration.model.ApiDefinition45;
import cz.trask.migration.model.EndpointCertificates45;
import cz.trask.migration.model.FileType; import cz.trask.migration.model.FileType;
import cz.trask.migration.model.HostInfo32;
import cz.trask.migration.model.HttpResponse; import cz.trask.migration.model.HttpResponse;
import cz.trask.migration.model.OperationPolicySpecification45; import cz.trask.migration.model.OperationPolicySpecification45;
import cz.trask.migration.model.RegisterResponse; import cz.trask.migration.model.RegisterResponse;
@ -211,7 +215,8 @@ public class ExportToWso2FromV32 extends AbstractProcess {
subDir = "Definitions/"; subDir = "Definitions/";
contentStr = new String(content); contentStr = new String(content);
} else if (FileType.CERTIFICATE.toString().equals(amd.getGroupId())) { } else if (FileType.CERTIFICATE.toString().equals(amd.getGroupId())) {
subDir = "Meta-information/"; subDir = "Endpoint-certificates/";
content = convertCertificateToEPCertificate(zos, baseDir + subDir, content);
} else if (FileType.APIDEF.toString().equals(amd.getGroupId())) { } else if (FileType.APIDEF.toString().equals(amd.getGroupId())) {
apiDef = mapperYaml.readValue(content, ApiDefinition32.class); apiDef = mapperYaml.readValue(content, ApiDefinition32.class);
appendFile = false; appendFile = false;
@ -239,6 +244,37 @@ public class ExportToWso2FromV32 extends AbstractProcess {
} }
} }
private byte[] convertCertificateToEPCertificate(ZipOutputStream zos, String subDir, byte[] content) {
if (content != null && content.length > 0) {
try {
List<HostInfo32> epc32 = mapperYaml.readValue(content, new TypeReference<List<HostInfo32>>() {
});
EndpointCertificates45 epc45 = new EndpointCertificates45();
epc45.setType("endpoint_certificates");
epc45.setVersion("v4.5.0");
List<EndpointCertificates45.EndpointCertificate> certs = new ArrayList<>();
for (HostInfo32 hi : epc32) {
EndpointCertificates45.EndpointCertificate cert = new EndpointCertificates45.EndpointCertificate();
cert.setAlias(hi.getAlias());
cert.setEndpoint(hi.getHostName());
cert.setCertificate(hi.getAlias().concat(".crt"));
cert.setTenantId(0);
certs.add(cert);
zos.putNextEntry(new ZipEntry(subDir + cert.getCertificate()));
zos.write("-----BEGIN CERTIFICATE-----\r\n".concat(hi.getCertificate())
.concat("\r\n-----END CERTIFICATE-----").getBytes());
zos.closeEntry();
}
epc45.setData(certs);
return mapperYaml.writeValueAsBytes(epc45);
} catch (Exception e) {
log.error("Error converting endpoint certificate: {}", e.getMessage(), e);
}
}
return null;
}
private void addGenericPolicyMetadata(ZipOutputStream zos, String subDir, String fileName, ArtifactReference r) private void addGenericPolicyMetadata(ZipOutputStream zos, String subDir, String fileName, ArtifactReference r)
throws Exception { throws Exception {
OperationPolicySpecification45 ops = new OperationPolicySpecification45(); OperationPolicySpecification45 ops = new OperationPolicySpecification45();
@ -257,6 +293,7 @@ public class ExportToWso2FromV32 extends AbstractProcess {
data.getSupportedGateways().add("Synapse"); data.getSupportedGateways().add("Synapse");
data.setSupportedApiTypes(new ArrayList<>()); data.setSupportedApiTypes(new ArrayList<>());
data.getSupportedApiTypes().add("HTTP"); data.getSupportedApiTypes().add("HTTP");
data.getSupportedApiTypes().add("SOAP");
data.setPolicyAttributes(new ArrayList<>()); data.setPolicyAttributes(new ArrayList<>());
ops.setData(data); ops.setData(data);

View File

@ -0,0 +1,26 @@
package cz.trask.migration.model;
import java.util.List;
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import lombok.Data;
@Data
@JsonIgnoreProperties(ignoreUnknown = true)
public class EndpointCertificates45 {
private String type;
private String version;
private List<EndpointCertificate> data;
@Data
@JsonIgnoreProperties(ignoreUnknown = true)
public static class EndpointCertificate {
private String alias;
private String endpoint;
private String certificate;
private int tenantId;
}
}

View File

@ -0,0 +1,13 @@
package cz.trask.migration.model;
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import lombok.Data;
@Data
@JsonIgnoreProperties(ignoreUnknown = true)
public class HostInfo32 {
private String hostName;
private String alias;
private String certificate;
}