Mercurial > masqmail
comparison src/conf.c @ 354:08932c629849
reworked the route concept; removed the idea of the localnet
Renamed to reflect the actual meaning more clearly:
s/online_routes/query_routes/g
s/local_net_route/permanent_routes/g
Removed local_nets, which are now represented by allowed_recipients
in a permanent route. (See. examples/localnet.route)
There is no more abiguity between `local' and `local net'.
Run admin/config-transition on your config to learn how to update it.
author | markus schnalke <meillo@marmaro.de> |
---|---|
date | Sun, 04 Sep 2011 11:25:38 +0200 |
parents | 0bd27f603910 |
children | 04744e3e8b18 |
comparison
equal
deleted
inserted
replaced
353:48ff59cf0b34 | 354:08932c629849 |
---|---|
504 conf.local_hosts = parse_list(rval, FALSE); | 504 conf.local_hosts = parse_list(rval, FALSE); |
505 else if (strcmp(lval, "local_addresses") == 0) | 505 else if (strcmp(lval, "local_addresses") == 0) |
506 conf.local_addresses = parse_list(rval, TRUE); | 506 conf.local_addresses = parse_list(rval, TRUE); |
507 else if (strcmp(lval, "not_local_addresses") == 0) | 507 else if (strcmp(lval, "not_local_addresses") == 0) |
508 conf.not_local_addresses = parse_list(rval, TRUE); | 508 conf.not_local_addresses = parse_list(rval, TRUE); |
509 else if (strcmp(lval, "local_nets") == 0) | |
510 conf.local_nets = parse_list(rval, FALSE); | |
511 else if (strcmp(lval, "do_save_envelope_to") == 0) | 509 else if (strcmp(lval, "do_save_envelope_to") == 0) |
512 conf.do_save_envelope_to = parse_boolean(rval); | 510 conf.do_save_envelope_to = parse_boolean(rval); |
513 else if (strcmp(lval, "defer_all") == 0) | 511 else if (strcmp(lval, "defer_all") == 0) |
514 conf.defer_all = parse_boolean(rval); | 512 conf.defer_all = parse_boolean(rval); |
515 else if (strcmp(lval, "do_relay") == 0) | 513 else if (strcmp(lval, "do_relay") == 0) |
556 } | 554 } |
557 g_list_free(tmp_list); | 555 g_list_free(tmp_list); |
558 #else | 556 #else |
559 logwrite(LOG_WARNING, "%s ignored: not compiled with ident support\n", lval); | 557 logwrite(LOG_WARNING, "%s ignored: not compiled with ident support\n", lval); |
560 #endif | 558 #endif |
561 } else if ((strncmp(lval, "connect_route.", 14) == 0) | 559 } else if (strncmp(lval, "query_routes.", 13) == 0) { |
562 || (strncmp(lval, "online_routes.", 14) == 0)) { | |
563 GList *file_list = parse_list(rval, FALSE); | 560 GList *file_list = parse_list(rval, FALSE); |
564 table_pair *pair = create_pair(&(lval[14]), file_list); | 561 table_pair *pair = create_pair(lval+13, file_list); |
565 conf.connect_routes = g_list_append(conf.connect_routes, pair); | 562 conf.query_routes = g_list_append(conf.query_routes, pair); |
566 } else if (strcmp(lval, "local_net_route") == 0) { | 563 } else if (strcmp(lval, "permanent_routes") == 0) { |
567 conf.local_net_routes = parse_list(rval, FALSE); | 564 conf.perma_routes = parse_list(rval, FALSE); |
568 } else if (strcmp(lval, "online_query") == 0) | 565 } else if (strcmp(lval, "online_query") == 0) |
569 conf.online_query = g_strdup(rval); | 566 conf.online_query = g_strdup(rval); |
570 else if (strcmp(lval, "do_queue") == 0) | 567 else if (strcmp(lval, "do_queue") == 0) |
571 conf.do_queue = parse_boolean(rval); | 568 conf.do_queue = parse_boolean(rval); |
572 else if (strcmp(lval, "errmsg_file") == 0) | 569 else if (strcmp(lval, "errmsg_file") == 0) |
628 | 625 |
629 return TRUE; | 626 return TRUE; |
630 } | 627 } |
631 | 628 |
632 connect_route* | 629 connect_route* |
633 read_route(gchar * filename, gboolean is_local_net) | 630 read_route(gchar * filename, gboolean is_perma) |
634 { | 631 { |
635 gboolean ok = FALSE; | 632 gboolean ok = FALSE; |
636 FILE *in; | 633 FILE *in; |
637 | 634 |
638 connect_route *route = g_malloc(sizeof(connect_route)); | 635 connect_route *route = g_malloc(sizeof(connect_route)); |
643 route->filename = g_strdup(filename); | 640 route->filename = g_strdup(filename); |
644 route->name = g_strdup(filename); /* quick hack */ | 641 route->name = g_strdup(filename); /* quick hack */ |
645 | 642 |
646 route->expand_h_sender_address = TRUE; | 643 route->expand_h_sender_address = TRUE; |
647 | 644 |
648 route->is_local_net = is_local_net; | 645 route->is_perma = is_perma; |
649 | 646 |
650 route->do_pipelining = TRUE; | 647 route->do_pipelining = TRUE; |
651 | 648 |
652 if ((in = fopen(route->filename, "r")) == NULL) { | 649 if ((in = fopen(route->filename, "r")) == NULL) { |
653 logwrite(LOG_ALERT, "could not open route file %s: %s\n", route->filename, strerror(errno)); | 650 logwrite(LOG_ALERT, "could not open route file %s: %s\n", route->filename, strerror(errno)); |
771 logwrite(LOG_WARNING, "var '%s' not (yet) known, ignored\n", lval); | 768 logwrite(LOG_WARNING, "var '%s' not (yet) known, ignored\n", lval); |
772 } | 769 } |
773 | 770 |
774 if (!route->resolve_list) { | 771 if (!route->resolve_list) { |
775 #ifdef ENABLE_RESOLVER | 772 #ifdef ENABLE_RESOLVER |
776 if (!is_local_net) { | 773 route->resolve_list = g_list_append(route->resolve_list, resolve_dns_mx); |
777 route->resolve_list = g_list_append(route->resolve_list, resolve_dns_mx); | 774 route->resolve_list = g_list_append(route->resolve_list, resolve_dns_a); |
778 route->resolve_list = g_list_append(route->resolve_list, resolve_dns_a); | |
779 } | |
780 #endif | 775 #endif |
781 route->resolve_list = g_list_append(route->resolve_list, resolve_byname); | 776 route->resolve_list = g_list_append(route->resolve_list, resolve_byname); |
782 } | 777 } |
783 fclose(in); | 778 fclose(in); |
784 ok = TRUE; | 779 ok = TRUE; |
853 g_free(r->pipe); | 848 g_free(r->pipe); |
854 g_free(r); | 849 g_free(r); |
855 } | 850 } |
856 | 851 |
857 GList* | 852 GList* |
858 read_route_list(GList * rf_list, gboolean is_local_net) | 853 read_route_list(GList * rf_list, gboolean is_perma) |
859 { | 854 { |
860 GList *list = NULL; | 855 GList *list = NULL; |
861 GList *node; | 856 GList *node; |
862 uid_t saved_uid, saved_gid; | 857 uid_t saved_uid, saved_gid; |
863 | 858 |
865 set_euidgid(0, 0, &saved_uid, &saved_gid); | 860 set_euidgid(0, 0, &saved_uid, &saved_gid); |
866 } | 861 } |
867 | 862 |
868 foreach(rf_list, node) { | 863 foreach(rf_list, node) { |
869 gchar *fname = (gchar *) (node->data); | 864 gchar *fname = (gchar *) (node->data); |
870 connect_route *route = read_route(fname, is_local_net); | 865 connect_route *route = read_route(fname, is_perma); |
871 if (route) | 866 if (route) |
872 list = g_list_append(list, route); | 867 list = g_list_append(list, route); |
873 else | 868 else |
874 logwrite(LOG_ALERT, "could not read route configuration %s\n", fname); | 869 logwrite(LOG_ALERT, "could not read route configuration %s\n", fname); |
875 } | 870 } |
891 connect_route *route = (connect_route *) (node->data); | 886 connect_route *route = (connect_route *) (node->data); |
892 destroy_route(route); | 887 destroy_route(route); |
893 } | 888 } |
894 g_list_free(list); | 889 g_list_free(list); |
895 } | 890 } |
896 | |
897 connect_route* | |
898 create_local_route() | |
899 { | |
900 connect_route *route; | |
901 | |
902 route = g_malloc(sizeof(connect_route)); | |
903 if (!route) { | |
904 return NULL; | |
905 } | |
906 memset(route, 0, sizeof(connect_route)); | |
907 route->is_local_net = TRUE; | |
908 route->name = g_strdup("default local_net_route"); | |
909 route->expand_h_sender_address = TRUE; | |
910 route->resolve_list = g_list_append(NULL, resolve_byname); | |
911 route->connect_error_fail = TRUE; | |
912 return route; | |
913 } |