5 @ISA @EXPORT_OK $cgi $dbh $freeside_uid $conf $datasrc $db_user $db_pass
13 @EXPORT_OK = qw(checkeuid checkruid swapuid cgisuidsetup
14 adminsuidsetup getotaker dbh datasrc);
16 $freeside_uid = scalar(getpwnam('freeside'));
18 my $conf = new FS::Conf;
19 ($datasrc, $db_user, $db_pass) = $conf->config('secrets')
20 or die "Can't get secrets: $!";
24 FS::UID - Subroutines for database login and assorted other stuff
28 use FS::UID qw(adminsuidsetup cgisuidsetup dbh datasrc getotaker
29 checkeuid checkruid swapuid);
35 $dbh = cgisuidsetup($cgi);
43 Provides a hodgepodge of subroutines.
51 Cleans the environment.
52 Make sure the script is running as freeside, or setuid freeside.
53 Opens a connection to the database.
54 Swaps real and effective UIDs.
55 Returns the DBI database handle (usually you don't need this).
61 $ENV{'PATH'} ='/usr/local/bin:/usr/bin:/usr/ucb:/bin';
62 $ENV{'SHELL'} = '/bin/sh';
63 $ENV{'IFS'} = " \t\n";
66 $ENV{'BASH_ENV'} = '';
68 croak "Not running uid freeside!" unless checkeuid();
69 $dbh = DBI->connect($datasrc,$db_user,$db_pass, {
71 # my($user)=getotaker();
72 # $dbh = DBI->connect("$datasrc:$user",$db_user,$db_pass, {
73 'AutoCommit' => 'true',
74 'ChopBlanks' => 'true',
75 } ) or die "DBI->connect error: $DBI::errstr\n";;
77 swapuid(); #go to non-privledged user if running setuid freeside
81 =item cgisuidsetup CGI::Base_OBJECT
83 Stores the CGI::Base_OBJECT for later use.
95 Returns the DBI database handle.
105 Returns the DBI data source.
119 croak "suidsetup depriciated";
124 Returns the current Freeside user. Currently that means the CGI REMOTE_USER,
130 if ($cgi && defined $cgi->var('REMOTE_USER')) {
131 return $cgi->var('REMOTE_USER'); #for now
139 Returns true if effective UID is that of the freeside user.
144 ( $> == $freeside_uid );
149 Returns true if the real UID is that of the freeside user.
154 ( $< == $freeside_uid );
159 Swaps real and effective UIDs.
173 No capabilities yet. When mod_perl and Authen::DBI are implemented,
174 cgisuidsetup will go away as well.
178 L<FS::Record>, L<CGI::Base>, L<DBI>
182 ivan@voicenet.com 97-jun-4 - 9
184 untaint otaker ivan@voicenet.com 97-jul-7
186 generalize and auto-get uid (getotaker still needs to be db'ed)
187 ivan@sisd.com 97-nov-10
189 &cgisuidsetup logs into database. other cleaning.
190 ivan@sisd.com 97-nov-22,23
192 &adminsuidsetup logs into database with otaker='freeside' (for
193 automated tasks like billing)
194 ivan@sisd.com 97-dec-13
196 added sub datasrc for fs-setup ivan@sisd.com 98-feb-21
198 datasrc, user and pass now come from conf/secrets ivan@sisd.com 98-jun-28
200 added ChopBlanks to DBI call (see man DBI) ivan@sisd.com 98-aug-16
202 pod, use FS::Conf, implemented cgisuidsetup as adminsuidsetup,
204 ivan@sisd.com 98-sep-12