Skip to content

Commit

Permalink
continued to work on issue #216
Browse files Browse the repository at this point in the history
  • Loading branch information
satanatoly committed Jul 6, 2017
1 parent fca4b51 commit fa71dad
Show file tree
Hide file tree
Showing 5 changed files with 60 additions and 60 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -27,16 +27,6 @@
import org.mobicents.protocols.ss7.map.api.errors.MAPErrorCode;
import org.mobicents.smsc.cassandra.PersistenceException;
import org.mobicents.smsc.domain.*;
import org.mobicents.smsc.library.CdrDetailedGenerator;
import org.mobicents.smsc.library.MessageState;
import org.mobicents.smsc.library.MessageUtil;
import org.mobicents.smsc.library.OriginationType;
import org.mobicents.smsc.library.QuerySmResponse;
import org.mobicents.smsc.library.SbbStates;
import org.mobicents.smsc.library.Sms;
import org.mobicents.smsc.library.SmsSet;
import org.mobicents.smsc.library.SmscProcessingException;
import org.mobicents.smsc.library.TargetAddress;
import org.mobicents.smsc.library.*;
import org.mobicents.smsc.slee.resources.persistence.PersistenceRAInterface;
import org.mobicents.smsc.slee.services.http.server.tx.data.*;
Expand Down Expand Up @@ -465,6 +455,8 @@ public void sendMessage(HttpServletRequestEvent event, HttpSendMessageIncomingDa
HttpUtils.sendOkResponseWithContent(logger, event.getResponse(), ResponseFormatter.format(outgoingData, incomingData.getFormat()), incomingData.getFormat());
for (Sms sms : parseResult.getParsedMessages()) {
sms.setTimestampB(System.currentTimeMillis());
generateDetailedCDR(sms, EventType.IN_HTTP_RECEIVED, CdrDetailedGenerator.CDR_MSG_TYPE_HTTP,
0, event.getRequest().getRemoteAddr(), -1);
}
} catch (Throwable e) {
logger.severe("Error while trying to send SubmitMultiResponse=" + outgoingData, e);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -71,6 +71,7 @@
import org.restcomm.slee.resource.smpp.SmppTransactionACIFactory;
import org.restcomm.smpp.CheckMessageLimitResult;
import org.restcomm.smpp.Esme;
import org.restcomm.smpp.EsmeManagement;
import org.restcomm.smpp.SmppEncoding;

import com.cloudhopper.smpp.SmppConstants;
Expand Down Expand Up @@ -413,6 +414,8 @@ private void onSubmitSmLocal(final TxSmppServerSbbUsage anSbbUsage, final com.cl
if (sms.getMessageDeliveryResultResponse() == null) {
this.smppServerSessions.sendResponsePdu(esme, event, response);
sms.setTimestampB(System.currentTimeMillis());
generateDetailedCDR(sms, EventType.IN_SMPP_RECEIVED, CdrDetailedGenerator.CDR_MSG_TYPE_SUBMITSM,
SmppConstants.STATUS_OK, esme.getRemoteAddressAndPort(), event.getSequenceNumber());
}
} catch (Throwable e) {
anSbbUsage.incrementCounterErrorSubmitSmResponding(ONE);
Expand Down Expand Up @@ -590,6 +593,8 @@ private void onDataSmLocal(final TxSmppServerSbbUsage anSbbUsage, final com.clou
if (sms.getMessageDeliveryResultResponse() == null) {
this.smppServerSessions.sendResponsePdu(esme, event, response);
sms.setTimestampB(System.currentTimeMillis());
generateDetailedCDR(sms, EventType.IN_SMPP_RECEIVED, CdrDetailedGenerator.CDR_MSG_TYPE_DATASM,
SmppConstants.STATUS_OK, esme.getRemoteAddressAndPort(), event.getSequenceNumber());
}
} catch (Exception e) {
anSbbUsage.incrementCounterErrorDataSmResponding(ONE);
Expand Down Expand Up @@ -791,6 +796,8 @@ private void onSubmitMultiLocal(final TxSmppServerSbbUsage anSbbUsage, final com
if (sms == null || sms.getMessageDeliveryResultResponse() == null) {
this.smppServerSessions.sendResponsePdu(esme, event, response);
sms.setTimestampB(System.currentTimeMillis());
generateDetailedCDR(sms, EventType.IN_SMPP_RECEIVED, CdrDetailedGenerator.CDR_MSG_TYPE_SUBMITMULTI,
SmppConstants.STATUS_OK, esme.getRemoteAddressAndPort(), event.getSequenceNumber());
}
} catch (Throwable e) {
anSbbUsage.incrementCounterErrorSubmitMultiSmResponding(ONE);
Expand Down Expand Up @@ -942,6 +949,8 @@ private void onDeliverSmLocal(final TxSmppServerSbbUsage anSbbUsage, final com.c
try {
this.smppServerSessions.sendResponsePdu(esme, event, response);
sms.setTimestampB(System.currentTimeMillis());
generateDetailedCDR(sms, EventType.IN_SMPP_RECEIVED, CdrDetailedGenerator.CDR_MSG_TYPE_DELIVERSM,
SmppConstants.STATUS_OK, esme.getRemoteAddressAndPort(), event.getSequenceNumber());
} catch (Throwable e) {
anSbbUsage.incrementCounterErrorDeliverSmResponding(ONE);
this.logger.severe("Error while trying to send SubmitSmResponse=" + response, e);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -260,12 +260,11 @@ protected void forwardMessage(Sms sms0, boolean withCharging, SmscStatAggregator
int seqNumber) throws SmscProcessingException {

ChargingMedium chargingMedium = null;
EventType eventTypeSuccess = null;

EventType eventTypeFailure = null;
switch (sms0.getOriginationType()) {
case SMPP:
chargingMedium = ChargingMedium.TxSmppOrig;
eventTypeSuccess = EventType.IN_SMPP_RECEIVED;
eventTypeFailure = EventType.IN_SMPP_REJECT_MPROC;
break;
case SS7_MO:
Expand All @@ -277,7 +276,6 @@ protected void forwardMessage(Sms sms0, boolean withCharging, SmscStatAggregator
break;
case HTTP:
chargingMedium = ChargingMedium.HttpOrig;
eventTypeSuccess = EventType.IN_HTTP_RECEIVED;
eventTypeFailure = EventType.IN_HTTP_REJECT_MPROC;
break;
}
Expand All @@ -298,24 +296,9 @@ protected void forwardMessage(Sms sms0, boolean withCharging, SmscStatAggregator
try {
sms.setTimestampC(System.currentTimeMillis());

if (eventTypeSuccess != null) {
EsmeManagement esmeManagement = EsmeManagement.getInstance();
String sourceAddr = null;
if (esmeManagement != null) {
// for testing there is no EsmeManagement
Esme esme = esmeManagement.getEsmeByClusterName(sms0.getOrigEsmeName());
// null check is for testing
if (esme != null) {
sourceAddr = esme.getRemoteAddressAndPort();
}
}
generateDetailedCDR(sms, eventTypeSuccess, messageType, SmppConstants.STATUS_SYSERR, sourceAddr,
seqNumber);
}

sms.setTimestampA(0);
sms.setTimestampB(0);
sms.setTimestampC(0);
// sms.setTimestampA(0);
// sms.setTimestampB(0);
// sms.setTimestampC(0);

synchronized (lock) {
boolean storeAndForwMode = MessageUtil.isStoreAndForward(sms);
Expand Down Expand Up @@ -449,7 +432,7 @@ private static int getErrorCode(final int anErrorCode, final int aDefaultErrorCo

protected void generateDetailedCDR(Sms sms, EventType eventType, String messageType, int statusCode,
String sourceAddrAndPort, int seqNumber) {
CdrDetailedGenerator.generateDetailedCdr(sms, eventType, sms.getSmsSet().getStatus(), messageType, statusCode, -1,
CdrDetailedGenerator.generateDetailedCdr(sms, eventType, ErrorCode.SUCCESS, messageType, statusCode, -1,
sourceAddrAndPort, null, seqNumber, smscPropertiesManagement.getGenerateReceiptCdr(),
smscPropertiesManagement.getGenerateDetailedCdr());
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -61,40 +61,56 @@ public static void generateDetailedCdr(Sms smsEvent, EventType eventType, ErrorC
String dlrStatus = null;
if (deliveryReceiptData != null) {
dlrStatus = deliveryReceiptData.getStatus();
int tlvMessageState = deliveryReceiptData.getTlvMessageState();
if (tlvMessageState != 0 && dlrStatus != null)
if (!dlrStatus.substring(0, 4).equals(MessageState.fromInt(tlvMessageState).toString().substring(0, 5))) {
int tlvMessageState = deliveryReceiptData.getTlvMessageState() == null ? -1
: deliveryReceiptData.getTlvMessageState();
if (tlvMessageState != -1 && dlrStatus != null)
if (!dlrStatus.substring(0, 4).equals(MessageState.fromInt(tlvMessageState).toString().substring(0, 4))) {
dlrStatus = "err";
}
}

String[] parts = destAddrAndPort.split(":");
String destIP = parts[0];
int destPort = Integer.parseInt(parts[1]);
parts = sourceAddrAndPort.split(":");
String sourceIP = parts[0];
int sourcePort = Integer.parseInt(parts[1]);
String destIP = null;
int destPort = -1;

String timestampA = DATE_FORMAT.format(smsEvent.getTimestampA());
String timestampB = DATE_FORMAT.format(smsEvent.getTimestampB());
String timestampC = DATE_FORMAT.format(smsEvent.getTimestampC());
String sourceIP = null;
int sourcePort = -1;

if (destAddrAndPort != null) {
String[] parts = destAddrAndPort.split(":");
destIP = parts[0];
destPort = Integer.parseInt(parts[1]);
}

if (sourceAddrAndPort != null) {
String[] parts = sourceAddrAndPort.split(":");
sourceIP = parts[0];
sourcePort = Integer.parseInt(parts[1]);
}

String timestampA = smsEvent.getTimestampA() != 0 ? DATE_FORMAT.format(smsEvent.getTimestampA()) : null;
String timestampB = smsEvent.getTimestampB() != 0 ? DATE_FORMAT.format(smsEvent.getTimestampB()) : null;
String timestampC = smsEvent.getTimestampC() != 0 ? DATE_FORMAT.format(smsEvent.getTimestampC()) : null;

StringBuffer sb = new StringBuffer();
sb.append(timestamp).append(CdrGenerator.CDR_SEPARATOR)
.append(eventType != null ? eventType : CdrDetailedGenerator.CDR_EMPTY).append(CdrGenerator.CDR_SEPARATOR)
.append(errorCode != null ? errorCode : CdrDetailedGenerator.CDR_EMPTY).append(CdrGenerator.CDR_SEPARATOR)
.append(messageType).append(CdrGenerator.CDR_SEPARATOR).append(statusCode).append(CdrGenerator.CDR_SEPARATOR)
.append(smsEvent.getMessageId()).append(CdrGenerator.CDR_SEPARATOR)
.append(receiptLocalMessageId == null ? receiptLocalMessageId : CdrDetailedGenerator.CDR_EMPTY)
.append(CdrGenerator.CDR_SEPARATOR).append(dlrStatus == null ? dlrStatus : CdrDetailedGenerator.CDR_EMPTY)
.append(CdrGenerator.CDR_SEPARATOR).append(mprocRuleId != -1 ? mprocRuleId : CDR_EMPTY)
// check this, maybe it should be smsEvent.getSmsSet().getCorrelationId()
.append(smsEvent.getMessageId()).append(CdrGenerator.CDR_SEPARATOR).append(smsEvent.getOrigEsmeName())
.append(CdrGenerator.CDR_SEPARATOR).append(timestampA).append(CdrGenerator.CDR_SEPARATOR).append(timestampB)
.append(CdrGenerator.CDR_SEPARATOR).append(timestampC).append(CdrGenerator.CDR_SEPARATOR).append(sourceIP)
.append(CdrGenerator.CDR_SEPARATOR).append(sourcePort).append(CdrGenerator.CDR_SEPARATOR).append(destIP)
.append(CdrGenerator.CDR_SEPARATOR).append(destPort).append(CdrGenerator.CDR_SEPARATOR)
.append(seqNumber != -1 ? seqNumber : CDR_EMPTY).append(CdrGenerator.CDR_SEPARATOR);
sb.append(timestamp).append(CDR_SEPARATOR)
.append(eventType != null ? eventType : CDR_EMPTY).append(CDR_SEPARATOR)
.append(errorCode != null ? errorCode : CDR_EMPTY).append(CDR_SEPARATOR)
.append(messageType).append(CDR_SEPARATOR)
.append(statusCode).append(CDR_SEPARATOR)
// check this, maybe it should be smsEvent.getSmsSet().getCorrelationId()
.append(smsEvent.getMessageId()).append(CDR_SEPARATOR)
.append(receiptLocalMessageId == null ? receiptLocalMessageId : CDR_EMPTY).append(CDR_SEPARATOR)
.append(dlrStatus != null ? dlrStatus : CDR_EMPTY).append(CDR_SEPARATOR)
.append(mprocRuleId != -1 ? mprocRuleId : CDR_EMPTY).append(CDR_SEPARATOR)
.append(smsEvent.getOrigEsmeName()).append(CDR_SEPARATOR)
.append(timestampA != null ? timestampA : CDR_EMPTY).append(CDR_SEPARATOR)
.append(timestampB != null ? timestampB : CDR_EMPTY).append(CDR_SEPARATOR)
.append(timestampC != null ? timestampC : CDR_EMPTY).append(CDR_SEPARATOR)
.append(sourceIP != null ? sourceIP : CDR_EMPTY).append(CDR_SEPARATOR)
.append(sourcePort != -1 ? sourcePort : CDR_EMPTY).append(CDR_SEPARATOR)
.append(destIP != null ? destIP : CDR_EMPTY).append(CDR_SEPARATOR)
.append(destPort != -1 ? destPort : CDR_EMPTY).append(CDR_SEPARATOR)
.append(seqNumber != -1 ? seqNumber : CDR_EMPTY);

CdrDetailedGenerator.generateDetailedCdr(sb.toString());
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -113,7 +113,7 @@ public static void generateCdr(Sms smsEvent, String status, String reason, boole

if (deliveryReceiptData != null) {
st = deliveryReceiptData.getStatus();
tlvMessageState = deliveryReceiptData.getTlvMessageState();
tlvMessageState = deliveryReceiptData.getTlvMessageState() == null ? -1 : deliveryReceiptData.getTlvMessageState();;
err = deliveryReceiptData.getError();
}

Expand Down

0 comments on commit fa71dad

Please sign in to comment.