URI:
       thttpauth.c - plan9port - [fork] Plan 9 from user space
  HTML git clone git://src.adamsgaard.dk/plan9port
   DIR Log
   DIR Files
   DIR Refs
   DIR README
   DIR LICENSE
       ---
       thttpauth.c (1059B)
       ---
            1 #include <u.h>
            2 #include <libc.h>
            3 #include <auth.h>
            4 #include <authsrv.h>
            5 
            6 /* deprecated.
            7         This is the mechanism that put entries in /sys/lib/httpd.rewrite
            8         and passwords on the authserver in /sys/lib/httppasswords, which
            9         was awkward to administer.  Instead, use local .httplogin files,
           10         which are implemented in sys/src/cmd/ip/httpd/authorize.c */
           11 
           12 int
           13 httpauth(char *name, char *password)
           14 {
           15         int afd;
           16         Ticketreq tr;
           17         Ticket        t;
           18         char key[DESKEYLEN];
           19         char buf[512];
           20 
           21         afd = authdial(nil, nil);
           22         if(afd < 0)
           23                 return -1;
           24 
           25         /* send ticket request to AS */
           26         memset(&tr, 0, sizeof(tr));
           27         strcpy(tr.uid, name);
           28         tr.type = AuthHttp;
           29         convTR2M(&tr, buf);
           30         if(write(afd, buf, TICKREQLEN) != TICKREQLEN){
           31                 close(afd);
           32                 return -1;
           33         }
           34         if(_asrdresp(afd, buf, TICKETLEN) < 0){
           35                 close(afd);
           36                 return -1;
           37         }
           38         close(afd);
           39 
           40         /*
           41          *  use password and try to decrypt the
           42          *  ticket.  If it doesn't work we've got a bad password,
           43          *  give up.
           44          */
           45         passtokey(key, password);
           46         convM2T(buf, &t, key);
           47         if(t.num != AuthHr || strcmp(t.cuid, tr.uid))
           48                 return -1;
           49 
           50         return 0;
           51 }