diff options
Diffstat (limited to 'pki/base/tps/forms/esc/cgi-bin/sow/read_temp.cgi')
-rwxr-xr-x | pki/base/tps/forms/esc/cgi-bin/sow/read_temp.cgi | 155 |
1 files changed, 155 insertions, 0 deletions
diff --git a/pki/base/tps/forms/esc/cgi-bin/sow/read_temp.cgi b/pki/base/tps/forms/esc/cgi-bin/sow/read_temp.cgi new file mode 100755 index 000000000..3741d6d1e --- /dev/null +++ b/pki/base/tps/forms/esc/cgi-bin/sow/read_temp.cgi @@ -0,0 +1,155 @@ +#! /usr/bin/perl -w +# +# --- BEGIN COPYRIGHT BLOCK --- +# This library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; +# version 2.1 of the License. +# +# This library is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this library; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street, Fifth Floor, +# Boston, MA 02110-1301 USA +# +# Copyright (C) 2007 Red Hat, Inc. +# All rights reserved. +# --- END COPYRIGHT BLOCK --- +# + +use CGI; + +[REQUIRE_CFG_PL] + + +my $ldapHost = get_ldap_host(); +my $ldapPort = get_ldap_port(); +my $basedn = get_base_dn(); +my $ldapsearch = get_ldapsearch(); + +sub authorize +{ + my $client_dn = $ENV{'SSL_CLIENT_S_DN'}; + $client_dn =~ tr/A-Z/a-z/; # all lower cases + $client_dn =~ s/\s+//g; # remove all spacing + + if (&is_agent($client_dn)) { + return 1; + } + return 0; +} + +sub DoPage +{ + my $q = new CGI; + + if (!&authorize()) { + print $q->redirect("/cgi-bin/sow/noaccess.cgi"); + return; + } + + my $name = $q->param('name'); + my $uid = $q->param('name_ID'); + $name = "" if !defined $name; + + if ($name eq "") { + print $q->redirect("/cgi-bin/sow/search.cgi?error=Name cannot be empty"); + return; + } + + my $tmpfile = "/tmp/read-$$.txt"; + my $cmd = $ldapsearch . " " . + "-x " . + "-b \"" . $basedn . "\" " . + "-h \"" . $ldapHost . "\" " . + "-p \"" . $ldapPort ."\" " . + "\"(cn=" . $name . ")\" > " . $tmpfile; + system($cmd); + + open(F, "<$tmpfile"); + + my $givenName = "-"; + my $cn = "-"; + my $sn = "-"; + $uid = "-"; + my $mail = "-"; + my $phone = "-"; + my $photoLarge = ""; # photo (full size) + my $photoSmall = ""; # photo (thumb) + my $height = ""; + my $weight = ""; + my $eyecolor = ""; + + # get ldap values into internal varibles + while (<F>) { + if (/mail: (.*)/) { + $mail = $1; + } + if (/uid: (.*)/) { + $uid = $1; + } + if (/givenName: (.*)/) { + $givenName = $1; + } + if (/sn: (.*)/) { + $sn = $1; + } + if (/cn: (.*)/) { + $cn = $1; + } + if (/telephoneNumber: (.*)/) { + $phone = $1; + } + if (/photoLarge: (.*)/) { + $photoLarge = $1; + } + if (/photoSmall: (.*)/) { + $photoSmall = $1; + } + if (/height: (.*)/) { + $height = $1; + } + if (/weight: (.*)/) { + $weight = $1; + } + if (/eyeColor: (.*)/) { + $eyecolor = $1; + } + } + close(F); + + system("rm $tmpfile"); + + if ($uid eq "-") { + print $q->redirect("/cgi-bin/sow/search.cgi?error=User $name not found"); + return; + } + + open(FILE, "< read_temp.html"); + + print $q->header(); + + while ($l = <FILE>) + { + $l =~ s/\$mail/$mail/g; + $l =~ s/\$uid/$uid/g; + $l =~ s/\$givenName/$givenName/g; + $l =~ s/\$sn/$sn/g; + $l =~ s/\$cn/$cn/g; + $l =~ s/\$phone/$phone/g; + $l =~ s/\$photoLarge/$photoLarge/g; + $l =~ s/\$photoSmall/$photoSmall/g; + $l =~ s/\$height/$height/g; + $l =~ s/\$weight/$weight/g; + $l =~ s/\$eyecolor/$eyecolor/g; + print $l; + } + + close(FILE); +} + +&DoPage(); |