]> andersk Git - moira.git/commitdiff
Support KERBEROS entries on lists we generate acl files from.
authorzacheiss <zacheiss>
Tue, 6 Jun 2000 04:44:46 +0000 (04:44 +0000)
committerzacheiss <zacheiss>
Tue, 6 Jun 2000 04:44:46 +0000 (04:44 +0000)
gen/acl.pc

index d3072cfaf0450557e6c44d15ca413fa7c7e94825..e2f9c5b1cb7e3a4ced06f35371595b3b34180d5a 100644 (file)
@@ -132,6 +132,8 @@ void dump_access_file(FILE *out, int lid)
 {
   struct save_queue *sq = get_acl("LIST", lid, merge_access_bits);
   struct imember *m;
+  char *name, *lasts = NULL;
+  int i = 0;
 
   while (sq_remove_data(sq, &m))
     {
@@ -143,6 +145,19 @@ void dump_access_file(FILE *out, int lid)
          else
            fprintf(out, "%-10s rl\n", m->name);
        }
+      else if (m->type == 'K')
+       {
+         name = strtok_r(m->name, "@", &lasts);
+         EXEC SQL SELECT count(login) INTO :i FROM users 
+           WHERE login = :name;
+         if (i == 1)
+           {
+             if (*(m->tag))
+               fprintf(out, "%-10s %s\n", m->name, m->tag);
+             else
+               fprintf(out, "%-10s rl\n", m->name);
+           }
+       }
       freeimember(m);
     }
   sq_destroy(sq);
@@ -250,8 +265,8 @@ void dump_passwd_file(FILE *out, int lid)
   char shell[USERS_SHELL_SIZE], fullname[USERS_FULLNAME_SIZE];
   char nickname[USERS_NICKNAME_SIZE], oa[USERS_OFFICE_ADDR_SIZE];
   char op[USERS_OFFICE_PHONE_SIZE], hp[USERS_HOME_PHONE_SIZE];
-  int uid;
-  char *name;
+  int uid, i = 0;
+  char *name, *n, *lasts = NULL;
   EXEC SQL END DECLARE SECTION;
 
   while (sq_remove_data(sq, &m))
@@ -279,6 +294,33 @@ void dump_passwd_file(FILE *out, int lid)
          fprintf(out, "%s:*:%d:101:%s,%s,%s,%s,%s:/mit/%s:%s\n",
                  name, uid, fullname, nickname, oa, op, hp, name, shell);
          break;
+
+       case 'K':
+         name = strtok_r(m->name, "@", &lasts);
+           
+         EXEC SQL SELECT count(login) INTO :i FROM users WHERE 
+           login = :name;
+         if (i == 1)
+           {
+             EXEC SQL SELECT unix_uid, shell, fullname, nickname,
+               office_addr, office_phone, home_phone 
+               INTO :uid, :shell, :fullname, :nickname, :oa, :op, :hp 
+               FROM users 
+               WHERE login = :name AND status != 3;          
+             if (sqlca.sqlcode)
+               continue;
+             
+             strtrim(shell);
+             strtrim(fullname);
+             strtrim(nickname);
+             strtrim(op);
+             strtrim(oa);
+             strtrim(hp);
+             
+             fprintf(out, "%s:*:%d:101:%s,%s,%s,%s,%s:/mit/%s:%s\n",
+                     name, uid, fullname, nickname, oa, op, hp, name, shell);
+           }
+         break;
        }
       freeimember(m);
     }
@@ -291,12 +333,12 @@ void dump_passwd_file(FILE *out, int lid)
 void dump_group_file(FILE *out, int id)
 {
   EXEC SQL BEGIN DECLARE SECTION;
-  int lid = id, mid, gid, grouplist;
+  int lid = id, mid, gid, grouplist, i = 0;
   char mtype[IMEMBERS_MEMBER_TYPE_SIZE], name[LIST_NAME_SIZE];
   EXEC SQL END DECLARE SECTION;
   struct save_queue *sq;
   struct imember *m;
-  char *maybecomma, *s;
+  char *maybecomma, *s, *n, *lasts = NULL;
 
   EXEC SQL DECLARE csr_grp CURSOR FOR
     SELECT member_type, member_id FROM imembers
@@ -330,6 +372,17 @@ void dump_group_file(FILE *out, int id)
                  fprintf(out, "%s%s", maybecomma, m->name);
                  maybecomma = ",";
                }
+             else if (m->type == 'K')
+               {
+                 n = strtok_r(m->name, "@", &lasts);
+                 EXEC SQL SELECT count(login) INTO :i FROM users
+                   WHERE login = :n;
+                 if (i == 1)
+                   {
+                     fprintf(out, "%s%s", maybecomma, n);
+                     maybecomma = ",";
+                   }
+               }
              freeimember(m);
            }
          fprintf(out, "\n");
This page took 0.04239 seconds and 5 git commands to generate.