log2journal: added missing yaml elements (#16488)
added missing yaml elements
Costa Tsaousis committed
Nov 28, 2023 at 02:23 UTC
81f4c364013985d2418257c64bcb0c03ec475c56
1 file changed
+112
collectors/log2journal/log2journal-yaml.c
+112
@@ -221,6 +221,22 @@ static size_t yaml_parse_filename_injection(yaml_parser_t *parser, struct log_jo
221
return errors;
222
}
223
224
+static size_t yaml_parse_prefix(yaml_parser_t *parser, struct log_job *jb) {
225
+ yaml_event_t event;
226
+ size_t errors = 0;
227
+
228
+ if (!yaml_parse(parser, &event))
229
+ return 1;
230
+
231
+ if (event.type == YAML_SCALAR_EVENT) {
232
+ if(!log_job_add_key_prefix(jb, (char *)event.data.scalar.value, event.data.scalar.length))
233
+ errors++;
234
+ }
235
+
236
+ yaml_event_delete(&event);
237
+ return errors;
238
+}
239
+
240
static size_t yaml_parse_duplicates_injection(yaml_parser_t *parser, struct log_job *jb) {
241
if (!yaml_parse_expect_event(parser, YAML_SEQUENCE_START_EVENT))
242
return 1;
@@ -560,6 +576,96 @@ static size_t yaml_parse_rewrites(yaml_parser_t *parser, struct log_job *jb) {
576
return errors;
577
}
578
579
+static size_t yaml_parse_renames(yaml_parser_t *parser, struct log_job *jb) {
580
+ size_t errors = 0;
581
+
582
+ if (!yaml_parse_expect_event(parser, YAML_SEQUENCE_START_EVENT))
583
+ return 1;
584
+
585
+ bool finished = false;
586
+ while (!errors && !finished) {
587
+ yaml_event_t event;
588
+ if (!yaml_parse(parser, &event)) {
589
+ errors++;
590
+ continue;
591
+ }
592
+
593
+ switch (event.type) {
594
+ case YAML_MAPPING_START_EVENT:
595
+ {
596
+ struct key_rename rn = {0};
597
+
598
+ bool mapping_finished = false;
599
+ while (!errors && !mapping_finished) {
600
+ yaml_event_t sub_event;
601
+ if (!yaml_parse(parser, &sub_event)) {
602
+ errors++;
603
+ continue;
604
+ }
605
+
606
+ switch (sub_event.type) {
607
+ case YAML_SCALAR_EVENT:
608
+ if (yaml_scalar_matches(&sub_event, "new_key", strlen("new_key"))) {
609
+ if (!yaml_parse(parser, &sub_event) || sub_event.type != YAML_SCALAR_EVENT) {
610
+ yaml_error(parser, &sub_event, "Expected scalar for rename new_key");
611
+ errors++;
612
+ } else {
613
+ rn.new_key = strndupz((char *)sub_event.data.scalar.value, sub_event.data.scalar.length);
614
+ yaml_event_delete(&sub_event);
615
+ }
616
+ } else if (yaml_scalar_matches(&sub_event, "old_key", strlen("old_key"))) {
617
+ if (!yaml_parse(parser, &sub_event) || sub_event.type != YAML_SCALAR_EVENT) {
618
+ yaml_error(parser, &sub_event, "Expected scalar for rename old_key");
619
+ errors++;
620
+ } else {
621
+ rn.old_key = strndupz((char *)sub_event.data.scalar.value, sub_event.data.scalar.length);
622
+ yaml_event_delete(&sub_event);
623
+ }
624
+ } else {
625
+ yaml_error(parser, &sub_event, "Unexpected scalar in rewrite mapping");
626
+ errors++;
627
+ }
628
+ break;
629
+
630
+ case YAML_MAPPING_END_EVENT:
631
+ if(rn.old_key && rn.new_key) {
632
+ if (!log_job_add_rename(jb, rn.new_key, strlen(rn.new_key), rn.old_key, strlen(rn.old_key)))
633
+ errors++;
634
+ }
635
+ freez(rn.new_key);
636
+ freez(rn.old_key);
637
+ memset(&rn, 0, sizeof(rn));
638
+
639
+ mapping_finished = true;
640
+ break;
641
+
642
+ default:
643
+ yaml_error(parser, &sub_event, "Unexpected event in rewrite mapping");
644
+ errors++;
645
+ break;
646
+ }
647
+
648
+ yaml_event_delete(&sub_event);
649
+ }
650
+ }
651
+ break;
652
+
653
+ case YAML_SEQUENCE_END_EVENT:
654
+ finished = true;
655
+ break;
656
+
657
+ default:
658
+ yaml_error(parser, &event, "Unexpected event in rewrites sequence");
659
+ errors++;
660
+ break;
661
+ }
662
+
663
+ yaml_event_delete(&event);
664
+ }
665
+
666
+ return errors;
667
+}
668
+
669
static size_t yaml_parse_pattern(yaml_parser_t *parser, struct log_job *jb) {
670
yaml_event_t event;
671
size_t errors = 0;
@@ -618,6 +724,9 @@ static size_t yaml_parse_initialized(yaml_parser_t *parser, struct log_job *jb)
724
if (yaml_scalar_matches(&event, "pattern", strlen("pattern")))
725
errors += yaml_parse_pattern(parser, jb);
726
727
+ else if (yaml_scalar_matches(&event, "prefix", strlen("prefix")))
728
+ errors += yaml_parse_prefix(parser, jb);
729
+
730
else if (yaml_scalar_matches(&event, "filename", strlen("filename")))
731
errors += yaml_parse_filename_injection(parser, jb);
732
@@ -633,6 +742,9 @@ static size_t yaml_parse_initialized(yaml_parser_t *parser, struct log_job *jb)
742
else if (yaml_scalar_matches(&event, "rewrite", strlen("rewrite")))
743
errors += yaml_parse_rewrites(parser, jb);
744
745
+ else if (yaml_scalar_matches(&event, "rename", strlen("rename")))
746
+ errors += yaml_parse_renames(parser, jb);
747
+
748
else {
749
yaml_error(parser, &event, "unexpected scalar");
750
errors++;