visual and bugfixes
[freeside.git] / htdocs / search / svc_acct_sm.cgi
1 #!/usr/bin/perl -Tw
2 #
3 # $Id: svc_acct_sm.cgi,v 1.6 1999-02-09 09:22:58 ivan Exp $
4 #
5 # Usage: post form to:
6 #        http://server.name/path/svc_domain.cgi
7 #
8 # Note: Should be run setuid freeside as user nobody.
9 #
10 # ivan@voicenet.com 96-mar-5
11 #
12 # need to look at table in results to make it more readable
13 #
14 # ivan@voicenet.com
15 #
16 # rewrite ivan@sisd.com 98-mar-15
17 #
18 # Changes to allow page to work at a relative position in server
19 #       bmccane@maxbaud.net     98-apr-3
20 #
21 # $Log: svc_acct_sm.cgi,v $
22 # Revision 1.6  1999-02-09 09:22:58  ivan
23 # visual and bugfixes
24 #
25 # Revision 1.5  1999/01/19 05:14:16  ivan
26 # for mod_perl: no more top-level my() variables; use vars instead
27 # also the last s/create/new/;
28 #
29 # Revision 1.4  1999/01/18 09:41:40  ivan
30 # all $cgi->header calls now include ( '-expires' => 'now' ) for mod_perl
31 # (good idea anyway)
32 #
33 # Revision 1.3  1998/12/17 09:41:11  ivan
34 # s/CGI::(Base|Request)/CGI.pm/;
35 #
36
37 use strict;
38 use vars qw( $conf $cgi $mydomain $domuser $svc_domain $domsvc @svc_acct_sm );
39 use CGI::Request;
40 use CGI::Carp qw(fatalsToBrowser);
41 use FS::UID qw(cgisuidsetup);
42 use FS::CGI qw(popurl idiot header table);
43 use FS::Record qw(qsearch qsearchs);
44 use FS::Conf;
45 use FS::svc_domain;
46 use FS::svc_acct_sm;
47 use FS::svc_acct;
48
49 $cgi = new CGI;
50 &cgisuidsetup($cgi);
51
52 $conf = new FS::Conf;
53 $mydomain = $conf->config('domain');
54
55 $cgi->param('domuser') =~ /^([a-z0-9_\-]{0,32})$/;
56 $domuser = $1;
57
58 $cgi->param('domain') =~ /^([\w\-\.]+)$/ or die "Illegal domain";
59 $svc_domain = qsearchs('svc_domain',{'domain'=>$1})
60   or die "Unknown domain";
61 $domsvc = $svc_domain->svcnum;
62
63 if ($domuser) {
64   @svc_acct_sm=qsearch('svc_acct_sm',{
65     'domuser' => $domuser,
66     'domsvc'  => $domsvc,
67   });
68 } else {
69   @svc_acct_sm=qsearch('svc_acct_sm',{'domsvc' => $domsvc});
70 }
71
72 if ( scalar(@svc_acct_sm) == 1 ) {
73   my($svcnum)=$svc_acct_sm[0]->svcnum;
74   print $cgi->redirect(popurl(2). "view/svc_acct_sm.cgi?$svcnum");
75 } elsif ( scalar(@svc_acct_sm) > 1 ) {
76   print $cgi->header( '-expires' => 'now' ),
77         header('Mail Alias Search Results'),
78         table, <<END;
79       <TR>
80         <TH>Mail to<BR><FONT SIZE=-1>(click to view mail alias)</FONT></TH>
81         <TH>Forwards to<BR><FONT SIZE=-1>(click to view account)</FONT></TH>
82       </TR>
83 END
84
85   my($svc_acct_sm);
86   foreach $svc_acct_sm (@svc_acct_sm) {
87     my($svcnum,$domuser,$domuid,$domsvc)=(
88       $svc_acct_sm->svcnum,
89       $svc_acct_sm->domuser,
90       $svc_acct_sm->domuid,
91       $svc_acct_sm->domsvc,
92     );
93
94     my $svc_domain = qsearchs( 'svc_domain', { 'svcnum' => $domsvc } );
95     if ( $svc_domain ) {
96       my $domain = $svc_domain->domain;
97
98       print qq!<TR><TD><A HREF="!. popurl(2). qq!view/svc_acct_sm.cgi?$svcnum">!,
99       #print '', ( ($domuser eq '*') ? "<I>(anything)</I>" : $domuser );
100             ( ($domuser eq '*') ? "<I>(anything)</I>" : $domuser ),
101             qq!\@$domain</A> </TD>!,
102       ;
103     } else {
104       my $warning = "couldn't find svc_domain.svcnum $svcnum ( svc_acct_sm.svcnum $svcnum";
105       warn $warning;
106       print "<TR><TD>WARNING: $warning</TD>";
107     }
108
109     my $svc_acct = qsearchs( 'svc_acct', { 'uid' => $domuid } );
110     if ( $svc_acct ) {
111       my $username = $svc_acct->username;
112       my $svc_acct_svcnum =$svc_acct->svcnum;
113       print qq!<TD><A HREF="!, popurl(2),
114             qq!view/svc_acct.cgi?$svc_acct_svcnum">$username\@$mydomain</A>!,
115             qq!</TD></TR>!
116       ;
117     } else {
118       my $warning = "couldn't find svc_acct.uid $domuid (svc_acct_sm.svcnum $svcnum)!";
119       warn $warning;
120       print "<TD>WARNING: $warning</TD></TR>";
121     }
122
123   }
124
125   print '</TABLE></BODY></HTML>';
126
127 } else { #error
128   idiot("Mail Alias not found");
129 }
130