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 }