]> git.lizzy.rs Git - plan9front.git/blob - sys/src/cmd/auth/httpauth.c
show line numbers in dtracy type errors
[plan9front.git] / sys / src / cmd / auth / httpauth.c
1 #include <u.h>
2 #include <libc.h>
3 #include <auth.h>
4
5 void
6 usage(void)
7 {
8         fprint(2, "Usage:\n\t%s user pass\n\t%s authorization\n", argv0, argv0);
9         exits("usage");
10 }
11
12 void
13 main(int argc, char *argv[])
14 {
15         char *a, *s;
16         int n;
17
18         ARGBEGIN {
19         } ARGEND
20
21         switch(argc){
22         default:
23                 usage();
24                 return;
25         case 2:
26                 s = argv[0];
27                 a = argv[1];
28                 break;
29         case 1:
30                 a = argv[0];
31                 if(cistrncmp(a, "Basic ", 6) == 0)
32                         a += 6;
33                 n = strlen(a);
34                 if((s = malloc(n+1)) == nil)
35                         sysfatal("out of memory");
36                 if((n = dec64((uchar*)s, n, a, n)) <= 0)
37                         sysfatal("bad base64");
38                 s[n] = '\0';
39                 if((a = strchr(s, ':')) == nil)
40                         sysfatal("bad format");
41                 *a++ = '\0';
42                 break;
43         }
44         if(*s == '\0')
45                 sysfatal("empty username");
46         if(auth_userpasswd(s, a) == nil)
47                 sysfatal("bad password");
48         print("%s\n", s);
49         exits(nil);
50 }