![JAR search and dependency download from the Maven repository](/logo.png)
org.bdware.doip.audit.writer.OriginalWriter Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of doip-audit-tool Show documentation
Show all versions of doip-audit-tool Show documentation
doip audit tool developed by bdware
The newest version!
package org.bdware.doip.audit.writer;
import com.google.gson.Gson;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import org.bdware.doip.audit.OriginalAuditDB;
import org.bdware.doip.auditrepo.AutoAuditDO;
import org.bdware.doip.codec.NaiveEnvelopeToDoMessage;
import org.bdware.doip.codec.doipMessage.DoipMessage;
import org.bdware.doip.endpoint.client.ClientConfig;
import org.bdware.doip.endpoint.client.DoipClientImpl;
import org.bdware.irp.irplib.core.IrpMessage;
import org.bdware.irp.irplib.core.IrpMessageCode;
public class OriginalWriter extends LogWriter {
Logger logger = LogManager.getLogger(OriginalWriter.class);
DoipClientImpl doipClient;
String doId;
String tableName;
OriginalAuditDB originalAuditDB;
private static NaiveEnvelopeToDoMessage converter = new NaiveEnvelopeToDoMessage();
AuditConfig auditConfg;
public OriginalWriter(AuditConfig config, OriginalAuditDB originalAuditDB, String tableName) {
super();
doipClient = new DoipClientImpl();
auditConfg = config;
this.tableName = tableName;
this.originalAuditDB = originalAuditDB;
if (config.getAuditUrl() != null)
doipClient.connect(ClientConfig.fromUrl(config.getAuditUrl()));
}
@Override
public void write(AuditLog log) {
writeHash(log);
try {
AuditOriginalLog auditOriginalLog = (AuditOriginalLog) log;
String protocalMsg = new Gson().toJson(log);
int addCount = originalAuditDB.add(tableName, auditOriginalLog.request_hash, auditOriginalLog.req_msg, auditOriginalLog.response_hash, auditOriginalLog.resp_msg, protocalMsg);
if (addCount <= 0) {
logger.info("Failed to add log.");
}
} catch (Exception e) {
e.printStackTrace();
}
}
private void writeHash(AuditLog log) {
try {
if (!doipClient.isConnected()) {
doipClient.reconnect(auditConfg.getAuditUrl());
}
doipClient.sendRawMessage(AutoAuditDO.updateMsg(auditConfg.getAuditDoid(), log.asJson()), emptyCallback);
} catch (Exception e) {
e.printStackTrace();
}
}
@Override
public AuditLog extract(EndpointContext ctx, IrpMessage req, IrpMessage resp) {
try {
AuditOriginalLog log = new AuditOriginalLog();
log.time = System.currentTimeMillis();
log.doid = new AuditProtocalLog.DoidInfo();
extractDOID(log.doid, req.getDoid());
log.eventType = "irp";
log.op = IrpMessageCode.toOpStr(req.header.opCode);
log.status_code = IrpMessageCode.getResponseCodeInfo(resp.header.responseCode);
log.req_msg = toByteArray(req);
log.resp_msg = toByteArray(resp);
log.request_hash = calculateHash(log.req_msg);
log.response_hash = calculateHash(log.resp_msg);
log.setClientPubkey(getSigner(req));
log.setClientIP(ctx.getClientIP());
log.setClientDoId(ctx.getClientDoId());
log.setServerPubkey(getSigner(resp));
log.setServerIP(ctx.getServerIP());
log.setServerDoId(ctx.getServerDoId());
return log;
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
@Override
public AuditLog extract(EndpointContext ctx, DoipMessage req, DoipMessage resp) {
try {
AuditOriginalLog log = new AuditOriginalLog();
log.time = System.currentTimeMillis();
log.doid = new AuditProtocalLog.DoidInfo();
extractDOID(log.doid, req.header.parameters.id);
log.eventType = "doip";
log.op = req.header.parameters.operation;
log.status_code = resp.header.parameters.response.getName();
log.req_msg = toByteArray(req);
log.resp_msg = toByteArray(resp);
log.request_hash = calculateHash(log.req_msg);
log.response_hash = calculateHash(log.resp_msg);
log.setClientPubkey(getSigner(req));
log.setClientIP(ctx.getClientIP());
log.setClientDoId(ctx.getClientDoId());
log.setServerPubkey(getSigner(resp));
log.setServerIP(ctx.getServerIP());
log.setServerDoId(ctx.getServerDoId());
return log;
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy