def process_tcicph_records(tcicph_record, file_name): answer_time_tmp = binascii.hexlify( str(tcicph_record.getComponentByName("answerTime"))) answer_time = parseTimestamp(answer_time_tmp) if tcicph_record.getComponentByName("callDuration") is None: call_duration = 0 else: call_duration = long( str(tcicph_record.getComponentByName("callDuration"))) called_number_binascii = binascii.hexlify( str(tcicph_record.getComponentByName("calledNumber"))) called_number_list = [] called_number_data = list(called_number_binascii) for i in xrange(0, len(called_number_data) - 1, 2): called_number_list.append(called_number_data[i + 1] + "" + called_number_data[i]) called_number_concatenated = ''.join(called_number_list) called_number = called_number_concatenated[2:] calling_number_binascii = binascii.hexlify( str(tcicph_record.getComponentByName("callingNumber"))) calling_number_list = [] calling_number_data = list(calling_number_binascii) for i in xrange(0, len(calling_number_data) - 1, 2): calling_number_list.append(calling_number_data[i + 1] + "" + calling_number_data[i]) calling_number_concatenated = ''.join(calling_number_list) calling_number = calling_number_concatenated[2:] call_reference = binascii.hexlify( str(tcicph_record.getComponentByName("callReference"))) call_segment_id = long( str(tcicph_record.getComponentByName("callSegmentId"))) if tcicph_record.getComponentByName("causeForTerm") is None: cause_for_termination = "" else: cause_for_termination_tmp = long( str(tcicph_record.getComponentByName("causeForTerm"))) cause_for_termination = "" if cause_for_termination_tmp == 0: cause_for_termination = "normalRelease" elif cause_for_termination_tmp == 1: cause_for_termination = "partialRecord" elif cause_for_termination_tmp == 2: cause_for_termination = "partialRecordCallReestablishment" elif cause_for_termination_tmp == 3: cause_for_termination = "unsuccessfulCallAttempt" elif cause_for_termination_tmp == 4: cause_for_termination = "stableCallAbnormalTermination" elif cause_for_termination_tmp == 5: cause_for_termination = "cAMELInitCallRelease" elif cause_for_termination_tmp == 52: cause_for_termination = "unauthorizedRequestingNetwork" elif cause_for_termination_tmp == 53: cause_for_termination = "unauthorizedLCSClient" elif cause_for_termination_tmp == 54: cause_for_termination = "positionMethodFailure" elif cause_for_termination_tmp == 58: cause_for_termination = "unknownOrUnreachableLCSClient" elif cause_for_termination_tmp == 101: cause_for_termination = "cAMELPlayTone" elif cause_for_termination_tmp == 102: cause_for_termination = "changeOfConfDueToCPH" elif cause_for_termination_tmp == 103: cause_for_termination = "falseAnswerCharge" elif cause_for_termination_tmp == 104: cause_for_termination = "failPlayTone" elif cause_for_termination_tmp == 105: cause_for_termination = "releaseForPreemption" if tcicph_record.getComponentByName("defaultCallHandling") is None: default_call_handling = "" else: default_call_handling_tmp = long( str(tcicph_record.getComponentByName("defaultCallHandling"))) default_call_handling = "" if default_call_handling_tmp == 0: default_call_handling = "continueCall" elif default_call_handling_tmp == 1: default_call_handling = "releaseCall" if tcicph_record.getComponentByName("diagnostics") is None: diagnostics = "" else: diagnostics = str(tcicph_record.getComponentByName("diagnostics")) file_name = file_name free_format_data = str( tcicph_record.getComponentByName("freeFormatData")) free_format_data_append = str( tcicph_record.getComponentByName("freeFormatDataAppend")) global_call_reference = str( tcicph_record.getComponentByName("globalCallReference")) if tcicph_record.getComponentByName("gsm-SCFAddress") is not None: gsm_scfaddress_binascii = binascii.hexlify( str(tcicph_record.getComponentByName("gsm-SCFAddress"))) gsm_scfaddress_list = [] gsm_scfaddress_data = list(gsm_scfaddress_binascii) for i in xrange(0, len(gsm_scfaddress_data) - 1, 2): gsm_scfaddress_list.append(gsm_scfaddress_data[i + 1] + "" + gsm_scfaddress_data[i]) gsm_scfaddress_concatenated = ''.join(gsm_scfaddress_list) gsm_scfaddress = gsm_scfaddress_concatenated[2:].replace( "f", "") else: gsm_scfaddress = "" interrogation_time_tmp = binascii.hexlify( str(tcicph_record.getComponentByName("interrogationTime"))) interrogation_time = parseTimestamp(interrogation_time_tmp) last_long_part_ind = str( tcicph_record.getComponentByName("lastLongPartInd")) level_of_camel_service = str( tcicph_record.getComponentByName("levelOfCAMELService")) if tcicph_record.getComponentByName("millisecDuration") is None: milli_sec_duration = 0 else: milli_sec_duration = long( str(tcicph_record.getComponentByName("millisecDuration"))) msc_address = str(tcicph_record.getComponentByName("mSCAddress")) msc_incoming_tkgp = binascii.hexlify( str(tcicph_record.getComponentByName("mscIncomingTKGP"))) if tcicph_record.getComponentByName("networkCallReference") is None: network_call_reference = "" else: network_call_reference = binascii.hexlify( str(tcicph_record.getComponentByName("networkCallReference"))) number_of_dp_encountered = str( tcicph_record.getComponentByName("numberOfDPEncountered")) if tcicph_record.getComponentByName("partialRecordType") is None: partial_record_type = "" else: partial_record_type_tmp = long( str(tcicph_record.getComponentByName("partialRecordType"))) partial_record_type = "" if partial_record_type_tmp == 1: partial_record_type = "serviceChange" if tcicph_record.getComponentByName("partSequenceNumber") is None: part_sequence_number = 0 else: part_sequence_number = long( str(tcicph_record.getComponentByName("partSequenceNumber"))) recording_entity_binascii = binascii.hexlify( str(tcicph_record.getComponentByName("recordingEntity"))) recording_entity_list = [] recording_entity_data = list(recording_entity_binascii) for l in xrange(0, len(recording_entity_data) - 1, 2): recording_entity_list.append(recording_entity_data[l + 1] + "" + recording_entity_data[l]) recording_entity_concatenated = ''.join(recording_entity_list) recording_entity_replace_f = recording_entity_concatenated.replace( "f", "") recording_entity = recording_entity_replace_f[ 2:7] + recording_entity_replace_f[7:] record_sequence_number = binascii.hexlify( str(tcicph_record.getComponentByName("recordSequenceNumber"))) if tcicph_record.getComponentByName("recordType") is None: record_type = 0 else: record_type = long( str(tcicph_record.getComponentByName("recordType"))) release_time_tmp = binascii.hexlify( str(tcicph_record.getComponentByName("releaseTime"))) release_time = parseTimestamp(release_time_tmp) seizure_time_tmp = binascii.hexlify( str(tcicph_record.getComponentByName("seizureTime"))) seizure_time = parseTimestamp(seizure_time_tmp) served_imsi_binascii = binascii.hexlify( str(tcicph_record.getComponentByName("servedIMSI"))) served_imsi_list = [] served_imsi_data = list(served_imsi_binascii) for j in xrange(0, len(served_imsi_data) - 1, 2): served_imsi_list.append(served_imsi_data[j + 1] + "" + served_imsi_data[j]) served_imsi_concatenated = ''.join(served_imsi_list) served_imsi = served_imsi_concatenated.replace("f", "") served_msisdn_binascii = binascii.hexlify( str(tcicph_record.getComponentByName("servedMSISDN"))) served_msisdn_list = [] served_msisdn_data = list(served_msisdn_binascii) for k in xrange(0, len(served_msisdn_data) - 1, 2): served_msisdn_list.append(served_msisdn_data[k + 1] + "" + served_msisdn_data[k]) served_msisdn_concatenated = ''.join(served_msisdn_list) served_msisdn_replace_f = served_msisdn_concatenated.replace("f", "") served_msisdn = served_msisdn_replace_f.replace( served_msisdn_replace_f[:3], '') if tcicph_record.getComponentByName("serviceKey") is None: service_key = "" else: service_key = str(tcicph_record.getComponentByName("serviceKey")) if tcicph_record.getComponentByName("termCallType") is None: term_call_type = "" else: term_call_type_tmp = long( str(tcicph_record.getComponentByName("termCallType"))) term_call_type = "" if term_call_type_tmp == 0: term_call_type = "terminatingCAMELCall" elif term_call_type_tmp == 1: term_call_type = "visitedTerminatingCAMELCall" tcicph_record = [ answer_time, call_duration, called_number, calling_number, call_reference, call_segment_id, cause_for_termination, default_call_handling, diagnostics, file_name, free_format_data, free_format_data_append, global_call_reference, gsm_scfaddress, interrogation_time, last_long_part_ind, level_of_camel_service, milli_sec_duration, msc_address, msc_incoming_tkgp, network_call_reference, number_of_dp_encountered, partial_record_type, part_sequence_number, recording_entity, record_sequence_number, record_type, release_time, seizure_time, served_imsi, served_msisdn, service_key, term_call_type ] return tcicph_record
def process_mscsrvcc_records(mscsrvcc_record, file_name): answer_time_tmp = binascii.hexlify( str(mscsrvcc_record.getComponentByName("answerTime"))) answer_time = parseTimestamp(answer_time_tmp) if mscsrvcc_record.getComponentByName("basicService") is None: basic_service = "" else: basic_service_choice = mscsrvcc_record.getComponentByName( "basicService") basic_service_choice_hexvalue = basic_service_choice.getComponent( ).prettyPrint() if basic_service_choice_hexvalue == "0x11": basic_service = "teleservice" else: basic_service = "bearerservice" if mscsrvcc_record.getComponentByName("callDuration") is None: call_duration = 0 else: call_duration = long( str(mscsrvcc_record.getComponentByName("callDuration"))) called_number_binascii = binascii.hexlify( str(mscsrvcc_record.getComponentByName("calledNumber"))) called_number_list = [] called_number_data = list(called_number_binascii) for i in xrange(0, len(called_number_data) - 1, 2): called_number_list.append(called_number_data[i + 1] + "" + called_number_data[i]) called_number_concatenated = ''.join(called_number_list) called_number = called_number_concatenated[2:] call_reference = binascii.hexlify( str(mscsrvcc_record.getComponentByName("callReference"))) if mscsrvcc_record.getComponentByName("causeForTerm") is None: cause_for_termination = "" else: cause_for_termination_tmp = long( str(mscsrvcc_record.getComponentByName("causeForTerm"))) cause_for_termination = "" if cause_for_termination_tmp == 0: cause_for_termination = "normalRelease" elif cause_for_termination_tmp == 1: cause_for_termination = "partialRecord" elif cause_for_termination_tmp == 2: cause_for_termination = "partialRecordCallReestablishment" elif cause_for_termination_tmp == 3: cause_for_termination = "unsuccessfulCallAttempt" elif cause_for_termination_tmp == 4: cause_for_termination = "stableCallAbnormalTermination" elif cause_for_termination_tmp == 5: cause_for_termination = "cAMELInitCallRelease" elif cause_for_termination_tmp == 52: cause_for_termination = "unauthorizedRequestingNetwork" elif cause_for_termination_tmp == 53: cause_for_termination = "unauthorizedLCSClient" elif cause_for_termination_tmp == 54: cause_for_termination = "positionMethodFailure" elif cause_for_termination_tmp == 58: cause_for_termination = "unknownOrUnreachableLCSClient" elif cause_for_termination_tmp == 101: cause_for_termination = "cAMELPlayTone" elif cause_for_termination_tmp == 102: cause_for_termination = "changeOfConfDueToCPH" elif cause_for_termination_tmp == 103: cause_for_termination = "falseAnswerCharge" elif cause_for_termination_tmp == 104: cause_for_termination = "failPlayTone" elif cause_for_termination_tmp == 105: cause_for_termination = "releaseForPreemption" if mscsrvcc_record.getComponentByName("diagnostics") is None: diagnostics = "" else: diagnostics = str( mscsrvcc_record.getComponentByName("diagnostics")) exchange_identity = str( mscsrvcc_record.getComponentByName("exchangeIdentity")) file_name = file_name ics_i2_active_flag = str( mscsrvcc_record.getComponentByName("iCSI2ActiveFlag")) ims_charging_identifier = str( mscsrvcc_record.getComponentByName("iMS-Charging-Identifier")) is_emergency_call = str( mscsrvcc_record.getComponentByName("isEmergencyCall")) last_long_part_ind = str( mscsrvcc_record.getComponentByName("lastLongPartInd")) if mscsrvcc_record.getComponentByName("location") is not None: location = mscsrvcc_record.getComponentByName("location") location_area = binascii.hexlify( str(location.getComponentByName("locationArea"))) location_area_str = str(location_area) location_cellid_binascii = location_area_str[10:14] format_location_cellid_binascii = int(location_cellid_binascii, 16) location_cellid = format(format_location_cellid_binascii, '05') location_area_code_binascii = location_area_str[6:10] format_location_area_code_binascii = int( location_area_code_binascii, 16) location_area_code = format(format_location_area_code_binascii, '05') location_plmn = parseMcc(location_area_str[0:6]) + parseMnc( location_area_str[0:6]) location_sac = location_area_str[-4:] else: location_cellid = "" location_area_code = "" location_plmn = "" location_sac = "" if mscsrvcc_record.getComponentByName("millisecDuration") is None: milli_sec_duration = 0 else: milli_sec_duration = long( str(mscsrvcc_record.getComponentByName("millisecDuration"))) ms_classmark = binascii.hexlify( str(mscsrvcc_record.getComponentByName("msClassmark"))) if mscsrvcc_record.getComponentByName("mscOutgoingTKGP") is None: msc_outgoing_tkgp = 0 else: msc_outgoing_tkgp = binascii.hexlify( str(mscsrvcc_record.getComponentByName("mscOutgoingTKGP"))) if mscsrvcc_record.getComponentByName("partialRecordType") is None: partial_record_type = "" else: partial_record_type_tmp = long( str(mscsrvcc_record.getComponentByName("partialRecordType"))) partial_record_type = "" if partial_record_type_tmp == 1: partial_record_type = "serviceChange" recording_entity_binascii = binascii.hexlify( str(mscsrvcc_record.getComponentByName("recordingEntity"))) recording_entity_list = [] recording_entity_data = list(recording_entity_binascii) for l in xrange(0, len(recording_entity_data) - 1, 2): recording_entity_list.append(recording_entity_data[l + 1] + "" + recording_entity_data[l]) recording_entity_concatenated = ''.join(recording_entity_list) recording_entity_replace_f = recording_entity_concatenated.replace( "f", "") recording_entity = recording_entity_replace_f[ 2:7] + recording_entity_replace_f[7:] record_sequence_number = binascii.hexlify( str(mscsrvcc_record.getComponentByName("recordSequenceNumber"))) if mscsrvcc_record.getComponentByName("recordType") is None: record_type = 0 else: record_type = long( str(mscsrvcc_record.getComponentByName("recordType"))) related_icid = str(mscsrvcc_record.getComponentByName("relatedICID")) release_time_tmp = binascii.hexlify( str(mscsrvcc_record.getComponentByName("releaseTime"))) release_time = parseTimestamp(release_time_tmp) seizure_time_tmp = binascii.hexlify( str(mscsrvcc_record.getComponentByName("seizureTime"))) seizure_time = parseTimestamp(seizure_time_tmp) if mscsrvcc_record.getComponentByName("sequenceNumber") is None: sequence_number = "" else: sequence_number = long( str(mscsrvcc_record.getComponentByName("sequenceNumber"))) served_imei_binascii = binascii.hexlify( str(mscsrvcc_record.getComponentByName("servedIMEI"))) served_imei_list = [] served_imei_data = list(served_imei_binascii) for i in xrange(0, len(served_imei_data) - 1, 2): served_imei_list.append(served_imei_data[i + 1] + "" + served_imei_data[i]) served_imei_concatenated = ''.join(served_imei_list) served_imei = served_imei_concatenated.replace("f", "") served_imsi_binascii = binascii.hexlify( str(mscsrvcc_record.getComponentByName("servedIMSI"))) served_imsi_list = [] served_imsi_data = list(served_imsi_binascii) for j in xrange(0, len(served_imsi_data) - 1, 2): served_imsi_list.append(served_imsi_data[j + 1] + "" + served_imsi_data[j]) served_imsi_concatenated = ''.join(served_imsi_list) served_imsi = served_imsi_concatenated.replace("f", "") served_msisdn_binascii = binascii.hexlify( str(mscsrvcc_record.getComponentByName("servedMSISDN"))) served_msisdn_list = [] served_msisdn_data = list(served_msisdn_binascii) for k in xrange(0, len(served_msisdn_data) - 1, 2): served_msisdn_list.append(served_msisdn_data[k + 1] + "" + served_msisdn_data[k]) served_msisdn_concatenated = ''.join(served_msisdn_list) served_msisdn_replace_f = served_msisdn_concatenated.replace("f", "") served_msisdn = served_msisdn_replace_f.replace( served_msisdn_replace_f[:3], '') if mscsrvcc_record.getComponentByName("systemType") is None: system_type = "" else: system_type_tmp = long( str(mscsrvcc_record.getComponentByName("systemType"))) system_type = "" if system_type_tmp == 0: system_type = "unknown" elif system_type_tmp == 1: system_type = "iuUTRAN" elif system_type_tmp == 2: system_type = "gERAN" if mscsrvcc_record.getComponentByName( "transactionIdentification") is None: transaction_identification = 0 else: transaction_identification = long( str( mscsrvcc_record.getComponentByName( "transactionIdentification"))) mscsrvcc_record = [ answer_time, basic_service, call_duration, called_number, call_reference, cause_for_termination, diagnostics, exchange_identity, file_name, ics_i2_active_flag, ims_charging_identifier, is_emergency_call, last_long_part_ind, location_cellid, location_area_code, location_plmn, location_sac, milli_sec_duration, ms_classmark, msc_outgoing_tkgp, partial_record_type, recording_entity, record_sequence_number, record_type, related_icid, release_time, seizure_time, sequence_number, served_imei, served_imsi, served_msisdn, system_type, transaction_identification ] return mscsrvcc_record
def process_mocph_records(mocphrecord_record, file_name): additional_chg_info = mocphrecord_record.getComponentByName("additionalChgInfo") if additional_chg_info is None: charge_indicator = "" else: charge_indicator = str(additional_chg_info.getComponentByName("chargeIndicator")) if additional_chg_info is None: charged_party = "" else: charged_party_tmp = long(str(additional_chg_info.getComponentByName("chargedParty"))) charged_party = "" if charged_party_tmp == 0: charged_party = "callingAsChargedParty" elif charged_party_tmp == 1: charged_party = "calledAsChargedParty" elif charged_party_tmp == 2: charged_party = "noCharging" elif charged_party_tmp == 3: charged_party = "anotherNumAsChargedParty" answer_time_tmp = binascii.hexlify(str(mocphrecord_record.getComponentByName("answerTime"))) answer_time = parseTimestamp(answer_time_tmp) if mocphrecord_record.getComponentByName("aocParameters") is not None: aoc_parameter = str(mocphrecord_record.getComponentByName("aocParameters")) aoc_parametere1 = str(aoc_parameter.getComponentByName("aocParameters")) aoc_parametere2 = str(aoc_parameter.getComponentByName("aocParameters")) aoc_parametere3 = str(aoc_parameter.getComponentByName("aocParameters")) aoc_parametere4 = str(aoc_parameter.getComponentByName("aocParameters")) aoc_parametere5 = str(aoc_parameter.getComponentByName("aocParameters")) aoc_parametere6 = str(aoc_parameter.getComponentByName("aocParameters")) aoc_parametere7 = str(aoc_parameter.getComponentByName("aocParameters")) else: aoc_parametere1 = "" aoc_parametere2 = "" aoc_parametere3 = "" aoc_parametere4 = "" aoc_parametere5 = "" aoc_parametere6 = "" aoc_parametere7 = "" if mocphrecord_record.getComponentByName("basicService") is None: basic_service = "" else: basic_service_choice = mocphrecord_record.getComponentByName("basicService") basic_service_choice_hexvalue = basic_service_choice.getComponent().prettyPrint() if basic_service_choice_hexvalue == "0x11": basic_service = "teleservice" else: basic_service = "bearerservice" if mocphrecord_record.getComponentByName("callDuration") is None: call_duration = 0 else: call_duration = long(str(mocphrecord_record.getComponentByName("callDuration"))) called_number_binascii = binascii.hexlify(str(mocphrecord_record.getComponentByName("calledNumber"))) called_number_list = [] called_number_data = list(called_number_binascii) for i in xrange(0, len(called_number_data) - 1, 2): called_number_list.append(called_number_data[i + 1] + "" + called_number_data[i]) called_number_concatenated = ''.join(called_number_list) called_number = called_number_concatenated[2:] call_reference = binascii.hexlify(str(mocphrecord_record.getComponentByName("callReference"))) call_segment_id = long(str(mocphrecord_record.getComponentByName("callSegmentId"))) if mocphrecord_record.getComponentByName("causeForTerm") is None: cause_for_termination = "" else: cause_for_termination_tmp = long(str(mocphrecord_record.getComponentByName("causeForTerm"))) cause_for_termination = "" if cause_for_termination_tmp == 0: cause_for_termination = "normalRelease" elif cause_for_termination_tmp == 1: cause_for_termination = "partialRecord" elif cause_for_termination_tmp == 2: cause_for_termination = "partialRecordCallReestablishment" elif cause_for_termination_tmp == 3: cause_for_termination = "unsuccessfulCallAttempt" elif cause_for_termination_tmp == 4: cause_for_termination = "stableCallAbnormalTermination" elif cause_for_termination_tmp == 5: cause_for_termination = "cAMELInitCallRelease" elif cause_for_termination_tmp == 52: cause_for_termination = "unauthorizedRequestingNetwork" elif cause_for_termination_tmp == 53: cause_for_termination = "unauthorizedLCSClient" elif cause_for_termination_tmp == 54: cause_for_termination = "positionMethodFailure" elif cause_for_termination_tmp == 58: cause_for_termination = "unknownOrUnreachableLCSClient" elif cause_for_termination_tmp == 101: cause_for_termination = "cAMELPlayTone" elif cause_for_termination_tmp == 102: cause_for_termination = "changeOfConfDueToCPH" elif cause_for_termination_tmp == 103: cause_for_termination = "falseAnswerCharge" elif cause_for_termination_tmp == 104: cause_for_termination = "failPlayTone" elif cause_for_termination_tmp == 105: cause_for_termination = "releaseForPreemption" if mocphrecord_record.getComponentByName("changeOfRadioChan") is not None: change_of_radio_chan = mocphrecord_record.getComponentByName("changeOfRadioChan") change_time_tmp = binascii.hexlify(str(change_of_radio_chan.getComponentByName("changeTime"))) change_time = parseTimestamp(change_time_tmp) radio_channel = "" # if change_of_radio_chan.getComponentByName("radioChannel") is None: # radio_channel = "" # else: # radio_channel_tmp = long(str(mtcall_record.getComponentByName("radioChannel"))) # radio_channel = "" # if radio_channel_tmp == 1: # radio_channel = "tchF4800" # elif radio_channel_tmp == 2: # radio_channel = "tchF9600" changeofradiochan_speech_version_used = str(change_of_radio_chan.getComponentByName("speechVersionUsed")) else: radio_channel = "" change_time = parseTimestamp('1606151209292d0700') changeofradiochan_speech_version_used = "" if mocphrecord_record.getComponentByName("defaultCallHandling") is None: default_call_handling = "" else: default_call_handling_tmp = long(str(mocphrecord_record.getComponentByName("defaultCallHandling"))) default_call_handling = "" if default_call_handling_tmp == 0: default_call_handling = "continueCall" elif default_call_handling_tmp == 1: default_call_handling = "releaseCall" if mocphrecord_record.getComponentByName("diagnostics") is None: diagnostics = "" else: diagnostics = str(mocphrecord_record.getComponentByName("diagnostics")) file_name = file_name free_format_data = str(mocphrecord_record.getComponentByName("freeFormatData")) free_format_data_append = str(mocphrecord_record.getComponentByName("freeFormatDataAppend")) global_call_reference = str(mocphrecord_record.getComponentByName("globalCallReference")) if mocphrecord_record.getComponentByName("gsm-SCFAddress") is not None: gsm_scfaddress_binascii = binascii.hexlify(str(mocphrecord_record.getComponentByName("gsm-SCFAddress"))) gsm_scfaddress_list = [] gsm_scfaddress_data = list(gsm_scfaddress_binascii) for i in xrange(0, len(gsm_scfaddress_data) - 1, 2): gsm_scfaddress_list.append(gsm_scfaddress_data[i + 1] + "" + gsm_scfaddress_data[i]) gsm_scfaddress_concatenated = ''.join(gsm_scfaddress_list) gsm_scfaddress = gsm_scfaddress_concatenated[2:].replace("f", "") else: gsm_scfaddress = "" if mocphrecord_record.getComponentByName("guaranteedBitRate") is None: guaranteed_bit_rate = "" else: guaranteed_bit_rate_tmp = long(str(mocphrecord_record.getComponentByName("guaranteedBitRate"))) guaranteed_bit_rate = "" if guaranteed_bit_rate_tmp == 1: guaranteed_bit_rate = "gBR14400BitsPerSecond" elif guaranteed_bit_rate_tmp == 2: guaranteed_bit_rate = "gBR28800BitsPerSecond" elif guaranteed_bit_rate_tmp == 3: guaranteed_bit_rate = "gBR32000BitsPerSecond" elif guaranteed_bit_rate_tmp == 4: guaranteed_bit_rate = "gBR33600BitsPerSecond" elif guaranteed_bit_rate_tmp == 5: guaranteed_bit_rate = "gBR56000BitsPerSecond" elif guaranteed_bit_rate_tmp == 6: guaranteed_bit_rate = "gBR57600BitsPerSecond" elif guaranteed_bit_rate_tmp == 7: guaranteed_bit_rate = "gBR64000BitsPerSecond" elif guaranteed_bit_rate_tmp == 8: guaranteed_bit_rate = "gBR31200BitsPerSecond" elif guaranteed_bit_rate_tmp == 9: guaranteed_bit_rate = "gBR38400BitsPerSecond" if mocphrecord_record.getComponentByName("hotBillingTag") is None: hot_billing_tag = 0 else: hot_billing_tag = long(str(mocphrecord_record.getComponentByName("hotBillingTag"))) is_camel_call = str(mocphrecord_record.getComponentByName("isCAMELCall")) last_long_part_ind = str(mocphrecord_record.getComponentByName("lastLongPartInd")) level_of_camel_service = str(mocphrecord_record.getComponentByName("levelOfCAMELService")) if mocphrecord_record.getComponentByName("location") is not None: location = mocphrecord_record.getComponentByName("location") location_area = binascii.hexlify(str(location.getComponentByName("locationArea"))) location_area_str = str(location_area) location_cellid_binascii = location_area_str[10:14] format_location_cellid_binascii = int(location_cellid_binascii, 16) location_cellid = format(format_location_cellid_binascii, '05') location_area_code_binascii = location_area_str[6:10] format_location_area_code_binascii = int(location_area_code_binascii, 16) location_area_code = format(format_location_area_code_binascii, '05') location_plmn = parseMcc(location_area_str[0:6]) + parseMnc(location_area_str[0:6]) location_sac = location_area_str[-4:] else: location_cellid = "" location_area_code = "" location_plmn = "" location_sac = "" if mocphrecord_record.getComponentByName("maximumBitRate") is None: maximumbitrate = "" else: maximumbitrate_tmp = long(str(mocphrecord_record.getComponentByName("maximumBitRate"))) maximumbitrate = "" if maximumbitrate_tmp == 1: maximumbitrate = "mBR14400BitsPerSecond" elif maximumbitrate_tmp == 2: maximumbitrate = "mBR28800BitsPerSecond" elif maximumbitrate_tmp == 3: maximumbitrate = "mBR32000BitsPerSecond" elif maximumbitrate_tmp == 4: maximumbitrate = "mBR33600BitsPerSecond" elif maximumbitrate_tmp == 5: maximumbitrate = "mBR56000BitsPerSecond" elif maximumbitrate_tmp == 6: maximumbitrate = "mBR57600BitsPerSecond" elif maximumbitrate_tmp == 7: maximumbitrate = "mBR64000BitsPerSecond" elif maximumbitrate_tmp == 8: maximumbitrate = "mBR67200BitsPerSecond" if mocphrecord_record.getComponentByName("millisecDuration") is None: milli_sec_duration = 0 else: milli_sec_duration = long(str(mocphrecord_record.getComponentByName("millisecDuration"))) msc_address = str(mocphrecord_record.getComponentByName("mSCAddress")) msc_incoming_tkgp = binascii.hexlify(str(mocphrecord_record.getComponentByName("mscIncomingTKGP"))) ms_classmark = binascii.hexlify(str(mocphrecord_record.getComponentByName("msClassmark"))) if mocphrecord_record.getComponentByName("networkCallReference") is None: network_call_reference = "" else: network_call_reference = binascii.hexlify( str(mocphrecord_record.getComponentByName("networkCallReference"))) if mocphrecord_record.getComponentByName("numberOfDPEncountered") is None: number_of_dpencountered = 0 else: number_of_dpencountered = long(str(mocphrecord_record.getComponentByName("numberOfDPEncountered"))) if mocphrecord_record.getComponentByName("partialRecordType") is None: partial_record_type = "" else: partial_record_type_tmp = long(str(mocphrecord_record.getComponentByName("partialRecordType"))) partial_record_type = "" if partial_record_type_tmp == 1: partial_record_type = "serviceChange" if mocphrecord_record.getComponentByName("partSequenceNumber") is None: part_sequence_number = 0 else: part_sequence_number = long(str(mocphrecord_record.getComponentByName("partSequenceNumber"))) if mocphrecord_record.getComponentByName("radioChanRequested") is None: radio_chan_requested = "" else: radio_chan_requested_tmp = long(str(mocphrecord_record.getComponentByName("radioChanRequested"))) radio_chan_requested = "" if radio_chan_requested_tmp == 0: radio_chan_requested = "halfRateChannel" elif radio_chan_requested_tmp == 1: radio_chan_requested = "fullRateChannel" elif radio_chan_requested_tmp == 2: radio_chan_requested = "dualHalfRatePreferred" elif radio_chan_requested_tmp == 3: radio_chan_requested = "dualFullRatePreferred" if mocphrecord_record.getComponentByName("radioChanUsed") is None: radio_chan_used = "" else: radio_chan_used_tmp = long(str(mocphrecord_record.getComponentByName("radioChanUsed"))) radio_chan_used = "" if radio_chan_used_tmp == 0: radio_chan_used = "fullRate" elif radio_chan_used_tmp == 1: radio_chan_used = "halfRate" recording_entity_binascii = binascii.hexlify(str(mocphrecord_record.getComponentByName("recordingEntity"))) recording_entity_list = [] recording_entity_data = list(recording_entity_binascii) for l in xrange(0, len(recording_entity_data) - 1, 2): recording_entity_list.append(recording_entity_data[l + 1] + "" + recording_entity_data[l]) recording_entity_concatenated = ''.join(recording_entity_list) recording_entity_replace_f = recording_entity_concatenated.replace("f", "") recording_entity = recording_entity_replace_f[2:7] + recording_entity_replace_f[7:] record_sequence_number = binascii.hexlify(str(mocphrecord_record.getComponentByName("recordSequenceNumber"))) record_type = long(str(mocphrecord_record.getComponentByName("recordType"))) release_time_tmp = binascii.hexlify(str(mocphrecord_record.getComponentByName("releaseTime"))) release_time = parseTimestamp(release_time_tmp) roaming_number_binascii = binascii.hexlify(str(mocphrecord_record.getComponentByName("roamingNumber"))) roaming_number_list = [] roaming_number_data = list(roaming_number_binascii) for i in xrange(0, len(roaming_number_data) - 1, 2): roaming_number_list.append(roaming_number_data[i + 1] + "" + roaming_number_data[i]) roaming_number_concatenated = ''.join(roaming_number_list) roaming_number = roaming_number_concatenated[2:] seizure_time_tmp = binascii.hexlify(str(mocphrecord_record.getComponentByName("seizureTime"))) seizure_time = parseTimestamp(seizure_time_tmp) served_imei_binascii = binascii.hexlify(str(mocphrecord_record.getComponentByName("servedIMEI"))) served_imei_list = [] served_imei_data = list(served_imei_binascii) for i in xrange(0, len(served_imei_data) - 1, 2): served_imei_list.append(served_imei_data[i + 1] + "" + served_imei_data[i]) served_imei_concatenated = ''.join(served_imei_list) served_imei = served_imei_concatenated.replace("f", "") served_imsi_binascii = binascii.hexlify(str(mocphrecord_record.getComponentByName("servedIMSI"))) served_imsi_list = [] served_imsi_data = list(served_imsi_binascii) for j in xrange(0, len(served_imsi_data) - 1, 2): served_imsi_list.append(served_imsi_data[j + 1] + "" + served_imsi_data[j]) served_imsi_concatenated = ''.join(served_imsi_list) served_imsi = served_imsi_concatenated.replace("f", "") served_msisdn_binascii = binascii.hexlify(str(mocphrecord_record.getComponentByName("servedMSISDN"))) served_msisdn_list = [] served_msisdn_data = list(served_msisdn_binascii) for k in xrange(0, len(served_msisdn_data) - 1, 2): served_msisdn_list.append(served_msisdn_data[k + 1] + "" + served_msisdn_data[k]) served_msisdn_concatenated = ''.join(served_msisdn_list) served_msisdn_replace_f = served_msisdn_concatenated.replace("f", "") served_msisdn = served_msisdn_replace_f.replace(served_msisdn_replace_f[:3], '') if mocphrecord_record.getComponentByName("serviceKey") is None: service_key = "" else: service_key = str(mocphrecord_record.getComponentByName("serviceKey")) speech_version_supported = str(mocphrecord_record.getComponentByName("speechVersionSupported")) speech_version_used = str(mocphrecord_record.getComponentByName("speechVersionUsed")) subscriber_category = binascii.hexlify(str(mocphrecord_record.getComponentByName("subscriberCategory"))) if mocphrecord_record.getComponentByName("systemType") is None: system_type = "" else: system_type_tmp = long(str(mocphrecord_record.getComponentByName("systemType"))) system_type = "" if system_type_tmp == 0: system_type = "unknown" elif system_type_tmp == 1: system_type = "iuUTRAN" elif system_type_tmp == 2: system_type = "gERAN" mocphrecord_record = [charged_party, charge_indicator, answer_time, aoc_parametere1, aoc_parametere2, aoc_parametere3, aoc_parametere4, aoc_parametere5, aoc_parametere6, aoc_parametere7, basic_service, call_duration, called_number, call_reference, call_segment_id, cause_for_termination, change_time, radio_channel, changeofradiochan_speech_version_used, default_call_handling, diagnostics, file_name, free_format_data, free_format_data_append, global_call_reference, gsm_scfaddress, guaranteed_bit_rate, hot_billing_tag, is_camel_call , last_long_part_ind, level_of_camel_service, location_cellid, location_area_code, location_plmn, location_sac, maximumbitrate, milli_sec_duration, msc_address, msc_incoming_tkgp, ms_classmark, network_call_reference, number_of_dpencountered, partial_record_type, part_sequence_number, radio_chan_requested, radio_chan_used, recording_entity, record_sequence_number, record_type, release_time, roaming_number, seizure_time, served_imei, served_imsi, served_msisdn, service_key, speech_version_supported, speech_version_used, subscriber_category, system_type] return mocphrecord_record
def process_mtlcs_records(mtlcs_record, file_id, file_name): additional_chg_info = mtlcs_record.getComponentByName( "additionalChgInfo") if additional_chg_info is None: charge_indicator = -255 else: charge_indicator = long( str(additional_chg_info.getComponentByName("chargeIndicator"))) if additional_chg_info is None: charged_party = "" else: charged_party_tmp = long( str(additional_chg_info.getComponentByName("chargedParty"))) charged_party = "" if charged_party_tmp == 0: charged_party = "callingAsChargedParty" elif charged_party_tmp == 1: charged_party = "calledAsChargedParty" elif charged_party_tmp == 2: charged_party = "noCharging" elif charged_party_tmp == 3: charged_party = "anotherNumAsChargedParty" if mtlcs_record.getComponentByName("causeForTerm") is None: cause_for_termination = "" else: cause_for_termination_tmp = long( str(mtlcs_record.getComponentByName("causeForTerm"))) cause_for_termination = "" if cause_for_termination_tmp == 0: cause_for_termination = "normalRelease" elif cause_for_termination_tmp == 1: cause_for_termination = "partialRecord" elif cause_for_termination_tmp == 2: cause_for_termination = "partialRecordCallReestablishment" elif cause_for_termination_tmp == 3: cause_for_termination = "unsuccessfulCallAttempt" elif cause_for_termination_tmp == 4: cause_for_termination = "stableCallAbnormalTermination" elif cause_for_termination_tmp == 5: cause_for_termination = "cAMELInitCallRelease" elif cause_for_termination_tmp == 52: cause_for_termination = "unauthorizedRequestingNetwork" elif cause_for_termination_tmp == 53: cause_for_termination = "unauthorizedLCSClient" elif cause_for_termination_tmp == 54: cause_for_termination = "positionMethodFailure" elif cause_for_termination_tmp == 58: cause_for_termination = "unknownOrUnreachableLCSClient" elif cause_for_termination_tmp == 101: cause_for_termination = "cAMELPlayTone" elif cause_for_termination_tmp == 102: cause_for_termination = "changeOfConfDueToCPH" elif cause_for_termination_tmp == 103: cause_for_termination = "falseAnswerCharge" elif cause_for_termination_tmp == 104: cause_for_termination = "failPlayTone" elif cause_for_termination_tmp == 105: cause_for_termination = "releaseForPreemption" if mtlcs_record.getComponentByName("diagnostics") is None: diagnostics = "" else: diagnostics = mtlcs_record.getComponentByName( "diagnostics").getName() event_timestamp_tmp = binascii.hexlify( str(mtlcs_record.getComponentByName("eventTimeStamp"))) event_timestamp = append_timezone_offset( parseTimestamp(event_timestamp_tmp)) if mtlcs_record.getComponentByName("hotBillingTag") is None: hot_billing_tag = -255 else: hot_billing_tag = long( str(mtlcs_record.getComponentByName("hotBillingTag"))) if mtlcs_record.getComponentByName("hotBillingTag2") is None: hot_billing_tag2 = -255 else: hot_billing_tag2 = long( str(mtlcs_record.getComponentByName("hotBillingTag2"))) if mtlcs_record.getComponentByName("lcsCause") is None: lcs_cause = "" else: lcs_cause = str(mtlcs_record.getComponentByName("lcsCause")) lcs_client_identity = mtlcs_record.getComponentByName( "lcsClientIdentity") if lcs_client_identity is None: lcs_client_external_address = "" else: lcs_client_external_id = lcs_client_identity.getComponentByName( "lcsClientExternalID") lcs_client_external_address_binascii = binascii.hexlify( str( lcs_client_external_id.getComponentByName( "externalAddress"))) lcs_client_external_address_list = [] lcs_client_external_address_data = list( lcs_client_external_address_binascii) for k in xrange(0, len(lcs_client_external_address_data) - 1, 2): lcs_client_external_address_list.append( lcs_client_external_address_data[k + 1] + "" + lcs_client_external_address_data[k]) lcs_client_external_address_concatenated = ''.join( lcs_client_external_address_list) lcs_client_external_address = lcs_client_external_address_concatenated[ 2:].replace("f", "") if lcs_client_identity is None: lcs_client_dialedbyms = "" else: if lcs_client_identity.getComponentByName( "lcsClientDialedByMS") is None: lcs_client_dialedbyms = "" else: lcs_client_dialedbyms = str( lcs_client_identity.getComponentByName( "lcsClientDialedByMS")) if lcs_client_identity is None: lcs_client_internalid = "" else: if lcs_client_identity.getComponentByName( "lcsClientInternalID") is None: lcs_client_internalid = "" else: lcs_client_internalid = str( lcs_client_identity.getComponentByName( "lcsClientInternalID")) if mtlcs_record.getComponentByName("lcsClientType") is None: lcs_clienttype = "" else: lcs_clienttype_tmp = long( str(mtlcs_record.getComponentByName("lcsClientType"))) lcs_clienttype = "" if lcs_clienttype_tmp == 0: lcs_clienttype = "emergencyServices" elif lcs_clienttype_tmp == 1: lcs_clienttype = "valueAddedServices" elif lcs_clienttype_tmp == 2: lcs_clienttype = "plmnOperatorServices" elif lcs_clienttype_tmp == 3: lcs_clienttype = "lawfulInterceptServices" if mtlcs_record.getComponentByName("lcsPriority") is None: lcs_priority = "" else: lcs_priority_tmp = binascii.hexlify( str(mtlcs_record.getComponentByName("lcsPriority"))) lcs_priority = lcs_priority_tmp[:2] if mtlcs_record.getComponentByName("lcsQos") is None: lcs_qos = "" else: lcs_qos = binascii.hexlify( str(mtlcs_record.getComponentByName("lcsQos"))) if mtlcs_record.getComponentByName("locationEstimate") is None: location_estimate = "" else: location_estimate = str( mtlcs_record.getComponentByName("locationEstimate")) location = mtlcs_record.getComponentByName("location") if location is not None: location_area = binascii.hexlify( str(location.getComponentByName("locationArea"))) location_area_str = str(location_area) location_cellid_binascii = location_area_str[10:14] format_location_cellid_binascii = int(location_cellid_binascii, 16) location_cellid = format(format_location_cellid_binascii, '05') location_area_code_binascii = location_area_str[6:10] format_location_area_code_binascii = int( location_area_code_binascii, 16) location_area_code = format(format_location_area_code_binascii, '05') location_plmn = parseMcc(location_area_str[0:6]) + parseMnc( location_area_str[0:6]) location_sac = location_area_str[-4:] else: location_cellid = "" location_area_code = "" location_plmn = "" location_sac = "" location_type = mtlcs_record.getComponentByName("locationType") if location_type is None: deferred_location_eventtype = "" else: if location_type.getComponentByName( "deferredLocationEventType") is None: deferred_location_eventtype = "" else: deferred_location_eventtype = str( location_type.getComponentByName( "deferredLocationEventType")) if location_type is None: location_estimate_type = "" else: location_estimate_type_tmp = long( str(location_type.getComponentByName("locationEstimateType"))) location_estimate_type = "" if location_estimate_type_tmp == 0: location_estimate_type = "currentLocation" elif location_estimate_type == 1: location_estimate_type = "currentOrLastKnownLocation" elif location_estimate_type == 2: location_estimate_type = "initialLocation" elif location_estimate_type_tmp == 3: location_estimate_type = "activateDeferredLocation" elif location_estimate_type_tmp == 4: location_estimate_type = "cancelDeferredLocation" if mtlcs_record.getComponentByName("measureDuration") is None: measure_duration = -255 else: measure_duration = long( str(mtlcs_record.getComponentByName("measureDuration"))) if mtlcs_record.getComponentByName("mlc-Number") is None: mlc_number = "" else: mlc_number_binascii = binascii.hexlify( str(mtlcs_record.getComponentByName("mlc-Number"))) mlc_number_list = [] mlc_number_data = list(mlc_number_binascii) for k in xrange(0, len(mlc_number_data) - 1, 2): mlc_number_list.append(mlc_number_data[k + 1] + "" + mlc_number_data[k]) mlc_number_concatenated = ''.join(mlc_number_list) mlc_number = mlc_number_concatenated[2:].replace("f", "") if mtlcs_record.getComponentByName("notificationToMSUser") is None: notification_to_msuser = "" else: notification_to_msuser_tmp = long( str(mtlcs_record.getComponentByName("notificationToMSUser"))) notification_to_msuser = "" if notification_to_msuser_tmp == 0: notification_to_msuser = "******" elif notification_to_msuser_tmp == 1: notification_to_msuser = "******" elif notification_to_msuser_tmp == 2: notification_to_msuser = "******" elif notification_to_msuser_tmp == 3: notification_to_msuser = "******" if mtlcs_record.getComponentByName("operatorId") is None: operator_id = -255 else: operator_id = long( str(mtlcs_record.getComponentByName("operatorId"))) if mtlcs_record.getComponentByName("positioningData") is None: positioning_data = "" else: positioning_data = str( mtlcs_record.getComponentByName("positioningData")) privacy_override_get_value = mtlcs_record.getComponentByName( "privacyOverride") privacy_override = boolean_value(privacy_override_get_value) if mtlcs_record.getComponentByName("recordingEntity") is None: recording_entity = "" else: recording_entity_binascii = binascii.hexlify( str(mtlcs_record.getComponentByName("recordingEntity"))) recording_entity_list = [] recording_entity_data = list(recording_entity_binascii) for l in xrange(0, len(recording_entity_data) - 1, 2): recording_entity_list.append(recording_entity_data[l + 1] + "" + recording_entity_data[l]) recording_entity_concatenated = ''.join(recording_entity_list) recording_entity_replace_f = recording_entity_concatenated.replace( "f", "") recording_entity = recording_entity_replace_f[ 2:7] + recording_entity_replace_f[7:] if mtlcs_record.getComponentByName("recordSequenceNumber") is None: record_sequence_number = "" else: record_sequence_number = binascii.hexlify( str(mtlcs_record.getComponentByName("recordSequenceNumber"))) if mtlcs_record.getComponentByName("recordType") is None: record_type = -255 else: record_type = long( str(mtlcs_record.getComponentByName("recordType"))) if mtlcs_record.getComponentByName("servedIMSI") is None: served_imsi = "" else: served_imsi_binascii = binascii.hexlify( str(mtlcs_record.getComponentByName("servedIMSI"))) served_imsi_list = [] served_imsi_data = list(served_imsi_binascii) for j in xrange(0, len(served_imsi_data) - 1, 2): served_imsi_list.append(served_imsi_data[j + 1] + "" + served_imsi_data[j]) served_imsi_concatenated = ''.join(served_imsi_list) served_imsi = served_imsi_concatenated.replace("f", "") if mtlcs_record.getComponentByName("servedMSISDN") is None: served_msisdn = "" else: served_msisdn_binascii = binascii.hexlify( str(mtlcs_record.getComponentByName("servedMSISDN"))) served_msisdn_list = [] served_msisdn_data = list(served_msisdn_binascii) for k in xrange(0, len(served_msisdn_data) - 1, 2): served_msisdn_list.append(served_msisdn_data[k + 1] + "" + served_msisdn_data[k]) served_msisdn_concatenated = ''.join(served_msisdn_list) served_msisdn_replace_f = served_msisdn_concatenated.replace( "f", "") served_msisdn = served_msisdn_replace_f.replace( served_msisdn_replace_f[:3], '') if mtlcs_record.getComponentByName("systemType") is None: system_type = "" else: system_type_tmp = long( str(mtlcs_record.getComponentByName("systemType"))) system_type = "" if system_type_tmp == 0: system_type = "unknown" elif system_type_tmp == 1: system_type = "iuUTRAN" elif system_type_tmp == 2: system_type = "gERAN" mtlcs_record = [ charge_indicator, charged_party, cause_for_termination, diagnostics, event_timestamp, file_id, hot_billing_tag, hot_billing_tag2, lcs_cause, lcs_client_external_address, lcs_client_dialedbyms, lcs_client_internalid, lcs_clienttype, lcs_priority, lcs_qos, location_cellid, location_estimate, location_area_code, location_plmn, location_sac, deferred_location_eventtype, location_estimate_type, measure_duration, mlc_number, notification_to_msuser, operator_id, positioning_data, privacy_override, record_sequence_number, record_type, recording_entity, served_imsi, served_msisdn, system_type, long(event_timestamp.strftime("%Y%m%d")), long(event_timestamp.strftime("%H")) ] return mtlcs_record
def process_mtsms_records(mtsms_record, file_id, file_name): if mtsms_record.getComponentByName("basicService") is None: basic_service = "" else: basic_service_choice = mtsms_record.getComponentByName("basicService") basic_service_choice_hexvalue = basic_service_choice.getComponent().prettyPrint() if basic_service_choice_hexvalue == "0x11": basic_service = "teleservice" else: basic_service = "bearerservice" if mtsms_record.getComponentByName("cAMELSMSInformation") is not None: camel_sms_information = mtsms_record.getComponentByName("cAMELSMSInformation") camel_smsc_address = str(camel_sms_information.getComponentByName("cAMELSMSCAddress")) calling_party_number = str(camel_sms_information.getComponentByName("callingPartyNumber")) if camel_sms_information is None: default_sms_handling = "" else: default_sms_handling_tmp = long(str(camel_sms_information.getComponentByName("defaultSMSHandling"))) default_sms_handling = "" if default_sms_handling_tmp == 0: default_sms_handling = "continueTransaction" elif default_sms_handling_tmp == 1: default_sms_handling = "releaseTransaction" destination_subscriber_number = binascii.hexlify( str(camel_sms_information.getComponentByName("destinationSubscriberNumber"))) free_format_data = str(camel_sms_information.getComponentByName("freeFormatData")) gsm_scfaddress = str(camel_sms_information.getComponentByName("gsm-SCFAddress")) sms_reference_number = long(str(camel_sms_information.getComponentByName("smsRefrenceNumber"))) service_key = long(str(camel_sms_information.getComponentByName("serviceKey"))) else: camel_smsc_address = "" calling_party_number = "" default_sms_handling = "" destination_subscriber_number = "" free_format_data = "" gsm_scfaddress = "" sms_reference_number = -255 service_key = -255 if mtsms_record.getComponentByName("callReference") is None: call_reference = "" else: call_reference = binascii.hexlify(str(mtsms_record.getComponentByName("callReference"))) if mtsms_record.getComponentByName("concatenatedRecordNum") is None: concatenated_record_num = -255 else: concatenated_record_num = long(str(mtsms_record.getComponentByName("concatenatedRecordNum"))) if mtsms_record.getComponentByName("concatenatedRef") is None: concatenated_ref = -255 else: concatenated_ref = long(str(mtsms_record.getComponentByName("concatenatedRef"))) delivery_time_tmp = binascii.hexlify(str(mtsms_record.getComponentByName("deliveryTime"))) delivery_time = append_timezone_offset(parseTimestamp(delivery_time_tmp)) if mtsms_record.getComponentByName("directSmsFlag") is None: direct_sms_flag = -255 else: direct_sms_flag = long(str(mtsms_record.getComponentByName("directSmsFlag"))) if mtsms_record.getComponentByName("exchangeIdentity") is None: exchange_identity = "" else: exchange_identity = str(mtsms_record.getComponentByName("exchangeIdentity")) if mtsms_record.getComponentByName("hotBillingTag") is None: hot_billing_tag = -255 else: hot_billing_tag = long(str(mtsms_record.getComponentByName("hotBillingTag"))) if mtsms_record.getComponentByName("hotBillingTag2") is None: hot_billing_tag2 = -255 else: hot_billing_tag2 = long(str(mtsms_record.getComponentByName("hotBillingTag2"))) if mtsms_record.getComponentByName("locationExtension") is None: location_extension = "" else: location_extension = str(mtsms_record.getComponentByName("locationExtension")) location = mtsms_record.getComponentByName("location") if location is not None: location_area = binascii.hexlify(str(location.getComponentByName("locationArea"))) location_area_str = str(location_area) location_cellid_binascii = location_area_str[10:14] format_location_cellid_binascii = int(location_cellid_binascii, 16) location_cellid = format(format_location_cellid_binascii, '05') location_area_code_binascii = location_area_str[6:10] format_location_area_code_binascii = int(location_area_code_binascii, 16) location_area_code = format(format_location_area_code_binascii, '05') location_plmn = parseMcc(location_area_str[0:6]) + parseMnc(location_area_str[0:6]) location_sac = location_area_str[-4:] else: location_cellid = "" location_area_code = "" location_plmn = "" location_sac = "" if mtsms_record.getComponentByName("msClassmark") is None: ms_classmark = "" else: ms_classmark = binascii.hexlify(str(mtsms_record.getComponentByName("msClassmark"))) if mtsms_record.getComponentByName("mscSPC14") is None: mscspc14 = "" else: mscspc14 = binascii.hexlify(str(mtsms_record.getComponentByName("mscSPC14"))) if mtsms_record.getComponentByName("mscSPC24") is None: mscspc24 = "" else: mscspc24 = binascii.hexlify(str(mtsms_record.getComponentByName("mscSPC24"))) if mtsms_record.getComponentByName("numOfConcatenated") is None: num_of_concatenated = -255 else: num_of_concatenated = long(str(mtsms_record.getComponentByName("numOfConcatenated"))) if mtsms_record.getComponentByName("operatorId") is None: operator_id = -255 else: operator_id = long(str(mtsms_record.getComponentByName("operatorId"))) if mtsms_record.getComponentByName("originationNumber") is None: origination_number = "" else: origination_number_binascii = binascii.hexlify( str(mtsms_record.getComponentByName("originationNumber"))) origination_number_list = [] origination_number_data = list(origination_number_binascii) for i in xrange(0, len(origination_number_data) - 1, 2): origination_number_list.append(origination_number_data[i + 1] + "" + origination_number_data[i]) origination_number_concatenated = ''.join(origination_number_list) origination_number = origination_number_concatenated[2:].replace("f", "") if mtsms_record.getComponentByName("recordSequenceNumber") is None: record_sequence_number = "" else: record_sequence_number = binascii.hexlify(str(mtsms_record.getComponentByName("recordSequenceNumber"))) if mtsms_record.getComponentByName("recordType") is None: record_type = -255 else: record_type = long(str(mtsms_record.getComponentByName("recordType"))) if mtsms_record.getComponentByName("sMSLength") is None: sms_length = "" else: sms_length = binascii.hexlify(str(mtsms_record.getComponentByName("sMSLength"))) if mtsms_record.getComponentByName("recordingEntity") is None: recording_entity = "" else: recording_entity_binascii = binascii.hexlify(str(mtsms_record.getComponentByName("recordingEntity"))) recording_entity_list = [] recording_entity_data = list(recording_entity_binascii) for l in xrange(0, len(recording_entity_data) - 1, 2): recording_entity_list.append(recording_entity_data[l+1] + "" + recording_entity_data[l]) recording_entity_concatenated = ''.join(recording_entity_list) recording_entity_replace_f = recording_entity_concatenated.replace("f", "") recording_entity = recording_entity_replace_f[2:7] + recording_entity_replace_f[7:] if mtsms_record.getComponentByName("servedIMEI") is None: served_imei = "" else: served_imei_binascii = binascii.hexlify(str(mtsms_record.getComponentByName("servedIMEI"))) served_imei_list = [] served_imei_data = list(served_imei_binascii) for i in xrange(0, len(served_imei_data) - 1, 2): served_imei_list.append(served_imei_data[i + 1] + "" + served_imei_data[i]) served_imei_concatenated = ''.join(served_imei_list) served_imei = served_imei_concatenated.replace("f", "") if mtsms_record.getComponentByName("servedIMSI") is None: served_imsi = "" else: served_imsi_binascii = binascii.hexlify(str(mtsms_record.getComponentByName("servedIMSI"))) served_imsi_list = [] served_imsi_data = list(served_imsi_binascii) for j in xrange(0, len(served_imsi_data) - 1, 2): served_imsi_list.append(served_imsi_data[j+1] + "" + served_imsi_data[j]) served_imsi_concatenated = ''.join(served_imsi_list) served_imsi = served_imsi_concatenated.replace("f", "") if mtsms_record.getComponentByName("servedMSISDN") is None: served_msisdn = "" else: served_msisdn_binascii = binascii.hexlify(str(mtsms_record.getComponentByName("servedMSISDN"))) served_msisdn_list = [] served_msisdn_data = list(served_msisdn_binascii) for k in xrange(0, len(served_msisdn_data) - 1, 2): served_msisdn_list.append(served_msisdn_data[k+1] + "" + served_msisdn_data[k]) served_msisdn_concatenated = ''.join(served_msisdn_list) served_msisdn_replace_f = served_msisdn_concatenated.replace("f", "") served_msisdn = served_msisdn_replace_f.replace(served_msisdn_replace_f[:3], '') if mtsms_record.getComponentByName("serviceCentre") is None: service_centre = "" else: service_centre_binascii = binascii.hexlify(str(mtsms_record.getComponentByName("serviceCentre"))) service_centre_list = [] service_centre_data = list(service_centre_binascii) for l in xrange(0, len(service_centre_data) - 1, 2): service_centre_list.append(service_centre_data[l+1] + "" + service_centre_data[l]) service_centre_concatenated = ''.join(service_centre_list) service_centre_replace_f = service_centre_concatenated.replace("f", "") service_centre = service_centre_replace_f[2:7] + service_centre_replace_f[7:] if mtsms_record.getComponentByName("smsResult") is None: sms_result = "" else: sms_result = mtsms_record.getComponentByName("smsResult").getName() if mtsms_record.getComponentByName("systemType") is None: system_type = "" else: system_type_tmp = long(str(mtsms_record.getComponentByName("systemType"))) system_type = "" if system_type_tmp == 0: system_type = "unknown" elif system_type_tmp == 1: system_type = "iuUTRAN" elif system_type_tmp == 2: system_type = "gERAN" if mtsms_record.getComponentByName("tPMessageTypeIndicator") is None: tp_messagetype_indicator = "" else: tp_messagetype_indicator_tmp = long(str(mtsms_record.getComponentByName("tPMessageTypeIndicator"))) tp_messagetype_indicator = "" if tp_messagetype_indicator_tmp == 0: tp_messagetype_indicator = "sMS-DELIVER-REPORT" elif tp_messagetype_indicator_tmp == 1: tp_messagetype_indicator = "sMS-SUBMIT" elif tp_messagetype_indicator_tmp == 2: tp_messagetype_indicator = "sMS-COMMAND" elif tp_messagetype_indicator_tmp == 3: tp_messagetype_indicator = "reserved" if mtsms_record.getComponentByName("transactionIdentification") is None: transaction_identification = "" else: transaction_identification = str(mtsms_record.getComponentByName("transactionIdentification")) file_name = file_name mtsms_record = [basic_service, camel_smsc_address, calling_party_number, default_sms_handling, destination_subscriber_number, free_format_data, gsm_scfaddress, service_key, sms_reference_number, call_reference, concatenated_record_num, concatenated_ref, delivery_time, direct_sms_flag, exchange_identity, file_id, hot_billing_tag, hot_billing_tag2, location_cellid, location_extension, location_area_code, location_plmn, location_sac, ms_classmark, mscspc14, mscspc24, num_of_concatenated, operator_id, origination_number, record_sequence_number, record_type, recording_entity, sms_length, served_imei, served_imsi, served_msisdn, service_centre, sms_result, system_type, tp_messagetype_indicator, transaction_identification, long(delivery_time.strftime("%Y%m%d")), long(delivery_time.strftime("%H"))] return mtsms_record
def process_mtcall_records(mtcall_record, file_id, file_name): if mtcall_record.getComponentByName("aReleaseCause") is None: a_release_cause = -255 else: a_release_cause = long( str(mtcall_record.getComponentByName("aReleaseCause"))) additional_chg_info = mtcall_record.getComponentByName( "additionalChgInfo") if additional_chg_info is None: charge_indicator = -255 else: charge_indicator = long( str(additional_chg_info.getComponentByName("chargeIndicator"))) if additional_chg_info is None: charged_party = "" else: charged_party_tmp = long( str(additional_chg_info.getComponentByName("chargedParty"))) charged_party = "" if charged_party_tmp == 0: charged_party = "callingAsChargedParty" elif charged_party_tmp == 1: charged_party = "calledAsChargedParty" elif charged_party_tmp == 2: charged_party = "noCharging" elif charged_party_tmp == 3: charged_party = "anotherNumAsChargedParty" if mtcall_record.getComponentByName("aiurRequested") is None: aiur_requested = "" else: aiur_requested_tmp = long( str(mtcall_record.getComponentByName("aiurRequested"))) aiur_requested = "" if aiur_requested_tmp == 1: aiur_requested = "aiur09600BitsPerSecond" elif aiur_requested_tmp == 2: aiur_requested = "aiur14400BitsPerSecond" elif aiur_requested_tmp == 3: aiur_requested = "aiur19200BitsPerSecond" elif aiur_requested_tmp == 5: aiur_requested = "aiur28800BitsPerSecond" elif aiur_requested_tmp == 6: aiur_requested = "aiur38400BitsPerSecond" elif aiur_requested_tmp == 7: aiur_requested = "aiur43200BitsPerSecond" elif aiur_requested_tmp == 8: aiur_requested = "aiur57600BitsPerSecond" elif aiur_requested_tmp == 9: aiur_requested = "aiur38400BitsPerSecond1" elif aiur_requested_tmp == 10: aiur_requested = "aiur38400BitsPerSecond2" elif aiur_requested_tmp == 11: aiur_requested = "aiur38400BitsPerSecond3" elif aiur_requested_tmp == 12: aiur_requested = "aiur38400BitsPerSecond4" answer_time_tmp = binascii.hexlify( str(mtcall_record.getComponentByName("answerTime"))) answer_time = append_timezone_offset(parseTimestamp(answer_time_tmp)) if mtcall_record.getComponentByName("aocParameters") is not None: aoc_parameter = str( mtcall_record.getComponentByName("aocParameters")) aoc_parametere1 = str( aoc_parameter.getComponentByName("aocParameters")) aoc_parametere2 = str( aoc_parameter.getComponentByName("aocParameters")) aoc_parametere3 = str( aoc_parameter.getComponentByName("aocParameters")) aoc_parametere4 = str( aoc_parameter.getComponentByName("aocParameters")) aoc_parametere5 = str( aoc_parameter.getComponentByName("aocParameters")) aoc_parametere6 = str( aoc_parameter.getComponentByName("aocParameters")) aoc_parametere7 = str( aoc_parameter.getComponentByName("aocParameters")) else: aoc_parametere1 = "" aoc_parametere2 = "" aoc_parametere3 = "" aoc_parametere4 = "" aoc_parametere5 = "" aoc_parametere6 = "" aoc_parametere7 = "" if mtcall_record.getComponentByName("bSCIdentification") is None: bsdidentification = "" else: bsdidentification = binascii.hexlify( str(mtcall_record.getComponentByName("bSCIdentification"))) if mtcall_record.getComponentByName("basicService") is None: basic_service = "" else: basic_service_choice = mtcall_record.getComponentByName( "basicService") basic_service_choice_hexvalue = basic_service_choice.getComponent( ).prettyPrint() if basic_service_choice_hexvalue == "0x11": basic_service = "teleservice" else: basic_service = "bearerservice" if mtcall_record.getComponentByName("bscIdentification24") is None: bsdidentification_24 = "" else: bsdidentification_24 = binascii.hexlify( str(mtcall_record.getComponentByName("bscIdentification24"))) csfbmt_indicator_get_value = mtcall_record.getComponentByName( "cSFBMTIndicator") csfbmt_indicator = boolean_value(csfbmt_indicator_get_value) cug_category = mtcall_record.getComponentByName("cUGCategory") if cug_category is None: cug_category_calltype = -255 else: cug_category_calltype = long( str(cug_category.getComponentByName("callType"))) if cug_category is None: cug_category_usertype = -255 else: cug_category_usertype = long( str(cug_category.getComponentByName("userType"))) if cug_category is None: cug_index = -255 else: cug_index = long(str(cug_category.getComponentByName("cUGIndex"))) if mtcall_record.getComponentByName("cUGInterLockCode") is None: cug_interlock_code = "" else: cug_interlock_code = str( mtcall_record.getComponentByName("cUGInterLockCode")) cug_incoming_accessind_get_value = mtcall_record.getComponentByName( "cUGIncomingAccessUsed") cug_incoming_accessind = boolean_value( cug_incoming_accessind_get_value) cug_incoming_accessused_get_value = mtcall_record.getComponentByName( "cUGIncomingAccessInd") cug_incoming_accessused = boolean_value( cug_incoming_accessused_get_value) if mtcall_record.getComponentByName("callDuration") is None: call_duration = -255 else: call_duration = long( str(mtcall_record.getComponentByName("callDuration"))) if mtcall_record.getComponentByName("callReference") is None: call_reference = "" else: call_reference = binascii.hexlify( str(mtcall_record.getComponentByName("callReference"))) if mtcall_record.getComponentByName("calledPartyRoamingInd") is None: called_party_roamingind = "" else: calling_party_roamingind_int = str( mtcall_record.getComponentByName("calledPartyRoamingInd")) if calling_party_roamingind_int == "1": called_party_roamingind = "TRUE" else: called_party_roamingind = "FALSE" if mtcall_record.getComponentByName("callingLocation") is None: calling_location = "" else: calling_location = str( mtcall_record.getComponentByName("callingLocation")) if mtcall_record.getComponentByName("callingNumber") is None: calling_number = "" else: calling_number_binascii = binascii.hexlify( str(mtcall_record.getComponentByName("callingNumber"))) calling_number_list = [] calling_number_data = list(calling_number_binascii) for i in xrange(0, len(calling_number_data) - 1, 2): calling_number_list.append(calling_number_data[i + 1] + "" + calling_number_data[i]) calling_number_concatenated = ''.join(calling_number_list) calling_number = calling_number_concatenated[2:] if mtcall_record.getComponentByName("carp") is None: carp = -255 else: carp = long(str(mtcall_record.getComponentByName("carp"))) if mtcall_record.getComponentByName("causeForTerm") is None: cause_for_termination = "" else: cause_for_termination_tmp = long( str(mtcall_record.getComponentByName("causeForTerm"))) cause_for_termination = "" if cause_for_termination_tmp == 0: cause_for_termination = "normalRelease" elif cause_for_termination_tmp == 1: cause_for_termination = "partialRecord" elif cause_for_termination_tmp == 2: cause_for_termination = "partialRecordCallReestablishment" elif cause_for_termination_tmp == 3: cause_for_termination = "unsuccessfulCallAttempt" elif cause_for_termination_tmp == 4: cause_for_termination = "stableCallAbnormalTermination" elif cause_for_termination_tmp == 5: cause_for_termination = "cAMELInitCallRelease" elif cause_for_termination_tmp == 52: cause_for_termination = "unauthorizedRequestingNetwork" elif cause_for_termination_tmp == 53: cause_for_termination = "unauthorizedLCSClient" elif cause_for_termination_tmp == 54: cause_for_termination = "positionMethodFailure" elif cause_for_termination_tmp == 58: cause_for_termination = "unknownOrUnreachableLCSClient" elif cause_for_termination_tmp == 101: cause_for_termination = "cAMELPlayTone" elif cause_for_termination_tmp == 102: cause_for_termination = "changeOfConfDueToCPH" elif cause_for_termination_tmp == 103: cause_for_termination = "falseAnswerCharge" elif cause_for_termination_tmp == 104: cause_for_termination = "failPlayTone" elif cause_for_termination_tmp == 105: cause_for_termination = "releaseForPreemption" if mtcall_record.getComponentByName("chanCodingUsed") is None: chan_coding_used = "" else: chan_coding_used_tmp = long( str(mtcall_record.getComponentByName("chanCodingUsed"))) chan_coding_used = "" if chan_coding_used_tmp == 1: chan_coding_used = "tchF4800" elif chan_coding_used_tmp == 2: chan_coding_used = "tchF9600" elif chan_coding_used_tmp == 3: chan_coding_used = "tchF14400" if mtcall_record.getComponentByName("changeOfRadioChan") is not None: change_of_radio_chan = mtcall_record.getComponentByName( "changeOfRadioChan") if change_of_radio_chan.getComponentByName("changeTime") is None: change_time = parse_start_time(file_name) else: change_time_tmp = binascii.hexlify( str(change_of_radio_chan.getComponentByName("changeTime"))) change_time = append_timezone_offset( parseTimestamp(change_time_tmp)) if change_of_radio_chan.getComponentByName("radioChannel") is None: radio_channel = "" else: radio_channel_tmp = long( str(change_of_radio_chan.getComponentByName( "radioChannel"))) radio_channel = "" if radio_channel_tmp == 0: radio_channel = "fullRate" elif radio_channel_tmp == 1: radio_channel = "halfRate" if change_of_radio_chan.getComponentByName( "speechVersionUsed") is None: changeofradiochan_speech_version_used = "" else: changeofradiochan_speech_version_used = str( change_of_radio_chan.getComponentByName( "speechVersionUsed")) else: radio_channel = "" change_time = parse_start_time(file_name) changeofradiochan_speech_version_used = "" if mtcall_record.getComponentByName("channelType") is None: channel_type = "" else: channel_type = str(mtcall_record.getComponentByName("channelType")) if mtcall_record.getComponentByName("connectedNumber") is None: connected_number = "" else: connected_number_binascii = binascii.hexlify( str(mtcall_record.getComponentByName("connectedNumber"))) connected_number_list = [] connected_number_data = list(connected_number_binascii) for i in xrange(0, len(connected_number_data) - 1, 2): connected_number_list.append(connected_number_data[i + 1] + "" + connected_number_data[i]) connected_number_concatenated = ''.join(connected_number_list) connected_number = connected_number_concatenated[2:] if mtcall_record.getComponentByName("dataRate") is None: data_rate = -255 else: data_rate = long(str(mtcall_record.getComponentByName("dataRate"))) if mtcall_record.getComponentByName("dataVolume") is None: data_volume = -255 else: data_volume = long( str(mtcall_record.getComponentByName("dataVolume"))) if mtcall_record.getComponentByName("dDCFlag") is None: ddcflag = -255 else: ddcflag = long(str(mtcall_record.getComponentByName("dDCFlag"))) if mtcall_record.getComponentByName("defaultCallHandling") is None: default_call_handling = "" else: default_call_handling_tmp = long( str(mtcall_record.getComponentByName("defaultCallHandling"))) default_call_handling = "" if default_call_handling_tmp == 0: default_call_handling = "continueCall" elif default_call_handling_tmp == 1: default_call_handling = "releaseCall" if mtcall_record.getComponentByName("diagnostics") is None: diagnostics = "" else: diagnostics = mtcall_record.getComponentByName( "diagnostics").getName() if mtcall_record.getComponentByName("eMLPPPriorityLevel") is None: emlpp_priority_level = -255 else: emlpp_priority_level = long( str(mtcall_record.getComponentByName("eMLPPPriorityLevel"))) if mtcall_record.getComponentByName( "eMLPPRequestPriorityLevel") is None: emlpp_request_priority_level = -255 else: emlpp_request_priority_level = long( str( mtcall_record.getComponentByName( "eMLPPRequestPriorityLevel"))) if mtcall_record.getComponentByName("exchangeIdentity") is None: exchange_identity = "" else: exchange_identity = str( mtcall_record.getComponentByName("exchangeIdentity")) if mtcall_record.getComponentByName("fnur") is None: fnur = "" else: fnur_tmp = long(str(mtcall_record.getComponentByName("fnur"))) if fnur_tmp == 0: fnur = "fnur9600-BitsPerSecond" elif fnur_tmp == 1: fnur = "fnur14400BitsPerSecond" elif fnur_tmp == 2: fnur = "fnur19200BitsPerSecond" elif fnur_tmp == 3: fnur = "fnur14400BitsPerSecond" elif fnur_tmp == 4: fnur = "fnur28800BitsPerSecond" elif fnur_tmp == 5: fnur = "fnur38400BitsPerSecond" elif fnur_tmp == 6: fnur = "fnur48000BitsPerSecond" elif fnur_tmp == 7: fnur = "fnur56000BitsPerSecond" elif fnur_tmp == 8: fnur = "fnur64000BitsPerSecond" elif fnur_tmp == 9: fnur = "fnur33600BitsPerSecond" elif fnur_tmp == 10: fnur = "fnur32000BitsPerSecond" if mtcall_record.getComponentByName("freeFormatData") is None: free_format_data = "" else: free_format_data = str( mtcall_record.getComponentByName("freeFormatData")) if mtcall_record.getComponentByName("globalCallReference") is None: global_call_reference = "" else: global_call_reference = str( mtcall_record.getComponentByName("globalCallReference")) if mtcall_record.getComponentByName("gsm-SCFAddress") is not None: gsm_scfaddress_binascii = binascii.hexlify( str(mtcall_record.getComponentByName("gsm-SCFAddress"))) gsm_scfaddress_list = [] gsm_scfaddress_data = list(gsm_scfaddress_binascii) for i in xrange(0, len(gsm_scfaddress_data) - 1, 2): gsm_scfaddress_list.append(gsm_scfaddress_data[i + 1] + "" + gsm_scfaddress_data[i]) gsm_scfaddress_concatenated = ''.join(gsm_scfaddress_list) gsm_scfaddress = gsm_scfaddress_concatenated[2:].replace( "f", "") else: gsm_scfaddress = "" if mtcall_record.getComponentByName("guaranteedBitRate") is None: guaranteed_bit_rate = "" else: guaranteed_bit_rate_tmp = long( str(mtcall_record.getComponentByName("guaranteedBitRate"))) guaranteed_bit_rate = "" if guaranteed_bit_rate_tmp == 1: guaranteed_bit_rate = "gBR14400BitsPerSecond" elif guaranteed_bit_rate_tmp == 2: guaranteed_bit_rate = "gBR28800BitsPerSecond" elif guaranteed_bit_rate_tmp == 3: guaranteed_bit_rate = "gBR32000BitsPerSecond" elif guaranteed_bit_rate_tmp == 4: guaranteed_bit_rate = "gBR33600BitsPerSecond" elif guaranteed_bit_rate_tmp == 5: guaranteed_bit_rate = "gBR56000BitsPerSecond" elif guaranteed_bit_rate_tmp == 6: guaranteed_bit_rate = "gBR57600BitsPerSecond" elif guaranteed_bit_rate_tmp == 7: guaranteed_bit_rate = "gBR64000BitsPerSecond" elif guaranteed_bit_rate_tmp == 8: guaranteed_bit_rate = "gBR31200BitsPerSecond" elif guaranteed_bit_rate_tmp == 9: guaranteed_bit_rate = "gBR38400BitsPerSecond" if mtcall_record.getComponentByName("hSCSDChanAllocated") is None: hscsd_chan_allocated = -255 else: hscsd_chan_allocated = long( str(mtcall_record.getComponentByName("hSCSDChanAllocated"))) if mtcall_record.getComponentByName("hSCSDChanRequested") is None: hscsd_chan_requested = -255 else: hscsd_chan_requested = long( str(mtcall_record.getComponentByName("hSCSDChanRequested"))) if mtcall_record.getComponentByName("hotBillingTag") is None: hot_billing_tag = -255 else: hot_billing_tag = long( str(mtcall_record.getComponentByName("hotBillingTag"))) if mtcall_record.getComponentByName("hotBillingTag2") is None: hot_billing_tag2 = -255 else: hot_billing_tag2 = long( str(mtcall_record.getComponentByName("hotBillingTag2"))) ics_flag_get_value = mtcall_record.getComponentByName("iCSFlag") ics_flag = boolean_value(ics_flag_get_value) incoming_cic = mtcall_record.getComponentByName("incomingCic") if incoming_cic is None: incoming_cic_channel = -255 else: incoming_cic_channel = long( str(incoming_cic.getComponentByName("channel"))) if incoming_cic is None: incoming_cic_pcmunit = -255 else: incoming_cic_pcmunit = long( str(incoming_cic.getComponentByName("pcmUnit"))) if mtcall_record.getComponentByName("incomingTKGPName") is None: incoming_tkgpname = "" else: incoming_tkgpname = str( mtcall_record.getComponentByName("incomingTKGPName")) if mtcall_record.getComponentByName("incomingTrafficType") is None: incoming_traffic_type = "" else: incoming_traffic_type_tmp = long( str(mtcall_record.getComponentByName("incomingTrafficType"))) incoming_traffic_type = "" if incoming_traffic_type_tmp == 0: incoming_traffic_type = "unknown" elif incoming_traffic_type_tmp == 1: incoming_traffic_type = "localNetworkMobile" elif incoming_traffic_type_tmp == 2: incoming_traffic_type = "localNetworkFixed" elif incoming_traffic_type_tmp == 3: incoming_traffic_type = "externalNetwork" is_camel_call_get_value = mtcall_record.getComponentByName( "isCAMELCall") is_camel_call = boolean_value(is_camel_call_get_value) is_cug_used_get_value = mtcall_record.getComponentByName("isCUGUsed") is_cug_used = boolean_value(is_cug_used_get_value) is_hscsd_used_get_value = mtcall_record.getComponentByName( "isHSCSDUsed") is_hscsd_used = boolean_value(is_hscsd_used_get_value) is_multi_media_call_get_value = mtcall_record.getComponentByName( "isMultiMediaCall") is_multi_media_call = boolean_value(is_multi_media_call_get_value) if mtcall_record.getComponentByName("iuReleaseCause") is None: iu_release_cause = -255 else: iu_release_cause = long( str(mtcall_record.getComponentByName("iuReleaseCause"))) last_long_part_ind_get_value = mtcall_record.getComponentByName( "lastLongPartInd") last_long_part_ind = boolean_value(last_long_part_ind_get_value) if mtcall_record.getComponentByName("location") is not None: location = mtcall_record.getComponentByName("location") location_area = binascii.hexlify( str(location.getComponentByName("locationArea"))) location_area_str = str(location_area) location_cellid_binascii = location_area_str[10:14] format_location_cellid_binascii = int(location_cellid_binascii, 16) location_cellid = format(format_location_cellid_binascii, '05') location_area_code_binascii = location_area_str[6:10] format_location_area_code_binascii = int( location_area_code_binascii, 16) location_area_code = format(format_location_area_code_binascii, '05') location_plmn = parseMcc(location_area_str[0:6]) + parseMnc( location_area_str[0:6]) location_sac = location_area_str[-4:] else: location_cellid = "" location_area_code = "" location_plmn = "" location_sac = "" if mtcall_record.getComponentByName("mSCAddress") is None: msc_address = "" else: msc_address_binascii = binascii.hexlify( str(mtcall_record.getComponentByName("mSCAddress"))) msc_address_list = [] msc_address_data = list(msc_address_binascii) for i in xrange(0, len(msc_address_data) - 1, 2): msc_address_list.append(msc_address_data[i + 1] + "" + msc_address_data[i]) msc_address_concatenated = ''.join(msc_address_list) msc_address = msc_address_concatenated[2:].replace("f", "") if mtcall_record.getComponentByName("maximumBitRate") is None: maximumbitrate = "" else: maximumbitrate_tmp = long( str(mtcall_record.getComponentByName("maximumBitRate"))) maximumbitrate = "" if maximumbitrate_tmp == 1: maximumbitrate = "mBR14400BitsPerSecond" elif maximumbitrate_tmp == 2: maximumbitrate = "mBR28800BitsPerSecond" elif maximumbitrate_tmp == 3: maximumbitrate = "mBR32000BitsPerSecond" elif maximumbitrate_tmp == 4: maximumbitrate = "mBR33600BitsPerSecond" elif maximumbitrate_tmp == 5: maximumbitrate = "mBR56000BitsPerSecond" elif maximumbitrate_tmp == 6: maximumbitrate = "mBR57600BitsPerSecond" elif maximumbitrate_tmp == 7: maximumbitrate = "mBR64000BitsPerSecond" elif maximumbitrate_tmp == 8: maximumbitrate = "mBR67200BitsPerSecond" if mtcall_record.getComponentByName("millisecDuration") is None: milli_sec_duration = -255 else: milli_sec_duration = long( str(mtcall_record.getComponentByName("millisecDuration"))) if mtcall_record.getComponentByName("msClassmark") is None: ms_classmark = "" else: ms_classmark = binascii.hexlify( str(mtcall_record.getComponentByName("msClassmark"))) if mtcall_record.getComponentByName("mscIncomingTKGP") is None: msc_incoming_tkgp = "" else: msc_incoming_tkgp = binascii.hexlify( str(mtcall_record.getComponentByName("mscIncomingTKGP"))) if mtcall_record.getComponentByName("mscOutgoingTKGP") is None: msc_outgoing_tkgp = "" else: msc_outgoing_tkgp = binascii.hexlify( str(mtcall_record.getComponentByName("mscOutgoingTKGP"))) if mtcall_record.getComponentByName("mscSPC14") is None: mscspc14 = "" else: mscspc14 = binascii.hexlify( str(mtcall_record.getComponentByName("mscSPC14"))) if mtcall_record.getComponentByName("mscSPC24") is None: mscspc24 = "" else: mscspc24 = binascii.hexlify( str(mtcall_record.getComponentByName("mscSPC24"))) if mtcall_record.getComponentByName("networkCallReference") is None: network_call_reference = "" else: network_call_reference = binascii.hexlify( str(mtcall_record.getComponentByName("networkCallReference"))) if mtcall_record.getComponentByName("operatorId") is None: operator_id = -255 else: operator_id = long( str(mtcall_record.getComponentByName("operatorId"))) if mtcall_record.getComponentByName("operatorId") is None: original_called_number = "" else: original_called_number = str( mtcall_record.getComponentByName("originalCalledNumber")) outgoing_cic = mtcall_record.getComponentByName("outgoingCic") if outgoing_cic is None: outgoing_cic_channel = -255 else: outgoing_cic_channel = long( str(outgoing_cic.getComponentByName("channel"))) if outgoing_cic is None: outgoing_cic_pcmunit = -255 else: outgoing_cic_pcmunit = long( str(outgoing_cic.getComponentByName("pcmUnit"))) if mtcall_record.getComponentByName("outgoingTKGPName") is None: outgoing_tkgpname = "" else: outgoing_tkgpname = str( mtcall_record.getComponentByName("outgoingTKGPName")) if mtcall_record.getComponentByName("outgoingTrafficType") is None: outgoing_traffic_type = "" else: outgoing_traffic_type_tmp = long( str(mtcall_record.getComponentByName("outgoingTrafficType"))) outgoing_traffic_type = "" if outgoing_traffic_type_tmp == 0: outgoing_traffic_type = "unknown" elif outgoing_traffic_type_tmp == 1: outgoing_traffic_type = "localNetworkMobile" elif outgoing_traffic_type_tmp == 2: outgoing_traffic_type = "localNetworkFixed" elif outgoing_traffic_type_tmp == 3: outgoing_traffic_type = "externalNetwork" if mtcall_record.getComponentByName("partialRecordType") is None: partial_record_type = "" else: partial_record_type_tmp = long( str(mtcall_record.getComponentByName("partialRecordType"))) partial_record_type = "" if partial_record_type_tmp == 1: partial_record_type = "serviceChange" if mtcall_record.getComponentByName("pbrt") is None: pbrt = -255 else: pbrt = long(str(mtcall_record.getComponentByName("pbrt"))) if mtcall_record.getComponentByName("radioChanRequested") is None: radio_chan_requested = "" else: radio_chan_requested_tmp = long( str(mtcall_record.getComponentByName("radioChanRequested"))) radio_chan_requested = "" if radio_chan_requested_tmp == 0: radio_chan_requested = "halfRateChannel" elif radio_chan_requested_tmp == 1: radio_chan_requested = "fullRateChannel" elif radio_chan_requested_tmp == 2: radio_chan_requested = "dualHalfRatePreferred" elif radio_chan_requested_tmp == 3: radio_chan_requested = "dualFullRatePreferred" if mtcall_record.getComponentByName("radioChanUsed") is None: radio_chan_used = "" else: radio_chan_used_tmp = long( str(mtcall_record.getComponentByName("radioChanUsed"))) radio_chan_used = "" if radio_chan_used_tmp == 0: radio_chan_used = "fullRate" elif radio_chan_used_tmp == 1: radio_chan_used = "halfRate" if mtcall_record.getComponentByName("rateIndication") is None: rate_indication = "" else: rate_indication = str( mtcall_record.getComponentByName("rateIndication")) if mtcall_record.getComponentByName("reasonForServiceChange") is None: reason_for_service_change = "" else: reason_for_service_change_tmp = long( str(mtcall_record.getComponentByName( "reasonForServiceChange"))) reason_for_service_change = "" if reason_for_service_change_tmp == 0: reason_for_service_change = "msubInitiate" elif reason_for_service_change_tmp == 1: reason_for_service_change = "mscInitiated" elif reason_for_service_change_tmp == 2: reason_for_service_change = "callSetupFallBack" elif reason_for_service_change_tmp == 3: reason_for_service_change = "callSetupChangeOrder" if mtcall_record.getComponentByName("recordSequenceNumber") is None: record_sequence_number = "" else: record_sequence_number = binascii.hexlify( str(mtcall_record.getComponentByName("recordSequenceNumber"))) if mtcall_record.getComponentByName("recordType") is None: record_type = -255 else: record_type = long( str(mtcall_record.getComponentByName("recordType"))) if mtcall_record.getComponentByName("recordingEntity") is None: recording_entity = "" else: recording_entity_binascii = binascii.hexlify( str(mtcall_record.getComponentByName("recordingEntity"))) recording_entity_list = [] recording_entity_data = list(recording_entity_binascii) for l in xrange(0, len(recording_entity_data) - 1, 2): recording_entity_list.append(recording_entity_data[l + 1] + "" + recording_entity_data[l]) recording_entity_concatenated = ''.join(recording_entity_list) recording_entity_replace_f = recording_entity_concatenated.replace( "f", "") recording_entity = recording_entity_replace_f[ 2:7] + recording_entity_replace_f[7:] if mtcall_record.getComponentByName("redirectNumber") is None: redirect_number = "" else: redirecting_number_binascii = binascii.hexlify( str(mtcall_record.getComponentByName("redirectNumber"))) redirecting_number_list = [] redirecting_number_data = list(redirecting_number_binascii) for i in xrange(0, len(redirecting_number_data) - 1, 2): redirecting_number_list.append(redirecting_number_data[i + 1] + "" + redirecting_number_data[i]) redirecting_number_concatenated = ''.join(redirecting_number_list) redirect_number = redirecting_number_concatenated[2:].replace( "f", "") if mtcall_record.getComponentByName("redirectingNumber") is None: redirecting_number = "" else: redirecting_number = str( mtcall_record.getComponentByName("redirectingNumber")) release_time_tmp = binascii.hexlify( str(mtcall_record.getComponentByName("releaseTime"))) release_time = append_timezone_offset(parseTimestamp(release_time_tmp)) if mtcall_record.getComponentByName("routingCategory") is None: routing_category = "" else: routing_category = str( mtcall_record.getComponentByName("routingCategory")) seizure_time_tmp = binascii.hexlify( str(mtcall_record.getComponentByName("seizureTime"))) seizure_time = append_timezone_offset(parseTimestamp(seizure_time_tmp)) if mtcall_record.getComponentByName("sequenceNumber") is None: sequence_number = -255 else: sequence_number = long( str(mtcall_record.getComponentByName("sequenceNumber"))) if mtcall_record.getComponentByName("servedIMEI") is None: served_imei = "" else: served_imei_binascii = binascii.hexlify( str(mtcall_record.getComponentByName("servedIMEI"))) served_imei_list = [] served_imei_data = list(served_imei_binascii) for i in xrange(0, len(served_imei_data) - 1, 2): served_imei_list.append(served_imei_data[i + 1] + "" + served_imei_data[i]) served_imei_concatenated = ''.join(served_imei_list) served_imei = served_imei_concatenated.replace("f", "") if mtcall_record.getComponentByName("servedIMSI") is None: served_imsi = "" else: served_imsi_binascii = binascii.hexlify( str(mtcall_record.getComponentByName("servedIMSI"))) served_imsi_list = [] served_imsi_data = list(served_imsi_binascii) for j in xrange(0, len(served_imsi_data) - 1, 2): served_imsi_list.append(served_imsi_data[j + 1] + "" + served_imsi_data[j]) served_imsi_concatenated = ''.join(served_imsi_list) served_imsi = served_imsi_concatenated.replace("f", "") if mtcall_record.getComponentByName("servedMSISDN") is None: served_msisdn = "" else: served_msisdn_binascii = binascii.hexlify( str(mtcall_record.getComponentByName("servedMSISDN"))) served_msisdn_list = [] served_msisdn_data = list(served_msisdn_binascii) for k in xrange(0, len(served_msisdn_data) - 1, 2): served_msisdn_list.append(served_msisdn_data[k + 1] + "" + served_msisdn_data[k]) served_msisdn_concatenated = ''.join(served_msisdn_list) served_msisdn_replace_f = served_msisdn_concatenated.replace( "f", "") served_msisdn = served_msisdn_replace_f.replace( served_msisdn_replace_f[:3], '') if mtcall_record.getComponentByName("serviceCategory") is None: service_category = "" else: service_category = binascii.hexlify( str(mtcall_record.getComponentByName("serviceCategory"))) if mtcall_record.getComponentByName("serviceChangeInitiator") is None: service_change_initiator = -255 else: service_change_initiator = long( str(mtcall_record.getComponentByName( "serviceChangeInitiator"))) if mtcall_record.getComponentByName("serviceKey") is None: service_key = "" else: service_key = long( str(mtcall_record.getComponentByName("serviceKey"))) if mtcall_record.getComponentByName("speechVersionSupported") is None: speech_version_supported = "" else: speech_version_supported = binascii.hexlify( str(mtcall_record.getComponentByName( "speechVersionSupported"))) if mtcall_record.getComponentByName("speechVersionUsed") is None: speech_version_used = "" else: speech_version_used = binascii.hexlify( str(mtcall_record.getComponentByName("speechVersionUsed"))) if mtcall_record.getComponentByName("startTime") is None: start_time = parse_start_time(file_name) else: start_time_tmp = binascii.hexlify( str(mtcall_record.getComponentByName("startTime"))) start_time = append_timezone_offset(parseTimestamp(start_time_tmp)) if mtcall_record.getComponentByName("subscriberCategory") is None: subscriber_category = "" else: subscriber_category = binascii.hexlify( str(mtcall_record.getComponentByName("subscriberCategory"))) if mtcall_record.getComponentByName("systemType") is None: system_type = "" else: system_type_tmp = long( str(mtcall_record.getComponentByName("systemType"))) system_type = "" if system_type_tmp == 0: system_type = "unknown" elif system_type_tmp == 1: system_type = "iuUTRAN" elif system_type_tmp == 2: system_type = "gERAN" if mtcall_record.getComponentByName("terminatingRecordType") is None: terminating_record_type = "" else: terminating_record_type_tmp = long( str(mtcall_record.getComponentByName("terminatingRecordType"))) terminating_record_type = "" if terminating_record_type_tmp == 0: terminating_record_type = "ordinaryTerminating" elif terminating_record_type_tmp == 1: terminating_record_type = "forwardOnUnconditionalTerminating" elif terminating_record_type_tmp == 2: terminating_record_type = "forwardOnBusyTerminating" elif terminating_record_type_tmp == 3: terminating_record_type = "forwardOnNotReplyTerminating" elif terminating_record_type_tmp == 4: terminating_record_type = "forwardOnMsNotReachableTerminating" elif terminating_record_type_tmp == 255: terminating_record_type = "forwardOnOtherReasonTerminating" if mtcall_record.getComponentByName( "transactionIdentification") is None: transaction_identification = -255 else: transaction_identification = long( str( mtcall_record.getComponentByName( "transactionIdentification"))) if mtcall_record.getComponentByName("transparencyIndicator") is None: transparency_indicator = "" else: transparency_indicator_tmp = long( str(mtcall_record.getComponentByName("transparencyIndicator"))) transparency_indicator = "" if transparency_indicator_tmp == 0: transparency_indicator = "transparent" elif transparency_indicator_tmp == 1: transparency_indicator = "nonTransparent" if mtcall_record.getComponentByName("typeOfServiceChange") is None: types_of_service_change = "" else: types_of_service_change_tmp = long( str(mtcall_record.getComponentByName("typeOfServiceChange"))) types_of_service_change = "" if types_of_service_change_tmp == 0: types_of_service_change = "changeToSpeech" elif types_of_service_change_tmp == 1: types_of_service_change = "changeToMultimedia" mtcall_record = [ a_release_cause, charge_indicator, charged_party, aiur_requested, answer_time, aoc_parametere1, aoc_parametere2, aoc_parametere3, aoc_parametere4, aoc_parametere5, aoc_parametere6, aoc_parametere7, bsdidentification, basic_service, bsdidentification_24, csfbmt_indicator, cug_category_calltype, cug_category_usertype, cug_incoming_accessind, cug_incoming_accessused, cug_index, cug_interlock_code, call_duration, call_reference, called_party_roamingind, calling_location, calling_number, carp, cause_for_termination, chan_coding_used, change_time, radio_channel, changeofradiochan_speech_version_used, channel_type, connected_number, ddcflag, data_rate, data_volume, default_call_handling, diagnostics, emlpp_priority_level, emlpp_request_priority_level, exchange_identity, file_id, fnur, free_format_data, global_call_reference, gsm_scfaddress, guaranteed_bit_rate, hscsd_chan_allocated, hscsd_chan_requested, hot_billing_tag, hot_billing_tag2, ics_flag, incoming_cic_channel, incoming_cic_pcmunit, incoming_tkgpname, incoming_traffic_type, is_camel_call, is_cug_used, is_hscsd_used, is_multi_media_call, iu_release_cause, last_long_part_ind, location_cellid, location_area_code, location_plmn, location_sac, msc_address, maximumbitrate, milli_sec_duration, ms_classmark, msc_incoming_tkgp, msc_outgoing_tkgp, mscspc14, mscspc24, network_call_reference, operator_id, original_called_number, outgoing_cic_channel, outgoing_cic_pcmunit, outgoing_tkgpname, outgoing_traffic_type, partial_record_type, pbrt, radio_chan_requested, radio_chan_used, rate_indication, reason_for_service_change, record_sequence_number, record_type, recording_entity, redirect_number, redirecting_number, release_time, routing_category, seizure_time, sequence_number, served_imei, served_imsi, served_msisdn, service_category, service_change_initiator, service_key, speech_version_supported, speech_version_used, start_time, subscriber_category, system_type, terminating_record_type, transaction_identification, transparency_indicator, types_of_service_change, long(seizure_time.strftime("%Y%m%d")), long(seizure_time.strftime("%H")) ] return mtcall_record
def process_incgateway_records(incgateway_record, file_id, file_name): additional_chg_info = incgateway_record.getComponentByName( "additionalChgInfo") if additional_chg_info is None: charge_indicator = "" else: charge_indicator = long( str(additional_chg_info.getComponentByName("chargeIndicator"))) if additional_chg_info is None: charged_party = "" else: charged_party_tmp = long( str(additional_chg_info.getComponentByName("chargedParty"))) charged_party = "" if charged_party_tmp == 0: charged_party = "callingAsChargedParty" elif charged_party_tmp == 1: charged_party = "calledAsChargedParty" elif charged_party_tmp == 2: charged_party = "noCharging" elif charged_party_tmp == 3: charged_party = "anotherNumAsChargedParty" answer_time_tmp = binascii.hexlify( str(incgateway_record.getComponentByName("answerTime"))) answer_time = append_timezone_offset(parseTimestamp(answer_time_tmp)) if incgateway_record.getComponentByName("callDuration") is None: call_duration = -255 else: call_duration = long( str(incgateway_record.getComponentByName("callDuration"))) if incgateway_record.getComponentByName("callReference") is None: call_reference = "" else: call_reference = binascii.hexlify( str(incgateway_record.getComponentByName("callReference"))) if incgateway_record.getComponentByName("calledNumber") is None: called_number = "" else: called_number_binascii = binascii.hexlify( str(incgateway_record.getComponentByName("calledNumber"))) called_number_list = [] called_number_data = list(called_number_binascii) for i in xrange(0, len(called_number_data) - 1, 2): called_number_list.append(called_number_data[i + 1] + "" + called_number_data[i]) called_number_concatenated = ''.join(called_number_list) called_number = called_number_concatenated[2:] if incgateway_record.getComponentByName("callingNumber") is None: calling_number = "" else: calling_number_binascii = binascii.hexlify( str(incgateway_record.getComponentByName("callingNumber"))) calling_number_list = [] calling_number_data = list(calling_number_binascii) for i in xrange(0, len(calling_number_data) - 1, 2): calling_number_list.append(calling_number_data[i + 1] + "" + calling_number_data[i]) calling_number_concatenated = ''.join(calling_number_list) calling_number = calling_number_concatenated[2:] cause_for_termination_tmp = long( str(incgateway_record.getComponentByName("causeForTerm"))) cause_for_termination = "" if cause_for_termination_tmp == 0: cause_for_termination = "normalRelease" elif cause_for_termination_tmp == 1: cause_for_termination = "partialRecord" elif cause_for_termination_tmp == 2: cause_for_termination = "partialRecordCallReestablishment" elif cause_for_termination_tmp == 3: cause_for_termination = "unsuccessfulCallAttempt" elif cause_for_termination_tmp == 4: cause_for_termination = "stableCallAbnormalTermination" elif cause_for_termination_tmp == 5: cause_for_termination = "cAMELInitCallRelease" elif cause_for_termination_tmp == 52: cause_for_termination = "unauthorizedRequestingNetwork" elif cause_for_termination_tmp == 53: cause_for_termination = "unauthorizedLCSClient" elif cause_for_termination_tmp == 54: cause_for_termination = "positionMethodFailure" elif cause_for_termination_tmp == 58: cause_for_termination = "unknownOrUnreachableLCSClient" elif cause_for_termination_tmp == 101: cause_for_termination = "cAMELPlayTone" elif cause_for_termination_tmp == 102: cause_for_termination = "changeOfConfDueToCPH" elif cause_for_termination_tmp == 103: cause_for_termination = "falseAnswerCharge" elif cause_for_termination_tmp == 104: cause_for_termination = "failPlayTone" elif cause_for_termination_tmp == 105: cause_for_termination = "releaseForPreemption" if incgateway_record.getComponentByName("connectedNumber") is None: connected_number = "" else: connected_number_binascii = binascii.hexlify( str(incgateway_record.getComponentByName("connectedNumber"))) connected_number_list = [] connected_number_data = list(connected_number_binascii) for i in xrange(0, len(connected_number_data) - 1, 2): connected_number_list.append(connected_number_data[i + 1] + "" + connected_number_data[i]) connected_number_concatenated = ''.join(connected_number_list) connected_number = connected_number_concatenated[2:] if incgateway_record.getComponentByName("dataVolume") is None: data_volume = -255 else: data_volume = long( str(incgateway_record.getComponentByName("dataVolume"))) if incgateway_record.getComponentByName("dDCFlag") is None: ddc_flag = -255 else: ddc_flag = long( str(incgateway_record.getComponentByName("dDCFlag"))) if incgateway_record.getComponentByName("defaultCallHandling") is None: default_call_handling = "" else: default_call_handling_tmp = long( str(incgateway_record.getComponentByName( "defaultCallHandling"))) default_call_handling = "" if default_call_handling_tmp == 0: default_call_handling = "continueCall" elif default_call_handling_tmp == 1: default_call_handling = "releaseCall" if incgateway_record.getComponentByName("defaultCallHandling") is None: default_call_handling2 = "" else: default_call_handling2_tmp = long( str( incgateway_record.getComponentByName( "defaultCallHandling_2"))) default_call_handling2 = "" if default_call_handling2_tmp == 0: default_call_handling2 = "continueCall" elif default_call_handling2_tmp == 1: default_call_handling2 = "releaseCall" if incgateway_record.getComponentByName("diagnostics") is None: diagnostics = "" else: diagnostics = incgateway_record.getComponentByName( "diagnostics").getName() if incgateway_record.getComponentByName("exchangeIdentity") is None: exchange_identity = "" else: exchange_identity = str( incgateway_record.getComponentByName("exchangeIdentity")) if incgateway_record.getComponentByName( "forwardCallIndicator") is None: forward_call_indicator = "" else: forward_call_indicator_tmp = long( str( incgateway_record.getComponentByName( "forwardCallIndicator"))) forward_call_indicator = "" if forward_call_indicator_tmp == 0: forward_call_indicator = "nationalIncoming" elif forward_call_indicator_tmp == 1: forward_call_indicator = "internationalIncoming" elif forward_call_indicator_tmp == 255: forward_call_indicator = "unknown" if incgateway_record.getComponentByName("forwardedToNumber") is None: forwarded_to_number = "" else: forwarded_to_number = str( incgateway_record.getComponentByName("forwardedToNumber")) if incgateway_record.getComponentByName("freeFormatData") is None: free_format_data = "" else: free_format_data = str( incgateway_record.getComponentByName("freeFormatData")) if incgateway_record.getComponentByName( "freeFormatDataAppend") is None: free_format_data_append = "" else: free_format_data_append = str( incgateway_record.getComponentByName("freeFormatDataAppend")) if incgateway_record.getComponentByName( "freeFormatDataAppend_2") is None: free_format_data_append_2 = "" else: free_format_data_append_2 = str( incgateway_record.getComponentByName("freeFormatDataAppend_2")) if incgateway_record.getComponentByName("freeFormatData_2") is None: free_format_data_2 = "" else: free_format_data_2 = str( incgateway_record.getComponentByName("freeFormatData_2")) if incgateway_record.getComponentByName("gatewayRecordType") is None: gateway_record_type = "" else: gateway_record_type_tmp = long( str(incgateway_record.getComponentByName("gatewayRecordType"))) gateway_record_type = "" if gateway_record_type_tmp == 0: gateway_record_type = "gatewayRecord" elif gateway_record_type_tmp == 1: gateway_record_type = "trunkRecord" elif gateway_record_type_tmp == 2: gateway_record_type = "sipRecord" if incgateway_record.getComponentByName("globalCallReference") is None: global_call_reference = "" else: global_call_reference = str( incgateway_record.getComponentByName("globalCallReference")) if incgateway_record.getComponentByName("gsm-SCFAddress") is not None: gsm_scfaddress_binascii = binascii.hexlify( str(incgateway_record.getComponentByName("gsm-SCFAddress"))) gsm_scfaddress_list = [] gsm_scfaddress_data = list(gsm_scfaddress_binascii) for i in xrange(0, len(gsm_scfaddress_data) - 1, 2): gsm_scfaddress_list.append(gsm_scfaddress_data[i + 1] + "" + gsm_scfaddress_data[i]) gsm_scfaddress_concatenated = ''.join(gsm_scfaddress_list) gsm_scfaddress = gsm_scfaddress_concatenated[2:].replace( "f", "") else: gsm_scfaddress = "" if incgateway_record.getComponentByName( "gsm-SCFAddress_2") is not None: gsm_scfaddress_2_binascii = binascii.hexlify( str(incgateway_record.getComponentByName("gsm-SCFAddress_2"))) gsm_scfaddress_2_list = [] gsm_scfaddress_2_data = list(gsm_scfaddress_2_binascii) for i in xrange(0, len(gsm_scfaddress_2_data) - 1, 2): gsm_scfaddress_2_list.append(gsm_scfaddress_2_data[i + 1] + "" + gsm_scfaddress_2_data[i]) gsm_scfaddress_2_concatenated = ''.join(gsm_scfaddress_2_list) gsm_scfaddress_2 = gsm_scfaddress_2_concatenated[2:].replace( "f", "") else: gsm_scfaddress_2 = "" if incgateway_record.getComponentByName( "iMS-Charging-Identifier") is None: ims_charging_identifier = "" else: ims_charging_identifier = str( incgateway_record.getComponentByName( "iMS-Charging-Identifier")) if incgateway_record.getComponentByName("iNAPMNPPortStatus") is None: inapmnpport_status = "" else: inapmnpport_status_tmp = long( str(incgateway_record.getComponentByName("iNAPMNPPortStatus"))) inapmnpport_status = "" if inapmnpport_status_tmp == 1: inapmnpport_status = "unkown" elif inapmnpport_status_tmp == 2: inapmnpport_status = "portedNumber" elif inapmnpport_status_tmp == 3: inapmnpport_status = "nonPortedNumber" if incgateway_record.getComponentByName("iNAPMNPQueryMethod") is None: inapmnquerymethod = "" else: inapmnquerymethod_tmp = long( str(incgateway_record.getComponentByName( "iNAPMNPQueryMethod"))) inapmnquerymethod = "" if inapmnquerymethod_tmp == 1: inapmnquerymethod = "unkown" elif inapmnquerymethod_tmp == 2: inapmnquerymethod = "iNSolution" elif inapmnquerymethod_tmp == 3: inapmnquerymethod = "sRFSolution" if incgateway_record.getComponentByName( "iNAPMNPRoutingNumber") is None: inapmn_routing_number = "" else: inapmn_routing_number = str( incgateway_record.getComponentByName("iNAPMNPRoutingNumber")) incoming_cic = incgateway_record.getComponentByName("incomingCic") if incoming_cic is None: incoming_cic_channel = -255 else: incoming_cic_channel = long( str(incoming_cic.getComponentByName("channel"))) if incoming_cic is None: incoming_cic_pcmunit = -255 else: incoming_cic_pcmunit = long( str(incoming_cic.getComponentByName("pcmUnit"))) if incgateway_record.getComponentByName("incomingTKGPName") is None: incoming_tkgpname = "" else: incoming_tkgpname = str( incgateway_record.getComponentByName("incomingTKGPName")) if incgateway_record.getComponentByName("incomingTrafficType") is None: incoming_traffic_type = "" else: incoming_traffic_type_tmp = long( str(incgateway_record.getComponentByName( "incomingTrafficType"))) incoming_traffic_type = "" if incoming_traffic_type_tmp == 0: incoming_traffic_type = "unknown" elif incoming_traffic_type_tmp == 1: incoming_traffic_type = "localNetworkMobile" elif incoming_traffic_type_tmp == 2: incoming_traffic_type = "localNetworkFixed" elif incoming_traffic_type_tmp == 3: incoming_traffic_type = "externalNetwork" if incgateway_record.getComponentByName("initialCalledNumber") is None: initial_called_number = "" else: initial_called_number = str( incgateway_record.getComponentByName("initialCalledNumber")) is_camel_call_get_value = incgateway_record.getComponentByName( "isCAMELCall") is_camel_call = boolean_value(is_camel_call_get_value) is_inapmnquery_get_value = incgateway_record.getComponentByName( "isINAPMNPQuery") is_inapmnquery = boolean_value(is_inapmnquery_get_value) is_multimedia_call_get_value = incgateway_record.getComponentByName( "isMultiMediaCall") is_multimedia_call = boolean_value(is_multimedia_call_get_value) if incgateway_record.getComponentByName("isdnBasicService") is None: isdn_basicservice = "" else: isdn_basicservice_choice = incgateway_record.getComponentByName( "isdnBasicService") isdn_basicservice_choice_hexvalue = isdn_basicservice_choice.getComponent( ).prettyPrint() if isdn_basicservice_choice_hexvalue == "0x11": isdn_basicservice = "teleservice" else: isdn_basicservice = "bearerservice" last_longpart_ind_get_value = incgateway_record.getComponentByName( "lastLongPartInd") last_longpart_ind = boolean_value(last_longpart_ind_get_value) if incgateway_record.getComponentByName("levelOfCAMELService") is None: level_of_camel_service = "" else: level_of_camel_service = str( incgateway_record.getComponentByName("levelOfCAMELService")) if incgateway_record.getComponentByName("localOfficeForward") is None: local_office_forward = "" else: local_office_forward = str( incgateway_record.getComponentByName("localOfficeForward")) if incgateway_record.getComponentByName("mNPNumber") is None: mnpnumber = "" else: mnpnumber = str(incgateway_record.getComponentByName("mNPNumber")) if incgateway_record.getComponentByName("mNPRoutingNumber") is None: mnp_routingnumber = "" else: mnp_routingnumber = str( incgateway_record.getComponentByName("mNPRoutingNumber")) if incgateway_record.getComponentByName("mSCAddress") is None: msc_address = "" else: msc_address = str( incgateway_record.getComponentByName("mSCAddress")) if incgateway_record.getComponentByName("millisecDuration") is None: milli_sec_duration = -255 else: milli_sec_duration = long( str(incgateway_record.getComponentByName("millisecDuration"))) if incgateway_record.getComponentByName("mscIncomingTKGP") is not None: msc_incoming_tkgp = binascii.hexlify( str(incgateway_record.getComponentByName("mscIncomingTKGP"))) else: msc_incoming_tkgp = "" if incgateway_record.getComponentByName("mscOutgoingTKGP") is not None: msc_outgoing_tkgp = binascii.hexlify( str(incgateway_record.getComponentByName("mscOutgoingTKGP"))) else: msc_outgoing_tkgp = "" if incgateway_record.getComponentByName("mscSPC14") is None: mscspc14 = -255 else: mscspc14 = binascii.hexlify( str(incgateway_record.getComponentByName("mscSPC14"))) if incgateway_record.getComponentByName("mscSPC24") is None: mscspc24 = -255 else: mscspc24 = binascii.hexlify( str(incgateway_record.getComponentByName("mscSPC24"))) if incgateway_record.getComponentByName( "networkCallReference") is None: network_call_reference = "" else: network_call_reference = binascii.hexlify( str( incgateway_record.getComponentByName( "networkCallReference"))) if incgateway_record.getComponentByName( "numberOfDPEncountered") is None: number_of_dpencountered = -255 else: number_of_dpencountered = long( str( incgateway_record.getComponentByName( "numberOfDPEncountered"))) if incgateway_record.getComponentByName("operatorId") is None: operator_id = -255 else: operator_id = long( str(incgateway_record.getComponentByName("operatorId"))) if incgateway_record.getComponentByName("orig-ioi") is None: orig_ioi = "" else: orig_ioi = str(incgateway_record.getComponentByName("orig-ioi")) if incgateway_record.getComponentByName("outPulsedNumber") is None: outpulsed_number = "" else: outpulsed_number = str( incgateway_record.getComponentByName("outPulsedNumber")) outgoing_cic = incgateway_record.getComponentByName("outgoingCic") if outgoing_cic is None: outgoing_cic_channel = -255 else: outgoing_cic_channel = long( str(outgoing_cic.getComponentByName("channel"))) if outgoing_cic is None: outgoing_cic_pcmunit = -255 else: outgoing_cic_pcmunit = long( str(outgoing_cic.getComponentByName("pcmUnit"))) if incgateway_record.getComponentByName("outgoingTKGPName") is None: outgoing_tkgpname = "" else: outgoing_tkgpname = str( incgateway_record.getComponentByName("outgoingTKGPName")) if incgateway_record.getComponentByName("outgoingTrafficType") is None: outgoing_traffic_type = "" else: outgoing_traffic_type_tmp = long( str(incgateway_record.getComponentByName( "outgoingTrafficType"))) outgoing_traffic_type = "" if outgoing_traffic_type_tmp == 0: outgoing_traffic_type = "unknown" elif outgoing_traffic_type_tmp == 1: outgoing_traffic_type = "localNetworkMobile" elif outgoing_traffic_type_tmp == 2: outgoing_traffic_type = "localNetworkFixed" elif outgoing_traffic_type_tmp == 3: outgoing_traffic_type = "externalNetwork" if incgateway_record.getComponentByName("partialRecordType") is None: partial_record_type = "" else: partial_record_type_tmp = long( str(incgateway_record.getComponentByName("partialRecordType"))) partial_record_type = "" if partial_record_type_tmp == 1: partial_record_type = "serviceChange" if incgateway_record.getComponentByName("pbrt") is None: pbrt = -255 else: pbrt = long(str(incgateway_record.getComponentByName("pbrt"))) if incgateway_record.getComponentByName( "reasonForServiceChange") is None: reason_for_service_change = "" else: reason_for_service_change_tmp = long( str( incgateway_record.getComponentByName( "reasonForServiceChange"))) reason_for_service_change = "" if reason_for_service_change_tmp == 0: reason_for_service_change = "msubInitiate" elif reason_for_service_change_tmp == 1: reason_for_service_change = "mscInitiated" elif reason_for_service_change_tmp == 2: reason_for_service_change = "callSetupFallBack" elif reason_for_service_change_tmp == 3: reason_for_service_change = "callSetupChangeOrder" if incgateway_record.getComponentByName( "recordSequenceNumber") is None: record_sequence_number = "" else: record_sequence_number = binascii.hexlify( str( incgateway_record.getComponentByName( "recordSequenceNumber"))) if incgateway_record.getComponentByName("recordType") is None: record_type = -255 else: record_type = long( str(incgateway_record.getComponentByName("recordType"))) if incgateway_record.getComponentByName("recordingEntity") is None: recording_entity = "" else: recording_entity_binascii = binascii.hexlify( str(incgateway_record.getComponentByName("recordingEntity"))) recording_entity_list = [] recording_entity_data = list(recording_entity_binascii) for l in xrange(0, len(recording_entity_data) - 1, 2): recording_entity_list.append(recording_entity_data[l + 1] + "" + recording_entity_data[l]) recording_entity_concatenated = ''.join(recording_entity_list) recording_entity_replace_f = recording_entity_concatenated.replace( "f", "") recording_entity = recording_entity_replace_f[ 2:7] + recording_entity_replace_f[7:] if incgateway_record.getComponentByName("redirectNumber") is None: redirecting_number = "" else: redirecting_number_binascii = binascii.hexlify( str(incgateway_record.getComponentByName("redirectNumber"))) redirecting_number_list = [] redirecting_number_data = list(redirecting_number_binascii) for i in xrange(0, len(redirecting_number_data) - 1, 2): redirecting_number_list.append(redirecting_number_data[i + 1] + "" + redirecting_number_data[i]) redirecting_number_concatenated = ''.join(redirecting_number_list) redirecting_number = redirecting_number_concatenated[2:].replace( "f", "") release_time_tmp = binascii.hexlify( str(incgateway_record.getComponentByName("releaseTime"))) release_time = append_timezone_offset(parseTimestamp(release_time_tmp)) if incgateway_record.getComponentByName("roamingNumber") is None: roaming_number = "" else: roaming_number_binascii = binascii.hexlify( str(incgateway_record.getComponentByName("roamingNumber"))) roaming_number_list = [] roaming_number_data = list(roaming_number_binascii) for i in xrange(0, len(roaming_number_data) - 1, 2): roaming_number_list.append(roaming_number_data[i + 1] + "" + roaming_number_data[i]) roaming_number_concatenated = ''.join(roaming_number_list) roaming_number = roaming_number_concatenated[2:].replace("f", "") seizure_time_tmp = binascii.hexlify( str(incgateway_record.getComponentByName("seizureTime"))) seizure_time = append_timezone_offset(parseTimestamp(seizure_time_tmp)) if incgateway_record.getComponentByName("sequenceNumber") is None: sequence_number = -255 else: sequence_number = long( str(incgateway_record.getComponentByName("sequenceNumber"))) if incgateway_record.getComponentByName( "serviceChangeInitiator") is None: service_change_initiator = -255 else: service_change_initiator = long( str( incgateway_record.getComponentByName( "serviceChangeInitiator"))) if incgateway_record.getComponentByName("serviceKey") is None: service_key = -255 else: service_key = long( str(incgateway_record.getComponentByName("serviceKey"))) if incgateway_record.getComponentByName("serviceKey_2") is None: service_key_2 = -255 else: service_key_2 = long( str(incgateway_record.getComponentByName("serviceKey_2"))) if incgateway_record.getComponentByName("term-ioi") is None: term_ioi = "" else: term_ioi = str(incgateway_record.getComponentByName("term-ioi")) if incgateway_record.getComponentByName("trunkLine") is not None: trunk_line = binascii.hexlify( str(incgateway_record.getComponentByName("trunkLine"))) else: trunk_line = "" if incgateway_record.getComponentByName("typeOfServiceChange") is None: types_of_service_change = "" else: types_of_service_change_tmp = long( str(incgateway_record.getComponentByName( "typeOfServiceChange"))) types_of_service_change = "" if types_of_service_change_tmp == 0: types_of_service_change = "changeToSpeech" elif types_of_service_change_tmp == 1: types_of_service_change = "changeToMultimedia" file_name = file_name if incgateway_record.getComponentByName("startTime") is None: start_time = parse_start_time(file_name) else: start_time_tmp = binascii.hexlify( str(incgateway_record.getComponentByName("startTime"))) start_time = append_timezone_offset(parseTimestamp(start_time_tmp)) incgateway_record = [ charge_indicator, charged_party, answer_time, call_duration, call_reference, called_number, calling_number, cause_for_termination, connected_number, ddc_flag, data_volume, default_call_handling, default_call_handling2, diagnostics, exchange_identity, file_id, forward_call_indicator, forwarded_to_number, free_format_data, free_format_data_append, free_format_data_append_2, free_format_data_2, gateway_record_type, global_call_reference, gsm_scfaddress, gsm_scfaddress_2, ims_charging_identifier, inapmnpport_status, inapmnquerymethod, inapmn_routing_number, incoming_cic_channel, incoming_cic_pcmunit, incoming_tkgpname, incoming_traffic_type, initial_called_number, is_camel_call, is_inapmnquery, is_multimedia_call, isdn_basicservice, last_longpart_ind, level_of_camel_service, local_office_forward, mnpnumber, mnp_routingnumber, msc_address, milli_sec_duration, msc_incoming_tkgp, msc_outgoing_tkgp, mscspc14, mscspc24, network_call_reference, number_of_dpencountered, operator_id, orig_ioi, outpulsed_number, outgoing_cic_channel, outgoing_cic_pcmunit, outgoing_tkgpname, outgoing_traffic_type, partial_record_type, pbrt, reason_for_service_change, record_sequence_number, record_type, recording_entity, redirecting_number, release_time, roaming_number, seizure_time, sequence_number, service_change_initiator, service_key, service_key_2, start_time, term_ioi, trunk_line, types_of_service_change, long(seizure_time.strftime("%Y%m%d")), long(seizure_time.strftime("%H")) ] return incgateway_record
def process_termcamelint_records(termcamelint_record, file_name): answer_time_tmp = binascii.hexlify( str(termcamelint_record.getComponentByName("answerTime"))) answer_time = parseTimestamp(answer_time_tmp) if termcamelint_record.getComponentByName("byPassFlag2") is None: by_pass_flag2 = 0 else: by_pass_flag2 = long( str(termcamelint_record.getComponentByName("byPassFlag2"))) if termcamelint_record.getComponentByName("callDuration") is None: call_duration = 0 else: call_duration = long( str(termcamelint_record.getComponentByName("callDuration"))) called_number_binascii = binascii.hexlify( str(termcamelint_record.getComponentByName("calledNumber"))) called_number_list = [] called_number_data = list(called_number_binascii) for i in xrange(0, len(called_number_data) - 1, 2): called_number_list.append(called_number_data[i + 1] + "" + called_number_data[i]) called_number_concatenated = ''.join(called_number_list) called_number = called_number_concatenated[2:] calling_number_binascii = binascii.hexlify( str(termcamelint_record.getComponentByName("callingNumber"))) calling_number_list = [] calling_number_data = list(calling_number_binascii) for i in xrange(0, len(calling_number_data) - 1, 2): calling_number_list.append(calling_number_data[i + 1] + "" + calling_number_data[i]) calling_number_concatenated = ''.join(calling_number_list) calling_number = calling_number_concatenated[2:] call_reference = binascii.hexlify( str(termcamelint_record.getComponentByName("callReference"))) if termcamelint_record.getComponentByName("causeForTerm") is None: cause_for_termination = "" else: cause_for_termination_tmp = long( str(termcamelint_record.getComponentByName("causeForTerm"))) cause_for_termination = "" if cause_for_termination_tmp == 0: cause_for_termination = "normalRelease" elif cause_for_termination_tmp == 1: cause_for_termination = "partialRecord" elif cause_for_termination_tmp == 2: cause_for_termination = "partialRecordCallReestablishment" elif cause_for_termination_tmp == 3: cause_for_termination = "unsuccessfulCallAttempt" elif cause_for_termination_tmp == 4: cause_for_termination = "stableCallAbnormalTermination" elif cause_for_termination_tmp == 5: cause_for_termination = "cAMELInitCallRelease" elif cause_for_termination_tmp == 52: cause_for_termination = "unauthorizedRequestingNetwork" elif cause_for_termination_tmp == 53: cause_for_termination = "unauthorizedLCSClient" elif cause_for_termination_tmp == 54: cause_for_termination = "positionMethodFailure" elif cause_for_termination_tmp == 58: cause_for_termination = "unknownOrUnreachableLCSClient" elif cause_for_termination_tmp == 101: cause_for_termination = "cAMELPlayTone" elif cause_for_termination_tmp == 102: cause_for_termination = "changeOfConfDueToCPH" elif cause_for_termination_tmp == 103: cause_for_termination = "falseAnswerCharge" elif cause_for_termination_tmp == 104: cause_for_termination = "failPlayTone" elif cause_for_termination_tmp == 105: cause_for_termination = "releaseForPreemption" if termcamelint_record.getComponentByName("dataVolume") is None: data_volume = 0 else: data_volume = long( str(termcamelint_record.getComponentByName("dataVolume"))) if termcamelint_record.getComponentByName( "defaultCallHandling") is None: default_call_handling = "" else: default_call_handling_tmp = long( str( termcamelint_record.getComponentByName( "defaultCallHandling"))) default_call_handling = "" if default_call_handling_tmp == 0: default_call_handling = "continueCall" elif default_call_handling_tmp == 1: default_call_handling = "releaseCall" if termcamelint_record.getComponentByName( "defaultCallHandling_2") is None: default_call_handling2 = "" else: default_call_handling2_tmp = str( termcamelint_record.getComponentByName( "defaultCallHandling_2")) default_call_handling2 = "" if default_call_handling2_tmp == 0: default_call_handling2 = "continueCall" elif default_call_handling2_tmp == 1: default_call_handling2 = "releaseCall" destination_routing_address = str( termcamelint_record.getComponentByName( "destinationRoutingAddress")) if termcamelint_record.getComponentByName("diagnostics") is None: diagnostics = "" else: diagnostics = str( termcamelint_record.getComponentByName("diagnostics")) exchange_identity = str( termcamelint_record.getComponentByName("exchangeIdentity")) file_name = file_name free_format_data = str( termcamelint_record.getComponentByName("freeFormatData")) free_format_data_append = str( termcamelint_record.getComponentByName("freeFormatDataAppend")) free_format_data_append_2 = str( termcamelint_record.getComponentByName("freeFormatDataAppend_2")) free_format_data_2 = str( termcamelint_record.getComponentByName("freeFormatData_2")) global_call_reference = str( termcamelint_record.getComponentByName("globalCallReference")) if termcamelint_record.getComponentByName( "gsm-SCFAddress") is not None: gsm_scfaddress_binascii = binascii.hexlify( str(termcamelint_record.getComponentByName("gsm-SCFAddress"))) gsm_scfaddress_list = [] gsm_scfaddress_data = list(gsm_scfaddress_binascii) for i in xrange(0, len(gsm_scfaddress_data) - 1, 2): gsm_scfaddress_list.append(gsm_scfaddress_data[i + 1] + "" + gsm_scfaddress_data[i]) gsm_scfaddress_concatenated = ''.join(gsm_scfaddress_list) gsm_scfaddress = gsm_scfaddress_concatenated[2:].replace( "f", "") else: gsm_scfaddress = "" if termcamelint_record.getComponentByName( "gsm-SCFAddress_2") is not None: gsm_scfaddress_2_binascii = binascii.hexlify( str(termcamelint_record.getComponentByName( "gsm-SCFAddress_2"))) gsm_scfaddress_2_list = [] gsm_scfaddress_2_data = list(gsm_scfaddress_2_binascii) for j in xrange(0, len(gsm_scfaddress_2_data) - 1, 2): gsm_scfaddress_2_list.append(gsm_scfaddress_2_data[j + 1] + "" + gsm_scfaddress_2_data[j]) gsm_scfaddress_2_concatenated = ''.join(gsm_scfaddress_2_list) gsm_scfaddress_2 = gsm_scfaddress_2_concatenated[2:].replace( "f", "") else: gsm_scfaddress_2 = "" if termcamelint_record.getComponentByName("hotBillingTag2") is None: hot_billing_tag2 = 0 else: hot_billing_tag2 = long( str(termcamelint_record.getComponentByName("hotBillingTag2"))) incoming_cic = termcamelint_record.getComponentByName("incomingCic") if incoming_cic is None: incoming_cic_channel = 0 else: incoming_cic_channel = long( str(incoming_cic.getComponentByName("channel"))) if incoming_cic is None: incoming_cic_pcmunit = 0 else: incoming_cic_pcmunit = long( str(incoming_cic.getComponentByName("pcmUnit"))) incoming_tkgpname = str( termcamelint_record.getComponentByName("incomingTKGPName")) if termcamelint_record.getComponentByName( "incomingTrafficType") is None: incoming_traffic_type = "" else: incoming_traffic_type_tmp = long( str( termcamelint_record.getComponentByName( "incomingTrafficType"))) incoming_traffic_type = "" if incoming_traffic_type_tmp == 0: incoming_traffic_type = "unknown" elif incoming_traffic_type_tmp == 1: incoming_traffic_type = "localNetworkMobile" elif incoming_traffic_type_tmp == 2: incoming_traffic_type = "localNetworkFixed" elif incoming_traffic_type_tmp == 3: incoming_traffic_type = "externalNetwork" interrogation_time_tmp = binascii.hexlify( str(termcamelint_record.getComponentByName("interrogationTime"))) interrogation_time = parseTimestamp(interrogation_time_tmp) last_long_part_ind = str( termcamelint_record.getComponentByName("lastLongPartInd")) level_of_camel_service = str( termcamelint_record.getComponentByName("levelOfCAMELService")) if termcamelint_record.getComponentByName("millisecDuration") is None: milli_sec_duration = 0 else: milli_sec_duration = long( str(termcamelint_record.getComponentByName( "millisecDuration"))) msc_address = str(termcamelint_record.getComponentByName("mSCAddress")) msc_incoming_tkgp = binascii.hexlify( str(termcamelint_record.getComponentByName("mscIncomingTKGP"))) if termcamelint_record.getComponentByName("mscOutgoingTKGP") is None: msc_outgoing_tkgp = 0 else: msc_outgoing_tkgp = binascii.hexlify( str(termcamelint_record.getComponentByName("mscOutgoingTKGP"))) msc_server_indication = str( termcamelint_record.getComponentByName("mscServerIndication")) mscspc14_tmp = binascii.hexlify( str(termcamelint_record.getComponentByName("mscSPC14"))) mscspc24_tmp = binascii.hexlify( str(termcamelint_record.getComponentByName("mscSPC24"))) if termcamelint_record.getComponentByName( "networkCallReference") is None: network_call_reference = "" else: network_call_reference = binascii.hexlify( str( termcamelint_record.getComponentByName( "networkCallReference"))) if termcamelint_record.getComponentByName( "numberOfDPEncountered") is None: number_of_dpencountered = 0 else: number_of_dpencountered = long( str( termcamelint_record.getComponentByName( "numberOfDPEncountered"))) if termcamelint_record.getComponentByName("operatorId") is None: operator_id = 0 else: operator_id = long( str(termcamelint_record.getComponentByName("operatorId"))) outgoing_cic = termcamelint_record.getComponentByName("outgoingCic") if outgoing_cic is None: outgoing_cic_channel = 0 else: outgoing_cic_channel = long( str(outgoing_cic.getComponentByName("channel"))) if outgoing_cic is None: outgoing_cic_pcmunit = 0 else: outgoing_cic_pcmunit = long( str(outgoing_cic.getComponentByName("pcmUnit"))) outgoing_tkgpname = str( termcamelint_record.getComponentByName("outgoingTKGPName")) if termcamelint_record.getComponentByName( "outgoingTrafficType") is None: outgoing_traffic_type = "" else: outgoing_traffic_type_tmp = long( str( termcamelint_record.getComponentByName( "outgoingTrafficType"))) outgoing_traffic_type = "" if outgoing_traffic_type_tmp == 0: outgoing_traffic_type = "unknown" elif outgoing_traffic_type_tmp == 1: outgoing_traffic_type = "localNetworkMobile" elif outgoing_traffic_type_tmp == 2: outgoing_traffic_type = "localNetworkFixed" elif outgoing_traffic_type_tmp == 3: outgoing_traffic_type = "externalNetwork" recording_entity_binascii = binascii.hexlify( str(termcamelint_record.getComponentByName("recordingEntity"))) recording_entity_list = [] recording_entity_data = list(recording_entity_binascii) for l in xrange(0, len(recording_entity_data) - 1, 2): recording_entity_list.append(recording_entity_data[l + 1] + "" + recording_entity_data[l]) recording_entity_concatenated = ''.join(recording_entity_list) recording_entity_replace_f = recording_entity_concatenated.replace( "f", "") recording_entity = recording_entity_replace_f[ 2:7] + recording_entity_replace_f[7:] record_sequence_number = binascii.hexlify( str(termcamelint_record.getComponentByName( "recordSequenceNumber"))) record_type = long( str(termcamelint_record.getComponentByName("recordType"))) release_time_tmp = binascii.hexlify( str(termcamelint_record.getComponentByName("releaseTime"))) release_time = parseTimestamp(release_time_tmp) seizure_time_tmp = binascii.hexlify( str(termcamelint_record.getComponentByName("seizureTime"))) seizure_time = parseTimestamp(seizure_time_tmp) if termcamelint_record.getComponentByName("sequenceNumber") is None: sequence_number = 0 else: sequence_number = long( str(termcamelint_record.getComponentByName("sequenceNumber"))) served_imsi_binascii = binascii.hexlify( str(termcamelint_record.getComponentByName("servedIMSI"))) served_imsi_list = [] served_imsi_data = list(served_imsi_binascii) for j in xrange(0, len(served_imsi_data) - 1, 2): served_imsi_list.append(served_imsi_data[j + 1] + "" + served_imsi_data[j]) served_imsi_concatenated = ''.join(served_imsi_list) served_imsi = served_imsi_concatenated.replace("f", "") served_msisdn_binascii = binascii.hexlify( str(termcamelint_record.getComponentByName("servedMSISDN"))) served_msisdn_list = [] served_msisdn_data = list(served_msisdn_binascii) for k in xrange(0, len(served_msisdn_data) - 1, 2): served_msisdn_list.append(served_msisdn_data[k + 1] + "" + served_msisdn_data[k]) served_msisdn_concatenated = ''.join(served_msisdn_list) served_msisdn_replace_f = served_msisdn_concatenated.replace("f", "") served_msisdn = served_msisdn_replace_f.replace( served_msisdn_replace_f[:3], '') if termcamelint_record.getComponentByName("serviceKey") is None: service_key = 0 else: service_key = long( str(termcamelint_record.getComponentByName("serviceKey"))) if termcamelint_record.getComponentByName("serviceKey_2") is None: service_key_2 = 0 else: service_key_2 = long( str(termcamelint_record.getComponentByName("serviceKey_2"))) start_time = parseTimestamp('1606151210002d0700') termcamelint_record = [ answer_time, by_pass_flag2, call_duration, called_number, calling_number, call_reference, cause_for_termination, data_volume, default_call_handling, default_call_handling2, destination_routing_address, diagnostics, exchange_identity, file_name, free_format_data, free_format_data_2, free_format_data_append, free_format_data_append_2, global_call_reference, gsm_scfaddress, gsm_scfaddress_2, hot_billing_tag2, incoming_cic_channel, incoming_cic_pcmunit, incoming_tkgpname, incoming_traffic_type, interrogation_time, last_long_part_ind, level_of_camel_service, milli_sec_duration, msc_address, msc_incoming_tkgp, msc_outgoing_tkgp, msc_server_indication, mscspc14_tmp, mscspc24_tmp, network_call_reference, number_of_dpencountered, operator_id, outgoing_cic_channel, outgoing_cic_pcmunit, outgoing_tkgpname, outgoing_traffic_type, recording_entity, record_sequence_number, record_type, release_time, seizure_time, sequence_number, served_imsi, served_msisdn, service_key, service_key_2, start_time ] return termcamelint_record
def process_commonequip_records(commonequip_record, file_id, file_name): if commonequip_record.getComponentByName("recordType") is None: record_type = -255 else: record_type = long(str(commonequip_record.getComponentByName("recordType"))) if commonequip_record.getComponentByName("equipmentType") is None: equipment_type = "" else: equipment_type = str(commonequip_record.getComponentByName("equipmentType")) if commonequip_record.getComponentByName("equipmentId") is None: equipment_id = -255 else: equipment_id = long(str(commonequip_record.getComponentByName("equipmentId"))) if commonequip_record.getComponentByName("servedIMSI") is None: served_imsi = "" else: served_imsi_binascii = binascii.hexlify(str(commonequip_record.getComponentByName("servedIMSI"))) served_imsi_list = [] served_imsi_data = list(served_imsi_binascii) for j in xrange(0, len(served_imsi_data) - 1, 2): served_imsi_list.append(served_imsi_data[j+1] + "" + served_imsi_data[j]) served_imsi_concatenated = ''.join(served_imsi_list) served_imsi = served_imsi_concatenated.replace("f", "") if commonequip_record.getComponentByName("servedMSISDN") is None: served_msisdn = "" else: served_msisdn_binascii = binascii.hexlify(str(commonequip_record.getComponentByName("servedMSISDN"))) served_msisdn_list = [] served_msisdn_data = list(served_msisdn_binascii) for k in xrange(0, len(served_msisdn_data) - 1, 2): served_msisdn_list.append(served_msisdn_data[k+1] + "" + served_msisdn_data[k]) served_msisdn_concatenated = ''.join(served_msisdn_list) served_msisdn_replace_f = served_msisdn_concatenated.replace("f", "") served_msisdn = served_msisdn_replace_f.replace(served_msisdn_replace_f[:3], '') if commonequip_record.getComponentByName("recordingEntity") is None: recording_entity = "" else: recording_entity_binascii = binascii.hexlify(str(commonequip_record.getComponentByName("recordingEntity"))) recording_entity_list = [] recording_entity_data = list(recording_entity_binascii) for l in xrange(0, len(recording_entity_data) - 1, 2): recording_entity_list.append(recording_entity_data[l+1] + "" + recording_entity_data[l]) recording_entity_concatenated = ''.join(recording_entity_list) recording_entity_replace_f = recording_entity_concatenated.replace("f", "") recording_entity = recording_entity_replace_f[2:7] + recording_entity_replace_f[7:] if commonequip_record.getComponentByName("basicService") is None: basic_service = "" else: basic_service_choice = commonequip_record.getComponentByName("basicService") basic_service_choice_hexvalue = basic_service_choice.getComponent().prettyPrint() if basic_service_choice_hexvalue == "0x11": basic_service = "teleservice" else: basic_service = "bearerservice" seizure_time_tmp = binascii.hexlify(str(commonequip_record.getComponentByName("seizureTime"))) seizure_time = append_timezone_offset(parseTimestamp(seizure_time_tmp)) release_time_tmp = binascii.hexlify(str(commonequip_record.getComponentByName("releaseTime"))) release_time = append_timezone_offset(parseTimestamp(release_time_tmp)) if commonequip_record.getComponentByName("callDuration") is None: call_duration = -255 else: call_duration = long(str(commonequip_record.getComponentByName("callDuration"))) if commonequip_record.getComponentByName("callReference") is None: call_reference = "" else: call_reference = binascii.hexlify(str(commonequip_record.getComponentByName("callReference"))) if commonequip_record.getComponentByName("sequenceNumber") is None: sequence_number = -255 else: sequence_number = long(str(commonequip_record.getComponentByName("sequenceNumber"))) last_long_part_ind_get_value = commonequip_record.getComponentByName("lastLongPartInd") last_long_part_ind = boolean_value(last_long_part_ind_get_value) if commonequip_record.getComponentByName("exchangeIdentity") is None: exchange_identity = "" else: exchange_identity = str(commonequip_record.getComponentByName("exchangeIdentity")) if commonequip_record.getComponentByName("recordSequenceNumber") is None: record_sequence_number = "" else: record_sequence_number = binascii.hexlify(str(commonequip_record.getComponentByName("recordSequenceNumber"))) if commonequip_record.getComponentByName("systemType") is None: system_type = "" else: system_type_tmp = long(str(commonequip_record.getComponentByName("systemType"))) system_type = "" if system_type_tmp == 0: system_type = "unknown" elif system_type_tmp == 1: system_type = "iuUTRAN" elif system_type_tmp == 2: system_type = "gERAN" if commonequip_record.getComponentByName("rateIndication") is None: rate_indication = "" else: rate_indication = str(commonequip_record.getComponentByName("rateIndication")) if commonequip_record.getComponentByName("fnur") is None: fnur = "" else: fnur_tmp = str(long(commonequip_record.getComponentByName("fnur"))) if fnur_tmp == "": fnur = "fnur9600-BitsPerSecond" elif fnur_tmp == 1: fnur = "fnur14400BitsPerSecond" elif fnur_tmp == 2: fnur = "fnur19200BitsPerSecond" elif fnur_tmp == 3: fnur = "fnur14400BitsPerSecond" elif fnur_tmp == 4: fnur = "fnur28800BitsPerSecond" elif fnur_tmp == 5: fnur = "fnur38400BitsPerSecond" elif fnur_tmp == 6: fnur = "fnur48000BitsPerSecond" elif fnur_tmp == 7: fnur = "fnur56000BitsPerSecond" elif fnur_tmp == 8: fnur = "fnur64000BitsPerSecond" elif fnur_tmp == 9: fnur = "fnur33600BitsPerSecond" elif fnur_tmp == 10: fnur = "fnur32000BitsPerSecond" if commonequip_record.getComponentByName("hotBillingTag2") is None: hot_billing_tag2 = -255 else: hot_billing_tag2 = long(str(commonequip_record.getComponentByName("hotBillingTag2"))) if commonequip_record.getComponentByName("millisecDuration") is None: milli_sec_duration = -255 else: milli_sec_duration = long(str(commonequip_record.getComponentByName("millisecDuration"))) if commonequip_record.getComponentByName("operatorId") is None: operator_id = -255 else: operator_id = long(str(commonequip_record.getComponentByName("operatorId"))) commonequip_record = [basic_service, call_duration, call_reference, equipment_id, equipment_type, exchange_identity, file_id, fnur, hot_billing_tag2, last_long_part_ind, milli_sec_duration, operator_id, rate_indication, record_sequence_number, record_type, recording_entity, release_time, seizure_time, sequence_number, served_imsi, served_msisdn, system_type, long(seizure_time.strftime("%Y%m%d")), long(seizure_time.strftime("%H"))] return commonequip_record
def process_nilcs_records(nilcs_record, file_name): additional_chg_info = nilcs_record.getComponentByName( "additionalChgInfo") if additional_chg_info is None: charge_indicator = "" else: charge_indicator = str( additional_chg_info.getComponentByName("chargeIndicator")) if additional_chg_info is None: charged_party = "" else: charged_party_tmp = long( str(additional_chg_info.getComponentByName("chargedParty"))) charged_party = "" if charged_party_tmp == 0: charged_party = "callingAsChargedParty" elif charged_party_tmp == 1: charged_party = "calledAsChargedParty" elif charged_party_tmp == 2: charged_party = "noCharging" elif charged_party_tmp == 3: charged_party = "anotherNumAsChargedParty" if nilcs_record.getComponentByName("causeForTerm") is None: cause_for_termination = "" else: cause_for_termination_tmp = long( str(nilcs_record.getComponentByName("causeForTerm"))) cause_for_termination = "" if cause_for_termination_tmp == 0: cause_for_termination = "normalRelease" elif cause_for_termination_tmp == 1: cause_for_termination = "partialRecord" elif cause_for_termination_tmp == 2: cause_for_termination = "partialRecordCallReestablishment" elif cause_for_termination_tmp == 3: cause_for_termination = "unsuccessfulCallAttempt" elif cause_for_termination_tmp == 4: cause_for_termination = "stableCallAbnormalTermination" elif cause_for_termination_tmp == 5: cause_for_termination = "cAMELInitCallRelease" elif cause_for_termination_tmp == 52: cause_for_termination = "unauthorizedRequestingNetwork" elif cause_for_termination_tmp == 53: cause_for_termination = "unauthorizedLCSClient" elif cause_for_termination_tmp == 54: cause_for_termination = "positionMethodFailure" elif cause_for_termination_tmp == 58: cause_for_termination = "unknownOrUnreachableLCSClient" elif cause_for_termination_tmp == 101: cause_for_termination = "cAMELPlayTone" elif cause_for_termination_tmp == 102: cause_for_termination = "changeOfConfDueToCPH" elif cause_for_termination_tmp == 103: cause_for_termination = "falseAnswerCharge" elif cause_for_termination_tmp == 104: cause_for_termination = "failPlayTone" elif cause_for_termination_tmp == 105: cause_for_termination = "releaseForPreemption" if nilcs_record.getComponentByName("diagnostics") is None: diagnostics = "" else: diagnostics = str(nilcs_record.getComponentByName("diagnostics")) ems_digits = str(nilcs_record.getComponentByName("emsDigits")) ems_key = str(nilcs_record.getComponentByName("emsKey")) event_timestamp_tmp = binascii.hexlify( str(nilcs_record.getComponentByName("eventTimeStamp"))) event_timestamp = parseTimestamp(event_timestamp_tmp) file_name = file_name if nilcs_record.getComponentByName("hotBillingTag") is None: hot_billing_tag = 0 else: hot_billing_tag = long( str(nilcs_record.getComponentByName("hotBillingTag"))) if nilcs_record.getComponentByName("hotBillingTag2") is None: hot_billing_tag2 = 0 else: hot_billing_tag2 = long( str(nilcs_record.getComponentByName("hotBillingTag2"))) lcs_cause = str(nilcs_record.getComponentByName("lcsCause")) lcs_client_identity = nilcs_record.getComponentByName( "lcsClientIdentity") if lcs_client_identity is None: lcs_client_external_address = "" else: lcs_client_external_address = str( lcs_client_identity.getComponentByName("externalAddress")) if lcs_client_identity is None: lcs_client_dialedbyms = "" else: lcs_client_dialedbyms = str( lcs_client_identity.getComponentByName("lcsClientDialedByMS")) if lcs_client_identity is None: lcs_client_internalid = "" else: lcs_client_internalid = str( lcs_client_identity.getComponentByName("lcsClientInternalID")) if nilcs_record.getComponentByName("lcsClientType") is None: lcs_clienttype = "" else: lcs_clienttype_tmp = long( str(nilcs_record.getComponentByName("lcsClientType"))) lcs_clienttype = "" if lcs_clienttype_tmp == 0: lcs_clienttype = "emergencyServices" elif lcs_clienttype_tmp == 1: lcs_clienttype = "valueAddedServices" elif lcs_clienttype_tmp == 2: lcs_clienttype = "plmnOperatorServices" elif lcs_clienttype_tmp == 3: lcs_clienttype = "lawfulInterceptServices" lcs_priority = str(nilcs_record.getComponentByName("lcsPriority")) lcs_qos = binascii.hexlify( str(nilcs_record.getComponentByName("lcsQos"))) location_estimate = str( nilcs_record.getComponentByName("locationEstimate")) if nilcs_record.getComponentByName("measureDuration") is None: measure_duration = 0 else: measure_duration = long( str(nilcs_record.getComponentByName("measureDuration"))) mlc_number_binascii = binascii.hexlify( str(nilcs_record.getComponentByName("mlc-Number"))) mlc_number_list = [] mlc_number_data = list(mlc_number_binascii) for k in xrange(0, len(mlc_number_data) - 1, 2): mlc_number_list.append(mlc_number_data[k + 1] + "" + mlc_number_data[k]) mlc_number_concatenated = ''.join(mlc_number_list) mlc_number = mlc_number_concatenated[2:].replace("f", "") if nilcs_record.getComponentByName("operatorId") is None: operator_id = 0 else: operator_id = long( str(nilcs_record.getComponentByName("operatorId"))) positioning_data = str( nilcs_record.getComponentByName("positioningData")) recording_entity_binascii = binascii.hexlify( str(nilcs_record.getComponentByName("recordingEntity"))) recording_entity_list = [] recording_entity_data = list(recording_entity_binascii) for l in xrange(0, len(recording_entity_data) - 1, 2): recording_entity_list.append(recording_entity_data[l + 1] + "" + recording_entity_data[l]) recording_entity_concatenated = ''.join(recording_entity_list) recording_entity_replace_f = recording_entity_concatenated.replace( "f", "") recording_entity = recording_entity_replace_f[ 2:7] + recording_entity_replace_f[7:] record_sequence_number = binascii.hexlify( str(nilcs_record.getComponentByName("recordSequenceNumber"))) record_type = long(str(nilcs_record.getComponentByName("recordType"))) served_imei_binascii = binascii.hexlify( str(nilcs_record.getComponentByName("servedIMEI"))) served_imei_list = [] served_imei_data = list(served_imei_binascii) for i in xrange(0, len(served_imei_data) - 1, 2): served_imei_list.append(served_imei_data[i + 1] + "" + served_imei_data[i]) served_imei_concatenated = ''.join(served_imei_list) served_imei = served_imei_concatenated.replace("f", "") served_imsi_binascii = binascii.hexlify( str(nilcs_record.getComponentByName("servedIMSI"))) served_imsi_list = [] served_imsi_data = list(served_imsi_binascii) for j in xrange(0, len(served_imsi_data) - 1, 2): served_imsi_list.append(served_imsi_data[j + 1] + "" + served_imsi_data[j]) served_imsi_concatenated = ''.join(served_imsi_list) served_imsi = served_imsi_concatenated.replace("f", "") served_msisdn_binascii = binascii.hexlify( str(nilcs_record.getComponentByName("servedMSISDN"))) served_msisdn_list = [] served_msisdn_data = list(served_msisdn_binascii) for k in xrange(0, len(served_msisdn_data) - 1, 2): served_msisdn_list.append(served_msisdn_data[k + 1] + "" + served_msisdn_data[k]) served_msisdn_concatenated = ''.join(served_msisdn_list) served_msisdn_replace_f = served_msisdn_concatenated.replace("f", "") served_msisdn = served_msisdn_replace_f.replace( served_msisdn_replace_f[:3], '') if nilcs_record.getComponentByName("systemType") is None: system_type = "" else: system_type_tmp = long( str(nilcs_record.getComponentByName("systemType"))) system_type = "" if system_type_tmp == 0: system_type = "unknown" elif system_type_tmp == 1: system_type = "iuUTRAN" elif system_type_tmp == 2: system_type = "gERAN" nilcs_record = [ charged_party, charge_indicator, cause_for_termination, diagnostics, ems_digits, ems_key, event_timestamp, file_name, hot_billing_tag, hot_billing_tag2, lcs_cause, lcs_client_external_address, lcs_client_dialedbyms, lcs_client_internalid, lcs_clienttype, lcs_priority, lcs_qos, location_estimate, measure_duration, mlc_number, operator_id, positioning_data, recording_entity, record_sequence_number, record_type, served_imei, served_imsi, served_msisdn, system_type ] return nilcs_record
def process_vig_records(vig_record, file_name): call_data_rate = str(vig_record.getComponent("callDataRate")) if vig_record.getComponentByName("callDuration") is None: call_duration = 0 else: call_duration = long( str(vig_record.getComponentByName("callDuration"))) called_number_binascii = binascii.hexlify( str(vig_record.getComponentByName("calledNumber"))) called_number_list = [] called_number_data = list(called_number_binascii) for i in xrange(0, len(called_number_data) - 1, 2): called_number_list.append(called_number_data[i + 1] + "" + called_number_data[i]) called_number_concatenated = ''.join(called_number_list) called_number = called_number_concatenated[2:] calling_number_binascii = binascii.hexlify( str(vig_record.getComponentByName("callingNumber"))) calling_number_list = [] calling_number_data = list(calling_number_binascii) for i in xrange(0, len(calling_number_data) - 1, 2): calling_number_list.append(calling_number_data[i + 1] + "" + calling_number_data[i]) calling_number_concatenated = ''.join(calling_number_list) calling_number = calling_number_concatenated[2:] call_reference = binascii.hexlify( str(vig_record.getComponentByName("callReference"))) if vig_record.getComponentByName("causeForTerm") is None: cause_for_termination = "" else: cause_for_termination_tmp = long( str(vig_record.getComponentByName("causeForTerm"))) cause_for_termination = "" if cause_for_termination_tmp == 0: cause_for_termination = "normalRelease" elif cause_for_termination_tmp == 1: cause_for_termination = "partialRecord" elif cause_for_termination_tmp == 2: cause_for_termination = "partialRecordCallReestablishment" elif cause_for_termination_tmp == 3: cause_for_termination = "unsuccessfulCallAttempt" elif cause_for_termination_tmp == 4: cause_for_termination = "stableCallAbnormalTermination" elif cause_for_termination_tmp == 5: cause_for_termination = "cAMELInitCallRelease" elif cause_for_termination_tmp == 52: cause_for_termination = "unauthorizedRequestingNetwork" elif cause_for_termination_tmp == 53: cause_for_termination = "unauthorizedLCSClient" elif cause_for_termination_tmp == 54: cause_for_termination = "positionMethodFailure" elif cause_for_termination_tmp == 58: cause_for_termination = "unknownOrUnreachableLCSClient" elif cause_for_termination_tmp == 101: cause_for_termination = "cAMELPlayTone" elif cause_for_termination_tmp == 102: cause_for_termination = "changeOfConfDueToCPH" elif cause_for_termination_tmp == 103: cause_for_termination = "falseAnswerCharge" elif cause_for_termination_tmp == 104: cause_for_termination = "failPlayTone" elif cause_for_termination_tmp == 105: cause_for_termination = "releaseForPreemption" if vig_record.getComponentByName("diagnostics") is None: diagnostics = "" else: diagnostics = str(vig_record.getComponentByName("diagnostics")) end_time_tmp = binascii.hexlify( str(vig_record.getComponentByName("endTime"))) end_time = parseTimestamp(end_time_tmp) exchange_identity = str( vig_record.getComponentByName("exchangeIdentity")) last_long_part_ind = str( vig_record.getComponentByName("lastLongPartInd")) if vig_record.getComponentByName("millisecDuration") is None: milli_sec_duration = 0 else: milli_sec_duration = long( str(vig_record.getComponentByName("millisecDuration"))) record_sequence_number = binascii.hexlify( str(vig_record.getComponentByName("recordSequenceNumber"))) if vig_record.getComponentByName("recordType") is None: record_type = 0 else: record_type = long(str( vig_record.getComponentByName("recordType"))) if vig_record.getComponentByName("sequenceNumber") is None: sequence_number = 0 else: sequence_number = long( str(vig_record.getComponentByName("sequenceNumber"))) start_time_tmp = binascii.hexlify( str(vig_record.getComponentByName("startTime"))) start_time = parseTimestamp('1606151210002d0700') if vig_record.getComponentByName("vigCallType") is None: vig_call_type = "" else: vig_call_type_tmp = long( str(vig_record.getComponentByName("vigCallType"))) vig_call_type = "" if vig_call_type_tmp == 0: vig_call_type = "normalRelease" elif vig_call_type_tmp == 1: vig_call_type = "partialRecord" vig_record = [ call_data_rate, call_duration, called_number, calling_number, call_reference, cause_for_termination, diagnostics, end_time, exchange_identity, last_long_part_ind, milli_sec_duration, record_sequence_number, record_type, sequence_number, start_time, vig_call_type ] return vig_record
def process_mcfcph_records(mcfcph_record, file_name): additional_chg_info = mcfcph_record.getComponentByName( "additionalChgInfo") if additional_chg_info is None: charge_indicator = "" else: charge_indicator = str( additional_chg_info.getComponentByName("chargeIndicator")) if additional_chg_info is None: charged_party = "" else: charged_party_tmp = long( str(additional_chg_info.getComponentByName("chargedParty"))) charged_party = "" if charged_party_tmp == 0: charged_party = "callingAsChargedParty" elif charged_party_tmp == 1: charged_party = "calledAsChargedParty" elif charged_party_tmp == 2: charged_party = "noCharging" elif charged_party_tmp == 3: charged_party = "anotherNumAsChargedParty" answer_time_tmp = binascii.hexlify( str(mcfcph_record.getComponentByName("answerTime"))) answer_time = parseTimestamp(answer_time_tmp) if mcfcph_record.getComponentByName("basicService") is None: basic_service = "" else: basic_service_choice = mcfcph_record.getComponentByName( "basicService") basic_service_choice_hexvalue = basic_service_choice.getComponent( ).prettyPrint() if basic_service_choice_hexvalue == "0x11": basic_service = "teleservice" else: basic_service = "bearerservice" if mcfcph_record.getComponentByName("callDuration") is None: call_duration = 0 else: call_duration = long( str(mcfcph_record.getComponentByName("callDuration"))) called_number_binascii = binascii.hexlify( str(mcfcph_record.getComponentByName("calledNumber"))) called_number_list = [] called_number_data = list(called_number_binascii) for i in xrange(0, len(called_number_data) - 1, 2): called_number_list.append(called_number_data[i + 1] + "" + called_number_data[i]) called_number_concatenated = ''.join(called_number_list) called_number = called_number_concatenated[2:] calling_number_binascii = binascii.hexlify( str(mcfcph_record.getComponentByName("callingNumber"))) calling_number_list = [] calling_number_data = list(calling_number_binascii) for i in xrange(0, len(calling_number_data) - 1, 2): calling_number_list.append(calling_number_data[i + 1] + "" + calling_number_data[i]) calling_number_concatenated = ''.join(calling_number_list) calling_number = calling_number_concatenated[2:] call_reference = binascii.hexlify( str(mcfcph_record.getComponentByName("callReference"))) call_segment_id = long( str(mcfcph_record.getComponentByName("callSegmentId"))) if mcfcph_record.getComponentByName("cAMELInitCFIndicator") is None: camel_initcf_indicator = "" else: camel_initcf_indicator_tmp = long( str(mcfcph_record.getComponentByName("cAMELInitCFIndicator"))) camel_initcf_indicator = "" if camel_initcf_indicator_tmp == 0: camel_initcf_indicator = "noCAMELCallForwarding" if camel_initcf_indicator_tmp == 1: camel_initcf_indicator = "cAMELCallForwarding" if mcfcph_record.getComponentByName("causeForTerm") is None: cause_for_termination = "" else: cause_for_termination_tmp = long( str(mcfcph_record.getComponentByName("causeForTerm"))) cause_for_termination = "" if cause_for_termination_tmp == 0: cause_for_termination = "normalRelease" elif cause_for_termination_tmp == 1: cause_for_termination = "partialRecord" elif cause_for_termination_tmp == 2: cause_for_termination = "partialRecordCallReestablishment" elif cause_for_termination_tmp == 3: cause_for_termination = "unsuccessfulCallAttempt" elif cause_for_termination_tmp == 4: cause_for_termination = "stableCallAbnormalTermination" elif cause_for_termination_tmp == 5: cause_for_termination = "cAMELInitCallRelease" elif cause_for_termination_tmp == 52: cause_for_termination = "unauthorizedRequestingNetwork" elif cause_for_termination_tmp == 53: cause_for_termination = "unauthorizedLCSClient" elif cause_for_termination_tmp == 54: cause_for_termination = "positionMethodFailure" elif cause_for_termination_tmp == 58: cause_for_termination = "unknownOrUnreachableLCSClient" elif cause_for_termination_tmp == 101: cause_for_termination = "cAMELPlayTone" elif cause_for_termination_tmp == 102: cause_for_termination = "changeOfConfDueToCPH" elif cause_for_termination_tmp == 103: cause_for_termination = "falseAnswerCharge" elif cause_for_termination_tmp == 104: cause_for_termination = "failPlayTone" elif cause_for_termination_tmp == 105: cause_for_termination = "releaseForPreemption" if mcfcph_record.getComponentByName("defaultCallHandling") is None: default_call_handling = "" else: default_call_handling_tmp = long( str(mcfcph_record.getComponentByName("defaultCallHandling"))) default_call_handling = "" if default_call_handling_tmp == 0: default_call_handling = "continueCall" elif default_call_handling_tmp == 1: default_call_handling = "releaseCall" if mcfcph_record.getComponentByName("diagnostics") is None: diagnostics = "" else: diagnostics = str(mcfcph_record.getComponentByName("diagnostics")) file_name = os.path.split(ZTEUMTS_IN_PATH)[1] free_format_data = str( mcfcph_record.getComponentByName("freeFormatData")) free_format_data_append = str( mcfcph_record.getComponentByName("freeFormatDataAppend")) global_call_reference = str( mcfcph_record.getComponentByName("globalCallReference")) if mcfcph_record.getComponentByName("gsm-SCFAddress") is not None: gsm_scfaddress_binascii = binascii.hexlify( str(mcfcph_record.getComponentByName("gsm-SCFAddress"))) gsm_scfaddress_list = [] gsm_scfaddress_data = list(gsm_scfaddress_binascii) for i in xrange(0, len(gsm_scfaddress_data) - 1, 2): gsm_scfaddress_list.append(gsm_scfaddress_data[i + 1] + "" + gsm_scfaddress_data[i]) gsm_scfaddress_concatenated = ''.join(gsm_scfaddress_list) gsm_scfaddress = gsm_scfaddress_concatenated[2:].replace( "f", "") else: gsm_scfaddress = "" if mcfcph_record.getComponentByName("hotBillingTag") is None: hot_billing_tag = 0 else: hot_billing_tag = long( str(mcfcph_record.getComponentByName("hotBillingTag"))) is_camel_call = str(mcfcph_record.getComponentByName("isCAMELCall")) last_long_part_ind = str( mcfcph_record.getComponentByName("lastLongPartInd")) level_of_camel_service = str( mcfcph_record.getComponentByName("levelOfCAMELService")) if mcfcph_record.getComponentByName("mcfType") is None: mcf_type = "" else: mcf_type_tmp = long( str(mcfcph_record.getComponentByName("mcfType"))) mcf_type = "" if mcf_type_tmp == 0: mcf_type = "unconditional" elif mcf_type_tmp == 1: mcf_type = "busy" elif mcf_type_tmp == 2: mcf_type = "notReply" elif mcf_type_tmp == 3: mcf_type = "notReachable" elif mcf_type_tmp == 254: mcf_type = "callBack" if mcfcph_record.getComponentByName("millisecDuration") is None: milli_sec_duration = 0 else: milli_sec_duration = long( str(mcfcph_record.getComponentByName("millisecDuration"))) msc_address = str(mcfcph_record.getComponentByName("mSCAddress")) msc_incoming_tkgp = binascii.hexlify( str(mcfcph_record.getComponentByName("mscIncomingTKGP"))) if mcfcph_record.getComponentByName("networkCallReference") is None: network_call_reference = "" else: network_call_reference = binascii.hexlify( str(mcfcph_record.getComponentByName("networkCallReference"))) number_of_dp_encountered = str( mcfcph_record.getComponentByName("numberOfDPEncountered")) if mcfcph_record.getComponentByName("partialRecordType") is None: partial_record_type = "" else: partial_record_type_tmp = long( str(mcfcph_record.getComponentByName("partialRecordType"))) partial_record_type = "" if partial_record_type_tmp == 1: partial_record_type = "serviceChange" if mcfcph_record.getComponentByName("partSequenceNumber") is None: part_sequence_number = 0 else: part_sequence_number = long( str(mcfcph_record.getComponentByName("partSequenceNumber"))) recording_entity_binascii = binascii.hexlify( str(mcfcph_record.getComponentByName("recordingEntity"))) recording_entity_list = [] recording_entity_data = list(recording_entity_binascii) for l in xrange(0, len(recording_entity_data) - 1, 2): recording_entity_list.append(recording_entity_data[l + 1] + "" + recording_entity_data[l]) recording_entity_concatenated = ''.join(recording_entity_list) recording_entity_replace_f = recording_entity_concatenated.replace( "f", "") recording_entity = recording_entity_replace_f[ 2:7] + recording_entity_replace_f[7:] record_sequence_number = binascii.hexlify( str(mcfcph_record.getComponentByName("recordSequenceNumber"))) if mcfcph_record.getComponentByName("recordType") is None: record_type = 0 else: record_type = long( str(mcfcph_record.getComponentByName("recordType"))) release_time_tmp = binascii.hexlify( str(mcfcph_record.getComponentByName("releaseTime"))) release_time = parseTimestamp(release_time_tmp) seizure_time_tmp = binascii.hexlify( str(mcfcph_record.getComponentByName("seizureTime"))) seizure_time = parseTimestamp(seizure_time_tmp) served_imei_binascii = binascii.hexlify( str(mcfcph_record.getComponentByName("servedIMEI"))) served_imei_list = [] served_imei_data = list(served_imei_binascii) for i in xrange(0, len(served_imei_data) - 1, 2): served_imei_list.append(served_imei_data[i + 1] + "" + served_imei_data[i]) served_imei_concatenated = ''.join(served_imei_list) served_imei = served_imei_concatenated.replace("f", "") served_imsi_binascii = binascii.hexlify( str(mcfcph_record.getComponentByName("servedIMSI"))) served_imsi_list = [] served_imsi_data = list(served_imsi_binascii) for j in xrange(0, len(served_imsi_data) - 1, 2): served_imsi_list.append(served_imsi_data[j + 1] + "" + served_imsi_data[j]) served_imsi_concatenated = ''.join(served_imsi_list) served_imsi = served_imsi_concatenated.replace("f", "") served_msisdn_binascii = binascii.hexlify( str(mcfcph_record.getComponentByName("servedMSISDN"))) served_msisdn_list = [] served_msisdn_data = list(served_msisdn_binascii) for k in xrange(0, len(served_msisdn_data) - 1, 2): served_msisdn_list.append(served_msisdn_data[k + 1] + "" + served_msisdn_data[k]) served_msisdn_concatenated = ''.join(served_msisdn_list) served_msisdn_replace_f = served_msisdn_concatenated.replace("f", "") served_msisdn = served_msisdn_replace_f.replace( served_msisdn_replace_f[:3], '') if mcfcph_record.getComponentByName("serviceKey") is None: service_key = "" else: service_key = str(mcfcph_record.getComponentByName("serviceKey")) subscriber_category = binascii.hexlify( str(mcfcph_record.getComponentByName("subscriberCategory"))) if mcfcph_record.getComponentByName("systemType") is None: system_type = "" else: system_type_tmp = long( str(mcfcph_record.getComponentByName("systemType"))) system_type = "" if system_type_tmp == 0: system_type = "unknown" elif system_type_tmp == 1: system_type = "iuUTRAN" elif system_type_tmp == 2: system_type = "gERAN" mcfcph_record = [ charged_party, charge_indicator, answer_time, basic_service, call_duration, called_number, calling_number, call_reference, call_segment_id, camel_initcf_indicator, cause_for_termination, default_call_handling, diagnostics, file_name, free_format_data, free_format_data_append, global_call_reference, gsm_scfaddress, hot_billing_tag, is_camel_call, last_long_part_ind, level_of_camel_service, mcf_type, milli_sec_duration, msc_address, msc_incoming_tkgp, network_call_reference, number_of_dp_encountered, partial_record_type, part_sequence_number, recording_entity, record_sequence_number, record_type, release_time, seizure_time, served_imei, served_imsi, served_msisdn, service_key, subscriber_category, system_type ] return mcfcph_record
def process_mtrf_records(mtrf_record, file_name): answer_time_tmp = binascii.hexlify(str(mtrf_record.getComponentByName("answerTime"))) answer_time = parseTimestamp(answer_time_tmp) if mtrf_record.getComponentByName("basicService") is None: basic_service = "" else: basic_service_choice = mtrf_record.getComponentByName("basicService") basic_service_choice_hexvalue = basic_service_choice.getComponent().prettyPrint() if basic_service_choice_hexvalue == "0x11": basic_service = "teleservice" else: basic_service = "bearerservice" if mtrf_record.getComponentByName("callDuration") is None: call_duration = 0 else: call_duration = long(str(mtrf_record.getComponentByName("callDuration"))) calling_number_binascii = binascii.hexlify( str(mtrf_record.getComponentByName("callingNumber"))) calling_number_list = [] calling_number_data = list(calling_number_binascii) for i in xrange(0, len(calling_number_data) - 1, 2): calling_number_list.append(calling_number_data[i + 1] + "" + calling_number_data[i]) calling_number_concatenated = ''.join(calling_number_list) calling_number = calling_number_concatenated[2:] call_reference = binascii.hexlify(str(mtrf_record.getComponentByName("callReference"))) if mtrf_record.getComponentByName("causeForTerm") is None: cause_for_termination = "" else: cause_for_termination_tmp = long(str(mtrf_record.getComponentByName("causeForTerm"))) cause_for_termination = "" if cause_for_termination_tmp == 0: cause_for_termination = "normalRelease" elif cause_for_termination_tmp == 1: cause_for_termination = "partialRecord" elif cause_for_termination_tmp == 2: cause_for_termination = "partialRecordCallReestablishment" elif cause_for_termination_tmp == 3: cause_for_termination = "unsuccessfulCallAttempt" elif cause_for_termination_tmp == 4: cause_for_termination = "stableCallAbnormalTermination" elif cause_for_termination_tmp == 5: cause_for_termination = "cAMELInitCallRelease" elif cause_for_termination_tmp == 52: cause_for_termination = "unauthorizedRequestingNetwork" elif cause_for_termination_tmp == 53: cause_for_termination = "unauthorizedLCSClient" elif cause_for_termination_tmp == 54: cause_for_termination = "positionMethodFailure" elif cause_for_termination_tmp == 58: cause_for_termination = "unknownOrUnreachableLCSClient" elif cause_for_termination_tmp == 101: cause_for_termination = "cAMELPlayTone" elif cause_for_termination_tmp == 102: cause_for_termination = "changeOfConfDueToCPH" elif cause_for_termination_tmp == 103: cause_for_termination = "falseAnswerCharge" elif cause_for_termination_tmp == 104: cause_for_termination = "failPlayTone" elif cause_for_termination_tmp == 105: cause_for_termination = "releaseForPreemption" if mtrf_record.getComponentByName("diagnostics") is None: diagnostics = "" else: diagnostics = str(mtrf_record.getComponentByName("diagnostics")) exchange_identity = str(mtrf_record.getComponentByName("exchangeIdentity")) file_name = file_name last_long_part_ind = str(mtrf_record.getComponentByName("lastLongPartInd")) if mtrf_record.getComponentByName("mscIncomingTKGP") is not None: msc_incoming_tkgp = binascii.hexlify(str(mtrf_record.getComponentByName("mscIncomingTKGP"))) else: msc_incoming_tkgp = "" if mtrf_record.getComponentByName("mscOutgoingTKGP") is not None: msc_outgoing_tkgp = binascii.hexlify(str(mtrf_record.getComponentByName("mscOutgoingTKGP"))) else: msc_outgoing_tkgp = "" if mtrf_record.getComponentByName("partialRecordType") is None: partial_record_type = "" else: partial_record_type_tmp = long(str(mtrf_record.getComponentByName("partialRecordType"))) partial_record_type = "" if partial_record_type_tmp == 1: partial_record_type = "serviceChange" recording_entity_binascii = binascii.hexlify(str(mtrf_record.getComponentByName("recordingEntity"))) recording_entity_list = [] recording_entity_data = list(recording_entity_binascii) for l in xrange(0, len(recording_entity_data) - 1, 2): recording_entity_list.append(recording_entity_data[l + 1] + "" + recording_entity_data[l]) recording_entity_concatenated = ''.join(recording_entity_list) recording_entity_replace_f = recording_entity_concatenated.replace("f", "") recording_entity = recording_entity_replace_f[2:7] + recording_entity_replace_f[7:] record_sequence_number = binascii.hexlify(str(mtrf_record.getComponentByName("recordSequenceNumber"))) if mtrf_record.getComponentByName("recordType") is None: record_type = 0 else: record_type = long(str(mtrf_record.getComponentByName("recordType"))) release_time_tmp = binascii.hexlify(str(mtrf_record.getComponentByName("releaseTime"))) release_time = parseTimestamp(release_time_tmp) roaming_number_binascii = binascii.hexlify(str(mtrf_record.getComponentByName("roamingNumber"))) roaming_number_list = [] roaming_number_data = list(roaming_number_binascii) for i in xrange(0, len(roaming_number_data) - 1, 2): roaming_number_list.append(roaming_number_data[i + 1] + "" + roaming_number_data[i]) roaming_number_concatenated = ''.join(roaming_number_list) roaming_number = roaming_number_concatenated[2:] seizure_time_tmp = binascii.hexlify(str(mtrf_record.getComponentByName("seizureTime"))) seizure_time = parseTimestamp(seizure_time_tmp) if mtrf_record.getComponentByName("sequenceNumber") is None: sequence_number = 0 else: sequence_number = long(str(mtrf_record.getComponentByName("sequenceNumber"))) served_imei_binascii = binascii.hexlify(str(mtrf_record.getComponentByName("servedIMEI"))) served_imei_list = [] served_imei_data = list(served_imei_binascii) for i in xrange(0, len(served_imei_data) - 1, 2): served_imei_list.append(served_imei_data[i+1] + "" + served_imei_data[i]) served_imei_concatenated = ''.join(served_imei_list) served_imei = served_imei_concatenated.replace("f", "") served_imsi_binascii = binascii.hexlify(str(mtrf_record.getComponentByName("servedIMSI"))) served_imsi_list = [] served_imsi_data = list(served_imsi_binascii) for j in xrange(0, len(served_imsi_data) - 1, 2): served_imsi_list.append(served_imsi_data[j+1] + "" + served_imsi_data[j]) served_imsi_concatenated = ''.join(served_imsi_list) served_imsi = served_imsi_concatenated.replace("f", "") served_msisdn_binascii = binascii.hexlify(str(mtrf_record.getComponentByName("servedMSISDN"))) served_msisdn_list = [] served_msisdn_data = list(served_msisdn_binascii) for k in xrange(0, len(served_msisdn_data) - 1, 2): served_msisdn_list.append(served_msisdn_data[k+1] + "" + served_msisdn_data[k]) served_msisdn_concatenated = ''.join(served_msisdn_list) served_msisdn_replace_f = served_msisdn_concatenated.replace("f", "") served_msisdn = served_msisdn_replace_f.replace(served_msisdn_replace_f[:3], '') mtrf_record = [answer_time, basic_service, call_duration, calling_number, call_reference, cause_for_termination, diagnostics, exchange_identity, file_name, last_long_part_ind, msc_incoming_tkgp, msc_outgoing_tkgp, partial_record_type, recording_entity, record_sequence_number, record_type, release_time, roaming_number, seizure_time, sequence_number, served_imei, served_imsi, served_msisdn] return mtrf_record
def process_ussd_records(ussd_record, file_id, file_name): if ussd_record.getComponentByName("callReference") is None: call_reference = "" else: call_reference = binascii.hexlify( str(ussd_record.getComponentByName("callReference"))) end_time_tmp = binascii.hexlify( str(ussd_record.getComponentByName("endTime"))) end_time = append_timezone_offset(parseTimestamp(end_time_tmp)) if ussd_record.getComponentByName("errorCode") is None: error_code = "" else: error_code = ussd_record.getComponentByName("errorCode").getName() if ussd_record.getComponentByName("exchangeIdentity") is None: exchange_identity = "" else: exchange_identity = str( ussd_record.getComponentByName("exchangeIdentity")) if ussd_record.getComponentByName("hotBillingTag") is None: hot_billing_tag = -255 else: hot_billing_tag = long( str(ussd_record.getComponentByName("hotBillingTag"))) if ussd_record.getComponentByName("hotBillingTag2") is None: hot_billing_tag2 = -255 else: hot_billing_tag2 = long( str(ussd_record.getComponentByName("hotBillingTag2"))) if ussd_record.getComponentByName("location") is not None: location = ussd_record.getComponentByName("location") location_area = binascii.hexlify( str(location.getComponentByName("locationArea"))) location_area_str = str(location_area) location_cellid_binascii = location_area_str[10:14] format_location_cellid_binascii = int(location_cellid_binascii, 16) location_cellid = format(format_location_cellid_binascii, '05') location_area_code_binascii = location_area_str[6:10] format_location_area_code_binascii = int( location_area_code_binascii, 16) location_area_code = format(format_location_area_code_binascii, '05') location_plmn = parseMcc(location_area_str[0:6]) + parseMnc( location_area_str[0:6]) location_sac = location_area_str[-4:] else: location_cellid = "" location_area_code = "" location_plmn = "" location_sac = "" if ussd_record.getComponentByName("msClassmark") is None: ms_classmark = "" else: ms_classmark = binascii.hexlify( str(ussd_record.getComponentByName("msClassmark"))) if ussd_record.getComponentByName("operatorId") is None: operator_id = -255 else: operator_id = long( str(ussd_record.getComponentByName("operatorId"))) if ussd_record.getComponentByName("recordSequenceNumber") is None: record_sequence_number = "" else: record_sequence_number = binascii.hexlify( str(ussd_record.getComponentByName("recordSequenceNumber"))) if ussd_record.getComponentByName("recordType") is None: record_type = -255 else: record_type = long( str(ussd_record.getComponentByName("recordType"))) if ussd_record.getComponentByName("recordingEntity") is None: recording_entity = "" else: recording_entity_binascii = binascii.hexlify( str(ussd_record.getComponentByName("recordingEntity"))) recording_entity_list = [] recording_entity_data = list(recording_entity_binascii) for l in xrange(0, len(recording_entity_data) - 1, 2): recording_entity_list.append(recording_entity_data[l + 1] + "" + recording_entity_data[l]) recording_entity_concatenated = ''.join(recording_entity_list) recording_entity_replace_f = recording_entity_concatenated.replace( "f", "") recording_entity = recording_entity_replace_f[ 2:7] + recording_entity_replace_f[7:] if ussd_record.getComponentByName("servedIMEI") is None: served_imei = "" else: served_imei_binascii = binascii.hexlify( str(ussd_record.getComponentByName("servedIMEI"))) served_imei_list = [] served_imei_data = list(served_imei_binascii) for i in xrange(0, len(served_imei_data) - 1, 2): served_imei_list.append(served_imei_data[i + 1] + "" + served_imei_data[i]) served_imei_concatenated = ''.join(served_imei_list) served_imei = served_imei_concatenated.replace("f", "") if ussd_record.getComponentByName("servedIMSI") is None: served_imsi = "" else: served_imsi_binascii = binascii.hexlify( str(ussd_record.getComponentByName("servedIMSI"))) served_imsi_list = [] served_imsi_data = list(served_imsi_binascii) for j in xrange(0, len(served_imsi_data) - 1, 2): served_imsi_list.append(served_imsi_data[j + 1] + "" + served_imsi_data[j]) served_imsi_concatenated = ''.join(served_imsi_list) served_imsi = served_imsi_concatenated.replace("f", "") if ussd_record.getComponentByName("servedMSISDN") is None: served_msisdn = "" else: served_msisdn_binascii = binascii.hexlify( str(ussd_record.getComponentByName("servedMSISDN"))) served_msisdn_list = [] served_msisdn_data = list(served_msisdn_binascii) for k in xrange(0, len(served_msisdn_data) - 1, 2): served_msisdn_list.append(served_msisdn_data[k + 1] + "" + served_msisdn_data[k]) served_msisdn_concatenated = ''.join(served_msisdn_list) served_msisdn_replace_f = served_msisdn_concatenated.replace( "f", "") served_msisdn = served_msisdn_replace_f.replace( served_msisdn_replace_f[:3], '') start_time_tmp = binascii.hexlify( str(ussd_record.getComponentByName("startTime"))) start_time = append_timezone_offset(parseTimestamp(start_time_tmp)) if ussd_record.getComponentByName("systemType") is None: system_type = "" else: system_type_tmp = long( str(ussd_record.getComponentByName("systemType"))) system_type = "" if system_type_tmp == 0: system_type = "unknown" elif system_type_tmp == 1: system_type = "iuUTRAN" elif system_type_tmp == 2: system_type = "gERAN" if ussd_record.getComponentByName("uSSDDataCodingScheme") is None: ussd_datacoding_scheme = "" else: ussd_datacoding_scheme = binascii.hexlify( str(ussd_record.getComponentByName("uSSDDataCodingScheme"))) if ussd_record.getComponentByName("uSSDInteractionCount") is None: ussd_interaction_code = -255 else: ussd_interaction_code = long( str(ussd_record.getComponentByName("uSSDInteractionCount"))) if ussd_record.getComponentByName("uSSDOperationCode") is None: ussd_operation_code = "" else: ussd_operation_code_tmp = long( str(ussd_record.getComponentByName("uSSDOperationCode"))) ussd_operation_code = "" if ussd_operation_code_tmp == 19: ussd_operation_code = "processUnstructuredSS-Data" elif ussd_operation_code_tmp == 59: ussd_operation_code = "processUnstructuredSS-Request" elif ussd_operation_code_tmp == 60: ussd_operation_code = "unstructuredSS-Request" elif ussd_operation_code_tmp == 61: ussd_operation_code = "unstructuredSS-Notify" if ussd_record.getComponentByName("uSSDServiceCode") is None: ussd_service_code = -255 else: ussd_service_code = long( str(ussd_record.getComponentByName("uSSDServiceCode"))) if ussd_record.getComponentByName("uSSDUnstructuredData") is None: ussd_unstructured_data = "" else: ussd_unstructured_data = binascii.hexlify( str(ussd_record.getComponentByName("uSSDUnstructuredData"))) ussd_record = [ call_reference, end_time, error_code, exchange_identity, file_id, hot_billing_tag, hot_billing_tag2, location_cellid, location_area_code, location_plmn, location_sac, ms_classmark, operator_id, record_sequence_number, record_type, recording_entity, served_imei, served_imsi, served_msisdn, start_time, system_type, ussd_datacoding_scheme, ussd_interaction_code, ussd_operation_code, ussd_service_code, ussd_unstructured_data, long(start_time.strftime("%Y%m%d")), long(start_time.strftime("%H")) ] return ussd_record
def process_hlrint_records(hlrint_record, file_name): if hlrint_record.getComponentByName("basicService") is None: basic_service = "" else: basic_service = str( hlrint_record.getComponentByName("basicService").prettyPrint()) calling_number_before_sdc = str( hlrint_record.getComponentByName("callingNumberBeforeSDC")) dc_interrogated_ori_called_number = str( hlrint_record.getComponentByName("dcInterrogatedOriCalledNumber")) exchange_identity = str( hlrint_record.getComponentByName("exchangeIdentity")) file_name = file_name if hlrint_record.getComponentByName("hotBillingTag2") is None: hot_billing_tag2 = '' else: hot_billing_tag2 = long( str(hlrint_record.getComponentByName("hotBillingTag2"))) interrogation_result = str( hlrint_record.getComponentByName("interrogationResult")) interrogation_time_tmp = binascii.hexlify( str(hlrint_record.getComponentByName("interrogationTime"))) interrogation_time = parseTimestamp(interrogation_time_tmp) number_of_forwarding = long( str(hlrint_record.getComponentByName("numberOfForwarding"))) if hlrint_record.getComponentByName("operatorId") is None: operator_id = 0 else: operator_id = long( str(hlrint_record.getComponentByName("operatorId"))) ori_called_number_before_sdc = str( hlrint_record.getComponentByName("oriCalledNumberBeforeSDC")) recording_entity_binascii = binascii.hexlify( str(hlrint_record.getComponentByName("recordingEntity"))) recording_entity_list = [] recording_entity_data = list(recording_entity_binascii) for l in xrange(0, len(recording_entity_data) - 1, 2): recording_entity_list.append(recording_entity_data[l + 1] + "" + recording_entity_data[l]) recording_entity_concatenated = ''.join(recording_entity_list) recording_entity_replace_f = recording_entity_concatenated.replace( "f", "") recording_entity = recording_entity_replace_f[ 2:7] + recording_entity_replace_f[7:] record_sequence_number = binascii.hexlify( str(hlrint_record.getComponentByName("recordSequenceNumber"))) if hlrint_record.getComponentByName("recordType") is None: record_type = 0 else: record_type = long( str(hlrint_record.getComponentByName("recordType"))) routing_number = str(hlrint_record.getComponentByName("routingNumber")) sdc_interrogated_calling_number = str( hlrint_record.getComponentByName("sdcInterrogatedCallingNumber")) sdc_interrogation_flag = str( hlrint_record.getComponentByName("sdcInterrogationFlag")) served_imsi_binascii = binascii.hexlify( str(hlrint_record.getComponentByName("servedIMSI"))) served_imsi_list = [] served_imsi_data = list(served_imsi_binascii) for j in xrange(0, len(served_imsi_data) - 1, 2): served_imsi_list.append(served_imsi_data[j + 1] + "" + served_imsi_data[j]) served_imsi_concatenated = ''.join(served_imsi_list) served_imsi = served_imsi_concatenated.replace("f", "") served_msisdn_binascii = binascii.hexlify( str(hlrint_record.getComponentByName("servedMSISDN"))) served_msisdn_list = [] served_msisdn_data = list(served_msisdn_binascii) for k in xrange(0, len(served_msisdn_data) - 1, 2): served_msisdn_list.append(served_msisdn_data[k + 1] + "" + served_msisdn_data[k]) served_msisdn_concatenated = ''.join(served_msisdn_list) served_msisdn_replace_f = served_msisdn_concatenated.replace("f", "") served_msisdn = served_msisdn_replace_f.replace( served_msisdn_replace_f[:3], '') hlrint_record = [ basic_service, calling_number_before_sdc, dc_interrogated_ori_called_number, exchange_identity, file_name, hot_billing_tag2, interrogation_result, interrogation_time, number_of_forwarding, operator_id, ori_called_number_before_sdc, recording_entity, record_sequence_number, record_type, routing_number, sdc_interrogated_calling_number, sdc_interrogation_flag, served_imsi, served_msisdn ] return hlrint_record
def process_ssaction_records(ssaction_record, file_id, file_name): if ssaction_record.getComponentByName("callReference") is None: call_reference = "" else: call_reference = binascii.hexlify( str(ssaction_record.getComponentByName("callReference"))) if ssaction_record.getComponentByName("exchangeIdentity") is None: exchange_identity = "" else: exchange_identity = str( ssaction_record.getComponentByName("exchangeIdentity")) if ssaction_record.getComponentByName("forwardedSubNumber") is None: forwarded_subnumber = "" else: forwarded_subnumber = str( ssaction_record.getComponentByName("forwardedSubNumber")) if ssaction_record.getComponentByName("globalCallReference") is None: global_call_reference = "" else: global_call_reference = str( ssaction_record.getComponentByName("globalCallReference")) if ssaction_record.getComponentByName("hotBillingTag2") is None: hot_billing_tag2 = -255 else: hot_billing_tag2 = long( str(ssaction_record.getComponentByName("hotBillingTag2"))) if ssaction_record.getComponentByName("location") is not None: location = ssaction_record.getComponentByName("location") location_area = binascii.hexlify( str(location.getComponentByName("locationArea"))) location_area_str = str(location_area) location_cellid_binascii = location_area_str[10:14] format_location_cellid_binascii = int(location_cellid_binascii, 16) location_cellid = format(format_location_cellid_binascii, '05') location_area_code_binascii = location_area_str[6:10] format_location_area_code_binascii = int( location_area_code_binascii, 16) location_area_code = format(format_location_area_code_binascii, '05') location_plmn = parseMcc(location_area_str[0:6]) + parseMnc( location_area_str[0:6]) location_sac = location_area_str[-4:] else: location_cellid = "" location_area_code = "" location_plmn = "" location_sac = "" if ssaction_record.getComponentByName("msClassmark") is None: ms_classmark = "" else: ms_classmark = binascii.hexlify( str(ssaction_record.getComponentByName("msClassmark"))) if ssaction_record.getComponentByName("mscSPC14") is None: mscspc14 = "" else: mscspc14 = binascii.hexlify( str(ssaction_record.getComponentByName("mscSPC14"))) if ssaction_record.getComponentByName("mscSPC24") is None: mscspc24 = "" else: mscspc24 = binascii.hexlify( str(ssaction_record.getComponentByName("mscSPC24"))) if ssaction_record.getComponentByName("noReplyCondTime") is None: no_reply_condtime = -255 else: no_reply_condtime = long( str(ssaction_record.getComponentByName("noReplyCondTime"))) if ssaction_record.getComponentByName("operatorId") is None: operator_id = -255 else: operator_id = long( str(ssaction_record.getComponentByName("operatorId"))) if ssaction_record.getComponentByName("recordSequenceNumber") is None: record_sequence_number = "" else: record_sequence_number = binascii.hexlify( str(ssaction_record.getComponentByName( "recordSequenceNumber"))) if ssaction_record.getComponentByName("recordType") is None: record_type = -255 else: record_type = long( str(ssaction_record.getComponentByName("recordType"))) if ssaction_record.getComponentByName("recordingEntity") is None: recording_entity = "" else: recording_entity_binascii = binascii.hexlify( str(ssaction_record.getComponentByName("recordingEntity"))) recording_entity_list = [] recording_entity_data = list(recording_entity_binascii) for l in xrange(0, len(recording_entity_data) - 1, 2): recording_entity_list.append(recording_entity_data[l + 1] + "" + recording_entity_data[l]) recording_entity_concatenated = ''.join(recording_entity_list) recording_entity_replace_f = recording_entity_concatenated.replace( "f", "") recording_entity = recording_entity_replace_f[ 2:7] + recording_entity_replace_f[7:] if ssaction_record.getComponentByName("servedIMEI") is None: served_imei = "" else: served_imei_binascii = binascii.hexlify( str(ssaction_record.getComponentByName("servedIMEI"))) served_imei_list = [] served_imei_data = list(served_imei_binascii) for i in xrange(0, len(served_imei_data) - 1, 2): served_imei_list.append(served_imei_data[i + 1] + "" + served_imei_data[i]) served_imei_concatenated = ''.join(served_imei_list) served_imei = served_imei_concatenated.replace("f", "") if ssaction_record.getComponentByName("servedIMSI") is None: served_imsi = "" else: served_imsi_binascii = binascii.hexlify( str(ssaction_record.getComponentByName("servedIMSI"))) served_imsi_list = [] served_imsi_data = list(served_imsi_binascii) for j in xrange(0, len(served_imsi_data) - 1, 2): served_imsi_list.append(served_imsi_data[j + 1] + "" + served_imsi_data[j]) served_imsi_concatenated = ''.join(served_imsi_list) served_imsi = served_imsi_concatenated.replace("f", "") if ssaction_record.getComponentByName("servedMSISDN") is None: served_msisdn = "" else: served_msisdn_binascii = binascii.hexlify( str(ssaction_record.getComponentByName("servedMSISDN"))) served_msisdn_list = [] served_msisdn_data = list(served_msisdn_binascii) for k in xrange(0, len(served_msisdn_data) - 1, 2): served_msisdn_list.append(served_msisdn_data[k + 1] + "" + served_msisdn_data[k]) served_msisdn_concatenated = ''.join(served_msisdn_list) served_msisdn_replace_f = served_msisdn_concatenated.replace( "f", "") served_msisdn = served_msisdn_replace_f.replace( served_msisdn_replace_f[:3], '') if ssaction_record.getComponentByName("ssAction") is None: ssaction = "" else: ssaction_tmp = long( str(ssaction_record.getComponentByName("ssAction"))) ssaction = "" if ssaction_tmp == 0: ssaction = "registration" elif ssaction_tmp == 1: ssaction = "erasure" elif ssaction_tmp == 2: ssaction = "activation" elif ssaction_tmp == 3: ssaction = "deactivation" elif ssaction_tmp == 4: ssaction = "interrogation" elif ssaction_tmp == 5: ssaction = "invocation" elif ssaction_tmp == 6: ssaction = "passwordRegistration" if ssaction_record.getComponentByName("ssActionResult") is None: ssaction_result = "" else: ssaction_result = ssaction_record.getComponentByName( "ssActionResult").getName() ssaction_time_tmp = binascii.hexlify( str(ssaction_record.getComponentByName("ssActionTime"))) ssaction_time = append_timezone_offset( parseTimestamp(ssaction_time_tmp)) if ssaction_record.getComponentByName("ssParameters") is None: ss_parameters = "" else: ss_parameters = str( ssaction_record.getComponentByName("ssParameters")) if ssaction_record.getComponentByName("supplService") is None: suppl_service = "" else: suppl_service = binascii.hexlify( str(ssaction_record.getComponentByName("supplService"))) if ssaction_record.getComponentByName("systemType") is None: system_type = "" else: system_type_tmp = long( str(ssaction_record.getComponentByName("systemType"))) system_type = "" if system_type_tmp == 0: system_type = "unknown" elif system_type_tmp == 1: system_type = "iuUTRAN" elif system_type_tmp == 2: system_type = "gERAN" if ssaction_record.getComponentByName( "transactionIdentification") is None: transaction_identification = "" else: transaction_identification = str( ssaction_record.getComponentByName( "transactionIdentification")) ssaction_record = [ call_reference, exchange_identity, file_id, forwarded_subnumber, global_call_reference, hot_billing_tag2, location_cellid, location_area_code, location_plmn, location_sac, ms_classmark, mscspc14, mscspc24, no_reply_condtime, operator_id, record_sequence_number, record_type, recording_entity, served_imei, served_imsi, served_msisdn, ssaction, ssaction_result, ssaction_time, ss_parameters, suppl_service, system_type, transaction_identification, long(ssaction_time.strftime("%Y%m%d")), long(ssaction_time.strftime("%H")) ] return ssaction_record
def process_roam_records(roam_record, file_name): answer_time_tmp = binascii.hexlify( str(roam_record.getComponentByName("answerTime"))) answer_time = parseTimestamp(answer_time_tmp) if roam_record.getComponentByName("basicService") is None: basic_service = "" else: basic_service_choice = roam_record.getComponentByName( "basicService") basic_service_choice_hexvalue = basic_service_choice.getComponent( ).prettyPrint() if basic_service_choice_hexvalue == "0x11": basic_service = "teleservice" else: basic_service = "bearerservice" if roam_record.getComponentByName("bSCIdentification") is None: bsdidentification = "" else: bsdidentification = binascii.hexlify( str(roam_record.getComponentByName("bSCIdentification"))) if roam_record.getComponentByName("bscIdentification24") is None: bsdidentification_24 = "" else: bsdidentification_24 = binascii.hexlify( str(roam_record.getComponentByName("bscIdentification24"))) if roam_record.getComponentByName("callDuration") is None: call_duration = 0 else: call_duration = long( str(roam_record.getComponentByName("callDuration"))) calling_number_binascii = binascii.hexlify( str(roam_record.getComponentByName("callingNumber"))) calling_number_list = [] calling_number_data = list(calling_number_binascii) for i in xrange(0, len(calling_number_data) - 1, 2): calling_number_list.append(calling_number_data[i + 1] + "" + calling_number_data[i]) calling_number_concatenated = ''.join(calling_number_list) calling_number = calling_number_concatenated[2:] call_reference = binascii.hexlify( str(roam_record.getComponentByName("callReference"))) if roam_record.getComponentByName("causeForTerm") is None: cause_for_termination = "" else: cause_for_termination_tmp = long( str(roam_record.getComponentByName("causeForTerm"))) cause_for_termination = "" if cause_for_termination_tmp == 0: cause_for_termination = "normalRelease" elif cause_for_termination_tmp == 1: cause_for_termination = "partialRecord" elif cause_for_termination_tmp == 2: cause_for_termination = "partialRecordCallReestablishment" elif cause_for_termination_tmp == 3: cause_for_termination = "unsuccessfulCallAttempt" elif cause_for_termination_tmp == 4: cause_for_termination = "stableCallAbnormalTermination" elif cause_for_termination_tmp == 5: cause_for_termination = "cAMELInitCallRelease" elif cause_for_termination_tmp == 52: cause_for_termination = "unauthorizedRequestingNetwork" elif cause_for_termination_tmp == 53: cause_for_termination = "unauthorizedLCSClient" elif cause_for_termination_tmp == 54: cause_for_termination = "positionMethodFailure" elif cause_for_termination_tmp == 58: cause_for_termination = "unknownOrUnreachableLCSClient" elif cause_for_termination_tmp == 101: cause_for_termination = "cAMELPlayTone" elif cause_for_termination_tmp == 102: cause_for_termination = "changeOfConfDueToCPH" elif cause_for_termination_tmp == 103: cause_for_termination = "falseAnswerCharge" elif cause_for_termination_tmp == 104: cause_for_termination = "failPlayTone" elif cause_for_termination_tmp == 105: cause_for_termination = "releaseForPreemption" cug_category = roam_record.getComponentByName("cUGCategory") if cug_category is None: cug_category_calltype = 0 else: cug_category_calltype = long( str(cug_category.getComponentByName("callType"))) if cug_category is None: cug_category_usertype = 0 else: cug_category_usertype = long( str(cug_category.getComponentByName("userType"))) cug_interlock_code = str( roam_record.getComponentByName("cUGInterLockCode")) if roam_record.getComponentByName("dataRate") is None: data_rate = 0 else: data_rate = long(str(roam_record.getComponentByName("dataRate"))) if roam_record.getComponentByName("dataVolume") is None: data_volume = 0 else: data_volume = long( str(roam_record.getComponentByName("dataVolume"))) if roam_record.getComponentByName("diagnostics") is None: diagnostics = "" else: diagnostics = str(roam_record.getComponentByName("diagnostics")) exchange_identity = str( roam_record.getComponentByName("exchangeIdentity")) file_name = file_name global_call_reference = str( roam_record.getComponentByName("globalCallReference")) if roam_record.getComponentByName("hotBillingTag2") is None: hot_billing_tag2 = 0 else: hot_billing_tag2 = long( str(roam_record.getComponentByName("hotBillingTag2"))) incoming_cic = roam_record.getComponentByName("incomingCic") if incoming_cic is None: incoming_cic_channel = 0 else: incoming_cic_channel = long( str(incoming_cic.getComponentByName("channel"))) if incoming_cic is None: incoming_cic_pcmunit = 0 else: incoming_cic_pcmunit = long( str(incoming_cic.getComponentByName("pcmUnit"))) incoming_tkgpname = str( roam_record.getComponentByName("incomingTKGPName")) if roam_record.getComponentByName("incomingTrafficType") is None: incoming_traffic_type = "" else: incoming_traffic_type_tmp = long( str(roam_record.getComponentByName("incomingTrafficType"))) incoming_traffic_type = "" if incoming_traffic_type_tmp == 0: incoming_traffic_type = "unknown" elif incoming_traffic_type_tmp == 1: incoming_traffic_type = "localNetworkMobile" elif incoming_traffic_type_tmp == 2: incoming_traffic_type = "localNetworkFixed" elif incoming_traffic_type_tmp == 3: incoming_traffic_type = "externalNetwork" is_camel_call = str(roam_record.getComponentByName("isCAMELCall")) is_cug_used = str(roam_record.getComponentByName("isCUGUsed")) is_multi_media_call = str( roam_record.getComponentByName("isMultiMediaCall")) last_long_part_ind = str( roam_record.getComponentByName("lastLongPartInd")) if roam_record.getComponentByName("millisecDuration") is None: milli_sec_duration = 0 else: milli_sec_duration = long( str(roam_record.getComponentByName("millisecDuration"))) msc_address = str(roam_record.getComponentByName("mSCAddress")) msc_incoming_tkgp = binascii.hexlify( str(roam_record.getComponentByName("mscIncomingTKGP"))) if roam_record.getComponentByName("mscOutgoingTKGP") is None: msc_outgoing_tkgp = 0 else: msc_outgoing_tkgp = binascii.hexlify( str(roam_record.getComponentByName("mscOutgoingTKGP"))) mscspc14_tmp = binascii.hexlify( str(roam_record.getComponentByName("mscSPC14"))) mscspc24_tmp = binascii.hexlify( str(roam_record.getComponentByName("mscSPC24"))) if roam_record.getComponentByName("networkCallReference") is None: network_call_reference = "" else: network_call_reference = binascii.hexlify( str(roam_record.getComponentByName("networkCallReference"))) if roam_record.getComponentByName("operatorId") is None: operator_id = 0 else: operator_id = long( str(roam_record.getComponentByName("operatorId"))) outgoing_cic = roam_record.getComponentByName("outgoingCic") if outgoing_cic is None: outgoing_cic_channel = 0 else: outgoing_cic_channel = long( str(outgoing_cic.getComponentByName("channel"))) if outgoing_cic is None: outgoing_cic_pcmunit = 0 else: outgoing_cic_pcmunit = long( str(outgoing_cic.getComponentByName("pcmUnit"))) outgoing_tkgpname = str( roam_record.getComponentByName("outgoingTKGPName")) if roam_record.getComponentByName("outgoingTrafficType") is None: outgoing_traffic_type = "" else: outgoing_traffic_type_tmp = long( str(roam_record.getComponentByName("outgoingTrafficType"))) outgoing_traffic_type = "" if outgoing_traffic_type_tmp == 0: outgoing_traffic_type = "unknown" elif outgoing_traffic_type_tmp == 1: outgoing_traffic_type = "localNetworkMobile" elif outgoing_traffic_type_tmp == 2: outgoing_traffic_type = "localNetworkFixed" elif outgoing_traffic_type_tmp == 3: outgoing_traffic_type = "externalNetwork" recording_entity_binascii = binascii.hexlify( str(roam_record.getComponentByName("recordingEntity"))) recording_entity_list = [] recording_entity_data = list(recording_entity_binascii) for l in xrange(0, len(recording_entity_data) - 1, 2): recording_entity_list.append(recording_entity_data[l + 1] + "" + recording_entity_data[l]) recording_entity_concatenated = ''.join(recording_entity_list) recording_entity_replace_f = recording_entity_concatenated.replace( "f", "") recording_entity = recording_entity_replace_f[ 2:7] + recording_entity_replace_f[7:] record_sequence_number = binascii.hexlify( str(roam_record.getComponentByName("recordSequenceNumber"))) record_type = long(str(roam_record.getComponentByName("recordType"))) redirect_number = str(roam_record.getComponentByName("redirectNumber")) release_time_tmp = binascii.hexlify( str(roam_record.getComponentByName("releaseTime"))) release_time = parseTimestamp(release_time_tmp) roam_camel_information = roam_record.getComponentByName( "roamCamelInformation") if roam_camel_information is not None: if roam_camel_information.getComponentByName( "defaultCallHandling") is None: roam_default_call_handling = "" else: roam_default_call_handling_tmp = long( str( roam_camel_information.getComponentByName( "defaultCallHandling"))) roam_default_call_handling = "" if roam_default_call_handling_tmp == 0: roam_default_call_handling = "continueCall" elif roam_default_call_handling_tmp == 1: roam_default_call_handling = "releaseCall" roam_dest_route_number = str( roam_camel_information.getComponentByName("destRouteNumber")) if roam_camel_information.getComponentByName( "gsm-SCFAddress") is not None: gsm_scfaddress_binascii = binascii.hexlify( str( roam_camel_information.getComponentByName( "gsm-SCFAddress"))) gsm_scfaddress_list = [] gsm_scfaddress_data = list(gsm_scfaddress_binascii) for i in xrange(0, len(gsm_scfaddress_data) - 1, 2): gsm_scfaddress_list.append(gsm_scfaddress_data[i + 1] + "" + gsm_scfaddress_data[i]) gsm_scfaddress_concatenated = ''.join(gsm_scfaddress_list) roam_gsm_scfaddress = gsm_scfaddress_concatenated[ 2:].replace("f", "") else: roam_gsm_scfaddress = "" roam_interrogation_time_tmp = binascii.hexlify( str( roam_camel_information.getComponentByName( "interrogationTime"))) roam_interrogation_time = parseTimestamp( roam_interrogation_time_tmp) roam_msc_address = str( roam_camel_information.getComponentByName("mSCAddress")) roam_service_key = long( str(roam_camel_information.getComponentByName("serviceKey"))) else: roam_default_call_handling = "" roam_dest_route_number = "" roam_gsm_scfaddress = "" roam_interrogation_time = parseTimestamp('1606151209292d0700') roam_msc_address = "" roam_service_key = 0 if roam_record.getComponentByName("roamingNumber") is None: roaming_number = "" else: roaming_number_binascii = binascii.hexlify( str(roam_record.getComponentByName("roamingNumber"))) roaming_number_list = [] roaming_number_data = list(roaming_number_binascii) for i in xrange(0, len(roaming_number_data) - 1, 2): roaming_number_list.append(roaming_number_data[i + 1] + "" + roaming_number_data[i]) roaming_number_concatenated = ''.join(roaming_number_list) roaming_number = roaming_number_concatenated[2:] routing_category = str( roam_record.getComponentByName("routingCategory")) seizure_time_tmp = binascii.hexlify( str(roam_record.getComponentByName("seizureTime"))) seizure_time = parseTimestamp(seizure_time_tmp) if roam_record.getComponentByName("sequenceNumber") is None: sequence_number = 0 else: sequence_number = long( str(roam_record.getComponentByName("sequenceNumber"))) served_imsi_binascii = binascii.hexlify( str(roam_record.getComponentByName("servedIMSI"))) served_imsi_list = [] served_imsi_data = list(served_imsi_binascii) for j in xrange(0, len(served_imsi_data) - 1, 2): served_imsi_list.append(served_imsi_data[j + 1] + "" + served_imsi_data[j]) served_imsi_concatenated = ''.join(served_imsi_list) served_imsi = served_imsi_concatenated.replace("f", "") served_msisdn_binascii = binascii.hexlify( str(roam_record.getComponentByName("servedMSISDN"))) served_msisdn_list = [] served_msisdn_data = list(served_msisdn_binascii) for k in xrange(0, len(served_msisdn_data) - 1, 2): served_msisdn_list.append(served_msisdn_data[k + 1] + "" + served_msisdn_data[k]) served_msisdn_concatenated = ''.join(served_msisdn_list) served_msisdn_replace_f = served_msisdn_concatenated.replace("f", "") served_msisdn = served_msisdn_replace_f.replace( served_msisdn_replace_f[:3], '') service_category = binascii.hexlify( str(roam_record.getComponentByName("serviceCategory"))) start_time = parseTimestamp('1606151209292d0700') if roam_record.getComponentByName("transparencyIndicator") is None: transparency_indicator = "" else: transparency_indicator_tmp = long( str(roam_record.getComponentByName("transparencyIndicator"))) transparency_indicator = "" if transparency_indicator_tmp == 0: transparency_indicator = "transparent" elif transparency_indicator_tmp == 1: transparency_indicator = "nonTransparent" trans_roaming_number = str( roam_record.getComponentByName("transRoamingNumber")) roam_record = [ answer_time, basic_service, bsdidentification, bsdidentification_24, call_duration, calling_number, call_reference, cause_for_termination, cug_category_calltype, cug_category_usertype, cug_interlock_code, data_rate, data_volume, diagnostics, exchange_identity, file_name, global_call_reference, hot_billing_tag2, incoming_cic_channel, incoming_cic_pcmunit, incoming_tkgpname, incoming_traffic_type, is_camel_call, is_cug_used, is_multi_media_call, last_long_part_ind, milli_sec_duration, msc_address, msc_incoming_tkgp, msc_outgoing_tkgp, mscspc14_tmp, mscspc24_tmp, network_call_reference, operator_id, outgoing_cic_channel, outgoing_cic_pcmunit, outgoing_tkgpname, outgoing_traffic_type, recording_entity, record_sequence_number, record_type, redirect_number, release_time, roam_default_call_handling, roam_dest_route_number, roam_gsm_scfaddress, roam_interrogation_time, roam_msc_address, roam_service_key, roaming_number, routing_category, seizure_time, sequence_number, served_imsi, served_msisdn, service_category, start_time, transparency_indicator, trans_roaming_number ] return roam_record
def process_moecall_records(moecallrecord_record, file_name): answer_time_tmp = binascii.hexlify(str(moecallrecord_record.getComponentByName("answerTime"))) answer_time = parseTimestamp(answer_time_tmp) if moecallrecord_record.getComponentByName("aocParameters") is not None: aoc_parameter = str(moecallrecord_record.getComponentByName("aocParameters")) aoc_parametere1 = str(aoc_parameter.getComponentByName("aocParameters")) aoc_parametere2 = str(aoc_parameter.getComponentByName("aocParameters")) aoc_parametere3 = str(aoc_parameter.getComponentByName("aocParameters")) aoc_parametere4 = str(aoc_parameter.getComponentByName("aocParameters")) aoc_parametere5 = str(aoc_parameter.getComponentByName("aocParameters")) aoc_parametere6 = str(aoc_parameter.getComponentByName("aocParameters")) aoc_parametere7 = str(aoc_parameter.getComponentByName("aocParameters")) else: aoc_parametere1 = "" aoc_parametere2 = "" aoc_parametere3 = "" aoc_parametere4 = "" aoc_parametere5 = "" aoc_parametere6 = "" aoc_parametere7 = "" if moecallrecord_record.getComponentByName("aReleaseCause") is None: a_release_cause = 0 else: a_release_cause = long(str(moecallrecord_record.getComponentByName("aReleaseCause"))) if moecallrecord_record.getComponentByName("basicService") is None: basic_service = "" else: basic_service_choice = moecallrecord_record.getComponentByName("basicService") basic_service_choice_hexvalue = basic_service_choice.getComponent().prettyPrint() if basic_service_choice_hexvalue == "0x11": basic_service = "teleservice" else: basic_service = "bearerservice" if moecallrecord_record.getComponentByName("bSCIdentification") is None: bsdidentification = "" else: bsdidentification = binascii.hexlify(str(moecallrecord_record.getComponentByName("bSCIdentification"))) if moecallrecord_record.getComponentByName("bscIdentification24") is None: bsdidentification_24 = "" else: bsdidentification_24 = binascii.hexlify(str(moecallrecord_record.getComponentByName("bscIdentification24"))) if moecallrecord_record.getComponentByName("callDuration") is None: call_duration = 0 else: call_duration = long(str(moecallrecord_record.getComponentByName("callDuration"))) called_number_binascii = binascii.hexlify(str(moecallrecord_record.getComponentByName("calledNumber"))) called_number_list = [] called_number_data = list(called_number_binascii) for i in xrange(0, len(called_number_data) - 1, 2): called_number_list.append(called_number_data[i + 1] + "" + called_number_data[i]) called_number_concatenated = ''.join(called_number_list) called_number = called_number_concatenated[2:] call_reference = binascii.hexlify(str(moecallrecord_record.getComponentByName("callReference"))) if moecallrecord_record.getComponentByName("carp") is None: carp = 0 else: carp = long(str(moecallrecord_record.getComponentByName("carp"))) if moecallrecord_record.getComponentByName("causeForTerm") is None: cause_for_termination = "" else: cause_for_termination_tmp = long(str(moecallrecord_record.getComponentByName("causeForTerm"))) cause_for_termination = "" if cause_for_termination_tmp == 0: cause_for_termination = "normalRelease" elif cause_for_termination_tmp == 1: cause_for_termination = "partialRecord" elif cause_for_termination_tmp == 2: cause_for_termination = "partialRecordCallReestablishment" elif cause_for_termination_tmp == 3: cause_for_termination = "unsuccessfulCallAttempt" elif cause_for_termination_tmp == 4: cause_for_termination = "stableCallAbnormalTermination" elif cause_for_termination_tmp == 5: cause_for_termination = "cAMELInitCallRelease" elif cause_for_termination_tmp == 52: cause_for_termination = "unauthorizedRequestingNetwork" elif cause_for_termination_tmp == 53: cause_for_termination = "unauthorizedLCSClient" elif cause_for_termination_tmp == 54: cause_for_termination = "positionMethodFailure" elif cause_for_termination_tmp == 58: cause_for_termination = "unknownOrUnreachableLCSClient" elif cause_for_termination_tmp == 101: cause_for_termination = "cAMELPlayTone" elif cause_for_termination_tmp == 102: cause_for_termination = "changeOfConfDueToCPH" elif cause_for_termination_tmp == 103: cause_for_termination = "falseAnswerCharge" elif cause_for_termination_tmp == 104: cause_for_termination = "failPlayTone" elif cause_for_termination_tmp == 105: cause_for_termination = "releaseForPreemption" if moecallrecord_record.getComponentByName("chanCodingUsed") is None: chan_coding_used = "" else: chan_coding_used_tmp = long(str(moecallrecord_record.getComponentByName("chanCodingUsed"))) chan_coding_used = "" if chan_coding_used_tmp == 1: chan_coding_used = "tchF4800" elif chan_coding_used_tmp == 2: chan_coding_used = "tchF9600" elif chan_coding_used_tmp == 3: chan_coding_used = "tchF14400" if moecallrecord_record.getComponentByName("changeOfRadioChan") is not None: change_of_radio_chan = moecallrecord_record.getComponentByName("changeOfRadioChan") change_time_tmp = binascii.hexlify(str(change_of_radio_chan.getComponentByName("changeTime"))) change_time = parseTimestamp(change_time_tmp) radio_channel = "" # if change_of_radio_chan.getComponentByName("radioChannel") is None: # radio_channel = "" # else: # radio_channel_tmp = long(str(mocallrecord_record.getComponentByName("radioChannel"))) # radio_channel = "" # if radio_channel_tmp == 1: # radio_channel = "tchF4800" # elif radio_channel_tmp == 2: # radio_channel = "tchF9600" changeofradiochan_speech_version_used = str(change_of_radio_chan.getComponentByName("speechVersionUsed")) else: radio_channel = "" change_time = parseTimestamp('1606151209292d0700') changeofradiochan_speech_version_used = "" csfbmo_indicator_get_value = moecallrecord_record.getComponentByName("cSFBMOIndicator") csfbmo_indicator = boolean_value(csfbmo_indicator_get_value) if moecallrecord_record.getComponentByName("defaultCallHandling") is None: default_call_handling = "" else: default_call_handling_tmp = long(str(moecallrecord_record.getComponentByName("defaultCallHandling"))) default_call_handling = "" if default_call_handling_tmp == 0: default_call_handling = "continueCall" elif default_call_handling_tmp == 1: default_call_handling = "releaseCall" if moecallrecord_record.getComponentByName("diagnostics") is None: diagnostics = "" else: diagnostics = str(moecallrecord_record.getComponentByName("diagnostics")) dp_number = long(str(moecallrecord_record.getComponentByName("dPNumber"))) if moecallrecord_record.getComponentByName("eMLPPPriorityLevel") is None: emlpp_priority_level = 0 else: emlpp_priority_level = long(str(moecallrecord_record.getComponentByName("eMLPPPriorityLevel"))) if moecallrecord_record.getComponentByName("eMLPPRequestPriorityLevel") is None: emlpp_request_priority_level = 0 else: emlpp_request_priority_level = long( str(moecallrecord_record.getComponentByName("eMLPPRequestPriorityLevel"))) exchange_identity = str(moecallrecord_record.getComponentByName("exchangeIdentity")) file_name = file_name global_call_reference = str(moecallrecord_record.getComponentByName("globalCallReference")) if moecallrecord_record.getComponentByName("gsm-SCFAddress") is not None: gsm_scfaddress_binascii = binascii.hexlify(str(moecallrecord_record.getComponentByName("gsm-SCFAddress"))) gsm_scfaddress_list = [] gsm_scfaddress_data = list(gsm_scfaddress_binascii) for i in xrange(0, len(gsm_scfaddress_data) - 1, 2): gsm_scfaddress_list.append(gsm_scfaddress_data[i + 1] + "" + gsm_scfaddress_data[i]) gsm_scfaddress_concatenated = ''.join(gsm_scfaddress_list) gsm_scfaddress = gsm_scfaddress_concatenated[2:].replace("f", "") else: gsm_scfaddress = "" if moecallrecord_record.getComponentByName("hotBillingTag") is None: hot_billing_tag = 0 else: hot_billing_tag = long(str(moecallrecord_record.getComponentByName("hotBillingTag"))) if moecallrecord_record.getComponentByName("hotBillingTag2") is None: hot_billing_tag2 = 0 else: hot_billing_tag2 = long(str(moecallrecord_record.getComponentByName("hotBillingTag2"))) incoming_cic = moecallrecord_record.getComponentByName("incomingCic") if incoming_cic is None: incoming_cic_channel = 0 else: incoming_cic_channel = long(str(incoming_cic.getComponentByName("channel"))) if incoming_cic is None: incoming_cic_pcmunit = 0 else: incoming_cic_pcmunit = long(str(incoming_cic.getComponentByName("pcmUnit"))) incoming_tkgpname = str(moecallrecord_record.getComponentByName("incomingTKGPName")) is_camel_call = str(moecallrecord_record.getComponentByName("isCAMELCall")) if moecallrecord_record.getComponentByName("iuReleaseCause") is None: iu_release_cause = 0 else: iu_release_cause = long(str(moecallrecord_record.getComponentByName("iuReleaseCause"))) last_long_part_ind = str(moecallrecord_record.getComponentByName("lastLongPartInd")) level_of_camel_service = str(moecallrecord_record.getComponentByName("levelOfCAMELService")) location = moecallrecord_record.getComponentByName("location") if location is not None: location_area = binascii.hexlify(str(location.getComponentByName("locationArea"))) location_area_str = str(location_area) location_cellid_binascii = location_area_str[10:14] format_location_cellid_binascii = int(location_cellid_binascii, 16) location_cellid = format(format_location_cellid_binascii, '05') location_area_code_binascii = location_area_str[6:10] format_location_area_code_binascii = int(location_area_code_binascii, 16) location_area_code = format(format_location_area_code_binascii, '05') location_plmn = parseMcc(location_area_str[0:6]) + parseMnc(location_area_str[0:6]) location_sac = location_area_str[-4:] else: location_cellid = '' location_area_code = '' location_plmn = '' location_sac = '' if moecallrecord_record.getComponentByName("millisecDuration") is None: milli_sec_duration = 0 else: milli_sec_duration = long(str(moecallrecord_record.getComponentByName("millisecDuration"))) msc_address = str(moecallrecord_record.getComponentByName("mSCAddress")) msc_incoming_tkgp = binascii.hexlify(str(moecallrecord_record.getComponentByName("mscIncomingTKGP"))) ms_classmark = binascii.hexlify(str(moecallrecord_record.getComponentByName("msClassmark"))) if moecallrecord_record.getComponentByName("mscOutgoingTKGP") is None: msc_outgoing_tkgp = 0 else: msc_outgoing_tkgp = binascii.hexlify(str(moecallrecord_record.getComponentByName("mscOutgoingTKGP"))) mscspc14_tmp = binascii.hexlify(str(moecallrecord_record.getComponentByName("mscSPC14"))) mscspc24_tmp = binascii.hexlify(str(moecallrecord_record.getComponentByName("mscSPC24"))) if moecallrecord_record.getComponentByName("networkCallReference") is None: network_call_reference = "" else: network_call_reference = binascii.hexlify( str(moecallrecord_record.getComponentByName("networkCallReference"))) if moecallrecord_record.getComponentByName("operatorId") is None: operator_id = 0 else: operator_id = long(str(moecallrecord_record.getComponentByName("operatorId"))) outgoing_cic = moecallrecord_record.getComponentByName("outgoingCic") if outgoing_cic is None: outgoing_cic_channel = 0 else: outgoing_cic_channel = long(str(outgoing_cic.getComponentByName("channel"))) if outgoing_cic is None: outgoing_cic_pcmunit = 0 else: outgoing_cic_pcmunit = long(str(outgoing_cic.getComponentByName("pcmUnit"))) outgoing_tkgpname = str(moecallrecord_record.getComponentByName("outgoingTKGPName")) if moecallrecord_record.getComponentByName("radioChanRequested") is None: radio_chan_requested = "" else: radio_chan_requested_tmp = long(str(moecallrecord_record.getComponentByName("radioChanRequested"))) radio_chan_requested = "" if radio_chan_requested_tmp == 0: radio_chan_requested = "halfRateChannel" elif radio_chan_requested_tmp == 1: radio_chan_requested = "fullRateChannel" elif radio_chan_requested_tmp == 2: radio_chan_requested = "dualHalfRatePreferred" elif radio_chan_requested_tmp == 3: radio_chan_requested = "dualFullRatePreferred" if moecallrecord_record.getComponentByName("radioChanUsed") is None: radio_chan_used = "" else: radio_chan_used_tmp = long(str(moecallrecord_record.getComponentByName("radioChanUsed"))) radio_chan_used = "" if radio_chan_used_tmp == 0: radio_chan_used = "fullRate" elif radio_chan_used_tmp == 1: radio_chan_used = "halfRate" recording_entity_binascii = binascii.hexlify(str(moecallrecord_record.getComponentByName("recordingEntity"))) recording_entity_list = [] recording_entity_data = list(recording_entity_binascii) for l in xrange(0, len(recording_entity_data) - 1, 2): recording_entity_list.append(recording_entity_data[l + 1] + "" + recording_entity_data[l]) recording_entity_concatenated = ''.join(recording_entity_list) recording_entity_replace_f = recording_entity_concatenated.replace("f", "") recording_entity = recording_entity_replace_f[2:7] + recording_entity_replace_f[7:] record_sequence_number = binascii.hexlify(str(moecallrecord_record.getComponentByName("recordSequenceNumber"))) record_type = long(str(moecallrecord_record.getComponentByName("recordType"))) release_time_tmp = binascii.hexlify(str(moecallrecord_record.getComponentByName("releaseTime"))) release_time = parseTimestamp(release_time_tmp) if moecallrecord_record.getComponentByName("roamingNumber") is None: roaming_number = "" else: roaming_number_binascii = binascii.hexlify(str(moecallrecord_record.getComponentByName("roamingNumber"))) roaming_number_list = [] roaming_number_data = list(roaming_number_binascii) for i in xrange(0, len(roaming_number_data) - 1, 2): roaming_number_list.append(roaming_number_data[i + 1] + "" + roaming_number_data[i]) roaming_number_concatenated = ''.join(roaming_number_list) roaming_number = roaming_number_concatenated[2:] routing_category = str(moecallrecord_record.getComponentByName("routingCategory")) seizure_time_tmp = binascii.hexlify(str(moecallrecord_record.getComponentByName("seizureTime"))) seizure_time = parseTimestamp(seizure_time_tmp) if moecallrecord_record.getComponentByName("sequenceNumber") is None: sequence_number = 0 else: sequence_number = long(str(moecallrecord_record.getComponentByName("sequenceNumber"))) served_imei_binascii = binascii.hexlify(str(moecallrecord_record.getComponentByName("servedIMEI"))) served_imei_list = [] served_imei_data = list(served_imei_binascii) for i in xrange(0, len(served_imei_data) - 1, 2): served_imei_list.append(served_imei_data[i + 1] + "" + served_imei_data[i]) served_imei_concatenated = ''.join(served_imei_list) served_imei = served_imei_concatenated.replace("f", "") served_imsi_binascii = binascii.hexlify(str(moecallrecord_record.getComponentByName("servedIMSI"))) served_imsi_list = [] served_imsi_data = list(served_imsi_binascii) for j in xrange(0, len(served_imsi_data) - 1, 2): served_imsi_list.append(served_imsi_data[j + 1] + "" + served_imsi_data[j]) served_imsi_concatenated = ''.join(served_imsi_list) served_imsi = served_imsi_concatenated.replace("f", "") served_msisdn_binascii = binascii.hexlify(str(moecallrecord_record.getComponentByName("servedMSISDN"))) served_msisdn_list = [] served_msisdn_data = list(served_msisdn_binascii) for k in xrange(0, len(served_msisdn_data) - 1, 2): served_msisdn_list.append(served_msisdn_data[k + 1] + "" + served_msisdn_data[k]) served_msisdn_concatenated = ''.join(served_msisdn_list) served_msisdn_replace_f = served_msisdn_concatenated.replace("f", "") served_msisdn = served_msisdn_replace_f.replace(served_msisdn_replace_f[:3], '') if moecallrecord_record.getComponentByName("serviceKey") is None: service_key = 0 else: service_key = long(str(moecallrecord_record.getComponentByName("serviceKey"))) subscriber_category = binascii.hexlify(str(moecallrecord_record.getComponentByName("subscriberCategory"))) suppress_camel_ind = str(moecallrecord_record.getComponentByName("suppressCAMELInd")) if moecallrecord_record.getComponentByName("systemType") is None: system_type = "" else: system_type_tmp = long(str(moecallrecord_record.getComponentByName("systemType"))) system_type = "" if system_type_tmp == 0: system_type = "unknown" elif system_type_tmp == 1: system_type = "iuUTRAN" elif system_type_tmp == 2: system_type = "gERAN" if moecallrecord_record.getComponentByName("transactionIdentification") is None: transaction_identification = 0 else: transaction_identification = long(str(moecallrecord_record.getComponentByName("transactionIdentification"))) translated_number_binascii = binascii.hexlify(str(moecallrecord_record.getComponentByName("translatedNumber"))) translated_number_list = [] translated_number_data = list(translated_number_binascii) for l in xrange(0, len(translated_number_data) - 1, 2): translated_number_list.append(translated_number_data[l + 1] + "" + translated_number_data[l]) translated_number_concatenated = ''.join(translated_number_list) translated_number = translated_number_concatenated[2:] moecallrecord_record = [answer_time, aoc_parametere1, aoc_parametere2, aoc_parametere3, aoc_parametere4, aoc_parametere5, aoc_parametere6, aoc_parametere7, a_release_cause, basic_service, bsdidentification, bsdidentification_24, call_duration, called_number, call_reference, carp, cause_for_termination, change_time, radio_channel, changeofradiochan_speech_version_used, csfbmo_indicator, default_call_handling, diagnostics, dp_number, emlpp_priority_level, emlpp_request_priority_level, exchange_identity, file_name, global_call_reference, gsm_scfaddress, hot_billing_tag, hot_billing_tag2, incoming_cic_channel, incoming_cic_pcmunit, incoming_tkgpname, is_camel_call, iu_release_cause, last_long_part_ind, level_of_camel_service, location_cellid, location_area_code, location_plmn, location_sac, milli_sec_duration, msc_address, msc_incoming_tkgp, ms_classmark, msc_outgoing_tkgp, mscspc14_tmp, mscspc24_tmp, network_call_reference, operator_id, outgoing_cic_channel, outgoing_cic_pcmunit, outgoing_tkgpname, radio_chan_requested, radio_chan_used, recording_entity, record_sequence_number, record_type, release_time, roaming_number, routing_category, seizure_time, sequence_number, served_imei, served_imsi, served_msisdn, service_key, subscriber_category, suppress_camel_ind, system_type, transaction_identification, translated_number] return moecallrecord_record