aboutsummaryrefslogtreecommitdiff
path: root/example/ndpiReader.c
diff options
context:
space:
mode:
Diffstat (limited to 'example/ndpiReader.c')
-rw-r--r--example/ndpiReader.c165
1 files changed, 106 insertions, 59 deletions
diff --git a/example/ndpiReader.c b/example/ndpiReader.c
index 15f5d6f9a..eff6ca2c5 100644
--- a/example/ndpiReader.c
+++ b/example/ndpiReader.c
@@ -1244,6 +1244,11 @@ static void printFlow(u_int16_t id, struct ndpi_flow_info *flow, u_int16_t threa
if(flow->ssh_tls.tls_issuerDN) fprintf(out, "[Issuer: %s]", flow->ssh_tls.tls_issuerDN);
if(flow->ssh_tls.tls_subjectDN) fprintf(out, "[Subject: %s]", flow->ssh_tls.tls_subjectDN);
+ if(flow->ssh_tls.encrypted_sni.esni) {
+ fprintf(out, "[ESNI: %s]", flow->ssh_tls.encrypted_sni.esni);
+ fprintf(out, "[ESNI Cipher: %s]", ndpi_cipher2str(flow->ssh_tls.encrypted_sni.cipher_suite));
+ }
+
if((flow->detected_protocol.master_protocol == NDPI_PROTOCOL_TLS)
|| (flow->detected_protocol.app_protocol == NDPI_PROTOCOL_TLS)) {
if(flow->ssh_tls.sha1_cert_fingerprint_set) {
@@ -3079,86 +3084,128 @@ void serializerUnitTest() {
ndpi_serializer serializer, deserializer;
int i;
u_int8_t trace = 0;
+ ndpi_serialization_format fmt = ndpi_serialization_format_tlv;
- assert(ndpi_init_serializer(&serializer, ndpi_serialization_format_tlv) != -1);
+ //trace = 1;
+ //fmt = ndpi_serialization_format_json;
+ //fmt = ndpi_serialization_format_csv;
+
+ assert(ndpi_init_serializer(&serializer, fmt) != -1);
for(i=0; i<16; i++) {
char kbuf[32], vbuf[32];
+ snprintf(kbuf, sizeof(kbuf), "Key %d", i);
+ snprintf(vbuf, sizeof(vbuf), "Value %d", i);
assert(ndpi_serialize_uint32_uint32(&serializer, i, i*i) != -1);
-
- snprintf(kbuf, sizeof(kbuf), "Hello %d", i);
- snprintf(vbuf, sizeof(vbuf), "World %d", i);
- assert(ndpi_serialize_uint32_string(&serializer, i, "Hello") != -1);
+ assert(ndpi_serialize_uint32_string(&serializer, i, "Data") != -1);
assert(ndpi_serialize_string_string(&serializer, kbuf, vbuf) != -1);
assert(ndpi_serialize_string_uint32(&serializer, kbuf, i*i) != -1);
assert(ndpi_serialize_string_float(&serializer, kbuf, (float)(i*i), "%f") != -1);
}
- if(trace)
- printf("Serialization size: %u\n", ndpi_serializer_get_buffer_len(&serializer));
+ if (fmt == ndpi_serialization_format_json) {
- assert(ndpi_init_deserializer(&deserializer, &serializer) != -1);
+ assert(ndpi_serialize_start_of_list(&serializer, "List") != -1);
- while(1) {
- ndpi_serialization_type kt, et;
- et = ndpi_deserialize_get_item_type(&deserializer, &kt);
+ for(i=0; i<4; i++) {
+ char kbuf[32], vbuf[32];
+ snprintf(kbuf, sizeof(kbuf), "Ignored");
+ snprintf(vbuf, sizeof(vbuf), "Item %d", i);
+ assert(ndpi_serialize_uint32_uint32(&serializer, i, i*i) != -1);
+ assert(ndpi_serialize_string_string(&serializer, kbuf, vbuf) != -1);
+ assert(ndpi_serialize_string_float(&serializer, kbuf, (float)(i*i), "%f") != -1);
+ }
+ assert(ndpi_serialize_end_of_list(&serializer) != -1);
+ assert(ndpi_serialize_string_string(&serializer, "Last", "Ok") != -1);
- if(et == ndpi_serialization_unknown)
- break;
- else {
- u_int32_t k32, v32;
- ndpi_string ks, vs;
- float vf;
-
- switch(kt) {
- case ndpi_serialization_uint32:
- ndpi_deserialize_key_uint32(&deserializer, &k32);
- if(trace) printf("%u=", k32);
+ if(trace) {
+ u_int32_t buffer_len = 0;
+ char *buffer = ndpi_serializer_get_buffer(&serializer, &buffer_len);
+ printf("%s\n", buffer);
+ exit(0);
+ }
+
+ } else if (fmt == ndpi_serialization_format_csv) {
+
+ if(trace) {
+ u_int32_t buffer_len = 0;
+ char *buffer;
+
+ buffer = ndpi_serializer_get_header(&serializer, &buffer_len);
+ printf("%s\n", buffer);
+
+ buffer = ndpi_serializer_get_buffer(&serializer, &buffer_len);
+ printf("%s\n", buffer);
+
+ exit(0);
+ }
+
+ } else {
+ if(trace)
+ printf("Serialization size: %u\n", ndpi_serializer_get_buffer_len(&serializer));
+
+ assert(ndpi_init_deserializer(&deserializer, &serializer) != -1);
+
+ while(1) {
+ ndpi_serialization_type kt, et;
+ et = ndpi_deserialize_get_item_type(&deserializer, &kt);
+
+ if(et == ndpi_serialization_unknown)
+ break;
+ else {
+ u_int32_t k32, v32;
+ ndpi_string ks, vs;
+ float vf;
+
+ switch(kt) {
+ case ndpi_serialization_uint32:
+ ndpi_deserialize_key_uint32(&deserializer, &k32);
+ if(trace) printf("%u=", k32);
break;
- case ndpi_serialization_string:
- ndpi_deserialize_key_string(&deserializer, &ks);
- if (trace) {
- u_int8_t bkp = ks.str[ks.str_len];
- ks.str[ks.str_len] = '\0';
- printf("%s=", ks.str);
- ks.str[ks.str_len] = bkp;
- }
+ case ndpi_serialization_string:
+ ndpi_deserialize_key_string(&deserializer, &ks);
+ if (trace) {
+ u_int8_t bkp = ks.str[ks.str_len];
+ ks.str[ks.str_len] = '\0';
+ printf("%s=", ks.str);
+ ks.str[ks.str_len] = bkp;
+ }
break;
- default:
- printf("Unsupported TLV key type %u\n", kt);
+ default:
+ printf("Unsupported TLV key type %u\n", kt);
return;
- }
-
- switch(et) {
- case ndpi_serialization_uint32:
- assert(ndpi_deserialize_value_uint32(&deserializer, &v32) != -1);
- if(trace) printf("%u\n", v32);
- break;
+ }
- case ndpi_serialization_string:
- assert(ndpi_deserialize_value_string(&deserializer, &vs) != -1);
- if(trace) {
- u_int8_t bkp = vs.str[vs.str_len];
- vs.str[vs.str_len] = '\0';
- printf("%s\n", vs.str);
- vs.str[vs.str_len] = bkp;
- }
- break;
+ switch(et) {
+ case ndpi_serialization_uint32:
+ assert(ndpi_deserialize_value_uint32(&deserializer, &v32) != -1);
+ if(trace) printf("%u\n", v32);
+ break;
+
+ case ndpi_serialization_string:
+ assert(ndpi_deserialize_value_string(&deserializer, &vs) != -1);
+ if(trace) {
+ u_int8_t bkp = vs.str[vs.str_len];
+ vs.str[vs.str_len] = '\0';
+ printf("%s\n", vs.str);
+ vs.str[vs.str_len] = bkp;
+ }
+ break;
- case ndpi_serialization_float:
- assert(ndpi_deserialize_value_float(&deserializer, &vf) != -1);
- if(trace) printf("%f\n", vf);
- break;
+ case ndpi_serialization_float:
+ assert(ndpi_deserialize_value_float(&deserializer, &vf) != -1);
+ if(trace) printf("%f\n", vf);
+ break;
- default:
- if (trace) printf("\n");
- printf("serializerUnitTest: unsupported type %u detected!\n", et);
- return;
- break;
+ default:
+ if (trace) printf("\n");
+ printf("serializerUnitTest: unsupported type %u detected!\n", et);
+ return;
+ }
}
- }
- ndpi_deserialize_next(&deserializer);
+ ndpi_deserialize_next(&deserializer);
+ }
}
ndpi_term_serializer(&serializer);