]> andersk Git - moira.git/blobdiff - gen/mailhub.pc
Install commands for nagios-printers service.
[moira.git] / gen / mailhub.pc
index c7a66b71b0a64ec7b4f1acb4b8cefda37f86f0fa..6e531aa5e306d5d25f683f969e67e3af0c54a027 100644 (file)
@@ -50,6 +50,8 @@ struct list {
   char *description;
   char acl_t;
   int acl_id;
+  char mailman;
+  char *mailman_server;
   struct member *m;
 };
 
@@ -122,11 +124,11 @@ int main(int argc, char **argv)
 void get_info(void)
 {
   EXEC SQL BEGIN DECLARE SECTION;
-  int id, pid, iid, bid, cnt, maillistp, acl, mid;
+  int id, pid, iid, bid, cnt, maillistp, acl, mid, mailman;
   char mname[MACHINE_NAME_SIZE], str[STRINGS_STRING_SIZE];
   char login[USERS_LOGIN_SIZE], potype[USERS_POTYPE_SIZE];
   char lname[LIST_NAME_SIZE], desc[LIST_DESCRIPTION_SIZE];
-  char type[LIST_ACL_TYPE_SIZE];
+  char type[LIST_ACL_TYPE_SIZE], mailman_server[MACHINE_NAME_SIZE];
   EXEC SQL END DECLARE SECTION;
   char *s;
   struct user *u;
@@ -271,14 +273,16 @@ void get_info(void)
   lists = create_hash(15000);
 
   EXEC SQL DECLARE l_cursor CURSOR FOR
-    SELECT list_id, name, maillist, description, acl_type, acl_id
-    FROM list
-    WHERE active != 0
+    SELECT l.list_id, l.name, l.maillist, l.description, l.acl_type, l.acl_id,
+    l.mailman, m.name
+    FROM list l, machine m
+    WHERE active != 0 AND l.mailman_id = m.mach_id
     ORDER BY list_id;
   EXEC SQL OPEN l_cursor;
   while (1)
     {
-      EXEC SQL FETCH l_cursor INTO :id, :lname, :maillistp, :desc, :type, :acl;
+      EXEC SQL FETCH l_cursor INTO :id, :lname, :maillistp, :desc, :type, :acl,
+       :mailman, :mailman_server;
       if (sqlca.sqlcode)
        break;
       l = malloc(sizeof(struct list));
@@ -287,6 +291,8 @@ void get_info(void)
       l->description = strdup(strtrim(desc));
       l->acl_t = type[0];
       l->acl_id = acl;
+      l->mailman = mailman;
+      l->mailman_server = strdup(strtrim(mailman_server));
       l->m = NULL;
       if (hash_store(lists, id, l) < 0)
        {
@@ -359,12 +365,16 @@ void output_login(int dummy, void *user, void *out)
 }
 
 int line_width, alias_width;
+static const char *mailman_suffixes[] = { "-admin", "-owner", "-request",
+                                         "-bounces", "-confirm", "-join",
+                                         "-leave", "-subscribe",
+                                         "-unsubscribe", NULL };
 
 void output_mlist(int id, void *list, void *out)
 {
   struct list *l = list, *l1;
   struct user *u;
-  int len = strlen(l->name);
+  int len = strlen(l->name), i;
 
   if (!l->maillist || !check_string(l->name))
     return;
@@ -375,7 +385,15 @@ void output_mlist(int id, void *list, void *out)
 
   put_fill(out, l->description);
 
-  if (l->acl_t ==  'L' && (l1 = hash_lookup(lists, l->acl_id)))
+  if (l->mailman && strcmp(l->mailman_server, "[NONE]"))
+    {
+      for (i = 0; mailman_suffixes[i]; i++)
+       fprintf(out, "%s%s: %s%s@%s\n", l->name, mailman_suffixes[i], l->name,
+               mailman_suffixes[i], l->mailman_server);
+      fprintf(out, "owner-%s: %s-owner@%s\n", l->name, l->name,
+             l->mailman_server);
+    }
+  else if (l->acl_t ==  'L' && (l1 = hash_lookup(lists, l->acl_id)))
     {
       fprintf(out, "owner-%s: ", l->name);
       if ((l1->maillist) && (strcmp(l->name, l1->name)))
This page took 0.066194 seconds and 4 git commands to generate.