import rt 2.0.14
[freeside.git] / fs_sesmon / FS-SessionClient / cgi / login.cgi
1 #!/usr/bin/perl -Tw
2
3 #false-laziness hack w logout.cgi
4
5 use strict;
6 use vars qw( $cgi $username $password $error $ip $portnum );
7 use CGI;
8 use CGI::Carp qw(fatalsToBrowser);
9 use FS::SessionClient qw( login portnum );
10
11 $cgi = new CGI;
12
13 if ( defined $cgi->param('magic') ) {
14   $cgi->param('username') =~ /^\s*(\w{1,255})\s*$/ or do {
15     $error = "Illegal username";
16     &print_form;
17     exit;
18   };
19   $username = $1;
20   $cgi->param('password') =~ /^([^\n]{0,255})$/ or die "guru meditation #420";
21   $password = $1;
22   #$ip = $cgi->remote_host;
23   $ip = $ENV{REMOTE_ADDR};
24   $ip =~ /^([\d\.]+)$/ or die "illegal ip: $ip";
25   $ip = $1;
26   $portnum = portnum( { 'ip' => $1 } ) or do {
27     $error = "You appear to be coming from an unknown IP address.  Verify ".
28              "that your computer is set to obtain an IP address automatically ".
29              "via DHCP.";
30     &print_form;
31     exit;
32   };
33
34   ( $error = login ( {
35     'username' => $username,
36     'portnum'  => $portnum,
37     'password' => $password,
38   } ) )
39     ? &print_form()
40     : &print_okay();
41
42 } else {
43   $username = '';
44   $password = '';
45   $error = '';
46   &print_form;
47 }
48
49 sub print_form {
50   my $self_url = $cgi->self_url;
51
52   print $cgi->header( '-expires' => 'now' ), <<END;
53 <HTML><HEAD><TITLE>login</TITLE></HEAD>
54 <BODY BGCOLOR="#FFFFFF">
55 END
56
57 print qq!<FONT SIZE="+1" COLOR="#ff0000">Error: $error</FONT>! if $error;
58
59 print <<END;
60 <FORM ACTION="$self_url" METHOD="POST">
61 <INPUT TYPE="hidden" NAME="magic" VALUE="process">
62 <TABLE BORDER="0" CELLSPACING="0" CELLPADDING="4" ALIGN="center">
63 <TR>
64         <TD ALIGN="center" COLSPAN="2">
65       <STRONG>Welcome</STRONG>
66       </TD>
67 </TR>
68 <TR>
69       <TD ALIGN="right">
70       Username
71       </TD>
72       <TD ALIGN="left">
73       <INPUT TYPE="text" NAME="username" VALUE="$username">
74       </TD>
75 </TR>
76 <TR>
77       <TD ALIGN="right">
78       Password
79       </TD>
80       <TD ALIGN="left">
81       <INPUT TYPE="password" NAME="password">
82       </TD>
83 </TR>
84 <TR>
85       <TD ALIGN="center" COLSPAN="2">
86       <INPUT TYPE="submit" VALUE=" Login ">
87       </TD>
88 </TR>
89 </TABLE>
90 </FORM>
91 </BODY>
92 </HTML>
93 END
94
95 }
96
97 sub print_okay {
98   print $cgi->header( '-expires' => 'now' ), <<END;
99 <HTML><HEAD><TITLE>login sucessful</TITLE></HEAD>
100 <BODY>login successful, etc.
101 </BODY>
102 </HTML>
103 END
104 }
105
106 sub usage {
107   die "Usage:\n\n  freeside-login username ( portnum | ip | nasnum nasport )";
108 }