]> code.citadel.org Git - citadel.git/blob - webcit/auth.c
Fixed the locks, though I'm not sure I did it correctly.
[citadel.git] / webcit / auth.c
1 /*
2  * auth.c
3  *
4  * This file contains code which relates to authentication of users to Citadel.
5  *
6  */
7
8 #include <stdlib.h>
9 #include <unistd.h>
10 #include <stdio.h>
11 #include <ctype.h>
12 #include <string.h>
13 #include <errno.h>
14 #include "webcit.h"
15
16 void display_login_page() {
17         
18         printf("HTTP/1.0 200 OK\n");
19         output_headers();
20
21         wprintf("<HTML><HEAD><TITLE>Please log in</TITLE></HEAD><BODY>\n");
22         wprintf("<TABLE border=0><TR><TD>\n");
23         wprintf("<IMG SRC=\"/static/velma.gif\">\n");   
24         wprintf("</TD><TD>");
25         wprintf("<H1>&quot;Velma&quot;</H1><H2>(next generation WebCit)</H2>");
26         wprintf("Please log in...<BR>\n");
27
28
29         wprintf("<FORM ACTION=\"/login\" METHOD=\"POST\">\n");
30         wprintf("<TABLE border><TR><TD>");
31         wprintf("User Name:</TD><TD><INPUT TYPE=\"text\" NAME=\"name\" MAXLENGTH=\"25\"   >\n");
32         wprintf("</TD></TR><TD>");
33         wprintf("Password:</TD><TD><INPUT TYPE=\"password\" NAME=\"pass\" MAXLENGTH=\"20\">");
34         wprintf("</TD></TR></TABLE>\n");
35         wprintf("<INPUT type=\"submit\" NAME=\"action\" VALUE=\"Login\">\n");
36         wprintf("<INPUT type=\"submit\" NAME=\"action\" VALUE=\"New User\">\n");
37         wprintf("<INPUT type=\"submit\" NAME=\"action\" VALUE=\"Exit\">\n");
38         wprintf("</FORM>\n");
39
40         wprintf("</TD></TR></TABLE>\n");
41         wprintf("</BODY></HTML>\n");
42
43         wDumpContent();
44         }
45
46
47
48
49 /*
50  * This function needs to get called whenever a PASS or NEWU succeeds
51  */
52 void become_logged_in(char *user, char *pass, char *serv_response) {
53
54         logged_in = 1;
55         strcpy(wc_username, user);
56         strcpy(wc_password, pass);
57         
58         }
59
60
61 void do_login() {
62         char buf[256];
63
64         if (!strcasecmp(bstr("action"), "Login")) {
65                 serv_printf("USER %s", bstr("name"));
66                 serv_gets(buf);
67                 if (buf[0]=='3') {
68                         serv_printf("PASS %s", bstr("pass"));
69                         serv_gets(buf);
70                         if (buf[0]=='2') {
71                                 become_logged_in(bstr("name"), bstr("pass"), buf);
72                                 }
73                         }
74                 }
75
76         if (logged_in) {
77                 output_static("frameset.html");
78                 }
79         else {
80                 printf("HTTP/1.0 200 OK\n");
81                 output_headers();
82                 wprintf("<HTML><HEAD><TITLE>Nope</TITLE></HEAD><BODY>\n");
83                 wprintf("Your password was not accepted.\n");
84                 wprintf("<HR><A HREF=\"/\">Try again</A>\n");
85                 wprintf("</BODY></HTML>\n");
86                 wDumpContent();
87                 }
88
89         }