remove TODO
[freeside.git] / fs_sesmon / FS-SessionClient / cgi / logout.cgi
1 #!/usr/bin/perl -Tw
2
3 #false-laziness hack w login.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( logout 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 = logout ( {
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>logout</TITLE></HEAD>
54 <BODY>
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 Username <INPUT TYPE="text" NAME="username" VALUE="$username"><BR>
63 Password <INPUT TYPE="password" NAME="password"><BR>
64 <INPUT TYPE="submit">
65 </FORM>
66 </BODY>
67 </HTML>
68 END
69
70 }
71
72 sub print_okay {
73   print $cgi->header( '-expires' => 'now' ), <<END;
74 <HTML><HEAD><TITLE>logout sucessful</TITLE></HEAD>
75 <BODY>logout successful, etc.
76 </BODY>
77 </HTML>
78 END
79 }
80
81 sub usage {
82   die "Usage:\n\n  freeside-logout username ( portnum | ip | nasnum nasport )";
83 }